File indexing completed on 2024-05-12 05:22:53
0001 /* 0002 test_keylister.cpp 0003 0004 This file is part of libkleopatra's test suite. 0005 SPDX-FileCopyrightText: 2004 Klarälvdalens Datakonsult AB 0006 0007 SPDX-License-Identifier: GPL-2.0-only 0008 */ 0009 0010 #include "test_keylister.h" 0011 0012 #include <libkleo/formatting.h> 0013 0014 #include <qgpgme/keylistjob.h> 0015 #include <qgpgme/protocol.h> 0016 0017 #include <gpgme++/key.h> 0018 #include <gpgme++/keylistresult.h> 0019 0020 #include <KAboutData> 0021 0022 #include <QDebug> 0023 0024 #include <QMessageBox> 0025 #include <QStringList> 0026 #include <QTimer> 0027 0028 #include <KLocalizedString> 0029 #include <QApplication> 0030 #include <QCommandLineParser> 0031 #include <chrono> 0032 0033 using namespace std::chrono_literals; 0034 0035 namespace 0036 { 0037 class TestColumnStrategy : public Kleo::KeyListView::ColumnStrategy 0038 { 0039 public: 0040 ~TestColumnStrategy() override 0041 { 0042 } 0043 QString title(int col) const override; 0044 QString toolTip(const GpgME::Key &key, int col) const override; 0045 QString text(const GpgME::Key &key, int col) const override; 0046 QString accessibleText(const GpgME::Key &key, int col) const override; 0047 }; 0048 0049 QString TestColumnStrategy::title(int col) const 0050 { 0051 switch (col) { 0052 case 0: 0053 return QStringLiteral("Subject"); 0054 case 1: 0055 return QStringLiteral("EMail"); 0056 case 2: 0057 return QStringLiteral("Issuer"); 0058 case 3: 0059 return QStringLiteral("Serial"); 0060 case 4: 0061 return QStringLiteral("Protocol"); 0062 case 5: 0063 return QStringLiteral("Validity"); 0064 default: 0065 return QString(); 0066 } 0067 } 0068 0069 QString TestColumnStrategy::toolTip(const GpgME::Key &key, int) const 0070 { 0071 return QStringLiteral("Fingerprint: ") + QString::fromUtf8(key.primaryFingerprint()); 0072 } 0073 0074 QString TestColumnStrategy::text(const GpgME::Key &key, int col) const 0075 { 0076 if (key.isNull()) { 0077 return QStringLiteral("<null>"); 0078 } 0079 switch (col) { 0080 case 0: 0081 return QString::fromUtf8(key.userID(0).id()); 0082 case 1: 0083 return QString::fromUtf8(key.userID(0).email()); 0084 case 2: 0085 return QString::fromUtf8(key.issuerName()); 0086 case 3: 0087 return QString::fromLatin1(key.issuerSerial()); 0088 case 4: 0089 return QString::fromLatin1(key.protocolAsString()); 0090 case 5: 0091 return QString(QLatin1Char(key.userID(0).validityAsString())); 0092 default: 0093 return QString(); 0094 } 0095 } 0096 0097 QString TestColumnStrategy::accessibleText(const GpgME::Key &, int) const 0098 { 0099 return {}; 0100 } 0101 } 0102 0103 CertListView::CertListView(QWidget *parent, Qt::WindowFlags f) 0104 : Kleo::KeyListView(new TestColumnStrategy(), nullptr, parent, f) 0105 { 0106 setHierarchical(true); 0107 setRootIsDecorated(true); 0108 } 0109 0110 CertListView::~CertListView() 0111 { 0112 } 0113 0114 void CertListView::slotResult(const GpgME::KeyListResult &result) 0115 { 0116 qDebug() << "CertListView::slotResult()"; 0117 if (result.isNull()) { 0118 QMessageBox::information(this, QStringLiteral("Key Listing Result"), QStringLiteral("KeyListResult is null!")); 0119 } else if (result.error()) { 0120 QMessageBox::critical(this, 0121 QStringLiteral("Key Listing Result"), 0122 QStringLiteral("KeyListResult Error: %1").arg(Kleo::Formatting::errorAsString(result.error()))); 0123 } else if (result.isTruncated()) { 0124 QMessageBox::information(this, QStringLiteral("Key Listing Result"), QStringLiteral("KeyListResult is truncated!")); 0125 } else { 0126 QMessageBox::information(this, QStringLiteral("Key Listing Result"), QStringLiteral("Key listing successful")); 0127 } 0128 } 0129 0130 void CertListView::slotStart() 0131 { 0132 qDebug() << "CertListView::slotStart()"; 0133 QGpgME::KeyListJob *job = QGpgME::smime()->keyListJob(false); 0134 Q_ASSERT(job); 0135 QObject::connect(job, &QGpgME::KeyListJob::nextKey, this, &CertListView::slotAddKey); 0136 QObject::connect(job, &QGpgME::KeyListJob::result, this, &CertListView::slotResult); 0137 #if 0 0138 QStringList l; 0139 l << "Marc"; 0140 job->start(l, false); 0141 #else 0142 job->start(QStringList(), false); 0143 #endif 0144 } 0145 0146 int main(int argc, char **argv) 0147 { 0148 QApplication app(argc, argv); 0149 KAboutData aboutData(QStringLiteral("test_keylister"), i18n("KeyLister Test"), QStringLiteral("0.1")); 0150 QCommandLineParser parser; 0151 KAboutData::setApplicationData(aboutData); 0152 aboutData.setupCommandLine(&parser); 0153 parser.process(app); 0154 aboutData.processCommandLine(&parser); 0155 0156 auto clv = new CertListView; 0157 clv->show(); 0158 0159 QTimer::singleShot(5s, clv, &CertListView::slotStart); 0160 0161 return app.exec(); 0162 } 0163 0164 #include "moc_test_keylister.cpp"