banshee r3513 - in trunk/banshee: . src/Clients/Nereid/Nereid src/Core/Banshee.Core/Banshee.Collection src/Core/Banshee.Services/Banshee.Collection.Database src/Core/Banshee.Services/Banshee.Database src/Core/Banshee.Services/Banshee.MediaEngine src/Core/Banshee.Services/Banshee.PlaybackController src/Core/Banshee.Services/Banshee.Query src/Core/Banshee.ThickClient/Banshee.Collection.Gui src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio
- From: gburt svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r3513 - in trunk/banshee: . src/Clients/Nereid/Nereid src/Core/Banshee.Core/Banshee.Collection src/Core/Banshee.Services/Banshee.Collection.Database src/Core/Banshee.Services/Banshee.Database src/Core/Banshee.Services/Banshee.MediaEngine src/Core/Banshee.Services/Banshee.PlaybackController src/Core/Banshee.Services/Banshee.Query src/Core/Banshee.ThickClient/Banshee.Collection.Gui src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio
- Date: Sat, 22 Mar 2008 00:24:43 +0000 (GMT)
Author: gburt
Date: Sat Mar 22 00:24:42 2008
New Revision: 3513
URL: http://svn.gnome.org/viewvc/banshee?rev=3513&view=rev
Log:
2008-03-21 Gabriel Burt <gabriel burt gmail com>
This patch implements actually updating the play/skip counts and last
played/skipped stamps.
* src/Clients/Nereid/Nereid/PlayerInterface.cs: Update the status bar when
the active source is Updated.
* src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Add
IncrementSkipCount method and LastSkipped property, and update LastSkipped
and LastPlayed within their respective Increment methods.
* src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs:
Save the track after incremting its play/skip count.
* src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs:
Add a LastSkippedStamp column to CoreTracks.
* src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs:
When opening a new track or uri, if there is a currently playing song, if
it's over half way done, call IncrementPlayCount on it, otherwise call
IncrementSkipCount.
* src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs:
Add a NOTE about refactoring to allow models to provide the random track
functionality.
* src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Add LastSkipped
query field and sorting.
* src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs:
Add a Last Skipped column.
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmTrackInfo.cs:
Within IncrementPlayCount override call the base method.
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Clients/Nereid/Nereid/PlayerInterface.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.Database/BansheeDbFormatMigrator.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmTrackInfo.cs
Modified: trunk/banshee/src/Clients/Nereid/Nereid/PlayerInterface.cs
==============================================================================
--- trunk/banshee/src/Clients/Nereid/Nereid/PlayerInterface.cs (original)
+++ trunk/banshee/src/Clients/Nereid/Nereid/PlayerInterface.cs Sat Mar 22 00:24:42 2008
@@ -232,6 +232,7 @@
{
// Service events
ServiceManager.SourceManager.ActiveSourceChanged += OnActiveSourceChanged;
+ ServiceManager.SourceManager.SourceUpdated += OnSourceUpdated;
ServiceManager.PlayerEngine.EventChanged += OnPlayerEngineEventChanged;
ActionService.TrackActions ["SearchForSameArtistAction"].Activated += OnProgrammaticSearch;
@@ -325,6 +326,13 @@
UpdateStatusBar ();
view_container.SearchEntry.Ready = true;
}
+
+ private void OnSourceUpdated (SourceEventArgs args)
+ {
+ if (args.Source == ServiceManager.SourceManager.ActiveSource) {
+ UpdateStatusBar ();
+ }
+ }
private void OnPlayerEngineEventChanged (object o, PlayerEngineEventArgs args)
{
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 Sat Mar 22 00:24:42 2008
@@ -66,6 +66,7 @@
private int play_count;
private int skip_count;
private DateTime last_played;
+ private DateTime last_skipped;
private StreamPlaybackError playback_error = StreamPlaybackError.None;
@@ -75,9 +76,16 @@
public virtual void IncrementPlayCount ()
{
+ LastPlayed = DateTime.Now;
PlayCount++;
}
+ public virtual void IncrementSkipCount ()
+ {
+ LastSkipped = DateTime.Now;
+ SkipCount++;
+ }
+
public override string ToString ()
{
return String.Format ("{0} - {1} (on {2}) <{3}> [{4}]", ArtistName, TrackTitle,
@@ -246,6 +254,11 @@
get { return last_played; }
set { last_played = value; }
}
+
+ public virtual DateTime LastSkipped {
+ get { return last_skipped; }
+ set { last_skipped = value; }
+ }
public virtual StreamPlaybackError PlaybackError {
get { return playback_error; }
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 Sat Mar 22 00:24:42 2008
@@ -69,6 +69,18 @@
{
}
+ public override void IncrementPlayCount ()
+ {
+ base.IncrementPlayCount ();
+ Save ();
+ }
+
+ public override void IncrementSkipCount ()
+ {
+ base.IncrementSkipCount ();
+ Save ();
+ }
+
public override bool TrackEqual (TrackInfo track)
{
if (!(track is DatabaseTrackInfo)) {
@@ -317,6 +329,12 @@
get { return base.LastPlayed; }
set { base.LastPlayed = value; }
}
+
+ [DatabaseColumn ("LastSkippedStamp")]
+ public override DateTime LastSkipped {
+ get { return base.LastSkipped; }
+ set { base.LastSkipped = value; }
+ }
[DatabaseColumn ("DateAddedStamp")]
public override DateTime DateAdded {
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs Sat Mar 22 00:24:42 2008
@@ -61,7 +61,7 @@
// NOTE: Whenever there is a change in ANY of the database schema,
// this version MUST be incremented and a migration method
// MUST be supplied to match the new version number
- protected const int CURRENT_VERSION = 3;
+ protected const int CURRENT_VERSION = 4;
protected class DatabaseVersionAttribute : Attribute
{
@@ -249,6 +249,13 @@
Execute ("UPDATE CoreSmartPlaylists SET PrimarySourceID = 1");
return true;
}
+
+ [DatabaseVersion (4)]
+ private bool Migrate_4 ()
+ {
+ Execute ("ALTER TABLE CoreTracks ADD COLUMN LastSkippedStamp INTEGER");
+ return true;
+ }
#pragma warning restore 0169
@@ -318,6 +325,7 @@
PlayCount INTEGER,
SkipCount INTEGER,
LastPlayedStamp INTEGER,
+ LastSkippedStamp INTEGER,
DateAddedStamp INTEGER,
DateUpdatedStamp INTEGER
)
@@ -332,7 +340,7 @@
Execute("CREATE INDEX CoreTracksPlayCountIndex ON CoreTracks(PlayCount)");
Execute("CREATE INDEX CoreTracksDiscIndex ON CoreTracks(Disc)");
Execute("CREATE INDEX CoreTracksTrackNumberIndex ON CoreTracks(TrackNumber)");
- Execute("CREATE INDEX CoreTracksTitleeIndex ON CoreTracks(Title)");
+ Execute("CREATE INDEX CoreTracksTitleIndex ON CoreTracks(Title)");
Execute(@"
CREATE TABLE CoreAlbums (
@@ -490,6 +498,7 @@
NumberOfPlays,
0,
LastPlayedStamp,
+ NULL,
DateAddedStamp,
DateAddedStamp
FROM Tracks
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 Sat Mar 22 00:24:42 2008
@@ -282,6 +282,15 @@
FindSupportingEngine (uri);
CheckPending ();
+ if (active_engine.CurrentTrack != null) {
+ // If we're at least 50% done playing a song, mark it as played, otherwise as skipped
+ if (active_engine.Length > 0 && active_engine.Position >= active_engine.Length / 2) {
+ active_engine.CurrentTrack.IncrementPlayCount ();
+ } else {
+ active_engine.CurrentTrack.IncrementSkipCount ();
+ }
+ }
+
if (track != null) {
active_engine.Open (track);
} else if (uri != null) {
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs Sat Mar 22 00:24:42 2008
@@ -227,6 +227,7 @@
private TrackInfo QueryTrackRandom ()
{
+ // TODO let the TrackModel give us a random track
return Source.TrackModel[random.Next (0, Source.TrackModel.Count - 1)];
}
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 Sat Mar 22 00:24:42 2008
@@ -176,6 +176,13 @@
"lastplayed", "played", "playedon"
);
+ public static QueryField LastSkippedField = new QueryField (
+ "lastskipped", Catalog.GetString ("Last Skipped Date"), "CoreTracks.LastSkippedStamp", typeof(DateQueryValue),
+ // Translators: These are unique search fields. Please, no spaces. Blank ok.
+ Catalog.GetString ("lastskipped"), Catalog.GetString ("skipped"), Catalog.GetString ("skippedon"),
+ "lastskipped", "skipped", "skippedon"
+ );
+
public static QueryField DateAddedField = new QueryField (
"added", Catalog.GetString ("Date Added"), "CoreTracks.DateAddedStamp", typeof(DateQueryValue),
// Translators: These are unique search fields. Please, no spaces. Blank ok.
@@ -197,7 +204,7 @@
public static QueryFieldSet FieldSet = new QueryFieldSet (
ArtistField, AlbumField, DiscField, TitleField, YearField, GenreField, ComposerField, RatingField, PlayCountField,
- SkipCountField, FileSizeField, UriField, DurationField, MimeTypeField, LastPlayedField,
+ SkipCountField, FileSizeField, UriField, DurationField, MimeTypeField, LastPlayedField, LastSkippedField,
DateAddedField, PlaylistField, SmartPlaylistField
);
@@ -256,6 +263,7 @@
case "PlayCount":
case "SkipCount":
case "LastPlayedStamp":
+ case "LastSkippedStamp":
case "DateAddedStamp":
case "Uri":
case "Composer":
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs Sat Mar 22 00:24:42 2008
@@ -67,6 +67,7 @@
new SortableColumn (Catalog.GetString ("Skip Count"), new ColumnCellText ("SkipCount", true), 0.15, "SkipCount"),
//new SortableColumn ("Rating", new RatingColumnCell (null, true), 0.15, "Rating"),
new SortableColumn (Catalog.GetString ("Last Played"), new ColumnCellDateTime ("LastPlayed", true), 0.15, "LastPlayedStamp"),
+ new SortableColumn (Catalog.GetString ("Last Skipped"), new ColumnCellDateTime ("LastSkipped", true), 0.15, "LastSkippedStamp"),
new SortableColumn (Catalog.GetString ("Date Added"), new ColumnCellDateTime ("DateAdded", true), 0.15, "DateAddedStamp"),
new SortableColumn (Catalog.GetString ("Location"), new ColumnCellText ("Uri", true), 0.15, "Uri"),
new SortableColumn (Catalog.GetString ("Composer"), new ColumnCellText ("Composer", true), 0.25, "Composer")
Modified: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmTrackInfo.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmTrackInfo.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmTrackInfo.cs Sat Mar 22 00:24:42 2008
@@ -85,6 +85,8 @@
public override void IncrementPlayCount ()
{
+ base.IncrementPlayCount ();
+
station.PlayCount++;
station.Save ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]