-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy patheventdialog.cpp
More file actions
113 lines (91 loc) · 3.76 KB
/
Copy patheventdialog.cpp
File metadata and controls
113 lines (91 loc) · 3.76 KB
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "eventdialog.h"
EventDialog::EventDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::EventDialog)
{
ui->setupUi(this);
for (Category c : Category::cats) {
ui->catBox->addItem(QString::fromStdString(c.name));
}
}
EventDialog::~EventDialog()
{
delete ui;
}
/**
* @brief EventDialog::on_addButton_clicked
*/
void EventDialog::on_addButton_clicked()
{
if (ui->catBox->currentIndex() == -1) return; // no category selected yet
string lineText = ui->nameLine->text().toStdString(); // initialize current input
// date formats
QDateTime start = ui->start->dateTime();
QDateTime end = ui->end->dateTime();
QDate startDate = start.date();
QDate endDate = end.date();
// start is same/later than end or exceeds 24 hours
if (start >= end || endDate.day() - startDate.day() > 1) return;
QTime startTime = start.time();
QTime endTime = end.time();
int startMin = startTime.hour() * 60 + startTime.minute();
int endMin = endTime.hour() * 60 + endTime.minute();
cout << "CAT : " << ui->catBox->currentData().toString().toStdString() << endl; // This is not getting the text
Category cat = Category::findCat(ui->catBox->currentData().toString().toStdString());
if (startDate.day() == endDate.day()) {
Event* e = new Event(cat, lineText, startMin, endMin);
int i = MainWindow::findDay(startDate.year(), startDate.month(), startDate.day());
if(i == -1){
MainWindow::daysHolder.push_back(new Day(startDate.year(), startDate.month(), startDate.day()));
i = MainWindow::daysHolder.size() - 1; // Newly added day
}
cout << e->toString();
MainWindow::daysHolder[i]->addEvent(e);
save_to_db(startDate.year(), startDate.month(), startDate.day(), startMin, endMin, cat, lineText);
} else { // split event across two days
Event* e1 = new Event(cat, lineText, startMin, 1440);
Event* e2 = new Event(cat, lineText, 0, endMin);
int i1 = MainWindow::findDay(startDate.year(), startDate.month(), startDate.day());
if(i1 == -1){
MainWindow::daysHolder.push_back(new Day(startDate.year(), startDate.month(), startDate.day()));
i1 = MainWindow::daysHolder.size() - 1; // Newly added day
}
int i2 = MainWindow::findDay(endDate.year(), endDate.month(), endDate.day());
if(i2 == -1){
MainWindow::daysHolder.push_back(new Day(endDate.year(), endDate.month(), endDate.day()));
i2 = MainWindow::daysHolder.size() - 1; // Newly added day
}
MainWindow::daysHolder[i1]->addEvent(e1);
cout << e1->toString();
save_to_db(startDate.year(), startDate.month(), startDate.day(), startMin, 1440, cat, lineText);
MainWindow::daysHolder[i2]->addEvent(e2);
cout << e2->toString();
save_to_db(endDate.year(), endDate.month(), endDate.day(), 0, endMin, cat, lineText);
}
done(0);
}
/**
* @brief EventDialog::on_cancelButton_clicked closes the dialog window
*/
void EventDialog::on_cancelButton_clicked()
{
done(0);
}
void EventDialog::save_to_db(int year, int month, int day, int start_min, int end_min, Category cat, string event){
QSqlQuery qry;
qry.prepare("INSERT INTO event_list VALUES(?,?,?,?,?,?,?)");
qry.addBindValue(year);
qry.addBindValue(month);
qry.addBindValue(day);
qry.addBindValue(start_min);
qry.addBindValue(end_min);
qry.addBindValue(QString::fromStdString(cat.name));
qry.addBindValue(QString::fromStdString(event));
if(qry.exec()){
QMessageBox::critical(this,tr("Save"),tr("Saved"));
}else{
QMessageBox::critical(this,tr("error::"),qry.lastError().text());
}
// Update the PieChart
// Only printing one day's piechart
}