Page MenuHome GnuPG

No OneTemporary

diff --git a/src/gpgcardgui/CMakeLists.txt b/src/gpgcardgui/CMakeLists.txt
index f461af2..ecfb50f 100644
--- a/src/gpgcardgui/CMakeLists.txt
+++ b/src/gpgcardgui/CMakeLists.txt
@@ -1,33 +1,34 @@
# Copyright (C) 2018 Intevation GmbH <info@intevation.de>
#
# This file is Free Software under the GNU GPL (v>=2)
# and comes with ABSOLUTELY NO WARRANTY!
# See LICENSE.txt for details.
set(EXECUTABLE_NAME "gpgcardgui")
set(EXECUTABLE_SRC
main.cpp
gpgcardgui.cpp
mainwindow.cpp
+ tabbedcarddialog.cpp
${CMAKE_SOURCE_DIR}/src/util/strhelp.c
${CMAKE_SOURCE_DIR}/src/util/w32-gettext.c
)
add_executable(${EXECUTABLE_NAME}
${_add_executable_params}
${EXECUTABLE_SRC}
)
target_link_libraries(${EXECUTABLE_NAME}
Qt5::Widgets
KF5::Libkleo
Gpgmepp
QGpgme
)
if (WIN32)
set_target_properties(${EXECUTABLE_NAME} PROPERTIES LINK_FLAGS "-municode")
endif(WIN32)
install(TARGETS ${EXECUTABLE_NAME} DESTINATION bin)
diff --git a/src/gpgcardgui/mainwindow.cpp b/src/gpgcardgui/mainwindow.cpp
index fd5ef4a..25391bf 100644
--- a/src/gpgcardgui/mainwindow.cpp
+++ b/src/gpgcardgui/mainwindow.cpp
@@ -1,39 +1,24 @@
/* Copyright (C) 2020 by g10 Code GmbH <info@g10code.com>
*
* This file is free software under the GNU GPL (v>=2)
* and comes with ABSOLUTELY NO WARRANTY!
* See LICENSE.txt for details.
*/
#include "mainwindow.h"
#include <QTextEdit>
#include <QString>
#include <QDebug>
#include <Libkleo/Card>
#include <Libkleo/CardManager>
#include "w32-gettext.h"
MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags flags):
QMainWindow(parent, flags)
{
- mEdit = new QTextEdit (this);
- mEdit->setReadOnly(true);
- setCentralWidget(mEdit);
-
- connect (&mManager, &Kleo::SmartCard::CardManager::cardsMayHaveChanged, this, [this] () {
- const auto cards = mManager.cards();
- for (const auto card: cards) {
- if (card) {
- mEdit->setText(mEdit->toPlainText() +
- "\nFound smartcard" + QString::fromStdString(card->serialNumber()) +
- "\nIn Reader: " + card->reader());
- }
- }
- });
-
- mManager.startCardList();
+ mTabbedCardDialog = new TabbedCardDialog(this);
}
diff --git a/src/gpgcardgui/mainwindow.h b/src/gpgcardgui/mainwindow.h
index ff5ecbd..bb00eef 100644
--- a/src/gpgcardgui/mainwindow.h
+++ b/src/gpgcardgui/mainwindow.h
@@ -1,26 +1,25 @@
/* Copyright (C) 2020 by g10 Code GmbH <info@g10code.com>
*
* This file is free software under the GNU GPL (v>=2)
* and comes with ABSOLUTELY NO WARRANTY!
* See LICENSE.txt for details.
*/
#pragma once
#include <QMainWindow>
-
+#include "tabbedcarddialog.h"
#include <Libkleo/CardManager>
class QTextEdit;
/** MainWindow of the application. */
class MainWindow: public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr,
Qt::WindowFlags flags = Qt::WindowFlags());
private:
- QTextEdit *mEdit;
- Kleo::SmartCard::CardManager mManager;
+ TabbedCardDialog *mTabbedCardDialog;
};
diff --git a/src/gpgcardgui/tabbedcarddialog.cpp b/src/gpgcardgui/tabbedcarddialog.cpp
new file mode 100644
index 0000000..e334e81
--- /dev/null
+++ b/src/gpgcardgui/tabbedcarddialog.cpp
@@ -0,0 +1,62 @@
+#include "tabbedcarddialog.h"
+
+TabbedCardDialog::TabbedCardDialog(QWidget *parent):
+ QWidget(parent)
+{
+ mTabWidget = new QTabWidget(this);
+ mManager.startCardList();
+ connect (&mManager,
+ &Kleo::SmartCard::CardManager::cardsMayHaveChanged,
+ this,
+ [this] ()
+ {
+ mTabWidget->clear();
+ const auto cards = mManager.cards();
+ for (const auto card: cards) {
+ if (card) {
+ if (!mCards.contains(card->serialNumber()))
+ setCard(card);
+ else
+ updateCard(card);
+
+ }
+ }
+ });
+
+ mManager.startCardList();
+}
+
+void TabbedCardDialog::setCard(std::shared_ptr<Kleo::SmartCard::Card> card)
+{
+ int lastTab = mTabWidget->count();
+
+ for (const auto serialNo: index2SerialNoMap)
+ {
+ if (serialNo == card->serialNumber())
+ return;
+ }
+ if (!card) {
+ qCDebug(LIBKLEO_LOG) << "No card parsable";
+ mTabWidget->addTab(mPlaceHolderWidget);
+ }
+ if (card->appType() == Card::OpenPGPApplication) {
+ mPGPCardWidget->setCard(static_cast<OpenPGPCard *> (card.get()));
+ mTabWidget->addTab(mPGPCardWidget);
+ } else if (card->appType() == Card::NksApplication) {
+ mNetKeyWidget->setCard(static_cast<NetKeyCard *> (card.get()));
+ mTabWidget->addTab(mNetKeyWidget);
+ } else {
+ qCDebug(LIBKLEO_LOG) << "Ignoring unknown card: " << card->serialNumber();
+ mTabWidget->addTab(mPlaceHolderWidget);
+ }
+ index2SerialNoMap[lastTab] = card->serialNumber();
+}
+
+void TabbedCardDialog::updateCard(std::shared_ptr<Kleo::SmartCard::Card> card)
+{
+ for (int i=0; i > index2SerialNoMap.end(); i++)
+ {
+ if (index2SerialNoMap[i] == card->serialNumber())
+ mTabWidget->insertTab(i, WIDGET, "FIXME");
+ }
+}
diff --git a/src/gpgcardgui/tabbedcarddialog.h b/src/gpgcardgui/tabbedcarddialog.h
new file mode 100644
index 0000000..ba7c540
--- /dev/null
+++ b/src/gpgcardgui/tabbedcarddialog.h
@@ -0,0 +1,31 @@
+/* Copyright (C) 2020 by g10 Code GmbH <info@g10code.com>
+ *
+ * This file is free software under the GNU GPL (v>=2)
+ * and comes with ABSOLUTELY NO WARRANTY!
+ * See LICENSE.txt for details.
+ */
+
+#pragma once
+#include <QWidget>
+#include <QMap>
+#include <QTabWidget>
+
+#include <Libkleo/Card>
+#include <Libkleo/CardManager>
+
+
+class TabbedCardDialog : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit TabbedCardDialog(QWidget *parent);
+
+private:
+ QTabWidget *mTabWidget;
+ Kleo::SmartCard::CardManager mManager;
+ QMap<QString, Kleo::SmartCard::Card> mCards;
+ QMap<int, QString> index2SerialNoMap;
+ void setCard(std::shared_ptr<Kleo::SmartCard::Card> card);
+ void updateCard(std::shared_ptr<Kleo::SmartCard::Card> card);
+};

File Metadata

Mime Type
text/x-diff
Expires
Thu, Jul 17, 1:41 AM (8 h, 4 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
b1/82/62fd4f800b2850e61e7aea3d5729

Event Timeline