-
Notifications
You must be signed in to change notification settings - Fork 0
/
MainWindow.cpp
75 lines (58 loc) · 1.59 KB
/
MainWindow.cpp
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
#include "MainWindow.h"
#include "ui_MainWindow.h"
#include <QDebug>
#include <QInputDialog>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
mTasks() //Initialisierung des Vectors
{
ui->setupUi(this);
connect(ui->addTaskButton, &QPushButton::clicked,
this, &MainWindow::addTask);
updateStatus();
}
MainWindow::~MainWindow() {
delete ui;
}
void MainWindow::addTask() {
bool ok;
QString name = QInputDialog::getText(this,
tr("Add task"),
tr("Task name"),
QLineEdit::Normal,
tr("Untitled task"),
&ok);
if (ok && !name.isEmpty()) {
qDebug() << "Adding new task";
Task* task = new Task(name);
connect(task, &Task::removed, this, &MainWindow::removeTask);
connect(task, &Task::statusChanged, this, &MainWindow::taskStatusChanged);
mTasks.append(task);
ui->tasksLayout->addWidget(task);
updateStatus();
}
}
void MainWindow::removeTask(Task *task) {
mTasks.removeOne(task);
ui->tasksLayout->removeWidget(task);
task->setParent(0);
delete task;
updateStatus();
}
void MainWindow::taskStatusChanged(Task* /*task*/) {
updateStatus();
}
void MainWindow::updateStatus() {
int completedCount = 0;
for (auto t : mTasks) {
if (t->isCompleted()) {
completedCount++;
}
}
int todoCount = mTasks.size() - completedCount;
ui->statuLabel->setText(
QString("Status: %1 todo / %2 completed")
.arg(todoCount)
.arg(completedCount));
}