Bladeren bron

Merge pull request #3698 from leptun/farm_presort_cache

Farm mode: cache filenames in the presort function
Alex Voinea 1 jaar geleden
bovenliggende
commit
edc5d013dd
2 gewijzigde bestanden met toevoegingen van 18 en 36 verwijderingen
  1. 3 3
      Firmware/cardreader.cpp
  2. 15 33
      Firmware/ultralcd.cpp

+ 3 - 3
Firmware/cardreader.cpp

@@ -803,7 +803,7 @@ void CardReader::presort() {
 	// Throw away old sort index
 	flush_presort();
 	
-	if (farm_mode || IS_SD_INSERTED == false) return; //sorting is not used in farm mode
+	if (IS_SD_INSERTED == false) return; //sorting is not used in farm mode
 	uint8_t sdSort = eeprom_read_byte((uint8_t*)EEPROM_SD_SORT);
 
 	KEEPALIVE_STATE(IN_HANDLER);
@@ -814,7 +814,7 @@ void CardReader::presort() {
 		// Never sort more than the max allowed
 		// If you use folders to organize, 20 may be enough
 		if (fileCnt > SDSORT_LIMIT) {
-			if (sdSort != SD_SORT_NONE) {
+			if ((sdSort != SD_SORT_NONE) && !farm_mode) {
 				lcd_show_fullscreen_message_and_wait_P(_i("Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."));////MSG_FILE_CNT c=20 r=6
 			}
 			fileCnt = SDSORT_LIMIT;
@@ -833,7 +833,7 @@ void CardReader::presort() {
 			sort_entries[i] = position >> 5;
 		}
 
-		if ((fileCnt > 1) && (sdSort != SD_SORT_NONE)) {
+		if ((fileCnt > 1) && (sdSort != SD_SORT_NONE) && !farm_mode) {
 
 #ifdef SORTING_SPEEDTEST
 			LongTimer sortingSpeedtestTimer;

+ 15 - 33
Firmware/ultralcd.cpp

@@ -4355,37 +4355,6 @@ while (0)
 #define SETTINGS_MMU_MODE
 #endif //MMU_FORCE_STEALTH_MODE
 
-#ifdef SDCARD_SORT_ALPHA
-#define SETTINGS_SD \
-do\
-{\
-    if (card.ToshibaFlashAir_isEnabled())\
-        MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY, lcd_toshiba_flash_air_compatibility_toggle);\
-    else\
-        MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), _T(MSG_NORMAL), lcd_toshiba_flash_air_compatibility_toggle);\
-\
-    uint8_t sdSort;\
-    sdSort = eeprom_read_byte((uint8_t*) EEPROM_SD_SORT);\
-    switch (sdSort)\
-    {\
-      case SD_SORT_TIME: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_SORT_TIME), lcd_sort_type_set); break;\
-      case SD_SORT_ALPHA: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_SORT_ALPHA), lcd_sort_type_set); break;\
-      default: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_NONE), lcd_sort_type_set);\
-    }\
-}\
-while (0)
-#else // SDCARD_SORT_ALPHA
-#define SETTINGS_SD \
-do\
-{\
-    if (card.ToshibaFlashAir_isEnabled())\
-        MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY, lcd_toshiba_flash_air_compatibility_toggle);\
-    else\
-        MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), _T(MSG_NORMAL), lcd_toshiba_flash_air_compatibility_toggle);\
-}\
-while (0)
-#endif // SDCARD_SORT_ALPHA
-
 /*
 #define SETTINGS_MBL_MODE \
 do\
@@ -4782,7 +4751,20 @@ static void lcd_settings_menu()
 	MENU_ITEM_SUBMENU_P(_T(MSG_SELECT_LANGUAGE), lcd_language_menu);
 #endif //(LANG_MODE != 0)
 
-	SETTINGS_SD;
+    if (!farm_mode) { //SD related settings are not available in farm mode
+        if (card.ToshibaFlashAir_isEnabled())
+            MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY, lcd_toshiba_flash_air_compatibility_toggle);
+        else
+            MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), _T(MSG_NORMAL), lcd_toshiba_flash_air_compatibility_toggle);
+#ifdef SDCARD_SORT_ALPHA
+        switch (eeprom_read_byte((uint8_t*) EEPROM_SD_SORT)) {
+            case SD_SORT_TIME: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_SORT_TIME), lcd_sort_type_set); break;
+            case SD_SORT_ALPHA: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_SORT_ALPHA), lcd_sort_type_set); break;
+            default: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_NONE), lcd_sort_type_set);
+        }
+    }
+#endif //SDCARD_SORT_ALPHA
+
 	SETTINGS_SOUND;
 
 #ifdef LCD_BL_PIN
@@ -6019,7 +6001,7 @@ void lcd_sdcard_menu()
 				lcd_update_enabled = true;
 			}
 			_md->fileCnt = card.getnrfilenames();
-			_md->sdSort = eeprom_read_byte((uint8_t*)EEPROM_SD_SORT);
+			_md->sdSort = farm_mode ? SD_SORT_NONE : eeprom_read_byte((uint8_t*)EEPROM_SD_SORT);
 			_md->menuState = _standard;
 			_md->row = -1; // assume that no SD file/dir is currently selected. Once they are rendered, it will be changed to the correct row for the _scrolling state.
 		}