[svn] Update the current song. This slow down thing a bit (any querying immsview
authorfabien
Wed, 04 Feb 2004 16:31:45 -0500
branchimmsview
changeset 16 894cac760e29
parent 15 a967b46eec0b
child 17 bef598558a5b
[svn] Update the current song. This slow down thing a bit (any querying take one to 2 seconds... That's pity!) but it make sure that at least this song is correct.
immsview
--- a/immsview	Wed Feb 04 15:20:40 2004 -0500
+++ b/immsview	Wed Feb 04 16:31:45 2004 -0500
@@ -20,9 +20,14 @@
 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 # Boston, MA 02111-1307, USA.
 
-_immsview_version = "$Id: immsview 1697 2004-02-04 20:20:40Z fabien $"
+_immsview_version = "$Id: immsview 1698 2004-02-04 21:31:45Z fabien $"
 
 # $Log$
+# Revision 1.17  2004/02/04 21:31:45  fabien
+# Update the current song.  This slow down thing a bit (any querying
+# take one to 2 seconds... That's pity!) but it make sure that at least
+# this song is correct.
+#
 # Revision 1.16  2004/02/04 20:20:40  fabien
 # Used the default sort function (return 0).
 #
@@ -179,7 +184,7 @@
         cu = self.cx.cursor()
         cu.execute("""SELECT Library.uid FROM Library
                    WHERE Library.path = '%s';""" % quote_sql(path))
-        return cu.fetchall()
+        return map(lambda x: x[0], cu.fetchall())
     def get_ratings_and_info(self, uids = None):
     	print time.ctime(time.time()) + ": querying"
         cu = self.cx.cursor()
@@ -202,7 +207,7 @@
 	tune = cu.fetchone()
         while tune:
             try:
-                tmp = {'uid' : tune[0],
+                tmp = {'uid' : int(tune[0]),
                        'rating' : int(tune[1]),
                        'path' : tune[2].decode('utf-8', 'replace'),
                        'last' : int(tune[3])}
@@ -229,6 +234,7 @@
                                gobject.TYPE_INT)
         self.db = db
         self.set_default_sort_func(self.default_sort)
+        self.set_sort_column_id(-1, 0)
     def default_sort(self, a, b, dummy):
         return 0
     def tune_to_giter(self, tune, giter = None, curtime = 0):
@@ -251,14 +257,16 @@
         # however, have no consequences AFAIK.
         # The doc permit it normally, even without default sort,
         # elsewhere 
-        self.set_sort_column_id(-1, 0)
+	if col:
+        	self.set_sort_column_id(-1, 0)
         tunes = self.db.get_ratings_and_info()
         self.clear()
 	print time.ctime(time.time()) + ": inserting"
         for tune in tunes:
             self.tune_to_giter(tune, curtime = curtime)
 	print time.ctime(time.time()) + ": end insert"
-        self.set_sort_column_id(col, order)
+	if col:
+        	self.set_sort_column_id(col, order)
     def find_selected_giter(self):
         giter = self.get_iter_first()
         while giter:
@@ -278,13 +286,15 @@
         if len(uids) == 0:
             return None
         uid = uids[0]
-        giter = self.find_giter_from_uid(uid[0])
+        giter = self.find_giter_from_uid(uid)
         if not giter:
             tunes = self.db.get_ratings_and_info(uids)
             if len(tunes) > 0:
                 giter = self.tune_to_giter(tunes[0])
+	else:
+            giter = self.update_giter(giter)
         return giter
-    def update_iter(self, giter):
+    def update_giter(self, giter):
         uid = self.get_value(giter, IMMSStore.COL_UID)
         tunes = self.db.get_ratings_and_info([uid,])
         if len(tunes) > 0:
@@ -322,6 +332,7 @@
             model = self.get_model()
             giter = model.find_selected_giter()
             if giter:
+	    	model.update_giter(giter)
                 model.set_value(giter, IMMSStore.COL_SELECT, gtk.FALSE)
             giter = model.find_giter_from_path(song)
             if giter:
@@ -329,7 +340,7 @@
                 self.set_cursor(model.get_path(giter))
         def get_filename(self, giter):
             model = self.get_model()
-            fn = model.get_value(model.update_iter(giter), IMMSStore.COL_PATH)
+            fn = model.get_value(model.update_giter(giter), IMMSStore.COL_PATH)
             try:
                 os.stat(fn)
             except OSError: