Show status info for key, uid and signature, in tooltips.

Status like IsExpired, IsInvalid ...
This commit is contained in:
SET
2020-11-04 21:45:48 +01:00
parent 54fa245fa8
commit ea720f2cab
5 changed files with 112 additions and 0 deletions

View File

@@ -250,6 +250,7 @@ void K7Main::DisplayKeys(const vector<GpgME::Key>& kList, const WString& grpLabe
{ {
const GpgME::Key k = kList.at(i); const GpgME::Key k = kList.at(i);
WTreeTableNode * keyNode = new WTreeTableNode(k.userID(0).name()); WTreeTableNode * keyNode = new WTreeTableNode(k.userID(0).name());
keyNode->setToolTip(Tools::GetKeyStatus(k));
WLink ln; WLink ln;
ln.setUrl(WString(L"javascript:void(0)").toUTF8()); ln.setUrl(WString(L"javascript:void(0)").toUTF8());
WAnchor * anc = new WAnchor(ln, k.shortKeyID()); WAnchor * anc = new WAnchor(ln, k.shortKeyID());
@@ -317,6 +318,7 @@ void K7Main::DisplayUids(const WString& fullKeyID, bool secret)
{ {
UserID uid = k.userID(i); UserID uid = k.userID(i);
WTreeTableNode * uidNode = new WTreeTableNode(uid.name()); WTreeTableNode * uidNode = new WTreeTableNode(uid.name());
uidNode->setToolTip(Tools::GetUidStatus(uid));
TreeTableNodeText * ttntUidEmail = new TreeTableNodeText(uid.email(), uidNode, 1); TreeTableNodeText * ttntUidEmail = new TreeTableNodeText(uid.email(), uidNode, 1);
uidNode->setColumnWidget(1, unique_ptr<TreeTableNodeText> (ttntUidEmail)); uidNode->setColumnWidget(1, unique_ptr<TreeTableNodeText> (ttntUidEmail));
// Show key certify popup on double click // 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_ const WString signer = WString(sig.signerName()) + _SPACE_
+ WString(sig.signerKeyID()); + WString(sig.signerKeyID());
WTreeTableNode * sigNode = new WTreeTableNode(signer); WTreeTableNode * sigNode = new WTreeTableNode(signer);
sigNode->setToolTip(Tools::GetSigStatus(sig));
TreeTableNodeText * ttntEmail = new TreeTableNodeText(sig.signerEmail(), sigNode, 1); TreeTableNodeText * ttntEmail = new TreeTableNodeText(sig.signerEmail(), sigNode, 1);
sigNode->setColumnWidget(1, unique_ptr<TreeTableNodeText> (ttntEmail)); sigNode->setColumnWidget(1, unique_ptr<TreeTableNodeText> (ttntEmail));
WString exp = TR("Expiration") + _SPACE_ + _COLON_ + _SPACE_; WString exp = TR("Expiration") + _SPACE_ + _COLON_ + _SPACE_;
@@ -376,6 +379,7 @@ void K7Main::DisplaySubKeys(const WString& fullKeyID, bool secret)
{ {
Subkey sk = k.subkey(i); Subkey sk = k.subkey(i);
WTreeTableNode * skNode = new WTreeTableNode(sk.keyID()); WTreeTableNode * skNode = new WTreeTableNode(sk.keyID());
skNode->setToolTip(Tools::GetKeyStatus(k));
TreeTableNodeText * ttntFpr = new TreeTableNodeText(sk.fingerprint(), skNode, 1); TreeTableNodeText * ttntFpr = new TreeTableNodeText(sk.fingerprint(), skNode, 1);
skNode->setColumnWidget(1, unique_ptr<TreeTableNodeText> (ttntFpr)); skNode->setColumnWidget(1, unique_ptr<TreeTableNodeText> (ttntFpr));
WString exp = sk.neverExpires() ? TR("Never") : MakeDateTimeLabel(sk.expirationTime()); WString exp = sk.neverExpires() ? TR("Never") : MakeDateTimeLabel(sk.expirationTime());

View File

@@ -33,3 +33,59 @@ int Tools::ToInt(const string& s) {
buffer >> num; buffer >> num;
return 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;
}

View File

@@ -38,6 +38,12 @@ public:
*/ */
static int ToInt(const string& s); 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: private:
}; };

View File

@@ -81,4 +81,27 @@
<message id='CertificationFailure'>Key certification failed</message> <message id='CertificationFailure'>Key certification failed</message>
<message id='PrepareCopy'>Click to be able to copy next</message> <message id='PrepareCopy'>Click to be able to copy next</message>
<message id='KeyStatusFor'>Status for key</message>
<message id='KeyStatusIsBad'>Bad</message>
<message id='KeyStatusIsNull'>Null</message>
<message id='KeyStatusIsInvalid'>Invalid</message>
<message id='KeyStatusIsDisabled'>Disabled</message>
<message id='KeyStatusIsExpired'>Expired</message>
<message id='KeyStatusIsRevoked'>Revoked</message>
<message id='UserStatus'>User status</message>
<message id='UserStatusIsBad'>Bad</message>
<message id='UserStatusIsNull'>Null</message>
<message id='UserStatusIsInvalid'>Invalid</message>
<message id='UserStatusIsRevoked'>Revoked</message>
<message id='SigStatus'>Signature status</message>
<message id='SigStatusIsBad'>Bad</message>
<message id='SigStatusIsNull'>Null</message>
<message id='SigStatusIsInvalid'>Invalid</message>
<message id='SigStatusIsExportable'>Exportable</message>
<message id='SigStatusIsExpired'>Expired</message>
<message id='SigStatusIsRevokation'>Revokation</message>
</messages> </messages>

View File

@@ -81,4 +81,27 @@
<message id='CertificationFailure'>Échec de certification de la clé</message> <message id='CertificationFailure'>Échec de certification de la clé</message>
<message id='PrepareCopy'>Cliquez pour pouvoir ensuite copier</message> <message id='PrepareCopy'>Cliquez pour pouvoir ensuite copier</message>
<message id='KeyStatusFor'>État de la clé</message>
<message id='KeyStatusIsBad'>Mauvais</message>
<message id='KeyStatusIsNull'>Null</message>
<message id='KeyStatusIsInvalid'>Invalide</message>
<message id='KeyStatusIsDisabled'>Désactivé</message>
<message id='KeyStatusIsExpired'>Expiré</message>
<message id='KeyStatusIsRevoked'>Revoqué</message>
<message id='UserStatus'>État de l'utilisateur</message>
<message id='UserStatusIsBad'>Mauvais</message>
<message id='UserStatusIsNull'>Null</message>
<message id='UserStatusIsInvalid'>Invalide</message>
<message id='UserStatusIsRevoked'>Revoqué</message>
<message id='SigStatus'>État de la signature</message>
<message id='SigStatusIsBad'>Mauvais</message>
<message id='SigStatusIsNull'>Null</message>
<message id='SigStatusIsInvalid'>Invalide</message>
<message id='SigStatusIsExportable'>Exportable</message>
<message id='SigStatusIsExpired'>Expiré</message>
<message id='SigStatusIsRevokation'>Revocation</message>
</messages> </messages>