diff options
author | nils <nils@34ebc366-c3a9-4b3c-9f84-69acf7962910> | 2012-09-29 21:25:19 +0000 |
---|---|---|
committer | nils <nils@34ebc366-c3a9-4b3c-9f84-69acf7962910> | 2012-09-29 21:25:19 +0000 |
commit | d3552083a20cff8cd4c4f05c8ec9614f0f4cef74 (patch) | |
tree | 1dce8ec30a51949c9c3718922eaaa0cad6122f8e | |
parent | source should be free of gpgme references now (diff) | |
download | gpg4usb-d3552083a20cff8cd4c4f05c8ec9614f0f4cef74.tar.gz gpg4usb-d3552083a20cff8cd4c4f05c8ec9614f0f4cef74.zip |
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
-rw-r--r-- | mainwindow.cpp | 86 | ||||
-rw-r--r-- | 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("<i> <"); + keynames.append(mCtx->getKeyDetails(uid).email()); + keynames.append("> </i><br/>"); + } + + int ret = QMessageBox::warning(this, tr("Deleting Keys"), + "<b>"+tr("Are you sure that you want to delete the following keys?")+"</b><br/><br/>"+keynames+ + +"<br/>"+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<KGpgDelKey *>(sender()); + + /*KGpgKeyNode *delkey = m_delkey->keys().first(); + if (retcode == 0) { + KMessageBox::information(this, i18n("Key <b>%1</b> deleted.", delkey->getBeautifiedFingerprint()), i18n("Delete key")); + imodel->delNode(delkey); + } else { + KMessageBox::error(this, i18n("Deleting key <b>%1</b> 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(); @@ -270,6 +290,11 @@ private: void createDockWindows(); /** + * @details Create the context menu of the keylist. + */ + void createKeyListMenu(); + + /** * @details Create attachment-dockwindow. */ void createAttachmentDock(); @@ -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 */ |