summaryrefslogtreecommitdiff
path: root/src/add_entry_form.py
blob: 9550108f32c0a3f77af45d52909cdcb4c787d4aa (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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import sys
from PyQt5.QtWidgets import QApplication, QCheckBox, QDateTimeEdit, QDialog, QFormLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton
from PyQt5.QtGui import QFont
from PyQt5.QtCore import QDate, Qt
from src.entry import Entry
import src.globals as Globals
import src.db_sqlite as DB

class addEntryForm(QDialog):
    def __init__(self, parent):
        super().__init__()
        self.initializeUI(parent)

    def initializeUI(self, parent):
        self.resize(400, 1)
        self.setWindowTitle("Add Entry")
        self.displayWidgets(parent)
        self.exec()

    def displayWidgets(self, parent):
        entry_form_layout = QFormLayout()

        title = QLabel("Add Entry")
        title.setFont(QFont("Arial", 18))
        title.setAlignment(Qt.AlignCenter)
        entry_form_layout.addRow(title)

        self.new_entry_desc = QLineEdit()
        entry_form_layout.addRow("Description:", self.new_entry_desc)

        self.due_hbox = QHBoxLayout()
        self.new_entry_due = QDateTimeEdit(QDate.currentDate())
        self.new_entry_due.setDisplayFormat("MM/dd/yyyy")
        self.due_hbox.addWidget(self.new_entry_due)
        self.new_entry_due_checkbox = QCheckBox()
        self.new_entry_due_checkbox.setChecked(True)
        self.due_hbox.addWidget(self.new_entry_due_checkbox)
        entry_form_layout.addRow("Due Date:", self.due_hbox)

        self.new_entry_due_alt = QLineEdit()
        entry_form_layout.addRow("Due Date (Alt):", self.new_entry_due_alt)

        self.new_entry_link = QLineEdit() # TODO see if there is a widget specifically for URLs
        entry_form_layout.addRow("Link:", self.new_entry_link)

        # TODO:
            # depends

        self.new_entry_color = QLineEdit()
        entry_form_layout.addRow("Color:", self.new_entry_color)

        self.new_entry_highlight = QLineEdit()
        entry_form_layout.addRow("Highlight:", self.new_entry_highlight)

        # Submit and cancel buttons
        buttons_h_box = QHBoxLayout()
        buttons_h_box.addStretch()
        close_button = QPushButton("Cancel")
        close_button.clicked.connect(self.close)
        buttons_h_box.addWidget(close_button)
        submit_button = QPushButton("Submit")
        submit_button.clicked.connect(lambda: self.handleSubmit(parent))
        buttons_h_box.addWidget(submit_button)
        buttons_h_box.addStretch()

        entry_form_layout.addRow(buttons_h_box)

        self.setLayout(entry_form_layout)

    def handleSubmit(self, parent):
        # Check that the new entry is not blank
        desc_text = self.new_entry_desc.text()
        due_text = ""
        if self.new_entry_due_checkbox.isChecked():
            due_text = self.new_entry_due.date() # due_text is a QDate
        due_alt_text = self.new_entry_due_alt.text()
        link_text = self.new_entry_link.text()
        color_text = self.new_entry_color.text()
        highlight_text = self.new_entry_highlight.text()

        if not desc_text:
            QMessageBox.warning(self, "Error Message",
                                "Description cannot be blank",
                                QMessageBox.Close,
                                QMessageBox.Close)
            return

        new_id = DB.insertEntry(Entry(0, parent, desc_text, due_text, due_alt_text, link_text, color_text, highlight_text))
        Globals.entries.append(Entry(new_id, parent, desc_text, due_text, due_alt_text, link_text, color_text, highlight_text))
        self.close()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = addEntryForm()
    sys.exit(app.exec_())