banshee r4225 - in trunk/banshee: . src/Core/Banshee.Core/Banshee.Collection src/Core/Banshee.Core/Resources src/Core/Banshee.Services/Banshee.Library src/Core/Banshee.Services/Banshee.MediaEngine src/Core/Banshee.Services/Banshee.PlayerMigration src/Core/Banshee.ThickClient/Banshee.Collection.Gui src/Core/Banshee.ThickClient/Banshee.Library.Gui src/Dap/Banshee.Dap/Banshee.Dap src/Extensions/Banshee.Daap/Banshee.Daap src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView
- From: gburt svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r4225 - in trunk/banshee: . src/Core/Banshee.Core/Banshee.Collection src/Core/Banshee.Core/Resources src/Core/Banshee.Services/Banshee.Library src/Core/Banshee.Services/Banshee.MediaEngine src/Core/Banshee.Services/Banshee.PlayerMigration src/Core/Banshee.ThickClient/Banshee.Collection.Gui src/Core/Banshee.ThickClient/Banshee.Library.Gui src/Dap/Banshee.Dap/Banshee.Dap src/Extensions/Banshee.Daap/Banshee.Daap src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView
- Date: Sun, 20 Jul 2008 19:37:21 +0000 (UTC)
Author: gburt
Date: Sun Jul 20 19:37:21 2008
New Revision: 4225
URL: http://svn.gnome.org/viewvc/banshee?rev=4225&view=rev
Log:
2008-07-20 Gabriel Burt <gabriel burt gmail com>
* src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs:
* src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs:
* src/Core/Banshee.ThickClient/Banshee.Library.Gui/FileImportSource.cs:
* src/Core/Banshee.ThickClient/Banshee.Library.Gui/FolderImportSource.cs:
* src/Core/Banshee.Services/Banshee.PlayerMigration/AmarokPlayerImportSource.cs:
* src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs:
* src/Core/Banshee.Services/Banshee.Library/HomeDirectoryImportSource.cs:
* src/Core/Banshee.Services/Banshee.Library/IImportSource.cs: Add a
SortOrder int property so we can hint at the order import sources should
be displayed in the import dialog. In particular, puts the folder import
first.
* src/Core/Banshee.ThickClient/Banshee.Library.Gui/ImportDialog.cs: Sort
the import sources before adding them to the combo box.
* src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Add a static
IsPlayingMethod delegate used by the new IsPlaying property to determine
if the current instance is playing.
* src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs:
Set the TrackInfo.IsPlayingMethod to our IsPlaying (track) method.
* src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: Fix
issue with the ListView position getting scrolled to the top of the list
when it probably shouldn't be. Add RowBoldPropertyName (like
RowSensitivePropertyName) and IsRowBold method.
* src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs:
Set the RowBoldPropertyName to use TrackInfo's IsPlaying property.
* src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs:
If IsRowBold set the FontWeight property to bold for all ColumnCellText
cells.
* src/Core/Banshee.Core/Resources/translators.xml: Automatically updated.
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
trunk/banshee/src/Core/Banshee.Core/Resources/translators.xml
trunk/banshee/src/Core/Banshee.Services/Banshee.Library/HomeDirectoryImportSource.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Library/IImportSource.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.PlayerMigration/AmarokPlayerImportSource.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FileImportSource.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FolderImportSource.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Library.Gui/ImportDialog.cs
trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs
trunk/banshee/src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs
trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs
trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs
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 Sun Jul 20 19:37:21 2008
@@ -40,6 +40,9 @@
{
public class TrackInfo : CacheableItem, ITrackInfo
{
+ public delegate bool IsPlayingHandler (TrackInfo track);
+ public static IsPlayingHandler IsPlayingMethod;
+
private SafeUri uri;
private SafeUri more_info_uri;
private string mimetype;
@@ -116,6 +119,10 @@
public virtual void Save ()
{
}
+
+ public bool IsPlaying {
+ get { return (IsPlayingMethod != null) ? IsPlayingMethod (this) : false; }
+ }
public virtual SafeUri Uri {
get { return uri; }
Modified: trunk/banshee/src/Core/Banshee.Core/Resources/translators.xml
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Resources/translators.xml (original)
+++ trunk/banshee/src/Core/Banshee.Core/Resources/translators.xml Sun Jul 20 19:37:21 2008
@@ -26,6 +26,7 @@
<person>Philipp Kerling</person>
<person>Jochen Skulj</person>
<person>Daniel Schindler</person>
+ <person>Andre Klapper</person>
</language>
<language code="dz" name="Dzongkha">
<person>yumkee lhamo</person>
@@ -134,7 +135,7 @@
<person>Clytie Siddall</person>
</language>
<language code="zh_CN" name="Simplified Chinese">
- <person>çé (Lu Gan)</person>
+ <person>çé(Lu Gan)</person>
</language>
<language code="zh_HK" name="Chinese">
<person>Hsin-lin Cheng</person>
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Library/HomeDirectoryImportSource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Library/HomeDirectoryImportSource.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Library/HomeDirectoryImportSource.cs Sun Jul 20 19:37:21 2008
@@ -55,5 +55,9 @@
public bool CanImport {
get { return true; }
}
+
+ public int SortOrder {
+ get { return 10; }
+ }
}
}
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Library/IImportSource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Library/IImportSource.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Library/IImportSource.cs Sun Jul 20 19:37:21 2008
@@ -36,5 +36,6 @@
string Name { get; }
string [] IconNames { get; }
bool CanImport { get; }
+ int SortOrder { get; }
}
}
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs Sun Jul 20 19:37:21 2008
@@ -124,6 +124,8 @@
public abstract string Name { get; }
public abstract string[] IconNames { get; }
+
+ public abstract int SortOrder { get; }
public virtual bool CanImport {
get { return true; }
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 Jul 20 19:37:21 2008
@@ -105,6 +105,8 @@
}
MetadataService.Instance.HaveResult += OnMetadataServiceHaveResult;
+
+ TrackInfo.IsPlayingMethod = IsPlaying;
}
private void LoadEngine (TypeExtensionNode node)
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.PlayerMigration/AmarokPlayerImportSource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.PlayerMigration/AmarokPlayerImportSource.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.PlayerMigration/AmarokPlayerImportSource.cs Sun Jul 20 19:37:21 2008
@@ -199,5 +199,9 @@
public override string [] IconNames {
get { return new string [] { "system-search" }; }
}
+
+ public override int SortOrder {
+ get { return 40; }
+ }
}
}
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 Sun Jul 20 19:37:21 2008
@@ -52,6 +52,7 @@
RulesHint = true;
RowSensitivePropertyName = "CanPlay";
+ RowBoldPropertyName = "IsPlaying";
ServiceManager.PlayerEngine.ConnectEvent (OnPlayerEvent, PlayerEvent.StateChange);
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FileImportSource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FileImportSource.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FileImportSource.cs Sun Jul 20 19:37:21 2008
@@ -74,6 +74,10 @@
get { return true; }
}
+ public int SortOrder {
+ get { return 5; }
+ }
+
public static void SetChooserShortcuts (Gtk.FileChooserDialog chooser)
{
Hyena.Gui.GtkUtilities.SetChooserShortcuts (chooser,
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FolderImportSource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FolderImportSource.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Library.Gui/FolderImportSource.cs Sun Jul 20 19:37:21 2008
@@ -68,5 +68,9 @@
public bool CanImport {
get { return true; }
}
+
+ public int SortOrder {
+ get { return 0; }
+ }
}
}
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Library.Gui/ImportDialog.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Library.Gui/ImportDialog.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Library.Gui/ImportDialog.cs Sun Jul 20 19:37:21 2008
@@ -27,6 +27,7 @@
//
using System;
+using System.Collections.Generic;
using Gtk;
using Glade;
@@ -94,18 +95,28 @@
TreeIter active_iter = TreeIter.Zero;
+ List<IImportSource> sources = new List<IImportSource> ();
+
// Add the standalone import sources
foreach (IImportSource source in ServiceManager.Get<ImportSourceManager> ()) {
- AddSource (source);
+ sources.Add (source);
}
// Find active sources that implement IImportSource
foreach (Source source in ServiceManager.SourceManager.Sources) {
if (source is IImportSource) {
- AddSource ((IImportSource)source);
+ sources.Add ((IImportSource)source);
}
}
+ // Sort the sources by their SortOrder properties
+ sources.Sort (import_source_comparer);
+
+ // And actually add them to the dialog
+ foreach (IImportSource source in sources) {
+ AddSource (source);
+ }
+
if (!active_iter.Equals(TreeIter.Zero) || (active_iter.Equals (TreeIter.Zero) &&
source_model.GetIterFirst (out active_iter))) {
source_combo_box.SetActiveIter (active_iter);
@@ -208,5 +219,17 @@
return null;
}
}
+
+ private static IComparer<IImportSource> import_source_comparer = new ImportSourceComparer ();
+ private class ImportSourceComparer : IComparer<IImportSource>
+ {
+ public int Compare (IImportSource a, IImportSource b)
+ {
+ int ret = a.SortOrder.CompareTo (b.SortOrder);
+ return ret != 0
+ ? ret
+ : a.Name.CompareTo (b.Name);
+ }
+ }
}
}
Modified: trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs (original)
+++ trunk/banshee/src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs Sun Jul 20 19:37:21 2008
@@ -87,6 +87,10 @@
public virtual bool CanImport {
get { return true; }
}
+
+ int IImportSource.SortOrder {
+ get { return 20; }
+ }
#region IUnmapableSource Implementation
Modified: trunk/banshee/src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs Sun Jul 20 19:37:21 2008
@@ -334,6 +334,10 @@
get { return connected; }
}
+ int IImportSource.SortOrder {
+ get { return 30; }
+ }
+
public string [] IconNames {
get { return Properties.GetStringList ("Icon.Name"); }
}
Modified: trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs (original)
+++ trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs Sun Jul 20 19:37:21 2008
@@ -75,20 +75,8 @@
ScrollTo ((double) vpos);
} else {
if (Model.Count <= RowsInView) {
+ // If our view fits all rows at once, make sure we're scrolled to the top
ScrollTo (0.0);
- } else if (Selection.Count > 0) {
- bool selection_in_view = false;
- int first_row = GetRowAtY (0);
- for (int i = 0; i < RowsInView; i++) {
- if (Selection.Contains (first_row + i)) {
- selection_in_view = true;
- break;
- }
- }
-
- if (!selection_in_view) {
- CenterOn (Selection.Ranges[0].Start);
- }
} else {
if (vadjustment != null) {
ScrollTo (vadjustment.Value);
@@ -172,6 +160,43 @@
return (bool)row_sensitive_property_info.GetValue (item, null);
}
+ private string row_bold_property_name = "IsBold";
+ private PropertyInfo row_bold_property_info;
+ bool row_bold_property_invalid = false;
+
+ public string RowBoldPropertyName {
+ get { return row_bold_property_name; }
+ set {
+ if (value == row_bold_property_name) {
+ return;
+ }
+
+ row_bold_property_name = value;
+ row_bold_property_info = null;
+ row_bold_property_invalid = false;
+
+ InvalidateList ();
+ }
+ }
+
+ private bool IsRowBold (object item)
+ {
+ if (item == null || row_bold_property_invalid) {
+ return false;
+ }
+
+ if (row_bold_property_info == null || row_bold_property_info.ReflectedType != item.GetType ()) {
+ row_bold_property_info = item.GetType ().GetProperty (row_bold_property_name);
+ if (row_bold_property_info == null || row_bold_property_info.PropertyType != typeof (bool)) {
+ row_bold_property_info = null;
+ row_bold_property_invalid = true;
+ return false;
+ }
+ }
+
+ return (bool)row_bold_property_info.GetValue (item, null);
+ }
+
#pragma warning disable 0169
private bool IsRowSensitive (int index)
Modified: trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs (original)
+++ trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs Sun Jul 20 19:37:21 2008
@@ -299,6 +299,7 @@
object item = model[row_index];
bool sensitive = IsRowSensitive (item);
+ bool bold = IsRowBold (item);
Rectangle cell_area = new Rectangle ();
cell_area.Height = RowHeight;
@@ -311,23 +312,28 @@
cell_area.Width = column_cache[ci].Width;
cell_area.X = column_cache[ci].X1 + area.X;
- PaintCell (item, ci, row_index, cell_area, sensitive, state, false);
+ PaintCell (item, ci, row_index, cell_area, sensitive, bold, state, false);
}
if (pressed_column_is_dragging && pressed_column_index >= 0) {
cell_area.Width = column_cache[pressed_column_index].Width;
cell_area.X = pressed_column_x_drag + list_rendering_alloc.X - list_interaction_alloc.X;
- PaintCell (item, pressed_column_index, row_index, cell_area, sensitive, state, true);
+ PaintCell (item, pressed_column_index, row_index, cell_area, sensitive, bold, state, true);
}
}
- private void PaintCell (object item, int column_index, int row_index, Rectangle area, bool sensitive,
+ private void PaintCell (object item, int column_index, int row_index, Rectangle area, bool sensitive, bool bold,
StateType state, bool dragging)
{
ColumnCell cell = column_cache[column_index].Column.GetCell (0);
cell.BindListItem (item);
ColumnCellDataProvider (cell, item);
+ ColumnCellText text_cell = cell as ColumnCellText;
+ if (text_cell != null) {
+ text_cell.FontWeight = bold ? Pango.Weight.Bold : Pango.Weight.Normal;
+ }
+
if (dragging) {
Cairo.Color fill_color = Theme.Colors.GetWidgetColor (GtkColorClass.Base, StateType.Normal);
fill_color.A = 0.5;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]