Catalog plugin: add watched movies list, special UI to add watched / loaned movies
[cinaest] / src / plugins / catalog-plugin.vala
index 550a810..e562a24 100644 (file)
@@ -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;