Index: apps/settings.h
===================================================================
RCS file: /cvsroot/rockbox/apps/settings.h,v
retrieving revision 1.219
diff -u -b -r1.219 settings.h
--- apps/settings.h	25 May 2006 13:34:51 -0000	1.219
+++ apps/settings.h	11 Jun 2006 09:31:05 -0000
@@ -431,6 +431,7 @@
     int dircache_size;      /* directory cache structure last size, 22 bits */
     bool tagcache_ram;      /* tag cache mode (0=disabled,1=disk,2=ram) */
 #endif
+    bool tagcache_update_mode; /* tagcache update mode selection */
     int default_codepage;   /* set default codepage for tag conversion */
 #ifdef HAVE_REMOTE_LCD
     unsigned char rwps_file[MAX_FILENAME+1];  /* last remote-wps */
Index: apps/settings_menu.c
===================================================================
RCS file: /cvsroot/rockbox/apps/settings_menu.c,v
retrieving revision 1.257
diff -u -b -r1.257 settings_menu.c
--- apps/settings_menu.c	6 Jun 2006 22:23:41 -0000	1.257
+++ apps/settings_menu.c	11 Jun 2006 09:31:08 -0000
@@ -5,7 +5,7 @@
  *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
  *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
  *                     \/            \/     \/    \/            \/
- * $Id: settings_menu.c,v 1.257 2006-06-06 22:23:41 amiconn Exp $
+ * $Id: settings_menu.c,v 1.256 2006-05-29 05:19:18 midk Exp $
  *
  * Copyright (C) 2002 Robert Hak
  *
@@ -81,7 +81,7 @@
 #include "backdrop.h"
 #endif
 
-#ifdef CONFIG_CHARGING
+#ifdef HAVE_CHARGING
 static bool car_adapter_mode(void)
 {
     return set_bool( str(LANG_CAR_ADAPTER_MODE),
@@ -177,7 +177,7 @@
                      &global_settings.caption_backlight);
 }
 
-#ifdef CONFIG_CHARGING
+#ifdef HAVE_CHARGING
 static bool backlight_timer_plugged(void)
 {
     return set_option((char *)str(LANG_BACKLIGHT_ON_WHEN_CHARGING),
@@ -248,7 +248,7 @@
                       remote_backlight_set_timeout );
 }
 
-#ifdef CONFIG_CHARGING
+#ifdef HAVE_CHARGING
 static bool remote_backlight_timer_plugged(void)
 {
     return set_option((char *)str(LANG_BACKLIGHT_ON_WHEN_CHARGING),
@@ -1533,6 +1533,18 @@
 }
 #endif /* HAVE_DIRCACHE */
 
+static bool tagcache_rebuild_mode(void)
+{
+    bool result = set_bool_options(str(LANG_TAGCACHE_UPDATE_MODE),
+                                   &global_settings.tagcache_update_mode,
+                                   STR(LANG_TAGCACHE_UPDATE_MODE_UPDATE),
+                                   STR(LANG_TAGCACHE_UPDATE_MODE_COMPLETE),
+                                   NULL);
+
+    return result;
+}
+
+
 static bool playback_settings_menu(void)
 {
     int m;
@@ -1644,6 +1656,7 @@
 #ifdef HAVE_DIRCACHE
         { ID2P(LANG_TAGCACHE),              tagcache_ram          },
 #endif
+        { ID2P(LANG_TAGCACHE_UPDATE_MODE), tagcache_rebuild_mode },
         { ID2P(LANG_TAGCACHE_FORCE_UPDATE), tagcache_force_update },
     };
 
@@ -1715,7 +1728,7 @@
     static const struct menu_item items[] = {
 #ifdef CONFIG_BACKLIGHT
         { ID2P(LANG_BACKLIGHT),       backlight_timer },
-#ifdef CONFIG_CHARGING
+#ifdef HAVE_CHARGING
         { ID2P(LANG_BACKLIGHT_ON_WHEN_CHARGING), backlight_timer_plugged },
 #endif
         { ID2P(LANG_CAPTION_BACKLIGHT), caption_backlight },
@@ -1763,7 +1776,7 @@
 
     static const struct menu_item items[] = {
         { ID2P(LANG_BACKLIGHT),       remote_backlight_timer },
-#ifdef CONFIG_CHARGING
+#ifdef HAVE_CHARGING
         { ID2P(LANG_BACKLIGHT_ON_WHEN_CHARGING),
                                       remote_backlight_timer_plugged },
 #endif
@@ -1860,8 +1873,10 @@
         { ID2P(LANG_BATTERY_TYPE),     battery_type },
 #endif
 #else
+#ifndef HAVE_CHARGE_CTRL
         { "Dummy", NULL }, /* to have an entry at all, in the simulator */
 #endif
+#endif
     };
 
     m=menu_init( items, sizeof(items) / sizeof(*items), NULL,
@@ -1973,7 +1988,7 @@
 #if CONFIG_CODEC == MAS3507D
         { ID2P(LANG_LINE_IN),          line_in                },
 #endif
-#ifdef CONFIG_CHARGING
+#ifdef HAVE_CHARGING
         { ID2P(LANG_CAR_ADAPTER_MODE), car_adapter_mode       },
 #endif
     };
Index: apps/tagcache.c
===================================================================
RCS file: /cvsroot/rockbox/apps/tagcache.c,v
retrieving revision 1.27
diff -u -b -r1.27 tagcache.c
--- apps/tagcache.c	31 May 2006 06:07:28 -0000	1.27
+++ apps/tagcache.c	11 Jun 2006 09:31:08 -0000
@@ -2424,7 +2424,8 @@
                 break ;
 
             case Q_FORCE_UPDATE:
-                //remove_files();
+                if (global_settings.tagcache_update_mode == 0) // Complete rebuild
+                    remove_files();
                 build_tagcache();
                 break ;
                 
Index: apps/lang/english.lang
===================================================================
RCS file: /cvsroot/rockbox/apps/lang/english.lang,v
retrieving revision 1.252
diff -u -b -r1.252 english.lang
--- apps/lang/english.lang	25 May 2006 13:34:51 -0000	1.252
+++ apps/lang/english.lang	11 Jun 2006 09:31:12 -0000
@@ -8529,3 +8529,46 @@
     *: "Remote Scrolling Options"
   </voice>
 </phrase>   
+<phrase>
+  id: LANG_TAGCACHE_UPDATE_MODE
+  desc: in tag cache settings
+  user:
+  <source>
+    *: "Tag Cache Update Mode"
+  </source>
+  <dest>
+    *: "Tag Cache Update Mode"
+  </dest>
+  <voice>
+    *: "Tag Cache Update Mode"
+  </voice>
+</phrase>
+<phrase>
+  id: LANG_TAGCACHE_UPDATE_MODE_COMPLETE
+  desc: Tag cache update complete rebuild
+  user:
+  <source>
+    *: "Complete rebuild"
+  </source>
+  <dest>
+    *: "Complete rebuild"
+  </dest>
+  <voice>
+    *: "Complete rebuild"
+  </voice>
+</phrase>
+<phrase>
+  id: LANG_TAGCACHE_UPDATE_MODE_UPDATE
+  desc: Tag cache update only
+  user:
+  <source>
+    *: "Update only"
+  </source>
+  <dest>
+    *: "Update only"
+  </dest>
+  <voice>
+    *: "Update only"
+  </voice>
+</phrase>
+   
