diff --git a/K7Main.cpp b/K7Main.cpp index 5072ac2..58c3052 100644 --- a/K7Main.cpp +++ b/K7Main.cpp @@ -250,6 +250,7 @@ void K7Main::DisplayKeys(const vector& kList, const WString& grpLabe { const GpgME::Key k = kList.at(i); WTreeTableNode * keyNode = new WTreeTableNode(k.userID(0).name()); + keyNode->setToolTip(Tools::GetKeyStatus(k)); WLink ln; ln.setUrl(WString(L"javascript:void(0)").toUTF8()); WAnchor * anc = new WAnchor(ln, k.shortKeyID()); @@ -317,6 +318,7 @@ void K7Main::DisplayUids(const WString& fullKeyID, bool secret) { UserID uid = k.userID(i); WTreeTableNode * uidNode = new WTreeTableNode(uid.name()); + uidNode->setToolTip(Tools::GetUidStatus(uid)); TreeTableNodeText * ttntUidEmail = new TreeTableNodeText(uid.email(), uidNode, 1); uidNode->setColumnWidget(1, unique_ptr (ttntUidEmail)); // Show key certify popup on double click @@ -336,6 +338,7 @@ void K7Main::DisplayUids(const WString& fullKeyID, bool secret) const WString signer = WString(sig.signerName()) + _SPACE_ + WString(sig.signerKeyID()); WTreeTableNode * sigNode = new WTreeTableNode(signer); + sigNode->setToolTip(Tools::GetSigStatus(sig)); TreeTableNodeText * ttntEmail = new TreeTableNodeText(sig.signerEmail(), sigNode, 1); sigNode->setColumnWidget(1, unique_ptr (ttntEmail)); WString exp = TR("Expiration") + _SPACE_ + _COLON_ + _SPACE_; @@ -376,6 +379,7 @@ void K7Main::DisplaySubKeys(const WString& fullKeyID, bool secret) { Subkey sk = k.subkey(i); WTreeTableNode * skNode = new WTreeTableNode(sk.keyID()); + skNode->setToolTip(Tools::GetKeyStatus(k)); TreeTableNodeText * ttntFpr = new TreeTableNodeText(sk.fingerprint(), skNode, 1); skNode->setColumnWidget(1, unique_ptr (ttntFpr)); WString exp = sk.neverExpires() ? TR("Never") : MakeDateTimeLabel(sk.expirationTime()); diff --git a/Tools.cpp b/Tools.cpp index 7f82882..2ab3add 100644 --- a/Tools.cpp +++ b/Tools.cpp @@ -33,3 +33,59 @@ int Tools::ToInt(const string& s) { buffer >> num; return num; } + +WString Tools::TexttualBool(bool value) +{ + const WString res = value + ? WString::tr("Yes") + : WString::tr("No"); + return res; +} + +WString Tools::GetKeyStatus(const GpgME::Key& k) +{ + const WString nl("\n"); + const WString sep(" : "); + WString status(WString::tr("KeyStatusFor")); + status += WString(" "); + status += WString(k.keyID()) + WString(" :") + nl + nl; + status += WString(WString::tr("KeyStatusIsBad")) + sep + TexttualBool(k.isBad()) + nl; + status += WString(WString::tr("KeyStatusIsNull")) + sep + TexttualBool(k.isBad()) + nl; + status += WString(WString::tr("KeyStatusIsInvalid")) + sep + TexttualBool(k.isBad()) + nl; + status += WString(WString::tr("KeyStatusIsDisabled")) + sep + TexttualBool(k.isBad()) + nl; + status += WString(WString::tr("KeyStatusIsExpired")) + sep + TexttualBool(k.isBad()) + nl; + status += WString(WString::tr("KeyStatusIsRevoked")) + sep + TexttualBool(k.isBad()); + + return status; +} + +WString Tools::GetUidStatus(const GpgME::UserID& uid) +{ + const WString nl("\n"); + const WString sep(" : "); + WString status(WString::tr("UserStatus")); + status += WString(" :") + nl + nl; + status += WString(WString::tr("UserStatusIsBad")) + sep + TexttualBool(uid.isBad()) + nl; + status += WString(WString::tr("UserStatusIsNull")) + sep + TexttualBool(uid.isBad()) + nl; + status += WString(WString::tr("UserStatusIsInvalid")) + sep + TexttualBool(uid.isBad()) + nl; + status += WString(WString::tr("UserStatusIsRevoked")) + sep + TexttualBool(uid.isBad()); + + return status; +} + +WString Tools::GetSigStatus(const GpgME::UserID::Signature& sig) +{ + const WString nl("\n"); + const WString sep(" : "); + WString status(WString::tr("SigStatus")); + status += WString(" :") + nl + nl; + status += WString(WString::tr("SigStatusIsBad")) + sep + TexttualBool(sig.isBad()) + nl; + status += WString(WString::tr("SigStatusIsNull")) + sep + TexttualBool(sig.isBad()) + nl; + status += WString(WString::tr("SigStatusIsInvalid")) + sep + TexttualBool(sig.isBad()) + nl; + status += WString(WString::tr("SigStatusIsExportable")) + sep + TexttualBool(sig.isBad()) + nl; + status += WString(WString::tr("SigStatusIsExpired")) + sep + TexttualBool(sig.isBad()) + nl; + status += WString(WString::tr("SigStatusIsRevokation")) + sep + TexttualBool(sig.isBad()); + + return status; +} + diff --git a/Tools.h b/Tools.h index ab01b79..54258dd 100644 --- a/Tools.h +++ b/Tools.h @@ -38,6 +38,12 @@ public: */ static int ToInt(const string& s); + static WString TexttualBool(bool value); + + static WString GetKeyStatus(const GpgME::Key& k); + static WString GetUidStatus(const GpgME::UserID& uid); + static WString GetSigStatus(const GpgME::UserID::Signature& sig); + private: }; diff --git a/WTAPPROOT/K7/K7.xml b/WTAPPROOT/K7/K7.xml index b30b2a1..466821b 100644 --- a/WTAPPROOT/K7/K7.xml +++ b/WTAPPROOT/K7/K7.xml @@ -81,4 +81,27 @@ Key certification failed Click to be able to copy next + + Status for key + Bad + Null + Invalid + Disabled + Expired + Revoked + + User status + Bad + Null + Invalid + Revoked + + Signature status + Bad + Null + Invalid + Exportable + Expired + Revokation + \ No newline at end of file diff --git a/WTAPPROOT/K7/K7_fr.xml b/WTAPPROOT/K7/K7_fr.xml index fd259da..5fb99ec 100644 --- a/WTAPPROOT/K7/K7_fr.xml +++ b/WTAPPROOT/K7/K7_fr.xml @@ -81,4 +81,27 @@ Échec de certification de la clé Cliquez pour pouvoir ensuite copier + + État de la clé + Mauvais + Null + Invalide + Désactivé + Expiré + Revoqué + + État de l'utilisateur + Mauvais + Null + Invalide + Revoqué + + État de la signature + Mauvais + Null + Invalide + Exportable + Expiré + Revocation +