From 95badfe24dc9396475b24bf789277cdb8ec01746 Mon Sep 17 00:00:00 2001 From: kugel Date: Wed, 12 Aug 2009 14:38:25 +0000 Subject: [PATCH] Make kbd_input() show a cancel splash to indicate user abort better and for better consistency all over the place. Change checking for its return value (style-wise) at some places too. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22269 a1c6a512-1295-4272-9138-f99709370657 --- apps/player/keyboard.c | 9 ++++++--- apps/playlist_viewer.c | 2 +- apps/plugins/calendar.c | 4 ++-- apps/plugins/keybox.c | 12 ++++++------ apps/plugins/rockboy/menu.c | 2 +- apps/plugins/text_editor.c | 3 +-- apps/recorder/keyboard.c | 8 ++++++-- apps/settings.c | 1 - apps/tagtree.c | 2 +- docs/PLUGIN_API | 2 +- docs/PLUGIN_API.new | 2 +- 11 files changed, 26 insertions(+), 21 deletions(-) diff --git a/apps/player/keyboard.c b/apps/player/keyboard.c index 114b3fdf2..4f8a8b09e 100644 --- a/apps/player/keyboard.c +++ b/apps/player/keyboard.c @@ -112,6 +112,7 @@ int kbd_input(char* text, int buflen) unsigned char *utf8; int button, lastbutton = 0; + int ret; editpos = utf8length(text); @@ -185,7 +186,7 @@ int kbd_input(char* text, int buflen) switch (button) { case BUTTON_STOP: /* abort */ - return -1; + ret = -1; done = true; break; case BUTTON_MENU: /* page flip */ @@ -245,7 +246,7 @@ int kbd_input(char* text, int buflen) case BUTTON_PLAY | BUTTON_REPEAT: /* accepts what was entered and continues */ - done = true; + ret = 0; done = true; break; case BUTTON_PLAY | BUTTON_REL: @@ -304,6 +305,8 @@ int kbd_input(char* text, int buflen) lastbutton = button; } - return 0; + if (ret < 0) + splash(HZ/2, ID2P(LANG_CANCEL)); + return ret; } diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c index 1e1aab8c5..7d3ff4ef9 100644 --- a/apps/playlist_viewer.c +++ b/apps/playlist_viewer.c @@ -802,7 +802,7 @@ bool search_playlist(void) if (!playlist_viewer_init(&viewer, 0, false)) return ret; - if (kbd_input(search_str, sizeof(search_str)) == -1) + if (kbd_input(search_str, sizeof(search_str)) < 0) return ret; lcd_clear_display(); playlist_count = playlist_amount_ex(viewer.playlist); diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c index e00afe19b..cfb92909b 100644 --- a/apps/plugins/calendar.c +++ b/apps/plugins/calendar.c @@ -568,7 +568,7 @@ static void add_memo(struct shown *shown, int type) { bool saved = false; if (rb->kbd_input(memos[memos_in_memory].message, - sizeof memos[memos_in_memory].message) != -1) + sizeof memos[memos_in_memory].message) == 0) { if (rb->strlen(memos[memos_in_memory].message)) { @@ -634,7 +634,7 @@ static bool edit_memo(int change, struct shown *shown) case 1: /* edit */ if(rb->kbd_input(memos[pointer_array[change]].message, - sizeof memos[pointer_array[change]].message) != -1) + sizeof memos[pointer_array[change]].message) == 0) save_memo(pointer_array[change],true,shown); return false; diff --git a/apps/plugins/keybox.c b/apps/plugins/keybox.c index 6c59470fa..733c6e95c 100644 --- a/apps/plugins/keybox.c +++ b/apps/plugins/keybox.c @@ -190,12 +190,12 @@ static void add_entry(int selected_item) rb->splash(HZ, "Enter title"); pw_list.entries[i].title[0] = '\0'; - if (rb->kbd_input(pw_list.entries[i].title, FIELD_LEN)) + if (rb->kbd_input(pw_list.entries[i].title, FIELD_LEN) < 0) return; rb->splash(HZ, "Enter name"); pw_list.entries[i].name[0] = '\0'; - if (rb->kbd_input(pw_list.entries[i].name, FIELD_LEN)) + if (rb->kbd_input(pw_list.entries[i].name, FIELD_LEN) < 0) { pw_list.entries[i].title[0] = '\0'; return; @@ -203,7 +203,7 @@ static void add_entry(int selected_item) rb->splash(HZ, "Enter password"); pw_list.entries[i].password[0] = '\0'; - if (rb->kbd_input(pw_list.entries[i].password, FIELD_LEN)) + if (rb->kbd_input(pw_list.entries[i].password, FIELD_LEN) < 0) { pw_list.entries[i].title[0] = '\0'; pw_list.entries[i].name[0] = '\0'; @@ -508,11 +508,11 @@ static int enter_pw(char *pw_buf, size_t buflen, bool new_pw) if (new_pw) { rb->splash(HZ, "Enter new master password"); - if (rb->kbd_input(buf[0], sizeof(buf[0]))) + if (rb->kbd_input(buf[0], sizeof(buf[0])) < 0) return -1; rb->splash(HZ, "Confirm master password"); - if (rb->kbd_input(buf[1], sizeof(buf[1]))) + if (rb->kbd_input(buf[1], sizeof(buf[1])) < 0) return -1; if (rb->strcmp(buf[0], buf[1])) @@ -529,7 +529,7 @@ static int enter_pw(char *pw_buf, size_t buflen, bool new_pw) } rb->splash(HZ, "Enter master password"); - if (rb->kbd_input(pw_buf, buflen)) + if (rb->kbd_input(pw_buf, buflen) < 0) return -1; hash_pw(&pwhash); return 0; diff --git a/apps/plugins/rockboy/menu.c b/apps/plugins/rockboy/menu.c index 0978da0b0..290cac98d 100644 --- a/apps/plugins/rockboy/menu.c +++ b/apps/plugins/rockboy/menu.c @@ -227,7 +227,7 @@ static bool do_slot(size_t slot_id, bool is_load) { /* if we're saving to a slot, then get a brief description */ if (!is_load) - if (rb->kbd_input(desc_buf, 20) || !strlen(desc_buf)) + if (rb->kbd_input(desc_buf, 20) || !strlen(desc_buf) < 0) { strlcpy(desc_buf, "Untitled", 20); } diff --git a/apps/plugins/text_editor.c b/apps/plugins/text_editor.c index 06dc09850..473bb68ea 100644 --- a/apps/plugins/text_editor.c +++ b/apps/plugins/text_editor.c @@ -182,10 +182,9 @@ bool save_changes(int overwrite) if (newfile || !overwrite) { - if(rb->kbd_input(filename,MAX_PATH)) + if(rb->kbd_input(filename,MAX_PATH) < 0) { newfile = true; - rb->splash(HZ, "Cancelled"); return false; } } diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c index 32933cdcf..7eb798143 100644 --- a/apps/recorder/keyboard.c +++ b/apps/recorder/keyboard.c @@ -297,6 +297,7 @@ int kbd_input(char* text, int buflen) unsigned short ch; unsigned char *utf8; bool cur_blink = true; /* Cursor on/off flag */ + int ret; #ifdef KBD_MORSE_INPUT bool morse_reading = false; unsigned char morse_code = 0; @@ -779,7 +780,7 @@ int kbd_input(char* text, int buflen) global_settings.buttonbar=buttonbar_config; #endif viewportmanager_set_statusbar(oldbars); - return -1; + ret = -1; done = true; break; case ACTION_KBD_PAGE_FLIP: @@ -1000,6 +1001,7 @@ int kbd_input(char* text, int buflen) case ACTION_KBD_DONE: /* accepts what was entered and continues */ + ret = 0; done = true; break; @@ -1249,5 +1251,7 @@ int kbd_input(char* text, int buflen) screens[l].setfont(FONT_UI); viewportmanager_set_statusbar(oldbars); - return 0; + if (ret < 0) + splash(HZ/2, ID2P(LANG_CANCEL)); + return ret; } diff --git a/apps/settings.c b/apps/settings.c index 6a761ecdd..bd2958e4e 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -652,7 +652,6 @@ bool settings_save_config(int options) break; } else { - splash(HZ, ID2P(LANG_CANCEL)); return false; } } diff --git a/apps/tagtree.c b/apps/tagtree.c index 5d61589ea..de75223e0 100644 --- a/apps/tagtree.c +++ b/apps/tagtree.c @@ -1483,7 +1483,7 @@ int tagtree_enter(struct tree_context* c) else { rc = kbd_input(searchstring, SEARCHSTR_SIZE); - if (rc == -1 || !searchstring[0]) + if (rc < 0 || !searchstring[0]) { tagtree_exit(c); return 0; diff --git a/docs/PLUGIN_API b/docs/PLUGIN_API index feba0868f..0498c0f2f 100644 --- a/docs/PLUGIN_API +++ b/docs/PLUGIN_API @@ -739,7 +739,7 @@ Misc int kbd_input(char *buffer, int buflen); Prompt for a string to be stored in buffer which is of length buflen. - Return FALSE upon success. + Return 0 upon success, negative on failure. struct tm *get_time(void); diff --git a/docs/PLUGIN_API.new b/docs/PLUGIN_API.new index d54d7a1ce..876af375a 100644 --- a/docs/PLUGIN_API.new +++ b/docs/PLUGIN_API.new @@ -851,7 +851,7 @@ int kbd_input(char* buffer, int buflen) \group misc \param buffer \param buflen - \return FALSE upon success + \return 0 upon success, negative upon failure \description Prompt for a string to be stored in =buffer= which is of length =buflen= void lcd_bitmap(const fb_data *src, int x, int y, int width, int height) -- 2.11.4.GIT