aboutsummaryrefslogtreecommitdiff
path: root/src/gui/tasks/main.py
blob: 3c7d3dbe0ee6f872fd0670e626987f9330a84178 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from PyQt5 import QtWidgets, QtCore

import db.tasks
import gui.tasks.signal
import gui.tasks.table.main
import gui.icons
from model.task import TaskForm

def widget(database, parent):
    widget = QtWidgets.QWidget(parent)

    layout = QtWidgets.QVBoxLayout(widget)
    widget.setLayout(layout)

    add_task_signal = gui.tasks.signal.AddTask()

    add_task_button = QtWidgets.QPushButton('Add a task', widget)
    add_task_button.setIcon(gui.icons.new_folder(widget.style()))
    add_task_button.clicked.connect(lambda: show_add_dialog(database, widget, add_task_signal))
    layout.addWidget(add_task_button)

    table = gui.tasks.table.main.widget(database, widget, add_task_signal)
    layout.addWidget(table)

    return widget

def show_add_dialog(database, parent_widget, add_task_signal):
    dialog = gui.tasks.modal.dialog(
        parent_widget,
        'Add a task',
        'add',
        None,
        lambda taskForm: on_add(database, taskForm, add_task_signal))
    dialog.exec_()

def on_add(database, taskForm: TaskForm, add_task_signal):
    task = db.tasks.insert(database.cursor(), taskForm)
    database.commit()
    add_task_signal.emit(task)