def __init__(self, parent=None,dbpath='ztd.sqlite'): QtGui.QWidget.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.v=ifWeekend() self.db=DB(dbpath) self.prepareWidgets() self.fillWeek() self.ui.bottomPnl.hide() self.setWindowTitle("Qt ZTD - simple task management") self.options={'bottomPnlHidden':True}
class MyForm(QtGui.QMainWindow): def __init__(self, parent=None,dbpath='ztd.sqlite'): QtGui.QWidget.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.v=ifWeekend() self.db=DB(dbpath) self.prepareWidgets() self.fillWeek() self.ui.bottomPnl.hide() self.setWindowTitle("Qt ZTD - simple task management") self.options={'bottomPnlHidden':True} def prepareWidgets(self): self.ui.weekdays=[self.ui.weekday1,self.ui.weekday2,self.ui.weekday3,self.ui.weekday4,self.ui.weekday5,self.ui.inbox,self.ui.someday,self.ui.waiting,self.ui.thisweek] self.ui.taskslists=[] self.ui.lineeditlist=[] for i in range(0,9): taskwidget=TaskListWidget() lineedit=TaskLineEdit() self.ui.lineeditlist.append(lineedit) self.ui.taskslists.append(taskwidget) self.ui.weekdays[i].addWidget(lineedit) self.ui.weekdays[i].addWidget(taskwidget) self.connect(taskwidget,QtCore.SIGNAL("moveTask"),self.moveTask) self.connect(taskwidget,QtCore.SIGNAL("editTask"),self.editTask) self.connect(lineedit,QtCore.SIGNAL("createTask"),self.createNewTask) self.connect(taskwidget,QtCore.SIGNAL("taskDone"),self.taskDone) self.connect(taskwidget,QtCore.SIGNAL("sortTasks"),self.resortTask) self.connect(taskwidget,QtCore.SIGNAL("loadOutdated"),self.loadOutDated) self.ui.delete_label.setAcceptDrops(True) self.ui.delete_label.dropEvent=self.ldropEvent self.ui.delete_label.dragMoveEvent=self.ldragMoveEvent self.ui.delete_label.dragEnterEvent=self.ldragMoveEvent self.ui.outdated_list=TaskListWidget() self.ui.outdated_list.setMaximumSize(9999300,0) self.ui.outdated.addWidget(self.ui.outdated_list) self.connect(self.ui.outdated_list,QtCore.SIGNAL("taskDone"),self.taskDone) self.connect(self.ui.outdated_list,QtCore.SIGNAL("editTask"),self.editTask) self.connect(self.ui.outdated_list,QtCore.SIGNAL("loadOutdated"),self.loadOutDated) def fillWeek(self): weekdays,names=daysOfweek(self.v) weekdays+=['inbox','someday','waiting',] for i in range(0,8): self.ui.taskslists[i].clear() self.ui.taskslists[i].setDate(weekdays[i]) self.ui.lineeditlist[i].setDate(weekdays[i]) if i<5: label=eval("self.ui.daylabel"+str(i+1)) label.setText(str(names[i])+"<br/>"+str(weekdays[i])) tasks=self.db.getForDate(weekdays[i]) for j in tasks: self.ui.taskslists[i].addItem(Task(j[1],j[0],j[6])) self.ui.taskslists[8].clear() self.ui.taskslists[8].setDate("thisweek") self.ui.taskslists[8].week=getWeekNr() self.ui.lineeditlist[8].setDate("thisweek") self.loadThisWeek() self.loadOutDated() def loadOutDated(self): self.ui.outdated_list.clear() self.ui.outdated_list.setDate('outdated') self.ui.outdated_list.setDate('outdated') t=self.db.getOutdated(today(),getWeekNr()) for j in t: self.ui.outdated_list.addItem(Task(j[1],j[0],j[6])) if len(t)>0: self.ui.outdated_label.setMaximumHeight(20) self.ui.outdated_list.setMaximumHeight(200) else: self.ui.outdated_label.setMaximumHeight(0) self.ui.outdated_list.setMaximumHeight(0) def loadThisWeek(self): self.ui.taskslists[8].clear() self.ui.taskslists[8].setDate("thisweek") self.ui.taskslists[8].week=getWeekNr() self.ui.lineeditlist[8].setDate("thisweek") tasks=self.db.getForWeek(getWeekNr()) assigned=[] for j in tasks: n=Task(j[1],j[0],j[6]) if j[2]!="thisweek": assigned.append(n) n.setFlags(QtCore.Qt.ItemFlags()) else: self.ui.taskslists[8].addItem(n) for i in assigned: self.ui.taskslists[8].addItem(i) def moveTask(self,item,date,week): self.db.moveForDate(item.itemid, date, week) if date!="thisweek": self.loadThisWeek() def editTask(self,item): name=str(item.text()).strip() ifnew=self.db.checkIfNew(name) if not ifnew: self.db.editTask(item.itemid,name) self.loadThisWeek() else: old=self.db.getForId(item.itemid) item.setText(str(old[0][1])) msg=QtGui.QMessageBox(self) msg.setWindowTitle("Error") msg.setText("Task already exists. It's marked due date: %s"%str(ifnew[2])) msg.show() def createNewTask(self,name,tdate,due_week): name=str(name).strip() ifnew=self.db.checkIfNew(name) if not ifnew: newid=self.db.createTask(name,tdate,due_week) for i in self.ui.taskslists: if i.date==tdate: i.addItem(Task(name,newid)) if due_week==getWeekNr():self.loadThisWeek() else: msg=QtGui.QMessageBox(self) msg.setWindowTitle("Error") msg.setText("Task already exists. It's marked due date: %s"%str(ifnew[2])) msg.show() @QtCore.pyqtSlot() def on_next_clicked(self): self.v+=1 self.fillWeek() @QtCore.pyqtSlot() def on_back_clicked(self): self.v-=1 self.fillWeek() @QtCore.pyqtSlot() def on_next_week_clicked(self): self.v+=7 self.fillWeek() @QtCore.pyqtSlot() def on_back_week_clicked(self): self.v-=7 self.fillWeek() @QtCore.pyqtSlot() def on_bottomPanel_btn_clicked(self): if self.options['bottomPnlHidden']: self.options['bottomPnlHidden']=False self.ui.bottomPnl.show() else: self.options['bottomPnlHidden']=True self.ui.bottomPnl.hide() def createTask(self,name): return Task(name) def taskDone(self,itemid,done): self.db.setToDone(itemid,done) print itemid,done self.loadThisWeek() self.loadOutDated() def resortTask(self,widget): items=[] pos=[] disableds=0 for i in range(widget.count()): if widget.item(i).flags()==QtCore.Qt.ItemFlags(): disableds+=1 else: items.append(widget.item(i).itemid) pos.append(i-disableds) self.worker=Worker(items,pos,self) self.connect(self.worker,QtCore.SIGNAL("finished"),self.loadThisWeek) self.worker.run() def ldropEvent(self,e): e.accept() r=e.source().row(e.source().currentItem()) item=e.source().takeItem(r) self.db.deleteTask(item.itemid) del(item) self.loadThisWeek() def ldragMoveEvent(self,e): e.accept()