diff options
Diffstat (limited to 'widgets')
-rw-r--r-- | widgets/keydetailswidget.cpp | 93 | ||||
-rw-r--r-- | widgets/keydetailswidget.h | 49 |
2 files changed, 142 insertions, 0 deletions
diff --git a/widgets/keydetailswidget.cpp b/widgets/keydetailswidget.cpp new file mode 100644 index 0000000..2276570 --- /dev/null +++ b/widgets/keydetailswidget.cpp @@ -0,0 +1,93 @@ +/* + * keydetailswidget.cpp + * + * Copyright 2013 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 "keydetailswidget.h" +#include <QtDeclarative/QDeclarativeView> +#include <QHBoxLayout> +#include <QDebug> +#include <QGraphicsObject> +#include <QDeclarativeProperty> +#include <QDeclarativePropertyMap> +#include "kgpg/core/convert.h" + +KeyDetailsWidget::KeyDetailsWidget(GpgME::GpgContext *ctx, KgpgCore::KgpgKey key, QWidget *parent) : + QWidget(parent), mCtx(ctx) +{ + + // http://harmattan-dev.nokia.com/docs/library/html/qt4/qml-integration.html + // http://qt-project.org/doc/qt-4.8/qtbinding.html + // http://jryannel.wordpress.com/ + // http://stackoverflow.com/questions/5594769/normal-desktop-user-interface-controls-with-qml + + QDeclarativeView *qmlView = new QDeclarativeView; + qmlView->setResizeMode(QDeclarativeView::SizeRootObjectToView); + context = qmlView->rootContext(); + + QDeclarativePropertyMap keymap; + keymap.insert("id", key.id()); + keymap.insert("email", key.email()); + keymap.insert("name", key.name()); + keymap.insert("comment", key.comment()); + keymap.insert("size", key.size()); + keymap.insert("encryptionSize", key.encryptionSize()); + keymap.insert("algorithm",KgpgCore::Convert::toString(key.algorithm())); + keymap.insert("encryptionAlgorithm", KgpgCore::Convert::toString(key.encryptionAlgorithm())); + keymap.insert("creationDate", KgpgCore::Convert::toString(key.creationDate().date())); + keymap.insert("expirationDate",KgpgCore::Convert::toString(key.expirationDate().date())); + keymap.insert("fingerprint",key.fingerprintBeautified()); + keymap.insert("isSecret",ctx->isSecretKey(key.id())); + keymap.insert("expired", (key.expirationDate().date() < QDate::currentDate() &! key.expirationDate().isNull())); + keymap.insert("revoked", !key.valid()); + context->setContextProperty("keymap", &keymap); + + qmlView->setSource(QUrl("qrc:/qml/keydetails.qml")); + + obj = qmlView->rootObject(); + //connect( obj, SIGNAL(clicked()), this, SLOT(qmlClicked())); + connect( obj, SIGNAL(exportPublicKeyClicked()), this, SLOT(slotExportPublicKey())); + connect( obj, SIGNAL(exportPrivateKeyClicked()), this, SLOT(slotExportPrivateKey())); + + QHBoxLayout *mainLayout = new QHBoxLayout(this); + mainLayout->setSpacing(0); + mainLayout->setContentsMargins(0,0,0,0); + mainLayout->addWidget(qmlView); + +} + +void KeyDetailsWidget::qmlClicked() { + + // http://stackoverflow.com/questions/9062189/how-to-modify-a-qml-text-from-c + qDebug() << "c++, click recieved from qml"; + qDebug() << "text1" << obj->property("tf1Text").toString(); + + //QObject *text2 = obj->findChild<QObject*>("tf2"); + qDebug() << "text2 "<< obj->property("tf2Text"); +} + +void KeyDetailsWidget::slotExportPublicKey() { + QString id=obj->property("keyid").toString(); + mCtx->exportKeyToFile(QStringList(id)); +} + +void KeyDetailsWidget::slotExportPrivateKey() { + QString id=obj->property("keyid").toString(); + mCtx->exportPrivateKey(id); +} diff --git a/widgets/keydetailswidget.h b/widgets/keydetailswidget.h new file mode 100644 index 0000000..0491336 --- /dev/null +++ b/widgets/keydetailswidget.h @@ -0,0 +1,49 @@ +/* + * keydetailswidget.h + * + * Copyright 2013 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/> + */ + +#ifndef KEYDETAILSWIDGET_H +#define KEYDETAILSWIDGET_H + +#include <QWidget> +#include <QDeclarativeContext> +#include <QGraphicsObject> +#include "kgpg/core/kgpgkey.h" +#include "gpgcontext.h" + +class KeyDetailsWidget : public QWidget +{ + + Q_OBJECT + +public: + KeyDetailsWidget(GpgME::GpgContext *ctx, KgpgCore::KgpgKey key, QWidget *parent = 0); + +public slots: + void qmlClicked(); + void slotExportPublicKey(); + void slotExportPrivateKey(); +private: + QDeclarativeContext *context; + QGraphicsObject *obj; + GpgME::GpgContext *mCtx; +}; + +#endif // KEYDETAILSWIDGET_H |