Revamping UI
authorIvan Frade <ivan.frade@gmail.com>
Wed, 19 Aug 2009 20:44:38 +0000 (23:44 +0300)
committerIvan Frade <ivan.frade@gmail.com>
Wed, 19 Aug 2009 20:44:38 +0000 (23:44 +0300)
Removed unneccesary methods in tracker_backend
Simplified layout of buttons.

src/download_dialog.py
src/mussorgsky.py
src/tracker_backend.py

index 2a61af9..469272a 100644 (file)
@@ -36,19 +36,30 @@ class MussorgskyAlbumArtDownloadDialog (gtk.Dialog):
         self.vbox.add (hbox)
 
 
-    def do_the_job (self, artist_albums):
-        TOTAL = len (artist_albums)
+    def do_the_job (self, artist_albums_model):
+        """
+        each row: ("Visible text", pixbuf, Artist, Album)
+        """
+        TOTAL = len (artist_albums_model)
         current = 1
-        
-        for (artist, album) in artist_albums:
+
+        it = artist_albums_model.get_iter_first ()
+        while (it):
+
             while (gtk.events_pending()):
                 gtk.main_iteration()
 
             if (self.cancel):
                 break
+
+            artist = artist_albums_model.get_value (it, 2)
+            album = artist_albums_model.get_value (it, 3)
             
             try:
                 (image, thumb) = self.downloader.get_album_art (artist, album)
+                if thumb:
+                    pixbuf = gtk.gdk.pixbuf_new_from_file_at_size (thumb, 124, 124)
+                    artist_albums_model.set_value (it, 1, pixbuf)
             except LookupError, e:
                 print "Error processing %s - %s" % (artist, album)
                 print str(e)
@@ -64,6 +75,7 @@ class MussorgskyAlbumArtDownloadDialog (gtk.Dialog):
                 self.album_art.set_from_stock (gtk.STOCK_CDROM, gtk.ICON_SIZE_DIALOG)
 
             current += 1
+            it = artist_albums_model.iter_next (it)
 
         
     def handle_response (self, widget, response_id):
@@ -80,12 +92,14 @@ if __name__ == "__main__":
              ("", "Freakin' out"),
              ("Dinah Washington", "")]
 
-    PAIRS = [ ("Artist %d" % i, "Album %d" %i) for i in range (0, 100)]
+    PAIRS_store = gtk.ListStore (str, gtk.gdk.Pixbuf, str, str)
+    for i in range (0, 100):
+        PAIRS_store.append (("blablabal", None, "Artist %d" % i, "Album %d" %i))
 
     def clicked_button (self):
         aadd = MussorgskyAlbumArtDownloadDialog (w)
         aadd.show_all ()
-        aadd.do_the_job (PAIRS)
+        aadd.do_the_job (PAIRS_store)
         
     w = gtk.Window ()
     box = gtk.VBox ()
index 7450367..6afca55 100755 (executable)
@@ -27,20 +27,8 @@ class MussorgskyMainWindow (hildon.StackableWindow):
         print "Waiting to update"
         gobject.timeout_add_seconds (3, self.update_values, None)
 
-    def artists_clicked (self, widget):
-        list_songs = self.tracker.get_songs_without_artist ()
-        list_albums = self.tracker.get_list_of_known_albums ()
-        list_artists = self.tracker.get_list_of_known_artists ()
-        self.show_edit_panel (list_songs, list_albums, list_artists)
-
-    def titles_clicked (self, widget):
-        list_songs = self.tracker.get_songs_without_title ()
-        list_albums = self.tracker.get_list_of_known_albums ()
-        list_artists = self.tracker.get_list_of_known_artists ()
-        self.show_edit_panel (list_songs, list_albums, list_artists)
-
-    def albums_clicked (self, widget):
-        list_songs = self.tracker.get_songs_without_album ()
+    def broken_files_clicked (self, widget):
+        list_songs = self.tracker.get_all_broken_songs ()
         list_albums = self.tracker.get_list_of_known_albums ()
         list_artists = self.tracker.get_list_of_known_artists ()
         self.show_edit_panel (list_songs, list_albums, list_artists)
@@ -69,56 +57,44 @@ class MussorgskyMainWindow (hildon.StackableWindow):
         self.show_edit_panel (list_songs, list_albums, list_artists)
 
     def create_main_view (self):
-        vbox = gtk.VBox (spacing=12)
+        vbox = gtk.VBox (spacing=12, homogeneous=False)
 
-        # Artist row
-        artist_row = gtk.HBox (homogeneous=True)
+        # Labels artist row
         self.label_no_artist = gtk.Label ("")
-        artist_row.add (self.label_no_artist)
-        button_artists = gtk.Button ("Fix empty artists!")
-        button_artists.connect ("clicked", self.artists_clicked)
-        artist_row.add (button_artists)
-    
-        vbox.add (artist_row)
+        vbox.add (self.label_no_artist)
 
-        # Title row
-        title_row = gtk.HBox (homogeneous=True)
         self.label_no_title = gtk.Label ("")
-        title_row.add (self.label_no_title)
-        button_titles = gtk.Button ("Fix empty titles!")
-        button_titles.connect ("clicked", self.titles_clicked)
-        title_row.add (button_titles)
-    
-        vbox.add (title_row)
+        vbox.add (self.label_no_title)
 
-        # Album row
-        album_row = gtk.HBox (homogeneous=True)
         self.label_no_album = gtk.Label ("")
-        album_row.add (self.label_no_album)
-        button_albums = gtk.Button ("Fix empty albums!")
-        button_albums.connect ("clicked", self.albums_clicked)
-        album_row.add (button_albums)
-
-        vbox.add (album_row)
-
-        # All songs row
+        vbox.add (self.label_no_album)
+        
+        # Buttons
         all_songs_row = gtk.HBox (homogeneous=True, spacing=12)
-        album_art = hildon.Button (hildon.BUTTON_STYLE_NORMAL,
-                                hildon.BUTTON_ARRANGEMENT_HORIZONTAL)
-        album_art.set_title ("Get all album art")
-        album_art.connect ("clicked", self.get_all_album_art)
-        all_songs_row.add (album_art)
 
+        button_broken_files = gtk.Button ("Fix metadata!")
+        button_broken_files.connect ("clicked", self.broken_files_clicked)
+        all_songs_row.add (button_broken_files)
+        
         browse = hildon.Button (hildon.BUTTON_STYLE_NORMAL,
                                 hildon.BUTTON_ARRANGEMENT_HORIZONTAL)
-        browse.set_title ("Browse the collection")
+        browse.set_title ("Manage\ncollection")
         browse.connect ("clicked", self.browse_clicked)
         all_songs_row.add (browse)
 
+        album_art = hildon.Button (hildon.BUTTON_STYLE_NORMAL,
+                                   hildon.BUTTON_ARRANGEMENT_HORIZONTAL)
+        album_art.set_title ("Album art")
+        album_art.connect ("clicked", self.get_all_album_art)
+        all_songs_row.add (album_art)
+
         vbox.add (all_songs_row)
 
         return vbox
 
+
+    
+
 if __name__ == "__main__":
 
     try:
index b0cc8db..ed02880 100755 (executable)
@@ -21,6 +21,25 @@ RDF_NO_ARTIST = RDF_NO_PROPX % "Audio:Artist"
 RDF_NO_ALBUM = RDF_NO_PROPX % "Audio:Album"
 RDF_NO_TITLE = RDF_NO_PROPX % "Audio:Title"
 
+RDF_ANY_MISSING_METADATA = """
+<rdfq:Condition>
+  <rdfq:or>
+    <rdfq:equals>
+      <rdfq:Property name="Audio:Artist" />
+      <rdf:String></rdf:String> 
+    </rdfq:equals>
+    <rdfq:equals>
+      <rdfq:Property name="Audio:Title" />
+      <rdf:String></rdf:String> 
+    </rdfq:equals>
+    <rdfq:equals>
+      <rdfq:Property name="Audio:Album" />
+      <rdf:String></rdf:String> 
+    </rdfq:equals>
+  </rdfq:or>
+</rdfq:Condition>
+"""
+
 
 class TrackerBackend:
 
@@ -54,28 +73,13 @@ class TrackerBackend:
                                            [], False, 0, 32000)
         return results
 
-
-    def get_songs_without_artist (self):
-        """
-        Return tuples with the following fields:
-        (uri, "Music", artist, title, album, mimetype)
-        """
-        return self.__run_rdf_query (RDF_NO_ARTIST)
-    
-    def get_songs_without_title (self):
+    def get_all_broken_songs (self):
         """
         Return tuples with the following fields:
         (uri, "Music", artist, title, album, mimetype)
         """
-        return self.__run_rdf_query (RDF_NO_TITLE)
+        return self.__run_rdf_query (RDF_ANY_MISSING_METADATA)
     
-    def get_songs_without_album (self):
-        """
-        Return tuples with the following fields:
-        (uri, "Music", artist, title, album, mimetype)
-        """
-        return self.__run_rdf_query (RDF_NO_ALBUM)
-
     def get_all_songs (self):
         return self.__run_rdf_query ("")