banshee r4458 - in trunk/banshee: . src/Backends/Banshee.GStreamer/Banshee.GStreamer src/Core/Banshee.Core/Banshee.Collection src/Core/Banshee.Services/Banshee.Collection.Database src/Core/Banshee.Services/Banshee.MediaEngine src/Core/Banshee.Services/Banshee.Streaming src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod



Author: gburt
Date: Wed Sep  3 23:23:50 2008
New Revision: 4458
URL: http://svn.gnome.org/viewvc/banshee?rev=4458&view=rev

Log:
2008-09-03  Gabriel Burt  <gabriel burt gmail com>

	* src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: Add a bunch of
	properties (model, color, firmware, etc) to the properties dialog.  When
	loading tracks, don't fail entirely if there is an exception on one.
	Improve how/when the name is retrieved off the device, and set as
	Activatable so the new Sync UI is visible.

	* src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs:
	Don't automatically save in the PlaybackError setter (BGO #539696).

	* src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Add a
	SavePlaybackError method that sets it and then saves it.

	* src/Core/Banshee.Services/Banshee.Streaming/RadioTrackInfo.cs:
	* src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs:
	* src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs: Use
	the new SavePlaybackError method.

	* configure.ac: Remove remote audio/moonlight from the echo since they're
	not yet finished/usable.



Modified:
   trunk/banshee/ChangeLog
   trunk/banshee/configure.ac
   trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
   trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
   trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs
   trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
   trunk/banshee/src/Core/Banshee.Services/Banshee.Streaming/RadioTrackInfo.cs
   trunk/banshee/src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs

Modified: trunk/banshee/configure.ac
==============================================================================
--- trunk/banshee/configure.ac	(original)
+++ trunk/banshee/configure.ac	Wed Sep  3 23:23:50 2008
@@ -215,16 +215,16 @@
       Karma:           ${enable_karmasharp}
 
     DAAP Support:      ${enable_daap}
-    Remote Audio:      ${enable_remote_audio}
     Podcast Support:   ${enable_podcast}
     Boo Scripting:     ${enable_boo}
     X11 Video Support: ${have_xvidmode}
-    Moonlight Effects: ${enable_moonlight}
 
     Unit Tests:        ${do_tests}	(requires nunit >= ${NUNIT_REQUIRED})
 "
 
 #    Unfinished, unstable, under development components:
+#    Moonlight Effects: ${enable_moonlight}
+#    Remote Audio:      ${enable_remote_audio}
 #      MediaWeb:        ${enable_mediaweb}
 #      Torrent Podcasts:${enable_torrent}
 

Modified: trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
==============================================================================
--- trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs	(original)
+++ trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs	Wed Sep  3 23:23:50 2008
@@ -264,7 +264,7 @@
                 if (CurrentTrack != null) {
                     switch (domain_code) {
                         case GstResourceError.NotFound:
-                            CurrentTrack.PlaybackError = StreamPlaybackError.ResourceNotFound;
+                            CurrentTrack.SavePlaybackError (StreamPlaybackError.ResourceNotFound);
                             break;
                         default:
                             break;
@@ -277,7 +277,7 @@
                 if (CurrentTrack != null) {
                     switch (domain_code) {
                         case GstStreamError.CodecNotFound:
-                            CurrentTrack.PlaybackError = StreamPlaybackError.CodecNotFound;
+                            CurrentTrack.SavePlaybackError (StreamPlaybackError.CodecNotFound);
                             break;
                         default:
                             break;
@@ -290,7 +290,7 @@
                 if (CurrentTrack != null) {
                     switch (domain_code) {
                         case GstCoreError.MissingPlugin:
-                            CurrentTrack.PlaybackError = StreamPlaybackError.CodecNotFound;
+                            CurrentTrack.SavePlaybackError (StreamPlaybackError.CodecNotFound);
                             break;
                         default:
                             break;

Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs	Wed Sep  3 23:23:50 2008
@@ -387,6 +387,14 @@
             set { playback_error = value; }
         }
 
+        public void SavePlaybackError (StreamPlaybackError value)
+        {
+            if (PlaybackError != value) {
+                PlaybackError = value;
+                Save ();
+            }
+        }
+
         private bool can_save_to_database = true;
         public bool CanSaveToDatabase {
             get { return can_save_to_database; }

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 Sep  3 23:23:50 2008
@@ -535,7 +535,6 @@
                 }
                 
                 playback_error = value; 
-                Save ();
             }
         }
 

Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs	Wed Sep  3 23:23:50 2008
@@ -196,10 +196,10 @@
             if (CurrentTrack != null) {
                 if (args.Event == PlayerEvent.Error 
                     && CurrentTrack.PlaybackError == StreamPlaybackError.None) {
-                    CurrentTrack.PlaybackError = StreamPlaybackError.Unknown;
+                    CurrentTrack.SavePlaybackError (StreamPlaybackError.Unknown);
                 } else if (args.Event == PlayerEvent.Iterate 
                     && CurrentTrack.PlaybackError != StreamPlaybackError.None) {
-                    CurrentTrack.PlaybackError = StreamPlaybackError.None;
+                    CurrentTrack.SavePlaybackError (StreamPlaybackError.None);
                 }
             }
             

Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Streaming/RadioTrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Streaming/RadioTrackInfo.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Streaming/RadioTrackInfo.cs	Wed Sep  3 23:23:50 2008
@@ -152,10 +152,10 @@
                     stream_uris.Add(new SafeUri(uri));
                 }
             } catch(System.Net.WebException) {
-                PlaybackError = StreamPlaybackError.ResourceNotFound;
+                SavePlaybackError (StreamPlaybackError.ResourceNotFound);
             } catch(Exception e) {
                 Console.WriteLine(e);
-                PlaybackError = StreamPlaybackError.ResourceNotFound;
+                SavePlaybackError (StreamPlaybackError.ResourceNotFound);
             }   
         }
         

Modified: trunk/banshee/src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs	(original)
+++ trunk/banshee/src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs	Wed Sep  3 23:23:50 2008
@@ -78,10 +78,22 @@
             if (ipod_device == null) {
                 throw new InvalidDeviceException ();
             }
-            
+
             name_path = Path.Combine (Path.GetDirectoryName (ipod_device.TrackDatabasePath), "BansheeIPodName");
-            
+            Name = GetDeviceName ();
+
             Initialize ();
+
+            AddDapProperty (Catalog.GetString ("Color"), ipod_device.ModelInfo.ShellColor);
+            AddDapProperty (Catalog.GetString ("Generation"), ipod_device.ModelInfo.Generation.ToString ());
+            AddDapProperty (Catalog.GetString ("Produced on"), ipod_device.ProductionInfo.DisplayDate);
+            AddDapProperty (Catalog.GetString ("Firmware"), ipod_device.FirmwareVersion);
+
+            string [] capabilities = new string [ipod_device.ModelInfo.Capabilities.Count];
+            ipod_device.ModelInfo.Capabilities.CopyTo (capabilities, 0);
+            AddDapProperty (Catalog.GetString ("Capabilities"), String.Join (", ", capabilities));
+            AddDapProperty (Catalog.GetString ("Supports cover art"), ipod_device.ModelInfo.AlbumArtSupported ? Catalog.GetString ("Yes") : Catalog.GetString ("No"));
+            AddDapProperty (Catalog.GetString ("Supports photos"), ipod_device.ModelInfo.PhotosSupported ? Catalog.GetString ("Yes") : Catalog.GetString ("No"));
         }
 
         public override void Dispose ()
@@ -135,7 +147,7 @@
                     }
                 }
                 database_supported = true;
-                ThreadAssist.ProxyToMain (delegate { DestroyUnsupportedView (); });
+                ThreadAssist.ProxyToMain (DestroyUnsupportedView);
             } catch (DatabaseReadException e) {
                 Log.Exception ("Could not read iPod database", e);
                 ipod_device.LoadTrackDatabase (true);
@@ -151,6 +163,8 @@
             }
             
             database_loaded = true;
+
+            Name = GetDeviceName ();
         }
         
         private int CountMusicFiles ()
@@ -178,16 +192,20 @@
             }
             
             tracks_map.Clear ();
-             
+
             if (database_supported || (ipod_device.HasTrackDatabase && 
                 ipod_device.ModelInfo.DeviceClass == "shuffle")) {
                 foreach (Track ipod_track in ipod_device.TrackDatabase.Tracks) {
-                    IpodTrackInfo track = new IpodTrackInfo (ipod_track);
-                    track.PrimarySource = this;
-                    track.Save (false);
-                    tracks_map.Add (track.TrackId, track);
+                    try {
+                        IpodTrackInfo track = new IpodTrackInfo (ipod_track);
+                        track.PrimarySource = this;
+                        track.Save (false);
+                        tracks_map.Add (track.TrackId, track);
+                    } catch (Exception e) {
+                        Log.Exception (e);
+                    }
                 }
-            } 
+            }
             
             /*else {
                 BuildDatabaseUnsupportedWidget ();
@@ -289,50 +307,34 @@
                 Log.Exception (e);
             }
             
-            this.name = null;
             ipod_device.Name = name;
             base.Rename (name);
         }
         
-        private string name;
-        public override string Name {
-            get {
-                if (name != null) {
-                    return name;
-                }
-                
-                if (File.Exists (name_path)) {
-                    using (StreamReader reader = new StreamReader (name_path, System.Text.Encoding.Unicode)) {
-                        name = reader.ReadLine ();
-                    }
-                }
-                
-                if (String.IsNullOrEmpty (name) && database_loaded && database_supported) {
-                    name = ipod_device.Name;
-                }
-                    
-                if (!String.IsNullOrEmpty (name)) {
-                    return name;
-                } else if (ipod_device.PropertyExists ("volume.label")) {
-                    name = ipod_device.GetPropertyString ("volume.label");
-                } else if (ipod_device.PropertyExists ("info.product")) {
-                    name = ipod_device.GetPropertyString ("info.product");
-                } else {
-                    name = ((IDevice)ipod_device).Name ?? "iPod";
+        private string GetDeviceName ()
+        {
+            string name = null;
+            if (File.Exists (name_path)) {
+                using (StreamReader reader = new StreamReader (name_path, System.Text.Encoding.Unicode)) {
+                    name = reader.ReadLine ();
                 }
+            }
+            
+            if (String.IsNullOrEmpty (name) && database_loaded && database_supported) {
+                name = ipod_device.Name;
+            }
                 
-                try {
-                    return name;
-                } finally {
-                    if (!database_loaded) {
-                        name = null;
-                    }
-                }
+            if (!String.IsNullOrEmpty (name)) {
+                return name;
+            } else if (ipod_device.PropertyExists ("volume.label")) {
+                name = ipod_device.GetPropertyString ("volume.label");
+            } else if (ipod_device.PropertyExists ("info.product")) {
+                name = ipod_device.GetPropertyString ("info.product");
+            } else {
+                name = ((IDevice)ipod_device).Name ?? "iPod";
             }
-        }
-        
-        public override bool CanActivate {
-            get { return unsupported_view != null; }
+            
+            return name;
         }
         
         public override bool CanRename {
@@ -453,20 +455,24 @@
         
         private void PerformSyncThread ()
         {
-            while (true) {
-                sync_thread_wait.WaitOne ();
-                if (sync_thread_dispose) {
-                    break;
+            try {
+                while (true) {
+                    sync_thread_wait.WaitOne ();
+                    if (sync_thread_dispose) {
+                        break;
+                    }
+                    
+                    PerformSyncThreadCycle ();
                 }
                 
-                PerformSyncThreadCycle ();
-            }
-            
-            lock (sync_mutex) {
-                sync_thread_dispose = false;
-                sync_thread_wait.Close ();
-                sync_thread_wait = null;
-                sync_thread = null;
+                lock (sync_mutex) {
+                    sync_thread_dispose = false;
+                    sync_thread_wait.Close ();
+                    sync_thread_wait = null;
+                    sync_thread = null;
+                }
+            } catch (Exception e) {
+                Log.Exception (e);
             }
         }
         



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