MULTI_VOLUME for Color UI and MarlinUI (#22004)

This commit is contained in:
Victor Oliveira 2021-06-14 02:39:16 -03:00 committed by Scott Lahteine
parent d84e2d6e29
commit 2b4284df81
6 changed files with 45 additions and 22 deletions

View file

@ -33,9 +33,9 @@ public:
DiskIODriver* diskIODriver() {
#if ENABLED(MULTI_VOLUME)
#if SHARED_VOLUME_IS(SD_ONBOARD)
return &card.media_sd_spi;
return &card.media_driver_sdcard;
#elif SHARED_VOLUME_IS(USB_FLASH_DRIVE)
return &card.media_usbFlashDrive;
return &card.media_driver_usbFlash;
#endif
#else
return card.diskIODriver();

View file

@ -46,8 +46,8 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) {
if (event != LV_EVENT_RELEASED) return;
lv_clear_media_select();
switch (obj->mks_obj_id) {
case ID_T_USB_DISK: card.changeMedia(&card.media_usbFlashDrive); break;
case ID_T_SD_DISK: card.changeMedia(&card.media_sd_spi); break;
case ID_T_USB_DISK: card.changeMedia(&card.media_driver_usbFlash); break;
case ID_T_SD_DISK: card.changeMedia(&card.media_driver_sdcard); break;
case ID_T_RETURN:
TERN_(MKS_TEST, curent_disp_ui = 1);
lv_draw_ready_print();

View file

@ -740,6 +740,9 @@ namespace Language_en {
PROGMEM Language_Str MSG_CALIBRATION_FAILED = _UxGT("Calibration Failed");
PROGMEM Language_Str MSG_DRIVER_BACKWARD = _UxGT(" driver backward");
PROGMEM Language_Str MSG_SD_CARD = _UxGT("SD Card");
PROGMEM Language_Str MSG_USB_DISK = _UxGT("USB Disk");
}
#if FAN_COUNT == 1

View file

@ -104,7 +104,7 @@ class MenuItem_sdfolder : public MenuItem_sdbase {
}
};
void menu_media() {
void menu_media_filelist() {
ui.encoder_direction_menus();
#if HAS_MARLINUI_U8GLIB
@ -115,7 +115,11 @@ void menu_media() {
#endif
START_MENU();
BACK_ITEM_P(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT(MSG_MAIN) : GET_TEXT(MSG_BACK));
#if ENABLED(MULTI_VOLUME)
ACTION_ITEM(MSG_BACK, []{ ui.goto_screen(menu_media); });
#else
BACK_ITEM_P(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT(MSG_MAIN) : GET_TEXT(MSG_BACK));
#endif
if (card.flag.workDirIsRoot) {
#if !PIN_EXISTS(SD_DETECT)
ACTION_ITEM(MSG_REFRESH, []{ encoderTopLine = 0; card.mount(); });
@ -138,4 +142,22 @@ void menu_media() {
END_MENU();
}
#if ENABLED(MULTI_VOLUME)
void menu_media_select() {
START_MENU();
BACK_ITEM_P(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT(MSG_MAIN) : GET_TEXT(MSG_BACK));
#if ENABLED(VOLUME_SD_ONBOARD)
ACTION_ITEM(MSG_SD_CARD, []{ card.changeMedia(&card.media_driver_sdcard); card.mount(); ui.goto_screen(menu_media_filelist); });
#endif
#if ENABLED(VOLUME_USB_FLASH_DRIVE)
ACTION_ITEM(MSG_USB_DISK, []{ card.changeMedia(&card.media_driver_usbFlash); card.mount(); ui.goto_screen(menu_media_filelist); });
#endif
END_MENU();
}
#endif
void menu_media() {
TERN(MULTI_VOLUME, menu_media_select, menu_media_filelist)();
}
#endif // HAS_LCD_MENU && SDSUPPORT

View file

@ -121,13 +121,12 @@ uint8_t CardReader::workDirDepth;
#endif // SDCARD_SORT_ALPHA
#if SHARED_VOLUME_IS(USB_FLASH_DRIVE) || ENABLED(USB_FLASH_DRIVE_SUPPORT)
DiskIODriver_USBFlash CardReader::media_usbFlashDrive;
#if HAS_USB_FLASH_DRIVE
DiskIODriver_USBFlash CardReader::media_driver_usbFlash;
#endif
#if NEED_SD2CARD_SDIO
DiskIODriver_SDIO CardReader::media_sdio;
#elif NEED_SD2CARD_SPI
DiskIODriver_SPI_SD CardReader::media_sd_spi;
#if NEED_SD2CARD_SDIO || NEED_SD2CARD_SPI
CardReader::sdcard_driver_t CardReader::media_driver_sdcard;
#endif
DiskIODriver* CardReader::driver = nullptr;
@ -144,12 +143,10 @@ uint32_t CardReader::filesize, CardReader::sdpos;
CardReader::CardReader() {
changeMedia(&
#if SHARED_VOLUME_IS(SD_ONBOARD)
TERN(SDIO_SUPPORT, media_sdio, media_sd_spi)
#elif SHARED_VOLUME_IS(USB_FLASH_DRIVE) || ENABLED(USB_FLASH_DRIVE_SUPPORT)
media_usbFlashDrive
#if HAS_USB_FLASH_DRIVE && !SHARED_VOLUME_IS(SD_ONBOARD)
media_driver_usbFlash
#else
TERN(SDIO_SUPPORT, media_sdio, media_sd_spi)
media_driver_sdcard
#endif
);

View file

@ -235,12 +235,13 @@ public:
#endif
#if SHARED_VOLUME_IS(USB_FLASH_DRIVE) || ENABLED(USB_FLASH_DRIVE_SUPPORT)
static DiskIODriver_USBFlash media_usbFlashDrive;
#define HAS_USB_FLASH_DRIVE 1
static DiskIODriver_USBFlash media_driver_usbFlash;
#endif
#if NEED_SD2CARD_SDIO
static DiskIODriver_SDIO media_sdio;
#elif NEED_SD2CARD_SPI
static DiskIODriver_SPI_SD media_sd_spi;
#if NEED_SD2CARD_SDIO || NEED_SD2CARD_SPI
typedef TERN(NEED_SD2CARD_SDIO, DiskIODriver_SDIO, DiskIODriver_SPI_SD) sdcard_driver_t;
static sdcard_driver_t media_driver_sdcard;
#endif
private: