def on_start_clicked(self, pressed, item): self.row = self.tasks.indexFromItem(item).row() self.item = self.tasks.itemWidget(item) self.disableItems() startBtn = self.item.findChild(QtGui.QToolButton, "taskStartButton_"+str(self.row)) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(os.path.join(config.assets_dir, 'stop.png')), QtGui.QIcon.Normal, QtGui.QIcon.Off) startBtn.setIcon(icon) self.start_event = self.on_stop_clicked self.pomotimer = PomodoroTimer(self.window.ui.TimerLabel, 25*60, self.tomatoFinished) self.pomotimer.start()
class TodoListWidget(QtCore.QObject): def __init__(self, window, listWidget): QtCore.QObject.__init__(self) self.window = window self.tasks = listWidget self.task_in_progress = False self.row = '' self.item = None self.pomotimer = None self.start_event = self.on_start_clicked self.todolist = todolist.TodoList() self.loadItems() def dispose(self): self.todolist.close() def loadItems(self): for item in list(self.todolist.tasks.values()): self.appendItem(item.description, item.id) def newTask(self, description): new_task = self.todolist.addItem(description) self.appendItem(description, new_task.id) def appendItem(self, labelText, task_id): item = QtGui.QListWidgetItem() item.id = task_id item.setSizeHint(QtCore.QSize(378,22)) self.tasks.addItem(item) row = str(self.tasks.indexFromItem(item).row()) new_frame = QtGui.QFrame() new_frame.setFrameShape(QtGui.QFrame.StyledPanel) new_frame.setFrameShadow(QtGui.QFrame.Raised) new_frame.setObjectName("frame_" + row) new_task = QtGui.QWidget(new_frame) new_task.setGeometry(QtCore.QRect(0, 0, 378, 22)) new_task.setAutoFillBackground(False) new_task.setObjectName("task_" + row) new_taskLabel = QtGui.QLabel(new_task) new_taskLabel.setGeometry(QtCore.QRect(40, 3, 291, 17)) new_taskLabel.setStyleSheet("") new_taskLabel.setText(labelText) new_taskLabel.setObjectName("taskLabel_" + row) new_taskRemoveButton = QtGui.QToolButton(new_task) new_taskRemoveButton.setGeometry(QtCore.QRect(340, -2, 24, 26)) new_taskStartButton = QtGui.QToolButton(new_task) new_taskStartButton.setGeometry(QtCore.QRect(5, -2, 24, 26)) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(os.path.join(config.assets_dir, 'delete.png')), QtGui.QIcon.Normal, QtGui.QIcon.Off) new_taskRemoveButton.setIcon(icon1) new_taskRemoveButton.setObjectName("taskRemoveButton_" + row) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(os.path.join(config.assets_dir, 'start.png')), QtGui.QIcon.Normal, QtGui.QIcon.Off) new_taskStartButton.setIcon(icon2) new_taskStartButton.setObjectName("taskStartButton_" + row) hoverOpacity = HoverOpacity(self) hoverOpacity.applyOpacity(new_task) new_task.installEventFilter(hoverOpacity) self.tasks.setItemWidget(item, new_frame) new_taskRemoveButton.clicked[bool].connect(lambda a: self.removeItem(a, item)) new_taskStartButton.clicked[bool].connect(lambda a: self.start_event(a, item)) return item def removeItem(self, pressed, item): row = self.tasks.indexFromItem(item).row() self.tasks.takeItem(row) self.todolist.removeItem(item.id) def on_start_clicked(self, pressed, item): self.row = self.tasks.indexFromItem(item).row() self.item = self.tasks.itemWidget(item) self.disableItems() startBtn = self.item.findChild(QtGui.QToolButton, "taskStartButton_"+str(self.row)) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(os.path.join(config.assets_dir, 'stop.png')), QtGui.QIcon.Normal, QtGui.QIcon.Off) startBtn.setIcon(icon) self.start_event = self.on_stop_clicked self.pomotimer = PomodoroTimer(self.window.ui.TimerLabel, 25*60, self.tomatoFinished) self.pomotimer.start() def on_stop_clicked(self, pressed, item): reply = QtGui.QMessageBox.question(self.window, 'Smash?', "Do you want to smash this tomato?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: startBtn = self.item.findChild(QtGui.QToolButton, "taskStartButton_"+str(self.row)) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(os.path.join(config.assets_dir, 'start.png')), QtGui.QIcon.Normal, QtGui.QIcon.Off) startBtn.setIcon(icon) self.enableItems() self.start_event = self.on_start_clicked self.pomotimer.stop() def enableItems(self): for item in self.tasks.findItems('', QtCore.Qt.MatchRegExp): itemWidget = self.tasks.itemWidget(item) itemWidget.setEnabled(True) removeBtn = self.item.findChild(QtGui.QToolButton, "taskRemoveButton_"+str(self.row)) removeBtn.setEnabled(True) def disableItems(self): for item in self.tasks.findItems('', QtCore.Qt.MatchRegExp): itemWidget = self.tasks.itemWidget(item) itemWidget.setEnabled(False) self.item.setEnabled(True) removeBtn = self.item.findChild(QtGui.QToolButton, "taskRemoveButton_"+str(self.row)) removeBtn.setEnabled(False) def tomatoFinished(self): pass