From d3552083a20cff8cd4c4f05c8ec9614f0f4cef74 Mon Sep 17 00:00:00 2001 From: nils Date: Sat, 29 Sep 2012 21:25:19 +0000 Subject: added delete keys actions to mainwindows menubar and keylists contextmenu git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@972 34ebc366-c3a9-4b3c-9f84-69acf7962910 --- mainwindow.cpp | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- mainwindow.h | 31 +++++++++++++++++++-- 2 files changed, 109 insertions(+), 8 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 2f5722e..64814c4 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -48,18 +48,13 @@ MainWindow::MainWindow() createActions(); createMenus(); + createKeyListMenu(); createToolBars(); createStatusBar(); createDockWindows(); connect(edit->tabWidget,SIGNAL(currentChanged(int)),this,SLOT(disableTabActions(int))); - mKeyList->addMenuAction(appendSelectedKeysAct); - mKeyList->addMenuAction(copyMailAddressToClipboardAct); - mKeyList->addMenuAction(showKeyDetailsAct); - mKeyList->addMenuAction(refreshKeysFromKeyserverAct); - mKeyList->addMenuAction(uploadKeyToServerAct); - restoreSettings(); // open filename if provided as first command line parameter @@ -360,6 +355,15 @@ void MainWindow::createActions() showKeyDetailsAct->setToolTip(tr("Show Details for this Key")); connect(showKeyDetailsAct, SIGNAL(triggered()), this, SLOT(showKeyDetails())); + deleteSelectedKeysAct = new QAction(tr("Delete Selected Key(s)"), this); + deleteSelectedKeysAct->setToolTip(tr("Delete the Selected keys")); + connect(deleteSelectedKeysAct, SIGNAL(triggered()), this, SLOT(deleteSelectedKeys())); + + deleteCheckedKeysAct = new QAction(tr("Delete Checked Key(s)"), this); + deleteCheckedKeysAct->setToolTip(tr("Delete the Checked keys")); + deleteCheckedKeysAct->setIcon(QIcon(":button_cancel.png")); + connect(deleteCheckedKeysAct, SIGNAL(triggered()), this, SLOT(deleteCheckedKeys())); + refreshKeysFromKeyserverAct = new QAction(tr("Refresh key from keyserver"), this); refreshKeysFromKeyserverAct->setToolTip(tr("Refresh key from default keyserver")); connect(refreshKeysFromKeyserverAct, SIGNAL(triggered()), this, SLOT(refreshKeysFromKeyserver())); @@ -476,9 +480,13 @@ void MainWindow::createMenus() importKeyMenu->setIcon(QIcon(":key_import.png")); importKeyMenu->addAction(keyMgmt->importKeyFromFileAct); importKeyMenu->addAction(importKeyFromEditAct); + importKeyMenu->addAction(keyMgmt->importKeyFromClipboardAct); importKeyMenu->addAction(keyMgmt->importKeyFromKeyServerAct); importKeyMenu->addAction(keyMgmt->importKeyFromKeyServerAct); + + keyMenu->addSeparator(); + keyMenu->addAction(deleteCheckedKeysAct); keyMenu->addAction(openKeyManagementAct); steganoMenu = menuBar()->addMenu(tr("&Steganography")); @@ -503,6 +511,16 @@ void MainWindow::createMenus() } +void MainWindow::createKeyListMenu() +{ + mKeyList->addMenuAction(appendSelectedKeysAct); + mKeyList->addMenuAction(copyMailAddressToClipboardAct); + mKeyList->addMenuAction(showKeyDetailsAct); + mKeyList->addMenuAction(refreshKeysFromKeyserverAct); + mKeyList->addMenuAction(uploadKeyToServerAct); + mKeyList->addMenuAction(deleteSelectedKeysAct); +} + void MainWindow::createToolBars() { fileToolBar = addToolBar(tr("File")); @@ -733,6 +751,62 @@ void MainWindow::checkAttachmentFolder() { } } +void MainWindow::deleteSelectedKeys() +{ + deleteKeysWithWarning(mKeyList->getSelected()); +} + +void MainWindow::deleteCheckedKeys() +{ + deleteKeysWithWarning(mKeyList->getChecked()); +} + +void MainWindow::deleteKeysWithWarning(QStringList *uidList) +{ + /** + * TODO: Different Messages for private/public key, check if + * more than one selected... compare to seahorse "delete-dialog" + */ + + if (uidList->isEmpty()) { + return; + } + QString keynames; + foreach (QString uid, *uidList) { + keynames.append(mCtx->getKeyDetails(uid).name()); + keynames.append(" <"); + keynames.append(mCtx->getKeyDetails(uid).email()); + keynames.append(">
"); + } + + int ret = QMessageBox::warning(this, tr("Deleting Keys"), + ""+tr("Are you sure that you want to delete the following keys?")+"

"+keynames+ + +"
"+tr("The action can not be undone."), + QMessageBox::No | QMessageBox::Yes); + + if (ret == QMessageBox::Yes) { + //mCtx->deleteKeys(uidList); + KGpgDelKey *delkey = new KGpgDelKey(this, *uidList); + connect(delkey, SIGNAL(done(int)), SLOT(slotKeyDeleted(int))); + delkey->start(); + } +} + +void MainWindow::slotKeyDeleted(int retcode) +{ + KGpgDelKey *delkey = qobject_cast(sender()); + + /*KGpgKeyNode *delkey = m_delkey->keys().first(); + if (retcode == 0) { + KMessageBox::information(this, i18n("Key %1 deleted.", delkey->getBeautifiedFingerprint()), i18n("Delete key")); + imodel->delNode(delkey); + } else { + KMessageBox::error(this, i18n("Deleting key %1 failed.", delkey->getBeautifiedFingerprint()), i18n("Delete key")); + }*/ + mCtx->emitKeyDBChanged(); + delkey->deleteLater(); +} + void MainWindow::importKeyFromEdit() { if (edit->tabCount()==0 || edit->curPage() == 0) { diff --git a/mainwindow.h b/mainwindow.h index 6dd78b2..45b2ecf 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -139,7 +139,27 @@ private slots: /** * @details start the wizard */ - void startWizard(); + void startWizard(); + + /** + * @details Delete selected keys in keyklist + */ + void deleteSelectedKeys(); + + /** + * @details Delete checked keys in keyklist + */ + void deleteCheckedKeys(); + + /** + * @details Slot called after deleting keys + */ + void slotKeyDeleted(int retcode); + + /** + * @details Delete keys, but show a warn dialog before + */ + void deleteKeysWithWarning(QStringList *uidList); /** * @details Import keys from currently active tab to keylist if possible. @@ -245,7 +265,7 @@ private slots: private: /** - * @details Create actions for the main-menu and the context-menu of the keylist. + * @details Create actions for the main-menu. */ void createActions(); @@ -269,6 +289,11 @@ private: */ void createDockWindows(); + /** + * @details Create the context menu of the keylist. + */ + void createKeyListMenu(); + /** * @details Create attachment-dockwindow. */ @@ -363,6 +388,8 @@ private: QAction *openTutorialAct; /** Action to open tutorial */ QAction *openHelpAct; /** Action to open tutorial */ QAction *showKeyDetailsAct; /** Action to open key-details dialog */ + QAction *deleteSelectedKeysAct; /** Action to delete selected keys */ + QAction *deleteCheckedKeysAct; /** Action to delete checked keys */ QAction *refreshKeysFromKeyserverAct; /** Action to refresh a key from keyserver */ QAction *uploadKeyToServerAct; /** Action to append selected keys to edit */ QAction *startWizardAct; /** Action to open the wizard */ -- cgit v1.2.3