[banshee] [PlayQueue] New "Add tracks" button for adding more random tracks



commit b24c91526da356729ea455c8db5d2150c8873c90
Author: Sandy Armstrong <sanfordarmstrong gmail com>
Date:   Mon Sep 14 09:54:35 2009 -0700

    [PlayQueue] New "Add tracks"  button for adding more random tracks
    
    When pressed, add upcoming_songs_number more tracks to the play queue
    according to the Auto DJ algorithm. Does not change upcoming_songs_number.

 .../Banshee.PlayQueue/PlayQueueActions.cs          |   15 ++++++++++++++-
 .../Banshee.PlayQueue/PlayQueueSource.cs           |    8 ++++++++
 .../Banshee.PlayQueue/Resources/ActiveSourceUI.xml |    1 +
 .../Banshee.PlayQueue/Resources/GlobalUI.xml       |    1 +
 4 files changed, 24 insertions(+), 1 deletions(-)
---
diff --git a/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueActions.cs b/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueActions.cs
index 8c6318d..cac9f62 100644
--- a/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueActions.cs
+++ b/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueActions.cs
@@ -50,7 +50,7 @@ namespace Banshee.PlayQueue
                     Catalog.GetString ("Append selected songs to the play queue"),
                     OnAddToPlayQueue)
             });
-            
+
             AddImportant (
                 new ActionEntry ("RefreshPlayQueueAction", Stock.Refresh,
                     Catalog.GetString ("Refresh"), null,
@@ -59,6 +59,13 @@ namespace Banshee.PlayQueue
             );
 
             AddImportant (
+                new ActionEntry ("AddPlayQueueTracksAction", Stock.Add,
+                    Catalog.GetString ("Add More"), null,
+                    Catalog.GetString ("Add more random tracks to the play queue"),
+                    OnAddPlayQueueTracks)
+            );
+
+            AddImportant (
                 new ActionEntry ("ClearPlayQueueAction", Stock.Clear,
                     Catalog.GetString ("Clear"), null,
                     Catalog.GetString ("Remove all tracks from the play queue"),
@@ -106,6 +113,11 @@ namespace Banshee.PlayQueue
             playqueue.Refresh ();
         }
 
+        private void OnAddPlayQueueTracks (object o, EventArgs args)
+        {
+            playqueue.AddMoreRandomTracks ();
+        }
+
         private void OnClearPlayQueueOnQuit (object o, EventArgs args)
         {
             ToggleAction action = this["ClearPlayQueueOnQuitAction"] as Gtk.ToggleAction;
@@ -130,6 +142,7 @@ namespace Banshee.PlayQueue
             if (source != null) {
                 DatabaseSource db_source = source as DatabaseSource ?? source.Parent as DatabaseSource;
                 UpdateAction ("RefreshPlayQueueAction", playqueue.Populate);
+                UpdateAction ("AddPlayQueueTracksAction", playqueue.Populate);
                 UpdateAction ("ClearPlayQueueAction", !playqueue.Populate, playqueue.Count > 0);
                 UpdateAction ("ClearPlayQueueOnQuitAction", !playqueue.Populate);
                 UpdateAction ("AddToPlayQueueAction", db_source != null && db_source != playqueue, true);
diff --git a/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs b/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs
index b38beb9..6d3cc74 100644
--- a/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs
+++ b/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs
@@ -668,6 +668,14 @@ namespace Banshee.PlayQueue
             }
         }
 
+        public void AddMoreRandomTracks ()
+        {
+            int current_fill = current_track == null ? 0 : Count - TrackModel.IndexOf (current_track) - 1;
+            upcoming_songs_number += current_fill;
+            UpdatePlayQueue ();
+            upcoming_songs_number -= current_fill;
+        }
+
         private void OnTrackStarted(object sender, EventArgs e)
         {
             SetAsPlaybackSourceUnlessPlaying ();
diff --git a/src/Extensions/Banshee.PlayQueue/Resources/ActiveSourceUI.xml b/src/Extensions/Banshee.PlayQueue/Resources/ActiveSourceUI.xml
index 74bdd6f..e008c44 100644
--- a/src/Extensions/Banshee.PlayQueue/Resources/ActiveSourceUI.xml
+++ b/src/Extensions/Banshee.PlayQueue/Resources/ActiveSourceUI.xml
@@ -2,6 +2,7 @@
     <toolbar name="HeaderToolbar">
         <placeholder name="SourceActions">
             <toolitem action="RefreshPlayQueueAction" />
+            <toolitem action="AddPlayQueueTracksAction" />
             <toolitem action="ClearPlayQueueAction" />
         </placeholder>
     </toolbar>
diff --git a/src/Extensions/Banshee.PlayQueue/Resources/GlobalUI.xml b/src/Extensions/Banshee.PlayQueue/Resources/GlobalUI.xml
index eb95674..676fdd5 100644
--- a/src/Extensions/Banshee.PlayQueue/Resources/GlobalUI.xml
+++ b/src/Extensions/Banshee.PlayQueue/Resources/GlobalUI.xml
@@ -3,6 +3,7 @@
         <menuitem action="RefreshPlayQueueAction"></menuitem>
         <menuitem action="ClearPlayQueueAction"></menuitem>
         <menuitem action="ClearPlayQueueOnQuitAction"></menuitem>
+        <menuitem action="AddPlayQueueTracksAction"></menuitem>
         <menuitem name="SourcePreferences" action="SourcePreferencesAction"/>
     </popup>
     <popup name="TrackContextMenu" action="TrackContextMenuAction">



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