Catalog plugin: add WatchedSource, a CatalogSource with rating flag enabled
authorPhilipp Zabel <philipp.zabel@gmail.com>
Sun, 11 Jul 2010 10:46:32 +0000 (12:46 +0200)
committerPhilipp Zabel <philipp.zabel@gmail.com>
Sun, 11 Jul 2010 10:46:32 +0000 (12:46 +0200)
src/plugins/catalog-plugin.vala

index de2cf0e..831914c 100644 (file)
@@ -55,7 +55,7 @@ class CatalogPlugin : Plugin {
                source = new CatalogSource ("Loaned", _("Loaned movies"), _("Movies loaned to friends"), sqlite, !("Loaned" in hidden_sources));
                sources.append (source);
 
-               source = new CatalogSource ("Watched", _("Watched movies"), _("Watched / rated movies"), sqlite, !("Watched" in hidden_sources));
+               source = new WatchedSource (sqlite, !("Watched" in hidden_sources));
                sources.append (source);
 
                source = new CatalogSource ("Watchlist", _("Watchlist"), _("Movies of interest"), sqlite, !("Watchlist" in hidden_sources));
@@ -273,9 +273,9 @@ class CatalogPlugin : Plugin {
 
 class CatalogSource : MovieSource {
        internal string table;
-       private string name;
-       private string description;
-       private CatalogSqlite sqlite;
+       internal string name;
+       internal string description;
+       internal CatalogSqlite sqlite;
 
        public CatalogSource (string _table, string _name, string _description, CatalogSqlite _sqlite, bool _active) {
                GLib.Object (active: _active);
@@ -317,6 +317,25 @@ class CatalogSource : MovieSource {
        }
 }
 
+class WatchedSource : CatalogSource {
+       public WatchedSource (CatalogSqlite _sqlite, bool _active) {
+               GLib.Object (active: _active);
+               table = "Watched";
+               name = _("Watched movies");
+               description = _("Watched / rated movies");
+               sqlite = _sqlite;
+       }
+
+       public override async int get_movies (MovieFilter filter, MovieSource.ReceiveMovieFunction callback, int limit, Cancellable? cancellable) {
+               int n = yield sqlite.query (table, filter, callback, limit, cancellable);
+               return n;
+       }
+
+       public override SourceFlags get_flags () {
+               return SourceFlags.EDITABLE | SourceFlags.RATING;
+       }
+}
+
 [ModuleInit]
 public Type register_plugin (TypeModule module) {
        // types are registered automatically