aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mainwindow.cpp86
-rw-r--r--mainwindow.h31
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> &lt;");
+ keynames.append(mCtx->getKeyDetails(uid).email());
+ keynames.append("&gt; </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 */