[banshee] Refactor choosers, add ImportLabel to importers



commit 4a6638e4eef5112bc96f4e81ba87a57242038070
Author: Gabriel Burt <gabriel burt gmail com>
Date:   Wed Sep 30 17:38:37 2009 -0700

    Refactor choosers, add ImportLabel to importers
    
    Add factory method to generate import file/folder choosers, and add
    ImportLabel strings to all importers for use by the import dialog.

 .../Banshee.Library/HomeDirectoryImportSource.cs   |    2 +
 .../Banshee.Library/IImportSource.cs               |    1 +
 .../Banshee.Library/ThreadPoolImportSource.cs      |    2 +
 .../Banshee.Gui.Dialogs/FileChooserDialog.cs       |   25 +++++++++++++++++
 .../Banshee.Gui/GlobalActions.cs                   |   19 +-----------
 .../Banshee.Library.Gui/FileImportSource.cs        |   29 ++++++-------------
 .../Banshee.Library.Gui/FolderImportSource.cs      |   15 +++-------
 .../Banshee.Library.Gui/PhotoFolderImportSource.cs |    2 +
 src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs |    4 +++
 .../Banshee.AudioCd/AudioCdSource.cs               |    4 +++
 .../Banshee.Daap/Banshee.Daap/DaapSource.cs        |    4 +++
 11 files changed, 60 insertions(+), 47 deletions(-)
---
diff --git a/src/Core/Banshee.Services/Banshee.Library/HomeDirectoryImportSource.cs b/src/Core/Banshee.Services/Banshee.Library/HomeDirectoryImportSource.cs
index c0a89e0..1237be5 100644
--- a/src/Core/Banshee.Services/Banshee.Library/HomeDirectoryImportSource.cs
+++ b/src/Core/Banshee.Services/Banshee.Library/HomeDirectoryImportSource.cs
@@ -47,6 +47,8 @@ namespace Banshee.Library
         public string Name {
             get { return Catalog.GetString ("Home Directory"); }
         }
+
+        public string ImportLabel { get { return null; } }
         
         public string [] IconNames {
             get { return new string [] { "user-home", "gtk-home" }; }
diff --git a/src/Core/Banshee.Services/Banshee.Library/IImportSource.cs b/src/Core/Banshee.Services/Banshee.Library/IImportSource.cs
index bef7eaa..dfec9f4 100644
--- a/src/Core/Banshee.Services/Banshee.Library/IImportSource.cs
+++ b/src/Core/Banshee.Services/Banshee.Library/IImportSource.cs
@@ -34,6 +34,7 @@ namespace Banshee.Library
     {
         void Import ();
         string Name { get; }
+        string ImportLabel { get; }
         string [] IconNames { get; }
         bool CanImport { get; }
         int SortOrder { get; }
diff --git a/src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs b/src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs
index bc085f1..68ed824 100644
--- a/src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs
+++ b/src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs
@@ -129,6 +129,8 @@ namespace Banshee.Library
         
         public abstract string Name { get; }
 
+        public virtual string ImportLabel { get { return null; } }
+
         public abstract string[] IconNames { get; }
         
         public abstract int SortOrder { get; }
diff --git a/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/FileChooserDialog.cs b/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/FileChooserDialog.cs
index 4019d3c..043f781 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/FileChooserDialog.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/FileChooserDialog.cs
@@ -30,11 +30,35 @@ using System;
 using Gtk;
 
 using Banshee.Configuration;
+using Banshee.ServiceStack;
 
 namespace Banshee.Gui.Dialogs
 {
     public class FileChooserDialog : Gtk.FileChooserDialog
     {
+        public static FileChooserDialog CreateForImport (string title, bool files)
+        {
+            var chooser = new Banshee.Gui.Dialogs.FileChooserDialog (
+                title,
+                ServiceManager.Get<Banshee.Gui.GtkElementsService> ().PrimaryWindow,
+                files ? FileChooserAction.Open : FileChooserAction.SelectFolder
+            );
+
+            chooser.DefaultResponse = ResponseType.Ok;
+            chooser.SelectMultiple = true;
+
+            chooser.AddButton (Stock.Cancel, ResponseType.Cancel);
+            // Translators: verb
+            chooser.AddButton (Mono.Unix.Catalog.GetString("I_mport"), ResponseType.Ok);
+
+            Hyena.Gui.GtkUtilities.SetChooserShortcuts (chooser,
+                ServiceManager.SourceManager.MusicLibrary.BaseDirectory,
+                ServiceManager.SourceManager.VideoLibrary.BaseDirectory
+            );
+
+            return chooser;
+        }
+
         public FileChooserDialog (string title, FileChooserAction action) : this (title, null, action)
         {            
         }
@@ -43,6 +67,7 @@ namespace Banshee.Gui.Dialogs
             base (title, parent, action)
         {
             SetCurrentFolderUri (LastFileChooserUri.Get (Environment.GetFolderPath (Environment.SpecialFolder.Personal)));
+            WindowPosition = WindowPosition.Center;
         }
         
         protected override void OnResponse (ResponseType response)
diff --git a/src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs b/src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs
index e314690..734fd45 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs
@@ -159,24 +159,9 @@ namespace Banshee.Gui
         private void OnImportPlaylist (object o, EventArgs args)
         {
             // Prompt user for location of the playlist.
-            Banshee.Gui.Dialogs.FileChooserDialog chooser = new Banshee.Gui.Dialogs.FileChooserDialog (
-                Catalog.GetString("Import Playlist"),
-                PrimaryWindow,
-                FileChooserAction.Open
-            );
-                         
-            chooser.DefaultResponse = ResponseType.Ok;
-            chooser.SelectMultiple = true;
+            var chooser = Banshee.Gui.Dialogs.FileChooserDialog.CreateForImport (Catalog.GetString("Import Playlist"), true);
             chooser.AddFilter (Hyena.Gui.GtkUtilities.GetFileFilter (Catalog.GetString ("Playlists"), PlaylistFileUtil.PlaylistExtensions));
-            // TODO library-location add the BaseDirectory for the library being imported to (or all of them)
-            /*try {
-                chooser.AddShortcutFolder (Paths.LibraryLocation);
-            } catch {}*/
-
-            chooser.AddButton (Stock.Cancel, ResponseType.Cancel);
-            // Translators: verb
-            chooser.AddButton (Catalog.GetString("I_mport"), ResponseType.Ok);
-            
+
             int response = chooser.Run();            
 
             string [] uris = null;
diff --git a/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FileImportSource.cs b/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FileImportSource.cs
index 868968c..fdfa40a 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FileImportSource.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FileImportSource.cs
@@ -42,18 +42,11 @@ namespace Banshee.Library.Gui
     
         public void Import()
         {
-            Banshee.Gui.Dialogs.FileChooserDialog chooser = new Banshee.Gui.Dialogs.FileChooserDialog (
-                Catalog.GetString ("Import Files to Library"),
-                FileChooserAction.Open
-            );
-            
-            chooser.AddButton (Stock.Cancel, ResponseType.Cancel);
-            chooser.AddButton (Stock.Open, ResponseType.Ok);
-            chooser.AddFilter (Hyena.Gui.GtkUtilities.GetFileFilter (Catalog.GetString ("Media Files"), Banshee.Collection.Database.DatabaseImportManager.WhiteListFileExtensions.List));
-            chooser.SelectMultiple = true;
-            chooser.DefaultResponse = ResponseType.Ok;
-            
-            SetChooserShortcuts (chooser);
+            var chooser = Banshee.Gui.Dialogs.FileChooserDialog.CreateForImport (Catalog.GetString ("Import Files to Library"), true);
+
+            chooser.AddFilter (Hyena.Gui.GtkUtilities.GetFileFilter (
+                Catalog.GetString ("Media Files"),
+                Banshee.Collection.Database.DatabaseImportManager.WhiteListFileExtensions.List));
             
             if (chooser.Run () == (int)ResponseType.Ok) {
                 Banshee.ServiceStack.ServiceManager.Get<LibraryImportManager> ().Enqueue (chooser.Uris);
@@ -65,6 +58,10 @@ namespace Banshee.Library.Gui
         public string Name {
             get { return Catalog.GetString ("Local Files"); }
         }
+
+        public string ImportLabel {
+            get { return Catalog.GetString ("Choose Files"); }
+        }
         
         public string [] IconNames {
             get { return new string [] { "gtk-open" }; }
@@ -78,14 +75,6 @@ namespace Banshee.Library.Gui
             get { return 5; }
         }
         
-        public static void SetChooserShortcuts (Gtk.FileChooserDialog chooser)
-        {
-            Hyena.Gui.GtkUtilities.SetChooserShortcuts (chooser,
-                ServiceManager.SourceManager.MusicLibrary.BaseDirectory,
-                ServiceManager.SourceManager.VideoLibrary.BaseDirectory
-            );
-        }
-
         // Reserve strings in preparation for the forthcoming string freeze.
         public void ReservedStrings ()
         {
diff --git a/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FolderImportSource.cs b/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FolderImportSource.cs
index c734f2a..266e78f 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FolderImportSource.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FolderImportSource.cs
@@ -40,16 +40,7 @@ namespace Banshee.Library.Gui
     
         public void Import()
         {
-            Banshee.Gui.Dialogs.FileChooserDialog chooser = new Banshee.Gui.Dialogs.FileChooserDialog (
-                Catalog.GetString ("Import Folders to Library"),
-                FileChooserAction.SelectFolder
-            );
-            
-            chooser.AddButton (Stock.Cancel, ResponseType.Cancel);
-            chooser.AddButton (Stock.Open, ResponseType.Ok);
-            chooser.SelectMultiple = true;
-            chooser.DefaultResponse = ResponseType.Ok;
-            FileImportSource.SetChooserShortcuts (chooser);
+            var chooser = Banshee.Gui.Dialogs.FileChooserDialog.CreateForImport (Catalog.GetString ("Import Folders to Library"), false);
             
             if (chooser.Run () == (int)ResponseType.Ok) {
                 Banshee.ServiceStack.ServiceManager.Get<LibraryImportManager> ().Enqueue (chooser.Uris);
@@ -61,6 +52,10 @@ namespace Banshee.Library.Gui
         public string Name {
             get { return Catalog.GetString ("Local Folders"); }
         }
+
+        public string ImportLabel {
+            get { return Catalog.GetString ("Choose Folders"); }
+        }
         
         public string [] IconNames {
             get { return new string [] { "gtk-open" }; }
diff --git a/src/Core/Banshee.ThickClient/Banshee.Library.Gui/PhotoFolderImportSource.cs b/src/Core/Banshee.ThickClient/Banshee.Library.Gui/PhotoFolderImportSource.cs
index 31249df..1f9e8b6 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Library.Gui/PhotoFolderImportSource.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Library.Gui/PhotoFolderImportSource.cs
@@ -66,6 +66,8 @@ namespace Banshee.Library.Gui
         public string Name {
             get { return Catalog.GetString ("Videos from Photos Folder"); }
         }
+
+        public string ImportLabel { get { return null; } }
         
         public string [] IconNames {
             get { return new string [] { "gtk-open" }; }
diff --git a/src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs b/src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs
index 2cb1cb8..a6193ec 100644
--- a/src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs
+++ b/src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs
@@ -87,6 +87,10 @@ namespace Banshee.Dap
         public virtual bool CanImport {
             get { return true; }
         }
+
+        string IImportSource.ImportLabel {
+            get { return null; }
+        }
         
         int IImportSource.SortOrder {
             get { return 20; }
diff --git a/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs b/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs
index fdbab2c..539c962 100644
--- a/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs
+++ b/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs
@@ -478,6 +478,10 @@ namespace Banshee.AudioCd
         int IImportSource.SortOrder {
             get { return -10; }
         }
+
+        string IImportSource.ImportLabel {
+            get { return null; }
+        }
         
 #endregion
 
diff --git a/src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs b/src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs
index 0830a23..62d6078 100644
--- a/src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs
+++ b/src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs
@@ -353,6 +353,10 @@ namespace Banshee.Daap
         int IImportSource.SortOrder {
             get { return 30; }
         }
+
+        string IImportSource.ImportLabel {
+            get { return null; }
+        }
         
         public string [] IconNames {
             get { return Properties.GetStringList ("Icon.Name"); }



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