[banshee] Update the track info display when currently played song is edited (bgo#546463)
- From: Alexander Kojevnikov <alexk src gnome org>
- To: svn-commits-list gnome org
- Subject: [banshee] Update the track info display when currently played song is edited (bgo#546463)
- Date: Thu, 14 May 2009 22:11:07 -0400 (EDT)
commit d4e7281627a4bd79c54e5ae08d4b73e48f7b1a9f
Author: Alexander Kojevnikov <alexander kojevnikov com>
Date: Fri May 15 12:07:44 2009 +1000
Update the track info display when currently played song is edited (bgo#546463)
DatabaseTrackInfo.TrackEquals() has been changed to compare only by TrackIDs.
---
.../DatabaseTrackInfo.cs | 5 +----
.../Banshee.MediaEngine/PlayerEngineService.cs | 3 ++-
.../ColumnCellStatusIndicator.cs | 2 +-
.../Banshee.Gui.TrackEditor/TrackEditorDialog.cs | 3 ++-
.../Banshee.Gui.Widgets/TrackInfoDisplay.cs | 13 ++++++++++---
5 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs b/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs
index 260c0ed..bec4165 100644
--- a/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs
+++ b/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs
@@ -104,10 +104,7 @@ namespace Banshee.Collection.Database
public static bool TrackEqual (DatabaseTrackInfo a, DatabaseTrackInfo b)
{
- return a != null && b != null &&
- a.TrackId == b.TrackId &&
- a.CacheModelId == b.CacheModelId &&
- a.CacheEntryId.Equals (b.CacheEntryId);
+ return a != null && b != null && a.TrackId == b.TrackId;
}
public DatabaseArtistInfo Artist {
diff --git a/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs b/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
index b8a2a12..6c40bc6 100644
--- a/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
+++ b/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
@@ -109,7 +109,8 @@ namespace Banshee.MediaEngine
MetadataService.Instance.HaveResult += OnMetadataServiceHaveResult;
- TrackInfo.IsPlayingMethod = IsPlaying;
+ TrackInfo.IsPlayingMethod = track => IsPlaying (track) &&
+ ServiceManager.PlaybackController.Source == ServiceManager.SourceManager.ActiveSource;
}
private void LoadEngine (TypeExtensionNode node)
diff --git a/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellStatusIndicator.cs b/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellStatusIndicator.cs
index aeac5b3..c9c763d 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellStatusIndicator.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellStatusIndicator.cs
@@ -123,7 +123,7 @@ namespace Banshee.Collection.Gui
icon_index = (int)(track.PlaybackError == StreamPlaybackError.Drm
? Icon.Protected
: Icon.Error);
- } else if (ServiceManager.PlayerEngine.IsPlaying (track)) {
+ } else if (track.IsPlaying) {
icon_index = (int)(ServiceManager.PlayerEngine.CurrentState == PlayerState.Paused
? Icon.Paused
: Icon.Playing);
diff --git a/src/Core/Banshee.ThickClient/Banshee.Gui.TrackEditor/TrackEditorDialog.cs b/src/Core/Banshee.ThickClient/Banshee.Gui.TrackEditor/TrackEditorDialog.cs
index 0943eb5..d9cb9bb 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Gui.TrackEditor/TrackEditorDialog.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui.TrackEditor/TrackEditorDialog.cs
@@ -556,7 +556,8 @@ namespace Banshee.Gui.TrackEditor
TrackInfo.ExportableMerge (track, track.SourceTrack);
track.SourceTrack.Save ();
- if (track.SourceTrack == ServiceManager.PlayerEngine.CurrentTrack) {
+ if (track.SourceTrack.TrackEqual (ServiceManager.PlayerEngine.CurrentTrack)) {
+ TrackInfo.ExportableMerge (track, ServiceManager.PlayerEngine.CurrentTrack);
ServiceManager.PlayerEngine.TrackInfoUpdated ();
}
}
diff --git a/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs b/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs
index edcfcc8..4633a19 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs
@@ -311,8 +311,10 @@ namespace Banshee.Gui.Widgets
private void OnPlayerEvent (PlayerEventArgs args)
{
- if (args.Event == PlayerEvent.StartOfStream || args.Event == PlayerEvent.TrackInfoUpdated) {
+ if (args.Event == PlayerEvent.StartOfStream) {
LoadCurrentTrack ();
+ } else if (args.Event == PlayerEvent.TrackInfoUpdated) {
+ LoadCurrentTrack (true);
} else if (args.Event == PlayerEvent.StateChange && (incoming_track != null || incoming_image != null)) {
PlayerEventStateChangeArgs state = (PlayerEventStateChangeArgs)args;
if (state.Current == PlayerState.Idle) {
@@ -340,12 +342,17 @@ namespace Banshee.Gui.Widgets
idle_timeout_id = 0;
return false;
}
-
+
private void LoadCurrentTrack ()
{
+ LoadCurrentTrack (false);
+ }
+
+ private void LoadCurrentTrack (bool force_reload)
+ {
TrackInfo track = ServiceManager.PlayerEngine.CurrentTrack;
- if (track == current_track && !IsMissingImage (current_image)) {
+ if (track == current_track && !IsMissingImage (current_image) && !force_reload) {
return;
} else if (track == null) {
incoming_track = null;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]