banshee r4425 - in trunk/banshee: . src/Core/Banshee.Services/Banshee.MediaEngine src/Core/Banshee.Services/Banshee.Query src/Core/Banshee.ThickClient/Banshee.Collection.Gui src/Core/Banshee.ThickClient/Banshee.Gui src/Extensions/Banshee.Podcasting/Resources
- From: gburt svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r4425 - in trunk/banshee: . src/Core/Banshee.Services/Banshee.MediaEngine src/Core/Banshee.Services/Banshee.Query src/Core/Banshee.ThickClient/Banshee.Collection.Gui src/Core/Banshee.ThickClient/Banshee.Gui src/Extensions/Banshee.Podcasting/Resources
- Date: Sun, 24 Aug 2008 01:48:33 +0000 (UTC)
Author: gburt
Date: Sun Aug 24 01:48:33 2008
New Revision: 4425
URL: http://svn.gnome.org/viewvc/banshee?rev=4425&view=rev
Log:
2008-08-23 Gabriel Burt <gabriel burt gmail com>
* src/Extensions/Banshee.Podcasting/Resources/ActiveSourceUI.xml: Put
'Mark New' above 'Mark Old'.
* src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs:
Add Album Artist, Comment, Track Count, Disc Count, Bpm, BitRate,
Conductor, and Grouping column.
* src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs:
* src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs: Add
helpers for adding/removing UIManager elements.
* src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Add
AlbumArtist, Disc Count, TrackCount, Bpm, BitRate, Conductor, and Gruping
query fields and sorting. Add TrackNumber, which previously was defined
as a query field but not in the default FieldSet.
* src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs:
Don't increment the play/skip count if the file had an error.
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs
trunk/banshee/src/Extensions/Banshee.Podcasting/Resources/ActiveSourceUI.xml
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 Sun Aug 24 01:48:33 2008
@@ -318,7 +318,7 @@
private bool incremented_last_played = true;
public void IncrementLastPlayed ()
{
- if (!incremented_last_played && active_engine.CurrentTrack != null) {
+ if (!incremented_last_played && CurrentTrack != null && CurrentTrack.PlaybackError == StreamPlaybackError.None) {
// If we're at least 50% done playing a song, mark it as played, otherwise as skipped
// If the Length <= 0, assume the song was finished and increment its play count
if (active_engine.Length <= 0 || active_engine.Position >= active_engine.Length / 2) {
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 Sun Aug 24 01:48:33 2008
@@ -97,6 +97,16 @@
"by", "artist", "artists"
);
+ public static QueryField AlbumArtistField = new QueryField (
+ "albumartist", "AlbumArtist",
+ Catalog.GetString ("Album Artist"), "CoreAlbums.ArtistNameLowered", true,
+ // Translators: These are unique search aliases for "album". Please, no spaces. Blank ok.
+ Catalog.GetString ("albumartist"), Catalog.GetString ("compilationartist"),
+ "albumartist", "compilationartist"
+ );
+
+ // TODO add IsCompilationField
+
public static QueryField AlbumField = new QueryField (
"album", "AlbumTitle",
Catalog.GetString ("Album"), "CoreAlbums.TitleLowered", true,
@@ -112,6 +122,14 @@
Catalog.GetString ("disc"), Catalog.GetString ("cd"), Catalog.GetString ("discnum"),
"disc", "cd", "discnum"
);
+
+ public static QueryField DiscCountField = new QueryField (
+ "disccount", "DiscCount",
+ Catalog.GetString ("Disc Count"), "CoreTracks.DiscCount", typeof(NaturalIntegerQueryValue),
+ // Translators: These are unique search fields (and nouns). Please, no spaces. Blank ok.
+ Catalog.GetString ("discs"), Catalog.GetString ("cds"),
+ "discs", "cds"
+ );
public static QueryField TrackNumberField = new QueryField (
"track", "TrackNumber",
@@ -122,6 +140,33 @@
"track", "trackno", "tracknum"
);
+ public static QueryField TrackCountField = new QueryField (
+ "trackcount", "TrackCount",
+ // Translators: noun
+ Catalog.GetString ("Track Count"), "CoreTracks.TrackCount", typeof(NaturalIntegerQueryValue),
+ // Translators: These are unique search fields. Please, no spaces. Blank ok.
+ Catalog.GetString ("tracks"), Catalog.GetString ("trackcount"),
+ "tracks", "trackcount"
+ );
+
+ public static QueryField BpmField = new QueryField (
+ "bpm", "Bpm",
+ // Translators: noun
+ Catalog.GetString ("BPM"), "CoreTracks.BPM", typeof(NaturalIntegerQueryValue),
+ // Translators: These are unique search fields. Please, no spaces. Blank ok.
+ Catalog.GetString ("bpm"),
+ "bpm"
+ );
+
+ public static QueryField BitRateField = new QueryField (
+ "bitrate", "BitRate",
+ // Translators: noun
+ Catalog.GetString ("Bit Rate"), "CoreTracks.BitRate", typeof(NaturalIntegerQueryValue),
+ // Translators: These are unique search fields. Please, no spaces. Blank ok.
+ Catalog.GetString ("bitrate"), Catalog.GetString ("kbs"), Catalog.GetString ("kps"),
+ "bitrate", "kbs", "kps"
+ );
+
public static QueryField TitleField = new QueryField (
"title", "TrackTitle",
Catalog.GetString ("Title"), "CoreTracks.TitleLowered", true,
@@ -152,6 +197,20 @@
Catalog.GetString ("composer"), "composer"
);
+ public static QueryField ConductorField = new QueryField (
+ "conductor", "Conductor",
+ Catalog.GetString ("Conductor"), "CoreTracks.Conductor", false,
+ // Translators: These are unique search fields. Please, no spaces. Blank ok.
+ Catalog.GetString ("conductor"), "conductor"
+ );
+
+ public static QueryField GroupingField = new QueryField (
+ "grouping", "Grouping",
+ Catalog.GetString ("Grouping"), "CoreTracks.Grouping", false,
+ // Translators: These are unique search fields. Please, no spaces. Blank ok.
+ Catalog.GetString ("grouping"), "grouping"
+ );
+
public static QueryField CommentField = new QueryField (
"comment", "Comment",
// Translators: noun
@@ -202,7 +261,7 @@
public static QueryField DurationField = new QueryField (
"duration", "Duration",
- Catalog.GetString ("Duration"), "CoreTracks.Duration", typeof(TimeSpanQueryValue),
+ Catalog.GetString ("Time"), "CoreTracks.Duration", typeof(TimeSpanQueryValue),
// Translators: These are unique search fields. Please, no spaces. Blank ok.
Catalog.GetString ("duration"), Catalog.GetString ("length"), Catalog.GetString ("time"),
"duration", "length", "time"
@@ -218,7 +277,7 @@
public static QueryField LastPlayedField = new QueryField (
"lastplayed", "LastPlayed",
- Catalog.GetString ("Last Played Date"), "CoreTracks.LastPlayedStamp", new Type [] {typeof(RelativeTimeSpanQueryValue), typeof(DateQueryValue)},
+ Catalog.GetString ("Last Played"), "CoreTracks.LastPlayedStamp", new Type [] {typeof(RelativeTimeSpanQueryValue), typeof(DateQueryValue)},
// Translators: These are unique search fields. Please, no spaces. Blank ok.
Catalog.GetString ("lastplayed"), Catalog.GetString ("played"), Catalog.GetString ("playedon"),
"lastplayed", "played", "playedon"
@@ -226,7 +285,7 @@
public static QueryField LastSkippedField = new QueryField (
"lastskipped", "LastSkipped",
- Catalog.GetString ("Last Skipped Date"), "CoreTracks.LastSkippedStamp", new Type [] {typeof(RelativeTimeSpanQueryValue), typeof(DateQueryValue)},
+ Catalog.GetString ("Last Skipped"), "CoreTracks.LastSkippedStamp", new Type [] {typeof(RelativeTimeSpanQueryValue), 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"
@@ -255,9 +314,10 @@
#endregion
public static QueryFieldSet FieldSet = new QueryFieldSet (
- ArtistField, AlbumField, DiscField, TitleField, YearField, GenreField, ComposerField, CommentField, RatingField, PlayCountField,
+ ArtistField, AlbumField, AlbumArtistField, TitleField, TrackNumberField, TrackCountField, DiscField, DiscCountField,
+ YearField, GenreField, ComposerField, ConductorField, GroupingField, CommentField, RatingField, PlayCountField,
SkipCountField, FileSizeField, UriField, DurationField, MimeTypeField, LastPlayedField, LastSkippedField,
- DateAddedField, PlaylistField, SmartPlaylistField
+ BpmField, BitRateField, DateAddedField, PlaylistField, SmartPlaylistField
);
private const string default_sort = @"CoreAlbums.ArtistNameLowered ASC, CoreAlbums.TitleLowered ASC, CoreTracks.Disc ASC, CoreTracks.TrackNumber ASC";
@@ -281,6 +341,14 @@
CoreTracks.TrackNumber {0}", ascDesc);
break;
+ case "albumartist":
+ sort_query = String.Format (@"
+ CoreAlbums.ArtistNameLowered {0},
+ CoreAlbums.TitleLowered ASC,
+ CoreTracks.Disc ASC,
+ CoreTracks.TrackNumber ASC", ascDesc);
+ break;
+
case "artist":
sort_query = String.Format (@"
CoreArtists.NameLowered {0},
@@ -318,8 +386,14 @@
goto case "comment";
case "year":
- case "genre":
+ case "bitrate":
+ case "bpm":
+ case "conductor":
+ case "grouping":
+ case "trackcount":
case "disc":
+ case "disccount":
+ case "genre":
case "duration":
case "rating":
case "playcount":
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs Sun Aug 24 01:48:33 2008
@@ -69,6 +69,7 @@
TitleColumn,
ArtistColumn,
AlbumColumn,
+ CommentColumn,
RatingColumn,
DurationColumn,
GenreColumn,
@@ -82,7 +83,14 @@
LastSkippedColumn,
DateAddedColumn,
UriColumn,
- MimeTypeColumn
+ MimeTypeColumn,
+ AlbumArtistColumn,
+ TrackCountColumn,
+ DiscCountColumn,
+ BpmColumn,
+ BitRateColumn,
+ ConductorColumn,
+ GroupingColumn
);
}
@@ -97,15 +105,22 @@
album_column = CreateText (BansheeQuery.AlbumField, 0.225, true);
// Others
+ album_artist_column = CreateText (BansheeQuery.AlbumArtistField, 0.225);
genre_column = CreateText (BansheeQuery.GenreField, 0.25);
duration_column = Create (BansheeQuery.DurationField, 0.10, true, new ColumnCellDuration (null, true));
year_column = Create (BansheeQuery.YearField, 0.15, false, new ColumnCellPositiveInt (null, true));
file_size_column = Create (BansheeQuery.FileSizeField, 0.15, false, new ColumnCellFileSize (null, true));
+ track_count_column = Create (BansheeQuery.TrackCountField, 0.10, false, new ColumnCellTrackNumber (null, true));
disc_column = Create (BansheeQuery.DiscField, 0.10, false, new ColumnCellPositiveInt (null, true));
+ disc_count_column = Create (BansheeQuery.DiscCountField, 0.10, false, new ColumnCellPositiveInt (null, true));
+ bpm_column = Create (BansheeQuery.BpmField, 0.10, false, new ColumnCellPositiveInt (null, true));
+ bitrate_column = Create (BansheeQuery.BitRateField, 0.10, false, new ColumnCellPositiveInt (null, true));
rating_column = Create (BansheeQuery.RatingField, 0.15, false, new ColumnCellRating (null, true));
composer_column = CreateText (BansheeQuery.ComposerField, 0.25);
+ conductor_column = CreateText (BansheeQuery.ConductorField, 0.25);
+ grouping_column = CreateText (BansheeQuery.GroupingField, 0.25);
comment_column = CreateText (BansheeQuery.CommentField, 0.25);
play_count_column = CreateText (BansheeQuery.PlayCountField, 0.15);
skip_count_column = CreateText (BansheeQuery.SkipCountField, 0.15);
@@ -236,6 +251,41 @@
public SortableColumn UriColumn {
get { return uri_column; }
}
+
+ private SortableColumn album_artist_column;
+ public SortableColumn AlbumArtistColumn {
+ get { return album_artist_column; }
+ }
+
+ private SortableColumn track_count_column;
+ public SortableColumn TrackCountColumn {
+ get { return track_count_column; }
+ }
+
+ private SortableColumn disc_count_column;
+ public SortableColumn DiscCountColumn {
+ get { return disc_count_column; }
+ }
+
+ private SortableColumn bpm_column;
+ public SortableColumn BpmColumn {
+ get { return bpm_column; }
+ }
+
+ private SortableColumn bitrate_column;
+ public SortableColumn BitRateColumn {
+ get { return bitrate_column; }
+ }
+
+ private SortableColumn conductor_column;
+ public SortableColumn ConductorColumn {
+ get { return conductor_column; }
+ }
+
+ private SortableColumn grouping_column;
+ public SortableColumn GroupingColumn {
+ get { return grouping_column; }
+ }
private SortableColumn mime_type_column;
public SortableColumn MimeTypeColumn {
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs Sun Aug 24 01:48:33 2008
@@ -40,8 +40,9 @@
public class BansheeActionGroup : ActionGroup
{
private InterfaceActionService action_service;
- protected Dictionary<string, string> labels = new Dictionary<string, string> ();
- protected Dictionary<string, string> icons = new Dictionary<string, string> ();
+ private Dictionary<string, string> labels = new Dictionary<string, string> ();
+ private Dictionary<string, string> icons = new Dictionary<string, string> ();
+ private List<uint> ui_merge_ids = new List<uint> ();
private bool important_by_default = true;
protected bool ImportantByDefault {
@@ -59,6 +60,25 @@
this.action_service = action_service;
}
+ public void AddUiFromFile (string ui_file)
+ {
+ ui_merge_ids.Add (Actions.AddUiFromFileInCurrentAssembly (ui_file));
+ }
+
+ public override void Dispose ()
+ {
+ Actions.RemoveActionGroup (this);
+
+ foreach (uint merge_id in ui_merge_ids) {
+ if (merge_id > 0) {
+ Actions.UIManager.RemoveUi (merge_id);
+ }
+ }
+ ui_merge_ids.Clear ();
+
+ base.Dispose ();
+ }
+
public new void Add (ActionEntry [] action_entries)
{
if (ImportantByDefault) {
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs Sun Aug 24 01:48:33 2008
@@ -190,12 +190,22 @@
active_source.Properties.Get<Assembly> ("ActiveSourceUIResource.Assembly") ??
Assembly.GetAssembly (active_source.GetType ());
- string ui_file = active_source.Properties.Get<string> ("ActiveSourceUIResource");
+ active_source_uiid = AddUiFromFile (active_source.Properties.Get<string> ("ActiveSourceUIResource"), assembly);
+ }
+
+ public uint AddUiFromFileInCurrentAssembly (string ui_file)
+ {
+ return AddUiFromFile (ui_file, Assembly.GetCallingAssembly ());
+ }
+
+ public uint AddUiFromFile (string ui_file, Assembly assembly)
+ {
if (ui_file != null) {
using (StreamReader reader = new StreamReader (assembly.GetManifestResourceStream (ui_file))) {
- active_source_uiid = ui_manager.AddUiFromString (reader.ReadToEnd ());
+ return ui_manager.AddUiFromString (reader.ReadToEnd ());
}
}
+ return 0;
}
public Action this[string actionId] {
Modified: trunk/banshee/src/Extensions/Banshee.Podcasting/Resources/ActiveSourceUI.xml
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Podcasting/Resources/ActiveSourceUI.xml (original)
+++ trunk/banshee/src/Extensions/Banshee.Podcasting/Resources/ActiveSourceUI.xml Sun Aug 24 01:48:33 2008
@@ -14,8 +14,8 @@
<menuitem name="PodcastItemDeleteFile" action="PodcastItemDeleteFileAction" />
<!--
<menuitem name="PodcastItemCancel" action="PodcastItemCancelAction" />-->
- <menuitem name="PodcastItemMarkOld" action="PodcastItemMarkOldAction" />
<menuitem name="PodcastItemMarkNew" action="PodcastItemMarkNewAction" />
+ <menuitem name="PodcastItemMarkOld" action="PodcastItemMarkOldAction" />
<separator />
</placeholder>
</menu>
@@ -30,8 +30,8 @@
<!--
<menuitem name="PodcastItemCancel" action="PodcastItemCancelAction" />-->
<separator />
- <menuitem name="PodcastItemMarkOld" action="PodcastItemMarkOldAction" />
<menuitem name="PodcastItemMarkNew" action="PodcastItemMarkNewAction" />
+ <menuitem name="PodcastItemMarkOld" action="PodcastItemMarkOldAction" />
</placeholder>
</popup>
</ui>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]