summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
authorTom Ross <midgey@rockbox.org>2007-01-18 01:38:50 +0000
committerTom Ross <midgey@rockbox.org>2007-01-18 01:38:50 +0000
commitfd27a9d2bfa5b4ba46489ff203c70794c3770923 (patch)
treebb6298b59a20ce832dadf68d9c47628883479176 /apps/plugins
parent2e194c123b703f9b3386d2f6f7b9a1372378b5ad (diff)
downloadrockbox-fd27a9d2bfa5b4ba46489ff203c70794c3770923.zip
rockbox-fd27a9d2bfa5b4ba46489ff203c70794c3770923.tar.gz
rockbox-fd27a9d2bfa5b4ba46489ff203c70794c3770923.tar.bz2
rockbox-fd27a9d2bfa5b4ba46489ff203c70794c3770923.tar.xz
Change Disktidy to use the standard menu api and adapt it to work on the Archos Player. Change the default clean value from 'Mac' to 'Both.'
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12059 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/SOURCES2
-rw-r--r--apps/plugins/disktidy.c209
2 files changed, 73 insertions, 138 deletions
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES
index 2524a4c..ffa01f1 100644
--- a/apps/plugins/SOURCES
+++ b/apps/plugins/SOURCES
@@ -30,10 +30,10 @@ wavplay.c
#ifndef IRIVER_IFP7XX_SERIES /* Temporarily disable plugins for iFP7xx */
dice.c
+disktidy.c
flipit.c
#ifdef HAVE_LCD_BITMAP /* Not for the Player */
-disktidy.c
mazezam.c
text_editor.c
diff --git a/apps/plugins/disktidy.c b/apps/plugins/disktidy.c
index 88cc39d..2c4935e 100644
--- a/apps/plugins/disktidy.c
+++ b/apps/plugins/disktidy.c
@@ -39,67 +39,37 @@ enum tidy_system
};
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define TIDY_DO BUTTON_ON
+#if CONFIG_KEYPAD == PLAYER_PAD
+#define TIDY_STOP BUTTON_STOP
+
+#elif CONFIG_KEYPAD == RECORDER_PAD
#define TIDY_STOP BUTTON_OFF
-#define TIDY_LEFT BUTTON_LEFT
-#define TIDY_RIGHT BUTTON_RIGHT
#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
-#define TIDY_DO BUTTON_ON
#define TIDY_STOP BUTTON_OFF
-#define TIDY_LEFT BUTTON_LEFT
-#define TIDY_RIGHT BUTTON_RIGHT
#elif CONFIG_KEYPAD == ONDIO_PAD
-#define TIDY_DO BUTTON_MENU
#define TIDY_STOP BUTTON_OFF
-#define TIDY_LEFT BUTTON_LEFT
-#define TIDY_RIGHT BUTTON_RIGHT
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
-#define TIDY_DO BUTTON_SELECT
#define TIDY_STOP BUTTON_OFF
-#define TIDY_LEFT BUTTON_LEFT
-#define TIDY_RIGHT BUTTON_RIGHT
#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_4G_PAD)
-#define TIDY_DO BUTTON_SELECT
#define TIDY_STOP BUTTON_MENU
-#define TIDY_LEFT BUTTON_LEFT
-#define TIDY_RIGHT BUTTON_RIGHT
-
-#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD)
-#define TIDY_DO BUTTON_PLAY
-#define TIDY_STOP BUTTON_POWER
-#define TIDY_LEFT BUTTON_LEFT
-#define TIDY_RIGHT BUTTON_RIGHT
-#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD)
-#define TIDY_DO BUTTON_PLAY
+#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
#define TIDY_STOP BUTTON_POWER
-#define TIDY_LEFT BUTTON_LEFT
-#define TIDY_RIGHT BUTTON_RIGHT
-#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
-#define TIDY_DO BUTTON_SELECT
+#elif CONFIG_KEYPAD == GIGABEAT_PAD
#define TIDY_STOP BUTTON_A
-#define TIDY_LEFT BUTTON_LEFT
-#define TIDY_RIGHT BUTTON_RIGHT
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
-#define TIDY_DO BUTTON_SELECT
+#elif CONFIG_KEYPAD == SANSA_E200_PAD
#define TIDY_STOP BUTTON_POWER
-#define TIDY_LEFT BUTTON_LEFT
-#define TIDY_RIGHT BUTTON_RIGHT
-#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
-#define TIDY_DO BUTTON_PLAY
+#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define TIDY_STOP BUTTON_POWER
-#define TIDY_LEFT BUTTON_LEFT
-#define TIDY_RIGHT BUTTON_RIGHT
#else
#error DISKTIDY: Unsupported keypad
@@ -115,8 +85,10 @@ void tidy_lcd_status(const char *name, int *removed)
rb->lcd_puts(0, 0, "Working ...");
rb->lcd_puts(0, 1, name);
rb->snprintf(text, 24, "Cleaned up %d items", *removed);
+#ifdef HAVE_LCD_BITMAP
rb->lcd_puts(0, 2, text);
rb->lcd_update();
+#endif
}
void tidy_get_absolute_path(struct dirent *entry, char *fullname,
@@ -366,113 +338,80 @@ enum plugin_status tidy_do(enum tidy_system system)
return status;
}
-void tidy_lcd_menu(enum tidy_system system)
+int tidy_lcd_menu(void)
{
- /* show menu text */
- rb->lcd_clear_display();
+ int loc, ret;
- /* show keys */
-#if CONFIG_KEYPAD == RECORDER_PAD
- rb->lcd_puts(0, 0, "[On] to clean up");
- rb->lcd_puts(0, 1, "[Off] to exit/abort");
-#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
- rb->lcd_puts(0, 0, "[On] to clean up");
- rb->lcd_puts(0, 1, "[Off] to exit/abort");
-#elif CONFIG_KEYPAD == ONDIO_PAD
- rb->lcd_puts(0, 0, "[Menu] to clean up");
- rb->lcd_puts(0, 1, "[Off] to exit/abort");
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
- rb->lcd_puts(0, 0, "[Navi] to clean up");
- rb->lcd_puts(0, 1, "[Off] to exit/abort");
-#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || \
- (CONFIG_KEYPAD == IPOD_4G_PAD)
- rb->lcd_puts(0, 0, "[Select] to clean up");
- rb->lcd_puts(0, 1, "[Menu] to exit/abort");
-#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD)
- rb->lcd_puts(0, 0, "[Play] to clean up");
- rb->lcd_puts(0, 1, "[Power] to exit/abort");
-#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
- rb->lcd_puts(0, 0, "[Select] to clean up");
- rb->lcd_puts(0, 1, "[A] to exit/abort");
-#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
- rb->lcd_puts(0, 0, "[Play] to clean up");
- rb->lcd_puts(0, 1, "[Power] to exit/abort");
-#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
- rb->lcd_puts(0, 0, "[Select] to clean up");
- rb->lcd_puts(0, 1, "[Power] to exit/abort");
-#else
- #error DISKTIDY: Unsupported model
-#endif
+ static const struct menu_item items[] =
+ {
+ { "Start Cleaning", NULL },
+ { "Files to Clean", NULL},
+ { "Quit", NULL }
+ };
- /* show selcted system */
- switch (system)
+ static const struct opt_items system_option[3] =
{
- case TIDY_MAC:
- rb->lcd_puts(0, 2, "< Mac >");
- rb->lcd_puts(0, 3, "Deletes");
- rb->lcd_puts(0, 4, "._* .DS_Store");
- rb->lcd_puts(0, 5, "/.Trashes/");
- break;
- case TIDY_WIN:
- rb->lcd_puts(0, 2, "< Win >");
- rb->lcd_puts(0, 3, "Deletes");
- rb->lcd_puts(0, 4, "Thumbs.db /Recycled/");
- rb->lcd_puts(0, 5, "/System Volume Information/");
- break;
- case TIDY_BOTH:
- rb->lcd_puts(0, 2, "< Both >");
+ { "Mac", -1 },
+ { "Windows", -1 },
+ { "Both", -1}
+ };
+
+ loc = rb->menu_init(items, sizeof(items) / sizeof(*items),
+ NULL, NULL, NULL, NULL);
+
+ while (true)
+ {
+ switch(rb->menu_show(loc))
+ {
+
+ case 0:
+ return ret;
+
+ case 1:
+ rb->set_option("Files to Clean", &ret, INT, system_option, 3, NULL);
break;
-
+
+ case 2:
+ return 99;
+
+ default:
+ return 99;
+ }
}
- rb->lcd_update();
+
+ rb->menu_exit(loc);
}
/* this is the plugin entry point */
enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
{
- enum tidy_system system = TIDY_MAC;
+ enum tidy_system system = TIDY_BOTH;
enum tidy_return status;
int button;
(void)parameter;
rb = api;
+
+ switch(tidy_lcd_menu())
+ {
+ case 0:
+ system = TIDY_MAC;
+ break;
+ case 1:
+ system = TIDY_WIN;
+ break;
+ case 2:
+ system = TIDY_BOTH;
+ break;
+ case 99:
+ return PLUGIN_OK;
+ default:
+ system = TIDY_BOTH;
+ }
- tidy_lcd_menu(system);
-
- while (1)
+ while (rb->button_get(false) != TIDY_STOP)
{
- button = rb->button_get(false);
-
- if (button == TIDY_LEFT)
- {
- if (system == 0)
- {
- system = 2;
- }
- else
- {
- system --;
- }
- tidy_lcd_menu(system);
- }
-
- if (button == TIDY_RIGHT)
- {
- if (system == 2)
- {
- system = 0;
- }
- else
- {
- system ++;
- }
- tidy_lcd_menu(system);
- }
-
- if (button == TIDY_DO)
- {
status = tidy_do(system);
@@ -487,20 +426,16 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
case TIDY_RETURN_ABORT:
return PLUGIN_OK;
}
- }
+ }
- if (button == TIDY_STOP)
- {
- return PLUGIN_OK;
- }
+ if (button == TIDY_STOP)
+ return PLUGIN_OK;
- if (rb->default_event_handler(button) == SYS_USB_CONNECTED)
- {
- return PLUGIN_USB_CONNECTED;
- }
+ if (rb->default_event_handler(button) == SYS_USB_CONNECTED)
+ return PLUGIN_USB_CONNECTED;
- rb->yield();
- }
+ rb->yield();
+
return PLUGIN_OK;
}