1
0
Fork 0
mirror of https://github.com/EdgeTX/edgetx.git synced 2025-07-26 01:35:16 +03:00

Fixes #6721 - Tests needed

This commit is contained in:
Bertrand Songis 2019-09-10 14:38:39 +02:00
parent 11baf9bc1a
commit 465674ca68
No known key found for this signature in database
GPG key ID: F189F79290FEC50F
4 changed files with 33 additions and 28 deletions

View file

@ -23,13 +23,18 @@
#include "opentx.h"
#include "storage/modelslist.h"
#define REFRESH_FILES() do { reusableBuffer.sdManager.offset = 65535; currentBitmapIndex = -1; } while (0)
#define NODE_TYPE(fname) fname[SD_SCREEN_FILE_LENGTH+1]
#define IS_DIRECTORY(fname) ((bool)(!NODE_TYPE(fname)))
#define IS_FILE(fname) ((bool)(NODE_TYPE(fname)))
int currentBitmapIndex = 0;
BitmapBuffer * currentBitmap = NULL;
BitmapBuffer * currentBitmap = nullptr;
inline void REFRESH_FILES()
{
reusableBuffer.sdManager.offset = 65535;
currentBitmapIndex = -1;
}
bool menuRadioSdManagerInfo(event_t event)
{
@ -186,6 +191,10 @@ bool menuRadioSdManager(event_t _event)
switch(_event) {
case EVT_ENTRY:
f_chdir(ROOT_PATH);
// no break;
case EVT_ENTRY_UP:
case EVT_REFRESH:
REFRESH_FILES();
break;
@ -298,23 +307,19 @@ bool menuRadioSdManager(event_t _event)
FILINFO fno;
DIR dir;
if (menuVerticalOffset == 0) {
reusableBuffer.sdManager.offset = 0;
memset(reusableBuffer.sdManager.lines, 0, sizeof(reusableBuffer.sdManager.lines));
}
else if (menuVerticalOffset == reusableBuffer.sdManager.count-NUM_BODY_LINES) {
reusableBuffer.sdManager.offset = menuVerticalOffset;
memset(reusableBuffer.sdManager.lines, 0, sizeof(reusableBuffer.sdManager.lines));
}
else if (menuVerticalOffset > reusableBuffer.sdManager.offset) {
if (menuVerticalOffset == reusableBuffer.sdManager.offset + 1) {
memmove(reusableBuffer.sdManager.lines[0], reusableBuffer.sdManager.lines[1], (NUM_BODY_LINES-1)*sizeof(reusableBuffer.sdManager.lines[0]));
memset(reusableBuffer.sdManager.lines[NUM_BODY_LINES-1], 0xff, SD_SCREEN_FILE_LENGTH);
NODE_TYPE(reusableBuffer.sdManager.lines[NUM_BODY_LINES-1]) = 1;
}
else {
else if (menuVerticalOffset == reusableBuffer.sdManager.offset - 1) {
memmove(reusableBuffer.sdManager.lines[1], reusableBuffer.sdManager.lines[0], (NUM_BODY_LINES-1)*sizeof(reusableBuffer.sdManager.lines[0]));
memset(reusableBuffer.sdManager.lines[0], 0, sizeof(reusableBuffer.sdManager.lines[0]));
}
else {
reusableBuffer.sdManager.offset = menuVerticalOffset;
memset(reusableBuffer.sdManager.lines, 0, sizeof(reusableBuffer.sdManager.lines));
}
reusableBuffer.sdManager.count = 0;

View file

@ -24,7 +24,7 @@ bool menuTextView(event_t event)
{
static int lines_count;
drawMenuTemplate(STR_TEXT_VIEWER, ICON_OPENTX);
drawMenuTemplate(STR_TEXT_VIEWER, ICON_OPENTX, nullptr, OPTION_MENU_NO_SCROLLBAR);
switch (event) {
case EVT_ENTRY:

View file

@ -21,11 +21,15 @@
#include "opentx.h"
#include "io/frsky_firmware_update.h"
#define REFRESH_FILES() do { reusableBuffer.sdManager.offset = 65535; menuVerticalPosition = 0; } while(0)
#define NODE_TYPE(fname) fname[SD_SCREEN_FILE_LENGTH+1]
#define IS_DIRECTORY(fname) ((bool)(!NODE_TYPE(fname)))
#define IS_FILE(fname) ((bool)(NODE_TYPE(fname)))
inline void REFRESH_FILES()
{
reusableBuffer.sdManager.offset = 65535;
}
void menuRadioSdManagerInfo(event_t event)
{
SIMPLE_SUBMENU(STR_SD_INFO_TITLE, 1);
@ -288,7 +292,7 @@ void menuRadioSdManager(event_t _event)
break;
case EVT_ENTRY_UP:
menuVerticalOffset = reusableBuffer.sdManager.offset;
REFRESH_FILES();
break;
#if defined(PCBX9) || defined(RADIO_X7) // TODO NO_MENU_KEY
@ -421,23 +425,19 @@ void menuRadioSdManager(event_t _event)
FILINFO fno;
DIR dir;
if (menuVerticalOffset == 0) {
reusableBuffer.sdManager.offset = 0;
memset(reusableBuffer.sdManager.lines, 0, sizeof(reusableBuffer.sdManager.lines));
}
else if (menuVerticalOffset == reusableBuffer.sdManager.count-NUM_BODY_LINES) {
reusableBuffer.sdManager.offset = menuVerticalOffset;
memset(reusableBuffer.sdManager.lines, 0, sizeof(reusableBuffer.sdManager.lines));
}
else if (menuVerticalOffset > reusableBuffer.sdManager.offset) {
if (menuVerticalOffset == reusableBuffer.sdManager.offset + 1) {
memmove(reusableBuffer.sdManager.lines[0], reusableBuffer.sdManager.lines[1], (NUM_BODY_LINES-1)*sizeof(reusableBuffer.sdManager.lines[0]));
memset(reusableBuffer.sdManager.lines[NUM_BODY_LINES-1], 0xff, SD_SCREEN_FILE_LENGTH);
NODE_TYPE(reusableBuffer.sdManager.lines[NUM_BODY_LINES-1]) = 1;
}
else {
else if (menuVerticalOffset == reusableBuffer.sdManager.offset - 1) {
memmove(reusableBuffer.sdManager.lines[1], reusableBuffer.sdManager.lines[0], (NUM_BODY_LINES-1)*sizeof(reusableBuffer.sdManager.lines[0]));
memset(reusableBuffer.sdManager.lines[0], 0, sizeof(reusableBuffer.sdManager.lines[0]));
}
else {
reusableBuffer.sdManager.offset = menuVerticalOffset;
memset(reusableBuffer.sdManager.lines, 0, sizeof(reusableBuffer.sdManager.lines));
}
reusableBuffer.sdManager.count = 0;