diff --git a/data/ukui-greeter/95-ukui-greeter.conf b/data/ukui-greeter/95-ukui-greeter.conf
index 45a0cda..2ecb765 100644
--- a/data/ukui-greeter/95-ukui-greeter.conf
+++ b/data/ukui-greeter/95-ukui-greeter.conf
@@ -2,3 +2,4 @@
greeter-session=ukui-greeter
user-session=ukui
#greeter-setup-script=/usr/lib/ukui-greeter/ukui-greeter-nm-start.sh
+enable-autologin-user-lock=false
diff --git a/i18n_ts/bo.ts b/i18n_ts/bo.ts
index c9e62fa..0f1fdbe 100644
--- a/i18n_ts/bo.ts
+++ b/i18n_ts/bo.ts
@@ -12,36 +12,222 @@
AuthDialog
-
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BatteryWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BlockWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CharsMoreWidget
@@ -69,6 +255,124 @@
+
+ EngineDevice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
LettersWidget
@@ -85,21 +389,88 @@
LightDMHelper
-
+
-
+
-
+
+
+ LockWidget
+
+
+
+
+
+
+
+ LoginOptionsWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
MyNetworkWidget
@@ -129,38 +500,38 @@
PowerListWidget
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
@@ -177,6 +548,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ S:
+
+
+
+ tablet device
+
+
Screensaver
@@ -186,7 +601,7 @@
-
+
@@ -202,7 +617,7 @@
delay
-
+
@@ -210,7 +625,7 @@
has-lock
-
+
@@ -218,22 +633,22 @@
main
-
+
-
+
-
+
-
+
@@ -244,8 +659,8 @@
-
+
@@ -270,33 +685,33 @@
-
+
-
+
-
-
+
+
-
+
-
+
-
+
diff --git a/i18n_ts/bo_CN.ts b/i18n_ts/bo_CN.ts
index bb07f7e..7f36282 100644
--- a/i18n_ts/bo_CN.ts
+++ b/i18n_ts/bo_CN.ts
@@ -24,7 +24,7 @@
使用密码认证
-
+
བསྐྱར་དུ་ཞིབ་བཤེར་བྱ་དགོས།
@@ -53,65 +53,135 @@
账户锁定%1分钟由于%2次错误尝试
+
- ཁྱོད་ཀྱིས་ཡང་བསྐྱར་ཐེངས་གཅིག་ལ་ཚོད་ལྟ་ཞིག་བྱེད་རོགས།
+ ཁྱོད་ཀྱིས་ཡང་བསྐྱར་ཐེངས་གཅིག་ལ་ཚོད་ལྟ་ཞིག་བྱེད་རོགས།
+
- ཁྱོད་ཀྱིས་དུས་ཚོད་སྐར་ཆ་གཅིག་གི་ནང་དུ་ཡང་བསྐྱར་ཚོད་ལྟ་ཞིག་བྱེད་རོགས།
+ ཁྱོད་ཀྱིས་དུས་ཚོད་སྐར་ཆ་གཅིག་གི་ནང་དུ་ཡང་བསྐྱར་ཚོད་ལྟ་ཞིག་བྱེད་རོགས།
+
- དུས་གཏན་དུ་ཟྭ་བརྒྱབ་པའི་རྩིས་ཐོ།
+ དུས་གཏན་དུ་ཟྭ་བརྒྱབ་པའི་རྩིས་ཐོ།
+
+
- ངོ་གདོང་ངོས་འཛིན་ལ་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་
+ ངོ་གདོང་ངོས་འཛིན་ལ་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་
+
- མཛུབ་རིས་མནན་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་
+ མཛུབ་རིས་མནན་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་
+
- སྒྲ་པར་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག
+ སྒྲ་པར་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག
+
- མཛུབ་མོའི་ནང་དུ་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་
+ མཛུབ་མོའི་ནང་དུ་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་
+
- iris ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་
+ iris ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་
-
+
ནང་འཇུག་གི་གསང་གྲངས།
+
+
+ སྤྱོད་མཁན་གྱི་མིང་།
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- %1ལ་ཞིབ་བཤེར་བྱེད་མ་ཐུབ་ན། གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག་རོགས།
+ %1ལ་ཞིབ་བཤེར་བྱེད་མ་ཐུབ་ན། གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག་རོགས།
+
+
+
+
+
- %1ལ་ཞིབ་བཤེར་བྱེད་ཐབས་བྲལ་བ་དང་། གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག་རོགས།
+ %1ལ་ཞིབ་བཤེར་བྱེད་ཐབས་བྲལ་བ་དང་། གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག་རོགས།
+
- རྒྱུན་ལྡན་མིན་པའི་དྲ་
+ རྒྱུན་ལྡན་མིན་པའི་དྲ་
+
- མིའི་གདོང་ལ་དབྱེ་འབྱེད་བྱེད་པར་རེ་སྒུག་བྱེད་དུས་གསང་གྲངས་ཀྱི་སྒོ་ལྕགས་རྒྱག་རོགས།
+ མིའི་གདོང་ལ་དབྱེ་འབྱེད་བྱེད་པར་རེ་སྒུག་བྱེད་དུས་གསང་གྲངས་ཀྱི་སྒོ་ལྕགས་རྒྱག་རོགས།
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ བདེ་འཇགས་གསང་ལྡེ་
+
+
+
+
+ དོན་ཚན་གཉིས་པ།
使用绑定的微信扫码或输入密码登录
-
-
+
+
གསང་གྲངས་སྟོང་པ་ཡིན་མི་སྲིད།
@@ -124,8 +194,10 @@
无法验证%1,请输入密码.
+
+
- %1ལ་ཞིབ་བཤེར་བྱེད་མ་ཐུབ་ན། ཁྱེད་ཚོར་ད་དུང་%2ལ་ཞིབ་བཤེར་བྱེད་པའི་གོ་སྐབས་ཡོད།
+ %1ལ་ཞིབ་བཤེར་བྱེད་མ་ཐུབ་ན། ཁྱེད་ཚོར་ད་དུང་%2ལ་ཞིབ་བཤེར་བྱེད་པའི་གོ་སྐབས་ཡོད།
@@ -152,13 +224,15 @@
请输入密码或者录入指纹
-
+
+
བདེན་དཔང་ར་སྤྲོད་བྱེད་མ་ཐུབ་ན། ཡང་བསྐྱར་ཚོད་ལྟ་ཞིག
+
- འབྲེལ་མཐུད་ཀྱི་འཕྲིན་ཕྲན་ཞིབ་བཤེར་ཨང་གྲངས་སམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག་པ།
+ འབྲེལ་མཐུད་ཀྱི་འཕྲིན་ཕྲན་ཞིབ་བཤེར་ཨང་གྲངས་སམ་ཡང་ན་གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག་པ།
@@ -169,12 +243,12 @@
བདེ་འཇགས་ཀྱི་གསང་བའི་ལྡེ་མིག་དེ་USBཡི་སྣེ་འདྲེན་དུ་འཇུག་རོགས།
-
+
གསང་གྲངས།
-
+
ཐོ་འགོད་བྱེད་པ།
@@ -199,6 +273,29 @@
指纹验证失败,您还有%1次尝试机会
+
+ BatteryWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
BioDevices
@@ -267,6 +364,39 @@
འགྲིགས།
+
+ BlockWidget
+
+
+
+ ཕྱིར་འཐེན།
+
+
+
+
+
+
+
+
+
+ གཤམ་གྱི་གོ་རིམ་ནི་མ་ལག་བསྐྱར་དུ་འབྱུང་བར་སྔོན་འགོག་བྱེད་ཆེད་ཡིན།
+
+
+
+
+ གཤམ་གྱི་གོ་རིམ་ནི་མ་ལག་གི་སྒོ་རྒྱག་པར་བཀག་འགོག་བྱེད་པའི་ཆེད་དུ་ཡིན།
+
+
+
+
+ གཤམ་གྱི་གོ་རིམ་ནི་མ་ལག་གནས་སྐབས་མཚམས་འཇོག་པར་བཀག་འགོག་བྱེད་པའི་ཆེད་དུ་ཡིན།
+
+
+
+
+ གཤམ་གྱི་གོ་རིམ་ནི་མ་ལག་ལ་བཀག་འགོག་བྱེད་པའི་ཆེད་དུ་ཡིན།
+
+
CharsMoreWidget
@@ -1376,6 +1506,124 @@
WPA & WPA2 མི་སྒེར་
+
+ EngineDevice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
IconEdit
@@ -1639,17 +1887,17 @@
LightDMHelper
-
+
-
+
ཐོ་འགོད་བྱེད་པ།
-
+
游客
@@ -1692,28 +1940,73 @@
སྐུད་མེད་ཅུས་ཁོངས་ཀྱི་དྲ་བ།
+
+
+
+
+
LoginOptionsWidget
+
+
- ཐོ་འགོད་ཀྱི་བསལ་འདེམས་ཀྱི་དབང་ཆ།
+ ཐོ་འགོད་ཀྱི་བསལ་འདེམས་ཀྱི་དབང་ཆ།
+
- གསང་གྲངས།
+ གསང་གྲངས།
+
- གཞན་དག
+ གཞན་དག
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ བདེ་འཇགས་གསང་ལྡེ་
+
+
+
+
+ དོན་ཚན་གཉིས་པ།
微信
+
- དབྱེ་འབྱེད་སྒྲིག་ཆས་མེད་པར་བཟོ་དགོས།
+ དབྱེ་འབྱེད་སྒྲིག་ཆས་མེད་པར་བཟོ་དགོས།
@@ -1905,38 +2198,38 @@
PowerListWidget
-
+
ཧིན་རྡུ་ཉི་ཞི་ཡ།
-
+
གློག་ཀླད་ཀྱི་སྒོ་བརྒྱབ་ནས་བཀོལ་སྤྱོད་བྱེད་སྐབས་ཐོག་མཐའ་བར་གསུམ་དུ་རྣམ་པ་རྒྱུན་འཁྱོངས་བྱེད་ཐུབ། གློག་ཀླད་ཀྱི་ཁ་ཕྱེ་དུས་ཁྱོད་དང་ཁ་བྲལ་བའི་རྣམ་པ་སླར་གསོ་བྱེད་ཐུབ།
-
+
གནས་སྐབས་མཚམས་འཇོག་
-
-
+
+
གློག་ཀླད་ཀྱི་ཁ་ཕྱེ་བའི་རྣམ་པ་རྒྱུན་འཁྱོངས་བྱས་མོད། འོན་ཀྱང་གློག་ཟད་ཚད་ཅུང་ཉུང་། ཉེར་སྤྱོད་ཚོགས་འདུའི་ཐོག་ཁ་ཕྱེ་ནས་མགྱོགས་མྱུར་ངང་གློག་ཀླད་དཀྲོགས་ཏེ་ཁྱོད་དང་ཁ་བྲལ་བའི་རྣམ་པ་སླར་གསོ་བྱེད་ཐུབ།
-
-
-
+
+
+ ཡང་བསྐྱར་འགོ་འཛུགས་
-
+
གློག་ཆད་པ།
-
+
བཀོལ་སྤྱོད་ཡོད་ཚད་སྒོ་བརྒྱབ་ནས་གློག་ཀླད་སྒོ་རྒྱག་དགོས།
@@ -2028,6 +2321,50 @@
བརྙན་ཤེལ་འདི་ལ་ནུས་པ་མེད།
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ བདེ་འཇགས་གསང་ལྡེ་
+
+
+
+
+ དོན་ཚན་གཉིས་པ།
+
+
+
+ S:
+
+
+
+ tablet device
+
+
Screensaver
@@ -2061,7 +2398,7 @@
ཁྱེད་ཚོར་བརྡ་ཐོ་གསར་པ་ཡོད།
-
+
ལྟ་ཚུལ།
@@ -2233,7 +2570,7 @@
delay
-
+
@@ -2241,7 +2578,7 @@
has-lock
-
+
@@ -2255,8 +2592,8 @@
-
+
འཕྲལ་དུ་བརྙན་ཤེལ་ལ་ཟྭ་རྒྱག་པ།
@@ -2281,53 +2618,53 @@
-
+
དབྱིན་ཇིའི་བརྙན་ཤེལ་གྱི་བརྙན་ཤེལ་ལ་ཁ་པར་རྒྱག་པའི་གླེང་མོལ།
-
+
སྐབས་འདིའི་ཁོམ་པའི་བརྡ་རྟགས་ཀྱིས་སྐུལ་སློང་བྱས་པ།
-
-
+
+
བརྙན་ཤེལ་ལ་ཟྭ་བརྒྱབ་ནས་འཕྲལ་མར་བརྙན་ཤེལ་གྱི་བརྙན་ཤེལ་སྟོན་པ།
-
+
འཕྲལ་མར་བརྙན་ཤེལ་གྱི་བརྙན་ཤེལ་སྟོན་པ།
-
+
-
+
-
+
དབྱིན་ཇིའི་བརྙན་ཤེལ་གྱི་བརྙན་ཤེལ་ལ་ལྟ་ཞིབ་བྱེད་མཁན།
-
+
རྩ་བའི་སྒེའུ་ཁུང་ནས་མངོན་པ།
-
+
སྒེའུ་ཁུང་ནས་མངོན་པ།
-
+
སྒེའུ་ཁུང་གི་ཐོབ་ཐང་
diff --git a/i18n_ts/es.ts b/i18n_ts/es.ts
index 2fedd11..57cad3d 100644
--- a/i18n_ts/es.ts
+++ b/i18n_ts/es.ts
@@ -62,6 +62,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Huella dactilar
+
+
+
+ FingerVein
+
+
+
+ Iris
+
+
+
+ Cara
+
+
+
+ Impresión de voz
+
+
+
+
+
+
+
+
+
+
+
+ BatteryWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
BioAuthWidget
@@ -128,6 +243,33 @@
Nombre del dispositivo:
+
+ BlockWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CharsMoreWidget
@@ -229,6 +371,101 @@
Contraseña
+
+ EngineDevice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
KeyboardWidget
@@ -284,12 +521,56 @@
Cambiar de usuario
+
+
+
+
LoginOptionsWidget
- Contraseña
+ Contraseña
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Huella dactilar
+
+
+
+ FingerVein
+
+
+
+ Iris
+
+
+
+ Cara
+
+
+
+ Impresión de voz
+
+
+
+
+
+
+
+
@@ -346,10 +627,6 @@
-
-
-
-
@@ -358,6 +635,10 @@
+
+
+
+
PowerManager
@@ -376,6 +657,42 @@
+
+
+ Huella dactilar
+
+
+
+ FingerVein
+
+
+
+ Iris
+
+
+
+ Cara
+
+
+
+ Impresión de voz
+
+
+
+
+
+
+
+
+
+
+
+ S:
+
+
+ tablet device
+
+
Screensaver
diff --git a/i18n_ts/fr.ts b/i18n_ts/fr.ts
index d14fe7e..8584537 100644
--- a/i18n_ts/fr.ts
+++ b/i18n_ts/fr.ts
@@ -62,6 +62,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Empreinte digitale
+
+
+
+ FingerVein
+
+
+
+ Iris
+
+
+
+ Visage
+
+
+
+ VoicePrint
+
+
+
+
+
+
+
+
+
+
+
+ BatteryWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
BioAuthWidget
@@ -128,6 +243,33 @@
Nom de l'appareil:
+
+ BlockWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CharsMoreWidget
@@ -229,6 +371,101 @@
Mot de passe
+
+ EngineDevice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
KeyboardWidget
@@ -284,12 +521,56 @@
Changer d'utilisateur
+
+
+
+
LoginOptionsWidget
- Mot de passe
+ Mot de passe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Empreinte digitale
+
+
+
+ FingerVein
+
+
+
+ Iris
+
+
+
+ Visage
+
+
+
+ VoicePrint
+
+
+
+
+
+
+
+
@@ -346,10 +627,6 @@
-
-
-
-
@@ -358,6 +635,10 @@
+
+
+
+
PowerManager
@@ -376,6 +657,42 @@
+
+
+ Empreinte digitale
+
+
+
+ FingerVein
+
+
+
+ Iris
+
+
+
+ Visage
+
+
+
+ VoicePrint
+
+
+
+
+
+
+
+
+
+
+
+ S:
+
+
+ tablet device
+
+
Screensaver
diff --git a/i18n_ts/mn.ts b/i18n_ts/mn.ts
index bcbe087..5cb43e5 100644
--- a/i18n_ts/mn.ts
+++ b/i18n_ts/mn.ts
@@ -24,7 +24,7 @@
使用密码认证
-
+
ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠱᠢᠬᠤ
@@ -53,61 +53,135 @@
账户锁定%1分钟由于%2次错误尝试
+
- %1 ᠮᠢᠨᠦ᠋ᠲᠦᠨ ᠳᠠᠷᠠᠭᠠ ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠠᠱᠢᠭᠠᠷᠠᠢ
+ %1 ᠮᠢᠨᠦ᠋ᠲᠦᠨ ᠳᠠᠷᠠᠭᠠ ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠠᠱᠢᠭᠠᠷᠠᠢ
+
- %1 ᠮᠢᠨᠦ᠋ᠲᠦᠨ ᠳᠠᠷᠠᠭᠠ ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠠᠱᠢᠭᠠᠷᠠᠢ
+ %1 ᠮᠢᠨᠦ᠋ᠲᠦᠨ ᠳᠠᠷᠠᠭᠠ ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠠᠱᠢᠭᠠᠷᠠᠢ
+
- ᠳᠠᠩᠰᠠ ᠨᠢᠭᠡᠨᠳᠡ ᠦᠨᠢᠳᠡ ᠤᠨᠢᠰᠤᠯᠠᠭᠳᠠᠪᠠ᠃
+ ᠳᠠᠩᠰᠠ ᠨᠢᠭᠡᠨᠳᠡ ᠦᠨᠢᠳᠡ ᠤᠨᠢᠰᠤᠯᠠᠭᠳᠠᠪᠠ᠃
+
+
- ᠨᠢᠭᠤᠷ ᠱᠢᠷᠪᠢᠵᠤ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+ ᠨᠢᠭᠤᠷ ᠱᠢᠷᠪᠢᠵᠤ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+
- ᠬᠤᠷᠤᠭᠤᠨᠤ ᠤᠷᠤᠮ ᠳᠠᠷᠤᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+ ᠬᠤᠷᠤᠭᠤᠨᠤ ᠤᠷᠤᠮ ᠳᠠᠷᠤᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+
- ᠳᠠᠭᠤᠪᠠᠷ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+ ᠳᠠᠭᠤᠪᠠᠷ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+
- ᠬᠤᠷᠤᠭᠤᠨᠤ ᠨᠠᠮᠵᠢᠭᠤᠨ ᠰᠤᠳᠠᠯᠢᠶᠠᠷ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+ ᠬᠤᠷᠤᠭᠤᠨᠤ ᠨᠠᠮᠵᠢᠭᠤᠨ ᠰᠤᠳᠠᠯᠢᠶᠠᠷ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+
- ᠰᠤᠯᠤᠩᠭᠠ ᠪᠦᠷᠬᠦᠪᠴᠢᠶᠢ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+ ᠰᠤᠯᠤᠩᠭᠠ ᠪᠦᠷᠬᠦᠪᠴᠢᠶᠢ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
-
+
ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠬᠤ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- %1ᠤ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠤᠯᠳᠠ ᠢᠯᠠᠭᠳᠠᠪᠠ ᠂ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+ %1ᠤ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠤᠯᠳᠠ ᠢᠯᠠᠭᠳᠠᠪᠠ ᠂ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+
+
+
+
+
- %1ᠶᠢ/ᠢ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠠᠷᠭᠠ ᠦᠬᠡᠢ ᠂ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+ %1ᠶᠢ/ᠢ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠠᠷᠭᠠ ᠦᠬᠡᠢ ᠂ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+
- ᠰᠦᠯᠵᠢᠶᠡ ᠬᠡᠪᠦᠨ ᠪᠤᠰᠤ
+ ᠰᠦᠯᠵᠢᠶᠡ ᠬᠡᠪᠦᠨ ᠪᠤᠰᠤ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ᠬᠤᠶᠠᠷ ᠬᠡᠮᠵᠢᠯᠳᠡᠳᠦ ᠺᠤᠳ᠋
使用绑定的微信扫码或输入密码登录
-
-
+
+
ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠬᠤᠭᠤᠰᠤᠨ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ
@@ -120,8 +194,10 @@
无法验证%1,请输入密码.
+
+
- %1ᠶᠢᠨ/ᠦᠨ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠤᠯᠳᠠ ᠢᠯᠠᠭᠳᠠᠪᠠ ᠂ ᠲᠠ ᠪᠠᠰᠠ%2 ᠤᠳᠠᠭᠠᠨᠤ ᠳᠤᠷᠱᠢᠬᠤ ᠵᠠᠪᠱᠢᠶᠠᠨ ᠲᠠᠢ
+ %1ᠶᠢᠨ/ᠦᠨ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠤᠯᠳᠠ ᠢᠯᠠᠭᠳᠠᠪᠠ ᠂ ᠲᠠ ᠪᠠᠰᠠ%2 ᠤᠳᠠᠭᠠᠨᠤ ᠳᠤᠷᠱᠢᠬᠤ ᠵᠠᠪᠱᠢᠶᠠᠨ ᠲᠠᠢ
@@ -148,13 +224,15 @@
请输入密码或者录入指纹
-
+
+
ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠤᠯᠳᠠ ᠢᠯᠠᠭᠳᠠᠪᠠ ᠂ ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠱᠢᠭᠠᠷᠠᠢ
+
- ᠤᠶᠠᠭᠰᠠᠨ ᠸᠢᠴᠠᠲᠢᠶᠠᠷ ᠺᠤᠳ᠋ ᠱᠢᠷᠪᠢᠬᠦ᠌ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
+ ᠤᠶᠠᠭᠰᠠᠨ ᠸᠢᠴᠠᠲᠢᠶᠠᠷ ᠺᠤᠳ᠋ ᠱᠢᠷᠪᠢᠬᠦ᠌ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ
@@ -165,12 +243,12 @@
ᠠᠮᠤᠷ ᠲᠦᠪᠰᠢᠨ ᠦ ᠨᠢᠭᠤᠴᠠ ᠶᠢ USB ᠦᠵᠦᠭᠦᠷ ᠲᠦ ᠬᠠᠳᠬᠤᠵᠤ ᠣᠷᠣᠭᠠᠷᠠᠢ ᠃
-
+
ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋
-
+
ᠳᠠᠩᠰᠠᠯᠠᠨ ᠤᠷᠤᠬᠤ
@@ -195,6 +273,29 @@
指纹验证失败,您还有%1次尝试机会
+
+ BatteryWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
BioDevices
@@ -263,6 +364,39 @@
OK
+
+ BlockWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ᠳᠠᠷᠠᠭᠠᠬᠢ ᠫᠠᠷᠦᠭᠷᠡᠮ ᠶᠠᠭ ᠠᠵᠢᠯᠯᠠᠵᠤ ᠪᠠᠢᠨᠠ ᠂ ᠱᠢᠰᠲ᠋ᠧᠮᠦᠨ ᠳᠠᠬᠢᠵᠤ ᠡᠬᠢᠯᠡᠬᠦ᠌ᠶᠢ ᠬᠤᠷᠢᠭᠯᠠᠨᠠ!
+
+
+
+
+ ᠳᠠᠷᠠᠭᠠᠬᠢ ᠫᠠᠷᠦᠭᠷᠡᠮ ᠶᠠᠭ ᠠᠵᠢᠯᠯᠠᠵᠤ ᠪᠠᠢᠨᠠ ᠂ ᠱᠢᠰᠲ᠋ᠧᠮᠦᠨ ᠬᠠᠭᠠᠬᠤᠶᠢ ᠬᠤᠷᠢᠭᠯᠠᠨᠠ!
+
+
+
+
+ ᠳᠠᠷᠠᠭᠠᠬᠢ ᠫᠠᠷᠦᠭᠷᠡᠮ ᠶᠠᠭ ᠠᠵᠢᠯᠯᠠᠵᠤ ᠪᠠᠢᠨᠠ ᠂ ᠱᠢᠰᠲ᠋ᠧᠮᠦᠨ ᠤᠨᠳᠠᠬᠤᠶᠢ ᠬᠤᠷᠢᠭᠯᠠᠨᠠ!
+
+
+
+
+ ᠳᠠᠷᠠᠭᠠᠬᠢ ᠫᠠᠷᠦᠭᠷᠡᠮ ᠶᠠᠭ ᠠᠵᠢᠯᠯᠠᠵᠤ ᠪᠠᠢᠨᠠ ᠂ ᠱᠢᠰᠲ᠋ᠧᠮᠦᠨ ᠢᠴᠡᠬᠡᠯᠡᠬᠦ᠌ᠶᠢ ᠬᠤᠷᠢᠭᠯᠠᠨᠠ!
+
+
CharsMoreWidget
@@ -1367,6 +1501,124 @@
WPA ᠪᠣᠯᠣᠨ WPA2 ᠬᠤᠪᠢ ᠬᠥᠮᠥᠨ ᠃
+
+ EngineDevice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
IconEdit
@@ -1638,17 +1890,17 @@
LightDMHelper
-
+
-
+
ᠳᠠᠩᠰᠠᠯᠠᠨ ᠤᠷᠤᠬᠤ
-
+
游客
@@ -1691,28 +1943,73 @@
ᠤᠳᠠᠰᠤ ᠦᠬᠡᠢ ᠬᠡᠰᠡᠭ ᠬᠡᠪᠴᠢᠶᠡᠨᠦ ᠰᠦᠯᠵᠢᠶᠡ
+
+
+
+
+
LoginOptionsWidget
+
+
- ᠨᠡᠪᠳᠡᠷᠡᠬᠦ᠌ ᠰᠤᠩᠭᠤᠯᠳᠠ
+ ᠨᠡᠪᠳᠡᠷᠡᠬᠦ᠌ ᠰᠤᠩᠭᠤᠯᠳᠠ
+
- ᠨᠢᠭᠤᠴᠠ ᠺᠣᠳ᠋ᠢ᠋ ᠵᠠᠰᠠᠬᠤ
+ ᠨᠢᠭᠤᠴᠠ ᠺᠣᠳ᠋ᠢ᠋ ᠵᠠᠰᠠᠬᠤ
+
- ᠪᠤᠰᠤᠳ ᠃
+ ᠪᠤᠰᠤᠳ ᠃
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ᠬᠤᠶᠠᠷ ᠬᠡᠮᠵᠢᠯᠳᠡᠳᠦ ᠺᠤᠳ᠋
微信
+
- ᠬᠠᠷᠭᠤᠭᠤᠯᠵᠤ ᠱᠢᠯᠭᠠᠬᠤ ᠳᠦᠬᠦᠬᠡᠷᠦᠮᠵᠢᠶᠢ ᠨᠢᠭᠡᠨᠳᠡ ᠱᠢᠯᠵᠢᠬᠦᠯᠦᠨ ᠬᠠᠰᠤᠪᠠ!
+ ᠬᠠᠷᠭᠤᠭᠤᠯᠵᠤ ᠱᠢᠯᠭᠠᠬᠤ ᠳᠦᠬᠦᠬᠡᠷᠦᠮᠵᠢᠶᠢ ᠨᠢᠭᠡᠨᠳᠡ ᠱᠢᠯᠵᠢᠬᠦᠯᠦᠨ ᠬᠠᠰᠤᠪᠠ!
@@ -1904,38 +2201,38 @@
PowerListWidget
-
+
ᠢᠴᠡᠬᠡᠯᠡᠬᠦ᠌
-
+
ᠺᠣᠮᠫᠢᠦ᠋ᠲ᠋ᠧᠷ ᠢ ᠬᠠᠭᠠᠬᠤ ᠪᠣᠯᠪᠠᠴᠤ ᠬᠡᠷᠡᠭᠯᠡᠭᠡᠨ ᠦ ᠬᠤᠷᠠᠯ ᠨᠡᠭᠡᠭᠡᠬᠦ ᠪᠠᠶᠢᠳᠠᠯ ᠢᠶᠠᠨ ᠪᠠᠷᠢᠮᠲᠠᠯᠠᠳᠠᠭ ᠃ ᠺᠣᠮᠫᠢᠦ᠋ᠲ᠋ᠧᠷ ᠢ ᠨᠡᠭᠡᠭᠡᠬᠦ ᠦᠶᠡ ᠳᠦ ᠂ ᠴᠢᠨᠦ ᠰᠠᠯᠤᠭᠰᠠᠨ ᠪᠠᠶᠢᠳᠠᠯ ᠢᠶᠠᠨ ᠰᠡᠷᠭᠦᠭᠡᠵᠦ ᠪᠣᠯᠣᠨᠠ ᠃
-
+
ᠤᠨᠳᠠᠬᠤ
-
-
+
+
ᠺᠣᠮᠫᠢᠦ᠋ᠲ᠋ᠧᠷ ᠮᠠᠰᠢᠨ ᠢᠶᠠᠨ ᠨᠡᠭᠡᠭᠡᠬᠦ ᠪᠠᠶᠢᠳᠠᠯ ᠢᠶᠠᠨ ᠪᠠᠷᠢᠮᠲᠠᠯᠠᠳᠠᠭ ᠂ ᠭᠡᠪᠡᠴᠦ ᠴᠠᠬᠢᠯᠭᠠᠨ ᠬᠣᠷᠣᠭᠳᠠᠭᠤᠯᠭᠠ ᠨᠡᠯᠢᠶᠡᠳ ᠪᠠᠭᠠ ᠃ ᠬᠡᠷᠡᠭᠯᠡᠭᠡᠨ ᠦ ᠬᠤᠷᠠᠯ ᠨᠡᠭᠡᠭᠡᠬᠦ ᠪᠠᠶᠢᠳᠠᠯ ᠢᠶᠠᠨ ᠦᠷᠭᠦᠯᠵᠢᠯᠡᠭᠦᠯᠦᠭᠰᠡᠭᠡᠷ ᠂ ᠺᠣᠮᠫᠢᠦ᠋ᠲ᠋ᠧᠷ ᠢ ᠲᠦᠷᠭᠡᠨ ᠰᠡᠷᠢᠭᠡᠬᠦ ᠶᠢᠨ ᠬᠠᠮᠲᠤ ᠴᠢᠨᠦ ᠰᠠᠯᠤᠭᠰᠠᠨ ᠪᠠᠶᠢᠳᠠᠯ ᠢᠶᠠᠨ ᠰᠡᠷᠭᠦᠭᠡᠵᠦ ᠪᠣᠯᠣᠨᠠ ᠃
-
-
-
+
+
+ ᠳᠠᠬᠢᠵᠤ ᠡᠬᠢᠯᠡᠬᠦᠯᠬᠦ᠌
-
+
ᠬᠠᠭᠠᠬᠤ
-
+
@@ -2027,6 +2324,50 @@
ᠳᠡᠯᠭᠡᠴᠡ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠫᠠᠷᠦᠭᠷᠡᠮᠢ ᠢᠳᠡᠪᠬᠢᠵᠢᠬᠦᠯᠦᠬᠡ ᠦᠬᠡᠢ ᠃
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ᠬᠤᠶᠠᠷ ᠬᠡᠮᠵᠢᠯᠳᠡᠳᠦ ᠺᠤᠳ᠋
+
+
+
+ S:
+
+
+
+ tablet device
+
+
Screensaver
@@ -2060,7 +2401,7 @@
ᠲᠠ ᠱᠢᠨᠡ ᠮᠡᠳᠡᠭᠳᠡᠯ ᠤᠯᠤᠭᠰᠠᠨ
-
+
ᠬᠡᠪ ᠦᠵᠡᠬᠦ᠌
@@ -2232,7 +2573,7 @@
delay
-
+
ᠡᠳᠦᠢ ᠤᠷᠲᠤ ᠬᠤᠭᠤᠴᠠᠭᠠᠪᠠᠷ ᠣᠨᠢᠰᠣᠶ᠋ᠢ ᠢᠯᠡᠷᠡᠭᠦᠯᠬᠦ
@@ -2240,7 +2581,7 @@
has-lock
-
+
ᠣᠨᠢᠰᠤᠯᠠᠬᠤᠶ᠋ᠢ ᠢᠯᠡᠷᠡᠭᠦᠯᠪᠡᠯ
@@ -2254,8 +2595,8 @@
-
+
ᠤᠳᠤᠬᠠᠨ ᠳᠡᠯᠬᠡᠴᠡᠶᠢ ᠤᠨᠢᠰᠤᠯᠠᠬᠤ
@@ -2280,53 +2621,53 @@
ᠬᠣᠭᠣᠰᠣᠨ ᠪᠠᠢᠬᠤ ᠪᠥᠭᠡᠳ ᠣᠨᠢᠰᠤᠯᠠᠬᠤᠶ᠋ᠢ ᠬᠣᠢᠰᠢᠯᠠᠭᠤᠯᠬᠤ ᠫᠷᠠᠮᠧᠲ᠋ᠷᠢ᠋ ᠢᠯᠡᠷᠡᠭᠦᠯᠬᠦ ᠄ ᠰᠤᠯᠠ / ᠳᠡᠭᠡᠷᠡ ᠬᠠᠪᠬᠠᠭᠠᠰᠤ / ᠪᠠᠭᠠ ᠴᠢᠳᠠᠮᠵᠢ
-
+
ᠳᠡᠯᠭᠡᠴᠡ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠫᠷᠦᠭᠷᠡᠮᠦᠨ ᠶᠠᠷᠢᠯᠴᠠᠯᠭᠠᠶᠢᠨ ᠴᠤᠩᠬᠤ
-
+
ᠶᠠᠷᠢᠯᠴᠠᠭᠠ ᠰᠤᠯᠠ ᠳᠣᠬᠢᠶᠠᠪᠠᠷ ᠢᠳᠡᠪᠬᠢᠵᠢᠭᠦᠯᠬᠦ
-
-
+
+
ᠳᠡᠯᠭᠡᠴᠡᠶᠢ ᠤᠨᠢᠰᠤᠯᠠᠬᠤᠶᠢᠨ ᠵᠡᠷᠬᠡᠴᠡᠬᠡ ᠳᠡᠯᠭᠡᠴᠡ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠫᠷᠦᠭᠷᠡᠮᠢ ᠳᠠᠷᠤᠢᠬᠠᠨ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ᠌
-
+
ᠳᠡᠯᠭᠡᠴᠡ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠫᠷᠤᠭ᠌ᠷᠡᠮᠢ ᠳᠠᠷᠤᠢᠬᠠᠨ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ᠌
-
+
ᠬᠣᠭᠣᠰᠣᠨ ᠳᠡᠯᠭᠡᠴᠡ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠫᠷᠤᠭ᠌ᠷᠠᠮᠢ᠋ ᠳᠠᠷᠤᠢᠬᠠᠨ ᠢᠯᠡᠷᠡᠭᠦᠯᠵᠦ ᠣᠨᠢᠰᠤᠯᠠᠭᠰᠠᠨ ᠴᠠᠭᠢ᠋ ᠬᠣᠢᠰᠢᠯᠠᠭᠤᠯᠬᠤ
-
+
ᠳᠠᠷᠤᠢ ᠬᠣᠭᠣᠰᠣᠨ ᠳᠡᠯᠭᠡᠴᠡᠶ᠋ᠢ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠫᠷᠤᠭ᠌ᠷᠠᠮᠢ᠋ ᠢᠯᠡᠷᠡᠭᠦᠯᠦᠨᠡ ᠂ ᠬᠡᠷᠪᠡ ᠣᠨᠢᠰᠤᠯᠠᠪᠠᠯ
-
+
ukui—screensaver ᠳᠡᠯᠭᠡᠴᠡ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠫᠷᠤᠭ᠌ᠷᠠᠮ
-
+
ᠦᠨᠳᠦᠰᠦ ᠴᠣᠩᠬᠣᠨᠳ᠋ᠤ᠌ ᠬᠠᠷᠠᠭᠤᠯᠬᠤ
-
+
ᠴᠣᠩᠬᠣᠨ ᠳᠡᠭᠡᠷᠡ ᠢᠯᠡᠷᠡᠭᠦᠯᠬᠦ ᠃
-
+
ᠴᠣᠩᠬᠣᠨᠤ᠋ id
diff --git a/i18n_ts/pt.ts b/i18n_ts/pt.ts
index d2ba1ec..673dc6f 100644
--- a/i18n_ts/pt.ts
+++ b/i18n_ts/pt.ts
@@ -62,6 +62,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Impressão digital
+
+
+
+ FingerVein
+
+
+
+ Íris
+
+
+
+ Face
+
+
+
+ VoicePrint
+
+
+
+
+
+
+
+
+
+
+
+ BatteryWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
BioAuthWidget
@@ -128,6 +243,33 @@
Nome do dispositivo:
+
+ BlockWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CharsMoreWidget
@@ -229,6 +371,101 @@
Senha
+
+ EngineDevice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
KeyboardWidget
@@ -284,12 +521,56 @@
Mudar de utilizador
+
+
+
+
LoginOptionsWidget
- Senha
+ Senha
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Impressão digital
+
+
+
+ FingerVein
+
+
+
+ Íris
+
+
+
+ Face
+
+
+
+ VoicePrint
+
+
+
+
+
+
+
+
@@ -346,10 +627,6 @@
-
-
-
-
@@ -358,6 +635,10 @@
+
+
+
+
PowerManager
@@ -376,6 +657,42 @@
+
+
+ Impressão digital
+
+
+
+ FingerVein
+
+
+
+ Íris
+
+
+
+ Face
+
+
+
+ VoicePrint
+
+
+
+
+
+
+
+
+
+
+
+ S:
+
+
+ tablet device
+
+
Screensaver
diff --git a/i18n_ts/ru.ts b/i18n_ts/ru.ts
index 808e42c..c328633 100644
--- a/i18n_ts/ru.ts
+++ b/i18n_ts/ru.ts
@@ -62,6 +62,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FingerPrint
+
+
+
+ FingerVein
+
+
+
+ Ирис
+
+
+
+ Лицо
+
+
+
+ Voiceprint
+
+
+
+
+
+
+
+
+
+
+
+ BatteryWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
BioAuthWidget
@@ -128,6 +243,33 @@
Имя устройства:
+
+ BlockWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CharsMoreWidget
@@ -229,6 +371,101 @@
пароль
+
+ EngineDevice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
KeyboardWidget
@@ -284,12 +521,56 @@
Сменить пользователя
+
+
+
+
LoginOptionsWidget
- пароль
+ пароль
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FingerPrint
+
+
+
+ FingerVein
+
+
+
+ Ирис
+
+
+
+ Лицо
+
+
+
+ Voiceprint
+
+
+
+
+
+
+
+
@@ -346,10 +627,6 @@
-
-
-
-
@@ -358,6 +635,10 @@
+
+
+
+
PowerManager
@@ -376,6 +657,42 @@
+
+
+ FingerPrint
+
+
+
+ FingerVein
+
+
+
+ Ирис
+
+
+
+ Лицо
+
+
+
+ Voiceprint
+
+
+
+
+
+
+
+
+
+
+
+ S:
+
+
+ tablet device
+
+
Screensaver
diff --git a/i18n_ts/tr.ts b/i18n_ts/tr.ts
index 07d7f24..1d1f22f 100644
--- a/i18n_ts/tr.ts
+++ b/i18n_ts/tr.ts
@@ -24,7 +24,7 @@
Parola
-
+
Yeniden Dene
@@ -49,31 +49,161 @@
Kimlik doğrulama hatası, hala %1 kalan denemen var
-
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Parmak İzi
+
+
+
+
+
+
+
+
+
+ Göz
+
+
+
+
+ Yüz
+
+
+
+
+ Ses İzi
+
+
+
+
+
+
+
+
+
+
+
Biyometrik Kimlik Doğrulama
@@ -87,6 +217,29 @@
Diğer Ayıtlar
+
+ BatteryWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
BioDevices
@@ -155,6 +308,39 @@
Tamam
+
+ BlockWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CharsMoreWidget
@@ -260,6 +446,124 @@
Parola
+
+ EngineDevice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
IconEdit
@@ -283,17 +587,17 @@
LightDMHelper
-
+
-
+
-
+
Misafir
@@ -316,12 +620,69 @@
Kullanıcı Değiştir
+
+
+
+
+
LoginOptionsWidget
+
+
+
+
+
+
+
- Parola
+ Parola
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Parmak İzi
+
+
+
+
+
+
+
+
+
+ Göz
+
+
+
+
+ Yüz
+
+
+
+
+ Ses İzi
+
+
+
+
+
+
+
+
+
+
@@ -353,38 +714,38 @@
PowerListWidget
-
+
-
+
-
+
-
-
+
+
-
-
-
+
+
+ Yeniden Başlat
-
+
Bilgisayarı Kapat
-
+
@@ -444,6 +805,50 @@
+
+
+
+ Parmak İzi
+
+
+
+
+
+
+
+
+
+ Göz
+
+
+
+
+ Yüz
+
+
+
+
+ Ses İzi
+
+
+
+
+
+
+
+
+
+
+
+
+
+ S:
+
+
+
+ tablet device
+
+
Screensaver
@@ -461,7 +866,7 @@
-
+
@@ -485,7 +890,7 @@
delay
-
+
@@ -493,7 +898,7 @@
has-lock
-
+
@@ -507,8 +912,8 @@
-
+
Ekranı hemen kilitle
@@ -533,53 +938,53 @@
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/i18n_ts/zh_CN.ts b/i18n_ts/zh_CN.ts
index a39e069..0949d2c 100644
--- a/i18n_ts/zh_CN.ts
+++ b/i18n_ts/zh_CN.ts
@@ -24,7 +24,7 @@
使用密码认证
-
+
重试
@@ -53,65 +53,135 @@
账户锁定%1分钟由于%2次错误尝试
+
- 请%1分钟后再试
+ 请%1分钟后再试
+
- 请%1秒后再试
+ 请%1秒后再试
+
- 账号已被永久锁定
+ 账号已被永久锁定
+
+
- 验证人脸识别或输入密码解锁
+ 验证人脸识别或输入密码解锁
+
- 按压指纹或输入密码解锁
+ 按压指纹或输入密码解锁
+
- 验证声纹或输入密码解锁
+ 验证声纹或输入密码解锁
+
- 验证指静脉或输入密码解锁
+ 验证指静脉或输入密码解锁
+
- 验证虹膜或输入密码解锁
+ 验证虹膜或输入密码解锁
-
+
输入密码
+
+
+ 用户名:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- 验证%1失败,请输入密码解锁
+ 验证%1失败,请输入密码解锁
+
+
+
+
+
- 无法验证%1,请输入密码解锁
+ 无法验证%1,请输入密码解锁
+
- 网络异常
+ 网络异常
+
- 人脸识别等待超时,请点击刷新或输入密码解锁
+ 人脸识别等待超时,请点击刷新或输入密码解锁
+
+
+
+
+ 指纹
+
+
+
+
+ 指静脉
+
+
+
+
+ 虹膜
+
+
+
+
+
+
+
+
+
+ 声纹
+
+
+
+
+ 安全密钥
+
+
+
+
+ 二维码
使用绑定的微信扫码或输入密码登录
-
-
+
+
密码不能为空
@@ -124,8 +194,10 @@
无法验证%1,请输入密码.
+
+
- 验证%1失败,您还有%2次尝试机会
+ 验证%1失败,您还有%2次尝试机会
@@ -152,13 +224,15 @@
请输入密码或者录入指纹
-
+
+
认证失败,请重试
+
- 使用绑定的微信扫码或输入密码解锁
+ 使用绑定的微信扫码或输入密码解锁
@@ -169,12 +243,12 @@
请将安全密钥插入USB端口
-
+
密码
-
+
登录
@@ -199,6 +273,29 @@
指纹验证失败,您还有%1次尝试机会
+
+ BatteryWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
BioDevices
@@ -267,6 +364,39 @@
确定
+
+ BlockWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 以下程序正在运行,阻止系统重启!
+
+
+
+
+ 以下程序正在运行,阻止系统关机!
+
+
+
+
+ 以下程序正在运行,阻止系统进入睡眠!
+
+
+
+
+ 以下程序正在运行,阻止系统进入休眠!
+
+
CharsMoreWidget
@@ -1367,6 +1497,124 @@
WPA 及 WPA2 个人
+
+ EngineDevice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
IconEdit
@@ -1619,17 +1867,17 @@
LightDMHelper
-
+
-
+
登录
-
+
游客
@@ -1666,34 +1914,79 @@
- 有线网络
+ 有线网络
- 无线局域网
+ 无线局域网
+
+
+
+
+
LoginOptionsWidget
+
+
- 登录选项
+ 登录选项
+
- 密码
+ 密码
+
- 其他
+ 其他
+
+
+
+
+ 指纹
+
+
+
+
+ 指静脉
+
+
+
+
+ 虹膜
+
+
+
+
+
+
+
+
+
+ 声纹
+
+
+
+
+ 安全密钥
+
+
+
+
+ 二维码
微信
+
- 校验设备已移除!
+ 校验设备已移除!
@@ -1881,38 +2174,38 @@
PowerListWidget
-
+
休眠
-
+
关闭电脑,但是应用会一直保持打开状态。当打开电脑时,可以恢复到你离开的状态。
-
+
睡眠
-
-
+
+
电脑保持开机状态,但耗电较少。应用会一直保持打开状态,可快速唤醒电脑并恢复到你离开的状态。
-
-
-
+
+
+ 重启
-
+
关机
-
+
关闭所有应用,然后关闭电脑。
@@ -2004,6 +2297,50 @@
屏幕保护程序未激活
+
+
+
+ 指纹
+
+
+
+
+ 指静脉
+
+
+
+
+ 虹膜
+
+
+
+
+
+
+
+
+
+ 声纹
+
+
+
+
+ 安全密钥
+
+
+
+
+ 二维码
+
+
+
+ S:
+
+
+
+ tablet device
+
+
Screensaver
@@ -2037,7 +2374,7 @@
您有新的消息
-
+
预览
@@ -2205,7 +2542,7 @@
delay
-
+
@@ -2213,7 +2550,7 @@
has-lock
-
+
@@ -2227,8 +2564,8 @@
-
+
马上锁定屏幕
@@ -2253,53 +2590,53 @@
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/i18n_ts/zh_HK.ts b/i18n_ts/zh_HK.ts
index 9e6936a..b5c423a 100644
--- a/i18n_ts/zh_HK.ts
+++ b/i18n_ts/zh_HK.ts
@@ -24,7 +24,7 @@
使用密码认证
-
+
重試
@@ -53,61 +53,135 @@
账户锁定%1分钟由于%2次错误尝试
+
- 請在 %1 分鐘後重試。
+ 請在 %1 分鐘後重試。
+
- 請在 %1 秒後重試。
+ 請在 %1 秒後重試。
+
- 帳戶永久鎖定。
+ 帳戶永久鎖定。
+
+
- 驗證人臉識別或輸入密碼解鎖
+ 驗證人臉識別或輸入密碼解鎖
+
- 按指紋或輸入密碼解鎖
+ 按指紋或輸入密碼解鎖
+
- 驗證聲紋或輸入密碼以解鎖
+ 驗證聲紋或輸入密碼以解鎖
+
- 驗證指靜脈或輸入密碼解鎖
+ 驗證指靜脈或輸入密碼解鎖
+
- 驗證虹膜或輸入密碼解鎖
+ 驗證虹膜或輸入密碼解鎖
-
+
輸入密碼
+
+
+ 使用者名
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- 驗證 %1 失敗,請輸入密碼進行解鎖
+ 驗證 %1 失敗,請輸入密碼進行解鎖
+
+
+
+
+
- 無法驗證 %1,請輸入密碼進行解鎖
+ 無法驗證 %1,請輸入密碼進行解鎖
+
- 網路異常
+ 網路異常
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 虹膜
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 微信掃碼
使用绑定的微信扫码或输入密码登录
-
-
+
+
密碼不能為空
@@ -120,8 +194,10 @@
无法验证%1,请输入密码.
+
+
- 驗證 %1 失敗,您仍有 %2 次驗證機會
+ 驗證 %1 失敗,您仍有 %2 次驗證機會
@@ -148,13 +224,15 @@
请输入密码或者录入指纹
-
+
+
身份驗證失敗,請重試
+
- 使用綁定的微信掃碼或輸入密碼解鎖
+ 使用綁定的微信掃碼或輸入密碼解鎖
@@ -165,12 +243,12 @@
將 Ukey 插入 USB 埠
-
+
密碼
-
+
登錄
@@ -195,6 +273,29 @@
指纹验证失败,您还有%1次尝试机会
+
+ BatteryWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
BioDevices
@@ -263,6 +364,39 @@
還行
+
+ BlockWidget
+
+
+
+ 取消
+
+
+
+
+
+
+
+
+
+ 以下程式正在運行以防止系統重新啟動!
+
+
+
+
+ 以下程式正在運行以防止系統關閉!
+
+
+
+
+ 以下程式正在運行以防止系統掛起!
+
+
+
+
+ 以下程式正在運行以防止系統休眠!
+
+
CharsMoreWidget
@@ -1367,6 +1501,124 @@
WPA 和 WPA2 個人
+
+ EngineDevice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
IconEdit
@@ -1631,17 +1883,17 @@
LightDMHelper
-
+
-
+
登錄
-
+
游客
@@ -1684,28 +1936,73 @@
無線局域網
+
+
+
+
+
LoginOptionsWidget
+
+
- 登錄選項
+ 登錄選項
+
- 密碼
+ 密碼
+
- 其他
+ 其他
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 虹膜
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 微信掃碼
微信
+
- 識別已刪除的設備!
+ 識別已刪除的設備!
@@ -1897,38 +2194,38 @@
PowerListWidget
-
+
休眠
-
+
關閉電腦,但應用會保持打開狀態。當計算機打開時,它可以恢復到您離開時的狀態
-
+
睡眠
-
-
+
+
計算機保持打開狀態,但消耗的電量更少。該應用程式保持打開狀態,可以快速喚醒並恢復到上次中斷的位置
-
-
-
+
+
+ 重新啟動
-
+
關機
-
+
關閉所有應用,然後關閉電腦
@@ -2020,6 +2317,50 @@
屏幕保護程式處於非活動狀態。
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 虹膜
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 微信掃碼
+
+
+
+ S:
+
+
+
+ tablet device
+
+
Screensaver
@@ -2053,7 +2394,7 @@
您有新通知
-
+
視圖
@@ -2225,7 +2566,7 @@
delay
-
+
顯示鎖定多長時間
@@ -2233,7 +2574,7 @@
has-lock
-
+
如果顯示鎖定
@@ -2247,8 +2588,8 @@
-
+
立即鎖定螢幕
@@ -2273,53 +2614,53 @@
顯示空白和延遲鎖定,參數:空閒/蓋子/低功耗
-
+
ukui 螢幕保護程序的對話框。
-
+
由會話空閒信號啟動
-
-
+
+
鎖定螢幕並立即顯示螢幕保護程式
-
+
立即顯示螢幕保護程式
-
+
立即顯示空白螢幕保護程式並延遲顯示鎖定的時間
-
+
立即顯示空白螢幕保護程式,如果鎖定
-
+
ukui螢幕保護程式的螢幕保護程式
-
+
在根視窗上顯示
-
+
在視窗上顯示。
-
+
窗口標識
diff --git a/src/common/definetypes.h b/src/common/definetypes.h
index b0b2428..21957bd 100644
--- a/src/common/definetypes.h
+++ b/src/common/definetypes.h
@@ -207,7 +207,7 @@ enum SessionStatus
#define SSWND_DBUS_PATH "/"
#define SSWND_DBUS_INTERFACE "org.ukui.ScreenSaverWnd"
-#define DEFAULT_BACKGROUND_PATH "/usr/share/backgrounds/1-warty-final-ubuntukylin.jpg"
+#define DEFAULT_BACKGROUND_PATH "/usr/share/backgrounds/1-openkylin.jpg"
#define G_FONT_SIZE (11.0)
#define DEFAULT_FONT_SIZE (10.0)
diff --git a/src/common/global_utils.cpp b/src/common/global_utils.cpp
index 14c0076..77aa248 100644
--- a/src/common/global_utils.cpp
+++ b/src/common/global_utils.cpp
@@ -45,6 +45,16 @@ bool isGreeterMode()
return (bool)(nIsGreeter);
}
+bool isCurUserSelf(QString strUserName)
+{
+ QString username = getenv("USER");
+ if (username == strUserName) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
/**
* @brief 删除给定字符串前后的空格、制表符、换行符,注意该操作会修改原字符串
*
diff --git a/src/common/global_utils.h b/src/common/global_utils.h
index 15888e9..fb3bd86 100644
--- a/src/common/global_utils.h
+++ b/src/common/global_utils.h
@@ -27,6 +27,13 @@
*/
bool isGreeterMode();
+/**
+ * @brief isCurUserSelf 是否为当前用户自己
+ * @param QString 用户名
+ * @return true 是,false 否
+ */
+bool isCurUserSelf(QString strUserName);
+
/**
* @brief getHostCloudPlatform 获取当前云平台环境
* @return 云环境标识
diff --git a/src/dbusifs/accountservicehelper.cpp b/src/dbusifs/accountservicehelper.cpp
index 98319cd..a7c426d 100644
--- a/src/dbusifs/accountservicehelper.cpp
+++ b/src/dbusifs/accountservicehelper.cpp
@@ -104,3 +104,24 @@ QString AccountServiceHelper::getUserSessionByName(QString strUserName)
}
return strSession;
}
+
+QString AccountServiceHelper::getAccountBackground(uid_t uid)
+{
+ QString strBackground = "";
+ if(!m_accountsInterface)
+ return strBackground;
+ QDBusReply userPath = m_accountsInterface->call("FindUserById", (qint64)uid);
+ if(!userPath.isValid())
+ qWarning() << "Get UserPath error:" << userPath.error();
+ else {
+ QDBusInterface userIface(accountsService, userPath.value().path(),
+ propertiesInterface, QDBusConnection::systemBus());
+ QDBusReply backgroundReply = userIface.call("Get", accountsUserInterface, "BackgroundFile");
+ if(!backgroundReply.isValid())
+ qWarning() << "Get User's BackgroundFile error" << backgroundReply.error();
+ else {
+ strBackground = backgroundReply.value().variant().toString();
+ }
+ }
+ return strBackground;
+}
diff --git a/src/dbusifs/accountservicehelper.h b/src/dbusifs/accountservicehelper.h
index 376a05b..74fb23b 100644
--- a/src/dbusifs/accountservicehelper.h
+++ b/src/dbusifs/accountservicehelper.h
@@ -35,6 +35,8 @@ public:
QString getUserSessionByName(QString strUserName);
+ QString getAccountBackground(uid_t uid);
+
private:
QDBusInterface *m_accountsInterface = nullptr;
};
diff --git a/src/lock-backend/dbusupperinterface.cpp b/src/lock-backend/dbusupperinterface.cpp
index 99bc33e..75ff0a4 100644
--- a/src/lock-backend/dbusupperinterface.cpp
+++ b/src/lock-backend/dbusupperinterface.cpp
@@ -55,7 +55,8 @@ void DbusUpperInterface::initData()
{
m_bLockState = false;
m_bSlpState = false;
- m_lightDmHelper = new LightDMHelper(this);
+ m_accountsHelper = new AccountServiceHelper(this);
+ m_lightDmHelper = new LightDMHelper(m_accountsHelper, this);
m_login1Helper = new Login1Helper(this);
m_config = new Configuration(this);
m_gsettingsHelper = new GSettingsHelper(this);
@@ -63,7 +64,6 @@ void DbusUpperInterface::initData()
m_pamAuth = new PamAuthenticate(m_lightDmHelper, this);
m_usdHelper= new UsdHelper(this);
m_upowerHelper = new UpowerHelper(this);
- m_accountsHelper = new AccountServiceHelper(this);
m_sessionHelper = new SessionHelper(this);
m_sessionWatcher = new SessionWatcher(m_gsettingsHelper, this);
m_kglobalHelper = new KglobalAccelHelper(this);
@@ -142,7 +142,8 @@ bool DbusUpperInterface::GetSlpState()
void DbusUpperInterface::LockStartupMode()
{
-
+ if(GetLockState())
+ return ;
if(m_procLockDialog.state() != QProcess::NotRunning) {
QDBusMessage message;
message = QDBusMessage::createSignal(SS_DBUS_PATH,
@@ -150,6 +151,7 @@ void DbusUpperInterface::LockStartupMode()
"SecondRunParam");
message<<"StartupLock";
QDBusConnection::sessionBus().send(message);
+ emitLockState(true);
return ;
}
@@ -179,6 +181,9 @@ bool DbusUpperInterface::GetLockState()
void DbusUpperInterface::Lock()
{
+ if(GetLockState())
+ return;
+
if(m_procLockDialog.state() != QProcess::NotRunning) {
QDBusMessage message;
message = QDBusMessage::createSignal(SS_DBUS_PATH,
@@ -186,6 +191,7 @@ void DbusUpperInterface::Lock()
"SecondRunParam");
message<<"CmdLock";
QDBusConnection::sessionBus().send(message);
+ emitLockState(true);
return ;
}
qDebug() << "Lock requested";
@@ -232,6 +238,10 @@ bool DbusUpperInterface::LockByBlank(int nType)
}
if(m_procLockDialog.state() != QProcess::NotRunning) {
if (isNeedLock) {
+ if(!lockState){
+ //锁屏状态通过lockState获取,如果未锁屏,则发送锁屏信号
+ emitLockState(true);
+ }
QDBusMessage message;
message = QDBusMessage::createSignal(SS_DBUS_PATH,
SS_DBUS_INTERFACE,
@@ -279,6 +289,9 @@ void DbusUpperInterface::SetLockState()
void DbusUpperInterface::onShowBlankScreensaver()
{
+ if(GetLockState())
+ return;
+
if(m_procLockDialog.state() != QProcess::NotRunning) {
QDBusMessage message;
message = QDBusMessage::createSignal(SS_DBUS_PATH,
@@ -301,8 +314,10 @@ void DbusUpperInterface::onShowBlankScreensaver()
void DbusUpperInterface::ShowScreensaver()
{
-
if(m_procLockDialog.state() != QProcess::NotRunning){
+ if(!lockState){
+ emitLockState(true);
+ }
QDBusMessage message;
message = QDBusMessage::createSignal(SS_DBUS_PATH,
SS_DBUS_INTERFACE,
@@ -310,7 +325,6 @@ void DbusUpperInterface::ShowScreensaver()
message<<"ScreensaverLock";
QDBusConnection::sessionBus().send(message);
return ;
- return ;
}
m_bSlpState = true;
@@ -676,7 +690,12 @@ QJsonArray DbusUpperInterface::GenerateUserInfoList()
objUserInfo["fontSize"] = ptr->fontSize();
objUserInfo["timeType"] = ptr->timeType();
objUserInfo["color"] = ptr->color();
-
+ }
+ if (isCurUserSelf(userInfo->name()) && m_gsettingsHelper) {
+ QString strBackground = m_gsettingsHelper->GetLockScreenConf(KEY_BACKGROUND).toString();
+ if (!strBackground.isEmpty() && QFile(strBackground).exists()) {
+ objUserInfo["backGround"] = strBackground;
+ }
}
jsonArray.append(objUserInfo);
}
@@ -928,6 +947,7 @@ void DbusUpperInterface::onLogin1ReqLock()
QJsonObject retObj;
retObj["CmdId"] = LOCK_CMD_ID_LOGIN1_REQ_LOCK;
SendUpdateInfoSig(QString(QJsonDocument(retObj).toJson()));
+ ShowScreensaver();
}
void DbusUpperInterface::onLogin1ReqUnLock()
@@ -1078,23 +1098,27 @@ void DbusUpperInterface::onBatteryChanged(QStringList batteryArgs)
void DbusUpperInterface::onLockScreenConfigChanged(QString strKey, QVariant value)
{
+ if (strKey == KEY_BACKGROUND) {
+ onUsersInfoChanged();
+ }
QJsonObject retObj;
retObj["CmdId"] = LOCK_CMD_ID_GSETTINGS_LOCKSCREEN_CONF_CHANGED;
+ retObj["Key"] = strKey;
switch (value.type()) {
case QVariant::Bool:
- retObj[strKey] = value.toBool();
+ retObj["Value"] = value.toBool();
break;
case QVariant::Int:
- retObj[strKey] = value.toInt();
+ retObj["Value"] = value.toInt();
break;
case QVariant::String:
- retObj[strKey] = value.toString();
+ retObj["Value"] = value.toString();
break;
case QVariant::UInt:
- retObj[strKey] = value.toDouble();
+ retObj["Value"] = value.toDouble();
break;
case QVariant::Double:
- retObj[strKey] = value.toDouble();
+ retObj["Value"] = value.toDouble();
break;
default:
return;
@@ -1822,7 +1846,15 @@ int DbusUpperInterface::PamRespond(const QJsonObject &objInfo)
int nRet = -1;
QVariant varRespond = objInfo.value("Content");
if (varRespond.isValid() && m_pamAuth) {
- m_pamAuth->respond(varRespond.toString());
+ QString strDecrypt = varRespond.toString();
+ if (!priKey.isEmpty()) {
+ QByteArray buffer;
+ QByteArray byteEncrypt = QByteArray::fromBase64(strDecrypt.toLatin1());
+ if (rsac.decrypt(byteEncrypt, buffer, priKey)) {
+ strDecrypt = buffer;
+ }
+ }
+ m_pamAuth->respond(strDecrypt);
nRet = 0;
}
return nRet;
@@ -2159,7 +2191,11 @@ bool DbusUpperInterface::blockShortcut(const QJsonObject &objInfo)
bool DbusUpperInterface::lockStateChanged(const QJsonObject &objInfo)
{
int nRet = -1;
- lockState = objInfo.value("Content").toBool();
+ bool state = objInfo.value("Content").toBool();
+ if(lockState != state){
+ lockState = state;
+ emitLockState(state);
+ }
return lockState;
}
diff --git a/src/lock-backend/gsettingshelper.cpp b/src/lock-backend/gsettingshelper.cpp
index 0dc164a..ab547eb 100644
--- a/src/lock-backend/gsettingshelper.cpp
+++ b/src/lock-backend/gsettingshelper.cpp
@@ -307,7 +307,7 @@ void GSettingsHelper::onLockScreenConfigChanged(QString strKey)
} else if (strKey == KEY_LOCK_ENABLED) {
varValue = m_bLockEnable = m_gsLockScreen->get(KEY_LOCK_ENABLED).toBool();
} else if (strKey == KEY_BACKGROUND) {
- varValue = m_strBackground = m_gsLockScreen->get(KEY_BACKGROUND).toBool();
+ varValue = m_strBackground = m_gsLockScreen->get(KEY_BACKGROUND).toString();
} else if (strKey == KEY_MODE) {
varValue = m_saverMode = m_gsLockScreen->get(KEY_MODE).toString();
} else if (strKey == KEY_THEMES) {
diff --git a/src/lock-backend/lightdmhelper.cpp b/src/lock-backend/lightdmhelper.cpp
index 1affdd6..6c50c53 100644
--- a/src/lock-backend/lightdmhelper.cpp
+++ b/src/lock-backend/lightdmhelper.cpp
@@ -22,12 +22,14 @@
#include "securityuser.h"
#include
#include "proxymodel.h"
+#include "accountservicehelper.h"
-LightDMHelper::LightDMHelper(QObject *parent)
+LightDMHelper::LightDMHelper(AccountServiceHelper *accountHelper, QObject *parent)
: QLightDM::Greeter(parent)
, m_sessionsModel(nullptr)
, m_secUser(SecurityUser::instance())
, m_strCurUserName("")
+ , m_accountServiceHelper(accountHelper)
{
//连接到lightdm
if(!connectToDaemonSync()){
@@ -195,6 +197,8 @@ void LightDMHelper::updateUsersInfo()
if(m_secUser->isSecrityUser(name)) {
std::shared_ptr userInfoPtr = std::make_shared();
userInfoPtr->updateName(name);
+ uid_t uid = m_modelUsers->index(i).data(QLightDM::UsersModel::UidRole).toUInt();
+ userInfoPtr->updateUid(uid);
QString strRealName = m_modelUsers->index(i).data(QLightDM::UsersModel::RealNameRole).toString();
if (strRealName.isEmpty()) {
strRealName = name;
@@ -203,13 +207,18 @@ void LightDMHelper::updateUsersInfo()
QString strBackGround = m_modelUsers->index(i).data(QLightDM::UsersModel::BackgroundPathRole).toString();
if (!strBackGround.isEmpty() && QFileInfo(strBackGround).exists()){
userInfoPtr->updateBackground(strBackGround);
+ } else {
+ if (m_accountServiceHelper) {
+ strBackGround = m_accountServiceHelper->getAccountBackground(uid);
+ if (!strBackGround.isEmpty() && QFileInfo(strBackGround).exists()){
+ userInfoPtr->updateBackground(strBackGround);
+ }
+ }
}
QString strImgHead = m_modelUsers->index(i).data(QLightDM::UsersModel::ImagePathRole).toString();
if (!strImgHead.isEmpty() && QFileInfo(strImgHead).exists()){
userInfoPtr->updateHeadImage(strImgHead);
}
- uid_t uid = m_modelUsers->index(i).data(QLightDM::UsersModel::UidRole).toUInt();
- userInfoPtr->updateUid(uid);
bool isLoggedIn = m_modelUsers->index(i).data(QLightDM::UsersModel::LoggedInRole).toBool();
userInfoPtr->updateLoggedIn(isLoggedIn);
diff --git a/src/lock-backend/lightdmhelper.h b/src/lock-backend/lightdmhelper.h
index a2d3863..54829fd 100644
--- a/src/lock-backend/lightdmhelper.h
+++ b/src/lock-backend/lightdmhelper.h
@@ -28,6 +28,7 @@
class SecurityUser;
class UsersModel;
+class AccountServiceHelper;
/**
* @brief lightdm工具类
*
@@ -41,7 +42,7 @@ public:
*
* @param parent 父指针
*/
- explicit LightDMHelper(QObject *parent = nullptr);
+ explicit LightDMHelper(AccountServiceHelper *accountHelper, QObject *parent = nullptr);
public:
/**
@@ -161,6 +162,7 @@ private:
QLightDM::SessionsModel *m_sessionsModel; /**< lightdm 会话数据指针 */
QList m_listSessions; /**< 会话列表 */
UsersModel *m_modelUsers = nullptr; /**< lightdm 用户数据指针 */
+ AccountServiceHelper *m_accountServiceHelper = nullptr;
};
#endif // LIGHTDMHELPER_H
diff --git a/src/lock-dialog/backenddbushelper.cpp b/src/lock-dialog/backenddbushelper.cpp
index ab7fc8f..a49d5f7 100644
--- a/src/lock-dialog/backenddbushelper.cpp
+++ b/src/lock-dialog/backenddbushelper.cpp
@@ -996,7 +996,7 @@ void BackendDbusHelper::onUpdateInformation(const QString &strJson)
ParseLogin1SessionActiveChanged(objRes);
}
break;
- case LOCK_CMD_ID_GSETTINGS_GET_LOCKSCREEN_CONF:
+ case LOCK_CMD_ID_GSETTINGS_LOCKSCREEN_CONF_CHANGED:
{
ParseLockScreenConf(objRes);
}
@@ -1006,6 +1006,31 @@ void BackendDbusHelper::onUpdateInformation(const QString &strJson)
ParseScreenSaverConf(objRes);
}
break;
+ case LOCK_CMD_ID_GSETTINGS_POWERMANAGER_CONF_CHANGED:
+ {
+ ParsePowerManagerConf(objRes);
+ }
+ break;
+ case LOCK_CMD_ID_GSETTINGS_MATEBG_CONF_CHANGED:
+ {
+ ParseMateBgConf(objRes);
+ }
+ break;
+ case LOCK_CMD_ID_GSETTINGS_UKCCPLUGINS_CONF_CHANGED:
+ {
+ ParseUkccPluginsConf(objRes);
+ }
+ break;
+ case LOCK_CMD_ID_GSETTINGS_THEMESTYLE_CONF_CHANGED:
+ {
+ ParseThemeStyleConf(objRes);
+ }
+ break;
+ case LOCK_CMD_ID_GSETTINGS_SESSION_CONF_CHANGED:
+ {
+ ParseSessionConf(objRes);
+ }
+ break;
case LOCK_CMD_ID_LOGIN1_LIDSTATE_CHANGED:
{
ParseLidstateChanged(objRes);
@@ -2360,14 +2385,13 @@ QString BackendDbusHelper::getPublicEncrypt()
if (objRes.contains("CmdId") && objRes.contains("Ret") && objRes.contains("Content")) {
int nCmdId = objRes.value("CmdId").toInt(-1);
int nRet = objRes.value("Ret").toInt(-1);
- QJsonObject object = objRes.value("Content").toObject();
- if (nCmdId != LOCK_CMD_ID_GET_PUBLIC_KEY || nRet != 0 || object.isEmpty()) {
- qInfo()<<"getAgreementInfo Failed!!";
+ if (nCmdId != LOCK_CMD_ID_GET_PUBLIC_KEY || nRet != 0 ) {
+ qInfo()<<"getPublicEncrypt Failed!!";
} else {
publicEncrypt = objRes.value("Content").toString();
}
} else {
- qInfo()<<"getAgreementInfo Json is invalid!!";
+ qInfo()<<"getPublicEncrypt Json is invalid!!";
}
}
}
diff --git a/src/lock-dialog/lockdialogmodel.cpp b/src/lock-dialog/lockdialogmodel.cpp
index f3dc51e..d8b06a3 100644
--- a/src/lock-dialog/lockdialogmodel.cpp
+++ b/src/lock-dialog/lockdialogmodel.cpp
@@ -22,6 +22,8 @@
#include
#include
#include
+#include
+#include
#include "utils.h"
#include "definetypes.h"
@@ -283,6 +285,20 @@ ScreenSaver *LockDialogModel::getScreensaver()
return saver;
}
+double LockDialogModel::getCurFontSize()
+{
+ double defaultFontSize = getDefaultFontSize();
+ return m_curFontSize - defaultFontSize;
+}
+
+double LockDialogModel::getPtToPx()
+{
+ double m_ptTopx = 1.0;
+ if (QApplication::primaryScreen()->logicalDotsPerInch() > 0)
+ m_ptTopx = 72/(QApplication::primaryScreen()->logicalDotsPerInch());
+ return m_ptTopx;
+}
+
QString LockDialogModel::getXScreensaverPath(const QString &theme)
{
/* screensavers-ukui-binaryring => binaryring */
@@ -321,6 +337,17 @@ void LockDialogModel::onLockScreenConfChanged(const QString &key, QVariant value
m_imageTSEffect = value.toInt();
} else if (key ==KEY_IMAGE_SWITCH_INTERVAL) {
m_imageSwitchInterval = value.toInt();
+ } else if (key ==KEY_LOCK_TIMEOUT){
+ m_lockTimeout = value.toInt();
+ } else if (key ==KEY_LOCK_ENABLED){
+ m_lockEnabled = value.toBool();
+ }
+}
+
+void LockDialogModel::onThemeStyleConfChanged(const QString &key, QVariant value)
+{
+ if (key == KEY_SYSTEM_FONT_SIZE) {
+ m_curFontSize = value.toDouble();
}
}
@@ -360,6 +387,16 @@ void LockDialogModel::updateUsdMediaKeys(QString keys, QString value)
}
+void LockDialogModel::updateLockEnabled(bool value)
+{
+ m_lockEnabled = value;
+}
+
+void LockDialogModel::updateLockTimeout(int value)
+{
+ m_lockTimeout = value;
+}
+
void LockDialogModel::updateScreensaverMode(QString value)
{
m_saverMode = value;
diff --git a/src/lock-dialog/lockdialogmodel.h b/src/lock-dialog/lockdialogmodel.h
index 8f09ae2..79d5dc6 100644
--- a/src/lock-dialog/lockdialogmodel.h
+++ b/src/lock-dialog/lockdialogmodel.h
@@ -119,6 +119,10 @@ public:
void updateScreensaverImageSwitchInterval(int value);
+ void updateLockTimeout(int value);
+
+ void updateLockEnabled(bool value);
+
inline QStringList sessionsInfo() { return m_listSessions; }
inline void updateCurSession(const QString &strSession) { m_strCurSession = strSession; }
@@ -139,6 +143,8 @@ public:
void updateAgreementInfo(AgreementInfoPtr agreementInfo);
+ void updateSystemFontSize(double fontSize) { m_curFontSize = fontSize; }
+
inline AgreementInfoPtr agreementInfo() { return m_agreementInfo;}
inline bool getAgreementWindowShowLoginPrompt() { return m_agreementInfo->showLoginPrompt(); }
@@ -180,6 +186,14 @@ public:
inline int getLoggedInUsersCount() { return m_loggedinUsersCount; }
+ double getCurFontSize();
+
+ double getPtToPx();
+
+ inline int getLockTimeout() {return m_lockTimeout; }
+
+ inline bool getLockEnabled() {return m_lockEnabled; }
+
public Q_SLOTS:
/**
* @brief 会话激活状态改变
@@ -218,6 +232,8 @@ public Q_SLOTS:
void onLockScreenConfChanged(const QString &key, QVariant value);
+ void onThemeStyleConfChanged(const QString &key, QVariant value);
+
Q_SIGNALS:
/**
* @brief 请求解锁会话
@@ -377,6 +393,9 @@ private:
QStringList m_sleepLockcheck;
QStringList m_shutdownLockcheck;
int m_loggedinUsersCount = 0;
+ int m_lockTimeout = 10;
+ bool m_lockEnabled = true;
+ double m_curFontSize;
};
#endif // LOCKDIALOGMODEL_H
diff --git a/src/lock-dialog/lockdialogperformer.cpp b/src/lock-dialog/lockdialogperformer.cpp
index 626ec92..3f34f71 100644
--- a/src/lock-dialog/lockdialogperformer.cpp
+++ b/src/lock-dialog/lockdialogperformer.cpp
@@ -19,6 +19,7 @@
#include "lockdialogmodel.h"
#include "backenddbushelper.h"
#include "utils.h"
+#include "rsac.h"
LockDialogPerformer::LockDialogPerformer(LockDialogModel *model, QObject *parent)
: QObject(parent)
@@ -53,6 +54,7 @@ void LockDialogPerformer::initConnections()
connect(m_bdHelper, &BackendDbusHelper::batteryChanged, m_modelLockDialog, &LockDialogModel::batteryChanged);
connect(m_bdHelper, &BackendDbusHelper::SecondRunParam, m_modelLockDialog, &LockDialogModel::onSecondRunParam);
connect(m_bdHelper, &BackendDbusHelper::lockScreenConfChanged, m_modelLockDialog, &LockDialogModel::onLockScreenConfChanged);
+ connect(m_bdHelper, &BackendDbusHelper::themeStyleConfChanged, m_modelLockDialog, &LockDialogModel::onThemeStyleConfChanged);
// pam signals
connect(m_bdHelper, SIGNAL(pamShowMessage(QString, int)), m_modelLockDialog, SIGNAL(pamShowMessage(QString, int)));
@@ -73,7 +75,18 @@ void LockDialogPerformer::initConnections()
connect(m_modelLockDialog, &LockDialogModel::setCurrentSession, m_bdHelper, &BackendDbusHelper::setCurrentSession);
connect(m_modelLockDialog, &LockDialogModel::startSession, m_bdHelper, &BackendDbusHelper::startSession);
connect(m_modelLockDialog, &LockDialogModel::pamAuthenticate, m_bdHelper, &BackendDbusHelper::pamAuthenticate);
- connect(m_modelLockDialog, &LockDialogModel::pamRespond, m_bdHelper, &BackendDbusHelper::pamRespond);
+ connect(m_modelLockDialog, &LockDialogModel::pamRespond, m_bdHelper, [=](const QString &strResponse){
+ QString strEncrypt = strResponse;
+ QString strPublicKey = m_bdHelper->getPublicEncrypt();
+ if (!strPublicKey.isEmpty()) {
+ QByteArray buffer;
+ RSAC rsac;
+ if (rsac.encrypt(strEncrypt.toLatin1(), buffer, strPublicKey.toLatin1())) {
+ strEncrypt = buffer.toBase64();
+ }
+ }
+ m_bdHelper->pamRespond(strEncrypt);
+ });
connect(m_modelLockDialog, &LockDialogModel::pamAuthenticateCancel, m_bdHelper, &BackendDbusHelper::pamAuthenticateCancel);
connect(m_modelLockDialog, &LockDialogModel::pamIsInAuthentication, m_bdHelper, &BackendDbusHelper::pamIsInAuthentication);
connect(m_modelLockDialog, &LockDialogModel::pamIsAuthenticated, m_bdHelper, &BackendDbusHelper::pamIsAuthenticated);
@@ -127,5 +140,8 @@ void LockDialogPerformer::initData()
m_modelLockDialog->updateSleepLockcheck(m_bdHelper->getSleepLockcheck());
m_modelLockDialog->updateShutdownLockcheck(m_bdHelper->getShutdownLockcheck());
m_modelLockDialog->updateLoggedInUsersCount();
+ m_modelLockDialog->updateLockTimeout(m_bdHelper->getLockScreenConf(KEY_LOCK_TIMEOUT).toInt());
+ m_modelLockDialog->updateLockEnabled(m_bdHelper->getLockScreenConf(KEY_LOCK_ENABLED).toBool());
+ m_modelLockDialog->updateSystemFontSize(m_bdHelper->getThemeStyleConf(KEY_SYSTEM_FONT_SIZE).toDouble());
}
diff --git a/src/widgets/authdialog.cpp b/src/widgets/authdialog.cpp
index 480d818..e76c600 100644
--- a/src/widgets/authdialog.cpp
+++ b/src/widgets/authdialog.cpp
@@ -35,6 +35,8 @@ void AuthDialog::initUI()
mainLayout->setAlignment(Qt::AlignCenter);
mainLayout->setSpacing(16);
mainLayout->setContentsMargins(0, 0, 0, 0);
+ m_curFontSize = m_modelLockDialog->getCurFontSize();
+ m_ptToPx = m_modelLockDialog->getPtToPx();
// 生物认证提示
m_tipWidget = new QWidget(this);
@@ -117,42 +119,60 @@ void AuthDialog::updateAuthSize()
this->layout()->setSpacing(16*scale);
if (m_tipWidget)
m_tipWidget->setFixedSize(this->width(), 40*scale);
- if (m_tipWidget)
+ if (m_headerWidget)
m_headerWidget->setFixedSize(this->width(), 154*scale);
- if (m_tipWidget)
+ if (m_nameWidget)
m_nameWidget->setFixedSize(this->width(), 40*scale);
- if (m_tipWidget)
+ if (m_editWidget)
m_editWidget->setFixedSize(this->width(), 80*scale);
- if (m_tipWidget)
+ if (m_messageWidget)
m_messageWidget->setFixedSize(this->width(), 40*scale);
- if (m_tipWidget)
+ if (m_ukeyPasswdWidget)
m_ukeyPasswdWidget->setFixedSize(this->width(), 80*scale);
- if (m_tipWidget)
+ if (m_widgetLoginOpts)
m_widgetLoginOpts->setFixedSize(this->width(), 104*scale);
- if (m_tipWidget)
+ if (m_labelLoginTypeTip) {
m_labelLoginTypeTip->setFixedSize(m_tipWidget->size());
- if (m_tipWidget)
+ m_labelLoginTypeTip->setFontSize((14 + m_curFontSize)*m_ptToPx);
+ }
+ if (m_labelHeadImg)
m_labelHeadImg->setFixedSize(154*scale, 154*scale);
- if (m_tipWidget)
+ if (m_labelFace)
m_labelFace->setFixedSize(154*scale, 154*scale);
- if (m_tipWidget)
+ if (m_labelQRCode)
m_labelQRCode->setFixedSize(154*scale, 154*scale);
- if (m_tipWidget)
+ if (m_labelQRCodeTip)
m_labelQRCodeTip->setFixedSize(22*scale, 22*scale);
- if (m_tipWidget)
+ if (m_labelQRCodeMsg) {
m_labelQRCodeMsg->setFixedHeight(30*scale);
- if (m_tipWidget)
+ m_labelQRCodeMsg->setFontSize((14 + m_curFontSize)*m_ptToPx);
+ }
+ if (m_nameLabel) {
m_nameLabel->setFixedSize(this->width(), 40*scale);
- if (m_tipWidget)
+ m_nameLabel->setFontSize((24 + m_curFontSize)*m_ptToPx);
+ }
+ if (m_passwordEdit) {
m_passwordEdit->setFixedSize(240*scale, 40*scale);
- if (m_tipWidget)
+ m_passwordEdit->updateUI();
+ }
+ if (m_messageLabel) {
m_messageLabel->setFixedSize(this->width(), 40*scale);
- if (m_tipWidget)
+ m_messageLabel->setFontSize((14 + m_curFontSize)*m_ptToPx);
+ }
+ if (m_messageButton) {
m_messageButton->setFixedSize(200*scale, 40*scale);
- if (m_tipWidget)
+ QFont font = m_messageButton->font();
+ font.setPointSize((14 + m_curFontSize)*m_ptToPx);
+ m_messageButton->setFont(font);
+ }
+ if (m_ukeyPasswordEdit) {
m_ukeyPasswordEdit->setFixedSize(240*scale, 40*scale);
- if (m_tipWidget)
+ m_ukeyPasswordEdit->updateUI();
+ }
+ if (m_ukeyMessageLabel) {
m_ukeyMessageLabel->setFixedSize(this->width(), 40*scale);
+ m_ukeyMessageLabel->setFontSize((14 + m_curFontSize)*m_ptToPx);
+ }
if (bottomListWidget) {
bottomListWidget->setFixedSize(QSize(48*bottomListWidget->count() + bottomListWidget->spacing()*2*bottomListWidget->count(), 64));
bottomListWidget->updateUI();
@@ -168,7 +188,7 @@ void AuthDialog::initTipWidget()
QVBoxLayout *tipLayout = new QVBoxLayout(m_tipWidget);
tipLayout->setAlignment(Qt::AlignCenter);
m_labelLoginTypeTip = new KLabel(m_tipWidget);
- m_labelLoginTypeTip->setText("测试测试测试测试222222222222222222222222222222222222222222222222222222222222");
+ m_labelLoginTypeTip->setText("");
m_labelLoginTypeTip->setAlignment(Qt::AlignCenter);
m_labelLoginTypeTip->setFixedSize(m_tipWidget->size());
}
@@ -210,7 +230,6 @@ void AuthDialog::initHeaderWidget()
m_labelQRCodeTip->setPixmap(QIcon::fromTheme("dialog-warning").pixmap(QSize(22,22)));
m_labelQRCodeTip->show();
m_labelQRCodeMsg = new KLabel();
- m_labelQRCodeMsg->setFontSize(14);
m_labelQRCodeMsg->setStyleSheet("QLabel{background-color:rgba(255,255,255,0);color:rgb(255,0,0)}");
m_labelQRCodeMsg->hide();
layoutQRCode->addWidget(m_labelQRCodeMsg, 0, Qt::AlignHCenter);
@@ -225,7 +244,6 @@ void AuthDialog::initNameWidget()
nameLayout->setContentsMargins(0, 0, 0, 0);
m_nameLabel = new KLabel(m_nameWidget);
m_nameLabel->setAlignment(Qt::AlignCenter);
- m_nameLabel->setFontSize(22);
}
void AuthDialog::initEditWidget()
diff --git a/src/widgets/authdialog.h b/src/widgets/authdialog.h
index e837c19..9d52775 100644
--- a/src/widgets/authdialog.h
+++ b/src/widgets/authdialog.h
@@ -248,5 +248,8 @@ private:
bool m_isLockingFlg; //判断当前是否正在锁定倒计时
int m_nCurLockMin; //当前锁定的分钟数
QTimer *m_timerUserUnlock = nullptr;
+
+ double m_curFontSize;
+ double m_ptToPx = 1.0;
};
#endif // AUTHDIALOG_H
diff --git a/src/widgets/biobuttonlistwidget.cpp b/src/widgets/biobuttonlistwidget.cpp
index 4eac689..04c455b 100644
--- a/src/widgets/biobuttonlistwidget.cpp
+++ b/src/widgets/biobuttonlistwidget.cpp
@@ -33,6 +33,12 @@ void BioButtonListWidget::initConnections()
connect(this, &BioButtonListWidget::currentItemChanged, this, &BioButtonListWidget::onListItemChanged);
}
+void BioButtonListWidget::resizeEvent(QResizeEvent *event)
+{
+ updateUI();
+}
+
+
void BioButtonListWidget::addOptionButton(unsigned uLoginOptType, int nDrvId, QString strDrvName)
{
m_listDriveId.append(nDrvId);
@@ -108,6 +114,7 @@ void BioButtonListWidget::updateUI()
QList statusButton = this->findChildren();
for (auto button : statusButton) {
button->setFixedSize(48*scale, 48*scale);
+ button->setIconSize(QSize(24*scale, 24*scale));
}
}
diff --git a/src/widgets/biobuttonlistwidget.h b/src/widgets/biobuttonlistwidget.h
index 5699088..a095d47 100644
--- a/src/widgets/biobuttonlistwidget.h
+++ b/src/widgets/biobuttonlistwidget.h
@@ -31,6 +31,8 @@ Q_SIGNALS:
private:
void initUI();
void initConnections();
+protected:
+ void resizeEvent(QResizeEvent *event);
private:
QList m_listDriveId;
diff --git a/src/widgets/blockwidget.cpp b/src/widgets/blockwidget.cpp
index c0ff01a..48f3418 100644
--- a/src/widgets/blockwidget.cpp
+++ b/src/widgets/blockwidget.cpp
@@ -1,13 +1,17 @@
#include "blockwidget.h"
#include "klabel.h"
#include "statusbutton.h"
+#include "../lock-dialog/lockdialogmodel.h"
#include
#include
#include
#include
#include
#include
-BlockWidget::BlockWidget(QWidget* parent) : QWidget(parent)
+
+BlockWidget::BlockWidget(LockDialogModel *model, QWidget* parent)
+ : QWidget(parent)
+ , m_modelLockDialog(model)
{
initUi();
setFocusPolicy(Qt::NoFocus);
@@ -49,6 +53,10 @@ void BlockWidget::initUi()
mainLayout->addLayout(buttonLayout);
mainLayout->addStretch();
+ m_curFontSize = m_modelLockDialog->getCurFontSize();
+ m_ptToPx = m_modelLockDialog->getPtToPx();
+ m_tipLabel->setFontSize((14 + m_curFontSize)*m_ptToPx);
+
connect(m_cancelButton, &QPushButton::clicked, this, [&]() { emit cancelButtonclicked(); });
connect(m_confirmButton, &QPushButton::clicked, this, [&]() { emit confirmButtonclicked(); });
}
@@ -64,9 +72,9 @@ void BlockWidget::setTips(const QString tips)
m_confirmButton->setStyleSheet("QPushButton{background: rgba(255, 255, 255, 0.2);border-radius: 8px;color: white;}"
"QPushButton:hover{background: rgba(255, 255, 255, 0.4);border-radius: 8px;}"
"QPushButton:pressed {background: rgba(255, 255, 255, 0.3);border-radius: 8px;}");
- // sysFont.setPointSize((16 + curFontSize) *m_ptToPx);
- // m_confirmButton->setFont(sysFont);
- // m_cancelButton->setFont(sysFont);
+ sysFont.setPointSize((16 + m_curFontSize) *m_ptToPx);
+ m_confirmButton->setFont(sysFont);
+ m_cancelButton->setFont(sysFont);
m_confirmButton->show();
m_tipLabel->show();
m_listView->hide();
@@ -108,8 +116,8 @@ void BlockWidget::setWarning(QStringList list, int type)
m_listView->verticalScrollMode();
m_listView->setStyleSheet("color:white; background-color: rgba(255,255,255,30%); border-radius: 12px;");
-// sysFont.setPointSize((10 + curFontSize) *m_ptToPx);
-// m_listView->setFont(sysFont);
+ sysFont.setPointSize((10 + m_curFontSize) *m_ptToPx);
+ m_listView->setFont(sysFont);
m_listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
m_listView->setIconSize(QSize(32,32));
m_listView->setModel(model);
@@ -120,7 +128,7 @@ void BlockWidget::setWarning(QStringList list, int type)
m_cancelButton->setStyleSheet("QPushButton{background: rgba(255, 255, 255, 0.2);border-radius: 8px;color: white;}"
"QPushButton:hover{background: rgba(255, 255, 255, 0.4);border-radius: 8px;}"
"QPushButton:pressed {background: rgba(255, 255, 255, 0.3);border-radius: 8px;}");
-// sysFont.setPointSize((16 + curFontSize) *m_ptToPx);
-// m_cancelButton->setFont(sysFont);
+ sysFont.setPointSize((16 + m_curFontSize) *m_ptToPx);
+ m_cancelButton->setFont(sysFont);
}
diff --git a/src/widgets/blockwidget.h b/src/widgets/blockwidget.h
index 0612540..3427779 100644
--- a/src/widgets/blockwidget.h
+++ b/src/widgets/blockwidget.h
@@ -7,13 +7,14 @@
class KLabel;
class QPushButton;
class QListView;
+class LockDialogModel;
class BlockWidget : public QWidget
{
Q_OBJECT
public:
- explicit BlockWidget(QWidget *parent = nullptr);
+ explicit BlockWidget(LockDialogModel *model, QWidget *parent = nullptr);
~BlockWidget();
void setTips(const QString tips);
void setWarning(QStringList list, int type);
@@ -28,10 +29,13 @@ private:
QListView *m_listView = nullptr;
QPushButton *m_cancelButton = nullptr;
QPushButton *m_confirmButton = nullptr;
+ LockDialogModel *m_modelLockDialog = nullptr;
int m_blockType = 0;
bool m_multiUsers = false;
- double curFontSize;
+ double m_curFontSize;
+ double m_ptToPx = 1.0;
+ QFont sysFont;
};
#endif // BLOCKWIDGET_H
diff --git a/src/widgets/fullbackgroundwidget.cpp b/src/widgets/fullbackgroundwidget.cpp
index 1308f41..ea5bda4 100644
--- a/src/widgets/fullbackgroundwidget.cpp
+++ b/src/widgets/fullbackgroundwidget.cpp
@@ -258,11 +258,14 @@ void FullBackgroundWidget::onShowLock(bool isStartup)
show();
Q_EMIT m_modelLockDialog->setCurrentUser(m_modelLockDialog->defaultUserName());
Q_EMIT m_modelLockDialog->lockStateChanged(true);
+ if(m_lockWidget)
+ m_lockWidget->show();
}
void FullBackgroundWidget::onShowSessionIdle()
{
- show();
+ onShowScreensaver();
+ delayLockScreen();
Q_EMIT m_modelLockDialog->lockStateChanged(true);
}
@@ -312,6 +315,55 @@ void FullBackgroundWidget::onClearScreensaver()
widgetXScreensaverList.clear();
unsetCursor();
+
+ if(screenStatus == UNDEFINED)
+ {
+ closeScreensaver();
+ }
+ else
+ {
+ onShowLock(false);
+ }
+
+}
+
+void FullBackgroundWidget::delayLockScreen()
+{
+ qDebug()<<"delayLockScreen"<getLockTimeout()<getLockEnabled();
+
+ if (!m_timerLock) {
+ m_timerLock = new QTimer(this);
+ connect(m_timerLock, &QTimer::timeout, this, &FullBackgroundWidget::onLockScreenTimeout);
+ }
+
+ if (m_modelLockDialog->getLockTimeout() != -1 && m_modelLockDialog->getLockEnabled()) {
+ stopDelayLockScreen();
+ m_timerLock->start(m_modelLockDialog->getLockTimeout()*1000);
+ }
+}
+
+void FullBackgroundWidget::stopDelayLockScreen()
+{
+ if (m_timerLock && m_timerLock->isActive()) {
+ m_timerLock->stop();
+ }
+}
+
+void FullBackgroundWidget::onLockScreenTimeout()
+{
+ qDebug()<<"onLockScreenTimeout:"<getLockEnabled();
+ if (m_modelLockDialog->getLockEnabled()) {
+ screenStatus = (ScreenStatus)(screenStatus | SCREEN_LOCK);
+ }
+ m_timerLock->stop();
+}
+
+void FullBackgroundWidget::closeScreensaver()
+{
+ hide();
+ Q_EMIT m_modelLockDialog->lockStateChanged(false);
+ stopDelayLockScreen();
+ screenStatus = UNDEFINED;
}
void FullBackgroundWidget::onShowPowerManager()
@@ -579,10 +631,7 @@ void FullBackgroundWidget::onCurUserChanged(const QString &strUserName)
void FullBackgroundWidget::onAuthSucceed(QString strUserName)
{
if (getenv("USER") == strUserName) {
- this->hide();
- if (m_modelLockDialog) {
- Q_EMIT m_modelLockDialog->lockStateChanged(false);
- }
+ closeScreensaver();
} else {
if (m_modelLockDialog) {
Q_EMIT m_modelLockDialog->startSession();
diff --git a/src/widgets/fullbackgroundwidget.h b/src/widgets/fullbackgroundwidget.h
index f6722ab..8aaecfd 100644
--- a/src/widgets/fullbackgroundwidget.h
+++ b/src/widgets/fullbackgroundwidget.h
@@ -116,9 +116,14 @@ private:
bool isOpenGradation();
void startTransition();
void stopTransition();
-
void drawBackground(QPixmap * backgroundBack, QPixmap * backgroundFront,
const QRect &rect, float alpha);
+
+ void delayLockScreen();
+ void onLockScreenTimeout();
+ void stopDelayLockScreen();
+ void closeScreensaver();
+
private Q_SLOTS:
void onGlobalKeyPress(const quint8 &key);
void onGlobalKeyRelease(const quint8 &key);
@@ -143,6 +148,8 @@ private:
ScreenStatus screenStatus = UNDEFINED;
int isBlank;
+
+ QTimer *m_timerLock = nullptr;
};
#endif // FULLBACKGROUNDWIDGET_H
diff --git a/src/widgets/iconedit.cpp b/src/widgets/iconedit.cpp
index 66a7297..3483f84 100644
--- a/src/widgets/iconedit.cpp
+++ b/src/widgets/iconedit.cpp
@@ -208,10 +208,10 @@ void IconEdit::startWaiting()
//这里将QIcon转QPixmap传入(24,24)时,实际得到的pixmap大小为(24,24)乘上缩放比例,导致计算pixmap位置错误,因此需要重新设置一次大小
//更好的解决方案应该是重写IconButton的setIcon函数?直接处理图片大小与icon大小一致?
- QPixmap icon = QIcon::fromTheme("ukui-loading-0-symbolic").pixmap(16,16).scaled(16,16, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
- m_waitingPixmap = getLoadingIcon(16);
+// QPixmap icon = QIcon::fromTheme("ukui-loading-0-symbolic").pixmap(16,16).scaled(16,16, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+ m_waitingPixmap = getLoadingIcon(16*scale);
m_iconButton->setIcon(m_waitingPixmap);
- m_iconButton->setIconSize(QSize(16, 16));
+ m_iconButton->setIconSize(QSize(16*scale, 16*scale));
m_timer->start();
}
@@ -224,12 +224,20 @@ void IconEdit::stopWaiting()
m_edit->setReadOnly(false);
if (!m_icon.isNull()) {
m_iconButton->setIcon(m_icon);
- m_iconButton->setIconSize(QSize(24, 24));
+ m_iconButton->setIconSize(QSize(24*scale, 24*scale));
} else {
m_iconButton->setText(m_iconText);
}
}
+void IconEdit::updateUI()
+{
+ m_iconButton->setFixedSize(QSize(24*scale, 24*scale));
+ m_modeButton->setFixedSize(QSize(24*scale, 24*scale));
+ m_modeButton->setIconSize(QSize(16*scale, 16*scale));
+ m_capsIcon->setPixmap(QIcon::fromTheme("ukui-capslock-symbolic").pixmap(QSize(16*scale, 16*scale)));
+}
+
void IconEdit::updatePixmap()
{
m_iconButton->setEnabled(true);
@@ -238,7 +246,7 @@ void IconEdit::updatePixmap()
matrix.rotate(90.0);
m_waitingPixmap = m_waitingPixmap.transformed(matrix, Qt::FastTransformation);
m_iconButton->setIcon(QIcon(m_waitingPixmap));
- m_iconButton->setIconSize(QSize(16, 16));
+ m_iconButton->setIconSize(QSize(16*scale, 16*scale));
}
void IconEdit::clicked_cb()
diff --git a/src/widgets/iconedit.h b/src/widgets/iconedit.h
index 7afc3f1..40be273 100644
--- a/src/widgets/iconedit.h
+++ b/src/widgets/iconedit.h
@@ -31,6 +31,7 @@
#include
class Configuration;
+extern float scale;
class IconEdit : public QWidget
{
Q_OBJECT
@@ -48,6 +49,7 @@ public:
void setModeBtnVisible(bool visible);
void startWaiting();
void stopWaiting();
+ void updateUI();
protected:
void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE;
diff --git a/src/widgets/klabel.cpp b/src/widgets/klabel.cpp
index 808d76f..b2e866c 100644
--- a/src/widgets/klabel.cpp
+++ b/src/widgets/klabel.cpp
@@ -5,20 +5,13 @@
#include
#include
-QWidget * KLabel::m_parentWidget;
KLabel::KLabel(QWidget *parent)
: QLabel(parent)
{
setWindowFlags(Qt::FramelessWindowHint);
//m_strText = "";
sysFont = qApp->font();
- m_ptToPx = 1;
- //获取当前屏幕尺寸
- QDesktopWidget* desktopWidget = QApplication::desktop();
- QRect clientRect = desktopWidget->availableGeometry();
- desktopWidth = clientRect.width();
- desktopHeight = clientRect.height();
- this->installEventFilter(this);
+
QPalette pe;
pe.setColor(QPalette::WindowText,Qt::white);
this->setPalette(pe);
@@ -26,7 +19,7 @@ KLabel::KLabel(QWidget *parent)
void KLabel::setFontSize(int fontSize)
{
- sysFont.setPointSize(fontSize * m_ptToPx);
+ sysFont.setPointSize(fontSize);
this->setFont(sysFont);
}
@@ -66,46 +59,6 @@ QString KLabel::getElidedText(QFont font,int width,QString strInfo)
return strInfo;
}
-bool KLabel::eventFilter(QObject *obj, QEvent *event)
-{
-// if(event->type() == 110){
-// if(QLabel::text() != m_strText) {
-// if(QLabel::text().isEmpty())
-// return false;
-// if(is_Show)//如果KTooltip已经show出来,直接返回
-// return false;
-// kTooltip = new MyTooltip(m_parentWidget);
-// kTooltip->popup(kTooltip, m_strText, 16);
-// kTooltip->setStyleSheet(QString("background-color:#FFFFFF; color:black; border-radius: 4px;"));
-// int cursorX, cursorY;
-// if (kTooltip->width() > QCursor::pos().x()) {
-// cursorX = 10;
-// } else if (QCursor::pos().x() + kTooltip->width() > desktopWidth) {
-// cursorX = QCursor::pos().x() - kTooltip->width() - 5;
-// } else {
-// cursorX = QCursor::pos().x() + 5;
-// }
-// if (QCursor::pos().y() + kTooltip->height() > desktopHeight - 20) {
-// cursorY = QCursor::pos().y() - kTooltip->height() - 20;
-// } else {
-// cursorY = QCursor::pos().y() + 20;
-// }
-// kTooltip->move(cursorX, cursorY);
-// kTooltip->show();
-// kTooltip->raise();
-// is_Show = true;
-// }
-// } else if (event->type() == 11){
-// if(!is_Show){//如果本来没有收到tooltip事件,直接返回
-// return false;
-// }
-// kTooltip->tipClose(kTooltip);
-// is_Show = false;
-// kTooltip = nullptr;
-// }
- return false;
-}
-
void KLabel::paintEvent(QPaintEvent *event)
{
if (m_strText.isEmpty() && !QLabel::text().isEmpty())
diff --git a/src/widgets/klabel.h b/src/widgets/klabel.h
index 3563d88..511eb83 100644
--- a/src/widgets/klabel.h
+++ b/src/widgets/klabel.h
@@ -21,19 +21,12 @@ public Q_SLOTS:
void setText(const QString &);
protected:
- bool eventFilter(QObject *obj, QEvent *event);
void paintEvent(QPaintEvent *event);
private:
QFont sysFont;
double m_ptToPx = 1.0;
- //tooltip
-// MyTooltip *kTooltip = nullptr;
- bool is_Show = false;
- int desktopWidth;
- int desktopHeight;
-
QString m_strText;
};
diff --git a/src/widgets/lockwidget.cpp b/src/widgets/lockwidget.cpp
index 742861d..0541d51 100644
--- a/src/widgets/lockwidget.cpp
+++ b/src/widgets/lockwidget.cpp
@@ -507,7 +507,7 @@ void LockWidget::initButtonWidget()
void LockWidget::initBlockWidget()
{
- m_blockWidget = new BlockWidget(this);
+ m_blockWidget = new BlockWidget(m_modelLockDialog, this);
m_blockWidget->setGeometry(this->geometry());
m_blockWidget->hide();
connect(m_blockWidget, SIGNAL(cancelButtonclicked()),
@@ -542,13 +542,16 @@ void LockWidget::updateBottomButton()
for (auto button : statusButton) {
if (button->getButtonTyoe() == POWERBUTTON) {
button->setFixedSize(130*scale, 130*scale);
+ button->setIconSize(QSize(130*scale, 130*scale));
} else {
button->setFixedSize(48*scale, 48*scale);
+ button->setIconSize(QSize(24*scale, 24*scale));
}
}
QList networkButton = this->findChildren();
for (auto button : networkButton) {
- button->setFixedSize(48*scale, 48*scale);
+ button->setFixedSize(48*scale, 48*scale);
+ button->setIconSize(QSize(24*scale, 24*scale));
}
}
@@ -741,11 +744,14 @@ void LockWidget::onShowBatteryWidget()
batteryWidget = new BatteryWidget(m_modelLockDialog, this);
batteryWidget->setFixedSize(314, 112);
if (batteryWidget) {
- if (m_sessionButton->isHidden()) {
+ if (m_sessionButton && m_sessionButton->isHidden()) {
batteryWidget->setGeometry(buttonListWidget->x(),
height()- BOTTOM_MARGIN - buttonListWidget->height() - buttonListWidget->spacing() - batteryWidget->height(), 314*scale, 112*scale);
- } else {
- batteryWidget->setGeometry(buttonListWidget->x() + m_sessionButton->width() + 32,
+ } else if (m_sessionButton && m_sessionButton->isVisible()) {
+ batteryWidget->setGeometry(buttonListWidget->x() + m_sessionButton->width() + 8,
+ height()- BOTTOM_MARGIN - buttonListWidget->height() - buttonListWidget->spacing() - batteryWidget->height(), 314*scale, 112*scale);
+ } else if (!m_sessionButton) {
+ batteryWidget->setGeometry(buttonListWidget->x() + 8,
height()- BOTTOM_MARGIN - buttonListWidget->height() - buttonListWidget->spacing() - batteryWidget->height(), 314*scale, 112*scale);
}
}
diff --git a/src/widgets/powerlistwidget.h b/src/widgets/powerlistwidget.h
index c64baea..7083b74 100644
--- a/src/widgets/powerlistwidget.h
+++ b/src/widgets/powerlistwidget.h
@@ -89,7 +89,7 @@ public:
},
//3.reboot
{
- .m_strName = tr("Reboot"),
+ .m_strName = tr("Restart"),
.m_strToolTip = tr("The computer stays on, but consumes less power. The app stays open and can quickly wake up and revert to where you left off"),
.m_strIcon = ":/image/assets/reboot.svg",
.m_show_flag = true,
diff --git a/src/widgets/statusbutton.cpp b/src/widgets/statusbutton.cpp
index f74424d..7f4f0f1 100644
--- a/src/widgets/statusbutton.cpp
+++ b/src/widgets/statusbutton.cpp
@@ -35,7 +35,7 @@ void StatusButton::paintEvent(QPaintEvent *e)
QStyleOptionButton option;
initStyleOption(&option);
- if (option.state & QStyle::State_Sunken) {
+ if (curStatus == NORMAL) {
painter.save();
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::white);
@@ -160,6 +160,7 @@ void StatusButton::paintEvent(QPaintEvent *e)
deltaY = pixmapRect.height() - buttonRect.height();
painter.save();
+ painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
painter.translate(deltaX / 2, deltaY / 2);
painter.drawPixmap(pixmapRect, pixmap);
painter.restore();