banshee r4600 - in trunk/banshee: . src/Core/Banshee.ThickClient/Banshee.Preferences.Gui src/Dap/Banshee.Dap/Banshee.Dap



Author: gburt
Date: Wed Sep 24 03:13:13 2008
New Revision: 4600
URL: http://svn.gnome.org/viewvc/banshee?rev=4600&view=rev

Log:
2008-09-23  Gabriel Burt  <gabriel burt gmail com>

	* src/Dap/Banshee.Dap/Banshee.Dap/DapSync.cs: Update the sensitivities of
	the library sync prefs when the Manual Sync pref changes, and raise
	Updated when that happens too so that the Sync action is immediately
	hidden/shown (BGO #552654).

	* src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/WidgetFactory.cs:
	Fix listening to changes on the Preference and setting the sensitivity and
	visibility of the widgets.



Modified:
   trunk/banshee/ChangeLog
   trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/WidgetFactory.cs
   trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap/DapSync.cs

Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/WidgetFactory.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/WidgetFactory.cs	(original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/WidgetFactory.cs	Wed Sep 24 03:13:13 2008
@@ -41,11 +41,11 @@
             if (preference == null) {
                 return null;
             }
+
+            Widget widget = preference.DisplayWidget as Widget;
+            //OnPreferenceChanged (preference);
             
-            Widget display_widget = preference.DisplayWidget as Widget;
-            OnPreferenceChanged (preference);
-            
-            return display_widget ?? GetWidget (preference, preference.GetType ().GetProperty ("Value").PropertyType);
+            return widget ?? GetWidget (preference, preference.GetType ().GetProperty ("Value").PropertyType);
         }
         
         private static Widget GetWidget (PreferenceBase preference, Type type)
@@ -58,15 +58,20 @@
             }
 
             if (widget != null) {
-                preference.Changed += OnPreferenceChanged;
-                //widget.Destroyed += OnWidgetDestroyed;
-            }
+                preference.Changed += delegate (Root pref) {
+                    widget.Sensitive = pref.Sensitive;
+                    widget.Visible = pref.Visible;
+                };
 
-            if (preference.ShowDescription) {
-                VBox box = new VBox ();
-                box.PackStart (widget, false, false, 0);
-                new DescriptionLabel (preference.Description).PackInto (box, false);
-                widget = box;
+                widget.Sensitive = preference.Sensitive;
+                widget.Visible = preference.Visible;
+
+                if (preference.ShowDescription) {
+                    VBox box = new VBox ();
+                    box.PackStart (widget, false, false, 0);
+                    new DescriptionLabel (preference.Description).PackInto (box, false);
+                    widget = box;
+                }
             }
             
             return widget;
@@ -80,19 +85,6 @@
             
             return preference.MnemonicWidget as Widget;
         }
-
-        /*private static void OnWidgetDestroyed (object sender, EventArgs args)
-        {
-        }*/
-
-        private static void OnPreferenceChanged (Root preference)
-        {
-            Widget widget = preference.DisplayWidget as Widget;
-            if (widget != null) {
-                widget.Sensitive = preference.Sensitive;
-                widget.Visible = preference.Visible;
-            }
-        }
         
         private class PreferenceCheckButton : CheckButton
         {

Modified: trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap/DapSync.cs
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap/DapSync.cs	(original)
+++ trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap/DapSync.cs	Wed Sep 24 03:13:13 2008
@@ -54,6 +54,7 @@
         private SchemaEntry<bool> manually_manage, auto_sync;
         private Section dap_prefs_section;
         private PreferenceBase manually_manage_pref;//, auto_sync_pref;
+        private SchemaPreference<bool> auto_sync_pref;
         private List<Section> pref_sections = new List<Section> ();
         private RateLimiter sync_limiter;
 
@@ -93,6 +94,7 @@
             sync_limiter = new RateLimiter (RateLimitedSync);
             BuildPreferences ();
             BuildSyncLists ();
+            UpdateSensitivities ();
         }
 
         public void Dispose ()
@@ -109,8 +111,7 @@
 
         private void BuildPreferences ()
         {
-            conf_ns = String.Format ("{0}.{1}", dap.ParentConfigurationId, "sync");
-            
+            conf_ns = "sync";
             manually_manage = dap.CreateSchema<bool> (conf_ns, "enabled", true,
                 Catalog.GetString ("Manually manage this device"),
                 Catalog.GetString ("Manually managing your device means you can drag and drop items onto the device, and manually remove them.")
@@ -127,7 +128,9 @@
             manually_manage_pref = dap_prefs_section.Add (manually_manage);
             manually_manage_pref.ShowDescription = true;
             manually_manage_pref.ShowLabel = false;
-            SchemaPreference<bool> auto_sync_pref = dap_prefs_section.Add (auto_sync);
+            manually_manage_pref.ValueChanged += OnManuallyManageChanged;
+            
+            auto_sync_pref = dap_prefs_section.Add (auto_sync);
             auto_sync_pref.ValueChanged += OnAutoSyncChanged;
             
             //manually_manage_pref.Changed += OnEnabledChanged;
@@ -160,18 +163,21 @@
             dap.TracksDeleted += OnDapChanged;
         }
 
-        /*private void OnEnabledChanged (Root pref)
+        private void OnManuallyManageChanged (Root preference)
         {
-            Console.WriteLine ("got manual mng changed, Enabled = {0}", Enabled);
-            auto_sync_pref.Sensitive = Enabled;
-            foreach (Section section in pref_sections) {
-                if (section != dap_prefs_section) {
-                    section.Sensitive = Enabled;
-                 }
-             }
+            UpdateSensitivities ();
             OnUpdated ();
-        }*/
+        }
 
+        private void UpdateSensitivities ()
+        {
+            bool sync_enabled = Enabled;
+            auto_sync_pref.Sensitive = sync_enabled;
+            foreach (DapLibrarySync lib_sync in library_syncs) {
+                lib_sync.PrefsSection.Sensitive = sync_enabled;
+            }
+        }
+        
         private void OnAutoSyncChanged (Root preference)
         {
             if (AutoSync) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]