Merge branch 'develop' into feature/UndoRedoWithModelData
This commit is contained in:
@ -6,8 +6,10 @@
|
||||
#include <QUndoStack>
|
||||
|
||||
#include "../../ApplicationConfig.h"
|
||||
#include "Dialogs/newitemdialog.h"
|
||||
#include "data/settingshandler.h"
|
||||
#include "genericcore.h"
|
||||
#include "model/tablemodel.h"
|
||||
|
||||
static QString updateTextClean = "Do you want to update the application now?";
|
||||
static QString updateTextDirty = "Do you want to save the tasks & update the application now?";
|
||||
@ -31,21 +33,27 @@ MainWindow::MainWindow(QWidget* parent)
|
||||
setWindowIcon(QIcon(iconString));
|
||||
#endif
|
||||
|
||||
createActions();
|
||||
createHelpMenu();
|
||||
|
||||
const QVariantMap settings = SettingsHandler::getSettings("GUI");
|
||||
restoreGeometry(settings.value("geometry").toByteArray());
|
||||
restoreState(settings.value("windowState").toByteArray());
|
||||
|
||||
m_tableModel = m_core->getModel();
|
||||
ui->tableView->setModel(m_tableModel.get());
|
||||
|
||||
createActions();
|
||||
createHelpMenu();
|
||||
createGuiDialogs();
|
||||
|
||||
connect(m_core.get(), &GenericCore::displayStatusMessage, this,
|
||||
&MainWindow::displayStatusMessage);
|
||||
connect(this, &MainWindow::displayStatusMessage, this, &MainWindow::showStatusMessage);
|
||||
connect(this, &MainWindow::checkForUpdates, this,
|
||||
&MainWindow::on_actionCheck_for_update_triggered, Qt::QueuedConnection);
|
||||
|
||||
m_tableModel = m_core->getModel();
|
||||
ui->tableView->setModel(m_tableModel.get());
|
||||
connect(ui->tableView->selectionModel(), &QItemSelectionModel::selectionChanged, this,
|
||||
&MainWindow::onSelectionChanged);
|
||||
|
||||
onSelectionChanged(QItemSelection(), QItemSelection());
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow() { delete ui; }
|
||||
@ -88,6 +96,26 @@ void MainWindow::closeEvent(QCloseEvent* event) {
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::showStatusMessage(const QString text) {
|
||||
qInfo() << text;
|
||||
ui->statusbar->showMessage(text);
|
||||
}
|
||||
|
||||
void MainWindow::onSelectionChanged(const QItemSelection& selected,
|
||||
const QItemSelection& deselected) {
|
||||
Q_UNUSED(selected);
|
||||
Q_UNUSED(deselected);
|
||||
|
||||
QItemSelection localSelection = ui->tableView->selectionModel()->selection();
|
||||
if (localSelection.empty()) {
|
||||
// qDebug() << "Nothing selected. Disabling delete action";
|
||||
m_deleteItemAct->setEnabled(false);
|
||||
} else {
|
||||
// qDebug() << "Something selected. Enabling delete action";
|
||||
m_deleteItemAct->setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::onAboutClicked() {
|
||||
const QString applicationName = APPLICATION_NAME;
|
||||
const QString titlePrefix = tr("About ");
|
||||
@ -102,11 +130,6 @@ void MainWindow::onAboutClicked() {
|
||||
QMessageBox::about(this, titlePrefix + applicationName, aboutText);
|
||||
}
|
||||
|
||||
void MainWindow::showStatusMessage(const QString text) {
|
||||
qInfo() << text;
|
||||
ui->statusbar->showMessage(text);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionCheck_for_update_triggered() {
|
||||
showStatusMessage("Checking for update...");
|
||||
const bool updateAvailable = m_core->isApplicationUpdateAvailable();
|
||||
@ -126,14 +149,28 @@ void MainWindow::on_pushButton_clicked() {
|
||||
ui->label->setText(prefix + m_core->toString());
|
||||
}
|
||||
|
||||
void MainWindow::createHelpMenu() {
|
||||
QMenu* helpMenu = ui->menu_Help;
|
||||
helpMenu->addSeparator();
|
||||
QAction* aboutAct = helpMenu->addAction(tr("&About"), this, &MainWindow::onAboutClicked);
|
||||
aboutAct->setStatusTip(tr("Show the application's About box"));
|
||||
void MainWindow::openNewItemDialog() {
|
||||
showStatusMessage(tr("Invoked 'Edit|New Item'"));
|
||||
m_newItemDialog->show();
|
||||
}
|
||||
|
||||
QAction* aboutQtAct = helpMenu->addAction(tr("About &Qt"), qApp, &QApplication::aboutQt);
|
||||
aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
|
||||
void MainWindow::deleteSelectedtItems() {
|
||||
showStatusMessage(tr("Invoked 'Edit|Delete Item'"));
|
||||
QItemSelection localSelection = ui->tableView->selectionModel()->selection();
|
||||
if (localSelection.empty()) {
|
||||
qDebug() << "No items selected. Nothing to remove.";
|
||||
} else {
|
||||
for (QList<QItemSelectionRange>::reverse_iterator iter = localSelection.rbegin(),
|
||||
rend = localSelection.rend();
|
||||
iter != rend; ++iter) {
|
||||
// qInfo() << "iter:" << *iter;
|
||||
// const QModelIndex parentIndex = iter->parent();
|
||||
const int topRow = iter->top();
|
||||
const int bottomRow = iter->bottom();
|
||||
const int nRows = bottomRow - topRow + 1;
|
||||
m_tableModel->removeRows(topRow, nRows);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::createActions() {
|
||||
@ -243,8 +280,7 @@ void MainWindow::createEditActions() {
|
||||
m_openNewItemDialogAct = make_unique<QAction>(tr("&New item"), this);
|
||||
m_openNewItemDialogAct->setShortcut(QKeySequence::New);
|
||||
m_openNewItemDialogAct->setStatusTip(tr("Opens a dialog to add a new item"));
|
||||
// connect(m_openNewItemDialogAct, &QAction::triggered, this, &MainWindow::openNewItemDialog);
|
||||
m_openNewItemDialogAct->setEnabled(false);
|
||||
connect(m_openNewItemDialogAct.get(), &QAction::triggered, this, &MainWindow::openNewItemDialog);
|
||||
ui->menu_Edit->addAction(m_openNewItemDialogAct.get());
|
||||
|
||||
m_openEditItemDialogAct = make_unique<QAction>(tr("&Edit item"), this);
|
||||
@ -254,11 +290,10 @@ void MainWindow::createEditActions() {
|
||||
m_openEditItemDialogAct->setEnabled(false);
|
||||
ui->menu_Edit->addAction(m_openEditItemDialogAct.get());
|
||||
|
||||
m_deleteItemAct = make_unique<QAction>(tr("&Delete item"), this);
|
||||
m_deleteItemAct = make_unique<QAction>(tr("&Delete item(s)"), this);
|
||||
m_deleteItemAct->setShortcuts(QKeySequence::Delete);
|
||||
m_deleteItemAct->setStatusTip(tr("Delete currently selected items"));
|
||||
// connect(m_deleteAct, &QAction::triggered, this, &MainWindow::deleteItem);
|
||||
m_deleteItemAct->setEnabled(false);
|
||||
m_deleteItemAct->setStatusTip(tr("Delete currently selected item(s)"));
|
||||
connect(m_deleteItemAct.get(), &QAction::triggered, this, &MainWindow::deleteSelectedtItems);
|
||||
ui->menu_Edit->addAction(m_deleteItemAct.get());
|
||||
|
||||
ui->menu_Edit->addSeparator();
|
||||
@ -270,3 +305,20 @@ void MainWindow::createEditActions() {
|
||||
m_findItemAct->setEnabled(false);
|
||||
ui->menu_Edit->addAction(m_findItemAct.get());
|
||||
}
|
||||
|
||||
void MainWindow::createHelpMenu() {
|
||||
QMenu* helpMenu = ui->menu_Help;
|
||||
helpMenu->addSeparator();
|
||||
QAction* aboutAct = helpMenu->addAction(tr("&About"), this, &MainWindow::onAboutClicked);
|
||||
aboutAct->setStatusTip(tr("Show the application's About box"));
|
||||
|
||||
QAction* aboutQtAct = helpMenu->addAction(tr("About &Qt"), qApp, &QApplication::aboutQt);
|
||||
aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
|
||||
}
|
||||
|
||||
void MainWindow::createGuiDialogs() {
|
||||
m_newItemDialog = make_unique<NewItemDialog>(this);
|
||||
m_newItemDialog->createContent();
|
||||
connect(m_newItemDialog.get(), &NewItemDialog::addItems, m_tableModel.get(),
|
||||
&TableModel::appendItems);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user