# HG changeset patch # User fabien # Date 1075930305 18000 # Node ID 894cac760e2983f8063e91107dd972da00063690 # Parent a967b46eec0bbeafde528ba7481b756559827ae6 [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. diff -r a967b46eec0b -r 894cac760e29 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: