Renaming some event handlers
[multilist] / src / libliststorehandler.py
index 02ed37a..1c8ebb9 100644 (file)
@@ -20,9 +20,11 @@ along with Multilist.  If not, see <http://www.gnu.org/licenses/>.
 Copyright (C) 2008 Christoph Würstle
 """
 
-import gtk
 import logging
 
+import gtk
+
+import gtk_toolbox
 
 try:
        _
@@ -35,6 +37,33 @@ _moduleLogger = logging.getLogger(__name__)
 
 class Liststorehandler(object):
 
+       SHOW_ALL = "all"
+       SHOW_ACTIVE = "active"
+       ALL_FILTERS = (SHOW_ALL, SHOW_ACTIVE)
+
+       def __init__(self, db, selection):
+               self.db = db
+               self.__filter = self.SHOW_ALL
+               self.liststore = None
+               self.unitsstore = None
+               self.selection = selection
+               self.collist = ("uid", "status", "title", "quantitiy", "unit", "price", "priority", "date", "private", "stores", "note", "custom1", "custom2")
+
+               sql = "CREATE TABLE items (uid TEXT, list TEXT, category TEXT, status TEXT, title TEXT, quantitiy TEXT, unit TEXT, price TEXT, priority TEXT, date TEXT, pcdate TEXT, private TEXT, stores TEXT, note TEXT, custom1 TEXT, custom2 TEXT)"
+               self.db.speichereSQL(sql)
+
+               self.selection.load()
+               self.selection.connect("changed", self.update_list)
+               #self.selection.connect("changedCategory", self.update_category)
+
+       def set_filter(self, filter):
+               assert filter in self.ALL_FILTERS
+               self.__filter = filter
+               self.update_list()
+
+       def get_filter(self):
+               return self.__filter
+
        def get_unitsstore(self):
                if (self.unitsstore == None):
                        self.unitsstore = gtk.ListStore(str, str, str, str, str,  str, str, str, str, str, str, str, str)
@@ -56,6 +85,13 @@ class Liststorehandler(object):
 
                return self.unitsstore
 
+       def __calculate_status(self):
+               if self.__filter == self.SHOW_ACTIVE:
+                       status = "0"
+               else:
+                       status = "-1"
+               return status
+
        def get_liststore(self, titlesearch = ""):
                if (self.liststore == None):
                        self.liststore = gtk.ListStore(str, str, str, str, str,  str, str, str, str, str, str, str, str)
@@ -63,25 +99,21 @@ class Liststorehandler(object):
 
                titlesearch = titlesearch+"%"
 
-               if (self.selection.get_status() == "0"): #only 0 and 1 (active items)
-                       sql = "SELECT uid, status, title, quantitiy, unit, price, priority, date, private, stores, note, custom1, custom2 FROM items WHERE list = ? AND category LIKE ? AND status> = ? AND title like ? ORDER BY category, status, title"
-                       rows = self.db.ladeSQL(sql, (self.selection.get_list(), self.selection.get_category(True), self.selection.get_status(), titlesearch))
+               if self.__filter == self.SHOW_ACTIVE:
+                       status = self.__calculate_status()
+                       sql = "SELECT uid, status, title, quantitiy, unit, price, priority, date, private, stores, note, custom1, custom2 FROM items WHERE list = ? AND category LIKE ? AND status = ? AND title like ? ORDER BY category, status, title"
+                       rows = self.db.ladeSQL(sql, (self.selection.get_list(), self.selection.get_category(True), status, titlesearch))
                else:
                        sql = "SELECT uid, status, title, quantitiy, unit, price, priority, date, private, stores, note, custom1, custom2 FROM items WHERE list = ? AND category LIKE ? AND title LIKE ? ORDER BY category, title ASC"
                        rows = self.db.ladeSQL(sql, (self.selection.get_list(), self.selection.get_category(True), titlesearch))
 
-               #print rows
-               if ((rows is not None) and (len(rows) > 0)):
+               if rows is not None:
                        for row in rows:
                                uid, status, title, quantitiy, unit, price, priority, date, private, stores, note, custom1, custom2 = row
                                if unit == None:
                                        pass
                                        #unit = ""
                                self.liststore.append([uid, status, title, quantitiy, unit, price, priority, date, private, stores, note, custom1, custom2])
-                       #else:
-                       #self.liststore.append(["-1", "-1", "", " ", "", "", "", "", "", "", "", "", ""])       
-               #import uuid
-               #self.liststore.append(["-1", "-1", "", "", "", "", "", "", "", "", "", "", ""])
 
                return self.liststore
 
@@ -92,10 +124,6 @@ class Liststorehandler(object):
                return False
 
        def update_row(self, irow, icol, new_text):
-               #print "liststore 1"
-               #for x in self.liststore:
-               #       print x[0], x[2]
-
                if -1 < irow and self.liststore[irow][0] != "-1" and self.liststore[irow][0] is not None:
                        sql = "UPDATE items SET "+self.collist[icol]+" = ? WHERE uid = ?"
                        self.db.speichereSQL(sql, (new_text, self.liststore[irow][0]), rowid = self.liststore[irow][0])
@@ -106,13 +134,6 @@ class Liststorehandler(object):
                else:
                        _moduleLogger.warning("update_row: row does not exist")
                        return
-                       #if (self.emptyValueExists() == True)and(icol<2):
-                       #       #print "letzter Eintrag ohne inhalt"
-                       #       return
-
-               #print "liststore 2"
-               #for x in self.liststore:
-               #       print x[0], x[2]
 
        def checkout_rows(self):
                sql = "UPDATE items SET status = ? WHERE list = ? AND category LIKE ? AND status = ?"
@@ -122,27 +143,15 @@ class Liststorehandler(object):
                                self.liststore[i][1] = "-1"
 
        def add_row(self, title = ""):
-               #self.update_row(-1, 1, "-1")
-               #for x in self.liststore:
-               #       print x[0], x[2]
-               status = self.selection.get_status()
+               status = self.__calculate_status()
                import uuid
                uid = str(uuid.uuid4())
                sql = "INSERT INTO items (uid, list, category, status, title) VALUES (?, ?, ?, ?, ?)"
                self.db.speichereSQL(sql, (uid, self.selection.get_list(), self.selection.get_category(), status, title), rowid = uid)
                _moduleLogger.info("Insertet row: status = "+status+" with uid "+str(uid))
-                       #self.liststore[irow][0] = str(uuid.uuid4())
 
                self.liststore.append([uid, status, title, " ", "", "", "", "", "", "", "", "", ""])
                self.selection.comboLists_check_for_update()
-               #       if (irow>-1):
-               #               self.liststore[irow][icol] = new_text
-               #               self.liststore[irow][0] = uid
-               #       else:
-               #               self.liststore.append([uid, "-1", "", " ", "", "", "", "", "", "", "", "", ""])
-                               #print "xy", self.liststore[len(self.liststore)-1][0]
-                       #Check if a new list/category is opened
-               #       self.selection.comboLists_check_for_update()
 
        def del_row(self, irow, row_iter):
                uid = self.liststore[irow][0]
@@ -171,35 +180,10 @@ class Liststorehandler(object):
                self.selection.load()
                self.selection.set_list(new_name)
 
+       #@gtk_toolbox.log_exception(_moduleLogger)
        #def update_category(self, widget = None, data = None, data2 = None, data3 = None):
        #       self.get_liststore()
 
+       @gtk_toolbox.log_exception(_moduleLogger)
        def update_list(self, widget = None, data = None, data2 = None, data3 = None):
                self.get_liststore()
-
-       def __init__(self, db, selection):
-               self.db = db
-               self.liststore = None
-               self.unitsstore = None
-               self.selection = selection
-               self.collist = ("uid", "status", "title", "quantitiy", "unit", "price", "priority", "date", "private", "stores", "note", "custom1", "custom2")
-
-               #sql = "DROP TABLE items"
-               #self.db.speichereSQL(sql)
-
-               sql = "CREATE TABLE items (uid TEXT, list TEXT, category TEXT, status TEXT, title TEXT, quantitiy TEXT, unit TEXT, price TEXT, priority TEXT, date TEXT, pcdate TEXT, private TEXT, stores TEXT, note TEXT, custom1 TEXT, custom2 TEXT)"
-               self.db.speichereSQL(sql)
-
-               self.selection.load()
-               self.selection.connect("changed", self.update_list)
-               #self.selection.connect("changedCategory", self.update_category)
-
-               """
-               sql = "INSERT INTO items (uid, list, category, title) VALUES (?, ?, ?, ?)"
-               import uuid
-               self.db.speichereSQL(sql, (str(uuid.uuid4()), "default", "default", "atitel1"))
-               self.db.speichereSQL(sql, (str(uuid.uuid4()), "default", "default", "btitel2"))
-               self.db.speichereSQL(sql, (str(uuid.uuid4()), "default", "default", "ctitel3"))
-               
-               print "inserted"
-               """