summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorne Wuff <torne@wolfpuppy.org.uk>2010-07-05 16:39:00 +0000
committerTorne Wuff <torne@wolfpuppy.org.uk>2010-07-05 16:39:00 +0000
commitdb1b823ac3ea524d80a83876c9c99593d29f3817 (patch)
tree52a5ee873e0a35860e1134c6e254b862012fa9fd
parentd265bcf965c8b51911ed8ce8d664eb9629d8bfa0 (diff)
downloadrockbox-db1b823ac3ea524d80a83876c9c99593d29f3817.tar.gz
rockbox-db1b823ac3ea524d80a83876c9c99593d29f3817.zip
Provide the option to automatically update existing bookmark files on stop, without creating ones that don't already exist.
Idea from FS#6272, but implemented differently. If you set "Update on stop" then it will check if the bookmark file exists on stop, and if so, write a new one without prompting. If the file doesn't exist, it will do whatever the "Bookmark on stop" setting tells it to do. This works quite well if you have an audiobook/podcast/etc folder/playlist: just bookmark it manually once and it will get bookmarked automatically after that, without creating bookmarks for regular music. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27294 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/bookmark.c5
-rw-r--r--apps/lang/english.lang14
-rw-r--r--apps/menus/settings_menu.c3
-rw-r--r--apps/settings.h1
-rw-r--r--apps/settings_list.c2
5 files changed, 24 insertions, 1 deletions
diff --git a/apps/bookmark.c b/apps/bookmark.c
index 3d8df3ec0b..b8d41c7464 100644
--- a/apps/bookmark.c
+++ b/apps/bookmark.c
@@ -166,16 +166,21 @@ bool bookmark_mrb_load()
166bool bookmark_autobookmark(bool prompt_ok) 166bool bookmark_autobookmark(bool prompt_ok)
167{ 167{
168 char* bookmark; 168 char* bookmark;
169 bool update = false;
169 if (!system_check()) 170 if (!system_check())
170 return false; 171 return false;
171 172
172 audio_pause(); /* first pause playback */ 173 audio_pause(); /* first pause playback */
174 if (global_settings.autoupdatebookmark && bookmark_exist())
175 update = true;
173 bookmark = create_bookmark(); 176 bookmark = create_bookmark();
174 /* Workaround for inability to speak when paused: all callers will 177 /* Workaround for inability to speak when paused: all callers will
175 just do audio_stop() when we return, so we can do it right 178 just do audio_stop() when we return, so we can do it right
176 away. This makes it possible to speak the "Create a Bookmark?" 179 away. This makes it possible to speak the "Create a Bookmark?"
177 prompt and the "Bookmark Created" splash. */ 180 prompt and the "Bookmark Created" splash. */
178 audio_stop(); 181 audio_stop();
182 if (update)
183 return write_bookmark(true, bookmark);
179 switch (global_settings.autocreatebookmark) 184 switch (global_settings.autocreatebookmark)
180 { 185 {
181 case BOOKMARK_YES: 186 case BOOKMARK_YES:
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 2c09b594b2..653a0be3ed 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -12605,3 +12605,17 @@
12605 touchscreen: "Cancel" 12605 touchscreen: "Cancel"
12606 </voice> 12606 </voice>
12607</phrase> 12607</phrase>
12608<phrase>
12609 id: LANG_BOOKMARK_SETTINGS_AUTOUPDATE
12610 desc: prompt for user to decide whether to update bookmarks
12611 user: core
12612 <source>
12613 *: "Update on Stop"
12614 </source>
12615 <dest>
12616 *: "Update on Stop"
12617 </dest>
12618 <voice>
12619 *: "Update on Stop"
12620 </voice>
12621</phrase>
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c
index bcd49c942c..efd18b2204 100644
--- a/apps/menus/settings_menu.c
+++ b/apps/menus/settings_menu.c
@@ -347,11 +347,12 @@ static int bmark_callback(int action,const struct menu_item_ex *this_item)
347} 347}
348MENUITEM_SETTING(autocreatebookmark, 348MENUITEM_SETTING(autocreatebookmark,
349 &global_settings.autocreatebookmark, bmark_callback); 349 &global_settings.autocreatebookmark, bmark_callback);
350MENUITEM_SETTING(autoupdatebookmark, &global_settings.autoupdatebookmark, NULL);
350MENUITEM_SETTING(autoloadbookmark, &global_settings.autoloadbookmark, NULL); 351MENUITEM_SETTING(autoloadbookmark, &global_settings.autoloadbookmark, NULL);
351MENUITEM_SETTING(usemrb, &global_settings.usemrb, NULL); 352MENUITEM_SETTING(usemrb, &global_settings.usemrb, NULL);
352MAKE_MENU(bookmark_settings_menu, ID2P(LANG_BOOKMARK_SETTINGS), 0, 353MAKE_MENU(bookmark_settings_menu, ID2P(LANG_BOOKMARK_SETTINGS), 0,
353 Icon_Bookmark, 354 Icon_Bookmark,
354 &autocreatebookmark, &autoloadbookmark, &usemrb); 355 &autocreatebookmark, &autoupdatebookmark, &autoloadbookmark, &usemrb);
355/* BOOKMARK MENU */ 356/* BOOKMARK MENU */
356/***********************************/ 357/***********************************/
357 358
diff --git a/apps/settings.h b/apps/settings.h
index a324ef2dd7..d9aec8fc92 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -604,6 +604,7 @@ struct user_settings
604 /* auto bookmark settings */ 604 /* auto bookmark settings */
605 int autoloadbookmark; /* auto load option: 0=off, 1=ask, 2=on */ 605 int autoloadbookmark; /* auto load option: 0=off, 1=ask, 2=on */
606 int autocreatebookmark; /* auto create option: 0=off, 1=ask, 2=on */ 606 int autocreatebookmark; /* auto create option: 0=off, 1=ask, 2=on */
607 bool autoupdatebookmark;/* auto update option */
607 int usemrb; /* use MRB list: 0=No, 1=Yes*/ 608 int usemrb; /* use MRB list: 0=No, 1=Yes*/
608 609
609#ifdef HAVE_DIRCACHE 610#ifdef HAVE_DIRCACHE
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 9412ee4dd5..09eee6bb57 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -989,6 +989,8 @@ const struct settings_list settings[] = {
989 ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES), 989 ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES),
990 ID2P(LANG_ASK), ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES), 990 ID2P(LANG_ASK), ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES),
991 ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK)), 991 ID2P(LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK)),
992 OFFON_SETTING(0, autoupdatebookmark, LANG_BOOKMARK_SETTINGS_AUTOUPDATE,
993 false, "autoupdate bookmarks", NULL),
992 CHOICE_SETTING(0, autoloadbookmark, LANG_BOOKMARK_SETTINGS_AUTOLOAD, 994 CHOICE_SETTING(0, autoloadbookmark, LANG_BOOKMARK_SETTINGS_AUTOLOAD,
993 BOOKMARK_NO, "autoload bookmarks", off_on_ask, NULL, 3, 995 BOOKMARK_NO, "autoload bookmarks", off_on_ask, NULL, 3,
994 ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES), 996 ID2P(LANG_SET_BOOL_NO), ID2P(LANG_SET_BOOL_YES),