Author: gburt Date: Tue Feb 12 04:27:01 2008 New Revision: 3230 URL: http://svn.gnome.org/viewvc/banshee?rev=3230&view=rev
Log: 2008-02-11 Gabriel Burt <[EMAIL PROTECTED]> * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Remove debugging WriteLines. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Add CanRefresh property that is true if ordered by random. * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Add RefreshSmartPlaylist action to the source toolbar and context menu. * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Fix whitespace, add and handle RefreshSmartPlaylist action. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm/Plugin.cs: Get rid of old PluginModuleEntry. Modified: trunk/banshee/ChangeLog trunk/banshee/src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs trunk/banshee/src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs trunk/banshee/src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/Plugin.cs Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs ============================================================================== --- trunk/banshee/src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs (original) +++ trunk/banshee/src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs Tue Feb 12 04:27:01 2008 @@ -42,8 +42,11 @@ { private static bool asc = true; private static bool desc = false; + + public static QueryOrder RandomOrder = CreateQueryOrder ("Random", asc, Catalog.GetString ("Random")); + public static QueryOrder [] Orders = new QueryOrder [] { - CreateQueryOrder ("Random", asc, Catalog.GetString ("Random")), + RandomOrder, CreateQueryOrder ("Album", asc, Catalog.GetString ("Album")), CreateQueryOrder ("Artist", asc, Catalog.GetString ("Artist")), CreateQueryOrder ("Title", asc, Catalog.GetString ("Title")), @@ -271,7 +274,6 @@ public static QueryOrder FindOrder (string name) { - Console.WriteLine ("# ordres = {0}", Orders.Length); foreach (QueryOrder order in Orders) { if (order != null && order.Name == name) { return order; Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs ============================================================================== --- trunk/banshee/src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs (original) +++ trunk/banshee/src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs Tue Feb 12 04:27:01 2008 @@ -180,8 +180,6 @@ LimitValue = new IntegerQueryValue (); LimitValue.ParseUserQuery (limit_number); - Console.WriteLine ("limit = {0}, order = {1}, val = {2}, valisempty? {3}", Limit, QueryOrder, LimitValue, LimitValue.IsEmpty); - DbId = dbid; InstallProperties (); @@ -262,17 +260,6 @@ "DELETE FROM CoreSmartPlaylistEntries WHERE SmartPlaylistID = {0}", DbId )); - Console.WriteLine ("limited? {0}", IsLimited); - - Console.WriteLine (String.Format ( - @"INSERT INTO CoreSmartPlaylistEntries - SELECT {0} as SmartPlaylistID, TrackId - FROM CoreTracks, CoreArtists, CoreAlbums - WHERE CoreTracks.ArtistID = CoreArtists.ArtistID AND CoreTracks.AlbumID = CoreAlbums.AlbumID - {1} {2}", - DbId, PrependCondition("AND"), OrderAndLimit - )); - // Repopulate it ServiceManager.DbConnection.Execute (String.Format ( @"INSERT INTO CoreSmartPlaylistEntries @@ -314,6 +301,10 @@ get { return true; } } + public bool CanRefresh { + get { return QueryOrder == BansheeQuery.RandomOrder; } + } + #endregion private string PrependCondition (string with) 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 Tue Feb 12 04:27:01 2008 @@ -60,9 +60,9 @@ action_service = actionService; Add (new ActionEntry [] { - new ActionEntry("NewPlaylistAction", Stock.New, - Catalog.GetString("_New Playlist"), "<control>N", - Catalog.GetString("Create a new empty playlist"), OnNewPlaylist), + new ActionEntry ("NewPlaylistAction", Stock.New, + Catalog.GetString ("_New Playlist"), "<control>N", + Catalog.GetString ("Create a new empty playlist"), OnNewPlaylist), new ActionEntry ("NewSmartPlaylistAction", null, Catalog.GetString ("New _Smart Playlist"), null, @@ -72,22 +72,29 @@ Catalog.GetString ("New _Smart Playlist _From Search"), null, Catalog.GetString ("Create a new smart playlist from the current search"), OnNewSmartPlaylistFromSearch), - new ActionEntry("SourceContextMenuAction", null, + new ActionEntry ("SourceContextMenuAction", null, String.Empty, null, null, OnSourceContextMenu), - new ActionEntry("ImportSourceAction", null, - Catalog.GetString("Import Source"), null, - Catalog.GetString("Import source to library"), OnImportSource), + new ActionEntry ("ImportSourceAction", null, + Catalog.GetString ("Import Source"), null, + Catalog.GetString ("Import source to library"), OnImportSource), - new ActionEntry("RenameSourceAction", "gtk-edit", + new ActionEntry ("RenameSourceAction", "gtk-edit", "Rename", "F2", "Rename", OnRenameSource), - new ActionEntry("UnmapSourceAction", Stock.Delete, + + new ActionEntry ("UnmapSourceAction", Stock.Delete, "Unmap", "<shift>Delete", null, OnUnmapSource), - new ActionEntry("SourcePropertiesAction", Stock.Properties, + new ActionEntry ("SourcePropertiesAction", Stock.Properties, "Source Properties", null, null, OnSourceProperties), }); + + AddImportant ( + new ActionEntry ("RefreshSmartPlaylistAction", Stock.Refresh, + Catalog.GetString ("Refresh"), null, + Catalog.GetString ("Refresh this randomly sorted smart playlist"), OnRefreshSmartPlaylist) + ); Add (new Gtk.ActionEntry [] { new Gtk.ActionEntry ("SortChildrenAction", null, @@ -140,34 +147,20 @@ playlist.Save (); ServiceManager.SourceManager.DefaultSource.AddChildSource (playlist); playlist.NotifyUpdated (); - - // TODO should begin editing the name after making it, but this changed - // the ActiveSource to the new playlist and we don't want that. - //SourceView.BeginRenameSource (playlist); } private void OnNewSmartPlaylist (object o, EventArgs args) { Editor ed = new Editor (); ed.RunDialog (); - - /*Editor ed = new Editor (); - ed.SetQueryFromSearch (); - ed.RunDialog ();*/ - - // TODO should begin editing the name after making it, but this changed - // the ActiveSource to the new playlist and we don't want that. - //SourceView.BeginRenameSource (playlist); + //playlist.NotifyUpdated (); } private void OnNewSmartPlaylistFromSearch (object o, EventArgs args) { - //Editor ed = new Editor (); - //ed.RunDialog (); - - /*Editor ed = new Editor (); - ed.SetQueryFromSearch (); - ed.RunDialog ();*/ + // TODO create playlist and save it + + //playlist.NotifyUpdated (); // TODO should begin editing the name after making it, but this changed // the ActiveSource to the new playlist and we don't want that. @@ -208,6 +201,15 @@ source.Unmap (); } + private void OnRefreshSmartPlaylist (object o, EventArgs args) + { + SmartPlaylistSource playlist = ActionSource as SmartPlaylistSource; + + if (playlist != null && playlist.CanRefresh) { + playlist.Reload (); + } + } + private void OnSourceProperties (object o, EventArgs args) { Source source = ActionSource; @@ -228,10 +230,12 @@ if (source != last_source && source != null) { IUnmapableSource unmapable = source as IUnmapableSource; + SmartPlaylistSource smart_playlist = source as SmartPlaylistSource; UpdateAction ("UnmapSourceAction", unmapable != null, unmapable != null && unmapable.CanUnmap, source); UpdateAction ("RenameSourceAction", source.CanRename, true, null); UpdateAction ("ImportSourceAction", source is IImportable, true, source); UpdateAction ("SourcePropertiesAction", source.HasProperties, true, source); + UpdateAction ("RefreshSmartPlaylistAction", smart_playlist != null && smart_playlist.CanRefresh, true, source); last_source = source; } @@ -240,46 +244,46 @@ } } - private static bool ConfirmUnmap(IUnmapableSource source) + private static bool ConfirmUnmap (IUnmapableSource source) { - string key = "no_confirm_unmap_" + source.GetType().Name.ToLower(); - bool do_not_ask = ConfigurationClient.Get<bool>("sources", key, false); + string key = "no_confirm_unmap_" + source.GetType ().Name.ToLower (); + bool do_not_ask = ConfigurationClient.Get<bool> ("sources", key, false); - if(do_not_ask) { + if (do_not_ask) { return true; } - Banshee.Widgets.HigMessageDialog dialog = new Banshee.Widgets.HigMessageDialog( + Banshee.Widgets.HigMessageDialog dialog = new Banshee.Widgets.HigMessageDialog ( ServiceManager.Get<GtkElementsService> ("GtkElementsService").PrimaryWindow, Gtk.DialogFlags.Modal, Gtk.MessageType.Question, Gtk.ButtonsType.Cancel, - String.Format(Catalog.GetString("Are you sure you want to delete this {0}?"), - source.GenericName.ToLower()), + String.Format (Catalog.GetString ("Are you sure you want to delete this {0}?"), + source.GenericName.ToLower ()), source.Name); - dialog.AddButton(Gtk.Stock.Delete, Gtk.ResponseType.Ok, false); + dialog.AddButton (Gtk.Stock.Delete, Gtk.ResponseType.Ok, false); - Gtk.Alignment alignment = new Gtk.Alignment(0.0f, 0.0f, 0.0f, 0.0f); + Gtk.Alignment alignment = new Gtk.Alignment (0.0f, 0.0f, 0.0f, 0.0f); alignment.TopPadding = 10; - Gtk.CheckButton confirm_button = new Gtk.CheckButton(String.Format(Catalog.GetString( - "Do not ask me this again"), source.GenericName.ToLower())); + Gtk.CheckButton confirm_button = new Gtk.CheckButton (String.Format (Catalog.GetString ( + "Do not ask me this again"), source.GenericName.ToLower ())); confirm_button.Toggled += delegate { do_not_ask = confirm_button.Active; }; - alignment.Add(confirm_button); - alignment.ShowAll(); - dialog.LabelVBox.PackStart(alignment, false, false, 0); + alignment.Add (confirm_button); + alignment.ShowAll (); + dialog.LabelVBox.PackStart (alignment, false, false, 0); try { - if(dialog.Run() == (int)Gtk.ResponseType.Ok) { - ConfigurationClient.Set<bool>("sources", key, do_not_ask); + if (dialog.Run () == (int)Gtk.ResponseType.Ok) { + ConfigurationClient.Set<bool> ("sources", key, do_not_ask); return true; } return false; } finally { - dialog.Destroy(); + dialog.Destroy (); } } Modified: trunk/banshee/src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml ============================================================================== --- trunk/banshee/src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml (original) +++ trunk/banshee/src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml Tue Feb 12 04:27:01 2008 @@ -5,7 +5,9 @@ <toolitem action="NextAction"/> <placeholder name="SeekSlider"/> <placeholder name="TrackInfoDisplay"/> - <placeholder name="SourceActions"/> + <placeholder name="SourceActions"> + <toolitem name="RefreshSmartPlaylist" action="RefreshSmartPlaylistAction"/> + </placeholder> <placeholder name="VolumeButton"/> </toolbar> @@ -104,6 +106,7 @@ <menuitem name="ImportSource" action="ImportSourceAction"/> <separator/> <menuitem name="RenameSource" action="RenameSourceAction"/> + <menuitem name="RefreshSmartPlaylist" action="RefreshSmartPlaylistAction"/> <menuitem name="UnmapSource" action="UnmapSourceAction"/> <!--<menuitem name="ExportPlaylist" action="ExportPlaylistAction"/>--> <!--<menuitem name="SyncDap" action="SyncDapAction"/>--> Modified: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/Plugin.cs ============================================================================== --- trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/Plugin.cs (original) +++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/Plugin.cs Tue Feb 12 04:27:01 2008 @@ -40,16 +40,6 @@ using Banshee.Database; using Banshee.Configuration; -public static class PluginModuleEntry -{ - public static Type [] GetTypes () - { - return new Type [] { - typeof (Banshee.Plugins.LastFM.LastFMPlugin) - }; - } -} - namespace Banshee.Lastfm { public class LastFMPlugin : Banshee.Plugins.Plugin @@ -65,7 +55,12 @@ private static LastFMPlugin instance = null; public static LastFMPlugin Instance { - get { return instance; } + get { + if (instance == null) { + instance = new LastfmPlugin (); + } + return instance; + } } protected override string ConfigurationName { @@ -86,8 +81,6 @@ protected override void PluginInitialize () { - instance = this; - // We don't automatically connect to Last.fm, but load the last Last.fm // username we used so we can load the user's stations. string last_user = LastUserSchema.Get (); _______________________________________________ SVN-commits-list mailing list (read only) http://mail.gnome.org/mailman/listinfo/svn-commits-list Want to limit the commits to a few modules? Go to above URL, log in to edit your options and select the modules ('topics') you want. Module maintainer? It is possible to set the reply-to to your development mailing list. Email [EMAIL PROTECTED] if interested.