diff --git a/debian/changelog b/debian/changelog index 8e252ee..9ef0e07 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,11 @@ -ukui-screensaver (4.20.0.0-ok0) huanghe; urgency=medium +ukui-screensaver (4.20.0.0-ok1) huanghe; urgency=medium * BUG号:无 - * 需求号:无 - * 其他改动说明:import quilt format for new version 4.20.0.0 - * 其他改动影响域:无 + * 需求号:#18336 登录锁屏生物特征验证流程优化 + * 其他改动说明:无 + * 其他改动影响域:无 - -- Yang Min Wed, 13 Nov 2024 20:09:15 +0800 + -- Yang Min Wed, 13 Nov 2024 20:23:54 +0800 ukui-screensaver (4.10.0.0-ok34~1031) nile; urgency=medium diff --git a/debian/patches/0001-107.patch b/debian/patches/0001-107.patch new file mode 100644 index 0000000..f59f166 --- /dev/null +++ b/debian/patches/0001-107.patch @@ -0,0 +1,5937 @@ +From: =?utf-8?b?5p2o5pWP?= +Date: Wed, 13 Nov 2024 12:26:39 +0000 +Subject: =?utf-8?b?ITEwNyDlrp7njrDpnIDmsYIgTWVyZ2UgcHVsbCByZXF1ZXN0ICExMDcg?= + =?utf-8?b?ZnJvbSDmnajmlY8vb3Blbmt5bGluL2h1YW5naGU=?= + +--- + i18n_ts/bo.ts | 136 +++++++++---------- + i18n_ts/bo_CN.ts | 160 +++++++++++++---------- + i18n_ts/de.ts | 160 +++++++++++++---------- + i18n_ts/es.ts | 160 +++++++++++++---------- + i18n_ts/fr.ts | 160 +++++++++++++---------- + i18n_ts/kk.ts | 160 +++++++++++++---------- + i18n_ts/ky.ts | 160 +++++++++++++---------- + i18n_ts/mn.ts | 160 +++++++++++++---------- + i18n_ts/pt.ts | 48 +++---- + i18n_ts/ru.ts | 48 +++---- + i18n_ts/tr.ts | 136 +++++++++---------- + i18n_ts/ug.ts | 160 +++++++++++++---------- + i18n_ts/zh_CN.ts | 160 +++++++++++++---------- + i18n_ts/zh_HK.ts | 160 +++++++++++++---------- + src/assets.qrc | 47 +++++++ + src/assets/biowaiting/fingerprint0.svg | 1 + + src/assets/biowaiting/fingerprint1.svg | 1 + + src/assets/biowaiting/fingerprint10.svg | 1 + + src/assets/biowaiting/fingerprint11.svg | 1 + + src/assets/biowaiting/fingerprint12.svg | 1 + + src/assets/biowaiting/fingerprint13.svg | 1 + + src/assets/biowaiting/fingerprint14.svg | 1 + + src/assets/biowaiting/fingerprint2.svg | 1 + + src/assets/biowaiting/fingerprint3.svg | 1 + + src/assets/biowaiting/fingerprint4.svg | 1 + + src/assets/biowaiting/fingerprint5.svg | 1 + + src/assets/biowaiting/fingerprint6.svg | 1 + + src/assets/biowaiting/fingerprint7.svg | 1 + + src/assets/biowaiting/fingerprint8.svg | 1 + + src/assets/biowaiting/fingerprint9.svg | 1 + + src/assets/biowaiting/fingervein0.svg | 1 + + src/assets/biowaiting/fingervein1.svg | 1 + + src/assets/biowaiting/fingervein10.svg | 1 + + src/assets/biowaiting/fingervein11.svg | 1 + + src/assets/biowaiting/fingervein2.svg | 1 + + src/assets/biowaiting/fingervein3.svg | 1 + + src/assets/biowaiting/fingervein4.svg | 1 + + src/assets/biowaiting/fingervein5.svg | 1 + + src/assets/biowaiting/fingervein6.svg | 1 + + src/assets/biowaiting/fingervein7.svg | 1 + + src/assets/biowaiting/fingervein8.svg | 1 + + src/assets/biowaiting/fingervein9.svg | 1 + + src/assets/biowaiting/iris0.svg | 1 + + src/assets/biowaiting/iris1.svg | 1 + + src/assets/biowaiting/iris10.svg | 1 + + src/assets/biowaiting/iris11.svg | 1 + + src/assets/biowaiting/iris2.svg | 1 + + src/assets/biowaiting/iris3.svg | 1 + + src/assets/biowaiting/iris4.svg | 1 + + src/assets/biowaiting/iris5.svg | 1 + + src/assets/biowaiting/iris6.svg | 1 + + src/assets/biowaiting/iris7.svg | 1 + + src/assets/biowaiting/iris8.svg | 1 + + src/assets/biowaiting/iris9.svg | 1 + + src/assets/biowaiting/voiceprint0.svg | 1 + + src/assets/biowaiting/voiceprint1.svg | 1 + + src/assets/biowaiting/voiceprint2.svg | 1 + + src/assets/biowaiting/voiceprint3.svg | 1 + + src/assets/biowaiting/voiceprint4.svg | 1 + + src/assets/biowaiting/voiceprint5.svg | 1 + + src/assets/biowaiting/voiceprint6.svg | 1 + + src/assets/biowaiting/voiceprint7.svg | 1 + + src/common/commonfunc.cpp | 30 ++++- + src/common/commonfunc.h | 2 + + src/widgets/authdialog.cpp | 222 ++++++++++++++++++++++++++++++-- + src/widgets/authdialog.h | 12 ++ + src/widgets/klabel.cpp | 27 ++-- + src/widgets/klabel.h | 1 + + src/widgets/lockwidget.cpp | 23 ++-- + src/widgets/loginoptionswidget.cpp | 41 ++---- + 70 files changed, 1493 insertions(+), 927 deletions(-) + create mode 100644 src/assets/biowaiting/fingerprint0.svg + create mode 100644 src/assets/biowaiting/fingerprint1.svg + create mode 100644 src/assets/biowaiting/fingerprint10.svg + create mode 100644 src/assets/biowaiting/fingerprint11.svg + create mode 100644 src/assets/biowaiting/fingerprint12.svg + create mode 100644 src/assets/biowaiting/fingerprint13.svg + create mode 100644 src/assets/biowaiting/fingerprint14.svg + create mode 100644 src/assets/biowaiting/fingerprint2.svg + create mode 100644 src/assets/biowaiting/fingerprint3.svg + create mode 100644 src/assets/biowaiting/fingerprint4.svg + create mode 100644 src/assets/biowaiting/fingerprint5.svg + create mode 100644 src/assets/biowaiting/fingerprint6.svg + create mode 100644 src/assets/biowaiting/fingerprint7.svg + create mode 100644 src/assets/biowaiting/fingerprint8.svg + create mode 100644 src/assets/biowaiting/fingerprint9.svg + create mode 100644 src/assets/biowaiting/fingervein0.svg + create mode 100644 src/assets/biowaiting/fingervein1.svg + create mode 100644 src/assets/biowaiting/fingervein10.svg + create mode 100644 src/assets/biowaiting/fingervein11.svg + create mode 100644 src/assets/biowaiting/fingervein2.svg + create mode 100644 src/assets/biowaiting/fingervein3.svg + create mode 100644 src/assets/biowaiting/fingervein4.svg + create mode 100644 src/assets/biowaiting/fingervein5.svg + create mode 100644 src/assets/biowaiting/fingervein6.svg + create mode 100644 src/assets/biowaiting/fingervein7.svg + create mode 100644 src/assets/biowaiting/fingervein8.svg + create mode 100644 src/assets/biowaiting/fingervein9.svg + create mode 100644 src/assets/biowaiting/iris0.svg + create mode 100644 src/assets/biowaiting/iris1.svg + create mode 100644 src/assets/biowaiting/iris10.svg + create mode 100644 src/assets/biowaiting/iris11.svg + create mode 100644 src/assets/biowaiting/iris2.svg + create mode 100644 src/assets/biowaiting/iris3.svg + create mode 100644 src/assets/biowaiting/iris4.svg + create mode 100644 src/assets/biowaiting/iris5.svg + create mode 100644 src/assets/biowaiting/iris6.svg + create mode 100644 src/assets/biowaiting/iris7.svg + create mode 100644 src/assets/biowaiting/iris8.svg + create mode 100644 src/assets/biowaiting/iris9.svg + create mode 100644 src/assets/biowaiting/voiceprint0.svg + create mode 100644 src/assets/biowaiting/voiceprint1.svg + create mode 100644 src/assets/biowaiting/voiceprint2.svg + create mode 100644 src/assets/biowaiting/voiceprint3.svg + create mode 100644 src/assets/biowaiting/voiceprint4.svg + create mode 100644 src/assets/biowaiting/voiceprint5.svg + create mode 100644 src/assets/biowaiting/voiceprint6.svg + create mode 100644 src/assets/biowaiting/voiceprint7.svg + +diff --git a/i18n_ts/bo.ts b/i18n_ts/bo.ts +index 6bdc910..66ba305 100644 +--- a/i18n_ts/bo.ts ++++ b/i18n_ts/bo.ts +@@ -12,195 +12,195 @@ + + AuthDialog + +- +- ++ ++ + Login + + + +- ++ + Guest + + + +- +- +- Verify face recognition or enter password to unlock ++ ++ ++ Facial recognition to unlock + + + +- +- Press fingerprint or enter password to unlock ++ ++ Fingerprint recognition to unlock + + + +- +- Verify voiceprint or enter password to unlock ++ ++ Voiceprint recognition to unlock + + + +- +- Verify finger vein or enter password to unlock ++ ++ Finger vein recognition to unlock + + + +- +- Verify iris or enter password to unlock ++ ++ Iris recognition to unlock + + + +- +- Use the bound wechat scanning code or enter the password to unlock ++ ++ Use the bound wechat scanning code to unlock + + + +- ++ + Password cannot be empty + + + +- ++ + Password: + + + +- ++ + Input Password + + + +- ++ + Username + + + +- ++ + User name input error! + + + +- +- ++ ++ + Authentication failure, Please try again + + + +- ++ + login + + + +- ++ + Retry + + + +- ++ + Please try again in %1 minutes. + + + +- ++ + Please try again in %1 seconds. + + + +- ++ + Account locked permanently. + + + +- +- +- +- ++ ++ ++ ++ + Failed to verify %1, please enter password to unlock + + + +- +- +- +- +- ++ ++ ++ ++ ++ + Unable to verify %1, please enter password to unlock + + + +- +- ++ ++ + Failed to verify %1, you still have %2 verification opportunities + + + +- ++ + Abnormal network + + + +- ++ + Face recognition waiting time out, please click refresh or enter the password to unlock. + + + +- ++ + FingerPrint + + + +- ++ + FingerVein + + + +- ++ + Iris + + + +- ++ + Face + + + +- ++ + VoicePrint + + + +- +- ++ ++ + Ukey + + + +- +- ++ ++ + QRCode + + + +- ++ + fingerprint + + + +- ++ + fingervein + + + +- ++ + iris + + + +- ++ + face + + + +- ++ + voiceprint + + +@@ -438,7 +438,7 @@ + + IconEdit + +- ++ + OK + + +@@ -559,58 +559,58 @@ + + LoginOptionsWidget + +- +- ++ ++ + Login Options + + + +- ++ + Password + + + +- ++ + Other + + + +- ++ + Identify device removed! + + + +- ++ + FingerPrint + + + +- ++ + FingerVein + + + +- ++ + Iris + + + +- ++ + Face + + + +- ++ + VoicePrint + + + +- ++ + Ukey + + + +- ++ + QRCode + + +diff --git a/i18n_ts/bo_CN.ts b/i18n_ts/bo_CN.ts +index 4c395ad..eabdcaa 100644 +--- a/i18n_ts/bo_CN.ts ++++ b/i18n_ts/bo_CN.ts +@@ -24,7 +24,7 @@ + 使用密码认证 + + +- ++ + Retry + བསྐྱར་དུ་ཞིབ་བཤེར་བྱ་དགོས། + +@@ -53,162 +53,187 @@ + 账户锁定%1分钟由于%2次错误尝试 + + +- ++ + Please try again in %1 minutes. + ཁྱོད་ཀྱིས་ཡང་བསྐྱར་ཐེངས་གཅིག་ལ་ཚོད་ལྟ་ཞིག་བྱེད་རོགས། + + +- ++ + Please try again in %1 seconds. + ཁྱོད་ཀྱིས་དུས་ཚོད་སྐར་ཆ་གཅིག་གི་ནང་དུ་ཡང་བསྐྱར་ཚོད་ལྟ་ཞིག་བྱེད་རོགས། + + +- ++ + Account locked permanently. + དུས་གཏན་དུ་ཟྭ་བརྒྱབ་པའི་རྩིས་ཐོ། + + +- +- + Verify face recognition or enter password to unlock +- ངོ་གདོང་ངོས་འཛིན་ལ་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་ ++ ངོ་གདོང་ངོས་འཛིན་ལ་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་ + + +- ++ + Guest + 游客 + + +- + Press fingerprint or enter password to unlock +- མཛུབ་རིས་མནན་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ ++ མཛུབ་རིས་མནན་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ + + +- + Verify voiceprint or enter password to unlock +- སྒྲ་པར་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག ++ སྒྲ་པར་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག + + +- + Verify finger vein or enter password to unlock +- མཛུབ་མོའི་ནང་དུ་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ ++ མཛུབ་མོའི་ནང་དུ་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ + + +- + Verify iris or enter password to unlock +- iris ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་ ++ iris ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་ + + +- ++ ++ ++ Facial recognition to unlock ++ ++ ++ ++ ++ Fingerprint recognition to unlock ++ ++ ++ ++ ++ Voiceprint recognition to unlock ++ ++ ++ ++ ++ Finger vein recognition to unlock ++ ++ ++ ++ ++ Iris recognition to unlock ++ ++ ++ ++ ++ Use the bound wechat scanning code to unlock ++ ++ ++ ++ + Password: + ནང་འཇུག་གི་གསང་གྲངས། + + +- ++ + Input Password + ནང་འཇུག་གི་གསང་གྲངས། + + +- ++ + Username + སྤྱོད་མཁན་གྱི་མིང་། + + +- ++ + User name input error! + + + +- ++ + login + + + +- +- +- +- ++ ++ ++ ++ + Failed to verify %1, please enter password to unlock + %1ལ་ཞིབ་བཤེར་བྱེད་མ་ཐུབ་ན། གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག་རོགས། + + +- +- +- +- +- ++ ++ ++ ++ ++ + Unable to verify %1, please enter password to unlock + %1ལ་ཞིབ་བཤེར་བྱེད་ཐབས་བྲལ་བ་དང་། གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག་རོགས། + + +- ++ + Abnormal network + རྒྱུན་ལྡན་མིན་པའི་དྲ་ + + +- ++ + Face recognition waiting time out, please click refresh or enter the password to unlock. + མིའི་གདོང་ལ་དབྱེ་འབྱེད་བྱེད་པར་རེ་སྒུག་བྱེད་དུས་གསང་གྲངས་ཀྱི་སྒོ་ལྕགས་རྒྱག་རོགས། + + +- ++ + FingerPrint + མཛུབ་རིས། + + +- ++ + FingerVein + FingerVein + + +- ++ + Iris + Iris + + +- ++ + Face + མིའི་གདོང་། + + +- ++ + VoicePrint + སྒྲ་རིས། + + +- +- ++ ++ + Ukey + བདེ་འཇགས་གསང་ལྡེ་ + + +- +- ++ ++ + QRCode + དོན་ཚན་གཉིས་པ། + + +- ++ + fingerprint + མཛུབ་རིས། + + +- ++ + fingervein + སྡོད་རྩ་ཞེས་པ་ནི་སྡོད་རྩར + + +- ++ + iris + འཇའ་སྐྱི། + + +- ++ + face + ངོ་གདོང་། + + +- ++ + voiceprint + སྒྲ་གདངས་ཀྱི་རི་མོ། + +@@ -217,7 +242,7 @@ + 使用绑定的微信扫码或输入密码登录 + + +- ++ + Password cannot be empty + གསང་གྲངས་སྟོང་པ་ཡིན་མི་སྲིད། + +@@ -230,8 +255,8 @@ + 无法验证%1,请输入密码. + + +- +- ++ ++ + Failed to verify %1, you still have %2 verification opportunities + %1ལ་ཞིབ་བཤེར་བྱེད་མ་ཐུབ་ན། ཁྱེད་ཚོར་ད་དུང་%2ལ་ཞིབ་བཤེར་བྱེད་པའི་གོ་སྐབས་ཡོད། + +@@ -260,15 +285,14 @@ + 请输入密码或者录入指纹 + + +- +- ++ ++ + Authentication failure, Please try again + བདེན་དཔང་ར་སྤྲོད་བྱེད་མ་ཐུབ་ན། ཡང་བསྐྱར་ཚོད་ལྟ་ཞིག + + +- + Use the bound wechat scanning code or enter the password to unlock +- འབྲེལ་མཐུད་ཀྱི་འཕྲིན་ཕྲན་ཞིབ་བཤེར་ཨང་གྲངས་སམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག་པ། ++ འབྲེལ་མཐུད་ཀྱི་འཕྲིན་ཕྲན་ཞིབ་བཤེར་ཨང་གྲངས་སམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག་པ། + + + Enter the ukey password +@@ -283,8 +307,8 @@ + གསང་གྲངས། + + +- +- ++ ++ + Login + ཐོ་འགོད་བྱེད་པ། + +@@ -1693,7 +1717,7 @@ + + IconEdit + +- ++ + OK + སྤྲོད་དགོས། + +@@ -2086,53 +2110,53 @@ + + LoginOptionsWidget + +- +- ++ ++ + Login Options + ཐོ་འགོད་ཀྱི་བསལ་འདེམས་ཀྱི་དབང་ཆ། + + +- ++ + Password + གསང་གྲངས། + + +- ++ + Other + གཞན་དག + + +- ++ + FingerPrint + མཛུབ་རིས། + + +- ++ + FingerVein + སྡོད་རྩ་ཞེས་པ་ནི་སྡོད་རྩར + + +- ++ + Iris + འཇའ་སྐྱི། + + +- ++ + Face + ངོ་གདོང་། + + +- ++ + VoicePrint + སྒྲ་གདངས་ཀྱི་རི་མོ། + + +- ++ + Ukey + བདེ་འཇགས་གསང་ལྡེ་ + + +- ++ + QRCode + དོན་ཚན་གཉིས་པ། + +@@ -2141,7 +2165,7 @@ + 微信 + + +- ++ + Identify device removed! + དབྱེ་འབྱེད་སྒྲིག་ཆས་མེད་པར་བཟོ་དགོས། + +diff --git a/i18n_ts/de.ts b/i18n_ts/de.ts +index 5882b2d..af10fba 100644 +--- a/i18n_ts/de.ts ++++ b/i18n_ts/de.ts +@@ -24,7 +24,7 @@ + 使用密码认证 + + +- ++ + Retry + Wiederholen + +@@ -53,162 +53,187 @@ + 账户锁定%1分钟由于%2次错误尝试 + + +- ++ + Please try again in %1 minutes. + Versuchen Sie es in %1 Minuten erneut. + + +- ++ + Please try again in %1 seconds. + Bitte versuchen Sie es in %1 Sekunden erneut. + + +- ++ + Account locked permanently. + Das Konto wurde dauerhaft gesperrt. + + +- +- + Verify face recognition or enter password to unlock +- Überprüfen Sie die Gesichtserkennung oder geben Sie das Passwort ein, um zu entsperren ++ Überprüfen Sie die Gesichtserkennung oder geben Sie das Passwort ein, um zu entsperren + + +- ++ + Guest + 游客 + + +- + Press fingerprint or enter password to unlock +- Drücken Sie den Fingerabdruck oder geben Sie das Passwort ein, um zu entsperren ++ Drücken Sie den Fingerabdruck oder geben Sie das Passwort ein, um zu entsperren + + +- + Verify voiceprint or enter password to unlock +- Überprüfen Sie den Stimmabdruck oder geben Sie das Passwort ein, um zu entsperren ++ Überprüfen Sie den Stimmabdruck oder geben Sie das Passwort ein, um zu entsperren + + +- + Verify finger vein or enter password to unlock +- Überprüfen Sie die Fingervene oder geben Sie das Passwort ein, um zu entsperren ++ Überprüfen Sie die Fingervene oder geben Sie das Passwort ein, um zu entsperren + + +- + Verify iris or enter password to unlock +- Überprüfen Sie die Iris oder geben Sie das Passwort ein, um zu entsperren ++ Überprüfen Sie die Iris oder geben Sie das Passwort ein, um zu entsperren + + +- ++ ++ ++ Facial recognition to unlock ++ ++ ++ ++ ++ Fingerprint recognition to unlock ++ ++ ++ ++ ++ Voiceprint recognition to unlock ++ ++ ++ ++ ++ Finger vein recognition to unlock ++ ++ ++ ++ ++ Iris recognition to unlock ++ ++ ++ ++ ++ Use the bound wechat scanning code to unlock ++ ++ ++ ++ + Password: + + + +- ++ + Input Password + Passwort eingeben + + +- ++ + Username + Nutzername + + +- ++ + User name input error! + + + +- ++ + login + + + +- +- +- +- ++ ++ ++ ++ + Failed to verify %1, please enter password to unlock + %1 konnte nicht verifiziert werden, bitte geben Sie das Kennwort zum Entsperren ein + + +- +- +- +- +- ++ ++ ++ ++ ++ + Unable to verify %1, please enter password to unlock + %1 kann nicht verifiziert werden, bitte geben Sie das Kennwort zum Entsperren ein + + +- ++ + Abnormal network + Ungewöhnliches Netzwerk + + +- ++ + Face recognition waiting time out, please click refresh or enter the password to unlock. + + + +- ++ + FingerPrint + + + +- ++ + FingerVein + + + +- ++ + Iris + + + +- ++ + Face + + + +- ++ + VoicePrint + + + +- +- ++ ++ + Ukey + Ukey + + +- +- ++ ++ + QRCode + QRCode + + +- ++ + fingerprint + + + +- ++ + fingervein + + + +- ++ + iris + + + +- ++ + face + + + +- ++ + voiceprint + + +@@ -217,7 +242,7 @@ + 使用绑定的微信扫码或输入密码登录 + + +- ++ + Password cannot be empty + Das Kennwort darf nicht leer sein. + +@@ -230,8 +255,8 @@ + 无法验证%1,请输入密码. + + +- +- ++ ++ + Failed to verify %1, you still have %2 verification opportunities + %1 konnte nicht verifiziert werden, Sie haben immer noch %2 Überprüfungsmöglichkeiten + +@@ -260,15 +285,14 @@ + 请输入密码或者录入指纹 + + +- +- ++ ++ + Authentication failure, Please try again + Authentifizierungsfehler, Bitte versuchen Sie es erneut + + +- + Use the bound wechat scanning code or enter the password to unlock +- Verwenden Sie den gebundenen Wechat-Scan-Code oder geben Sie das Passwort zum Entsperren ein ++ Verwenden Sie den gebundenen Wechat-Scan-Code oder geben Sie das Passwort zum Entsperren ein + + + Enter the ukey password +@@ -283,8 +307,8 @@ + Passwort + + +- +- ++ ++ + Login + Einloggen + +@@ -1704,7 +1728,7 @@ + + IconEdit + +- ++ + OK + OKAY + +@@ -2090,53 +2114,53 @@ + + LoginOptionsWidget + +- +- ++ ++ + Login Options + Login-Optionen + + +- ++ + Password + Passwort + + +- ++ + Other + Andere + + +- ++ + FingerPrint + + + +- ++ + FingerVein + + + +- ++ + Iris + + + +- ++ + Face + + + +- ++ + VoicePrint + + + +- ++ + Ukey + Ukey + + +- ++ + QRCode + QRCode + +@@ -2145,7 +2169,7 @@ + 微信 + + +- ++ + Identify device removed! + Gerät identifizieren entfernt! + +diff --git a/i18n_ts/es.ts b/i18n_ts/es.ts +index 890529a..d0bd176 100644 +--- a/i18n_ts/es.ts ++++ b/i18n_ts/es.ts +@@ -24,7 +24,7 @@ + 使用密码认证 + + +- ++ + Retry + Reintentar + +@@ -53,162 +53,187 @@ + 账户锁定%1分钟由于%2次错误尝试 + + +- ++ + Please try again in %1 minutes. + Inténtelo de nuevo en %1 minutos. + + +- ++ + Please try again in %1 seconds. + Inténtelo de nuevo en %1 segundos. + + +- ++ + Account locked permanently. + Cuenta bloqueada permanentemente. + + +- +- + Verify face recognition or enter password to unlock +- Verifique el reconocimiento facial o ingrese la contraseña para desbloquear ++ Verifique el reconocimiento facial o ingrese la contraseña para desbloquear + + +- ++ + Guest + 游客 + + +- + Press fingerprint or enter password to unlock +- Presione la huella dactilar o ingrese la contraseña para desbloquear ++ Presione la huella dactilar o ingrese la contraseña para desbloquear + + +- + Verify voiceprint or enter password to unlock +- Verifica la huella de voz o ingresa la contraseña para desbloquear ++ Verifica la huella de voz o ingresa la contraseña para desbloquear + + +- + Verify finger vein or enter password to unlock +- Verifique la vena del dedo o ingrese la contraseña para desbloquear ++ Verifique la vena del dedo o ingrese la contraseña para desbloquear + + +- + Verify iris or enter password to unlock +- Verifique el iris o ingrese la contraseña para desbloquear ++ Verifique el iris o ingrese la contraseña para desbloquear + + +- ++ ++ ++ Facial recognition to unlock ++ ++ ++ ++ ++ Fingerprint recognition to unlock ++ ++ ++ ++ ++ Voiceprint recognition to unlock ++ ++ ++ ++ ++ Finger vein recognition to unlock ++ ++ ++ ++ ++ Iris recognition to unlock ++ ++ ++ ++ ++ Use the bound wechat scanning code to unlock ++ ++ ++ ++ + Password: + + + +- ++ + Input Password + Contraseña de entrada + + +- ++ + Username + Nombre de usuario + + +- ++ + User name input error! + + + +- ++ + login + + + +- +- +- +- ++ ++ ++ ++ + Failed to verify %1, please enter password to unlock + No se pudo verificar %1, ingrese la contraseña para desbloquear + + +- +- +- +- +- ++ ++ ++ ++ ++ + Unable to verify %1, please enter password to unlock + No se puede verificar %1, ingrese la contraseña para desbloquear + + +- ++ + Abnormal network + Red anormal + + +- ++ + Face recognition waiting time out, please click refresh or enter the password to unlock. + + + +- ++ + FingerPrint + + + +- ++ + FingerVein + + + +- ++ + Iris + + + +- ++ + Face + + + +- ++ + VoicePrint + + + +- +- ++ ++ + Ukey + Ukey + + +- +- ++ ++ + QRCode + QRCode + + +- ++ + fingerprint + + + +- ++ + fingervein + + + +- ++ + iris + + + +- ++ + face + + + +- ++ + voiceprint + + +@@ -217,7 +242,7 @@ + 使用绑定的微信扫码或输入密码登录 + + +- ++ + Password cannot be empty + La contraseña no puede estar vacía + +@@ -230,8 +255,8 @@ + 无法验证%1,请输入密码. + + +- +- ++ ++ + Failed to verify %1, you still have %2 verification opportunities + No se pudo verificar %1, todavía tiene %2 oportunidades de verificación + +@@ -260,15 +285,14 @@ + 请输入密码或者录入指纹 + + +- +- ++ ++ + Authentication failure, Please try again + Error de autenticación, inténtelo de nuevo + + +- + Use the bound wechat scanning code or enter the password to unlock +- Use el código de escaneo de wechat vinculado o ingrese la contraseña para desbloquear ++ Use el código de escaneo de wechat vinculado o ingrese la contraseña para desbloquear + + + Enter the ukey password +@@ -283,8 +307,8 @@ + Contraseña + + +- +- ++ ++ + Login + Iniciar sesión + +@@ -1704,7 +1728,7 @@ + + IconEdit + +- ++ + OK + De acuerdo + +@@ -2094,53 +2118,53 @@ + + LoginOptionsWidget + +- +- ++ ++ + Login Options + Opciones de inicio de sesión + + +- ++ + Password + Contraseña + + +- ++ + Other + Otro + + +- ++ + FingerPrint + + + +- ++ + FingerVein + + + +- ++ + Iris + + + +- ++ + Face + + + +- ++ + VoicePrint + + + +- ++ + Ukey + Ukey + + +- ++ + QRCode + QRCode + +@@ -2149,7 +2173,7 @@ + 微信 + + +- ++ + Identify device removed! + ¡Identifique el dispositivo eliminado! + +diff --git a/i18n_ts/fr.ts b/i18n_ts/fr.ts +index 0a70d66..6181ffb 100644 +--- a/i18n_ts/fr.ts ++++ b/i18n_ts/fr.ts +@@ -24,7 +24,7 @@ + 使用密码认证 + + +- ++ + Retry + Réessayer + +@@ -53,162 +53,187 @@ + 账户锁定%1分钟由于%2次错误尝试 + + +- ++ + Please try again in %1 minutes. + Veuillez réessayer dans %1 minutes. + + +- ++ + Please try again in %1 seconds. + Veuillez réessayer dans %1 secondes. + + +- ++ + Account locked permanently. + Compte verrouillé définitivement. + + +- +- + Verify face recognition or enter password to unlock +- Vérifier la reconnaissance faciale ou saisir le mot de passe pour déverrouiller ++ Vérifier la reconnaissance faciale ou saisir le mot de passe pour déverrouiller + + +- ++ + Guest + 游客 + + +- + Press fingerprint or enter password to unlock +- Appuyez sur l’empreinte digitale ou entrez le mot de passe pour déverrouiller ++ Appuyez sur l’empreinte digitale ou entrez le mot de passe pour déverrouiller + + +- + Verify voiceprint or enter password to unlock +- Vérifier l’empreinte vocale ou saisir le mot de passe pour déverrouiller ++ Vérifier l’empreinte vocale ou saisir le mot de passe pour déverrouiller + + +- + Verify finger vein or enter password to unlock +- Vérifiez la veine du doigt ou entrez le mot de passe pour déverrouiller ++ Vérifiez la veine du doigt ou entrez le mot de passe pour déverrouiller + + +- + Verify iris or enter password to unlock +- Vérifiez l’iris ou entrez le mot de passe pour déverrouiller ++ Vérifiez l’iris ou entrez le mot de passe pour déverrouiller + + +- ++ ++ ++ Facial recognition to unlock ++ ++ ++ ++ ++ Fingerprint recognition to unlock ++ ++ ++ ++ ++ Voiceprint recognition to unlock ++ ++ ++ ++ ++ Finger vein recognition to unlock ++ ++ ++ ++ ++ Iris recognition to unlock ++ ++ ++ ++ ++ Use the bound wechat scanning code to unlock ++ ++ ++ ++ + Password: + + + +- ++ + Input Password + Mot de passe d’entrée + + +- ++ + Username + Nom d’utilisateur + + +- ++ + User name input error! + + + +- ++ + login + + + +- +- +- +- ++ ++ ++ ++ + Failed to verify %1, please enter password to unlock + Impossible de vérifier %1, veuillez entrer le mot de passe pour déverrouiller + + +- +- +- +- +- ++ ++ ++ ++ ++ + Unable to verify %1, please enter password to unlock + Impossible de vérifier %1, veuillez entrer le mot de passe pour déverrouiller + + +- ++ + Abnormal network + Réseau anormal + + +- ++ + Face recognition waiting time out, please click refresh or enter the password to unlock. + + + +- ++ + FingerPrint + + + +- ++ + FingerVein + + + +- ++ + Iris + + + +- ++ + Face + + + +- ++ + VoicePrint + + + +- +- ++ ++ + Ukey + Ukey (en anglais seulement) + + +- +- ++ ++ + QRCode + QRCode + + +- ++ + fingerprint + + + +- ++ + fingervein + + + +- ++ + iris + + + +- ++ + face + + + +- ++ + voiceprint + + +@@ -217,7 +242,7 @@ + 使用绑定的微信扫码或输入密码登录 + + +- ++ + Password cannot be empty + Le mot de passe ne peut pas être vide + +@@ -230,8 +255,8 @@ + 无法验证%1,请输入密码. + + +- +- ++ ++ + Failed to verify %1, you still have %2 verification opportunities + Échec de la vérification %1, vous avez encore %2 possibilités de vérification + +@@ -260,15 +285,14 @@ + 请输入密码或者录入指纹 + + +- +- ++ ++ + Authentication failure, Please try again + Échec de l’authentification, veuillez réessayer + + +- + Use the bound wechat scanning code or enter the password to unlock +- Utilisez le code d’analyse wechat lié ou entrez le mot de passe pour déverrouiller ++ Utilisez le code d’analyse wechat lié ou entrez le mot de passe pour déverrouiller + + + Enter the ukey password +@@ -283,8 +307,8 @@ + Mot de passe + + +- +- ++ ++ + Login + Connectez-vous + +@@ -1704,7 +1728,7 @@ + + IconEdit + +- ++ + OK + D’ACCORD + +@@ -2090,53 +2114,53 @@ + + LoginOptionsWidget + +- +- ++ ++ + Login Options + Options de connexion + + +- ++ + Password + Mot de passe + + +- ++ + Other + Autre + + +- ++ + FingerPrint + + + +- ++ + FingerVein + + + +- ++ + Iris + + + +- ++ + Face + + + +- ++ + VoicePrint + + + +- ++ + Ukey + Ukey (en anglais seulement) + + +- ++ + QRCode + QRCode + +@@ -2145,7 +2169,7 @@ + 微信 + + +- ++ + Identify device removed! + Identifier l’appareil supprimé ! + +diff --git a/i18n_ts/kk.ts b/i18n_ts/kk.ts +index 15e34da..4848710 100644 +--- a/i18n_ts/kk.ts ++++ b/i18n_ts/kk.ts +@@ -24,7 +24,7 @@ + 使用密码认证 + + +- ++ + Retry + قاتە قاتە سىناۋ + +@@ -53,162 +53,187 @@ + 账户锁定%1分钟由于%2次错误尝试 + + +- ++ + Please try again in %1 minutes. + .ٴسىز 1% مينۋت ٸشٸندە قاتە سىناپ كور + + +- ++ + Please try again in %1 seconds. + .ٴسىز 1% سەكونت ٸشٸندە قاتە سىناپ كور + + +- ++ + Account locked permanently. + .ەسەپات ماڭگىلىك قۇلىپتالادى + + +- +- + Verify face recognition or enter password to unlock +- چىراي تانىسن دالەلدەۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ ++ چىراي تانىسن دالەلدەۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ + + +- ++ + Guest + مەيمان (اتسىز تٸزٸمدەۇ) + + +- + Press fingerprint or enter password to unlock +- بارماقشى ٴٸزدٸ باسٸۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ ++ بارماقشى ٴٸزدٸ باسٸۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ + + +- + Verify voiceprint or enter password to unlock +- اۋا ٴٸزدٸ دالەلدەۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ ++ اۋا ٴٸزدٸ دالەلدەۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ + + +- + Verify finger vein or enter password to unlock +- بارماقشى ٴٸزٸ ارقىلى انىقتاۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ ++ بارماقشى ٴٸزٸ ارقىلى انىقتاۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ + + +- + Verify iris or enter password to unlock +- نى انىقتاۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ Iris ++ نى انىقتاۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ Iris + + +- ++ ++ ++ Facial recognition to unlock ++ ++ ++ ++ ++ Fingerprint recognition to unlock ++ ++ ++ ++ ++ Voiceprint recognition to unlock ++ ++ ++ ++ ++ Finger vein recognition to unlock ++ ++ ++ ++ ++ Iris recognition to unlock ++ ++ ++ ++ ++ Use the bound wechat scanning code to unlock ++ ++ ++ ++ + Password: + قۇپيا نومەر + + +- ++ + Input Password + قۇپيا نۇمىردى كىرگىزىڭىز + + +- ++ + Username + ابونت مى + + +- ++ + User name input error! + پايدالانۋشٸ اتٸ قاتە كىرگىزىلدى + + +- ++ + login + كىرۋ + + +- +- +- +- ++ ++ ++ ++ + Failed to verify %1, please enter password to unlock + دالەلدەۋ 1% جەڭىلىپ قالدى، قۇپيا نومەر كىرگىزىڭىز + + +- +- +- +- +- ++ ++ ++ ++ ++ + Unable to verify %1, please enter password to unlock + دالەلدەۋگە بولمادى 1%، قۇپيا نۇمىردى كىرەۈزۈپ قۇلىبىن ٴٸشڭٸز + + +- ++ + Abnormal network + بينورمال تور + + +- ++ + Face recognition waiting time out, please click refresh or enter the password to unlock. + چىراي تونۇتۇشنىڭ ساقتاۋ ۋاقىتى ٸشٸپ كەتتى، جاڭالاۋدى تۇرتىپ ياكي قۇپيا نومەر كىرەۈزۈپ قۇلىبىن ٴٸشڭٸز. + + +- ++ + FingerPrint + بارماقشى ٴٸزٸ + + +- ++ + FingerVein + بارماقشى ۋېناسى + + +- ++ + Iris + تۇستى پەردە + + +- ++ + Face + ادام بەتى + + +- ++ + VoicePrint + اۋا ٴٸزٸ + + +- +- ++ ++ + Ukey + قۇپيا كىلت + + +- +- ++ ++ + QRCode + ەكٸلٸك رازمەر + + +- ++ + fingerprint + بارماقشى ٴٸزٸ + + +- ++ + fingervein + بارماقشى ۋېنا تومۇزى + + +- ++ + iris + تۇستى پەردە + + +- ++ + face + ادام بەتى + + +- ++ + voiceprint + اۋا ٴٸزٸ + +@@ -217,7 +242,7 @@ + 使用绑定的微信扫码或输入密码登录 + + +- ++ + Password cannot be empty + قۇپيا نۇمىردى بوس قويۋعا بولمايدى + +@@ -230,8 +255,8 @@ + 无法验证%1,请输入密码. + + +- +- ++ ++ + Failed to verify %1, you still have %2 verification opportunities + دالەلدەۋ 1% جەڭىلىپ قالدى، جانە 2% دالەلدەۋ ورايڭىز بار + +@@ -260,15 +285,14 @@ + 请输入密码或者录入指纹 + + +- +- ++ ++ + Authentication failure, Please try again + دالەلدەۋ جەڭىلىپ قالدى، قاتە سىناپ كور + + +- + Use the bound wechat scanning code or enter the password to unlock +- بايلانعان ئۈندىدارنى كەسكىندەۋ بەلگىسى ياكي قۇپيا نۇمىردى كىرەۈزۈپ قۇلىپ ٸشٸۋ ++ بايلانعان ئۈندىدارنى كەسكىندەۋ بەلگىسى ياكي قۇپيا نۇمىردى كىرەۈزۈپ قۇلىپ ٸشٸۋ + + + Enter the ukey password +@@ -283,8 +307,8 @@ + 密码 + + +- +- ++ ++ + Login + كىرۋ + +@@ -1684,7 +1708,7 @@ + + IconEdit + +- ++ + OK + 提交 + +@@ -2066,53 +2090,53 @@ + + LoginOptionsWidget + +- +- ++ ++ + Login Options + كىرۋ تالدانبالارٸ + + +- ++ + Password + قۇپيا نومەر + + +- ++ + Other + باسقا + + +- ++ + FingerPrint + بارماقشى ٴٸزٸ + + +- ++ + FingerVein + بارماقشى ۋېناسى + + +- ++ + Iris + تۇستى پەردە + + +- ++ + Face + ادام بەتى + + +- ++ + VoicePrint + اۋا ٴٸزٸ + + +- ++ + Ukey + قۇپيا كىلت + + +- ++ + QRCode + ەكٸلٸك رازمەر + +@@ -2121,7 +2145,7 @@ + 微信 + + +- ++ + Identify device removed! + !اسبابٸن پارىقتاندىرۋ چىقىرىۋېتىلدى + +diff --git a/i18n_ts/ky.ts b/i18n_ts/ky.ts +index ae28119..558d37a 100644 +--- a/i18n_ts/ky.ts ++++ b/i18n_ts/ky.ts +@@ -24,7 +24,7 @@ + 使用密码认证 + + +- ++ + Retry + قايرا قايرا سىنوو + +@@ -53,162 +53,187 @@ + 账户锁定%1分钟由于%2次错误尝试 + + +- ++ + Please try again in %1 minutes. + .سىز 1% مىنۇت ىچىندە قايرا سىناپ باعىڭ + + +- ++ + Please try again in %1 seconds. + .سىز 1% سىكونت ىچىندە قايرا سىناپ باعىڭ + + +- ++ + Account locked permanently. + .ەسابات تۉبۅلۉك قۇلۇپلىنىدۇ + + +- +- + Verify face recognition or enter password to unlock +- چىراي تاانىشتى دالىلدۅ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ ++ چىراي تاانىشتى دالىلدۅ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ + + +- ++ + Guest + قونوق (اتى جوق تىزىمدەتىش ) + + +- + Press fingerprint or enter password to unlock +- بارماق ىزىن باسۇۇدا كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ ++ بارماق ىزىن باسۇۇدا كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ + + +- + Verify voiceprint or enter password to unlock +- دووش ىزىن دالىلدۅ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ ++ دووش ىزىن دالىلدۅ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ + + +- + Verify finger vein or enter password to unlock +- بارماق ئزى ارقىلۇۇ انىقتاش كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ ++ بارماق ئزى ارقىلۇۇ انىقتاش كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ + + +- + Verify iris or enter password to unlock +- نى انىقتاش كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ Iris ++ نى انىقتاش كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ Iris + + +- ++ ++ ++ Facial recognition to unlock ++ ++ ++ ++ ++ Fingerprint recognition to unlock ++ ++ ++ ++ ++ Voiceprint recognition to unlock ++ ++ ++ ++ ++ Finger vein recognition to unlock ++ ++ ++ ++ ++ Iris recognition to unlock ++ ++ ++ ++ ++ Use the bound wechat scanning code to unlock ++ ++ ++ ++ + Password: + جاشىرۇۇن نومۇر + + +- ++ + Input Password + جاشىرۇۇن نومۇردۇ كىرگىزىڭ + + +- ++ + Username + كەرەكتۅۅچۉ ناامى + + +- ++ + User name input error! + ىشتەتۉۉچۉ اتى قاتاا كىرگىزىلدى + + +- ++ + login + كىرۉۉ + + +- +- +- +- ++ ++ ++ ++ + Failed to verify %1, please enter password to unlock + دالىلدۅ 1% جەڭىلۉۉ بولدۇ ، جاشىرۇۇن نومۇر كىرگىزىڭ + + +- +- +- +- +- ++ ++ ++ ++ ++ + Unable to verify %1, please enter password to unlock + دالىلدۅۅگۅ بولبودۇ 1%، جاشىرۇۇن نومۇردۇ كىيىرىپ قۇلۇپنى اچىڭ + + +- ++ + Abnormal network + بۅتۅنچۅ تور + + +- ++ + Face recognition waiting time out, please click refresh or enter the password to unlock. + چىراي تونۇتۇشنىڭ ساقتوو ۇباقتى اشىپ كەتتى، جاڭىلوونۇ چەگىپ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىيىرىپ قۇلۇپنى اچىڭ. + + +- ++ + FingerPrint + بارماق ئزى + + +- ++ + FingerVein + بارماق ۋېناسى + + +- ++ + Iris + رەڭدار پاردا + + +- ++ + Face + ادام بەتى + + +- ++ + VoicePrint + دووش ئزى + + +- +- ++ ++ + Ukey + جاشىرۇۇن اچقىچ + + +- +- ++ ++ + QRCode + ەكىلىك قۇپۇيا نومۇر + + +- ++ + fingerprint + بارماق ئزى + + +- ++ + fingervein + بارماق ۋېنا تومۇزى + + +- ++ + iris + رەڭدار پاردا + + +- ++ + face + ادام بەتى + + +- ++ + voiceprint + دووش ئزى + +@@ -217,7 +242,7 @@ + 使用绑定的微信扫码或输入密码登录 + + +- ++ + Password cannot be empty + جاشىرۇۇن نومۇردۇ بوش ،بەكەر قويۇشقا بولبويت + +@@ -230,8 +255,8 @@ + 无法验证%1,请输入密码. + + +- +- ++ ++ + Failed to verify %1, you still have %2 verification opportunities + دالىلدۅ 1% جەڭىلۉۉ بولدۇ ، داعى 2% دالىلدۅ وڭۇتۇڭۇز بار + +@@ -260,15 +285,14 @@ + 请输入密码或者录入指纹 + + +- +- ++ ++ + Authentication failure, Please try again + دالىلدۅ جەڭىلۉۉ بولدۇ ، قايرا سىناپ باعىڭ + + +- + Use the bound wechat scanning code or enter the password to unlock +- بايلانعان ئۈندىدارنى ىسكاننىردوو قۇپۇيا نومۇرۇ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇرۇن كىيىرىپ قۇلپ اچۇۇ ++ بايلانعان ئۈندىدارنى ىسكاننىردوو قۇپۇيا نومۇرۇ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇرۇن كىيىرىپ قۇلپ اچۇۇ + + + Enter the ukey password +@@ -283,8 +307,8 @@ + 密码 + + +- +- ++ ++ + Login + كىرۉۉ + +@@ -1684,7 +1708,7 @@ + + IconEdit + +- ++ + OK + 提交 + +@@ -2066,53 +2090,53 @@ + + LoginOptionsWidget + +- +- ++ ++ + Login Options + كىرۉۉ تاندالمالارى + + +- ++ + Password + جاشىرۇۇن نومۇر + + +- ++ + Other + باشقا + + +- ++ + FingerPrint + بارماق ئزى + + +- ++ + FingerVein + بارماق ۋېناسى + + +- ++ + Iris + رەڭدار پاردا + + +- ++ + Face + ادام بەتى + + +- ++ + VoicePrint + دووش ئزى + + +- ++ + Ukey + جاشىرۇۇن اچقىچ + + +- ++ + QRCode + ەكىلىك قۇپۇيا نومۇر + +@@ -2121,7 +2145,7 @@ + 微信 + + +- ++ + Identify device removed! + !اسپاپتى ايىرمالاندىرىش چىقىرىۋېتىلدى + +diff --git a/i18n_ts/mn.ts b/i18n_ts/mn.ts +index 30e9e6b..34df8e9 100644 +--- a/i18n_ts/mn.ts ++++ b/i18n_ts/mn.ts +@@ -24,7 +24,7 @@ + 使用密码认证 + + +- ++ + Retry + ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠰᠢᠬᠤ + +@@ -53,162 +53,187 @@ + 账户锁定%1分钟由于%2次错误尝试 + + +- ++ + Please try again in %1 minutes. + %1 ᠮᠢᠨᠦ᠋ᠲ᠎ᠦᠨ ᠳᠠᠷᠠᠭ᠎ᠠ ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠠᠱᠢᠭᠠᠷᠠᠢ + + +- ++ + Please try again in %1 seconds. + %1 ᠮᠢᠨᠦ᠋ᠲ᠎ᠦᠨ ᠳᠠᠷᠠᠭ᠎ᠠ ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠠᠱᠢᠭᠠᠷᠠᠢ + + +- ++ + Account locked permanently. + ᠳᠠᠩᠰᠠ ᠨᠢᠭᠡᠨᠳᠡ ᠦᠨᠢᠳᠡ ᠤᠨᠢᠰᠤᠯᠠᠭᠳᠠᠪᠠ᠃ + + +- +- + Verify face recognition or enter password to unlock +- ᠨᠢᠭᠤᠷ ᠱᠢᠷᠪᠢᠵᠤ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ ++ ᠨᠢᠭᠤᠷ ᠱᠢᠷᠪᠢᠵᠤ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ + + +- ++ + Guest + ᠵᠤᠷᠴᠢᠭᠴᠢ ᠨᠡᠪᠳᠡᠷᠡᠬᠦ + + +- + Press fingerprint or enter password to unlock +- ᠬᠤᠷᠤᠭᠤᠨ᠎ᠤ ᠤᠷᠤᠮ ᠳᠠᠷᠤᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ ++ ᠬᠤᠷᠤᠭᠤᠨ᠎ᠤ ᠤᠷᠤᠮ ᠳᠠᠷᠤᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ + + +- + Verify voiceprint or enter password to unlock +- ᠳᠠᠭᠤ᠎ᠪᠠᠷ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ ++ ᠳᠠᠭᠤ᠎ᠪᠠᠷ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ + + +- + Verify finger vein or enter password to unlock +- ᠬᠤᠷᠤᠭᠤᠨ᠎ᠤ ᠨᠠᠮᠵᠢᠭᠤᠨ ᠰᠤᠳᠠᠯ᠎ᠢᠶᠠᠷ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ ++ ᠬᠤᠷᠤᠭᠤᠨ᠎ᠤ ᠨᠠᠮᠵᠢᠭᠤᠨ ᠰᠤᠳᠠᠯ᠎ᠢᠶᠠᠷ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ + + +- + Verify iris or enter password to unlock +- ᠰᠤᠯᠤᠩᠭ᠎ᠠ ᠪᠦᠷᠬᠦᠪᠴᠢ᠎ᠶᠢ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ ++ ᠰᠤᠯᠤᠩᠭ᠎ᠠ ᠪᠦᠷᠬᠦᠪᠴᠢ᠎ᠶᠢ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ + + +- ++ ++ ++ Facial recognition to unlock ++ ++ ++ ++ ++ Fingerprint recognition to unlock ++ ++ ++ ++ ++ Voiceprint recognition to unlock ++ ++ ++ ++ ++ Finger vein recognition to unlock ++ ++ ++ ++ ++ Iris recognition to unlock ++ ++ ++ ++ ++ Use the bound wechat scanning code to unlock ++ ++ ++ ++ + Password: + ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠬᠤ + + +- ++ + Input Password + ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠬᠤ + + +- ++ + Username + ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷ᠎ᠡ + + +- ++ + User name input error! + ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷ᠎ᠡ ᠵᠢ ᠪᠤᠷᠤᠭᠤ ᠤᠷᠤᠭᠤᠯᠪᠠ! + + +- ++ + login + ᠳᠠᠩᠰᠠᠯᠠᠨ ᠤᠷᠤᠬᠤ + + +- +- +- +- ++ ++ ++ ++ + Failed to verify %1, please enter password to unlock + %1᠎ᠤ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠤᠯᠳᠠ ᠢᠯᠠᠭᠳᠠᠪᠠ ᠂ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ + + +- +- +- +- +- ++ ++ ++ ++ ++ + Unable to verify %1, please enter password to unlock + %1᠎ᠶᠢ/᠎ᠢ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠠᠷᠭ᠎ᠠ ᠦᠬᠡᠢ ᠂ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ + + +- ++ + Abnormal network + ᠰᠦᠯᠵᠢᠶ᠎ᠡ ᠬᠡᠪ᠎ᠦᠨ ᠪᠤᠰᠤ + + +- ++ + Face recognition waiting time out, please click refresh or enter the password to unlock. + ᠬᠦᠮᠦᠨ ᠤ ᠨᠢᠭᠤᠷ ᠢ ᠢᠯᠭᠠᠬᠤ ᠦᠶᠡᠰ᠂ ᠰᠢᠨᠡᠳᠭᠡᠬᠦ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠨᠤᠮᠸᠷ ᠤᠨ ᠣᠨᠢᠰᠤ ᠶᠢ ᠲᠠᠷᠤᠭᠠᠷᠠᠢ᠃ + + +- ++ + FingerPrint + ᠬᠤᠷᠤᠭᠤᠨ ᠣᠷᠣᠮ + + +- ++ + FingerVein + ᠨᠠᠮ ᠵᠢᠮ ᠰᠤᠳᠠᠯ ᠢ ᠵᠢᠭᠠᠨ᠎ᠠ + + +- ++ + Iris + ᠬᠠᠯᠢᠰᠤ + + +- ++ + Face + ᠴᠢᠷᠠᠢ᠎ᠪᠠᠷ ᠢᠯᠭᠠᠨ ᠳᠠᠨᠢᠬᠤ + + +- ++ + VoicePrint + ᠳᠠᠭᠤᠨ ᠤ ᠣᠷᠣᠮ + + +- +- ++ ++ + Ukey + ᠠᠶᠤᠯᠭᠦᠢ ᠨᠢᠭᠤᠴᠠ ᠲᠦᠯᠬᠢᠭᠦᠷ + + +- +- ++ ++ + QRCode + ᠬᠤᠶᠠᠷ ᠬᠡᠮᠵᠢᠯᠳᠡᠳᠦ ᠺᠤᠳ᠋ + + +- ++ + fingerprint + ᠬᠤᠷᠤᠭᠤᠨ ᠣᠷᠣᠮ + + +- ++ + fingervein + ᠨᠠᠮ ᠵᠢᠮ ᠰᠤᠳᠠᠯ ᠢ ᠵᠢᠭᠠᠨ᠎ᠠ + + +- ++ + iris + ᠬᠠᠯᠢᠰᠤ + + +- ++ + face + ᠨᠢᠭᠤᠷ ᠴᠢᠷᠠᠢ + + +- ++ + voiceprint + ᠳᠠᠭᠤᠨ ᠤ ᠣᠷᠣᠮ + +@@ -217,7 +242,7 @@ + 使用绑定的微信扫码或输入密码登录 + + +- ++ + Password cannot be empty + ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠬᠤᠭᠤᠰᠤᠨ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ + +@@ -230,8 +255,8 @@ + 无法验证%1,请输入密码. + + +- +- ++ ++ + Failed to verify %1, you still have %2 verification opportunities + %1᠎ᠶᠢᠨ/᠎ᠦᠨ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠤᠯᠳᠠ ᠢᠯᠠᠭᠳᠠᠪᠠ ᠂ ᠲᠠ ᠪᠠᠰᠠ%2 ᠤᠳᠠᠭᠠᠨ᠎ᠤ ᠳᠤᠷᠱᠢᠬᠤ ᠵᠠᠪᠱᠢᠶᠠᠨ ᠲᠠᠢ + +@@ -260,15 +285,14 @@ + 请输入密码或者录入指纹 + + +- +- ++ ++ + Authentication failure, Please try again + ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠤᠯᠳᠠ ᠢᠯᠠᠭᠳᠠᠪᠠ ᠂ ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠱᠢᠭᠠᠷᠠᠢ + + +- + Use the bound wechat scanning code or enter the password to unlock +- ᠤᠶᠠᠭᠰᠠᠨ ᠸᠢᠴᠠᠲ᠎ᠢᠶᠠᠷ ᠺᠤᠳ᠋ ᠱᠢᠷᠪᠢᠬᠦ᠌ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ ++ ᠤᠶᠠᠭᠰᠠᠨ ᠸᠢᠴᠠᠲ᠎ᠢᠶᠠᠷ ᠺᠤᠳ᠋ ᠱᠢᠷᠪᠢᠬᠦ᠌ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤ᠎ᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ + + + Enter the ukey password +@@ -283,8 +307,8 @@ + ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ + + +- +- ++ ++ + Login + ᠳᠠᠩᠰᠠᠯᠠᠨ ᠤᠷᠤᠬᠤ + +@@ -1688,7 +1712,7 @@ + + IconEdit + +- ++ + OK + ᠪᠠᠰᠠ ᠪᠣᠯᠣᠨ᠎ᠠ ᠃ + +@@ -2089,53 +2113,53 @@ + + LoginOptionsWidget + +- +- ++ ++ + Login Options + ᠨᠡᠪᠳᠡᠷᠡᠬᠦ᠌ ᠰᠤᠩᠭᠤᠯᠳᠠ + + +- ++ + Password + ᠨᠢᠭᠤᠴᠠ ᠺᠣᠳ᠋᠎ᠢ᠋ ᠵᠠᠰᠠᠬᠤ + + +- ++ + Other + ᠪᠤᠰᠤᠳ + + +- ++ + FingerPrint + ᠬᠤᠷᠤᠭᠤᠨ᠎ᠤ ᠤᠷᠤᠮ + + +- ++ + FingerVein + ᠬᠤᠷᠤᠭᠤᠨ᠎ᠤ ᠨᠠᠮᠵᠢᠭᠤᠨ ᠰᠤᠳᠠᠯ + + +- ++ + Iris + ᠰᠤᠯᠤᠩᠭ᠎ᠠ ᠪᠦᠷᠬᠦᠪᠴᠢ + + +- ++ + Face + ᠴᠢᠷᠠᠢ᠎ᠪᠠᠷ ᠢᠯᠭᠠᠨ ᠳᠠᠨᠢᠬᠤ + + +- ++ + VoicePrint + ᠳᠠᠭᠤᠨ᠎ᠤ ᠢᠷᠠᠯᠵᠢ + + +- ++ + Ukey + ᠠᠶᠤᠯᠭᠦᠢ ᠨᠢᠭᠤᠴᠠ ᠲᠦᠯᠬᠢᠭᠦᠷ + + +- ++ + QRCode + ᠬᠤᠶᠠᠷ ᠬᠡᠮᠵᠢᠯᠳᠡᠳᠦ ᠺᠤᠳ᠋ + +@@ -2144,7 +2168,7 @@ + 微信 + + +- ++ + Identify device removed! + ᠬᠠᠷᠭᠤᠭᠤᠯᠵᠤ ᠱᠢᠯᠭᠠᠬᠤ ᠳᠦᠬᠦᠬᠡᠷᠦᠮᠵᠢ᠎ᠶᠢ ᠨᠢᠭᠡᠨᠳᠡ ᠱᠢᠯᠵᠢᠬᠦᠯᠦᠨ ᠬᠠᠰᠤᠪᠠ! + +diff --git a/i18n_ts/pt.ts b/i18n_ts/pt.ts +index 52d54a0..8d879ec 100644 +--- a/i18n_ts/pt.ts ++++ b/i18n_ts/pt.ts +@@ -70,30 +70,6 @@ + Login + + +- +- Verify face recognition or enter password to unlock +- +- +- +- Press fingerprint or enter password to unlock +- +- +- +- Verify voiceprint or enter password to unlock +- +- +- +- Verify finger vein or enter password to unlock +- +- +- +- Verify iris or enter password to unlock +- +- +- +- Use the bound wechat scanning code or enter the password to unlock +- +- + + Password cannot be empty + +@@ -182,6 +158,30 @@ + Password: + + ++ ++ Facial recognition to unlock ++ ++ ++ ++ Fingerprint recognition to unlock ++ ++ ++ ++ Voiceprint recognition to unlock ++ ++ ++ ++ Finger vein recognition to unlock ++ ++ ++ ++ Iris recognition to unlock ++ ++ ++ ++ Use the bound wechat scanning code to unlock ++ ++ + + + BatteryWidget +diff --git a/i18n_ts/ru.ts b/i18n_ts/ru.ts +index 3e865fc..8117e89 100644 +--- a/i18n_ts/ru.ts ++++ b/i18n_ts/ru.ts +@@ -70,30 +70,6 @@ + Login + + +- +- Verify face recognition or enter password to unlock +- +- +- +- Press fingerprint or enter password to unlock +- +- +- +- Verify voiceprint or enter password to unlock +- +- +- +- Verify finger vein or enter password to unlock +- +- +- +- Verify iris or enter password to unlock +- +- +- +- Use the bound wechat scanning code or enter the password to unlock +- +- + + Password cannot be empty + +@@ -182,6 +158,30 @@ + Password: + + ++ ++ Facial recognition to unlock ++ ++ ++ ++ Fingerprint recognition to unlock ++ ++ ++ ++ Voiceprint recognition to unlock ++ ++ ++ ++ Finger vein recognition to unlock ++ ++ ++ ++ Iris recognition to unlock ++ ++ ++ ++ Use the bound wechat scanning code to unlock ++ ++ + + + BatteryWidget +diff --git a/i18n_ts/tr.ts b/i18n_ts/tr.ts +index ee07c9f..c37b5c9 100644 +--- a/i18n_ts/tr.ts ++++ b/i18n_ts/tr.ts +@@ -24,7 +24,7 @@ + Parola + + +- ++ + Retry + Yeniden Dene + +@@ -49,190 +49,190 @@ + Kimlik doğrulama hatası, hala %1 kalan denemen var + + +- +- ++ ++ + Login + + + +- ++ + Guest + Misafir + + +- +- +- Verify face recognition or enter password to unlock ++ ++ ++ Facial recognition to unlock + + + +- +- Press fingerprint or enter password to unlock ++ ++ Fingerprint recognition to unlock + + + +- +- Verify voiceprint or enter password to unlock ++ ++ Voiceprint recognition to unlock + + + +- +- Verify finger vein or enter password to unlock ++ ++ Finger vein recognition to unlock + + + +- +- Verify iris or enter password to unlock ++ ++ Iris recognition to unlock + + + +- +- Use the bound wechat scanning code or enter the password to unlock ++ ++ Use the bound wechat scanning code to unlock + + + +- ++ + Password cannot be empty + + + +- ++ + Password: + + + +- ++ + Input Password + + + +- ++ + Username + + + +- ++ + User name input error! + + + +- +- ++ ++ + Authentication failure, Please try again + + + +- ++ + login + + + +- ++ + Please try again in %1 minutes. + + + +- ++ + Please try again in %1 seconds. + + + +- ++ + Account locked permanently. + + + +- +- +- +- ++ ++ ++ ++ + Failed to verify %1, please enter password to unlock + + + +- +- +- +- +- ++ ++ ++ ++ ++ + Unable to verify %1, please enter password to unlock + + + +- +- ++ ++ + Failed to verify %1, you still have %2 verification opportunities + + + +- ++ + Abnormal network + + + +- ++ + Face recognition waiting time out, please click refresh or enter the password to unlock. + + + +- ++ + FingerPrint + Parmak İzi + + +- ++ + FingerVein + + + +- ++ + Iris + Göz + + +- ++ + Face + Yüz + + +- ++ + VoicePrint + Ses İzi + + +- +- ++ ++ + Ukey + + + +- +- ++ ++ + QRCode + + + +- ++ + fingerprint + + + +- ++ + fingervein + + + +- ++ + iris + + + +- ++ + face + + + +- ++ + voiceprint + + +@@ -629,7 +629,7 @@ + + IconEdit + +- ++ + OK + Tamam + +@@ -762,58 +762,58 @@ + + LoginOptionsWidget + +- +- ++ ++ + Login Options + + + +- ++ + Password + Parola + + +- ++ + Other + + + +- ++ + Identify device removed! + + + +- ++ + FingerPrint + Parmak İzi + + +- ++ + FingerVein + + + +- ++ + Iris + Göz + + +- ++ + Face + Yüz + + +- ++ + VoicePrint + Ses İzi + + +- ++ + Ukey + + + +- ++ + QRCode + + +diff --git a/i18n_ts/ug.ts b/i18n_ts/ug.ts +index 01cbc36..b8180e2 100644 +--- a/i18n_ts/ug.ts ++++ b/i18n_ts/ug.ts +@@ -24,7 +24,7 @@ + 使用密码认证 + + +- ++ + Retry + قايتا قايتا سىناش + +@@ -53,162 +53,187 @@ + 账户锁定%1分钟由于%2次错误尝试 + + +- ++ + Please try again in %1 minutes. + .سىز 1% مىنۇت ئىچىدە قايتا سىناپ بېقىڭ + + +- ++ + Please try again in %1 seconds. + .سىز 1% سېكۇنت ئىچىدە قايتا سىناپ بېقىڭ + + +- ++ + Account locked permanently. + .ھېسابات مەڭگۈلۈك قۇلۇپلىنىدۇ + + +- +- + Verify face recognition or enter password to unlock +- چىراي تونۇشنى دەلىللەش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش ++ چىراي تونۇشنى دەلىللەش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش + + +- ++ + Guest + مېھمان (نامسىز تىزىملىتىش) + + +- + Press fingerprint or enter password to unlock +- بارماق ئىزىنى بېسىش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش ++ بارماق ئىزىنى بېسىش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش + + +- + Verify voiceprint or enter password to unlock +- ئاۋاز ئىزىنى دەلىللەش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش ++ ئاۋاز ئىزىنى دەلىللەش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش + + +- + Verify finger vein or enter password to unlock +- بارماق ئىزى ئارقىلىق ئېنىقلاش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش ++ بارماق ئىزى ئارقىلىق ئېنىقلاش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش + + +- + Verify iris or enter password to unlock +- نى ئېنىقلاش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش Iris ++ نى ئېنىقلاش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش Iris + + +- ++ ++ ++ Facial recognition to unlock ++ ++ ++ ++ ++ Fingerprint recognition to unlock ++ ++ ++ ++ ++ Voiceprint recognition to unlock ++ ++ ++ ++ ++ Finger vein recognition to unlock ++ ++ ++ ++ ++ Iris recognition to unlock ++ ++ ++ ++ ++ Use the bound wechat scanning code to unlock ++ ++ ++ ++ + Password: + مەخپىي نومۇر + + +- ++ + Input Password + مەخپىي نومۇرنى كىرگۈزۈڭ + + +- ++ + Username + ئابۇنت نامى + + +- ++ + User name input error! + ئىشلەتكۈچى ئىسمى خاتا كىرگۈزۈلدى + + +- ++ + login + كىرىش + + +- +- +- +- ++ ++ ++ ++ + Failed to verify %1, please enter password to unlock + دەلىللەش 1% مەغلۇپ بولدى، مەخپىي نومۇر كىرگۈزۈڭ + + +- +- +- +- +- ++ ++ ++ ++ ++ + Unable to verify %1, please enter password to unlock + دەلىللەشكە بولمىدى 1%، مەخپىي نومۇرنى كىرگۈزۈپ قۇلۇپنى ئېچىڭ + + +- ++ + Abnormal network + بىنورمال تور + + +- ++ + Face recognition waiting time out, please click refresh or enter the password to unlock. + چىراي تونۇتۇشنىڭ ساقلاش ۋاقتى ئېشىپ كەتتى، يېڭىلاشنى چېكىپ ياكى مەخپىي نومۇر كىرگۈزۈپ قۇلۇپنى ئېچىڭ. + + +- ++ + FingerPrint + بارماق ئىزى + + +- ++ + FingerVein + بارماق ۋېناسى + + +- ++ + Iris + رەڭدار پەردە + + +- ++ + Face + ئادەم يۈزى + + +- ++ + VoicePrint + ئاۋاز ئىزى + + +- +- ++ ++ + Ukey + مەخپىي ئاچقۇچ + + +- +- ++ ++ + QRCode + ئىككىلىك كود + + +- ++ + fingerprint + بارماق ئىزى + + +- ++ + fingervein + بارماق ۋېنا تومۇزى + + +- ++ + iris + رەڭدار پەردە + + +- ++ + face + ئادەم يۈزى + + +- ++ + voiceprint + ئاۋاز ئىزى + +@@ -217,7 +242,7 @@ + 使用绑定的微信扫码或输入密码登录 + + +- ++ + Password cannot be empty + مەخپىي نومۇرنى بوش قويۇشقا بولمايدۇ + +@@ -230,8 +255,8 @@ + 无法验证%1,请输入密码. + + +- +- ++ ++ + Failed to verify %1, you still have %2 verification opportunities + دەلىللەش 1% مەغلۇپ بولدى، يەنە 2% دەلىللەش پۇرسىتىڭىز بار + +@@ -260,15 +285,14 @@ + 请输入密码或者录入指纹 + + +- +- ++ ++ + Authentication failure, Please try again + دەلىللەش مەغلۇپ بولدى، قايتا سىناپ بېقىڭ + + +- + Use the bound wechat scanning code or enter the password to unlock +- باغلانغان ئۈندىدارنى سىكاننېرلاش كودى ياكى مەخپىي نومۇرىنى كىرگۈزۈپ قۇلۇپ ئېچىش ++ باغلانغان ئۈندىدارنى سىكاننېرلاش كودى ياكى مەخپىي نومۇرىنى كىرگۈزۈپ قۇلۇپ ئېچىش + + + Enter the ukey password +@@ -283,8 +307,8 @@ + مەخپىي نۇمۇر + + +- +- ++ ++ + Login + كىرىش + +@@ -1700,7 +1724,7 @@ + + IconEdit + +- ++ + OK + 提交 + +@@ -2074,53 +2098,53 @@ + + LoginOptionsWidget + +- +- ++ ++ + Login Options + كىرىش تاللانمىلىرى + + +- ++ + Password + مەخپىي نومۇر + + +- ++ + Other + باشقا + + +- ++ + FingerPrint + بارماق ئىزى + + +- ++ + FingerVein + بارماق ۋېناسى + + +- ++ + Iris + رەڭدار پەردە + + +- ++ + Face + ئادەم يۈزى + + +- ++ + VoicePrint + ئاۋاز ئىزى + + +- ++ + Ukey + مەخپىي ئاچقۇچ + + +- ++ + QRCode + ئىككىلىك كود + +@@ -2129,7 +2153,7 @@ + 微信 + + +- ++ + Identify device removed! + !ئۈسكۈنىنى پەرقلەندۈرۈش چىقىرىۋېتىلدى + +diff --git a/i18n_ts/zh_CN.ts b/i18n_ts/zh_CN.ts +index a43ed24..4c0c1d2 100644 +--- a/i18n_ts/zh_CN.ts ++++ b/i18n_ts/zh_CN.ts +@@ -24,7 +24,7 @@ + 使用密码认证 + + +- ++ + Retry + 重试 + +@@ -53,162 +53,187 @@ + 账户锁定%1分钟由于%2次错误尝试 + + +- ++ + Please try again in %1 minutes. + 请%1分钟后再试 + + +- ++ + Please try again in %1 seconds. + 请%1秒后再试 + + +- ++ + Account locked permanently. + 账号已被永久锁定 + + +- +- + Verify face recognition or enter password to unlock +- 验证人脸识别或输入密码解锁 ++ 验证人脸识别或输入密码解锁 + + +- ++ + Guest + 游客 + + +- + Press fingerprint or enter password to unlock +- 按压指纹或输入密码解锁 ++ 按压指纹或输入密码解锁 + + +- + Verify voiceprint or enter password to unlock +- 验证声纹或输入密码解锁 ++ 验证声纹或输入密码解锁 + + +- + Verify finger vein or enter password to unlock +- 验证指静脉或输入密码解锁 ++ 验证指静脉或输入密码解锁 + + +- + Verify iris or enter password to unlock +- 验证虹膜或输入密码解锁 ++ 验证虹膜或输入密码解锁 + + +- ++ ++ ++ Facial recognition to unlock ++ 识别人脸解锁 ++ ++ ++ ++ Fingerprint recognition to unlock ++ 识别指纹解锁 ++ ++ ++ ++ Voiceprint recognition to unlock ++ 识别声纹解锁 ++ ++ ++ ++ Finger vein recognition to unlock ++ 识别指静脉解锁 ++ ++ ++ ++ Iris recognition to unlock ++ 识别虹膜解锁 ++ ++ ++ ++ Use the bound wechat scanning code to unlock ++ 微信扫码解锁 ++ ++ ++ + Password: + 密码: + + +- ++ + Input Password + 输入密码 + + +- ++ + Username + 用户名: + + +- ++ + User name input error! + 用户名输入错误 + + +- ++ + login + 登录 + + +- +- +- +- ++ ++ ++ ++ + Failed to verify %1, please enter password to unlock + 验证%1失败,请输入密码解锁 + + +- +- +- +- +- ++ ++ ++ ++ ++ + Unable to verify %1, please enter password to unlock + 无法验证%1,请输入密码解锁 + + +- ++ + Abnormal network + 网络异常 + + +- ++ + Face recognition waiting time out, please click refresh or enter the password to unlock. + 人脸识别等待超时,请点击刷新或输入密码解锁 + + +- ++ + FingerPrint + 指纹 + + +- ++ + FingerVein + 指静脉 + + +- ++ + Iris + 虹膜 + + +- ++ + Face + 人脸识别 + + +- ++ + VoicePrint + 声纹 + + +- +- ++ ++ + Ukey + 安全密钥 + + +- +- ++ ++ + QRCode + 二维码 + + +- ++ + fingerprint + 指纹 + + +- ++ + fingervein + 指静脉 + + +- ++ + iris + 虹膜 + + +- ++ + face + 人脸 + + +- ++ + voiceprint + 声纹 + +@@ -217,7 +242,7 @@ + 使用绑定的微信扫码或输入密码登录 + + +- ++ + Password cannot be empty + 密码不能为空 + +@@ -230,8 +255,8 @@ + 无法验证%1,请输入密码. + + +- +- ++ ++ + Failed to verify %1, you still have %2 verification opportunities + 验证%1失败,您还有%2次尝试机会 + +@@ -260,15 +285,14 @@ + 请输入密码或者录入指纹 + + +- +- ++ ++ + Authentication failure, Please try again + 认证失败,请重试 + + +- + Use the bound wechat scanning code or enter the password to unlock +- 使用绑定的微信扫码或输入密码解锁 ++ 使用绑定的微信扫码或输入密码解锁 + + + Enter the ukey password +@@ -283,8 +307,8 @@ + 密码 + + +- +- ++ ++ + Login + 登录 + +@@ -1684,7 +1708,7 @@ + + IconEdit + +- ++ + OK + 提交 + +@@ -2066,53 +2090,53 @@ + + LoginOptionsWidget + +- +- ++ ++ + Login Options + 登录选项 + + +- ++ + Password + 密码 + + +- ++ + Other + 其他 + + +- ++ + FingerPrint + 指纹 + + +- ++ + FingerVein + 指静脉 + + +- ++ + Iris + 虹膜 + + +- ++ + Face + 人脸识别 + + +- ++ + VoicePrint + 声纹 + + +- ++ + Ukey + 安全密钥 + + +- ++ + QRCode + 二维码 + +@@ -2121,7 +2145,7 @@ + 微信 + + +- ++ + Identify device removed! + 校验设备已移除! + +diff --git a/i18n_ts/zh_HK.ts b/i18n_ts/zh_HK.ts +index eac2ea1..c378c49 100644 +--- a/i18n_ts/zh_HK.ts ++++ b/i18n_ts/zh_HK.ts +@@ -24,7 +24,7 @@ + 使用密码认证 + + +- ++ + Retry + 重試 + +@@ -53,162 +53,187 @@ + 账户锁定%1分钟由于%2次错误尝试 + + +- ++ + Please try again in %1 minutes. + 請在 %1 分鐘後重試。 + + +- ++ + Please try again in %1 seconds. + 請在 %1 秒後重試。 + + +- ++ + Account locked permanently. + 帳戶永久鎖定。 + + +- +- + Verify face recognition or enter password to unlock +- 驗證人臉識別或輸入密碼解鎖 ++ 驗證人臉識別或輸入密碼解鎖 + + +- ++ + Guest + 游客 + + +- + Press fingerprint or enter password to unlock +- 按指紋或輸入密碼解鎖 ++ 按指紋或輸入密碼解鎖 + + +- + Verify voiceprint or enter password to unlock +- 驗證聲紋或輸入密碼以解鎖 ++ 驗證聲紋或輸入密碼以解鎖 + + +- + Verify finger vein or enter password to unlock +- 驗證指靜脈或輸入密碼解鎖 ++ 驗證指靜脈或輸入密碼解鎖 + + +- + Verify iris or enter password to unlock +- 驗證虹膜或輸入密碼解鎖 ++ 驗證虹膜或輸入密碼解鎖 + + +- ++ ++ ++ Facial recognition to unlock ++ 識別人臉解鎖 ++ ++ ++ ++ Fingerprint recognition to unlock ++ 識別指紋解鎖 ++ ++ ++ ++ Voiceprint recognition to unlock ++ 識別聲紋解鎖 ++ ++ ++ ++ Finger vein recognition to unlock ++ 識別指靜脈解鎖 ++ ++ ++ ++ Iris recognition to unlock ++ 識別虹膜解鎖 ++ ++ ++ ++ Use the bound wechat scanning code to unlock ++ 微信掃碼解鎖 ++ ++ ++ + Password: + 密码: + + +- ++ + Input Password + 輸入密碼 + + +- ++ + Username + 使用者名 + + +- ++ + User name input error! + 使用者名输入错误! + + +- ++ + login + 登录 + + +- +- +- +- ++ ++ ++ ++ + Failed to verify %1, please enter password to unlock + 驗證 %1 失敗,請輸入密碼進行解鎖 + + +- +- +- +- +- ++ ++ ++ ++ ++ + Unable to verify %1, please enter password to unlock + 無法驗證 %1,請輸入密碼進行解鎖 + + +- ++ + Abnormal network + 網路異常 + + +- ++ + Face recognition waiting time out, please click refresh or enter the password to unlock. + 人臉識別等待超時,請點擊刷新或輸入密碼解鎖 + + +- ++ + FingerPrint + 指紋 + + +- ++ + FingerVein + 指靜脈 + + +- ++ + Iris + 虹膜 + + +- ++ + Face + 人臉 + + +- ++ + VoicePrint + 聲紋 + + +- +- ++ ++ + Ukey + 安全金鑰 + + +- +- ++ ++ + QRCode + 微信掃碼 + + +- ++ + fingerprint + 指紋 + + +- ++ + fingervein + 指靜脈 + + +- ++ + iris + 虹膜 + + +- ++ + face + 人臉 + + +- ++ + voiceprint + 聲紋 + +@@ -217,7 +242,7 @@ + 使用绑定的微信扫码或输入密码登录 + + +- ++ + Password cannot be empty + 密碼不能為空 + +@@ -230,8 +255,8 @@ + 无法验证%1,请输入密码. + + +- +- ++ ++ + Failed to verify %1, you still have %2 verification opportunities + 驗證 %1 失敗,您仍有 %2 次驗證機會 + +@@ -260,15 +285,14 @@ + 请输入密码或者录入指纹 + + +- +- ++ ++ + Authentication failure, Please try again + 身份驗證失敗,請重試 + + +- + Use the bound wechat scanning code or enter the password to unlock +- 使用綁定的微信掃碼或輸入密碼解鎖 ++ 使用綁定的微信掃碼或輸入密碼解鎖 + + + Enter the ukey password +@@ -283,8 +307,8 @@ + 密碼 + + +- +- ++ ++ + Login + 登錄 + +@@ -1692,7 +1716,7 @@ + + IconEdit + +- ++ + OK + 提交 + +@@ -2086,53 +2110,53 @@ + + LoginOptionsWidget + +- +- ++ ++ + Login Options + 登錄選項 + + +- ++ + Password + 密碼 + + +- ++ + Other + 其他 + + +- ++ + FingerPrint + 指紋 + + +- ++ + FingerVein + 指靜脈 + + +- ++ + Iris + 虹膜 + + +- ++ + Face + 人臉 + + +- ++ + VoicePrint + 聲紋 + + +- ++ + Ukey + 安全金鑰 + + +- ++ + QRCode + 微信掃碼 + +@@ -2141,7 +2165,7 @@ + 微信 + + +- ++ + Identify device removed! + 識別已刪除的設備! + +diff --git a/src/assets.qrc b/src/assets.qrc +index c819269..ce5d943 100644 +--- a/src/assets.qrc ++++ b/src/assets.qrc +@@ -128,6 +128,53 @@ + assets/logout.svg + assets/lockscreen.svg + assets/fengmian.png ++ assets/biowaiting/iris0.svg ++ assets/biowaiting/iris1.svg ++ assets/biowaiting/iris2.svg ++ assets/biowaiting/iris3.svg ++ assets/biowaiting/iris4.svg ++ assets/biowaiting/iris5.svg ++ assets/biowaiting/iris6.svg ++ assets/biowaiting/iris7.svg ++ assets/biowaiting/iris8.svg ++ assets/biowaiting/iris9.svg ++ assets/biowaiting/iris10.svg ++ assets/biowaiting/iris11.svg ++ assets/biowaiting/fingervein0.svg ++ assets/biowaiting/fingervein1.svg ++ assets/biowaiting/fingervein2.svg ++ assets/biowaiting/fingervein3.svg ++ assets/biowaiting/fingervein4.svg ++ assets/biowaiting/fingervein5.svg ++ assets/biowaiting/fingervein6.svg ++ assets/biowaiting/fingervein7.svg ++ assets/biowaiting/fingervein8.svg ++ assets/biowaiting/fingervein9.svg ++ assets/biowaiting/fingervein10.svg ++ assets/biowaiting/fingervein11.svg ++ assets/biowaiting/voiceprint0.svg ++ assets/biowaiting/voiceprint1.svg ++ assets/biowaiting/voiceprint2.svg ++ assets/biowaiting/voiceprint3.svg ++ assets/biowaiting/fingerprint0.svg ++ assets/biowaiting/fingerprint1.svg ++ assets/biowaiting/fingerprint2.svg ++ assets/biowaiting/fingerprint3.svg ++ assets/biowaiting/fingerprint4.svg ++ assets/biowaiting/fingerprint5.svg ++ assets/biowaiting/fingerprint6.svg ++ assets/biowaiting/fingerprint7.svg ++ assets/biowaiting/fingerprint8.svg ++ assets/biowaiting/fingerprint9.svg ++ assets/biowaiting/fingerprint10.svg ++ assets/biowaiting/fingerprint11.svg ++ assets/biowaiting/fingerprint12.svg ++ assets/biowaiting/fingerprint13.svg ++ assets/biowaiting/fingerprint14.svg ++ assets/biowaiting/voiceprint4.svg ++ assets/biowaiting/voiceprint5.svg ++ assets/biowaiting/voiceprint6.svg ++ assets/biowaiting/voiceprint7.svg + + + assets/data/conf.ini +diff --git a/src/assets/biowaiting/fingerprint0.svg b/src/assets/biowaiting/fingerprint0.svg +new file mode 100644 +index 0000000..a5e84bd +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint0.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint1.svg b/src/assets/biowaiting/fingerprint1.svg +new file mode 100644 +index 0000000..0856372 +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint1.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint10.svg b/src/assets/biowaiting/fingerprint10.svg +new file mode 100644 +index 0000000..315aaf0 +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint10.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint11.svg b/src/assets/biowaiting/fingerprint11.svg +new file mode 100644 +index 0000000..73ab76d +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint11.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint12.svg b/src/assets/biowaiting/fingerprint12.svg +new file mode 100644 +index 0000000..2b0c41e +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint12.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint13.svg b/src/assets/biowaiting/fingerprint13.svg +new file mode 100644 +index 0000000..9f37f06 +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint13.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint14.svg b/src/assets/biowaiting/fingerprint14.svg +new file mode 100644 +index 0000000..c3c6675 +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint14.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint2.svg b/src/assets/biowaiting/fingerprint2.svg +new file mode 100644 +index 0000000..ce0a21b +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint2.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint3.svg b/src/assets/biowaiting/fingerprint3.svg +new file mode 100644 +index 0000000..3ff19ba +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint3.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint4.svg b/src/assets/biowaiting/fingerprint4.svg +new file mode 100644 +index 0000000..c3c80d4 +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint4.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint5.svg b/src/assets/biowaiting/fingerprint5.svg +new file mode 100644 +index 0000000..fdec768 +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint5.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint6.svg b/src/assets/biowaiting/fingerprint6.svg +new file mode 100644 +index 0000000..e682cb6 +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint6.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint7.svg b/src/assets/biowaiting/fingerprint7.svg +new file mode 100644 +index 0000000..b63d893 +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint7.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint8.svg b/src/assets/biowaiting/fingerprint8.svg +new file mode 100644 +index 0000000..a9023c0 +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint8.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingerprint9.svg b/src/assets/biowaiting/fingerprint9.svg +new file mode 100644 +index 0000000..4c0be88 +--- /dev/null ++++ b/src/assets/biowaiting/fingerprint9.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingervein0.svg b/src/assets/biowaiting/fingervein0.svg +new file mode 100644 +index 0000000..746aba7 +--- /dev/null ++++ b/src/assets/biowaiting/fingervein0.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingervein1.svg b/src/assets/biowaiting/fingervein1.svg +new file mode 100644 +index 0000000..cda8446 +--- /dev/null ++++ b/src/assets/biowaiting/fingervein1.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingervein10.svg b/src/assets/biowaiting/fingervein10.svg +new file mode 100644 +index 0000000..ecc78f5 +--- /dev/null ++++ b/src/assets/biowaiting/fingervein10.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingervein11.svg b/src/assets/biowaiting/fingervein11.svg +new file mode 100644 +index 0000000..478d000 +--- /dev/null ++++ b/src/assets/biowaiting/fingervein11.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingervein2.svg b/src/assets/biowaiting/fingervein2.svg +new file mode 100644 +index 0000000..b04c496 +--- /dev/null ++++ b/src/assets/biowaiting/fingervein2.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingervein3.svg b/src/assets/biowaiting/fingervein3.svg +new file mode 100644 +index 0000000..7217db0 +--- /dev/null ++++ b/src/assets/biowaiting/fingervein3.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingervein4.svg b/src/assets/biowaiting/fingervein4.svg +new file mode 100644 +index 0000000..92d47ea +--- /dev/null ++++ b/src/assets/biowaiting/fingervein4.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingervein5.svg b/src/assets/biowaiting/fingervein5.svg +new file mode 100644 +index 0000000..7f53c6c +--- /dev/null ++++ b/src/assets/biowaiting/fingervein5.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingervein6.svg b/src/assets/biowaiting/fingervein6.svg +new file mode 100644 +index 0000000..4a6776e +--- /dev/null ++++ b/src/assets/biowaiting/fingervein6.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingervein7.svg b/src/assets/biowaiting/fingervein7.svg +new file mode 100644 +index 0000000..f7adf46 +--- /dev/null ++++ b/src/assets/biowaiting/fingervein7.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingervein8.svg b/src/assets/biowaiting/fingervein8.svg +new file mode 100644 +index 0000000..1ea6843 +--- /dev/null ++++ b/src/assets/biowaiting/fingervein8.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/fingervein9.svg b/src/assets/biowaiting/fingervein9.svg +new file mode 100644 +index 0000000..6e00868 +--- /dev/null ++++ b/src/assets/biowaiting/fingervein9.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/iris0.svg b/src/assets/biowaiting/iris0.svg +new file mode 100644 +index 0000000..6fb8a60 +--- /dev/null ++++ b/src/assets/biowaiting/iris0.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/iris1.svg b/src/assets/biowaiting/iris1.svg +new file mode 100644 +index 0000000..052eefb +--- /dev/null ++++ b/src/assets/biowaiting/iris1.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/iris10.svg b/src/assets/biowaiting/iris10.svg +new file mode 100644 +index 0000000..0df7826 +--- /dev/null ++++ b/src/assets/biowaiting/iris10.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/iris11.svg b/src/assets/biowaiting/iris11.svg +new file mode 100644 +index 0000000..8ab52bd +--- /dev/null ++++ b/src/assets/biowaiting/iris11.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/iris2.svg b/src/assets/biowaiting/iris2.svg +new file mode 100644 +index 0000000..68c4479 +--- /dev/null ++++ b/src/assets/biowaiting/iris2.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/iris3.svg b/src/assets/biowaiting/iris3.svg +new file mode 100644 +index 0000000..b750b2e +--- /dev/null ++++ b/src/assets/biowaiting/iris3.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/iris4.svg b/src/assets/biowaiting/iris4.svg +new file mode 100644 +index 0000000..141450c +--- /dev/null ++++ b/src/assets/biowaiting/iris4.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/iris5.svg b/src/assets/biowaiting/iris5.svg +new file mode 100644 +index 0000000..e879021 +--- /dev/null ++++ b/src/assets/biowaiting/iris5.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/iris6.svg b/src/assets/biowaiting/iris6.svg +new file mode 100644 +index 0000000..f4e971d +--- /dev/null ++++ b/src/assets/biowaiting/iris6.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/iris7.svg b/src/assets/biowaiting/iris7.svg +new file mode 100644 +index 0000000..9cf5557 +--- /dev/null ++++ b/src/assets/biowaiting/iris7.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/iris8.svg b/src/assets/biowaiting/iris8.svg +new file mode 100644 +index 0000000..551dddd +--- /dev/null ++++ b/src/assets/biowaiting/iris8.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/iris9.svg b/src/assets/biowaiting/iris9.svg +new file mode 100644 +index 0000000..4304442 +--- /dev/null ++++ b/src/assets/biowaiting/iris9.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/voiceprint0.svg b/src/assets/biowaiting/voiceprint0.svg +new file mode 100644 +index 0000000..73e5a92 +--- /dev/null ++++ b/src/assets/biowaiting/voiceprint0.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/voiceprint1.svg b/src/assets/biowaiting/voiceprint1.svg +new file mode 100644 +index 0000000..083798e +--- /dev/null ++++ b/src/assets/biowaiting/voiceprint1.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/voiceprint2.svg b/src/assets/biowaiting/voiceprint2.svg +new file mode 100644 +index 0000000..16883e1 +--- /dev/null ++++ b/src/assets/biowaiting/voiceprint2.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/voiceprint3.svg b/src/assets/biowaiting/voiceprint3.svg +new file mode 100644 +index 0000000..509ceae +--- /dev/null ++++ b/src/assets/biowaiting/voiceprint3.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/voiceprint4.svg b/src/assets/biowaiting/voiceprint4.svg +new file mode 100644 +index 0000000..5208d79 +--- /dev/null ++++ b/src/assets/biowaiting/voiceprint4.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/voiceprint5.svg b/src/assets/biowaiting/voiceprint5.svg +new file mode 100644 +index 0000000..19be4b0 +--- /dev/null ++++ b/src/assets/biowaiting/voiceprint5.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/voiceprint6.svg b/src/assets/biowaiting/voiceprint6.svg +new file mode 100644 +index 0000000..9304c58 +--- /dev/null ++++ b/src/assets/biowaiting/voiceprint6.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/assets/biowaiting/voiceprint7.svg b/src/assets/biowaiting/voiceprint7.svg +new file mode 100644 +index 0000000..dc96601 +--- /dev/null ++++ b/src/assets/biowaiting/voiceprint7.svg +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/src/common/commonfunc.cpp b/src/common/commonfunc.cpp +index ee17304..88e1571 100644 +--- a/src/common/commonfunc.cpp ++++ b/src/common/commonfunc.cpp +@@ -67,6 +67,21 @@ QPixmap scaledPixmap(QPixmap src) + return rectPixmap; + } + ++QPixmap scaledSmoothPixmap(const QPixmap &src, int nWidth, int nHeight) ++{ ++ if (src.isNull()) { ++ return QPixmap(); ++ } ++ ++ QPixmap pixmapa(src); ++ QPixmap pixmap(nWidth, nHeight); ++ pixmap.fill(Qt::transparent); ++ QPainter painter(&pixmap); ++ painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); ++ painter.drawPixmap(0, 0, nWidth, nHeight, pixmapa); ++ return pixmap; ++} ++ + QPixmap PixmapToRound(const QPixmap &src, int radius) + { + if (src.isNull()) { +@@ -98,13 +113,16 @@ QPixmap PixmapToRound(const QPixmap &src, int leftTop, int rightTop, int leftBot + + QPainterPath path; + path.moveTo(leftTop, 0); +- path.arcTo(QRect(0, 0, 2*leftTop, 2*leftTop), 90, 90); ++ path.arcTo(QRect(0, 0, 2 * leftTop, 2 * leftTop), 90, 90); + path.lineTo(0, src.height() - leftBottom); +- path.arcTo(QRect(0, src.height() - 2*leftBottom, 2*leftBottom, 2*leftBottom), 180, 90); ++ path.arcTo(QRect(0, src.height() - 2 * leftBottom, 2 * leftBottom, 2 * leftBottom), 180, 90); + path.lineTo(src.width() - rightBottom, src.height()); +- path.arcTo(QRect(src.width() - 2*rightBottom, src.height() - 2*rightBottom, 2*rightBottom, 2*rightBottom), 270, 90); ++ path.arcTo( ++ QRect(src.width() - 2 * rightBottom, src.height() - 2 * rightBottom, 2 * rightBottom, 2 * rightBottom), ++ 270, ++ 90); + path.lineTo(src.width(), rightTop); +- path.arcTo(QRect(src.width() - 2*rightTop, 0, 2*rightTop, 2*rightTop), 0, 90); ++ path.arcTo(QRect(src.width() - 2 * rightTop, 0, 2 * rightTop, 2 * rightTop), 0, 90); + path.closeSubpath(); + + painter.setClipPath(path); +@@ -199,8 +217,8 @@ QPixmap blurPixmap(QPixmap pixmap) + QImage srcImg = pixmap.toImage(); + qt_blurImage(&painter, srcImg, BLUR_RADIUS, false, false); + +- //在设置Qt::WA_TranslucentBackground属性后,模糊图片会导致锁屏界面透明 +- //因此这里修改image图形的alpha值为255. ++ // 在设置Qt::WA_TranslucentBackground属性后,模糊图片会导致锁屏界面透明 ++ // 因此这里修改image图形的alpha值为255. + for (int y = 0; y < srcImg.height(); ++y) { + QRgb *row = (QRgb *)srcImg.scanLine(y); + for (int x = 0; x < srcImg.width(); ++x) { +diff --git a/src/common/commonfunc.h b/src/common/commonfunc.h +index 1524751..0fcb00f 100644 +--- a/src/common/commonfunc.h ++++ b/src/common/commonfunc.h +@@ -39,4 +39,6 @@ QPixmap blurPixmap(QPixmap pixmap); + + QPixmap scaleBlurPixmap(int width, int height, QString url); + ++QPixmap scaledSmoothPixmap(const QPixmap &src, int nWidth, int nHeight); ++ + #endif // COMMONFUNC_H +diff --git a/src/widgets/authdialog.cpp b/src/widgets/authdialog.cpp +index e831004..6967dcc 100644 +--- a/src/widgets/authdialog.cpp ++++ b/src/widgets/authdialog.cpp +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + #include "definetypes.h" + #include + #include +@@ -67,6 +68,9 @@ void AuthDialog::initUI() + m_curFontSize = m_modelLockDialog->getCurFontSize(); + m_ptToPx = m_modelLockDialog->getPtToPx(); + ++ // 生物认证空占位 ++ m_widgetPlaceholder = new QWidget(this); ++ m_widgetPlaceholder->hide(); + // 生物认证提示 + m_tipWidget = new QWidget(this); + +@@ -89,6 +93,7 @@ void AuthDialog::initUI() + m_widgetLoginOpts = new QWidget(this); + + mainLayout->addStretch(); ++ mainLayout->addWidget(m_widgetPlaceholder); + mainLayout->addWidget(m_tipWidget); + mainLayout->addWidget(m_headerWidget); + mainLayout->addWidget(m_nameWidget); +@@ -163,6 +168,9 @@ void AuthDialog::updateAuthSize() + m_nameWidget->setFixedSize(this->width(), WIDGET_HEIGHT_USERNAME); + if (m_editWidget) + m_editWidget->setFixedSize(this->width(), WIDGET_HEIGHT_PASSWDEDIT); ++ if (m_widgetPlaceholder) { ++ m_widgetPlaceholder->setFixedSize(this->width(), WIDGET_HEIGHT_PASSWDEDIT); ++ } + if (m_ukeyPasswdWidget) + m_ukeyPasswdWidget->setFixedSize(this->width(), WIDGET_HEIGHT_PASSWDEDIT); + +@@ -178,7 +186,8 @@ void AuthDialog::updateAuthSize() + + if (m_labelLoginTypeTip) { + m_labelLoginTypeTip->setFixedSize(m_tipWidget->size()); +- m_labelLoginTypeTip->setFontSize((14 + m_curFontSize) * m_ptToPx); ++ m_labelLoginTypeTip->setFontSize((26 + m_curFontSize) * m_ptToPx); ++ m_labelLoginTypeTip->setFontWeight(QFont::Medium); + } + if (m_labelHeadImg) + m_labelHeadImg->setFixedSize(WIDGET_HEIGHT_HEADIMAGE, WIDGET_HEIGHT_HEADIMAGE); +@@ -203,6 +212,9 @@ void AuthDialog::updateAuthSize() + m_labelQRCodeMsg->setFixedHeight(30 * scale); + m_labelQRCodeMsg->setFontSize((14 + m_curFontSize) * m_ptToPx); + } ++ if (m_labelBioWaiting) { ++ m_labelBioWaiting->setFixedSize(WIDGET_HEIGHT_HEADIMAGE, WIDGET_HEIGHT_HEADIMAGE); ++ } + if (m_nameLabel) { + m_nameLabel->setFixedSize(this->width(), WIDGET_HEIGHT_USERNAME); + m_nameLabel->setFontSize((24 + m_curFontSize) * m_ptToPx); +@@ -266,7 +278,7 @@ void AuthDialog::updateAuthFont(QString fontFamily) + void AuthDialog::updateAuthFontSize(double fontSize) + { + if (m_labelLoginTypeTip) { +- m_labelLoginTypeTip->setFontSize((14 + fontSize) * m_ptToPx); ++ m_labelLoginTypeTip->setFontSize((26 + fontSize) * m_ptToPx); + } + if (m_ukeyMessageLabel) { + m_ukeyMessageLabel->setFontSize((14 + fontSize) * m_ptToPx); +@@ -312,6 +324,11 @@ void AuthDialog::initHeaderWidget() + headerLayout->addWidget(m_labelFace); + m_labelFace->hide(); + ++ // 生物特征等待验证动画 ++ m_labelBioWaiting = new QLabel(m_headerWidget); ++ headerLayout->addWidget(m_labelBioWaiting); ++ m_labelBioWaiting->hide(); ++ + // 人脸识别重试 + m_fRetryButton = new QPushButton(m_headerWidget); + m_fRetryButton->setFocusPolicy(Qt::NoFocus); +@@ -537,11 +554,14 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked) + case LOGINOPT_TYPE_PASSWORD: { + m_tipWidget->show(); + m_editWidget->show(); ++ m_widgetPlaceholder->hide(); + m_headerWidget->show(); + m_nameWidget->show(); + m_labelHeadImg->show(); + m_labelQRCode->hide(); + m_labelFace->hide(); ++ m_labelBioWaiting->hide(); ++ stopBioWaiting(); + m_fRetryButton->hide(); + m_ukeyPasswdWidget->hide(); + m_ukeyPasswordEdit->clearFocus(); +@@ -550,12 +570,15 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked) + } break; + case LOGINOPT_TYPE_FACE: { + m_tipWidget->show(); +- m_editWidget->show(); ++ m_editWidget->hide(); ++ m_widgetPlaceholder->show(); + m_headerWidget->show(); + m_nameWidget->show(); + m_labelHeadImg->hide(); + m_labelQRCode->hide(); + m_labelFace->show(); ++ m_labelBioWaiting->hide(); ++ stopBioWaiting(); + m_fRetryButton->hide(); + m_ukeyPasswdWidget->hide(); + m_ukeyPasswordEdit->clearFocus(); +@@ -570,12 +593,15 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked) + case LOGINOPT_TYPE_FINGERVEIN: + case LOGINOPT_TYPE_IRIS: { + m_tipWidget->show(); +- m_editWidget->show(); ++ m_editWidget->hide(); ++ m_widgetPlaceholder->show(); + m_headerWidget->show(); + m_nameWidget->show(); +- m_labelHeadImg->show(); ++ m_labelHeadImg->hide(); + m_labelQRCode->hide(); + m_labelFace->hide(); ++ m_labelBioWaiting->show(); ++ startBioWaiting(uLoginOptType); + m_fRetryButton->hide(); + m_ukeyPasswdWidget->hide(); + m_ukeyPasswordEdit->clearFocus(); +@@ -584,13 +610,16 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked) + } break; + case LOGINOPT_TYPE_QRCODE: { + m_tipWidget->show(); +- m_editWidget->show(); ++ m_editWidget->hide(); ++ m_widgetPlaceholder->show(); + m_headerWidget->show(); + m_nameWidget->show(); + m_labelHeadImg->hide(); + setQRCodeMsg(""); + m_labelQRCode->show(); + m_labelFace->hide(); ++ m_labelBioWaiting->hide(); ++ stopBioWaiting(); + m_fRetryButton->hide(); + m_ukeyPasswdWidget->hide(); + m_ukeyPasswordEdit->clearFocus(); +@@ -600,11 +629,14 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked) + case LOGINOPT_TYPE_GENERAL_UKEY: { + m_tipWidget->show(); + m_editWidget->show(); ++ m_widgetPlaceholder->hide(); + m_headerWidget->show(); + m_nameWidget->show(); + m_labelHeadImg->show(); + m_labelQRCode->hide(); + m_labelFace->hide(); ++ m_labelBioWaiting->hide(); ++ stopBioWaiting(); + m_fRetryButton->hide(); + m_customWidget->hide(); + m_ukeyPasswdWidget->show(); +@@ -616,8 +648,10 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked) + case LOGINOPT_TYPE_CUSTOM: { + m_tipWidget->hide(); + m_editWidget->hide(); ++ m_widgetPlaceholder->hide(); + m_headerWidget->hide(); + m_nameWidget->hide(); ++ stopBioWaiting(); + setQRCodeMsg(""); + m_ukeyPasswdWidget->hide(); + m_ukeyPasswordEdit->clearFocus(); +@@ -658,22 +692,22 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked) + setLoginTypeTip(""); + } break; + case LOGINOPT_TYPE_FACE: { +- setLoginTypeTip(tr("Verify face recognition or enter password to unlock")); ++ setLoginTypeTip(tr("Facial recognition to unlock")); + } break; + case LOGINOPT_TYPE_FINGERPRINT: { +- setLoginTypeTip(tr("Press fingerprint or enter password to unlock")); ++ setLoginTypeTip(tr("Fingerprint recognition to unlock")); + } break; + case LOGINOPT_TYPE_VOICEPRINT: { +- setLoginTypeTip(tr("Verify voiceprint or enter password to unlock")); ++ setLoginTypeTip(tr("Voiceprint recognition to unlock")); + } break; + case LOGINOPT_TYPE_FINGERVEIN: { +- setLoginTypeTip(tr("Verify finger vein or enter password to unlock")); ++ setLoginTypeTip(tr("Finger vein recognition to unlock")); + } break; + case LOGINOPT_TYPE_IRIS: { +- setLoginTypeTip(tr("Verify iris or enter password to unlock")); ++ setLoginTypeTip(tr("Iris recognition to unlock")); + } break; + case LOGINOPT_TYPE_QRCODE: { +- setLoginTypeTip(tr("Use the bound wechat scanning code or enter the password to unlock")); ++ setLoginTypeTip(tr("Use the bound wechat scanning code to unlock")); + } break; + case LOGINOPT_TYPE_GENERAL_UKEY: { + setLoginTypeTip(""); +@@ -686,7 +720,7 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked) + } + } else if (uLoginOptType == m_uCurLoginOptType && uLoginOptType == LOGINOPT_TYPE_FACE && !faceBtnClicked) { + clearMessage(); +- setLoginTypeTip(tr("Verify face recognition or enter password to unlock")); ++ setLoginTypeTip(tr("Facial recognition to unlock")); + } + if (m_deviceInfo) { + m_nLastDeviceId = m_deviceInfo->id; +@@ -974,6 +1008,9 @@ void AuthDialog::onPamShowPrompt(QString strPrompt, int nType) + m_timerUserUnlock->start(); + } + } ++ if (!m_isInhibitShow) { ++ show(); ++ } + } + + void AuthDialog::onPamAuthCompleted() +@@ -981,6 +1018,7 @@ void AuthDialog::onPamAuthCompleted() + if (m_curUserInfo->name().isEmpty()) + return; + m_passwordEdit->stopWaiting(); ++ stopBioWaiting(); + bool isAuthenticated = (Q_EMIT m_modelLockDialog->pamIsAuthenticated()); + qDebug() << "onPamAuthCompleted:" << isAuthenticated << m_curUserInfo->name(); + if (isAuthenticated) { +@@ -1165,6 +1203,7 @@ void AuthDialog::onCurUserChanged(UserInfoPtr userInfo) + void AuthDialog::showAuthenticated(bool successful /* = true*/) + { + m_editWidget->show(); ++ m_widgetPlaceholder->hide(); + m_passwordEdit->hide(); + m_messageButton->show(); + m_messageButton->setDefault(true); +@@ -1492,6 +1531,7 @@ void AuthDialog::performBiometricAuth() + QImage imgFailed; + setFaceImg(imgFailed, 1); + } ++ stopBioWaiting(true); + } + m_loginOpts->setDeviceDisable(m_deviceInfo->id, true); + // skipBiometricAuth(); +@@ -1642,6 +1682,7 @@ void AuthDialog::onLoginOptsCount(unsigned uCount) + QImage imgFailed; + setFaceImg(imgFailed, 1); + } ++ stopBioWaiting(true); + } + m_loginOpts->setDeviceDisable(m_deviceInfo->id, true); + return; +@@ -1787,6 +1828,7 @@ void AuthDialog::onBiometricAuthComplete(bool result, int nStatus) + } else { + setLoginTypeTip(tr("Unable to verify %1, please enter password to unlock") + .arg(getDeviceType_lowerTr(m_deviceInfo->deviceType))); ++ stopBioWaiting(true); + } + if (m_loginOpts) + m_loginOpts->setDeviceDisable(m_deviceInfo->id, true); +@@ -2124,3 +2166,157 @@ QString AuthDialog::getDeviceType_lowerTr(int deviceType) + return ""; + } + } ++ ++void AuthDialog::startBioWaiting(unsigned uCurLoginOptType) ++{ ++ if (uCurLoginOptType == m_nCurBioWaitingType ++ || (uCurLoginOptType != LOGINOPT_TYPE_FINGERPRINT && uCurLoginOptType != LOGINOPT_TYPE_FINGERVEIN ++ && uCurLoginOptType != LOGINOPT_TYPE_IRIS && uCurLoginOptType != LOGINOPT_TYPE_VOICEPRINT)) { ++ return; ++ } ++ m_nCurBioWaitingType = uCurLoginOptType; ++ if (!m_timerBioWaiting) { ++ m_timerBioWaiting = new QTimer(this); ++ m_timerBioWaiting->setInterval(100); ++ } ++ if (m_timerBioWaiting) { ++ if (m_timerBioWaiting->isActive()) { ++ m_timerBioWaiting->stop(); ++ } ++ // 重新连接信号槽 ++ disconnect(m_timerBioWaiting, nullptr, this, nullptr); ++ connect(m_timerBioWaiting, &QTimer::timeout, this, [&, this, uCurLoginOptType]() { ++ m_nBioWaitingFrame += 1; ++ QString strPicName = ""; ++ switch (uCurLoginOptType) { ++ case LOGINOPT_TYPE_FINGERPRINT: { ++ if (m_nBioWaitingFrame >= 15) { ++ m_nBioWaitingFrame = 0; ++ } ++ strPicName = QString(":/image/assets/biowaiting/fingerprint%1.svg").arg(m_nBioWaitingFrame); ++ } break; ++ case LOGINOPT_TYPE_FINGERVEIN: { ++ if (m_nBioWaitingFrame >= 12) { ++ m_nBioWaitingFrame = 0; ++ } ++ strPicName = QString(":/image/assets/biowaiting/fingervein%1.svg").arg(m_nBioWaitingFrame); ++ } break; ++ case LOGINOPT_TYPE_IRIS: { ++ if (m_nBioWaitingFrame >= 12) { ++ m_nBioWaitingFrame = 0; ++ } ++ strPicName = QString(":/image/assets/biowaiting/iris%1.svg").arg(m_nBioWaitingFrame); ++ } break; ++ case LOGINOPT_TYPE_VOICEPRINT: { ++ if (m_nBioWaitingFrame >= 8) { ++ m_nBioWaitingFrame = 0; ++ } ++ strPicName = QString(":/image/assets/biowaiting/voiceprint%1.svg").arg(m_nBioWaitingFrame); ++ } break; ++ default: ++ break; ++ } ++ if (!strPicName.isEmpty()) { ++ QPixmap pixmap; ++ if (QPixmapCache::find(strPicName, &pixmap)) { ++ m_labelBioWaiting->setPixmap(pixmap); ++ } else { ++ pixmap = scaledSmoothPixmap(QPixmap(strPicName), WIDGET_HEIGHT_HEADIMAGE, WIDGET_HEIGHT_HEADIMAGE); ++ if (!pixmap.isNull()) { ++ QPixmapCache::insert(strPicName, pixmap); ++ m_labelBioWaiting->setPixmap(pixmap); ++ } ++ } ++ } ++ }); ++ m_timerBioWaiting->start(); ++ m_nBioWaitingFrame = 0; ++ QString strPicName = ""; ++ switch (uCurLoginOptType) { ++ case LOGINOPT_TYPE_FINGERPRINT: { ++ strPicName = QString(":/image/assets/biowaiting/fingerprint%1.svg").arg(m_nBioWaitingFrame); ++ } break; ++ case LOGINOPT_TYPE_FINGERVEIN: { ++ strPicName = QString(":/image/assets/biowaiting/fingervein%1.svg").arg(m_nBioWaitingFrame); ++ } break; ++ case LOGINOPT_TYPE_IRIS: { ++ strPicName = QString(":/image/assets/biowaiting/iris%1.svg").arg(m_nBioWaitingFrame); ++ } break; ++ case LOGINOPT_TYPE_VOICEPRINT: { ++ strPicName = QString(":/image/assets/biowaiting/voiceprint%1.svg").arg(m_nBioWaitingFrame); ++ } break; ++ default: ++ break; ++ } ++ if (!strPicName.isEmpty()) { ++ QPixmap pixmap; ++ if (QPixmapCache::find(strPicName, &pixmap)) { ++ m_labelBioWaiting->setPixmap(pixmap); ++ } else { ++ pixmap = scaledSmoothPixmap(QPixmap(strPicName), WIDGET_HEIGHT_HEADIMAGE, WIDGET_HEIGHT_HEADIMAGE); ++ if (!pixmap.isNull()) { ++ QPixmapCache::insert(strPicName, pixmap); ++ m_labelBioWaiting->setPixmap(pixmap); ++ } ++ } ++ } ++ } ++} ++ ++void AuthDialog::stopBioWaiting(bool isDisable /* = false*/) ++{ ++ if (m_timerBioWaiting) { ++ if (m_timerBioWaiting->isActive()) { ++ m_timerBioWaiting->stop(); ++ } ++ } ++ m_nBioWaitingFrame = 0; ++ if (isDisable) { ++ QString strPicName = ""; ++ switch (m_nCurBioWaitingType) { ++ case LOGINOPT_TYPE_FINGERPRINT: { ++ strPicName = QString(":/image/assets/biowaiting/fingerprint%1.svg").arg(m_nBioWaitingFrame); ++ } break; ++ case LOGINOPT_TYPE_FINGERVEIN: { ++ strPicName = QString(":/image/assets/biowaiting/fingervein%1.svg").arg(m_nBioWaitingFrame); ++ } break; ++ case LOGINOPT_TYPE_IRIS: { ++ strPicName = QString(":/image/assets/biowaiting/iris%1.svg").arg(m_nBioWaitingFrame); ++ } break; ++ case LOGINOPT_TYPE_VOICEPRINT: { ++ strPicName = QString(":/image/assets/biowaiting/voiceprint%1.svg").arg(m_nBioWaitingFrame); ++ } break; ++ default: ++ break; ++ } ++ if (!strPicName.isEmpty()) { ++ QPixmap pixmap; ++ if (QPixmapCache::find(strPicName, &pixmap)) { ++ m_labelBioWaiting->setPixmap(pixmap); ++ } else { ++ pixmap = scaledSmoothPixmap(QPixmap(strPicName), WIDGET_HEIGHT_HEADIMAGE, WIDGET_HEIGHT_HEADIMAGE); ++ if (!pixmap.isNull()) { ++ QPixmapCache::insert(strPicName, pixmap); ++ m_labelBioWaiting->setPixmap(pixmap); ++ } ++ } ++ } ++ } ++ m_nCurBioWaitingType = -1; ++} ++ ++void AuthDialog::inhibitShow(bool isInhibit) ++{ ++ if (m_isInhibitShow != isInhibit) { ++ if (!isInhibit) { ++ if (isHidden() || !isVisible()) { ++ show(); ++ } ++ } else { ++ if (!isHidden() || isVisible()) { ++ hide(); ++ } ++ } ++ m_isInhibitShow = isInhibit; ++ } ++} +diff --git a/src/widgets/authdialog.h b/src/widgets/authdialog.h +index 60cf629..679c565 100644 +--- a/src/widgets/authdialog.h ++++ b/src/widgets/authdialog.h +@@ -73,6 +73,8 @@ public: + + void updateAuthFontSize(double fontSize); + ++ void inhibitShow(bool isInhibit); ++ + private Q_SLOTS: + void onPamShowMessage(QString strMsg, int nType); + void onPamShowPrompt(QString strPrompt, int nType); +@@ -174,6 +176,9 @@ private: + //一键开机认证函数 + void startFirstLogin(); + ++ void startBioWaiting(unsigned uCurLoginOptType); ++ void stopBioWaiting(bool isDisable = false); ++ + private: + LockDialogModel *m_modelLockDialog = nullptr; + +@@ -204,6 +209,12 @@ private: + KLabel *m_labelQRCodeMsg = nullptr; // 二维码状态消息提示 + QLabel *m_labelQRCodeTip = nullptr; + QPushButton *m_fRetryButton = nullptr; //人脸识别重试按钮 ++ // 指纹、指静脉、虹膜、声纹识别动图 ++ QLabel *m_labelBioWaiting = nullptr; // 指纹、指静脉、虹膜、声纹识别动图提示 ++ QTimer *m_timerBioWaiting = nullptr; // 指纹、指静脉、虹膜、声纹识别动图切换定时器 ++ int m_nBioWaitingFrame = 0; // 当前显示的动图帧 ++ int m_nCurBioWaitingType = -1; // 当前显示的动图类型 ++ QWidget *m_widgetPlaceholder = nullptr; // 占位控件 + + QWidget *m_widgetLoginOpts = nullptr; // 登录选项 + KLabel *m_optionTip = nullptr; +@@ -284,5 +295,6 @@ private: + + QString m_strLastPamAuthName = ""; + QDateTime m_lastPamAuthTime; ++ bool m_isInhibitShow = false; + }; + #endif // AUTHDIALOG_H +diff --git a/src/widgets/klabel.cpp b/src/widgets/klabel.cpp +index 40a03a7..80e42ee 100644 +--- a/src/widgets/klabel.cpp ++++ b/src/widgets/klabel.cpp +@@ -23,9 +23,7 @@ + #include + #include + +-KLabel::KLabel(QWidget *parent) : QLabel(parent) +- , m_speed(2) +- , m_scrollOffset(0) ++KLabel::KLabel(QWidget *parent) : QLabel(parent), m_speed(2), m_scrollOffset(0) + { + setWindowFlags(Qt::FramelessWindowHint); + // m_strText = ""; +@@ -48,6 +46,12 @@ void KLabel::setFontFamily(QString &family) + this->setFont(sysFont); + } + ++void KLabel::setFontWeight(int weight) ++{ ++ sysFont.setWeight(weight); ++ this->setFont(sysFont); ++} ++ + void KLabel::setTipText(const QString &strText) + { + m_scrollOffset = 0; +@@ -77,7 +81,7 @@ QString KLabel::text() const + QString KLabel::getElidedText(QFont font, int width, QString strInfo) + { + QFontMetrics fontMetrics(font); +- //如果当前字体下,字符串长度大于指定宽度 ++ // 如果当前字体下,字符串长度大于指定宽度 + if (fontMetrics.width(strInfo) > width) { + strInfo = QFontMetrics(font).elidedText(strInfo, Qt::ElideRight, width); + } +@@ -95,9 +99,15 @@ void KLabel::paintEvent(QPaintEvent *event) + if (m_isMarqueeMode) { + QLabel::setText(""); + QPainter painter(this); +- painter.drawText(m_scrollOffset + contentsMargins().left(), rect().top(), width() - contentsMargins().left() - contentsMargins().right() - m_scrollOffset, height(), +- Qt::AlignLeft | Qt::TextSingleLine, m_strText); +- //qDebug()<<"MarqueueText:"<initMultimediaControl(); + } + } ++ } else if (event->type() == QEvent::Hide) { ++ if (obj == this) { ++ if (authDialog && !authDialog->isHidden()) { ++ authDialog->hide(); ++ } ++ } + } + + return false; +@@ -111,7 +117,7 @@ bool LockWidget::exitSubWidget(bool isForScreensaver, bool hideVirkeyboard) + { + if (m_isSessionTools) { + authDialog->setFocus(); +- authDialog->show(); ++ authDialog->inhibitShow(false); + buttonListWidget->show(); + m_timeWidget->show(); + m_powerListWidget->hide(); +@@ -137,7 +143,7 @@ bool LockWidget::exitSubWidget(bool isForScreensaver, bool hideVirkeyboard) + } + if (m_powerListWidget && m_powerListWidget->isVisible()) { + authDialog->setFocus(); +- authDialog->show(); ++ authDialog->inhibitShow(false); + if (m_widgetMediaControl) { + m_widgetMediaControl->show(); + } +@@ -339,6 +345,7 @@ void LockWidget::initUI() + + authDialog = new AuthDialog(m_modelLockDialog, m_curUserInfo, this); + authDialog->installEventFilter(this); ++ authDialog->hide(); + m_curFont = m_modelLockDialog->getCurFont(); + m_ptToPx = m_modelLockDialog->getPtToPx(); + m_curFontSize = m_modelLockDialog->getCurFontSize(); +@@ -1126,7 +1133,7 @@ void LockWidget::onShowPowerListWidget(bool issessionTools) + } + if (m_powerListWidget->isHidden()) { + m_powerListWidget->show(); +- authDialog->hide(); ++ authDialog->inhibitShow(true); + if (m_powerListWidget->getScrollShowStatus()) { // 如果显示Scroll,直接从时间窗口底部开始显示 + m_powerListWidget->move((width() - m_powerListWidget->width()) / 2, m_timeWidget->height() + 30); + } else { // 居中显示 +@@ -1143,7 +1150,7 @@ void LockWidget::onShowPowerListWidget(bool issessionTools) + } + } else { + m_powerListWidget->hide(); +- authDialog->show(); ++ authDialog->inhibitShow(false); + authDialog->setFocus(); + m_systemMonitorBtn->hide(); + buttonListWidget->show(); +@@ -1215,7 +1222,7 @@ void LockWidget::onHideVirkeyboard() + + void LockWidget::onShowInhibitWarning(QStringList list, int type, bool iscommand) + { +- authDialog->hide(); ++ authDialog->inhibitShow(true); + if (m_widgetMediaControl) { + m_widgetMediaControl->hide(); + } +@@ -1238,7 +1245,7 @@ void LockWidget::onShowInhibitWarning(QStringList list, int type, bool iscommand + + void LockWidget::onSureShutDown(int inhibitType, bool iscommand) + { +- authDialog->hide(); ++ authDialog->inhibitShow(true); + buttonListWidget->hide(); + m_timeWidget->hide(); + m_powerListWidget->hide(); +@@ -1271,7 +1278,7 @@ void LockWidget::onSureShutDown(int inhibitType, bool iscommand) + + void LockWidget::onMulUsersLogined(int inhibitType, bool iscommand) + { +- authDialog->hide(); ++ authDialog->inhibitShow(true); + if (m_widgetMediaControl) { + m_widgetMediaControl->hide(); + } +@@ -1306,7 +1313,7 @@ void LockWidget::onConfirmBtnClicked() + { + m_blockWidget->hide(); + m_powerListWidget->hide(); +- authDialog->show(); ++ authDialog->inhibitShow(false); + if (m_widgetMediaControl) { + m_widgetMediaControl->show(); + } +diff --git a/src/widgets/loginoptionswidget.cpp b/src/widgets/loginoptionswidget.cpp +index 166ae4c..1ffde12 100644 +--- a/src/widgets/loginoptionswidget.cpp ++++ b/src/widgets/loginoptionswidget.cpp +@@ -43,10 +43,8 @@ + #include + #include + +-LoginOptionsWidget::LoginOptionsWidget(BiometricHelper *bioHelper, +- int uid, +- UniAuthService *uniauthService, +- QWidget *parent) ++LoginOptionsWidget::LoginOptionsWidget( ++ BiometricHelper *bioHelper, int uid, UniAuthService *uniauthService, QWidget *parent) + : QWidget(parent), m_biomericProxy(bioHelper), m_uid(uid), m_uniauthService(uniauthService) + { + m_listPriority.clear(); +@@ -324,30 +322,13 @@ void LoginOptionsWidget::updateOptionButtons() + isShowUkey = true; + } + +- if (m_mapOptBtns.size() <= 2 && (!isShowUkey && !m_mapDevices.contains(LOGINOPT_TYPE_CUSTOM))) { +- // 因为默认添加一个密码选项,因此当ukey没有显示出来时,按钮数小于等于2时就隐藏选项界面 +- m_labelOptTitle->hide(); +- QMap::iterator itMapBtn = m_mapOptBtns.begin(); +- for (; itMapBtn != m_mapOptBtns.end(); itMapBtn++) { +- if (itMapBtn.value()) { +- itMapBtn.value()->hide(); +- } +- } +- } else { +- m_labelOptTitle->show(); +- QMap::iterator itMapBtn = m_mapOptBtns.begin(); +- for (; itMapBtn != m_mapOptBtns.end(); itMapBtn++) { +- if (itMapBtn.value()) { +- itMapBtn.value()->show(); +- } ++ m_labelOptTitle->show(); ++ QMap::iterator itMapBtn = m_mapOptBtns.begin(); ++ for (; itMapBtn != m_mapOptBtns.end(); itMapBtn++) { ++ if (itMapBtn.value()) { ++ itMapBtn.value()->show(); + } + } +- m_mapOptBtns[-1]->hide(); +- if (m_mapOptBtns.size() == 2 && (isShowUkey || m_mapDevices.contains(LOGINOPT_TYPE_CUSTOM))) { +- m_mapOptBtns[-1]->show(); +- } else if (m_mapOptBtns.size() == 3 && isShowUkey && m_mapDevices.contains(LOGINOPT_TYPE_CUSTOM)) { +- m_mapOptBtns[-1]->show(); +- } + } + + void LoginOptionsWidget::setUser(int uid) +@@ -572,8 +553,9 @@ void LoginOptionsWidget::onIdentifyComplete(QDBusPendingCallWatcher *watcher) + Q_EMIT authComplete(false, 1); + } else if (ret.opsStatus == OPS_IDENTIFY_STOP_BY_USER || ret.opsStatus == OPS_VERIFY_STOP_BY_USER) { + Q_EMIT authComplete(false, -2); // 主动停止,直接重试 +- } else if (ret.opsStatus == OPS_OPEN_FAIL +- || ret.opsStatus == OPS_OPEN_ERROR) { // 无法打开设备(设备是坏的/被占用),直接停止 ++ } else if ( ++ ret.opsStatus == OPS_OPEN_FAIL ++ || ret.opsStatus == OPS_OPEN_ERROR) { // 无法打开设备(设备是坏的/被占用),直接停止 + Q_EMIT authComplete(false, 5); + } else if (ret.opsStatus >= OPS_GET_FLIST_SUCCESS && ret.opsStatus <= OPS_GET_FLIST_MAX) { + Q_EMIT authComplete(false, -3); // 主动停止,直接重试 +@@ -959,6 +941,9 @@ QString LoginOptionsWidget::getDefaultDevice(QString strUserName) + if (m_uniauthService && m_uniauthService->isActivatable()) { + QString defaultDeviceName = ""; + for (auto bioType : m_listPriority) { ++ if (bioType == UniT_Remote) { ++ continue; ++ } + QString strDeviceName = m_uniauthService->getDefaultDevice(strUserName, bioType); + if (!strDeviceName.isEmpty()) { + DeviceInfoPtr pDeviceInfo = findDeviceByName(strDeviceName); diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..5515917 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +0001-107.patch