From 82dd8e68130df5a77db9085a848dda9b8b2eaf74 Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Wed, 9 Dec 2009 00:00:15 +0100 Subject: [PATCH] Catalog plugin: add watched movies list, special UI to add watched / loaned movies --- src/plugins/catalog-plugin.vala | 61 +++++++++++++++++++++++++++++++++++++-- src/plugins/catalog-sqlite.vala | 2 +- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/src/plugins/catalog-plugin.vala b/src/plugins/catalog-plugin.vala index 550a810..e562a24 100644 --- a/src/plugins/catalog-plugin.vala +++ b/src/plugins/catalog-plugin.vala @@ -55,6 +55,9 @@ 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)); + sources.append (source); + source = new CatalogSource ("Watchlist", _("Watchlist"), _("Movies of interest"), sqlite, !("Watchlist" in hidden_sources)); sources.append (source); @@ -102,10 +105,62 @@ class CatalogPlugin : Plugin { int res = dialog.run (); if (res >= 0) { var source = sources.nth_data (res); - source.add_movie (movie); - var banner = (Banner) Banner.show_information_with_markup (window, null, _("'%s' added to list '%s'").printf (movie.title, source.get_name ())); - banner.set_timeout (1500); + if (source.table == "Loaned") { + var dialog = new Gtk.Dialog (); + dialog.set_title (_("Add to loaned movies")); + + var contact = new Hildon.Entry (SizeType.FINGER_HEIGHT); + contact.set_placeholder ("Contact"); + var date = new Hildon.DateButton (SizeType.FINGER_HEIGHT, ButtonArrangement.VERTICAL); + date.set_title (_("Loaned on")); + date.set_alignment (0.0f, 0.5f, 1.0f, 1.0f); + + content = (Gtk.VBox) dialog.get_content_area (); + content.pack_start (contact, 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) { + source.add_movie (movie); + + 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); + + var banner = (Banner) Banner.show_information_with_markup (window, null, _("'%s' added to list '%s'").printf (movie.title, source.get_name ())); + banner.set_timeout (1500); + } } dialog.destroy (); dialog = null; diff --git a/src/plugins/catalog-sqlite.vala b/src/plugins/catalog-sqlite.vala index 1e8d068..151fc1c 100644 --- a/src/plugins/catalog-sqlite.vala +++ b/src/plugins/catalog-sqlite.vala @@ -130,7 +130,7 @@ class CatalogSqlite : Object { private int prepare () { int rc; - rc = db.exec ("CREATE TABLE IF NOT EXISTS Collection (Title TEXT NOT NULL, Year INTEGER, Rating INTEGER, Genres INTEGER NOT NULL DEFAULT 0); CREATE TABLE IF NOT EXISTS Loaned (Title TEXT NOT NULL, Year INTEGER, Rating INTEGER, Genres INTEGER NOT NULL DEFAULT 0); CREATE TABLE IF NOT EXISTS Watchlist (Title TEXT NOT NULL, Year INTEGER, Rating INTEGER, Genres INTEGER NOT NULL DEFAULT 0);", callback, null); + rc = db.exec ("CREATE TABLE IF NOT EXISTS Collection (Title TEXT NOT NULL, Year INTEGER, Rating INTEGER, Genres INTEGER NOT NULL DEFAULT 0); CREATE TABLE IF NOT EXISTS Loaned (Title TEXT NOT NULL, Year INTEGER, Rating INTEGER, Genres INTEGER NOT NULL DEFAULT 0); CREATE TABLE IF NOT EXISTS Watched (Title TEXT NOT NULL, Year INTEGER, Rating INTEGER, Genres INTEGER NOT NULL DEFAULT 0); CREATE TABLE IF NOT EXISTS Watchlist (Title TEXT NOT NULL, Year INTEGER, Rating INTEGER, Genres INTEGER NOT NULL DEFAULT 0);", callback, null); if (rc != Sqlite.OK) { stderr.printf ("SQL error: %d, %s\n", rc, db.errmsg ()); return 1; -- 1.7.9.5