aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--resource/lfs/locale/ts/GpgFrontend.de_DE.ts133
-rw-r--r--resource/lfs/locale/ts/GpgFrontend.en_US.ts125
-rw-r--r--resource/lfs/locale/ts/GpgFrontend.fr_FR.ts131
-rw-r--r--resource/lfs/locale/ts/GpgFrontend.it_IT.ts133
-rw-r--r--resource/lfs/locale/ts/GpgFrontend.zh_CN.ts133
-rw-r--r--resource/lfs/locale/ts/GpgFrontend.zh_TW.ts131
-rw-r--r--src/core/function/gpg/GpgAdvancedOperator.cpp9
-rw-r--r--src/core/function/gpg/GpgAdvancedOperator.h2
-rw-r--r--src/core/function/gpg/GpgAssuanHelper.cpp35
-rw-r--r--src/core/function/gpg/GpgAssuanHelper.h8
-rw-r--r--src/core/function/gpg/GpgComponentManager.cpp8
-rw-r--r--src/core/function/gpg/GpgComponentManager.h7
-rw-r--r--src/ui/dialog/key_generate/KeyGenerateDialog.cpp1
13 files changed, 487 insertions, 369 deletions
diff --git a/resource/lfs/locale/ts/GpgFrontend.de_DE.ts b/resource/lfs/locale/ts/GpgFrontend.de_DE.ts
index 5f3b0c5c..ce3ee6b0 100644
--- a/resource/lfs/locale/ts/GpgFrontend.de_DE.ts
+++ b/resource/lfs/locale/ts/GpgFrontend.de_DE.ts
@@ -546,62 +546,72 @@
<context>
<name>GpgFrontend::UI::ADSKsPicker</name>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="55"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="56"/>
<source>Confirm</source>
<translation>Bestätigen</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="56"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="57"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="60"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="61"/>
<source>No Subkeys Selected</source>
<translation>Keine Unterschlüssel ausgewählt</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="61"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="62"/>
<source>Please select at least one Subkey.</source>
<translation>Bitte wählen Sie mindestens einen Unterschlüssel aus.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="73"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="77"/>
<source>Select ADSK(s)</source>
<translation>ADSK(s) auswählen</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="77"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="81"/>
<source>ADSK (Additional Decryption Subkey) allows others to encrypt data for you without having access to your private key. You are only allow to check subkeys with encryption capability.</source>
<translation>ADSK (zusätzlicher Entschlüsselungs-Unterschlüssel) ermöglicht es anderen, Daten für Sie zu verschlüsseln, ohne Zugriff auf Ihren privaten Schlüssel zu haben. Es können nur Unterschlüssel mit Verschlüsselungsfunktion ausgewählt werden.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="92"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="96"/>
<source>ADSKs Picker</source>
<translation>ADSK-Auswahl</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="108"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="115"/>
<source>Key ID: %1 Reason: %2</source>
<translation>Schlüssel-ID: %1 Grund: %2</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="122"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="127"/>
+ <source>Unknown Error</source>
+ <translation type="unfinished">Unbekannter Fehler</translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="128"/>
+ <source>Caught unknown error while exporting the key.</source>
+ <translation type="unfinished">Beim Exportieren des Schlüssels ist ein unbekannter Fehler aufgetreten.</translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="145"/>
<source>Failed</source>
<translation>Fehlgeschlagen</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="123"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="146"/>
<source>Partially Failed</source>
<translation>Teilweise fehlgeschlagen</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="125"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="149"/>
<source>Failed to add all selected subkeys.</source>
<translation>Alle ausgewählten Unterschlüssel konnten nicht hinzugefügt werden.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="126"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="150"/>
<source>Some subkeys failed to be added as ADSKs.</source>
<translation>Einige Unterschlüssel konnten nicht als ADSKs hinzugefügt werden.</translation>
</message>
@@ -1854,67 +1864,67 @@ This will result in loss of all cached form positions, statuses, key servers, et
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="64"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="71"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="580"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="586"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="581"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="587"/>
<source>Custom</source>
<translation>Benutzerdefiniert</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="72"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="529"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="530"/>
<source>3 Months</source>
<translation>3 Monate</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="73"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="534"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="535"/>
<source>6 Months</source>
<translation>6 Monate</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="74"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="539"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="540"/>
<source>1 Year</source>
<translation>1 Jahr</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="75"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="140"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="145"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="544"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="141"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="146"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="545"/>
<source>2 Years</source>
<translation>2 Jahre</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="76"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="549"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="550"/>
<source>5 Years</source>
<translation>5 Jahre</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="77"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="554"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="555"/>
<source>10 Years</source>
<translation>10 Jahre</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="78"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="101"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="110"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="560"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="102"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="111"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="561"/>
<source>Non Expired</source>
<translation>Nicht abgelaufen</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="82"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="295"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="591"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="296"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="592"/>
<source>Primary Key Only</source>
<translation>Nur Primärschlüssel</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="83"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="343"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="344"/>
<source>Primary Key With Subkey</source>
<translation>Primärschlüssel mit Unterschlüssel</translation>
</message>
@@ -1940,130 +1950,135 @@ This will result in loss of all cached form positions, statuses, key servers, et
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="90"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="93"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="103"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="94"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="104"/>
<source>Algorithm</source>
<translation>Algorithmus</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="91"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="94"/>
+ <source>Combination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="92"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="95"/>
<source>Validity Period</source>
<translation>Gültigkeitsdauer</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="95"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="105"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="96"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="106"/>
<source>Key Length</source>
<translation>Länge des Schlüssels</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="96"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="106"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="97"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="107"/>
<source>Usage</source>
<translation>Verwendungszweck</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="97"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="107"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="98"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="108"/>
<source>Encrypt</source>
<translation>Verschlüsseln</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="98"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="108"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="99"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="109"/>
<source>Sign</source>
<translation>Unterschreiben</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="99"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="109"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="100"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="110"/>
<source>Authentication</source>
<translation>Authentifizierung</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="100"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="101"/>
<source>No Passphrase</source>
<translation>Keine Passphrase</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="104"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="105"/>
<source>Expire Date</source>
<translation>Ablaufdatum</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="113"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="114"/>
<source>Easy Mode</source>
<translation>Einfacher Modus</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="114"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="115"/>
<source>Primary Key</source>
<translation>Primärschlüssel</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="115"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="116"/>
<source>Subkey</source>
<translation>Unterschlüssel</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="118"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="119"/>
<source>Generate</source>
<translation>Erstellen</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="135"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="266"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="136"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="267"/>
<source>None</source>
<translation>Kein</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="147"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="148"/>
<source>Generate Key</source>
<translation>Schlüssel erstellen</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="161"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="162"/>
<source>Name must contain at least five characters.</source>
<translation>Der Name muss mindestens fünf Zeichen enthalten.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="166"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="167"/>
<source>Please give a valid email address.</source>
<translation>Bitte geben Sie eine gültige E-Mail Adresse an.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="171"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="172"/>
<source>Please give a valid primary key algorithm.</source>
<translation>Bitte geben Sie einen gültigen Primärschlüssel-Algorithmus an.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="180"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="181"/>
<source>Time to primary key expiration must not be less than 120 seconds.</source>
<translation>Die Zeit bis zum Ablauf des Primärschlüssels darf nicht weniger als 120 Sekunden betragen.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="187"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="188"/>
<source>Please give a valid subkey algorithm.</source>
<translation>Bitte geben Sie einen gültigen Unterschlüssel-Algorithmus an.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="195"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="196"/>
<source>Time to subkey expiration must not be less than 120 seconds.</source>
<translation>Die Zeit bis zum Ablauf des Unterschlüssels darf nicht weniger als 120 Sekunden betragen.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="619"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="620"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="620"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="621"/>
<source>Unknown error occurred</source>
<translation>Unbekannter Fehler ist aufgetreten</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="632"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="633"/>
<source>Generating</source>
<translation>Erstellen</translation>
</message>
diff --git a/resource/lfs/locale/ts/GpgFrontend.en_US.ts b/resource/lfs/locale/ts/GpgFrontend.en_US.ts
index 8c1e8f24..045fb107 100644
--- a/resource/lfs/locale/ts/GpgFrontend.en_US.ts
+++ b/resource/lfs/locale/ts/GpgFrontend.en_US.ts
@@ -546,62 +546,72 @@
<context>
<name>GpgFrontend::UI::ADSKsPicker</name>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="55"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="56"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="56"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="57"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="60"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="61"/>
<source>No Subkeys Selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="61"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="62"/>
<source>Please select at least one Subkey.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="73"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="77"/>
<source>Select ADSK(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="77"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="81"/>
<source>ADSK (Additional Decryption Subkey) allows others to encrypt data for you without having access to your private key. You are only allow to check subkeys with encryption capability.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="92"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="96"/>
<source>ADSKs Picker</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="108"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="115"/>
<source>Key ID: %1 Reason: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="122"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="127"/>
+ <source>Unknown Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="128"/>
+ <source>Caught unknown error while exporting the key.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="145"/>
<source>Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="123"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="146"/>
<source>Partially Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="125"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="149"/>
<source>Failed to add all selected subkeys.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="126"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="150"/>
<source>Some subkeys failed to be added as ADSKs.</source>
<translation type="unfinished"></translation>
</message>
@@ -1854,67 +1864,67 @@ This will result in loss of all cached form positions, statuses, key servers, et
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="64"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="71"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="580"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="586"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="581"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="587"/>
<source>Custom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="72"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="529"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="530"/>
<source>3 Months</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="73"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="534"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="535"/>
<source>6 Months</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="74"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="539"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="540"/>
<source>1 Year</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="75"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="140"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="145"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="544"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="141"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="146"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="545"/>
<source>2 Years</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="76"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="549"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="550"/>
<source>5 Years</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="77"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="554"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="555"/>
<source>10 Years</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="78"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="101"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="110"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="560"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="102"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="111"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="561"/>
<source>Non Expired</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="82"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="295"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="591"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="296"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="592"/>
<source>Primary Key Only</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="83"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="343"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="344"/>
<source>Primary Key With Subkey</source>
<translation type="unfinished"></translation>
</message>
@@ -1940,130 +1950,135 @@ This will result in loss of all cached form positions, statuses, key servers, et
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="90"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="93"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="103"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="94"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="104"/>
<source>Algorithm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="91"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="94"/>
- <source>Validity Period</source>
+ <source>Combination</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="92"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="95"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="105"/>
- <source>Key Length</source>
+ <source>Validity Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="96"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="106"/>
- <source>Usage</source>
+ <source>Key Length</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="97"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="107"/>
- <source>Encrypt</source>
+ <source>Usage</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="98"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="108"/>
- <source>Sign</source>
+ <source>Encrypt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="99"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="109"/>
- <source>Authentication</source>
+ <source>Sign</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="100"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="110"/>
+ <source>Authentication</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="101"/>
<source>No Passphrase</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="104"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="105"/>
<source>Expire Date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="113"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="114"/>
<source>Easy Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="114"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="115"/>
<source>Primary Key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="115"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="116"/>
<source>Subkey</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="118"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="119"/>
<source>Generate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="135"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="266"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="136"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="267"/>
<source>None</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="147"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="148"/>
<source>Generate Key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="161"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="162"/>
<source>Name must contain at least five characters.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="166"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="167"/>
<source>Please give a valid email address.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="171"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="172"/>
<source>Please give a valid primary key algorithm.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="180"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="181"/>
<source>Time to primary key expiration must not be less than 120 seconds.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="187"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="188"/>
<source>Please give a valid subkey algorithm.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="195"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="196"/>
<source>Time to subkey expiration must not be less than 120 seconds.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="619"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="620"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="620"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="621"/>
<source>Unknown error occurred</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="632"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="633"/>
<source>Generating</source>
<translation type="unfinished"></translation>
</message>
diff --git a/resource/lfs/locale/ts/GpgFrontend.fr_FR.ts b/resource/lfs/locale/ts/GpgFrontend.fr_FR.ts
index 74d57ad2..9914fb6b 100644
--- a/resource/lfs/locale/ts/GpgFrontend.fr_FR.ts
+++ b/resource/lfs/locale/ts/GpgFrontend.fr_FR.ts
@@ -546,62 +546,72 @@
<context>
<name>GpgFrontend::UI::ADSKsPicker</name>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="55"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="56"/>
<source>Confirm</source>
<translation type="unfinished">Confirmer</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="56"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="57"/>
<source>Cancel</source>
<translation type="unfinished">Annuler</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="60"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="61"/>
<source>No Subkeys Selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="61"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="62"/>
<source>Please select at least one Subkey.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="73"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="77"/>
<source>Select ADSK(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="77"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="81"/>
<source>ADSK (Additional Decryption Subkey) allows others to encrypt data for you without having access to your private key. You are only allow to check subkeys with encryption capability.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="92"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="96"/>
<source>ADSKs Picker</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="108"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="115"/>
<source>Key ID: %1 Reason: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="122"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="127"/>
+ <source>Unknown Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="128"/>
+ <source>Caught unknown error while exporting the key.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="145"/>
<source>Failed</source>
<translation type="unfinished">Échoué</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="123"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="146"/>
<source>Partially Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="125"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="149"/>
<source>Failed to add all selected subkeys.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="126"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="150"/>
<source>Some subkeys failed to be added as ADSKs.</source>
<translation type="unfinished"></translation>
</message>
@@ -1854,67 +1864,67 @@ This will result in loss of all cached form positions, statuses, key servers, et
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="64"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="71"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="580"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="586"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="581"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="587"/>
<source>Custom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="72"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="529"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="530"/>
<source>3 Months</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="73"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="534"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="535"/>
<source>6 Months</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="74"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="539"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="540"/>
<source>1 Year</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="75"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="140"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="145"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="544"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="141"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="146"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="545"/>
<source>2 Years</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="76"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="549"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="550"/>
<source>5 Years</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="77"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="554"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="555"/>
<source>10 Years</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="78"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="101"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="110"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="560"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="102"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="111"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="561"/>
<source>Non Expired</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="82"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="295"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="591"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="296"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="592"/>
<source>Primary Key Only</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="83"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="343"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="344"/>
<source>Primary Key With Subkey</source>
<translation type="unfinished"></translation>
</message>
@@ -1940,130 +1950,135 @@ This will result in loss of all cached form positions, statuses, key servers, et
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="90"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="93"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="103"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="94"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="104"/>
<source>Algorithm</source>
<translation type="unfinished">Algorithme</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="91"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="94"/>
- <source>Validity Period</source>
+ <source>Combination</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="92"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="95"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="105"/>
- <source>Key Length</source>
+ <source>Validity Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="96"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="106"/>
- <source>Usage</source>
- <translation type="unfinished">Usage</translation>
+ <source>Key Length</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="97"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="107"/>
- <source>Encrypt</source>
- <translation type="unfinished">Chiffrer</translation>
+ <source>Usage</source>
+ <translation type="unfinished">Usage</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="98"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="108"/>
- <source>Sign</source>
- <translation type="unfinished">Signer</translation>
+ <source>Encrypt</source>
+ <translation type="unfinished">Chiffrer</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="99"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="109"/>
+ <source>Sign</source>
+ <translation type="unfinished">Signer</translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="100"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="110"/>
<source>Authentication</source>
<translation type="unfinished">Authentification</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="100"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="101"/>
<source>No Passphrase</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="104"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="105"/>
<source>Expire Date</source>
<translation type="unfinished">Date d&apos;expiration</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="113"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="114"/>
<source>Easy Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="114"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="115"/>
<source>Primary Key</source>
<translation type="unfinished">Clé primaire</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="115"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="116"/>
<source>Subkey</source>
<translation type="unfinished">Sous-clé</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="118"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="119"/>
<source>Generate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="135"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="266"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="136"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="267"/>
<source>None</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="147"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="148"/>
<source>Generate Key</source>
<translation type="unfinished">Générer la clé</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="161"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="162"/>
<source>Name must contain at least five characters.</source>
<translation type="unfinished">Le nom doit contenir au moins cinq caractères.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="166"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="167"/>
<source>Please give a valid email address.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="171"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="172"/>
<source>Please give a valid primary key algorithm.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="180"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="181"/>
<source>Time to primary key expiration must not be less than 120 seconds.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="187"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="188"/>
<source>Please give a valid subkey algorithm.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="195"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="196"/>
<source>Time to subkey expiration must not be less than 120 seconds.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="619"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="620"/>
<source>Error</source>
<translation type="unfinished">Erreur</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="620"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="621"/>
<source>Unknown error occurred</source>
<translation type="unfinished">Une erreur inconnue s&apos;est produite</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="632"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="633"/>
<source>Generating</source>
<translation type="unfinished">Générateur</translation>
</message>
diff --git a/resource/lfs/locale/ts/GpgFrontend.it_IT.ts b/resource/lfs/locale/ts/GpgFrontend.it_IT.ts
index 2db76daa..078883a8 100644
--- a/resource/lfs/locale/ts/GpgFrontend.it_IT.ts
+++ b/resource/lfs/locale/ts/GpgFrontend.it_IT.ts
@@ -546,62 +546,72 @@
<context>
<name>GpgFrontend::UI::ADSKsPicker</name>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="55"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="56"/>
<source>Confirm</source>
<translation type="unfinished">Conferma</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="56"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="57"/>
<source>Cancel</source>
<translation type="unfinished">Annulla</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="60"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="61"/>
<source>No Subkeys Selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="61"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="62"/>
<source>Please select at least one Subkey.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="73"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="77"/>
<source>Select ADSK(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="77"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="81"/>
<source>ADSK (Additional Decryption Subkey) allows others to encrypt data for you without having access to your private key. You are only allow to check subkeys with encryption capability.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="92"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="96"/>
<source>ADSKs Picker</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="108"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="115"/>
<source>Key ID: %1 Reason: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="122"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="127"/>
+ <source>Unknown Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="128"/>
+ <source>Caught unknown error while exporting the key.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="145"/>
<source>Failed</source>
<translation type="unfinished">Fallito</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="123"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="146"/>
<source>Partially Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="125"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="149"/>
<source>Failed to add all selected subkeys.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="126"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="150"/>
<source>Some subkeys failed to be added as ADSKs.</source>
<translation type="unfinished"></translation>
</message>
@@ -1863,67 +1873,67 @@ This will result in loss of all cached form positions, statuses, key servers, et
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="64"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="71"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="580"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="586"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="581"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="587"/>
<source>Custom</source>
<translation>Impiego</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="72"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="529"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="530"/>
<source>3 Months</source>
<translation>3 Mesi</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="73"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="534"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="535"/>
<source>6 Months</source>
<translation>6 Mesi</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="74"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="539"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="540"/>
<source>1 Year</source>
<translation>1 Anno</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="75"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="140"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="145"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="544"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="141"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="146"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="545"/>
<source>2 Years</source>
<translation>2 Anni</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="76"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="549"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="550"/>
<source>5 Years</source>
<translation>5 Anni</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="77"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="554"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="555"/>
<source>10 Years</source>
<translation>10 Anni</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="78"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="101"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="110"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="560"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="102"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="111"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="561"/>
<source>Non Expired</source>
<translation>Non Scaduto</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="82"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="295"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="591"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="296"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="592"/>
<source>Primary Key Only</source>
<translation>Solo Chiave Primaria</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="83"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="343"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="344"/>
<source>Primary Key With Subkey</source>
<translation>Chiave Primaria con Sottochiave</translation>
</message>
@@ -1949,130 +1959,135 @@ This will result in loss of all cached form positions, statuses, key servers, et
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="90"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="93"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="103"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="94"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="104"/>
<source>Algorithm</source>
<translation>Algoritmo</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="91"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="94"/>
+ <source>Combination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="92"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="95"/>
<source>Validity Period</source>
<translation>Periodo di validità</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="95"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="105"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="96"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="106"/>
<source>Key Length</source>
<translation>Lunghezza Chiave</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="96"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="106"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="97"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="107"/>
<source>Usage</source>
<translation>Utilizzo</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="97"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="107"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="98"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="108"/>
<source>Encrypt</source>
<translation>Cifra</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="98"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="108"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="99"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="109"/>
<source>Sign</source>
<translation>Firma</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="99"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="109"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="100"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="110"/>
<source>Authentication</source>
<translation>Autenticazione</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="100"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="101"/>
<source>No Passphrase</source>
<translation>Nessuna frase segreta</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="104"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="105"/>
<source>Expire Date</source>
<translation>Data di scadenza</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="113"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="114"/>
<source>Easy Mode</source>
<translation>Modalità facile</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="114"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="115"/>
<source>Primary Key</source>
<translation>Chiave primaria</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="115"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="116"/>
<source>Subkey</source>
<translation>Sottochiave</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="118"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="119"/>
<source>Generate</source>
<translation>Generare</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="135"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="266"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="136"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="267"/>
<source>None</source>
<translation>Nessuno</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="147"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="148"/>
<source>Generate Key</source>
<translation>Genera chiave</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="161"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="162"/>
<source>Name must contain at least five characters.</source>
<translation>Il nome deve contenere almeno cinque caratteri.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="166"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="167"/>
<source>Please give a valid email address.</source>
<translation>Inserisci un indirizzo email valido.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="171"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="172"/>
<source>Please give a valid primary key algorithm.</source>
<translation>Fornisci un algoritmo di chiave primaria valido.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="180"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="181"/>
<source>Time to primary key expiration must not be less than 120 seconds.</source>
<translation>Il tempo di scadenza della chiave primaria non deve essere inferiore a 120 secondi.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="187"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="188"/>
<source>Please give a valid subkey algorithm.</source>
<translation>Si prega di fornire un algoritmo di sottochiave valido.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="195"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="196"/>
<source>Time to subkey expiration must not be less than 120 seconds.</source>
<translation>Il tempo di scadenza della sottochiave non deve essere inferiore a 120 secondi.</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="619"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="620"/>
<source>Error</source>
<translation>Errore</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="620"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="621"/>
<source>Unknown error occurred</source>
<translation>Si è verificato un errore sconosciuto</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="632"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="633"/>
<source>Generating</source>
<translation>Generazione</translation>
</message>
diff --git a/resource/lfs/locale/ts/GpgFrontend.zh_CN.ts b/resource/lfs/locale/ts/GpgFrontend.zh_CN.ts
index 6aa2789f..55da445e 100644
--- a/resource/lfs/locale/ts/GpgFrontend.zh_CN.ts
+++ b/resource/lfs/locale/ts/GpgFrontend.zh_CN.ts
@@ -546,62 +546,72 @@
<context>
<name>GpgFrontend::UI::ADSKsPicker</name>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="55"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="56"/>
<source>Confirm</source>
<translation>确认</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="56"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="57"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="60"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="61"/>
<source>No Subkeys Selected</source>
<translation>没有选择任何子密钥</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="61"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="62"/>
<source>Please select at least one Subkey.</source>
<translation>请至少选择一个子密钥</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="73"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="77"/>
<source>Select ADSK(s)</source>
<translation>选择 ADSK: </translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="77"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="81"/>
<source>ADSK (Additional Decryption Subkey) allows others to encrypt data for you without having access to your private key. You are only allow to check subkeys with encryption capability.</source>
<translation>ADSK(附加解密子密钥)允许他人为你加密数据,而无需访问你的私人密钥。您只能选中具有加密功能的子密钥。</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="92"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="96"/>
<source>ADSKs Picker</source>
<translation>ADSK选择器</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="108"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="115"/>
<source>Key ID: %1 Reason: %2</source>
<translation>密钥ID: %1 原因: %2</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="122"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="127"/>
+ <source>Unknown Error</source>
+ <translation type="unfinished">未知错误</translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="128"/>
+ <source>Caught unknown error while exporting the key.</source>
+ <translation type="unfinished">在导出密钥的过程中发生错误。</translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="145"/>
<source>Failed</source>
<translation>失败</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="123"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="146"/>
<source>Partially Failed</source>
<translation>部分失败</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="125"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="149"/>
<source>Failed to add all selected subkeys.</source>
<translation>无法添加任何选中的子密钥。</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="126"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="150"/>
<source>Some subkeys failed to be added as ADSKs.</source>
<translation>无法添加选中的部分子密钥。</translation>
</message>
@@ -1854,67 +1864,67 @@ This will result in loss of all cached form positions, statuses, key servers, et
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="64"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="71"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="580"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="586"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="581"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="587"/>
<source>Custom</source>
<translation>自定义</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="72"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="529"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="530"/>
<source>3 Months</source>
<translation>3个月</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="73"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="534"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="535"/>
<source>6 Months</source>
<translation>6个月</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="74"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="539"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="540"/>
<source>1 Year</source>
<translation>1年</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="75"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="140"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="145"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="544"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="141"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="146"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="545"/>
<source>2 Years</source>
<translation>2年</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="76"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="549"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="550"/>
<source>5 Years</source>
<translation>5年</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="77"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="554"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="555"/>
<source>10 Years</source>
<translation>10年</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="78"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="101"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="110"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="560"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="102"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="111"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="561"/>
<source>Non Expired</source>
<translation>不过期</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="82"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="295"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="591"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="296"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="592"/>
<source>Primary Key Only</source>
<translation>仅主密钥</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="83"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="343"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="344"/>
<source>Primary Key With Subkey</source>
<translation>主密钥附带子密钥</translation>
</message>
@@ -1940,130 +1950,135 @@ This will result in loss of all cached form positions, statuses, key servers, et
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="90"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="93"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="103"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="94"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="104"/>
<source>Algorithm</source>
<translation>算法</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="91"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="94"/>
+ <source>Combination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="92"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="95"/>
<source>Validity Period</source>
<translation>有效时长</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="95"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="105"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="96"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="106"/>
<source>Key Length</source>
<translation>密钥长度</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="96"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="106"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="97"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="107"/>
<source>Usage</source>
<translation>用法</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="97"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="107"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="98"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="108"/>
<source>Encrypt</source>
<translation>加密</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="98"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="108"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="99"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="109"/>
<source>Sign</source>
<translation>签名</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="99"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="109"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="100"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="110"/>
<source>Authentication</source>
<translation>验证</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="100"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="101"/>
<source>No Passphrase</source>
<translation>无密码</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="104"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="105"/>
<source>Expire Date</source>
<translation>到期日期</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="113"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="114"/>
<source>Easy Mode</source>
<translation>简单模式</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="114"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="115"/>
<source>Primary Key</source>
<translation>主密钥</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="115"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="116"/>
<source>Subkey</source>
<translation>子密钥</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="118"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="119"/>
<source>Generate</source>
<translation>生成</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="135"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="266"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="136"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="267"/>
<source>None</source>
<translation>无</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="147"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="148"/>
<source>Generate Key</source>
<translation>生成密钥</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="161"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="162"/>
<source>Name must contain at least five characters.</source>
<translation>名称必须至少包含五个字符。</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="166"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="167"/>
<source>Please give a valid email address.</source>
<translation>请使用一个有效的电子邮件地址。</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="171"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="172"/>
<source>Please give a valid primary key algorithm.</source>
<translation>请选择一个有效的主密钥算法。</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="180"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="181"/>
<source>Time to primary key expiration must not be less than 120 seconds.</source>
<translation>距离主密钥过期时间不得少于 120 秒。</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="187"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="188"/>
<source>Please give a valid subkey algorithm.</source>
<translation>请选择一个有效的子密钥算法。</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="195"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="196"/>
<source>Time to subkey expiration must not be less than 120 seconds.</source>
<translation>距离子密钥过期时间不得少于 120 秒。</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="619"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="620"/>
<source>Error</source>
<translation>错误</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="620"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="621"/>
<source>Unknown error occurred</source>
<translation>发生未知错误</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="632"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="633"/>
<source>Generating</source>
<translation>生成中</translation>
</message>
diff --git a/resource/lfs/locale/ts/GpgFrontend.zh_TW.ts b/resource/lfs/locale/ts/GpgFrontend.zh_TW.ts
index cdf7f23d..3a8388ae 100644
--- a/resource/lfs/locale/ts/GpgFrontend.zh_TW.ts
+++ b/resource/lfs/locale/ts/GpgFrontend.zh_TW.ts
@@ -546,62 +546,72 @@
<context>
<name>GpgFrontend::UI::ADSKsPicker</name>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="55"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="56"/>
<source>Confirm</source>
<translation type="unfinished">確認</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="56"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="57"/>
<source>Cancel</source>
<translation type="unfinished">取消</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="60"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="61"/>
<source>No Subkeys Selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="61"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="62"/>
<source>Please select at least one Subkey.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="73"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="77"/>
<source>Select ADSK(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="77"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="81"/>
<source>ADSK (Additional Decryption Subkey) allows others to encrypt data for you without having access to your private key. You are only allow to check subkeys with encryption capability.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="92"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="96"/>
<source>ADSKs Picker</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="108"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="115"/>
<source>Key ID: %1 Reason: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="122"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="127"/>
+ <source>Unknown Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="128"/>
+ <source>Caught unknown error while exporting the key.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="145"/>
<source>Failed</source>
<translation type="unfinished">失敗</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="123"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="146"/>
<source>Partially Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="125"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="149"/>
<source>Failed to add all selected subkeys.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="126"/>
+ <location filename="../../../../src/ui/dialog/ADSKsPicker.cpp" line="150"/>
<source>Some subkeys failed to be added as ADSKs.</source>
<translation type="unfinished"></translation>
</message>
@@ -1854,67 +1864,67 @@ This will result in loss of all cached form positions, statuses, key servers, et
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="64"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="71"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="580"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="586"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="581"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="587"/>
<source>Custom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="72"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="529"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="530"/>
<source>3 Months</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="73"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="534"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="535"/>
<source>6 Months</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="74"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="539"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="540"/>
<source>1 Year</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="75"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="140"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="145"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="544"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="141"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="146"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="545"/>
<source>2 Years</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="76"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="549"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="550"/>
<source>5 Years</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="77"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="554"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="555"/>
<source>10 Years</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="78"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="101"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="110"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="560"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="102"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="111"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="561"/>
<source>Non Expired</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="82"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="295"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="591"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="296"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="592"/>
<source>Primary Key Only</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="83"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="343"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="344"/>
<source>Primary Key With Subkey</source>
<translation type="unfinished"></translation>
</message>
@@ -1940,130 +1950,135 @@ This will result in loss of all cached form positions, statuses, key servers, et
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="90"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="93"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="103"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="94"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="104"/>
<source>Algorithm</source>
<translation type="unfinished">算法</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="91"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="94"/>
- <source>Validity Period</source>
+ <source>Combination</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="92"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="95"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="105"/>
- <source>Key Length</source>
+ <source>Validity Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="96"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="106"/>
- <source>Usage</source>
- <translation type="unfinished">用法</translation>
+ <source>Key Length</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="97"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="107"/>
- <source>Encrypt</source>
- <translation type="unfinished">加密</translation>
+ <source>Usage</source>
+ <translation type="unfinished">用法</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="98"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="108"/>
- <source>Sign</source>
- <translation type="unfinished">標誌</translation>
+ <source>Encrypt</source>
+ <translation type="unfinished">加密</translation>
</message>
<message>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="99"/>
<location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="109"/>
+ <source>Sign</source>
+ <translation type="unfinished">標誌</translation>
+ </message>
+ <message>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="100"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="110"/>
<source>Authentication</source>
<translation type="unfinished">驗證</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="100"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="101"/>
<source>No Passphrase</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="104"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="105"/>
<source>Expire Date</source>
<translation type="unfinished">到期日期</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="113"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="114"/>
<source>Easy Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="114"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="115"/>
<source>Primary Key</source>
<translation type="unfinished">首要的關鍵</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="115"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="116"/>
<source>Subkey</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="118"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="119"/>
<source>Generate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="135"/>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="266"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="136"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="267"/>
<source>None</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="147"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="148"/>
<source>Generate Key</source>
<translation type="unfinished">生成金鑰</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="161"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="162"/>
<source>Name must contain at least five characters.</source>
<translation type="unfinished">名稱必須至少包含五個字符。</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="166"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="167"/>
<source>Please give a valid email address.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="171"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="172"/>
<source>Please give a valid primary key algorithm.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="180"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="181"/>
<source>Time to primary key expiration must not be less than 120 seconds.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="187"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="188"/>
<source>Please give a valid subkey algorithm.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="195"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="196"/>
<source>Time to subkey expiration must not be less than 120 seconds.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="619"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="620"/>
<source>Error</source>
<translation type="unfinished">錯誤</translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="620"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="621"/>
<source>Unknown error occurred</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="632"/>
+ <location filename="../../../../src/ui/dialog/key_generate/KeyGenerateDialog.cpp" line="633"/>
<source>Generating</source>
<translation type="unfinished">生成</translation>
</message>
diff --git a/src/core/function/gpg/GpgAdvancedOperator.cpp b/src/core/function/gpg/GpgAdvancedOperator.cpp
index d6323901..5e43d4d4 100644
--- a/src/core/function/gpg/GpgAdvancedOperator.cpp
+++ b/src/core/function/gpg/GpgAdvancedOperator.cpp
@@ -36,26 +36,29 @@
namespace GpgFrontend {
auto GpgAdvancedOperator::ClearGpgPasswordCache() -> bool {
- return info_.ReloadGpgAgent();
+ return mgr_.ReloadGpgAgent();
}
auto GpgAdvancedOperator::ReloadAllGpgComponents() -> bool {
- return info_.ReloadGpgAgent();
+ return mgr_.ReloadGpgAgent();
}
auto GpgAdvancedOperator::KillAllGpgComponents() -> bool {
+ mgr_.Reset();
return ctx_.RestartGpgAgent();
}
auto GpgAdvancedOperator::ResetConfigures() -> bool {
- return info_.ReloadGpgAgent();
+ return mgr_.ReloadGpgAgent();
}
auto GpgAdvancedOperator::LaunchAllGpgComponents() -> bool {
+ mgr_.Reset();
return ctx_.RestartGpgAgent();
}
auto GpgAdvancedOperator::RestartGpgComponents() -> bool {
+ mgr_.Reset();
return ctx_.RestartGpgAgent();
}
diff --git a/src/core/function/gpg/GpgAdvancedOperator.h b/src/core/function/gpg/GpgAdvancedOperator.h
index e6934f42..48a2d755 100644
--- a/src/core/function/gpg/GpgAdvancedOperator.h
+++ b/src/core/function/gpg/GpgAdvancedOperator.h
@@ -100,7 +100,7 @@ class GPGFRONTEND_CORE_EXPORT GpgAdvancedOperator
GpgCommandExecutor::GetInstance(SingletonFunctionObject::GetChannel());
GpgContext& ctx_ =
GpgContext::GetInstance(SingletonFunctionObject::GetChannel());
- GpgComponentManager& info_ =
+ GpgComponentManager& mgr_ =
GpgComponentManager::GetInstance(SingletonFunctionObject::GetChannel());
};
diff --git a/src/core/function/gpg/GpgAssuanHelper.cpp b/src/core/function/gpg/GpgAssuanHelper.cpp
index a83c5655..b9ee63f1 100644
--- a/src/core/function/gpg/GpgAssuanHelper.cpp
+++ b/src/core/function/gpg/GpgAssuanHelper.cpp
@@ -38,11 +38,7 @@ GpgAssuanHelper::GpgAssuanHelper(int channel)
gpgconf_path_(Module::RetrieveRTValueTypedOrDefault<>(
"core", "gpgme.ctx.gpgconf_path", QString{})) {}
-GpgAssuanHelper::~GpgAssuanHelper() {
- for (const auto& ctx : assuan_ctx_) {
- assuan_release(ctx);
- }
-}
+GpgAssuanHelper::~GpgAssuanHelper() = default;
auto GpgAssuanHelper::ConnectToSocket(GpgComponentType type) -> GpgError {
if (assuan_ctx_.contains(type)) return GPG_ERR_NO_ERROR;
@@ -70,10 +66,17 @@ auto GpgAssuanHelper::ConnectToSocket(GpgComponentType type) -> GpgError {
}
assuan_context_t a_ctx;
- assuan_new(&a_ctx);
+ auto err = assuan_new(&a_ctx);
+ if (err != GPG_ERR_NO_ERROR) {
+ LOG_E() << "create assuan context failed, err:" << CheckGpgError(err);
+ return err;
+ }
+
+ auto pa_ctx = QSharedPointer<struct assuan_context_s>(
+ a_ctx, [](assuan_context_t p) { assuan_release(p); });
- auto err = assuan_socket_connect(a_ctx, info.absoluteFilePath().toUtf8(),
- ASSUAN_INVALID_PID, 0);
+ err = assuan_socket_connect(pa_ctx.get(), info.absoluteFilePath().toUtf8(),
+ ASSUAN_INVALID_PID, 0);
if (err != GPG_ERR_NO_ERROR) {
LOG_W() << "failed to connect to socket:" << info.absoluteFilePath()
<< "err:" << CheckGpgError(err);
@@ -83,14 +86,14 @@ auto GpgAssuanHelper::ConnectToSocket(GpgComponentType type) -> GpgError {
LOG_D() << "connected to socket by assuan protocol: "
<< info.absoluteFilePath() << "channel:" << GetChannel();
- err = assuan_transact(a_ctx, "GETINFO pid", simple_data_callback, nullptr,
- nullptr, nullptr, nullptr, nullptr);
+ err = assuan_transact(pa_ctx.get(), "GETINFO pid", simple_data_callback,
+ nullptr, nullptr, nullptr, nullptr, nullptr);
if (err != GPG_ERR_NO_ERROR) {
LOG_W() << "failed to test assuan connection:" << CheckGpgError(err);
return err;
}
- assuan_ctx_[type] = a_ctx;
+ assuan_ctx_[type] = pa_ctx;
return err;
}
@@ -114,9 +117,10 @@ auto GpgAssuanHelper::SendCommand(GpgComponentType type, const QString& command,
LOG_D() << "sending assuan command: " << command;
- auto err = assuan_transact(
- assuan_ctx_[type], command.toUtf8(), default_data_callback, &context,
- default_inquery_callback, &context, default_status_callback, &context);
+ auto err =
+ assuan_transact(assuan_ctx_[type].get(), command.toUtf8(),
+ default_data_callback, &context, default_inquery_callback,
+ &context, default_status_callback, &context);
if (err != GPG_ERR_NO_ERROR) {
LOG_W() << "failed to send assuan command:" << CheckGpgError(err);
@@ -124,6 +128,7 @@ auto GpgAssuanHelper::SendCommand(GpgComponentType type, const QString& command,
// broken pipe error, try reconnect next time
if (CheckGpgError(err) == 32877) {
assuan_ctx_.remove(type);
+ return SendCommand(type, command, data_cb, inquery_cb, status_cb);
}
return err;
}
@@ -270,4 +275,6 @@ auto GpgAssuanHelper::AssuanCallbackContext::SendData(const QByteArray& b) const
-> gpg_error_t {
return assuan_send_data(ctx, b.constData(), b.size());
}
+
+void GpgAssuanHelper::ResetAllConnections() { assuan_ctx_.clear(); }
} // namespace GpgFrontend \ No newline at end of file
diff --git a/src/core/function/gpg/GpgAssuanHelper.h b/src/core/function/gpg/GpgAssuanHelper.h
index adf6d0ff..f357ed93 100644
--- a/src/core/function/gpg/GpgAssuanHelper.h
+++ b/src/core/function/gpg/GpgAssuanHelper.h
@@ -118,10 +118,16 @@ class GPGFRONTEND_CORE_EXPORT GpgAssuanHelper
auto SendDataCommand(GpgComponentType type, const QString& command)
-> std::tuple<GpgError, QStringList>;
+ /**
+ * @brief
+ *
+ */
+ void ResetAllConnections();
+
private:
GpgContext& ctx_ =
GpgContext::GetInstance(SingletonFunctionObject::GetChannel());
- QMap<GpgComponentType, assuan_context_t> assuan_ctx_;
+ QMap<GpgComponentType, QSharedPointer<struct assuan_context_s>> assuan_ctx_;
QByteArray temp_data_;
QString temp_status_;
diff --git a/src/core/function/gpg/GpgComponentManager.cpp b/src/core/function/gpg/GpgComponentManager.cpp
index 1b302631..56b95aab 100644
--- a/src/core/function/gpg/GpgComponentManager.cpp
+++ b/src/core/function/gpg/GpgComponentManager.cpp
@@ -68,7 +68,6 @@ auto GpgComponentManager::ReloadGpgAgent() -> bool {
LOG_D() << "invalid response of RELOADAGENT: " << s;
return false;
}
-
return true;
}
@@ -79,8 +78,13 @@ auto GpgComponentManager::GpgKillAgent() -> bool {
LOG_D() << "invalid response of KILLAGENT: " << s;
return false;
}
-
+ Reset();
return true;
}
+void GpgComponentManager::Reset() {
+ scdaemon_version_.clear();
+ gpg_agent_version_.clear();
+ assuan_.ResetAllConnections();
+}
} // namespace GpgFrontend \ No newline at end of file
diff --git a/src/core/function/gpg/GpgComponentManager.h b/src/core/function/gpg/GpgComponentManager.h
index cfd6a99f..1048793f 100644
--- a/src/core/function/gpg/GpgComponentManager.h
+++ b/src/core/function/gpg/GpgComponentManager.h
@@ -73,6 +73,13 @@ class GPGFRONTEND_CORE_EXPORT GpgComponentManager
*/
auto GpgKillAgent() -> bool;
+ /**
+ * @brief
+ *
+ * @return auto
+ */
+ void Reset();
+
private:
GpgContext& ctx_ =
GpgContext::GetInstance(SingletonFunctionObject::GetChannel());
diff --git a/src/ui/dialog/key_generate/KeyGenerateDialog.cpp b/src/ui/dialog/key_generate/KeyGenerateDialog.cpp
index df8b5232..c2275a79 100644
--- a/src/ui/dialog/key_generate/KeyGenerateDialog.cpp
+++ b/src/ui/dialog/key_generate/KeyGenerateDialog.cpp
@@ -88,6 +88,7 @@ KeyGenerateDialog::KeyGenerateDialog(int channel, QWidget* parent)
ui_->commentLabel->setText(tr("Comment"));
ui_->keyDBLabel->setText(tr("Key Database"));
ui_->easyAlgoLabel->setText(tr("Algorithm"));
+ ui_->combinationLabel->setText(tr("Combination"));
ui_->easyValidPeriodLabel->setText(tr("Validity Period"));
ui_->pAlgoLabel->setText(tr("Algorithm"));