banshee r3992 - in trunk/banshee: . src/Core/Banshee.Services/Banshee.Collection.Database src/Core/Banshee.Services/Banshee.Sources src/Core/Banshee.ThickClient/Banshee.Gui src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea src/Libraries/Hyena.Gui/Hyena.Widgets



Author: gburt
Date: Wed May 28 00:08:03 2008
New Revision: 3992
URL: http://svn.gnome.org/viewvc/banshee?rev=3992&view=rev

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

	* src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs:
	* src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs:
	* src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs:
	* src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs:
	* src/Libraries/Hyena.Gui/Hyena.Widgets/RatingMenuItem.cs: Fix bug with
	not saving the rating when set from either the context menu or the
	notification menu.


Modified:
   trunk/banshee/ChangeLog
   trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs
   trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs
   trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs
   trunk/banshee/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs
   trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Widgets/RatingMenuItem.cs

Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs	Wed May 28 00:08:03 2008
@@ -160,6 +160,11 @@
         {
             Provider.Save (this);
         }
+
+        public void Refresh ()
+        {
+            ProviderRefresh ();
+        }
         
         protected virtual bool ProviderRefresh ()
         {

Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs	Wed May 28 00:08:03 2008
@@ -301,6 +301,13 @@
                 }
             }
             OnTracksChanged (BansheeQuery.RatingField);
+
+            // In case we updated the currently playing track
+            DatabaseTrackInfo track = ServiceManager.PlayerEngine.CurrentTrack as DatabaseTrackInfo;
+            if (track != null) {
+                track.Refresh ();
+                ServiceManager.PlayerEngine.TrackInfoUpdated ();
+            }
         }
 
         public override SourceMergeType SupportedMergeTypes {

Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs	(original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs	Wed May 28 00:08:03 2008
@@ -380,14 +380,6 @@
 
         private void OnRateTracks (object o, EventArgs args)
         {
-            foreach (Widget proxy in (o as Gtk.Action).Proxies) {
-                Menu menu = proxy.Parent as Menu;
-                if (menu != null && menu.Visible) {
-                    menu.Popdown ();
-                    menu.Hide ();
-                }
-            }
-
             ThreadAssist.SpawnFromMain (delegate {
                 (ActiveSource as DatabaseSource).RateSelectedTracks (rating_proxy.LastRating);
             });

Modified: trunk/banshee/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs	(original)
+++ trunk/banshee/src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs	Wed May 28 00:08:03 2008
@@ -150,7 +150,7 @@
                     }
                     
                     rating_menu_item = new RatingMenuItem ();
-                    rating_menu_item.Activated += OnItemRatingActivated;
+                    rating_menu_item.Activated += OnRatingChanged;
                     ToggleRatingMenuSensitive ();
                     menu.Insert (rating_menu_item, i + 2);
                     break;
@@ -275,6 +275,13 @@
         
         private void OnNotificationAreaPopupMenuEvent (object o, PopupMenuArgs args)
         {
+            if (rating_menu_item.Visible) {
+                TrackInfo track = ServiceManager.PlayerEngine.CurrentTrack;
+                if (track is DatabaseTrackInfo) {
+                    (track as DatabaseTrackInfo).Refresh ();
+                }
+                rating_menu_item.Reset (track.Rating);
+            }
             menu.Popup (null, null, notif_area.PositionMenu, 3, Gtk.Global.CurrentEventTime);
         }
         
@@ -332,11 +339,11 @@
             notif_area.OnPlayerEvent (args);
         }
         
-        private void OnItemRatingActivated (object o, EventArgs args)
+        private void OnRatingChanged (object o, EventArgs args)
         {
             if (ServiceManager.PlayerEngine.CurrentTrack != null) {
                 ServiceManager.PlayerEngine.CurrentTrack.Rating = rating_menu_item.Value;
-                ServiceManager.PlayerEngine.CurrentTrack.Save ();
+                ServiceManager.PlayerEngine.CurrentTrack.Save (); //true, Banshee.Query.BansheeQuery.RatingField);
                 ServiceManager.PlayerEngine.TrackInfoUpdated ();
             }
         }
@@ -344,7 +351,6 @@
         private void ToggleRatingMenuSensitive () 
         {
             if (ServiceManager.PlayerEngine.CurrentTrack is DatabaseTrackInfo) {
-                rating_menu_item.Reset ((int)ServiceManager.PlayerEngine.CurrentTrack.Rating);
                 rating_menu_item.Show ();
             } else {
                 rating_menu_item.Hide ();

Modified: trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Widgets/RatingMenuItem.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Widgets/RatingMenuItem.cs	(original)
+++ trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Widgets/RatingMenuItem.cs	Wed May 28 00:08:03 2008
@@ -119,7 +119,7 @@
             // value is set, or keeping it up; I like it staying up --Aaron
             //
             if (can_activate) {
-            //    Activate ();
+                Activate ();
             }
         }
         



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