[banshee] [Collection.Database] Add ability to get selection aggregate info



commit a7c1a582c29a95e5de07fe3b73ad30a514e2c56d
Author: Gabriel Burt <gabriel burt gmail com>
Date:   Tue Oct 26 17:47:25 2010 -0500

    [Collection.Database] Add ability to get selection aggregate info

 .../DatabaseTrackListModel.cs                      |   18 +++++++++++++++---
 .../IDatabaseTrackModelCache.cs                    |    1 +
 src/Hyena                                          |    2 +-
 3 files changed, 17 insertions(+), 4 deletions(-)
---
diff --git a/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs b/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs
index cc9284e..afbdf6a 100644
--- a/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs
+++ b/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs
@@ -78,8 +78,18 @@ namespace Banshee.Collection.Database
             this.connection = connection;
             this.provider = provider;
             this.source = source;
+
+            SelectAggregates = "SUM(CoreTracks.Duration), SUM(CoreTracks.FileSize)";
+
+            Selection.Changed += delegate {
+                if (SelectionAggregatesHandler != null) {
+                    cache.UpdateSelectionAggregates (SelectionAggregatesHandler);
+                }
+            };
         }
 
+        protected Action<IDataReader> SelectionAggregatesHandler { get; set; }
+
         protected HyenaSqliteConnection Connection {
             get { return connection; }
         }
@@ -294,6 +304,10 @@ namespace Banshee.Collection.Database
                 cache.UpdateAggregates ();
                 cache.RestoreSelection ();
 
+                if (SelectionAggregatesHandler != null) {
+                    cache.UpdateSelectionAggregates (SelectionAggregatesHandler);
+                }
+
                 filtered_count = cache.Count;
 
                 OnReloaded ();
@@ -566,9 +580,7 @@ namespace Banshee.Collection.Database
             get { return RowsInView > 0 ? RowsInView * 5 : 100; }
         }
 
-        public string SelectAggregates {
-            get { return "SUM(CoreTracks.Duration), SUM(CoreTracks.FileSize)"; }
-        }
+        public string SelectAggregates { get; protected set; }
 
         // Implement IDatabaseModel
         public string ReloadFragment {
diff --git a/src/Core/Banshee.Services/Banshee.Collection.Database/IDatabaseTrackModelCache.cs b/src/Core/Banshee.Services/Banshee.Collection.Database/IDatabaseTrackModelCache.cs
index 69b66f1..9f89bdf 100644
--- a/src/Core/Banshee.Services/Banshee.Collection.Database/IDatabaseTrackModelCache.cs
+++ b/src/Core/Banshee.Services/Banshee.Collection.Database/IDatabaseTrackModelCache.cs
@@ -39,6 +39,7 @@ namespace Banshee.Collection.Database
         void Clear ();
         void SaveSelection ();
         void UpdateAggregates ();
+        void UpdateSelectionAggregates (Action<IDataReader> handler);
         void RestoreSelection ();
         long Count { get; }
         void Reload ();
diff --git a/src/Hyena b/src/Hyena
index 4535f30..7b7cd86 160000
--- a/src/Hyena
+++ b/src/Hyena
@@ -1 +1 @@
-Subproject commit 4535f30c4176d6dd102b66761a33082a9fe6303d
+Subproject commit 7b7cd8674f284ad2d2e288bff2231c7134ef8915



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