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));
int i = 0;
var available_sources = new List<MovieSource> ();
foreach (CatalogSource s in sources) {
- if (!s.contains (movie)) {
+ if (!s.contains (movie) && s.table != "Watched") {
available_sources.append ((MovieSource) s);
i++;
}
var banner = (Banner) Banner.show_information_with_markup (window, null, _("'%s' added to list of loaned movies").printf (movie.title, source.get_name ()));
banner.set_timeout (1500);
}
- } else if (source.table == "Watched") {
- var dialog = new Gtk.Dialog ();
- dialog.set_title (_("Add to watched movies"));
-
- var rating = new RatingWidget ();
- var date = new Hildon.DateButton (SizeType.FINGER_HEIGHT, ButtonArrangement.VERTICAL);
- date.set_title (_("Watched on"));
- date.set_alignment (0.0f, 0.5f, 1.0f, 1.0f);
-
- content = (Gtk.VBox) dialog.get_content_area ();
- content.pack_start (rating, true, false, 0);
- content.pack_start (date, true, false, 0);
-
- dialog.add_button (_("Done"), Gtk.ResponseType.OK);
- dialog.show_all ();
- res = dialog.run ();
- dialog.destroy ();
- if (res == Gtk.ResponseType.OK) {
- if (rating.get_rating () > 0)
- movie.rating = 10 * rating.get_rating ();
- source.add_movie (movie);
-
- var banner = (Banner) Banner.show_information_with_markup (window, null, _("'%s' added to list of watched movies").printf (movie.title, source.get_name ()));
- banner.set_timeout (1500);
- }
} else {
source.add_movie (movie);
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);
}
}
+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