diff options
author | Saturneric <[email protected]> | 2021-05-12 02:14:58 +0000 |
---|---|---|
committer | Saturneric <[email protected]> | 2021-05-12 02:14:58 +0000 |
commit | 26691b14d7d3294769c1cb0d0e099efd75dcc6c6 (patch) | |
tree | 7e16cb949955e635bada530ba7fd23a43ef8e4bb /src/ui/QuitDialog.cpp | |
parent | Srouce Files Tidy and Reform (diff) | |
download | GpgFrontend-26691b14d7d3294769c1cb0d0e099efd75dcc6c6.tar.gz GpgFrontend-26691b14d7d3294769c1cb0d0e099efd75dcc6c6.zip |
File Structure Modified.
Change Headers and Source Files Name.
Modified CMake Structure.
Diffstat (limited to 'src/ui/QuitDialog.cpp')
-rwxr-xr-x | src/ui/QuitDialog.cpp | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/src/ui/QuitDialog.cpp b/src/ui/QuitDialog.cpp new file mode 100755 index 00000000..8003527f --- /dev/null +++ b/src/ui/QuitDialog.cpp @@ -0,0 +1,129 @@ +/* + * + * keymgmt.cpp + * + * Copyright 2008 gpg4usb-team <[email protected]> + * + * This file is part of gpg4usb. + * + * Gpg4usb is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Gpg4usb is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with gpg4usb. If not, see <http://www.gnu.org/licenses/> + */ + +#include "ui/QuitDialog.h" + +QuitDialog::QuitDialog(QWidget *parent, const QHash<int, QString>& unsavedDocs) + : QDialog(parent) { + setWindowTitle(tr("Unsaved files")); + setModal(true); + discarded = false; + + /* + * Table of unsaved documents + */ + QHashIterator<int, QString> i(unsavedDocs); + int row = 0; + mFileList = new QTableWidget(this); + mFileList->horizontalHeader()->hide(); + mFileList->setColumnCount(3); + mFileList->setColumnWidth(0, 20); + mFileList->setColumnHidden(2, true); + mFileList->verticalHeader()->hide(); + mFileList->setShowGrid(false); + mFileList->setEditTriggers(QAbstractItemView::NoEditTriggers); + mFileList->setFocusPolicy(Qt::NoFocus); + mFileList->horizontalHeader()->setStretchLastSection(true); + // fill the table + i.toBack(); //jump to the end of list to fill the table backwards + while (i.hasPrevious()) { + i.previous(); + mFileList->setRowCount(mFileList->rowCount() + 1); + + // checkbox in front of filename + auto *tmp0 = new QTableWidgetItem(); + tmp0->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); + tmp0->setCheckState(Qt::Checked); + mFileList->setItem(row, 0, tmp0); + + // filename + auto *tmp1 = new QTableWidgetItem(i.value()); + mFileList->setItem(row, 1, tmp1); + + // tab-index in hidden column + auto *tmp2 = new QTableWidgetItem(QString::number(i.key())); + mFileList->setItem(row, 2, tmp2); + ++row; + } + /* + * Warnbox with icon and text + */ + auto *pixmap = new QPixmap(":error.png"); + auto *warnicon = new QLabel(); + warnicon->setPixmap(*pixmap); + auto *warnlabel = new QLabel( + tr("<h3>%1 files contain unsaved information.<br/>Save the changes before closing?</h3>").arg(row)); + auto *warnBoxLayout = new QHBoxLayout(); + warnBoxLayout->addWidget(warnicon); + warnBoxLayout->addWidget(warnlabel); + warnBoxLayout->setAlignment(Qt::AlignLeft); + auto *warnBox = new QWidget(this); + warnBox->setLayout(warnBoxLayout); + + /* + * Two labels on top and under the filelist + */ + auto *checkLabel = new QLabel(tr("Check the files you want to save:")); + auto *notelabel = new QLabel(tr("<b>Note:</b> If you don't save these files, all changes are lost.<br/>")); + + /* + * Buttonbox + */ + auto *buttonBox = new QDialogButtonBox( + QDialogButtonBox::Discard | QDialogButtonBox::Save | QDialogButtonBox::Cancel); + connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); + connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); + QPushButton *btnNoKey = buttonBox->button(QDialogButtonBox::Discard); + connect(btnNoKey, SIGNAL(clicked()), SLOT(slotMyDiscard())); + + /* + * Set the layout + */ + auto *vbox = new QVBoxLayout(); + vbox->addWidget(warnBox); + vbox->addWidget(checkLabel); + vbox->addWidget(mFileList); + vbox->addWidget(notelabel); + vbox->addWidget(buttonBox); + this->setLayout(vbox); +} + + +void QuitDialog::slotMyDiscard() { + discarded = true; + reject(); +} + +bool QuitDialog::isDiscarded() const { + return discarded; +} + +QList<int> QuitDialog::getTabIdsToSave() { + QList<int> tabIdsToSave; + for (int i = 0; i < mFileList->rowCount(); i++) { + if (mFileList->item(i, 0)->checkState() == Qt::Checked) { + tabIdsToSave << mFileList->item(i, 2)->text().toInt(); + } + } + return tabIdsToSave; +} + |