banshee r4262 - in trunk/banshee: . src/Core/Banshee.Services/Banshee.Library src/Core/Banshee.Services/Banshee.Sources src/Core/Banshee.ThickClient/Banshee.Gui src/Core/Banshee.ThickClient/Banshee.Sources.Gui



Author: gburt
Date: Sun Jul 27 20:19:48 2008
New Revision: 4262
URL: http://svn.gnome.org/viewvc/banshee?rev=4262&view=rev

Log:
2008-07-27  Gabriel Burt  <gabriel burt gmail com>

	* src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs: Add
	static UpdateAction convenience methods that set the
	visiblity/sensitivity of actions.

	* src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Hide the
	browser-related actions when the source doesn't have any filters.

	* src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs:
	Fix issue with not allowing sources that didn't implement
	IFilterableSource to be used by this view.  Patch also created by Bertrand
	Lorentz (BGO #544989).

	* src/Core/Banshee.Services/Banshee.Sources/IFilterableSource.cs: Add
	AvailableFilters getter to the interface.

	* src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs:
	Override HasArtistAlbum to false.


Modified:
   trunk/banshee/ChangeLog
   trunk/banshee/src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs
   trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/IFilterableSource.cs
   trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs
   trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs
   trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs

Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs	Sun Jul 27 20:19:48 2008
@@ -57,6 +57,10 @@
         public override bool ShowBrowser {
             get { return false; }
         }
+        
+        protected override bool HasArtistAlbum {
+            get { return false; }
+        }
 
         public override IEnumerable<SmartPlaylistDefinition> DefaultSmartPlaylists {
             get { return default_smart_playlists; }

Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/IFilterableSource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/IFilterableSource.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/IFilterableSource.cs	Sun Jul 27 20:19:48 2008
@@ -39,5 +39,6 @@
     {
         event EventHandler FiltersChanged;
         IList<Banshee.Collection.Database.IFilterListModel> CurrentFilters { get; }
+        IList<Banshee.Collection.Database.IFilterListModel> AvailableFilters { get; }
     }
 }

Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs	(original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs	Sun Jul 27 20:19:48 2008
@@ -94,8 +94,7 @@
         public void UpdateAction (string action_name, bool visible, bool sensitive, Source source)
         {
             Gtk.Action action = this[action_name];
-            action.Visible = visible;
-            action.Sensitive = visible && sensitive;
+            UpdateAction (action, visible, sensitive);
 
             if (source != null && action.Visible) {
                 // Save the original label
@@ -120,6 +119,17 @@
             }
         }
         
+        public static void UpdateAction (Gtk.Action action, bool visible_and_sensitive)
+        {
+            UpdateAction (action, visible_and_sensitive, visible_and_sensitive);
+        }
+        
+        public static void UpdateAction (Gtk.Action action, bool visible, bool sensitive)
+        {
+            action.Visible = visible;
+            action.Sensitive = visible && sensitive;
+        }
+        
         protected void ShowContextMenu (string menu_name)
         {
             Gtk.Menu menu = Actions.UIManager.GetWidget (menu_name) as Menu;

Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs	(original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs	Sun Jul 27 20:19:48 2008
@@ -356,6 +356,16 @@
                 UpdateAction ("NewSmartPlaylistAction", primary_source != null && primary_source.SupportsPlaylists, true, source);
                 /*UpdateAction ("NewSmartPlaylistFromSearchAction", (source is LibrarySource || source.Parent is LibrarySource),
                         !String.IsNullOrEmpty (source.FilterQuery), source);*/
+                    
+                ActionGroup browser_actions = Actions.FindActionGroup ("BrowserView");
+                if (browser_actions != null) {
+                    IFilterableSource filterable_source = source as IFilterableSource;
+                    bool has_browser = filterable_source != null && filterable_source.AvailableFilters.Count > 0;
+                    UpdateAction (browser_actions["BrowserTopAction"], has_browser);
+                    UpdateAction (browser_actions["BrowserLeftAction"], has_browser);
+                    UpdateAction (browser_actions["BrowserVisibleAction"], has_browser);
+                }
+
                 last_source = source;
             }
             

Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs	(original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs	Sun Jul 27 20:19:48 2008
@@ -118,7 +118,7 @@
         {
             ITrackModelSource track_source = source as ITrackModelSource;
             IFilterableSource filterable_source = source as IFilterableSource;
-            if (track_source == null || filterable_source == null) {
+            if (track_source == null) {
                 return false;
             }
             
@@ -126,7 +126,7 @@
             
             SetModel (track_view, track_source.TrackModel);
             
-            if (filterable_source.CurrentFilters != null) {
+            if (filterable_source != null && filterable_source.CurrentFilters != null) {
                 foreach (IListModel model in filterable_source.CurrentFilters) {
                     if (model is IListModel<ArtistInfo>)
                         SetModel (artist_view, (model as IListModel<ArtistInfo>));



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