/
mob1le
/
simple-task-manager
Обзор
Документация
Войти
/
mob1le
/
simple-task-manager
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/mainwindow.cpp
133 строки
4 KB
bessalovs
fix id (now unique) + format all documents
13 май 2026, 13:41
13 май 2026, 13:41
621c9d5
Код
Авторство
О чём код?
#include "mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { this->setMinimumSize(500, 500); QWidget *centralWidget = new QWidget(this); setCentralWidget(centralWidget); centralWidget->setWindowTitle("WIP: Main window"); centralWidget->setWindowModality(Qt::WindowModality::ApplicationModal); vertic_layout = new QVBoxLayout(); horiz_layout = new QHBoxLayout(); search_field = new QLineEdit(); search_field->setPlaceholderText("Введите задачу ..."); search_field->setClearButtonEnabled(true); connect(search_field, &QLineEdit::textChanged, this, &MainWindow::onLiveChange); proxy_model = new QSortFilterProxyModel(); table_task = new QTableView(); task_model = new TaskModel(); proxy_model->setSourceModel(task_model); table_task->setModel(proxy_model); table_task->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); table_task->setSelectionBehavior(QAbstractItemView::SelectRows); table_task->setColumnHidden(MyColumns::Id, true); table_task->setColumnHidden(MyColumns::IsCompleted, true); connect(table_task->selectionModel(), &QItemSelectionModel::selectionChanged, this, &MainWindow::onSelectionChanged); // Buttons layout button_add = new QPushButton("add"); button_edit = new QPushButton("edit"); button_delete = new QPushButton("delete"); button_complete = new QPushButton("complete"); horiz_layout->addWidget(button_add); horiz_layout->addWidget(button_edit); horiz_layout->addWidget(button_delete); horiz_layout->addWidget(button_complete); group = new QButtonGroup(); group->addButton(button_add, 0); group->addButton(button_edit, 1); group->addButton(button_delete, 2); group->addButton(button_complete, 3); connect(group, &QButtonGroup::buttonClicked, this, &MainWindow::onButtonClickedByPointer); vertic_layout->addWidget(search_field); vertic_layout->addWidget(table_task); vertic_layout->addLayout(horiz_layout); centralWidget->setLayout(vertic_layout); adjustSize(); task_manager = new TaskManager(); QList<Task> saved_task = task_manager->loadTasksFromJson(); for (const Task &task : saved_task) { task_model->addTask(task); } } MainWindow::~MainWindow() { task_manager->saveTasksToJson(task_model->getTaskList()); } void MainWindow::onSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { Q_UNUSED(deselected); QModelIndexList selected_index = selected.indexes(); if (!selected_index.isEmpty()) { QModelIndex first_index = selected_index.first(); selected_task = Task::fromModel(task_model, first_index); } } void MainWindow::onLiveChange(const QString &filterText) { proxy_model->setFilterFixedString(filterText); proxy_model->setFilterCaseSensitivity(Qt::CaseInsensitive); proxy_model->setFilterKeyColumn(MyColumns::Title); } void MainWindow::onButtonClickedByPointer(QAbstractButton *button) { int id = group->id(button); switch (id) { case ClickedButton::Add: { NewTaskDialog dialog = new NewTaskDialog(this); dialog.setModal(true); if (dialog.exec() == QDialog::Accepted) { const Task *new_Task = new Task(dialog.getTitle(), dialog.getDescription()); task_model->addTask(*new_Task); } break; } case ClickedButton::Edit: { EditTaskDialog dialog( selected_task.getTitle(), selected_task.getDesription(), this); if (dialog.exec() == QDialog::Accepted) { task_model->editTask(selected_task.getId(), dialog.getEditTitle(), dialog.getEditDescription()); } break; } case ClickedButton::Delete: { task_model->removeTask(selected_task.getId()); break; } case ClickedButton::Complete: { task_model->completeTask(selected_task.getId()); break; } default: break; } }