Hello community, here is the log from the commit of package kgpg for openSUSE:Factory checked in at 2013-07-08 07:31:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kgpg (Old) and /work/SRC/openSUSE:Factory/.kgpg.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kgpg" Changes: -------- --- /work/SRC/openSUSE:Factory/kgpg/kgpg.changes 2013-06-11 09:32:04.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.kgpg.new/kgpg.changes 2013-07-08 07:31:45.000000000 +0200 @@ -1,0 +2,14 @@ +Thu Jun 27 18:23:49 UTC 2013 - tittiatc...@gmail.com + +- Update to 4.10.90 + * KDE 4.11 Beta 1 release + * See http://www.kde.org/announcements/announce-4.11-beta2.php + +------------------------------------------------------------------- +Thu Jun 13 19:32:08 UTC 2013 - tittiatc...@gmail.com + +- Update to 4.10.80 + * KDE 4.11 Beta 1 release + * See http://www.kde.org/announcements/announce-4.11-beta1.php + +------------------------------------------------------------------- Old: ---- kgpg-4.10.4.tar.xz New: ---- kgpg-4.10.90.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kgpg.spec ++++++ --- /var/tmp/diff_new_pack.M1DZnL/_old 2013-07-08 07:31:46.000000000 +0200 +++ /var/tmp/diff_new_pack.M1DZnL/_new 2013-07-08 07:31:46.000000000 +0200 @@ -17,7 +17,7 @@ Name: kgpg -Version: 4.10.4 +Version: 4.10.90 Release: 0 Summary: Encryption Tool License: GPL-2.0+ ++++++ kgpg-4.10.4.tar.xz -> kgpg-4.10.90.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/conf_ui2.ui new/kgpg-4.10.90/conf_ui2.ui --- old/kgpg-4.10.4/conf_ui2.ui 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/conf_ui2.ui 2013-06-10 20:53:48.000000000 +0200 @@ -225,6 +225,69 @@ <string>Editor Font</string> </attribute> </widget> + <widget class="QWidget" name="tabKeyList"> + <attribute name="title"> + <string>Key List</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QGroupBox" name="groupBoxSorting"> + <property name="title"> + <string>Sort Order</string> + </property> + <layout class="QFormLayout" name="formLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label_EmailSorting"> + <property name="text"> + <string>Email:</string> + </property> + <property name="buddy"> + <cstring>kcfg_EmailSorting</cstring> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="KComboBox" name="kcfg_EmailSorting"> + <item> + <property name="text"> + <string>Left to right, account first</string> + </property> + </item> + <item> + <property name="text"> + <string>Right to left, TLD first</string> + </property> + </item> + <item> + <property name="text"> + <string>Right to left, domain first</string> + </property> + </item> + <item> + <property name="text"> + <string>Right to left, FQDN first</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>351</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> </widget> </item> </layout> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/core/KGpgSignNode.cpp new/kgpg-4.10.90/core/KGpgSignNode.cpp --- old/kgpg-4.10.4/core/KGpgSignNode.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/core/KGpgSignNode.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,4 +1,4 @@ -/* Copyright 2008,2009,2010 Rolf Eike Beer <k...@opensource.sf-tec.de> +/* Copyright 2008,2009,2010,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -33,7 +33,9 @@ }; KGpgSignNodePrivate::KGpgSignNodePrivate(const QStringList &sl) + : m_local(false) { + Q_ASSERT(!sl.isEmpty()); m_revocation = (sl.at(0) == QLatin1String("rev")); if (sl.count() < 6) return; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/core/convert.cpp new/kgpg-4.10.90/core/convert.cpp --- old/kgpg-4.10.4/core/convert.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/core/convert.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (C) 2006 Jimmy Gilles <jimmygil...@gmail.com> - * Copyright (C) 2010 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2010,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> */ /*************************************************************************** * This program is free software; you can redistribute it and/or modify * @@ -30,7 +30,10 @@ namespace KgpgCore { -QString Convert::toString(const KgpgKeyAlgo algorithm) +namespace Convert +{ + +QString toString(const KgpgKeyAlgo algorithm) { switch (algorithm) { @@ -44,7 +47,7 @@ } } -QString Convert::toString(const KgpgKeyOwnerTrust ownertrust) +QString toString(const KgpgKeyOwnerTrust ownertrust) { switch (ownertrust) { @@ -58,7 +61,7 @@ } } -QString Convert::toString(const KgpgKeyTrust trust) +QString toString(const KgpgKeyTrust trust) { switch (trust) { @@ -76,30 +79,12 @@ } } -QColor Convert::toColor(const KgpgKeyTrust trust) -{ - switch (trust) - { - case TRUST_INVALID: - case TRUST_DISABLED: return KGpgSettings::colorBad(); - case TRUST_EXPIRED: return KGpgSettings::colorExpired(); - case TRUST_MARGINAL: return KGpgSettings::colorMarginal(); - case TRUST_REVOKED: return KGpgSettings::colorRev(); - case TRUST_UNDEFINED: - case TRUST_NONE: return KGpgSettings::colorUnknown(); - case TRUST_FULL: return KGpgSettings::colorGood(); - case TRUST_ULTIMATE: return KGpgSettings::colorUltimate(); - case TRUST_UNKNOWN: - default: return KGpgSettings::colorUnknown(); - } -} - -QString Convert::toString(const QDate &date) +QString toString(const QDate &date) { return KGlobal::locale()->formatDate(date, KLocale::ShortDate); } -KgpgKeyAlgo Convert::toAlgo(const uint v) +KgpgKeyAlgo toAlgo(const uint v) { switch (v) { @@ -111,14 +96,14 @@ } } -KgpgKeyAlgo Convert::toAlgo(const QString &s) +KgpgKeyAlgo toAlgo(const QString &s) { bool b; unsigned int u = s.toUInt(&b); return b ? toAlgo(u) : ALGO_UNKNOWN; } -KgpgKeyTrust Convert::toTrust(const QChar &c) +KgpgKeyTrust toTrust(const QChar &c) { switch (c.toAscii()) { @@ -136,12 +121,12 @@ } } -KgpgKeyTrust Convert::toTrust(const QString &s) +KgpgKeyTrust toTrust(const QString &s) { return s.isEmpty() ? TRUST_UNKNOWN : toTrust(s[0]); } -KgpgKeyOwnerTrust Convert::toOwnerTrust(const QChar &c) +KgpgKeyOwnerTrust toOwnerTrust(const QChar &c) { switch (c.toAscii()) { @@ -153,30 +138,11 @@ } } -KgpgKeyOwnerTrust Convert::toOwnerTrust(const QString &s) +KgpgKeyOwnerTrust toOwnerTrust(const QString &s) { return s.isEmpty() ? OWTRUST_UNDEFINED : toOwnerTrust(s[0]); } -QPixmap Convert::toPixmap(const KgpgItemType t) -{ - switch (t) - { - case ITYPE_GROUP: return Images::group(); - case ITYPE_GSECRET: - case ITYPE_SECRET: return Images::orphan(); - case ITYPE_GPUBLIC: - case ITYPE_SUB: - case ITYPE_PUBLIC: return Images::single(); - case ITYPE_GPAIR: - case ITYPE_PAIR: return Images::pair(); - case ITYPE_UID: return Images::userId(); - case ITYPE_UAT: return Images::photo(); - case ITYPE_REVSIGN: return Images::revoke(); - case ITYPE_SIGN: return Images::signature(); - default: Q_ASSERT(1); - return NULL; - } -} +} // namespace Convert } // namespace KgpgCore diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/core/convert.h new/kgpg-4.10.90/core/convert.h --- old/kgpg-4.10.4/core/convert.h 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/core/convert.h 2013-06-10 20:53:48.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (C) 2006 Jimmy Gilles <jimmygil...@gmail.com> - * Copyright (C) 2010 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2010,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> */ /*************************************************************************** * This program is free software; you can redistribute it and/or modify * @@ -24,29 +24,25 @@ #include "kgpgkey.h" -class QColor; class QString; class QPixmap; namespace KgpgCore { -class Convert +namespace Convert { -public: - static QString toString(const KgpgCore::KgpgKeyAlgo algorithm); - static QString toString(const KgpgCore::KgpgKeyOwnerTrust ownertrust); - static QString toString(const KgpgCore::KgpgKeyTrust trust); - static QString toString(const QDate &date); - static QColor toColor(const KgpgCore::KgpgKeyTrust trust); - static KgpgKeyAlgo toAlgo(const uint v); - static KgpgKeyAlgo toAlgo(const QString &s); - static KgpgKeyTrust toTrust(const QChar &c); - static KgpgKeyTrust toTrust(const QString &s); - static KgpgKeyOwnerTrust toOwnerTrust(const QChar &c); - static KgpgKeyOwnerTrust toOwnerTrust(const QString &s); - static QPixmap toPixmap(const KgpgCore::KgpgItemType t); -}; + QString toString(const KgpgCore::KgpgKeyAlgo algorithm); + QString toString(const KgpgCore::KgpgKeyOwnerTrust ownertrust); + QString toString(const KgpgCore::KgpgKeyTrust trust); + QString toString(const QDate &date); + KgpgKeyAlgo toAlgo(const uint v); + KgpgKeyAlgo toAlgo(const QString &s); + KgpgKeyTrust toTrust(const QChar &c); + KgpgKeyTrust toTrust(const QString &s); + KgpgKeyOwnerTrust toOwnerTrust(const QChar &c); + KgpgKeyOwnerTrust toOwnerTrust(const QString &s); +} } // namespace KgpgCore diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/core/images.cpp new/kgpg-4.10.90/core/images.cpp --- old/kgpg-4.10.4/core/images.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/core/images.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,7 +1,8 @@ +/* + * Copyright (C) 2006 Jimmy Gilles <jimmygil...@gmail.com> + * Copyright (C) 2013 Rolf Eike Beer <k...@opensource.sf-tec.de> + */ /*************************************************************************** - * Copyright (C) 2006 by Jimmy Gilles * - * jimmygil...@gmail.com * - * * * This program 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 2 of the License, or * @@ -25,7 +26,10 @@ namespace KgpgCore { -QPixmap Images::single() +namespace Images +{ + +QPixmap single() { static QPixmap single; if (single.isNull()) @@ -33,7 +37,7 @@ return single; } -QPixmap Images::pair() +QPixmap pair() { static QPixmap pair; if (pair.isNull()) @@ -41,7 +45,7 @@ return pair; } -QPixmap Images::group() +QPixmap group() { static QPixmap group; if (group.isNull()) @@ -49,7 +53,7 @@ return group; } -QPixmap Images::orphan() +QPixmap orphan() { static QPixmap oprpan; if (oprpan.isNull()) @@ -57,7 +61,7 @@ return oprpan; } -QPixmap Images::signature() +QPixmap signature() { static QPixmap signature; if (signature.isNull()) @@ -65,7 +69,7 @@ return signature; } -QPixmap Images::userId() +QPixmap userId() { static QPixmap userid; if (userid.isNull()) @@ -73,7 +77,7 @@ return userid; } -QPixmap Images::photo() +QPixmap photo() { static QPixmap photo; if (photo.isNull()) @@ -81,7 +85,7 @@ return photo; } -QPixmap Images::revoke() +QPixmap revoke() { static QPixmap revoke; if (revoke.isNull()) @@ -89,7 +93,7 @@ return revoke; } -QPixmap Images::kgpg() +QPixmap kgpg() { static QPixmap kgpg; if (kgpg.isNull()) @@ -97,4 +101,6 @@ return kgpg; } +} // namespace Images + } // namespace KgpgCore diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/core/images.h new/kgpg-4.10.90/core/images.h --- old/kgpg-4.10.4/core/images.h 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/core/images.h 2013-06-10 20:53:48.000000000 +0200 @@ -1,7 +1,8 @@ +/* + * Copyright (C) 2006 Jimmy Gilles <jimmygil...@gmail.com> + * Copyright (C) 2013 Rolf Eike Beer <k...@opensource.sf-tec.de> + */ /*************************************************************************** - * Copyright (C) 2006 by Jimmy Gilles * - * jimmygil...@gmail.com * - * * * This program 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 2 of the License, or * @@ -26,21 +27,20 @@ namespace KgpgCore { -class Images +namespace Images { -public: - static QPixmap single(); - static QPixmap pair(); - static QPixmap group(); - static QPixmap orphan(); - static QPixmap signature(); - static QPixmap userId(); - static QPixmap photo(); - static QPixmap revoke(); + QPixmap single(); + QPixmap pair(); + QPixmap group(); + QPixmap orphan(); + QPixmap signature(); + QPixmap userId(); + QPixmap photo(); + QPixmap revoke(); /* Desktop image */ - static QPixmap kgpg(); -}; + QPixmap kgpg(); +} } // namespace KgpgCore diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/core/kgpgkey.cpp new/kgpg-4.10.90/core/kgpgkey.cpp --- old/kgpg-4.10.4/core/kgpgkey.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/core/kgpgkey.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (C) 2006,2007 Jimmy Gilles <jimmygil...@gmail.com> - * Copyright (C) 2007,2008,2009,2010,2012 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2007,2008,2009,2010,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> */ /*************************************************************************** @@ -26,7 +26,8 @@ //BEGIN KeySub KgpgKeySubPrivate::KgpgKeySubPrivate(const QString &id, const uint size, const KgpgKeyTrust trust, const KgpgKeyAlgo algo, const KgpgSubKeyType type, const QDateTime &date) - : gpgsubid(id), + : gpgsubvalid(false), + gpgsubid(id), gpgsubsize(size), gpgsubcreation(date), gpgsubtrust(trust), @@ -50,9 +51,8 @@ KgpgKeySub::KgpgKeySub(const QString &id, const uint size, const KgpgKeyTrust trust, const KgpgKeyAlgo algo, const KgpgSubKeyType type, const QDateTime &date) - : d(new KgpgKeySubPrivate(id, size, trust, algo, type, date)) + : d(new KgpgKeySubPrivate(id, size, trust, algo, type, date)) { - d->gpgsubvalid = false; } KgpgKeySub::KgpgKeySub(const KgpgKeySub &other) Files old/kgpg-4.10.4/doc/index.cache.bz2 and new/kgpg-4.10.90/doc/index.cache.bz2 differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/doc/index.docbook new/kgpg-4.10.90/doc/index.docbook --- old/kgpg-4.10.4/doc/index.docbook 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/doc/index.docbook 2013-06-10 20:53:48.000000000 +0200 @@ -44,8 +44,8 @@ <legalnotice>&FDLNotice;</legalnotice> -<date>2010-05-14</date> -<releaseinfo>0.06.00</releaseinfo> +<date>2013-05-25</date> +<releaseinfo>2.9.50 (&kde; 4.11)</releaseinfo> <abstract> <para> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/editor/kgpgmd5widget.cpp new/kgpg-4.10.90/editor/kgpgmd5widget.cpp --- old/kgpg-4.10.4/editor/kgpgmd5widget.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/editor/kgpgmd5widget.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -31,14 +31,14 @@ setButtonText(Apply, i18n("Compare MD5 with Clipboard")); QFile f(url.path()); - f.open(QIODevice::ReadOnly); - KMD5 checkfile; - checkfile.reset(); - checkfile.update(f); + + if (f.open(QIODevice::ReadOnly)) { + checkfile.update(f); + f.close(); + } m_md5sum = QLatin1String( checkfile.hexDigest().constData() ); - f.close(); QWidget *page = new QWidget(this); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/foldercompressjob.cpp new/kgpg-4.10.90/foldercompressjob.cpp --- old/kgpg-4.10.4/foldercompressjob.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/foldercompressjob.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -96,6 +96,7 @@ break; default: Q_ASSERT(0); + return; } if (!arch->open(QIODevice::WriteOnly)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/gpgproc.cpp new/kgpg-4.10.90/gpgproc.cpp --- old/kgpg-4.10.4/gpgproc.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/gpgproc.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007,2008,2009,2010,2011,2012 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2007,2008,2009,2010,2011,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> */ /*************************************************************************** @@ -40,7 +40,8 @@ }; GnupgBinary::GnupgBinary() - : m_useDebugLevel(false) + : m_version(0), + m_useDebugLevel(false) { } @@ -205,7 +206,7 @@ if (!readLineStandardOutput(&a)) return -1; - line = recode(a, colons); + line = recode(a, colons, m_codec); return line.length(); } @@ -234,8 +235,9 @@ } QString -GPGProc::recode(QByteArray a, const bool colons) +GPGProc::recode(QByteArray a, const bool colons, const QByteArray &codec) { + const char *textcodec = codec.isEmpty() ? "utf8" : codec.constData(); int pos = 0; while ((pos = a.indexOf("\\x", pos)) >= 0) { @@ -265,7 +267,19 @@ } while ((npos = a.indexOf(pattern, npos)) >= 0); } - return QTextCodec::codecForName("utf8")->toUnicode(a); + return QTextCodec::codecForName(textcodec)->toUnicode(a); +} + +bool +GPGProc::setCodec(const QByteArray &codec) +{ + const QList<QByteArray> codecs = QTextCodec::availableCodecs(); + if (!codecs.contains(codec)) + return false; + + m_codec = codec; + + return true; } int GPGProc::gpgVersion(const QString &vstr) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/gpgproc.h new/kgpg-4.10.90/gpgproc.h --- old/kgpg-4.10.4/gpgproc.h 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/gpgproc.h 2013-06-10 20:53:48.000000000 +0200 @@ -91,7 +91,17 @@ * @param colons recode also colons * @return recoded string */ - static QString recode(QByteArray a, const bool colons = true); + static QString recode(QByteArray a, const bool colons = true, const QByteArray &codec = QByteArray()); + + /** + * @brief sets the codec used to translate the incoming data + * @param codec the name of the new codec + * @return if the new codec has been accepted + * + * The default codec is utf8. If the given codec is not known to + * QTextCodec the method will return false. + */ + bool setCodec(const QByteArray &codec); /** * Reset the class to the state it had right after creation @@ -133,7 +143,6 @@ * @return the error message GnuPG gave out (if any) */ static QString getGpgStartupError(const QString &binary); - signals: /** * Emitted when the process is ready for reading. @@ -151,6 +160,9 @@ protected slots: void finished(); void received(); + +private: + QByteArray m_codec; }; #endif // GPGPROC_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/groupedit.cpp new/kgpg-4.10.90/groupedit.cpp --- old/kgpg-4.10.4/groupedit.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/groupedit.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (C) 2002 Jean-Baptiste Mardelle <b...@altern.org> - * Copyright (C) 2007,2008,2012 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2007,2008,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> */ /*************************************************************************** @@ -24,11 +24,15 @@ #include <QHeaderView> #include <QSortFilterProxyModel> -groupEdit::groupEdit(QWidget *parent, QList<KGpgNode *> *ids) +groupEdit::groupEdit(QWidget *parent, QList<KGpgNode *> *ids, KGpgItemModel *md) : QWidget(parent), + m_model(md), m_outFilter(new QSortFilterProxyModel(this)), members(ids) { + Q_ASSERT(ids != NULL); + Q_ASSERT(md != NULL); + setupUi( this ); KgpgCore::KgpgKeyTrust mintrust; if (KGpgSettings::allowUntrustedGroupMembers()) { @@ -40,7 +44,9 @@ } m_in = new GroupEditProxyModel(this, false, members, mintrust); + m_in->setKeyModel(md); m_out = new GroupEditProxyModel(this, true, members, mintrust); + m_out->setKeyModel(md); m_outFilter->setSourceModel(m_out); m_outFilter->setFilterCaseSensitivity(Qt::CaseInsensitive); @@ -78,14 +84,6 @@ } void -groupEdit::setModel(KGpgItemModel *md) -{ - m_model = md; - m_in->setKeyModel(md); - m_out->setKeyModel(md); -} - -void groupEdit::groupAdd() { QModelIndexList sel = availableKeys->selectionModel()->selectedIndexes(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/groupedit.h new/kgpg-4.10.90/groupedit.h --- old/kgpg-4.10.4/groupedit.h 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/groupedit.h 2013-06-10 20:53:48.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (C) 2002 Jean-Baptiste Mardelle <b...@altern.org> - * Copyright (C) 2007,2008 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2007,2008,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> */ /*************************************************************************** @@ -33,8 +33,8 @@ private: GroupEditProxyModel *m_in; GroupEditProxyModel *m_out; - KGpgItemModel *m_model; - QSortFilterProxyModel *m_outFilter; + KGpgItemModel * const m_model; + QSortFilterProxyModel * const m_outFilter; public: QList<KGpgNode *> * const members; ///< the list of keys that are members of the group @@ -43,19 +43,14 @@ * @brief constructor * @param parent parent widget * @param ids the members of the group + * @param md model to use */ - explicit groupEdit(QWidget *parent, QList<KGpgNode *> *ids); + explicit groupEdit(QWidget *parent, QList<KGpgNode *> *ids, KGpgItemModel *md); /** * @brief destructor */ ~groupEdit(); - /** - * @brief set the model to select the keys from - * @param md model to use - */ - void setModel(KGpgItemModel *md); - private Q_SLOTS: /** * @brief called when the add button is clicked diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/keyexport.cpp new/kgpg-4.10.90/keyexport.cpp --- old/kgpg-4.10.4/keyexport.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/keyexport.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -30,6 +30,7 @@ if (!keyservers.isEmpty()) { checkServer->setEnabled(true); + checkServer->setToolTip(QString()); destServer->addItems(keyservers); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/keyexport.ui new/kgpg-4.10.90/keyexport.ui --- old/kgpg-4.10.4/keyexport.ui 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/keyexport.ui 2013-06-10 20:53:48.000000000 +0200 @@ -51,6 +51,9 @@ <property name="enabled"> <bool>false</bool> </property> + <property name="toolTip"> + <string>You must define at least one keyserver in settings before you can export to one.</string> + </property> <property name="text"> <string>Key server:</string> </property> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/keyinfodialog.cpp new/kgpg-4.10.90/keyinfodialog.cpp --- old/kgpg-4.10.4/keyinfodialog.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/keyinfodialog.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,7 +1,7 @@ /* * Copyright (C) 2002 Jean-Baptiste Mardelle <b...@altern.org> * Copyright (C) 2007 Jimmy Gilles <jimmygil...@gmail.com> - * Copyright (C) 2008,2009,2010,2011,2012 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2008,2009,2010,2011,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> * Copyright (C) 2011 Philip Greggory Lee <rocketman...@gmail.com> */ @@ -17,6 +17,7 @@ #include "keyinfodialog.h" #include "kgpgchangekey.h" +#include <kgpgsettings.h> #include "selectexpirydate.h" #include "core/convert.h" #include "core/images.h" @@ -186,9 +187,17 @@ const KgpgKey *key = m_node->getKey(); - KgpgKeyTrust keytrust = key->valid() ? m_node->getTrust() : TRUST_DISABLED; - QString tr = Convert::toString(keytrust); - QColor trustcolor = Convert::toColor(keytrust); + QString trust; + QColor trustcolor; + + if (key->valid()) { + QModelIndex idx = m_model->nodeIndex(m_node, KEYCOLUMN_TRUST); + trust = m_model->data(idx, Qt::AccessibleTextRole).toString(); + trustcolor = m_model->data(idx, Qt::BackgroundColorRole).value<QColor>(); + } else { + trust = Convert::toString(TRUST_DISABLED); + trustcolor = KGpgSettings::colorBad(); + } m_id->setText(m_node->getId().right(16)); m_algorithm->setText(Convert::toString(key->algorithm()) + QLatin1String( " / " ) + Convert::toString(key->encryptionAlgorithm())); @@ -198,7 +207,7 @@ m_expiration->setText(i18nc("Unlimited key lifetime", "Unlimited")); else m_expiration->setText(Convert::toString(m_node->getExpiration().date())); - m_trust->setText(tr); + m_trust->setText(trust); m_trust->setColor(trustcolor); m_length->setText(m_node->getSize()); m_length->setWhatsThis(i18n("<qt>The left part is the size of the <b>signature</b> key. The right part is the size of the <b>encryption</b> key.</qt>")); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/keyservers.cpp new/kgpg-4.10.90/keyservers.cpp --- old/kgpg-4.10.4/keyservers.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/keyservers.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (C) 2002 Jean-Baptiste Mardelle <b...@altern.org> - * Copyright (C) 2006,2007,2008,2009,2010,2012 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2006,2007,2008,2009,2010,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> */ /*************************************************************************** @@ -37,8 +37,10 @@ KeyServer::KeyServer(QWidget *parent, KGpgItemModel *model, const bool autoclose) : KDialog(parent), + m_dialogserver(NULL), m_searchproc(NULL), page(new keyServerWidget()), + m_listpop(NULL), m_resultmodel(NULL), m_itemmodel(new KeyListProxyModel(this, KeyListProxyModel::SingleColumnIdFirst)) { @@ -224,7 +226,6 @@ m_listpop->kLVsearch->setSelectionMode(QAbstractItemView::ExtendedSelection); - m_count = 0; m_readmessage.clear(); const QString keyserv(page->kCBimportks->currentText()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/keyservers.h new/kgpg-4.10.90/keyservers.h --- old/kgpg-4.10.4/keyservers.h 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/keyservers.h 2013-06-10 20:53:48.000000000 +0200 @@ -1,10 +1,7 @@ -/*************************************************************************** - keyservers.h - description - ------------------- - begin : Tue Nov 26 2002 - copyright : (C) 2002 by Jean-Baptiste Mardelle - email : b...@altern.org - ***************************************************************************/ +/* + * Copyright (C) 2002 Jean-Baptiste Mardelle <b...@altern.org> + * Copyright (C) 2007,2008,2009,2010,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> + */ /*************************************************************************** * * @@ -124,7 +121,6 @@ keyServerWidget *page; searchRes *m_listpop; - int m_count; bool m_autoclose; QString expattr; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/keysmanager.cpp new/kgpg-4.10.90/keysmanager.cpp --- old/kgpg-4.10.4/keysmanager.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/keysmanager.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (C) 2002 Jean-Baptiste Mardelle <b...@altern.org> - * Copyright (C) 2007,2008,2009,2010,2011,2012 + * Copyright (C) 2007,2008,2009,2010,2011,2012,2013 * Rolf Eike Beer <k...@opensource.sf-tec.de> * Copyright (C) 2011 Luis Ángel Fernández Fernández <laff...@gmail.com> */ @@ -592,7 +592,7 @@ if (!email.isEmpty()) page->kURLRequester1->setUrl(QString(revurl + email.section(QLatin1Char( '@' ), 0, 0) + QLatin1String( ".revoke" ))); else - page->kURLRequester1->setUrl(QString(revurl + genkey->getName().section(QLatin1Char(' '), 0, 0) + QLatin1String(".revoke"))); + page->kURLRequester1->setUrl(QString(revurl + email.section(QLatin1Char( ' ' ), 0, 0) + QLatin1String( ".revoke" ))); const QString fingerprint(genkey->getFingerprint()); page->TLid->setText(QLatin1String( "<b>" ) + fingerprint.right(8) + QLatin1String( "</b>" )); @@ -602,8 +602,11 @@ keyCreated->setMainWidget(page); keyCreated->exec(); - if (keyCreated.isNull()) + if (keyCreated.isNull()) { return; + } else { + delete keyCreated; + } imodel->refreshKey(fingerprint); KGpgKeyNode *knode = imodel->getRootNode()->findKey(fingerprint); @@ -627,7 +630,6 @@ genRev->start(); } - delete keyCreated; break; } default: @@ -1703,8 +1705,7 @@ QList<KGpgNode *> members(gnd->getChildren()); - groupEdit *gEdit = new groupEdit(dialogGroupEdit, &members); - gEdit->setModel(imodel); + groupEdit *gEdit = new groupEdit(dialogGroupEdit, &members, imodel); dialogGroupEdit->setMainWidget(gEdit); @@ -2119,7 +2120,7 @@ parentKey = parent->getParentKeyNode()->getId(); break; default: - Q_ASSERT(1); + Q_ASSERT(0); return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/kgpg.kcfg new/kgpg-4.10.90/kgpg.kcfg --- old/kgpg-4.10.4/kgpg.kcfg 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/kgpg.kcfg 2013-06-10 20:53:48.000000000 +0200 @@ -227,6 +227,18 @@ </entry> </group> + <group name="Key List"> + <entry name="EmailSorting" type="Enum" key="EmailSorting"> + <choices> + <choice name="Alphabetical"/> + <choice name="TLDfirst"/> + <choice name="DomainFirst"/> + <choice name="FQDNFirst"/> + </choices> + <default>Alphabetical</default> + </entry> + </group> + <!-- Should in future be merged with Key Servers, for compatibility reasons with kde 3.5 it is now in a separate group. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/kgpgoptions.cpp new/kgpg-4.10.90/kgpgoptions.cpp --- old/kgpg-4.10.4/kgpgoptions.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/kgpgoptions.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -92,6 +92,12 @@ m_fontchooser->setObjectName( QLatin1String("kcfg_Font" )); fontlayout->addWidget(m_fontchooser); + m_page3->kcfg_EmailSorting->addItem(i18n("Left to right, account first")); ///< KGpgSettings::EnumEmailSorting::Alphabetical + m_page3->kcfg_EmailSorting->addItem(i18n("Right to left, TLD first")); ///< KGpgSettings::EnumEmailSorting::TLDfirst + m_page3->kcfg_EmailSorting->addItem(i18n("Right to left, domain first")); ///< KGpgSettings::EnumEmailSorting::DomainFirst + m_page3->kcfg_EmailSorting->addItem(i18n("Right to left, FQDN first")); ///< KGpgSettings::EnumEmailSorting::FQDNFirst + m_emailSortingIndex = KGpgSettings::emailSorting(); + pixkeySingle = Images::single(); pixkeyDouble = Images::pair(); addPage(m_page1, i18n("Encryption"), QLatin1String( "document-encrypt" )); @@ -345,6 +351,9 @@ m_page4->use_agent->setChecked(m_useagent); + m_emailSortingIndex = KGpgSettings::emailSorting(); + m_page3->kcfg_EmailSorting->setCurrentIndex(m_emailSortingIndex); + m_page6->ServerBox->clear(); QStringList servers(serverList); @@ -371,6 +380,8 @@ m_page6->ServerBox->addItem(i18nc("Mark default keyserver in GUI", "%1 (Default)", defaultKeyServer)); m_page6->ServerBox->addItems(defaultServerList); + m_page3->kcfg_EmailSorting->setCurrentIndex(KGpgSettings::EnumEmailSorting::Alphabetical); + kDebug(2100) << "Finishing default options" ; } @@ -484,6 +495,9 @@ m_emailTemplate = m_page7->EmailTemplateEdit->toPlainText(); KGpgSettings::setEmailTemplate(m_emailTemplate); + m_emailSortingIndex = m_page3->kcfg_EmailSorting->currentIndex(); + KGpgSettings::setEmailSorting(m_emailSortingIndex); + KGpgSettings::self()->writeConfig(); m_config->sync(); @@ -595,6 +609,9 @@ if (m_page7->kcfg_MailUats->currentIndex() != m_mailUats) return true; + if (m_page3->kcfg_EmailSorting->currentIndex() != m_emailSortingIndex) + return true; + return false; } @@ -634,6 +651,9 @@ if (m_page7->kcfg_MailUats->currentIndex() != KGpgSettings::EnumMailUats::All) return false; + if (m_page3->kcfg_EmailSorting->currentIndex() != KGpgSettings::EnumEmailSorting::Alphabetical) + return false; + return true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/kgpgoptions.h new/kgpg-4.10.90/kgpgoptions.h --- old/kgpg-4.10.4/kgpgoptions.h 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/kgpgoptions.h 2013-06-10 20:53:48.000000000 +0200 @@ -168,6 +168,7 @@ bool m_showsystray; int m_trayaction; int m_mailUats; + int m_emailSortingIndex; QString m_emailTemplate; KGpgItemModel * const m_model; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/main.cpp new/kgpg-4.10.90/main.cpp --- old/kgpg-4.10.4/main.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/main.cpp 2013-06-26 21:26:03.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (C) 2002 Jean-Baptiste Mardelle <b...@altern.org> - * Copyright (C) 2007,2008,2009,2010,2011,2012,2013 + * Copyright (C) 2007,2008,2009,2010,2011,2012 * Rolf Eike Beer <k...@opensource.sf-tec.de> */ @@ -23,7 +23,7 @@ static const char description[] = I18N_NOOP("KGpg - simple gui for gpg\n\nKGpg was designed to make gpg very easy to use.\nI tried to make it as secure as possible.\nHope you enjoy it."); -static const char version[] = "2.9.1"; +static const char version[] = "2.9.90"; int main(int argc, char *argv[]) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/model/keylistproxymodel.cpp new/kgpg-4.10.90/model/keylistproxymodel.cpp --- old/kgpg-4.10.4/model/keylistproxymodel.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/model/keylistproxymodel.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,4 +1,4 @@ -/* Copyright 2008,2009,2010,2012 Rolf Eike Beer <k...@opensource.sf-tec.de> +/* Copyright 2008,2009,2010,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -19,8 +19,9 @@ #include "keylistproxymodel.h" #include "model/kgpgitemnode.h" #include "kgpgitemmodel.h" +#include "kgpgsettings.h" #include "core/kgpgkey.h" -#include "core/convert.h" +#include "core/images.h" #include <KLocale> #include <QDate> @@ -39,17 +40,18 @@ KGpgItemModel *m_model; bool m_onlysecret; KgpgCore::KgpgKeyTrustFlag m_mintrust; - bool m_showexpired; int m_previewsize; int m_idLength; KeyListProxyModel::DisplayMode m_displaymode; + QString reorderEmailComponents(const QString &emailAddress) const; QVariant dataSingleColumn(const QModelIndex &index, int role, const KGpgNode *node) const; QVariant dataMultiColumn(const QModelIndex &index, int role, const KGpgNode *node) const; }; KeyListProxyModelPrivate::KeyListProxyModelPrivate(KeyListProxyModel *parent, const KeyListProxyModel::DisplayMode mode) : q_ptr(parent), + m_model(NULL), m_onlysecret(false), m_mintrust(TRUST_UNKNOWN), m_previewsize(22), @@ -58,6 +60,76 @@ { } +QString +KeyListProxyModelPrivate::reorderEmailComponents(const QString &emailAddress) const +{ + if (emailAddress.isEmpty()) return QString(); + + switch (KGpgSettings::emailSorting()){ + case KGpgSettings::EnumEmailSorting::TLDfirst: + { + /// split email addresses along @ and . + static const QRegExp emailSplitRegExp(QLatin1String("[@.]")); + /// get components of an email address + /// exam...@kde.org becomes [example, kde, org] + const QStringList emailComponents = emailAddress.split(emailSplitRegExp); + /// assemble result by joining components in reverse order, + /// separated by a dot + QString result; + foreach(const QString &component, emailComponents) + result = result.prepend(component).prepend(QLatin1Char('.')); + /// convert result to lower case to make sorting case-insensitive + return result.toLower(); + } + case KGpgSettings::EnumEmailSorting::DomainFirst: + { + /// split email addresses at @ + static const QLatin1Char emailSplitAt('@'); + /// split domain at . + static const QLatin1Char domainSplitDot('.'); + /// get components of an email address + /// exam...@kde.org becomes [example, www.kde.org] + const QStringList emailComponents = emailAddress.split(emailSplitAt); + if (emailComponents.count() != 2) /// expect an email address to contain exactly one @ + return emailAddress.toLower(); + /// get components of a domain + /// www.kde.org becomes [www, kde, org] + const QString fqdn = emailComponents.last(); + const QStringList fqdnComponents = fqdn.split(domainSplitDot); + if (fqdnComponents.count() < 2) /// if domain consists of less than two components ... + return fqdn + domainSplitDot + emailComponents.first(); /// ... take shortcut + /// reverse last two components of domain, becomes e.g. kde.org + QString result = fqdnComponents[fqdnComponents.count() - 2] + domainSplitDot + fqdnComponents[fqdnComponents.count() - 1]; + /// append remaining components of domain, becomes e.g. kde.org.www + for (int i = 0; i < fqdnComponents.count() - 2; ++i) + result = result.append(domainSplitDot + fqdnComponents[i]); + /// append user name component of email address, becomes e.g. kde.org.www.example + result = result.append(domainSplitDot + emailComponents.first()); + /// convert result to lower case to make sorting case-insensitive + return result.toLower(); + } + case KGpgSettings::EnumEmailSorting::FQDNFirst: + { + /// split email addresses at @ + static const QLatin1Char emailSplitAt('@'); + /// get components of an email address + /// exam...@kde.org becomes [example, kde.org] + const QStringList emailComponents = emailAddress.split(emailSplitAt); + /// assemble result by joining components in reverse order, + /// separated by a dot + QString result; + foreach(const QString &component, emailComponents) + result = result.prepend(component).prepend(QLatin1Char('.')); + /// convert result to lower case to make sorting case-insensitive + return result.toLower(); + } + default: + /// do not modify email address except for lower-case conversion + /// to make sorting case-insensitive + return emailAddress.toLower(); + } +} + QVariant KeyListProxyModelPrivate::dataSingleColumn(const QModelIndex &index, int role, const KGpgNode *node) const { @@ -73,7 +145,7 @@ const KGpgUatNode *nd = node->toUatNode(); return nd->getPixmap().scaled(m_previewsize + 5, m_previewsize, Qt::KeepAspectRatio); } else { - return Convert::toPixmap(ITYPE_UAT); + return Images::photo(); } } else { return m_model->data(q->mapToSource(index), Qt::DecorationRole); @@ -125,7 +197,7 @@ const KGpgUatNode *nd = node->toUatNode(); return nd->getPixmap().scaled(m_previewsize + 5, m_previewsize, Qt::KeepAspectRatio); } else { - return Convert::toPixmap(ITYPE_UAT); + return Images::photo(); } } else if ((role == Qt::DisplayRole) && (index.column() == KEYCOLUMN_ID)) { QString id = m_model->data(q->mapToSource(index), Qt::DisplayRole).toString(); @@ -236,7 +308,8 @@ } return (left->getName().compare(right->getName().toLower(), Qt::CaseInsensitive) < 0); case KEYCOLUMN_EMAIL: - return (left->getEmail() < right->getEmail()); + /// reverse email address to sort by TLD first, then domain, and account name last + return (reorderEmailComponents(left->getEmail()) < reorderEmailComponents(right->getEmail())); case KEYCOLUMN_TRUST: return (left->getTrust() < right->getTrust()); case KEYCOLUMN_EXPIR: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/model/kgpgitemmodel.cpp new/kgpg-4.10.90/model/kgpgitemmodel.cpp --- old/kgpg-4.10.4/model/kgpgitemmodel.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/model/kgpgitemmodel.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,4 +1,4 @@ -/* Copyright 2008,2009,2010,2011,2012 Rolf Eike Beer <k...@opensource.sf-tec.de> +/* Copyright 2008,2009,2010,2011,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -20,6 +20,7 @@ #include "kgpgsettings.h" #include "core/convert.h" +#include "core/images.h" #include "model/kgpgitemnode.h" #include <KGlobal> @@ -111,10 +112,30 @@ case Qt::EditRole: return node->getName(); case Qt::DecorationRole: - if (node->getType() == ITYPE_UAT) { + switch (node->getType()) { + case ITYPE_GROUP: + return Images::group(); + case ITYPE_GSECRET: + case ITYPE_SECRET: + return Images::orphan(); + case ITYPE_GPUBLIC: + case ITYPE_SUB: + case ITYPE_PUBLIC: + return Images::single(); + case ITYPE_GPAIR: + case ITYPE_PAIR: + return Images::pair(); + case ITYPE_UID: + return Images::userId(); + case ITYPE_UAT: return node->toUatNode()->getPixmap(); - } else { - return Convert::toPixmap(node->getType()); + case ITYPE_REVSIGN: + return Images::revoke(); + case ITYPE_SIGN: + return Images::signature(); + default: + Q_ASSERT(0); + return QVariant(); } case Qt::ToolTipRole: return node->getComment(); @@ -129,8 +150,30 @@ KgpgKeyTrust t = node->getTrust(); switch (role) { - case Qt::BackgroundColorRole: return Convert::toColor(t); - case Qt::AccessibleTextRole: return Convert::toString(t); + case Qt::BackgroundColorRole: + switch (t) { + case TRUST_INVALID: + case TRUST_DISABLED: + return KGpgSettings::colorBad(); + case TRUST_EXPIRED: + return KGpgSettings::colorExpired(); + case TRUST_MARGINAL: + return KGpgSettings::colorMarginal(); + case TRUST_REVOKED: + return KGpgSettings::colorRev(); + case TRUST_UNDEFINED: + case TRUST_NONE: + return KGpgSettings::colorUnknown(); + case TRUST_FULL: + return KGpgSettings::colorGood(); + case TRUST_ULTIMATE: + return KGpgSettings::colorUltimate(); + case TRUST_UNKNOWN: + default: + return KGpgSettings::colorUnknown(); + } + case Qt::AccessibleTextRole: + return Convert::toString(t); } break; } @@ -180,7 +223,6 @@ break; } - Q_ASSERT(1); return QVariant(); } @@ -360,15 +402,15 @@ } QModelIndex -KGpgItemModel::nodeIndex(KGpgNode *node) +KGpgItemModel::nodeIndex(KGpgNode *node, const int column) { KGpgNode *p = node->getParentKeyNode(); for (int i = 0; i < p->getChildCount(); i++) if (p->getChild(i) == node) - return createIndex(i, 0, node); + return createIndex(i, column, node); - Q_ASSERT(1); + Q_ASSERT(0); return QModelIndex(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/model/kgpgitemmodel.h new/kgpg-4.10.90/model/kgpgitemmodel.h --- old/kgpg-4.10.4/model/kgpgitemmodel.h 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/model/kgpgitemmodel.h 2013-06-10 20:53:48.000000000 +0200 @@ -79,7 +79,7 @@ void changeGroup(KGpgGroupNode *node, const KGpgNode::List &keys); void deleteFromGroup(KGpgGroupNode *group, KGpgGroupMemberNode *member); void setDefaultKey(KGpgKeyNode *def); - QModelIndex nodeIndex(KGpgNode *node); + QModelIndex nodeIndex(KGpgNode *node, const int column = 0); void refreshKey(const QString &id); void refreshKey(KGpgKeyNode *nd); void refreshKeys(const QStringList &ids = QStringList()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/model/kgpgsearchresultmodel.cpp new/kgpg-4.10.90/model/kgpgsearchresultmodel.cpp --- old/kgpg-4.10.4/model/kgpgsearchresultmodel.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/model/kgpgsearchresultmodel.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009,2010 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2009,2010,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> */ /*************************************************************************** @@ -62,7 +62,9 @@ SearchResult::SearchResult(const QString &line) : m_validPub(false), - m_uatCount(0) + m_uatCount(0), + m_revoked(false), + m_bits(0) { const QStringList parts(line.split(QLatin1Char( ':' ))); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/model/selectkeyproxymodel.cpp new/kgpg-4.10.90/model/selectkeyproxymodel.cpp --- old/kgpg-4.10.4/model/selectkeyproxymodel.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/model/selectkeyproxymodel.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,4 +1,4 @@ -/* Copyright 2008 Rolf Eike Beer <k...@opensource.sf-tec.de> +/* Copyright 2008,2010,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -25,7 +25,9 @@ using namespace KgpgCore; SelectKeyProxyModel::SelectKeyProxyModel(QObject *parent) - : QSortFilterProxyModel(parent), m_model(NULL) + : QSortFilterProxyModel(parent), + m_model(NULL), + m_showUntrusted(false) { } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/transactions/kgpgchangepass.cpp new/kgpg-4.10.90/transactions/kgpgchangepass.cpp --- old/kgpg-4.10.4/transactions/kgpgchangepass.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/transactions/kgpgchangepass.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009,2010,2011,2012 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2008,2009,2010,2011,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> */ /*************************************************************************** @@ -16,7 +16,8 @@ #include <KLocale> KGpgChangePass::KGpgChangePass(QObject *parent, const QString &keyid) - : KGpgTransaction(parent) + : KGpgTransaction(parent), + m_seenold(false) { addArgument(QLatin1String( "--status-fd=1" )); addArgument(QLatin1String( "--command-fd=0" )); @@ -34,8 +35,6 @@ { setSuccess(TS_MSG_SEQUENCE); - m_seenold = false; - return true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/transactions/kgpggeneratekey.cpp new/kgpg-4.10.90/transactions/kgpggeneratekey.cpp --- old/kgpg-4.10.4/transactions/kgpggeneratekey.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/transactions/kgpggeneratekey.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009,2010,2011,2012 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2008,2009,2010,2011,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> */ /*************************************************************************** @@ -54,7 +54,6 @@ } m_fingerprint.clear(); - m_namesent = false; setSuccess(TS_MSG_SEQUENCE); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/transactions/kgpggeneratekey.h new/kgpg-4.10.90/transactions/kgpggeneratekey.h --- old/kgpg-4.10.4/transactions/kgpggeneratekey.h 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/transactions/kgpggeneratekey.h 2013-06-10 20:53:48.000000000 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009,2012 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2008,2009,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> */ /*************************************************************************** @@ -92,7 +92,6 @@ unsigned int m_expire; unsigned int m_expireunit; QString m_fingerprint; - bool m_namesent; QString m_errorOutput; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/transactions/kgpgsigntransactionhelper.cpp new/kgpg-4.10.90/transactions/kgpgsigntransactionhelper.cpp --- old/kgpg-4.10.4/transactions/kgpgsigntransactionhelper.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/transactions/kgpgsigntransactionhelper.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009,2012 Rolf Eike Beer <k...@opensource.sf-tec.de> + * Copyright (C) 2009,2012,2013 Rolf Eike Beer <k...@opensource.sf-tec.de> */ /*************************************************************************** @@ -17,7 +17,8 @@ #include "model/kgpgitemnode.h" KGpgSignTransactionHelper::KGpgSignTransactionHelper(const QString &signer, const bool local, const carefulCheck checking) - : m_signer(signer), + : m_node(NULL), + m_signer(signer), m_local(local), m_checking(checking), m_signerPos(-1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/transactions/kgpgtextorfiletransaction.cpp new/kgpg-4.10.90/transactions/kgpgtextorfiletransaction.cpp --- old/kgpg-4.10.4/transactions/kgpgtextorfiletransaction.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/transactions/kgpgtextorfiletransaction.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -15,13 +15,15 @@ #include "gpgproc.h" +#include <KDebug> #include <KIO/NetAccess> #include <KLocale> +#include <QRegExp> KGpgTextOrFileTransaction::KGpgTextOrFileTransaction(QObject *parent, const QString &text, const bool allowChaining) - : KGpgTransaction(parent, allowChaining), - m_text(text) + : KGpgTransaction(parent, allowChaining) { + setText(text); } KGpgTextOrFileTransaction::KGpgTextOrFileTransaction(QObject *parent, const KUrl::List &files, const bool allowChaining) @@ -40,6 +42,37 @@ { m_text = text; cleanUrls(); + + int begin = text.indexOf(QRegExp(QLatin1String("^(.*\n)?-----BEGIN PGP [A-Z ]*-----\r?\n"))); + if (begin < 0) + return; + + // find the end of the BEGIN PGP ... line + static const QChar lf = QLatin1Char('\n'); + begin = text.indexOf(lf, begin); + Q_ASSERT(begin > 0); + + // now loop until either an empty line is found (end of header) or + // a line beginning with Charset is found. If the latter, use the + // charset found there as hint for the following operation + int nextlf; + begin++; + while ((nextlf = text.indexOf(lf, begin)) > 0) { + static const QChar cr = QLatin1Char('\r'); + if ((nextlf == begin) || ((nextlf == begin + 1) && (text[begin] == cr))) + break; + + const QString charset = QLatin1String("Charset: "); + if (text.mid(begin, charset.length()) == charset) { + QString cs = text.mid(begin + charset.length(), nextlf - begin - charset.length()); + if (!getProcess()->setCodec(cs.toAscii())) + kDebug(2100) << "unsupported charset found in header" << cs; + break; + } + begin = nextlf + 1; + } + + } void diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kgpg-4.10.4/transactions/kgpgverify.cpp new/kgpg-4.10.90/transactions/kgpgverify.cpp --- old/kgpg-4.10.4/transactions/kgpgverify.cpp 2013-05-28 21:30:19.000000000 +0200 +++ new/kgpg-4.10.90/transactions/kgpgverify.cpp 2013-06-10 20:53:48.000000000 +0200 @@ -107,7 +107,7 @@ // for a good signature. Since VALIDSIG has more information // we use that. const QRegExp validsig(QLatin1String("^\\[GNUPG:\\] VALIDSIG([ ]+[^ ]+){10,}.*$")); - const bool useGoodSig = (model != NULL) && (log.indexOf(validsig) == -1); + const bool useGoodSig = (model == NULL) || (log.indexOf(validsig) == -1); QString sigtime; // timestamp of signature creation foreach (const QString &line, log) { @@ -116,7 +116,7 @@ const QString msg = line.mid(9); - if (msg.startsWith(QLatin1String("VALIDSIG ")) && !useGoodSig) { + if (!useGoodSig && msg.startsWith(QLatin1String("VALIDSIG "))) { // from GnuPG source, doc/DETAILS: // VALIDSIG <fingerprint in hex> <sig_creation_date> <sig-timestamp> // <expire-timestamp> <sig-version> <reserved> <pubkey-algo> -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org