diff options
author | nils <nils@34ebc366-c3a9-4b3c-9f84-69acf7962910> | 2011-03-14 09:16:57 +0000 |
---|---|---|
committer | nils <nils@34ebc366-c3a9-4b3c-9f84-69acf7962910> | 2011-03-14 09:16:57 +0000 |
commit | 450a57167f6b79da183e946ccccee3b71c24b9c1 (patch) | |
tree | 472ad5de004c9c260d80f23812640780a15e005e | |
parent | added method for message in keyserverimportdialog (diff) | |
download | gpg4usb-450a57167f6b79da183e946ccccee3b71c24b9c1.tar.gz gpg4usb-450a57167f6b79da183e946ccccee3b71c24b9c1.zip |
import of keys from keyserver works now
git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@482 34ebc366-c3a9-4b3c-9f84-69acf7962910
Diffstat (limited to '')
-rw-r--r-- | gpgwin.cpp | 2 | ||||
-rw-r--r-- | keyserverimportdialog.cpp | 92 | ||||
-rw-r--r-- | keyserverimportdialog.h | 11 |
3 files changed, 73 insertions, 32 deletions
@@ -645,7 +645,7 @@ void GpgWin::importKeyFromClipboard() } void GpgWin::importKeyFromKeyServer() { - importDialog = new KeyServerImportDialog(this); + importDialog = new KeyServerImportDialog(mCtx, this); importDialog->show(); } void GpgWin::importKeyFromFile() diff --git a/keyserverimportdialog.cpp b/keyserverimportdialog.cpp index 9d77164..e5b9515 100644 --- a/keyserverimportdialog.cpp +++ b/keyserverimportdialog.cpp @@ -25,9 +25,11 @@ #include "keyserverimportdialog.h" -KeyServerImportDialog::KeyServerImportDialog(QWidget *parent) +KeyServerImportDialog::KeyServerImportDialog(GpgME::Context *ctx, QWidget *parent) : QDialog(parent) { + mCtx = ctx; + message = new QLabel; message->setAutoFillBackground(true); closeButton = createButton(tr("&Close"), SLOT(close())); @@ -38,10 +40,7 @@ KeyServerImportDialog::KeyServerImportDialog(QWidget *parent) searchLabel = new QLabel(tr("Seacrh string:")); keyServerLabel = new QLabel(tr("Keyserver:")); - message = new QLabel; - - createKeysTree(); - + createKeysTable(); QHBoxLayout *buttonsLayout = new QHBoxLayout; buttonsLayout->addStretch(); buttonsLayout->addWidget(importButton); @@ -53,7 +52,7 @@ KeyServerImportDialog::KeyServerImportDialog(QWidget *parent) mainLayout->addWidget(searchButton,1, 2); mainLayout->addWidget(keyServerLabel, 2, 0); mainLayout->addWidget(keyServerComboBox, 2, 1); - mainLayout->addWidget(keysTree, 3, 0, 1, 3); + mainLayout->addWidget(keysTable, 3, 0, 1, 3); mainLayout->addWidget(message, 4, 0, 1, 3); mainLayout->addLayout(buttonsLayout, 5, 0, 1, 3); setLayout(mainLayout); @@ -68,12 +67,6 @@ static void updateComboBox(QComboBox *comboBox) comboBox->addItem(comboBox->currentText()); } -void KeyServerImportDialog::import() -{ - updateComboBox(keyServerComboBox); - setMessage("keys imported",false); -} - QPushButton *KeyServerImportDialog::createButton(const QString &text, const char *member) { QPushButton *button = new QPushButton(text); @@ -90,23 +83,23 @@ QComboBox *KeyServerImportDialog::createComboBox(const QString &text) return comboBox; } -void KeyServerImportDialog::createKeysTree() +void KeyServerImportDialog::createKeysTable() { - keysTree = new QTreeWidget(); - keysTree->setColumnCount(2); + keysTable = new QTableWidget(); + keysTable->setColumnCount(3); + keysTable->setSelectionBehavior(QAbstractItemView::SelectRows); + keysTable->setEditTriggers(QAbstractItemView::NoEditTriggers); QStringList labels; - labels << tr("KeyID") << tr("UID"); - keysTree->setHeaderLabels(labels); - /*keysTree->setSelectionBehavior(QAbstractItemView::SelectRows); - keysTree->setHorizontalHeaderLabels(labels); - keysTree->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch); - keysTree->verticalHeader()->hide(); - keysTree->setShowGrid(false);*/ + labels << tr("KeyID") << tr("UID") << tr("Keylength"); + keysTable->setHorizontalHeaderLabels(labels); + keysTable->verticalHeader()->hide(); + keysTable->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch); //connect(keysTree, SIGNAL(cellActivated(int,int)), // this, SLOT(importKeyOfItem(int,int))); } + void KeyServerImportDialog::setMessage(const QString &text, bool error) { message->setText(text); @@ -137,7 +130,7 @@ void KeyServerImportDialog::search() void KeyServerImportDialog::searchFinished() { QString firstLine = QString(reply->readLine(1024)); - // TODO: die liste erstmal leeren, bevor sie neu betankt wird + QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (reply->error()) { setMessage("Error while contacting keyserver!",true); @@ -154,27 +147,70 @@ void KeyServerImportDialog::searchFinished() setMessage("No keys found containing the search string!",true); } } else { + keysTable->clearContents(); + int row = 0; char buff[1024]; QList <QTreeWidgetItem*> items; while (reply->readLine(buff,sizeof(buff)) !=-1) { QStringList line= QString(buff).split(":"); - qDebug() << line; + // qDebug() << line; if (line[0] == "pub") { + keysTable->setRowCount(row+1); QStringList line2 = QString(reply->readLine()).split(":"); QStringList l; l << line[1] << line2[1]; - qDebug() << "l:" << l; - items.append(new QTreeWidgetItem((QTreeWidget*) 0,l)); + QTableWidgetItem *tmp1 = new QTableWidgetItem(line[1]); + keysTable->setItem(row, 0, tmp1); + QTableWidgetItem *tmp2 = new QTableWidgetItem(line2[1]); + keysTable->setItem(row, 1, tmp2); + QTableWidgetItem *tmp3 = new QTableWidgetItem(line[3]); + keysTable->setItem(row, 2, tmp3); + row++; } else { if (line[0] == "uid") { QStringList l; l << "" << line[1]; - items.last()->addChild(new QTreeWidgetItem((QTreeWidget*) 0, l)); + int height=keysTable->rowHeight(row-1); + keysTable->setRowHeight(row-1,height+16); + QString tmp=keysTable->item(row-1,1)->text(); + tmp.append(QString("\n")+line[1]); + QTableWidgetItem *tmp1 = new QTableWidgetItem(tmp); + keysTable->setItem(row-1,1,tmp1); } } } - keysTree->insertTopLevelItems(0,items); + //keysTree->insertTopLevelItems(0,items); + keysTable->resizeColumnsToContents(); } reply->deleteLater(); reply = 0; } + +void KeyServerImportDialog::import() +{ + updateComboBox(keyServerComboBox); + QString keyid = keysTable->item(keysTable->currentRow(),0)->text(); + QUrl url = keyServerComboBox->currentText()+":11371/pks/lookup?op=get&search=0x"+keyid+"&options=mr"; + reply2 = qnam.get(QNetworkRequest(url)); + connect(reply2, SIGNAL(finished()), + this, SLOT(importFinished())); +} +void KeyServerImportDialog::importFinished() +{ + QByteArray *key = new QByteArray(); + key->append(reply2->readAll()); + + // TODO: die liste erstmal leeren, bevor sie neu betankt wird + QVariant redirectionTarget = reply2->attribute(QNetworkRequest::RedirectionTargetAttribute); + if (reply2->error()) { + setMessage("Error while contacting keyserver!",true); + } else { + qDebug() << "downloaded"; + } + qDebug() << *key; + mCtx->importKey(*key); + setMessage("key imported",false); + reply2->deleteLater(); + reply2 = 0; +} + diff --git a/keyserverimportdialog.h b/keyserverimportdialog.h index a727fbc..b55f6b8 100644 --- a/keyserverimportdialog.h +++ b/keyserverimportdialog.h @@ -28,6 +28,8 @@ #include <QNetworkAccessManager> #include <QUrl> +#include "context.h" + QT_BEGIN_NAMESPACE class QNetworkReply; class QComboBox; @@ -51,19 +53,21 @@ class KeyServerImportDialog : public QDialog Q_OBJECT public: - KeyServerImportDialog(QWidget *parent = 0); + KeyServerImportDialog(GpgME::Context *ctx, QWidget *parent = 0); private slots: void import(); void importKeyOfItem(int row, int column); void searchFinished(); + void importFinished(); void search(); private: - void createKeysTree(); + void createKeysTable(); void setMessage(const QString &text, bool error); QPushButton *createButton(const QString &text, const char *member); QComboBox *createComboBox(const QString &text = QString()); + GpgME::Context *mCtx; QLineEdit *searchLineEdit; QComboBox *keyServerComboBox; @@ -73,9 +77,10 @@ private: QPushButton *closeButton; QPushButton *importButton; QPushButton *searchButton; - QTreeWidget *keysTree; + QTableWidget *keysTable; QUrl url; QNetworkAccessManager qnam; QNetworkReply *reply; + QNetworkReply *reply2; }; #endif |