aboutsummaryrefslogtreecommitdiffstats
path: root/keylist.cpp
diff options
context:
space:
mode:
authorNils Achtergarde <[email protected]>2018-01-04 22:39:25 +0100
committerNils Achtergarde <[email protected]>2018-01-04 22:39:25 +0100
commitb36dc4d79f446ae69aeb85137663a4e0ca23eba2 (patch)
tree23d0ae5e94e874064143735c249a2ad2cb95ad16 /keylist.cpp
parentadded .gitignore with mocfiles-dir and objectfiles-dir (diff)
downloadgpg4usb-b36dc4d79f446ae69aeb85137663a4e0ca23eba2.tar.gz
gpg4usb-b36dc4d79f446ae69aeb85137663a4e0ca23eba2.zip
put *.h and *.cpp to src-subdirectory
Diffstat (limited to 'keylist.cpp')
-rw-r--r--keylist.cpp321
1 files changed, 0 insertions, 321 deletions
diff --git a/keylist.cpp b/keylist.cpp
deleted file mode 100644
index cd01a2e..0000000
--- a/keylist.cpp
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * keylist.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 "keylist.h"
-
-KeyList::KeyList(GpgME::GpgContext *ctx, QWidget *parent)
- : QWidget(parent)
-{
- mCtx = ctx;
-
- mKeyList = new QTableWidget(this);
- mKeyList->setColumnCount(6);
- mKeyList->verticalHeader()->hide();
- mKeyList->setShowGrid(false);
- mKeyList->setColumnWidth(0, 24);
- mKeyList->setColumnWidth(1, 20);
- mKeyList->sortByColumn(2, Qt::AscendingOrder);
- mKeyList->setSelectionBehavior(QAbstractItemView::SelectRows);
- // hide id and fingerprint of key
- mKeyList->setColumnHidden(4, true);
- mKeyList->setColumnHidden(5, true);
-
- // tableitems not editable
- mKeyList->setEditTriggers(QAbstractItemView::NoEditTriggers);
- // no focus (rectangle around tableitems)
- // may be it should focus on whole row
- mKeyList->setFocusPolicy(Qt::NoFocus);
-
- mKeyList->setAlternatingRowColors(true);
-
- QStringList labels;
- labels << "" << "" << tr("Name") << tr("EMail") << "id" << "fpr";
- mKeyList->setHorizontalHeaderLabels(labels);
- mKeyList->horizontalHeader()->setStretchLastSection(true);
-
- QVBoxLayout *layout = new QVBoxLayout;
- layout->addWidget(mKeyList);
- layout->setContentsMargins(0, 0, 0, 0);
- layout->setSpacing(3);
- setLayout(layout);
-
- popupMenu = new QMenu(this);
- connect(mCtx, SIGNAL(signalKeyDBChanged()), this, SLOT(slotRefresh()));
- setAcceptDrops(true);
- slotRefresh();
-}
-
-void KeyList::slotRefresh()
-{
- QStringList *keyList;
- keyList = getChecked();
- // while filling the table, sort enabled causes errors
- mKeyList->setSortingEnabled(false);
- mKeyList->clearContents();
-
- GpgKeyList keys = mCtx->listKeys();
- mKeyList->setRowCount(keys.size());
-
- int row = 0;
- GpgKeyList::iterator it = keys.begin();
- while (it != keys.end()) {
-
- QTableWidgetItem *tmp0 = new QTableWidgetItem();
- tmp0->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
- tmp0->setCheckState(Qt::Unchecked);
- mKeyList->setItem(row, 0, tmp0);
-
- if (it->privkey) {
- QTableWidgetItem *tmp1 = new QTableWidgetItem(QIcon(":kgpg_key2.png"), "");
- mKeyList->setItem(row, 1, tmp1);
- }
- QTableWidgetItem *tmp2 = new QTableWidgetItem(it->name);
- tmp2->setToolTip(it->name);
- mKeyList->setItem(row, 2, tmp2);
- QTableWidgetItem *tmp3 = new QTableWidgetItem(it->email);
- tmp3->setToolTip(it->email);
- // strike out expired keys
- if(it->expired || it->revoked) {
- QFont strike = tmp2->font();
- strike.setStrikeOut(true);
- tmp2->setFont(strike);
- tmp3->setFont(strike);
- }
- mKeyList->setItem(row, 3, tmp3);
- QTableWidgetItem *tmp4 = new QTableWidgetItem(it->id);
- mKeyList->setItem(row, 4, tmp4);
- QTableWidgetItem *tmp5 = new QTableWidgetItem(it->fpr);
- mKeyList->setItem(row, 5, tmp5);
-
-
- it++;
- ++row;
- }
- mKeyList->setSortingEnabled(true);
- setChecked(keyList);
-}
-
-QStringList *KeyList::getChecked()
-{
- QStringList *ret = new QStringList();
- for (int i = 0; i < mKeyList->rowCount(); i++) {
- if (mKeyList->item(i, 0)->checkState() == Qt::Checked) {
- *ret << mKeyList->item(i, 4)->text();
- }
- }
- return ret;
-}
-
-QStringList *KeyList::getAllPrivateKeys()
-{
- QStringList *ret = new QStringList();
- for (int i = 0; i < mKeyList->rowCount(); i++) {
- if (mKeyList->item(i, 1)) {
- *ret << mKeyList->item(i, 4)->text();
- }
- }
- return ret;
-}
-
-QStringList *KeyList::getPrivateChecked()
-{
- QStringList *ret = new QStringList();
- for (int i = 0; i < mKeyList->rowCount(); i++) {
- if ((mKeyList->item(i, 0)->checkState() == Qt::Checked) && (mKeyList->item(i, 1))) {
- *ret << mKeyList->item(i, 4)->text();
- }
- }
- return ret;
-}
-
-void KeyList::setChecked(QStringList *keyIds)
-{
- if (!keyIds->isEmpty()) {
- for (int i = 0; i < mKeyList->rowCount(); i++) {
- if (keyIds->contains(mKeyList->item(i, 4)->text())) {
- mKeyList->item(i, 0)->setCheckState(Qt::Checked);
- }
- }
- }
-}
-
-QStringList *KeyList::getSelected()
-{
- QStringList *ret = new QStringList();
-
- for (int i = 0; i < mKeyList->rowCount(); i++) {
- if (mKeyList->item(i, 0)->isSelected() == 1) {
- *ret << mKeyList->item(i, 4)->text();
- }
- }
- return ret;
-}
-
-bool KeyList::containsPrivateKeys()
-{
- for (int i = 0; i < mKeyList->rowCount(); i++) {
- if (mKeyList->item(i, 1)) {
- return true;
- }
- }
- return false;
-}
-
-void KeyList::setColumnWidth(int row, int size)
-{
- mKeyList->setColumnWidth(row, size);
-}
-
-void KeyList::contextMenuEvent(QContextMenuEvent *event)
-{
- popupMenu->exec(event->globalPos());
-}
-
-void KeyList::addMenuAction(QAction *act)
-{
- popupMenu->addAction(act);
-}
-
-void KeyList::dropEvent(QDropEvent* event)
-{
-// importKeyDialog();
- QSettings settings;
-
- QDialog *dialog = new QDialog();
-
- dialog->setWindowTitle(tr("Import Keys"));
- QLabel *label;
- label = new QLabel(tr("You've dropped something on the keylist.\n gpg4usb will now try to import key(s).")+"\n");
-
- // "always import keys"-CheckBox
- QCheckBox *checkBox = new QCheckBox(tr("Always import without bothering."));
- if (settings.value("general/confirmImportKeys").toBool()) checkBox->setCheckState(Qt::Unchecked);
-
- // Buttons for ok and cancel
- QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
- connect(buttonBox, SIGNAL(accepted()), dialog, SLOT(accept()));
- connect(buttonBox, SIGNAL(rejected()), dialog, SLOT(reject()));
-
- QVBoxLayout *vbox = new QVBoxLayout();
- vbox->addWidget(label);
- vbox->addWidget(checkBox);
- vbox->addWidget(buttonBox);
-
- dialog->setLayout(vbox);
-
- if (settings.value("general/confirmImportKeys",Qt::Checked).toBool())
- {
- dialog->exec();
- if (dialog->result() == QDialog::Rejected) {
- return;
- }
- if (checkBox->isChecked()){
- settings.setValue("general/confirmImportKeys", false);
- } else {
- settings.setValue("general/confirmImportKeys", true);
-
- }
- }
-
- if (event->mimeData()->hasUrls())
- {
- foreach (QUrl tmp, event->mimeData()->urls())
- {
- QFile file;
- file.setFileName(tmp.toLocalFile());
- if (!file.open(QIODevice::ReadOnly)) {
- qDebug() << tr("Couldn't Open File: ") + tmp.toString();
- }
- QByteArray inBuffer = file.readAll();
- this->importKeys(inBuffer);
- file.close();
- }
- } else {
- QByteArray inBuffer(event->mimeData()->text().toUtf8());
- this->importKeys(inBuffer);
- }
-}
-
-void KeyList::dragEnterEvent(QDragEnterEvent *event)
-{
- event->acceptProposedAction();
-}
-
-/** set background color for Keys and put them to top
- *
- */
-void KeyList::markKeys(QStringList *keyIds)
-{
- foreach(QString id, *keyIds) {
- qDebug() << "marked: " << id;
- }
-}
-
-void KeyList::importKeys(QByteArray inBuffer)
-{
- GpgImportInformation result = mCtx->importKey(inBuffer);
- new KeyImportDetailDialog(mCtx, result, this);
-}
-
-void KeyList::uploadKeyToServer(QByteArray *keys)
-{
- QUrl reqUrl("http://localhost:11371/pks/add");
- qnam = new QNetworkAccessManager(this);
-
- QUrl params;
- keys->replace("\n", "%0D%0A")
- .replace("(", "%28")
- .replace(")", "%29")
- .replace("/", "%2F")
- .replace(":", "%3A")
- .replace("+","%2B")
- .replace(' ', '+');
-
- params.addEncodedQueryItem("keytext", *keys);
- QNetworkRequest req(reqUrl);
-
- req.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
-
- QNetworkReply *reply = qnam->post(req,params.encodedQuery());
- connect(reply, SIGNAL(finished()),
- this, SLOT(uploadFinished()));
- qDebug() << "REQURL: " << reqUrl;
- qDebug() << "PARAMS.ENCODED: " << params.toEncoded();
-}
-
-void KeyList::uploadFinished()
-{
- QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
-
- QByteArray response = reply->readAll();
- qDebug() << "RESPNOSE: " << response.data();
- //reply->readAll();
- qDebug() << "ERROR: " << reply->error();
- if (reply->error()) {
- qDebug() << "Error while contacting keyserver!";
- return;
- } else {
- qDebug() << "Success while contacting keyserver!";
- }
-
- reply->deleteLater();
- reply = 0;
-}