!14 适配网络插件

Merge pull request !14 from 杨敏/openkylin/yangtze
This commit is contained in:
杨敏 2022-12-07 14:00:57 +00:00 committed by Gitee
commit 61bcf8fb30
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
50 changed files with 2998 additions and 684 deletions

View File

@ -10,6 +10,7 @@ find_package(KF5Wayland REQUIRED)
pkg_check_modules(GIOUNIX2 REQUIRED gio-unix-2.0)
pkg_check_modules(GLIB2 REQUIRED glib-2.0 gio-2.0)
pkg_check_modules(kylin-nm-base REQUIRED kylin-nm-base)
pkg_check_modules(KScreen REQUIRED kscreen2)
# intel

View File

@ -7,12 +7,17 @@ set(CMAKE_AUTORCC ON)
qt5_add_resources(VirtualKeyboard_SRC
src/keyboard.qrc)
qt5_wrap_cpp(VirtualKeyboard_SRC
src/vkstackedwidget.h
)
set(VirtualKeyboard_SRC
${VirtualKeyboard_SRC}
src/cursormonitor.cpp
src/keyboardwidget.cpp
src/virtualkeyboard.cpp
src/x11keyboard.cpp
src/vkstackedwidget.cpp
src/keyboard.qrc)
include_directories(

View File

@ -50,25 +50,25 @@
<item>
<layout class="QHBoxLayout" name="hl_main">
<property name="spacing">
<number>20</number>
<number>8</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetNoConstraint</enum>
</property>
<property name="leftMargin">
<number>10</number>
<number>8</number>
</property>
<property name="topMargin">
<number>10</number>
<number>8</number>
</property>
<property name="rightMargin">
<number>10</number>
<number>8</number>
</property>
<property name="bottomMargin">
<number>10</number>
<number>8</number>
</property>
<item>
<widget class="QStackedWidget" name="stackedWidget">
<widget class="VKStackedWidget" name="stackedWidget">
<property name="currentIndex">
<number>1</number>
</property>
@ -107,8 +107,8 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
@ -695,8 +695,8 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
@ -707,9 +707,24 @@
</widget>
<widget class="QWidget" name="page_number">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="spacing">
<number>4</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetNoConstraint</enum>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
@ -872,7 +887,7 @@
<item row="4" column="1">
<widget class="QPushButton" name="btn_backspace_num">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -885,7 +900,7 @@
<item row="4" column="2">
<widget class="QPushButton" name="btn_enter_num">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -973,7 +988,7 @@
<item row="3" column="4">
<widget class="QPushButton" name="btn_right">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -986,7 +1001,7 @@
<item row="3" column="2">
<widget class="QPushButton" name="btn_left">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -1012,7 +1027,7 @@
<item row="3" column="3">
<widget class="QPushButton" name="btn_down">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -1025,7 +1040,7 @@
<item row="2" column="3">
<widget class="QPushButton" name="btn_up">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -1096,8 +1111,8 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
@ -1185,8 +1200,8 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
@ -1198,6 +1213,14 @@
</layout>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>
<customwidget>
<class>VKStackedWidget</class>
<extends>QStackedWidget</extends>
<header>src/vkstackedwidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -39,10 +39,12 @@ VirtualKeyboard::VirtualKeyboard(QWidget *parent)
keyboardWidget = new KeyboardWidget(this);
QHBoxLayout *hl_keyboard = new QHBoxLayout(this);
QSpacerItem *spacer = new QSpacerItem(40, 20);
hl_keyboard->setContentsMargins(0,0,0,0);
hl_keyboard->setSpacing(0);
QSpacerItem *spacer = new QSpacerItem(10, 5);
hl_keyboard->addSpacerItem(spacer);
hl_keyboard->addWidget(keyboardWidget);
QSpacerItem *spacer2 = new QSpacerItem(40, 20);
QSpacerItem *spacer2 = new QSpacerItem(10, 5);
hl_keyboard->addSpacerItem(spacer2);
QFile qssFile(":/qss/keyboard.qss");

View File

@ -0,0 +1,22 @@
#include "vkstackedwidget.h"
VKStackedWidget::VKStackedWidget(QWidget *parent/* = nullptr*/)
: QStackedWidget(parent)
{
}
VKStackedWidget::~VKStackedWidget()
{
}
QSize VKStackedWidget::sizeHint() const
{
return currentWidget()->sizeHint();
}
QSize VKStackedWidget::minimumSizeHint() const
{
return currentWidget()->minimumSizeHint();
}

View File

@ -0,0 +1,18 @@
#ifndef VKSTACKEDWIDGET_H
#define VKSTACKEDWIDGET_H
#include <QStackedWidget>
class VKStackedWidget : public QStackedWidget
{
Q_OBJECT
public:
explicit VKStackedWidget(QWidget *parent = nullptr);
virtual ~VKStackedWidget();
protected:
QSize sizeHint() const override;
QSize minimumSizeHint() const override;
};
#endif // VKSTACKEDWIDGET_H

7
debian/changelog vendored
View File

@ -1,3 +1,10 @@
ukui-screensaver (3.22.1.3-ok4~1207) yangtze; urgency=medium
* BUG号
* 需求号Task#123734 子 openkylin网络插件化适配 / openkylin网络插件化适配-登录锁屏
-- Yang Min <yangmin@kylinos.cn> Wed, 07 Dec 2022 21:53:47 +0800
ukui-screensaver (3.22.1.3-ok3~1101) yangtze; urgency=medium
* BUG号

10
debian/control vendored
View File

@ -16,12 +16,19 @@ Build-Depends: debhelper-compat (= 12),
libx11-dev,
libxtst-dev,
libqt5svg5-dev,
libkylin-nm-base (>=3.20.0.9-0k1),
libnm-dev,
libkf5networkmanagerqt-dev,
kylin-nm-plugin,
libkf5wayland-dev,
libkf5screen-dev,
libgsettings-qt-dev,
libkf5windowsystem-dev,
libmatemixer-dev,
libukui-log4qt-dev
libukui-log4qt-dev,
libkysdk-sysinfo-dev (>> 1.1.0kylin1),
ukui-input-gather (>=1.0.0.2),
libinput-dev
Standards-Version: 4.5.0
Rules-Requires-Root: no
Homepage: https://www.github.com/ukui/ukui-screensaver
@ -34,6 +41,7 @@ Depends: ethtool,
mate-desktop-common,
ukui-session-manager,
libpam-biometric(>=3.20.0.10),
ukui-input-gather(>=1.0.0.2),
${misc:Depends},
${shlibs:Depends}
Replaces: ukui-screensaver-common (<< 2.0.0)

View File

@ -4,108 +4,131 @@
<context>
<name>AuthDialog</name>
<message>
<location filename="../src/authdialog.cpp" line="653"/>
<location filename="../src/authdialog.cpp" line="726"/>
<source>Authentication failure, Please try again</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="251"/>
<location filename="../src/authdialog.cpp" line="252"/>
<location filename="../src/authdialog.cpp" line="315"/>
<location filename="../src/authdialog.cpp" line="316"/>
<location filename="../src/authdialog.cpp" line="253"/>
<location filename="../src/authdialog.cpp" line="320"/>
<location filename="../src/authdialog.cpp" line="321"/>
<source>Please try again in %1 minutes.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="260"/>
<location filename="../src/authdialog.cpp" line="261"/>
<location filename="../src/authdialog.cpp" line="324"/>
<location filename="../src/authdialog.cpp" line="325"/>
<location filename="../src/authdialog.cpp" line="262"/>
<location filename="../src/authdialog.cpp" line="263"/>
<location filename="../src/authdialog.cpp" line="329"/>
<location filename="../src/authdialog.cpp" line="330"/>
<source>Please try again in %1 seconds.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="269"/>
<location filename="../src/authdialog.cpp" line="270"/>
<location filename="../src/authdialog.cpp" line="333"/>
<location filename="../src/authdialog.cpp" line="334"/>
<location filename="../src/authdialog.cpp" line="272"/>
<location filename="../src/authdialog.cpp" line="273"/>
<location filename="../src/authdialog.cpp" line="338"/>
<location filename="../src/authdialog.cpp" line="339"/>
<source>Account locked permanently.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="449"/>
<location filename="../src/authdialog.cpp" line="459"/>
<source>Verify face recognition or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="454"/>
<location filename="../src/authdialog.cpp" line="464"/>
<source>Press fingerprint or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="459"/>
<location filename="../src/authdialog.cpp" line="469"/>
<source>Verify voiceprint or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="464"/>
<location filename="../src/authdialog.cpp" line="474"/>
<source>Verify finger vein or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="469"/>
<location filename="../src/authdialog.cpp" line="479"/>
<source>Verify iris or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="474"/>
<location filename="../src/authdialog.cpp" line="484"/>
<source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="526"/>
<location filename="../src/authdialog.cpp" line="527"/>
<location filename="../src/authdialog.cpp" line="537"/>
<location filename="../src/authdialog.cpp" line="538"/>
<source>Password cannot be empty</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="614"/>
<location filename="../src/authdialog.cpp" line="686"/>
<source>Password </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="616"/>
<location filename="../src/authdialog.cpp" line="688"/>
<source>Input Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="678"/>
<location filename="../src/authdialog.cpp" line="754"/>
<source>Login</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="684"/>
<location filename="../src/authdialog.cpp" line="766"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="912"/>
<location filename="../src/authdialog.cpp" line="1011"/>
<source>Failed to verify %1, please enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="916"/>
<location filename="../src/authdialog.cpp" line="1015"/>
<source>Unable to verify %1, please enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="922"/>
<location filename="../src/authdialog.cpp" line="1021"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="933"/>
<source>NET Exception</source>
<location filename="../src/authdialog.cpp" line="1032"/>
<source>Abnormal network</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BatteryWidget</name>
<message>
<location filename="../src/batterywidget.cpp" line="163"/>
<source>Charging...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/batterywidget.cpp" line="165"/>
<source>fully charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/batterywidget.cpp" line="169"/>
<source>PowerMode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/batterywidget.cpp" line="172"/>
<source>BatteryMode</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -253,32 +276,32 @@
<context>
<name>DeviceType</name>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="42"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="61"/>
<source>FingerPrint</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="44"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="63"/>
<source>FingerVein</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="46"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="65"/>
<source>Iris</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="48"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="67"/>
<source>Face</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="50"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="69"/>
<source>VoicePrint</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="52"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="71"/>
<source>QRCode</source>
<translation type="unfinished"></translation>
</message>
@ -327,7 +350,6 @@
<name>DlgConnHidWifi</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifi.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifi.h" line="122"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -381,7 +403,6 @@
<name>DlgConnHidWifiLeap</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifileap.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifileap.h" line="149"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -465,7 +486,6 @@
<name>DlgConnHidWifiSecFast</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifisecfast.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifisecfast.h" line="216"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -600,7 +620,6 @@
<name>DlgConnHidWifiSecLeap</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifisecleap.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifisecleap.h" line="161"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -699,7 +718,6 @@
<name>DlgConnHidWifiSecPeap</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifisecpeap.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifisecpeap.h" line="249"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -849,7 +867,6 @@
<name>DlgConnHidWifiSecPwd</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifisecpwd.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifisecpwd.h" line="161"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -948,7 +965,6 @@
<name>DlgConnHidWifiSecTls</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifisectls.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifisectls.h" line="250"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -1092,7 +1108,6 @@
<name>DlgConnHidWifiSecTunnelTLS</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifisectunneltls.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifisectunneltls.h" line="237"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -1227,7 +1242,6 @@
<name>DlgConnHidWifiWep</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifiwep.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifiwep.h" line="163"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -1331,7 +1345,6 @@
<name>DlgConnHidWifiWpa</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifiwpa.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifiwpa.h" line="137"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -1390,7 +1403,6 @@
<name>DlgHotspotCreate</name>
<message>
<location filename="../KylinNM/hot-spot/dlghotspotcreate.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlghotspotcreate.h" line="89"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
@ -1435,6 +1447,124 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EngineDevice</name>
<message>
<location filename="../src/enginedevice.cpp" line="101"/>
<source>yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="101"/>
<source>no</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="120"/>
<source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="120"/>
<source>No</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="284"/>
<source>%1% available, charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="290"/>
<source>Left %1h %2m (%3%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="295"/>
<source>%1% available</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="301"/>
<source>Left %1h %2m to full</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="303"/>
<source>charging (%1%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="309"/>
<source>%1 waiting to discharge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="314"/>
<source>%1 waiting to charge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="334"/>
<source>AC adapter</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="338"/>
<source>Laptop battery</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="342"/>
<source>UPS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="346"/>
<source>Monitor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="350"/>
<source>Mouse</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="354"/>
<source>Keyboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="358"/>
<source>PDA</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="362"/>
<source>Cell phone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="366"/>
<source>Media player</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="370"/>
<source>Tablet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="374"/>
<source>Computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="378"/>
<source>unrecognised</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InputInfos</name>
<message>
@ -1473,7 +1603,6 @@
<name>KeyboardWidget</name>
<message>
<location filename="../VirtualKeyboard/src/keyboardwidget.ui" line="29"/>
<location filename="../obj-x86_64-linux-gnu/VirtualKeyboard/VirtualKeyboard_autogen/include/ui_keyboardwidget.h" line="806"/>
<source>KeyboardWidget</source>
<translation type="unfinished"></translation>
</message>
@ -1482,7 +1611,6 @@
<name>KylinNM</name>
<message>
<location filename="../KylinNM/src/kylinnm.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_kylinnm.h" line="136"/>
<source>kylin-nm</source>
<translation type="unfinished"></translation>
</message>
@ -1554,7 +1682,7 @@
<location filename="../KylinNM/src/kylinnm.cpp" line="1535"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="1701"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2426"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2517"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2518"/>
<source>Not connected</source>
<translation type="unfinished"></translation>
</message>
@ -1567,7 +1695,7 @@
<location filename="../KylinNM/src/kylinnm.cpp" line="1828"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="1995"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2428"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2519"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2520"/>
<source>Disconnected</source>
<translation type="unfinished"></translation>
</message>
@ -1593,22 +1721,22 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../KylinNM/src/kylinnm.cpp" line="2705"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2706"/>
<source>Conn Ethernet Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../KylinNM/src/kylinnm.cpp" line="2717"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2718"/>
<source>Conn Ethernet Fail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../KylinNM/src/kylinnm.cpp" line="2742"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2743"/>
<source>Conn Wifi Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../KylinNM/src/kylinnm.cpp" line="2751"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2752"/>
<source>Confirm your Wi-Fi password or usable of wireless card</source>
<translation type="unfinished"></translation>
</message>
@ -1617,32 +1745,44 @@
<name>LockWidget</name>
<message>
<location filename="../src/lockwidget.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/src/ui_lockwidget.h" line="80"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/lockwidget.ui" line="55"/>
<location filename="../obj-x86_64-linux-gnu/src/ui_lockwidget.h" line="83"/>
<location filename="../src/lockwidget.ui" line="72"/>
<source>Date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/lockwidget.ui" line="48"/>
<location filename="../obj-x86_64-linux-gnu/src/ui_lockwidget.h" line="82"/>
<location filename="../src/lockwidget.ui" line="65"/>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/lockwidget.cpp" line="1092"/>
<source>Multiple users are logged in at the same time.Are you sure you want to reboot this system?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/lockwidget.cpp" line="1400"/>
<source>LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/lockwidget.cpp" line="1402"/>
<source>WLAN</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoginOptionsWidget</name>
<message>
<location filename="../src/loginoptionswidget.cpp" line="49"/>
<location filename="../src/loginoptionswidget.cpp" line="64"/>
<source>Login Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/loginoptionswidget.cpp" line="504"/>
<location filename="../src/loginoptionswidget.cpp" line="550"/>
<source>Identify device removed!</source>
<translation type="unfinished"></translation>
</message>
@ -1661,7 +1801,6 @@
<name>OneConnForm</name>
<message>
<location filename="../KylinNM/src/oneconnform.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_oneconnform.h" line="150"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
@ -1723,7 +1862,6 @@
<name>OneLancForm</name>
<message>
<location filename="../KylinNM/src/onelancform.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_onelancform.h" line="127"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
@ -1824,35 +1962,39 @@
<context>
<name>PowerManager</name>
<message>
<location filename="../src/powermanager.cpp" line="217"/>
<location filename="../src/powermanager.cpp" line="316"/>
<source>Log Out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="200"/>
<location filename="../src/powermanager.cpp" line="299"/>
<source>lock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="235"/>
<location filename="../src/powermanager.cpp" line="494"/>
<source>Restart</source>
<location filename="../src/powermanager.cpp" line="334"/>
<location filename="../src/powermanager.cpp" line="672"/>
<source>Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="255"/>
<location filename="../src/powermanager.cpp" line="510"/>
<location filename="../src/powermanager.cpp" line="354"/>
<source>Power Off</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="558"/>
<source>Suspend</source>
<location filename="../src/powermanager.cpp" line="691"/>
<source>Shut Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="534"/>
<source>Sleep</source>
<location filename="../src/powermanager.cpp" line="718"/>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="746"/>
<source>Suspend</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1869,20 +2011,95 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>S:</name>
<message>
<location filename="../src/enginedevice.cpp" line="308"/>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="313"/>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="337"/>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="341"/>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="345"/>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="349"/>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="353"/>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="357"/>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="361"/>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="365"/>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="369"/>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="373"/>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
</context>
<context>
<name>Screensaver</name>
<message>
<location filename="../screensaver/screensaver.cpp" line="140"/>
<location filename="../screensaver/screensaver.cpp" line="153"/>
<source>Picture does not exist</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/screensaver.cpp" line="1086"/>
<location filename="../screensaver/screensaver.cpp" line="1191"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/screensaver.cpp" line="1242"/>
<location filename="../screensaver/screensaver.cpp" line="1356"/>
<source>You have new notification</source>
<translation type="unfinished"></translation>
</message>
@ -1890,8 +2107,51 @@
<context>
<name>SleepTime</name>
<message>
<location filename="../screensaver/sleeptime.cpp" line="70"/>
<source>You have rested:</source>
<location filename="../screensaver/sleeptime.cpp" line="64"/>
<source>You have rested</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SureWindow</name>
<message>
<location filename="../src/surewindow.ui" line="14"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.ui" line="56"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.ui" line="157"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.ui" line="176"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.cpp" line="40"/>
<source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.cpp" line="43"/>
<source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.cpp" line="46"/>
<source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.cpp" line="49"/>
<source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1911,38 +2171,38 @@
<context>
<name>TabletLockWidget</name>
<message>
<location filename="../src/tabletlockwidget.cpp" line="180"/>
<location filename="../src/tabletlockwidget.cpp" line="200"/>
<location filename="../src/tabletlockwidget.cpp" line="219"/>
<location filename="../src/tabletlockwidget.cpp" line="234"/>
<location filename="../src/tabletlockwidget.cpp" line="373"/>
<location filename="../src/tabletlockwidget.cpp" line="388"/>
<location filename="../src/tabletlockwidget.cpp" line="189"/>
<location filename="../src/tabletlockwidget.cpp" line="209"/>
<location filename="../src/tabletlockwidget.cpp" line="228"/>
<location filename="../src/tabletlockwidget.cpp" line="243"/>
<location filename="../src/tabletlockwidget.cpp" line="382"/>
<location filename="../src/tabletlockwidget.cpp" line="397"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="186"/>
<location filename="../src/tabletlockwidget.cpp" line="398"/>
<location filename="../src/tabletlockwidget.cpp" line="195"/>
<location filename="../src/tabletlockwidget.cpp" line="407"/>
<source>Back</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="239"/>
<location filename="../src/tabletlockwidget.cpp" line="248"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="266"/>
<location filename="../src/tabletlockwidget.cpp" line="275"/>
<source>New password is the same as old</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="277"/>
<location filename="../src/tabletlockwidget.cpp" line="286"/>
<source>Reset password error:%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="289"/>
<location filename="../src/tabletlockwidget.cpp" line="298"/>
<source>Please scan by correct WeChat</source>
<translation type="unfinished"></translation>
</message>
@ -2014,25 +2274,38 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<location filename="../examples/LoadCustomPlugin/widget.ui" line="14"/>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../examples/LoadCustomPlugin/widget.ui" line="26"/>
<source>LoadPlugin</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../screensaver/main.cpp" line="65"/>
<location filename="../screensaver/main.cpp" line="56"/>
<source>Screensaver for ukui-screensaver</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/main.cpp" line="69"/>
<location filename="../screensaver/main.cpp" line="60"/>
<source>show on root window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/main.cpp" line="71"/>
<location filename="../screensaver/main.cpp" line="62"/>
<source>show on window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/main.cpp" line="72"/>
<location filename="../screensaver/main.cpp" line="63"/>
<source>window id</source>
<translation type="unfinished"></translation>
</message>
@ -2043,8 +2316,8 @@
</message>
<message>
<location filename="../src/ukui-screensaver-command.cpp" line="47"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="184"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="186"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="166"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="168"/>
<source>lock the screen immediately</source>
<translation type="unfinished"></translation>
</message>
@ -2064,23 +2337,23 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ukui-screensaver-dialog.cpp" line="179"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="161"/>
<source>Dialog for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ukui-screensaver-dialog.cpp" line="188"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="170"/>
<source>activated by session idle signal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ukui-screensaver-dialog.cpp" line="190"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="194"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="172"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="176"/>
<source>lock the screen and show screensaver immediately</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ukui-screensaver-dialog.cpp" line="192"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="174"/>
<source>show screensaver immediately</source>
<translation type="unfinished"></translation>
</message>

View File

@ -83,10 +83,6 @@
<source>Login</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>NET Exception</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation type="unfinished"></translation>
@ -107,6 +103,29 @@
<source>Input Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abnormal network</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BatteryWidget</name>
<message>
<source>Charging...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>fully charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PowerMode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>BatteryMode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BiometricAuthWidget</name>
@ -1160,6 +1179,101 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EngineDevice</name>
<message>
<source>yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>no</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1% available, charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Left %1h %2m (%3%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1% available</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Left %1h %2m to full</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>charging (%1%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 waiting to discharge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 waiting to charge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AC adapter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Laptop battery</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>UPS</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Monitor</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mouse</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Keyboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PDA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cell phone</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Media player</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tablet</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>unrecognised</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InputInfos</name>
<message>
@ -1311,6 +1425,18 @@
<source>SwitchUser</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Multiple users are logged in at the same time.Are you sure you want to reboot this system?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WLAN</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoginOptionsWidget</name>
@ -1459,7 +1585,7 @@
<name>PowerManager</name>
<message>
<source>Sleep</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<source>Log Out</source>
@ -1471,7 +1597,7 @@
</message>
<message>
<source>Restart</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<source>Switch User</source>
@ -1489,6 +1615,18 @@
<source>lock</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shut Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
@ -1501,6 +1639,69 @@
<translation></translation>
</message>
</context>
<context>
<name>S:</name>
<message>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
</context>
<context>
<name>Screensaver</name>
<message>
@ -1528,7 +1729,46 @@
<name>SleepTime</name>
<message>
<source>You have rested:</source>
<translation> </translation>
<translation type="vanished"> </translation>
</message>
<message>
<source>You have rested</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SureWindow</name>
<message>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -1621,6 +1861,17 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LoadPlugin</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>

View File

@ -83,10 +83,6 @@
<source>Verify iris or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>NET Exception</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation type="unfinished"></translation>
@ -107,6 +103,29 @@
<source>Input Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abnormal network</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BatteryWidget</name>
<message>
<source>Charging...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>fully charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PowerMode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>BatteryMode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BioAuthWidget</name>
@ -1225,6 +1244,101 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EngineDevice</name>
<message>
<source>yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>no</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1% available, charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Left %1h %2m (%3%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1% available</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Left %1h %2m to full</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>charging (%1%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 waiting to discharge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 waiting to charge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AC adapter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Laptop battery</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>UPS</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Monitor</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mouse</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Keyboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PDA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cell phone</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Media player</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tablet</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>unrecognised</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InputInfos</name>
<message>
@ -1376,6 +1490,18 @@
<source>SwitchUser</source>
<translation type="vanished">Cambiar de usuario</translation>
</message>
<message>
<source>Multiple users are logged in at the same time.Are you sure you want to reboot this system?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WLAN</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoginOptionsWidget</name>
@ -1534,10 +1660,6 @@
<source>Log Out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Restart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Power Off</source>
<translation type="unfinished"></translation>
@ -1547,11 +1669,19 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Sleep</source>
<source>lock</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>lock</source>
<source>Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shut Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1566,6 +1696,69 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>S:</name>
<message>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
</context>
<context>
<name>Screensaver</name>
<message>
@ -1584,7 +1777,42 @@
<context>
<name>SleepTime</name>
<message>
<source>You have rested:</source>
<source>You have rested</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SureWindow</name>
<message>
<source>Form</source>
<translation type="unfinished">Formar</translation>
</message>
<message>
<source>TextLabel</source>
<translation type="unfinished">TextLabel</translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1678,6 +1906,17 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LoadPlugin</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>

View File

@ -83,10 +83,6 @@
<source>Verify iris or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>NET Exception</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation type="unfinished"></translation>
@ -107,6 +103,29 @@
<source>Input Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abnormal network</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BatteryWidget</name>
<message>
<source>Charging...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>fully charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PowerMode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>BatteryMode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BioAuthWidget</name>
@ -1225,6 +1244,101 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EngineDevice</name>
<message>
<source>yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>no</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1% available, charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Left %1h %2m (%3%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1% available</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Left %1h %2m to full</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>charging (%1%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 waiting to discharge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 waiting to charge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AC adapter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Laptop battery</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>UPS</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Monitor</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mouse</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Keyboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PDA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cell phone</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Media player</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tablet</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>unrecognised</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InputInfos</name>
<message>
@ -1376,6 +1490,18 @@
<source>SwitchUser</source>
<translation type="vanished">Changer d&apos;utilisateur</translation>
</message>
<message>
<source>Multiple users are logged in at the same time.Are you sure you want to reboot this system?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WLAN</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoginOptionsWidget</name>
@ -1534,10 +1660,6 @@
<source>Log Out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Restart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Power Off</source>
<translation type="unfinished"></translation>
@ -1547,11 +1669,19 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Sleep</source>
<source>lock</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>lock</source>
<source>Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shut Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1566,6 +1696,69 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>S:</name>
<message>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
</context>
<context>
<name>Screensaver</name>
<message>
@ -1584,7 +1777,42 @@
<context>
<name>SleepTime</name>
<message>
<source>You have rested:</source>
<source>You have rested</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SureWindow</name>
<message>
<source>Form</source>
<translation type="unfinished">Forme</translation>
</message>
<message>
<source>TextLabel</source>
<translation type="unfinished">TextLabel</translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1678,6 +1906,17 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LoadPlugin</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>

View File

@ -83,10 +83,6 @@
<source>Verify iris or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>NET Exception</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation type="unfinished"></translation>
@ -107,6 +103,29 @@
<source>Input Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abnormal network</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BatteryWidget</name>
<message>
<source>Charging...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>fully charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PowerMode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>BatteryMode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BioAuthWidget</name>
@ -1225,6 +1244,101 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EngineDevice</name>
<message>
<source>yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>no</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1% available, charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Left %1h %2m (%3%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1% available</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Left %1h %2m to full</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>charging (%1%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 waiting to discharge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 waiting to charge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AC adapter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Laptop battery</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>UPS</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Monitor</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mouse</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Keyboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PDA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cell phone</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Media player</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tablet</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>unrecognised</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InputInfos</name>
<message>
@ -1376,6 +1490,18 @@
<source>SwitchUser</source>
<translation type="vanished">Mudar de utilizador</translation>
</message>
<message>
<source>Multiple users are logged in at the same time.Are you sure you want to reboot this system?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WLAN</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoginOptionsWidget</name>
@ -1534,10 +1660,6 @@
<source>Log Out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Restart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Power Off</source>
<translation type="unfinished"></translation>
@ -1547,11 +1669,19 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Sleep</source>
<source>lock</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>lock</source>
<source>Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shut Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1566,6 +1696,69 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>S:</name>
<message>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
</context>
<context>
<name>Screensaver</name>
<message>
@ -1584,7 +1777,42 @@
<context>
<name>SleepTime</name>
<message>
<source>You have rested:</source>
<source>You have rested</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SureWindow</name>
<message>
<source>Form</source>
<translation type="unfinished">Formato</translation>
</message>
<message>
<source>TextLabel</source>
<translation type="unfinished">TextLabel</translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1678,6 +1906,17 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LoadPlugin</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>

View File

@ -83,10 +83,6 @@
<source>Verify iris or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>NET Exception</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation type="unfinished"></translation>
@ -107,6 +103,29 @@
<source>Input Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abnormal network</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BatteryWidget</name>
<message>
<source>Charging...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>fully charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PowerMode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>BatteryMode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BioAuthWidget</name>
@ -1225,6 +1244,101 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EngineDevice</name>
<message>
<source>yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>no</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1% available, charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Left %1h %2m (%3%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1% available</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Left %1h %2m to full</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>charging (%1%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 waiting to discharge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 waiting to charge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AC adapter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Laptop battery</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>UPS</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Monitor</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mouse</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Keyboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PDA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cell phone</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Media player</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tablet</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>unrecognised</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InputInfos</name>
<message>
@ -1376,6 +1490,18 @@
<source>SwitchUser</source>
<translation type="vanished">Сменить пользователя</translation>
</message>
<message>
<source>Multiple users are logged in at the same time.Are you sure you want to reboot this system?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WLAN</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoginOptionsWidget</name>
@ -1534,10 +1660,6 @@
<source>Log Out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Restart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Power Off</source>
<translation type="unfinished"></translation>
@ -1547,11 +1669,19 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Sleep</source>
<source>lock</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>lock</source>
<source>Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shut Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1566,6 +1696,69 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>S:</name>
<message>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
</context>
<context>
<name>Screensaver</name>
<message>
@ -1584,7 +1777,42 @@
<context>
<name>SleepTime</name>
<message>
<source>You have rested:</source>
<source>You have rested</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SureWindow</name>
<message>
<source>Form</source>
<translation type="unfinished">форма</translation>
</message>
<message>
<source>TextLabel</source>
<translation type="unfinished">TextLabel</translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1678,6 +1906,17 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LoadPlugin</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>

View File

@ -16,7 +16,7 @@
<translation type="obsolete">Parola</translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="684"/>
<location filename="../src/authdialog.cpp" line="766"/>
<source>Retry</source>
<translation type="unfinished">Yeniden Dene</translation>
</message>
@ -41,103 +41,103 @@
<translation type="vanished">Kimlik doğrulama hatası, hala %1 kalan denemen var</translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="653"/>
<location filename="../src/authdialog.cpp" line="726"/>
<source>Authentication failure, Please try again</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="251"/>
<location filename="../src/authdialog.cpp" line="252"/>
<location filename="../src/authdialog.cpp" line="315"/>
<location filename="../src/authdialog.cpp" line="316"/>
<location filename="../src/authdialog.cpp" line="253"/>
<location filename="../src/authdialog.cpp" line="320"/>
<location filename="../src/authdialog.cpp" line="321"/>
<source>Please try again in %1 minutes.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="260"/>
<location filename="../src/authdialog.cpp" line="261"/>
<location filename="../src/authdialog.cpp" line="324"/>
<location filename="../src/authdialog.cpp" line="325"/>
<location filename="../src/authdialog.cpp" line="262"/>
<location filename="../src/authdialog.cpp" line="263"/>
<location filename="../src/authdialog.cpp" line="329"/>
<location filename="../src/authdialog.cpp" line="330"/>
<source>Please try again in %1 seconds.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="269"/>
<location filename="../src/authdialog.cpp" line="270"/>
<location filename="../src/authdialog.cpp" line="333"/>
<location filename="../src/authdialog.cpp" line="334"/>
<location filename="../src/authdialog.cpp" line="272"/>
<location filename="../src/authdialog.cpp" line="273"/>
<location filename="../src/authdialog.cpp" line="338"/>
<location filename="../src/authdialog.cpp" line="339"/>
<source>Account locked permanently.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="449"/>
<location filename="../src/authdialog.cpp" line="459"/>
<source>Verify face recognition or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="454"/>
<location filename="../src/authdialog.cpp" line="464"/>
<source>Press fingerprint or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="459"/>
<location filename="../src/authdialog.cpp" line="469"/>
<source>Verify voiceprint or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="464"/>
<location filename="../src/authdialog.cpp" line="474"/>
<source>Verify finger vein or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="469"/>
<location filename="../src/authdialog.cpp" line="479"/>
<source>Verify iris or enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="474"/>
<location filename="../src/authdialog.cpp" line="484"/>
<source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="526"/>
<location filename="../src/authdialog.cpp" line="527"/>
<location filename="../src/authdialog.cpp" line="537"/>
<location filename="../src/authdialog.cpp" line="538"/>
<source>Password cannot be empty</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="614"/>
<location filename="../src/authdialog.cpp" line="686"/>
<source>Password </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="616"/>
<location filename="../src/authdialog.cpp" line="688"/>
<source>Input Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="678"/>
<location filename="../src/authdialog.cpp" line="754"/>
<source>Login</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="912"/>
<location filename="../src/authdialog.cpp" line="1011"/>
<source>Failed to verify %1, please enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="916"/>
<location filename="../src/authdialog.cpp" line="1015"/>
<source>Unable to verify %1, please enter password to unlock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="922"/>
<location filename="../src/authdialog.cpp" line="1021"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="933"/>
<source>NET Exception</source>
<location filename="../src/authdialog.cpp" line="1032"/>
<source>Abnormal network</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -153,6 +153,29 @@
<translation type="obsolete">Diğer Ayıtlar</translation>
</message>
</context>
<context>
<name>BatteryWidget</name>
<message>
<location filename="../src/batterywidget.cpp" line="163"/>
<source>Charging...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/batterywidget.cpp" line="165"/>
<source>fully charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/batterywidget.cpp" line="169"/>
<source>PowerMode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/batterywidget.cpp" line="172"/>
<source>BatteryMode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BioDevices</name>
<message>
@ -335,32 +358,32 @@
<context>
<name>DeviceType</name>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="42"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="61"/>
<source>FingerPrint</source>
<translation type="unfinished">Parmak İzi</translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="44"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="63"/>
<source>FingerVein</source>
<translation type="unfinished">Parmak Damarı</translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="46"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="65"/>
<source>Iris</source>
<translation type="unfinished">Göz</translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="48"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="67"/>
<source>Face</source>
<translation type="unfinished">Yüz</translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="50"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="69"/>
<source>VoicePrint</source>
<translation type="unfinished">Ses İzi</translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="52"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="71"/>
<source>QRCode</source>
<translation type="unfinished"></translation>
</message>
@ -409,7 +432,6 @@
<name>DlgConnHidWifi</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifi.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifi.h" line="122"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -463,7 +485,6 @@
<name>DlgConnHidWifiLeap</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifileap.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifileap.h" line="149"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -547,7 +568,6 @@
<name>DlgConnHidWifiSecFast</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifisecfast.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifisecfast.h" line="216"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -682,7 +702,6 @@
<name>DlgConnHidWifiSecLeap</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifisecleap.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifisecleap.h" line="161"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -781,7 +800,6 @@
<name>DlgConnHidWifiSecPeap</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifisecpeap.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifisecpeap.h" line="249"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -931,7 +949,6 @@
<name>DlgConnHidWifiSecPwd</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifisecpwd.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifisecpwd.h" line="161"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -1030,7 +1047,6 @@
<name>DlgConnHidWifiSecTls</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifisectls.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifisectls.h" line="250"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -1174,7 +1190,6 @@
<name>DlgConnHidWifiSecTunnelTLS</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifisectunneltls.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifisectunneltls.h" line="237"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -1309,7 +1324,6 @@
<name>DlgConnHidWifiWep</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifiwep.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifiwep.h" line="163"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -1413,7 +1427,6 @@
<name>DlgConnHidWifiWpa</name>
<message>
<location filename="../KylinNM/wireless-security/dlgconnhidwifiwpa.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlgconnhidwifiwpa.h" line="137"/>
<source>Connect to Hidden Wi-Fi Network</source>
<translation type="unfinished"></translation>
</message>
@ -1472,7 +1485,6 @@
<name>DlgHotspotCreate</name>
<message>
<location filename="../KylinNM/hot-spot/dlghotspotcreate.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_dlghotspotcreate.h" line="89"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
@ -1517,6 +1529,124 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EngineDevice</name>
<message>
<location filename="../src/enginedevice.cpp" line="101"/>
<source>yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="101"/>
<source>no</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="120"/>
<source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="120"/>
<source>No</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="284"/>
<source>%1% available, charged</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="290"/>
<source>Left %1h %2m (%3%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="295"/>
<source>%1% available</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="301"/>
<source>Left %1h %2m to full</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="303"/>
<source>charging (%1%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="309"/>
<source>%1 waiting to discharge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="314"/>
<source>%1 waiting to charge (%2%)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="334"/>
<source>AC adapter</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="338"/>
<source>Laptop battery</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="342"/>
<source>UPS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="346"/>
<source>Monitor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="350"/>
<source>Mouse</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="354"/>
<source>Keyboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="358"/>
<source>PDA</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="362"/>
<source>Cell phone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="366"/>
<source>Media player</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="370"/>
<source>Tablet</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="374"/>
<source>Computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="378"/>
<source>unrecognised</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InputInfos</name>
<message>
@ -1555,7 +1685,6 @@
<name>KeyboardWidget</name>
<message>
<location filename="../VirtualKeyboard/src/keyboardwidget.ui" line="29"/>
<location filename="../obj-x86_64-linux-gnu/VirtualKeyboard/VirtualKeyboard_autogen/include/ui_keyboardwidget.h" line="806"/>
<source>KeyboardWidget</source>
<translation type="unfinished"></translation>
</message>
@ -1564,7 +1693,6 @@
<name>KylinNM</name>
<message>
<location filename="../KylinNM/src/kylinnm.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_kylinnm.h" line="136"/>
<source>kylin-nm</source>
<translation type="unfinished"></translation>
</message>
@ -1636,7 +1764,7 @@
<location filename="../KylinNM/src/kylinnm.cpp" line="1535"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="1701"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2426"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2517"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2518"/>
<source>Not connected</source>
<translation type="unfinished"></translation>
</message>
@ -1649,7 +1777,7 @@
<location filename="../KylinNM/src/kylinnm.cpp" line="1828"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="1995"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2428"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2519"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2520"/>
<source>Disconnected</source>
<translation type="unfinished"></translation>
</message>
@ -1675,22 +1803,22 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../KylinNM/src/kylinnm.cpp" line="2705"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2706"/>
<source>Conn Ethernet Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../KylinNM/src/kylinnm.cpp" line="2717"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2718"/>
<source>Conn Ethernet Fail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../KylinNM/src/kylinnm.cpp" line="2742"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2743"/>
<source>Conn Wifi Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../KylinNM/src/kylinnm.cpp" line="2751"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2752"/>
<source>Confirm your Wi-Fi password or usable of wireless card</source>
<translation type="unfinished"></translation>
</message>
@ -1699,19 +1827,16 @@
<name>LockWidget</name>
<message>
<location filename="../src/lockwidget.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/src/ui_lockwidget.h" line="80"/>
<source>Form</source>
<translation></translation>
</message>
<message>
<location filename="../src/lockwidget.ui" line="55"/>
<location filename="../obj-x86_64-linux-gnu/src/ui_lockwidget.h" line="83"/>
<location filename="../src/lockwidget.ui" line="72"/>
<source>Date</source>
<translation type="unfinished">Tarih</translation>
</message>
<message>
<location filename="../src/lockwidget.ui" line="48"/>
<location filename="../obj-x86_64-linux-gnu/src/ui_lockwidget.h" line="82"/>
<location filename="../src/lockwidget.ui" line="65"/>
<source>Time</source>
<translation type="unfinished">Zaman</translation>
</message>
@ -1723,11 +1848,26 @@
<source>SwitchUser</source>
<translation type="vanished">Kullanıcı Değiştir</translation>
</message>
<message>
<location filename="../src/lockwidget.cpp" line="1092"/>
<source>Multiple users are logged in at the same time.Are you sure you want to reboot this system?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/lockwidget.cpp" line="1400"/>
<source>LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/lockwidget.cpp" line="1402"/>
<source>WLAN</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoginOptionsWidget</name>
<message>
<location filename="../src/loginoptionswidget.cpp" line="49"/>
<location filename="../src/loginoptionswidget.cpp" line="64"/>
<source>Login Options</source>
<translation type="unfinished"></translation>
</message>
@ -1736,7 +1876,7 @@
<translation type="obsolete">Parola</translation>
</message>
<message>
<location filename="../src/loginoptionswidget.cpp" line="504"/>
<location filename="../src/loginoptionswidget.cpp" line="550"/>
<source>Identify device removed!</source>
<translation type="unfinished"></translation>
</message>
@ -1755,7 +1895,6 @@
<name>OneConnForm</name>
<message>
<location filename="../KylinNM/src/oneconnform.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_oneconnform.h" line="150"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
@ -1817,7 +1956,6 @@
<name>OneLancForm</name>
<message>
<location filename="../KylinNM/src/onelancform.ui" line="14"/>
<location filename="../obj-x86_64-linux-gnu/KylinNM/ui_onelancform.h" line="127"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
@ -1918,7 +2056,7 @@
<context>
<name>PowerManager</name>
<message>
<location filename="../src/powermanager.cpp" line="200"/>
<location filename="../src/powermanager.cpp" line="299"/>
<source>lock</source>
<translation>kilit</translation>
</message>
@ -1947,30 +2085,38 @@
<translation type="obsolete">Kullanıcı Değiştir</translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="217"/>
<location filename="../src/powermanager.cpp" line="316"/>
<source>Log Out</source>
<translation type="unfinished">Çıkış</translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="235"/>
<location filename="../src/powermanager.cpp" line="494"/>
<source>Restart</source>
<translation type="unfinished">Yeniden Başlat</translation>
<translation type="obsolete">Yeniden Başlat</translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="255"/>
<location filename="../src/powermanager.cpp" line="510"/>
<location filename="../src/powermanager.cpp" line="334"/>
<location filename="../src/powermanager.cpp" line="672"/>
<source>Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="354"/>
<source>Power Off</source>
<translation type="unfinished">Bilgisayarı Kapat</translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="558"/>
<source>Suspend</source>
<location filename="../src/powermanager.cpp" line="691"/>
<source>Shut Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="534"/>
<source>Sleep</source>
<location filename="../src/powermanager.cpp" line="718"/>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="746"/>
<source>Suspend</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1987,6 +2133,81 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>S:</name>
<message>
<location filename="../src/enginedevice.cpp" line="308"/>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="313"/>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="337"/>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="341"/>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="345"/>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="349"/>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="353"/>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="357"/>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="361"/>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="365"/>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="369"/>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/enginedevice.cpp" line="373"/>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
</context>
<context>
<name>Screensaver</name>
<message>
@ -1998,17 +2219,17 @@
<translation type="obsolete">çıkış</translation>
</message>
<message>
<location filename="../screensaver/screensaver.cpp" line="140"/>
<location filename="../screensaver/screensaver.cpp" line="153"/>
<source>Picture does not exist</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/screensaver.cpp" line="1086"/>
<location filename="../screensaver/screensaver.cpp" line="1191"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/screensaver.cpp" line="1242"/>
<location filename="../screensaver/screensaver.cpp" line="1356"/>
<source>You have new notification</source>
<translation type="unfinished"></translation>
</message>
@ -2024,8 +2245,51 @@
<context>
<name>SleepTime</name>
<message>
<location filename="../screensaver/sleeptime.cpp" line="70"/>
<source>You have rested:</source>
<location filename="../screensaver/sleeptime.cpp" line="64"/>
<source>You have rested</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SureWindow</name>
<message>
<location filename="../src/surewindow.ui" line="14"/>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.ui" line="56"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.ui" line="157"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.ui" line="176"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.cpp" line="40"/>
<source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.cpp" line="43"/>
<source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.cpp" line="46"/>
<source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.cpp" line="49"/>
<source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -2045,38 +2309,38 @@
<context>
<name>TabletLockWidget</name>
<message>
<location filename="../src/tabletlockwidget.cpp" line="180"/>
<location filename="../src/tabletlockwidget.cpp" line="200"/>
<location filename="../src/tabletlockwidget.cpp" line="219"/>
<location filename="../src/tabletlockwidget.cpp" line="234"/>
<location filename="../src/tabletlockwidget.cpp" line="373"/>
<location filename="../src/tabletlockwidget.cpp" line="388"/>
<location filename="../src/tabletlockwidget.cpp" line="189"/>
<location filename="../src/tabletlockwidget.cpp" line="209"/>
<location filename="../src/tabletlockwidget.cpp" line="228"/>
<location filename="../src/tabletlockwidget.cpp" line="243"/>
<location filename="../src/tabletlockwidget.cpp" line="382"/>
<location filename="../src/tabletlockwidget.cpp" line="397"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="186"/>
<location filename="../src/tabletlockwidget.cpp" line="398"/>
<location filename="../src/tabletlockwidget.cpp" line="195"/>
<location filename="../src/tabletlockwidget.cpp" line="407"/>
<source>Back</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="239"/>
<location filename="../src/tabletlockwidget.cpp" line="248"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="266"/>
<location filename="../src/tabletlockwidget.cpp" line="275"/>
<source>New password is the same as old</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="277"/>
<location filename="../src/tabletlockwidget.cpp" line="286"/>
<source>Reset password error:%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="289"/>
<location filename="../src/tabletlockwidget.cpp" line="298"/>
<source>Please scan by correct WeChat</source>
<translation type="unfinished"></translation>
</message>
@ -2148,6 +2412,19 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<location filename="../examples/LoadCustomPlugin/widget.ui" line="14"/>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../examples/LoadCustomPlugin/widget.ui" line="26"/>
<source>LoadPlugin</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
@ -2157,8 +2434,8 @@
</message>
<message>
<location filename="../src/ukui-screensaver-command.cpp" line="47"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="184"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="186"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="166"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="168"/>
<source>lock the screen immediately</source>
<translation type="unfinished">Ekranı hemen kilitle</translation>
</message>
@ -2178,43 +2455,43 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ukui-screensaver-dialog.cpp" line="179"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="161"/>
<source>Dialog for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ukui-screensaver-dialog.cpp" line="188"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="170"/>
<source>activated by session idle signal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ukui-screensaver-dialog.cpp" line="190"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="194"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="172"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="176"/>
<source>lock the screen and show screensaver immediately</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ukui-screensaver-dialog.cpp" line="192"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="174"/>
<source>show screensaver immediately</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/main.cpp" line="65"/>
<location filename="../screensaver/main.cpp" line="56"/>
<source>Screensaver for ukui-screensaver</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/main.cpp" line="69"/>
<location filename="../screensaver/main.cpp" line="60"/>
<source>show on root window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/main.cpp" line="71"/>
<location filename="../screensaver/main.cpp" line="62"/>
<source>show on window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/main.cpp" line="72"/>
<location filename="../screensaver/main.cpp" line="63"/>
<source>window id</source>
<translation type="unfinished"></translation>
</message>

View File

@ -16,7 +16,7 @@
<translation type="obsolete">使</translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="681"/>
<location filename="../src/authdialog.cpp" line="766"/>
<source>Retry</source>
<translation></translation>
</message>
@ -45,71 +45,71 @@
<translation type="vanished">%1%2</translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="251"/>
<location filename="../src/authdialog.cpp" line="252"/>
<location filename="../src/authdialog.cpp" line="315"/>
<location filename="../src/authdialog.cpp" line="316"/>
<location filename="../src/authdialog.cpp" line="253"/>
<location filename="../src/authdialog.cpp" line="320"/>
<location filename="../src/authdialog.cpp" line="321"/>
<source>Please try again in %1 minutes.</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="260"/>
<location filename="../src/authdialog.cpp" line="261"/>
<location filename="../src/authdialog.cpp" line="324"/>
<location filename="../src/authdialog.cpp" line="325"/>
<location filename="../src/authdialog.cpp" line="262"/>
<location filename="../src/authdialog.cpp" line="263"/>
<location filename="../src/authdialog.cpp" line="329"/>
<location filename="../src/authdialog.cpp" line="330"/>
<source>Please try again in %1 seconds.</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="269"/>
<location filename="../src/authdialog.cpp" line="270"/>
<location filename="../src/authdialog.cpp" line="333"/>
<location filename="../src/authdialog.cpp" line="334"/>
<location filename="../src/authdialog.cpp" line="272"/>
<location filename="../src/authdialog.cpp" line="273"/>
<location filename="../src/authdialog.cpp" line="338"/>
<location filename="../src/authdialog.cpp" line="339"/>
<source>Account locked permanently.</source>
<translation></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="449"/>
<location filename="../src/authdialog.cpp" line="459"/>
<source>Verify face recognition or enter password to unlock</source>
<translation></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="454"/>
<location filename="../src/authdialog.cpp" line="464"/>
<source>Press fingerprint or enter password to unlock</source>
<translation></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="459"/>
<location filename="../src/authdialog.cpp" line="469"/>
<source>Verify voiceprint or enter password to unlock</source>
<translation></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="464"/>
<location filename="../src/authdialog.cpp" line="474"/>
<source>Verify finger vein or enter password to unlock</source>
<translation></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="469"/>
<location filename="../src/authdialog.cpp" line="479"/>
<source>Verify iris or enter password to unlock</source>
<translation></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="613"/>
<location filename="../src/authdialog.cpp" line="688"/>
<source>Input Password</source>
<translation></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="909"/>
<location filename="../src/authdialog.cpp" line="1011"/>
<source>Failed to verify %1, please enter password to unlock</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="913"/>
<location filename="../src/authdialog.cpp" line="1015"/>
<source>Unable to verify %1, please enter password to unlock</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="937"/>
<location filename="../src/authdialog.cpp" line="1032"/>
<source>Abnormal network</source>
<translation></translation>
</message>
@ -118,8 +118,8 @@
<translation type="vanished">使</translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="527"/>
<location filename="../src/authdialog.cpp" line="528"/>
<location filename="../src/authdialog.cpp" line="537"/>
<location filename="../src/authdialog.cpp" line="538"/>
<source>Password cannot be empty</source>
<translation></translation>
</message>
@ -132,7 +132,7 @@
<translation type="vanished">%1.</translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="919"/>
<location filename="../src/authdialog.cpp" line="1021"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation>%1%2</translation>
</message>
@ -145,9 +145,8 @@
<translation type="vanished">/%1</translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="930"/>
<source>NET Exception</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<source>Password Incorrect, Please try again</source>
@ -162,22 +161,22 @@
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="650"/>
<location filename="../src/authdialog.cpp" line="726"/>
<source>Authentication failure, Please try again</source>
<translation></translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="474"/>
<location filename="../src/authdialog.cpp" line="484"/>
<source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation>使</translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="611"/>
<location filename="../src/authdialog.cpp" line="686"/>
<source>Password </source>
<translation> </translation>
</message>
<message>
<location filename="../src/authdialog.cpp" line="675"/>
<location filename="../src/authdialog.cpp" line="754"/>
<source>Login</source>
<translation></translation>
</message>
@ -205,24 +204,22 @@
<context>
<name>BatteryWidget</name>
<message>
<location filename="../src/batterywidget.cpp" line="71"/>
<location filename="../src/batterywidget.cpp" line="139"/>
<location filename="../src/batterywidget.cpp" line="172"/>
<source>BatteryMode</source>
<translation></translation>
</message>
<message>
<location filename="../src/batterywidget.cpp" line="71"/>
<location filename="../src/batterywidget.cpp" line="136"/>
<location filename="../src/batterywidget.cpp" line="169"/>
<source>PowerMode</source>
<translation></translation>
</message>
<message>
<location filename="../src/batterywidget.cpp" line="129"/>
<location filename="../src/batterywidget.cpp" line="163"/>
<source>Charging...</source>
<translation>...</translation>
</message>
<message>
<location filename="../src/batterywidget.cpp" line="131"/>
<location filename="../src/batterywidget.cpp" line="165"/>
<source>fully charged</source>
<translation></translation>
</message>
@ -421,32 +418,32 @@
<context>
<name>DeviceType</name>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="42"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="61"/>
<source>FingerPrint</source>
<translation></translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="44"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="63"/>
<source>FingerVein</source>
<translation></translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="46"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="65"/>
<source>Iris</source>
<translation></translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="48"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="67"/>
<source>Face</source>
<translation></translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="50"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="69"/>
<source>VoicePrint</source>
<translation></translation>
</message>
<message>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="52"/>
<location filename="../BiometricAuth/biometricdeviceinfo.cpp" line="71"/>
<source>QRCode</source>
<translation></translation>
</message>
@ -1917,7 +1914,7 @@
<location filename="../KylinNM/src/kylinnm.cpp" line="1535"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="1701"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2426"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2517"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2518"/>
<source>Not connected</source>
<translation></translation>
</message>
@ -1930,7 +1927,7 @@
<location filename="../KylinNM/src/kylinnm.cpp" line="1828"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="1995"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2428"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2519"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2520"/>
<source>Disconnected</source>
<translation></translation>
</message>
@ -1966,7 +1963,7 @@
<translation type="obsolete">线</translation>
</message>
<message>
<location filename="../KylinNM/src/kylinnm.cpp" line="2751"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2752"/>
<source>Confirm your Wi-Fi password or usable of wireless card</source>
<translation type="unfinished">Wi-Fi密码或无线设备</translation>
</message>
@ -2022,17 +2019,17 @@
<translation type="vanished"> Wi-Fi列表</translation>
</message>
<message>
<location filename="../KylinNM/src/kylinnm.cpp" line="2705"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2706"/>
<source>Conn Ethernet Success</source>
<translation>线</translation>
</message>
<message>
<location filename="../KylinNM/src/kylinnm.cpp" line="2717"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2718"/>
<source>Conn Ethernet Fail</source>
<translation>线</translation>
</message>
<message>
<location filename="../KylinNM/src/kylinnm.cpp" line="2742"/>
<location filename="../KylinNM/src/kylinnm.cpp" line="2743"/>
<source>Conn Wifi Success</source>
<translation>线</translation>
</message>
@ -2045,12 +2042,12 @@
<translation></translation>
</message>
<message>
<location filename="../src/lockwidget.ui" line="55"/>
<location filename="../src/lockwidget.ui" line="72"/>
<source>Date</source>
<translation></translation>
</message>
<message>
<location filename="../src/lockwidget.ui" line="48"/>
<location filename="../src/lockwidget.ui" line="65"/>
<source>Time</source>
<translation></translation>
</message>
@ -2063,17 +2060,17 @@
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/lockwidget.cpp" line="523"/>
<location filename="../src/lockwidget.cpp" line="1092"/>
<source>Multiple users are logged in at the same time.Are you sure you want to reboot this system?</source>
<translation>退</translation>
</message>
<message>
<location filename="../src/lockwidget.cpp" line="727"/>
<location filename="../src/lockwidget.cpp" line="1400"/>
<source>LAN</source>
<translation type="unfinished">线</translation>
</message>
<message>
<location filename="../src/lockwidget.cpp" line="729"/>
<location filename="../src/lockwidget.cpp" line="1402"/>
<source>WLAN</source>
<translation type="unfinished">线</translation>
</message>
@ -2081,7 +2078,7 @@
<context>
<name>LoginOptionsWidget</name>
<message>
<location filename="../src/loginoptionswidget.cpp" line="49"/>
<location filename="../src/loginoptionswidget.cpp" line="64"/>
<source>Login Options</source>
<translation></translation>
</message>
@ -2094,7 +2091,7 @@
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/loginoptionswidget.cpp" line="504"/>
<location filename="../src/loginoptionswidget.cpp" line="550"/>
<source>Identify device removed!</source>
<translation>!</translation>
</message>
@ -2302,7 +2299,7 @@
<context>
<name>PowerManager</name>
<message>
<location filename="../src/powermanager.cpp" line="380"/>
<location filename="../src/powermanager.cpp" line="299"/>
<source>lock</source>
<translation></translation>
</message>
@ -2331,38 +2328,37 @@
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="397"/>
<location filename="../src/powermanager.cpp" line="316"/>
<source>Log Out</source>
<translation></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="415"/>
<location filename="../src/powermanager.cpp" line="699"/>
<source>Restart</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="325"/>
<location filename="../src/powermanager.cpp" line="334"/>
<location filename="../src/powermanager.cpp" line="672"/>
<source>Reboot</source>
<translation></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="345"/>
<location filename="../src/powermanager.cpp" line="354"/>
<source>Power Off</source>
<translation></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="717"/>
<location filename="../src/powermanager.cpp" line="691"/>
<source>Shut Down</source>
<translation></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="743"/>
<location filename="../src/powermanager.cpp" line="718"/>
<source>Hibernate</source>
<translation></translation>
</message>
<message>
<location filename="../src/powermanager.cpp" line="770"/>
<location filename="../src/powermanager.cpp" line="746"/>
<source>Suspend</source>
<translation></translation>
</message>
@ -2389,7 +2385,7 @@
<message>
<location filename="../src/enginedevice.cpp" line="308"/>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<comment>tablet device</comment>
<translation></translation>
</message>
</context>
@ -2404,7 +2400,7 @@
<translation type="vanished">退</translation>
</message>
<message>
<location filename="../screensaver/screensaver.cpp" line="140"/>
<location filename="../screensaver/screensaver.cpp" line="153"/>
<source>Picture does not exist</source>
<translation></translation>
</message>
@ -2421,12 +2417,12 @@
<translation type="obsolete">%1</translation>
</message>
<message>
<location filename="../screensaver/screensaver.cpp" line="1289"/>
<location filename="../screensaver/screensaver.cpp" line="1356"/>
<source>You have new notification</source>
<translation></translation>
</message>
<message>
<location filename="../screensaver/screensaver.cpp" line="1133"/>
<location filename="../screensaver/screensaver.cpp" line="1191"/>
<source>View</source>
<translation></translation>
</message>
@ -2434,9 +2430,8 @@
<context>
<name>SleepTime</name>
<message>
<location filename="../screensaver/sleeptime.cpp" line="70"/>
<source>You have rested:</source>
<translation>:</translation>
<translation type="vanished">:</translation>
</message>
<message>
<location filename="../screensaver/sleeptime.cpp" line="64"/>
@ -2457,17 +2452,16 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/surewindow.ui" line="108"/>
<location filename="../src/surewindow.ui" line="157"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../src/surewindow.ui" line="127"/>
<location filename="../src/surewindow.ui" line="176"/>
<source>Confirm</source>
<translation></translation>
</message>
<message>
<location filename="../src/surewindow.cpp" line="9"/>
<source>Multiple users are logged in at the same time.Are you sure you want to reboot this system?</source>
<translation type="vanished">退</translation>
</message>
@ -2527,38 +2521,38 @@
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="266"/>
<location filename="../src/tabletlockwidget.cpp" line="275"/>
<source>New password is the same as old</source>
<translation></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="277"/>
<location filename="../src/tabletlockwidget.cpp" line="286"/>
<source>Reset password error:%1</source>
<translation>:%1</translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="289"/>
<location filename="../src/tabletlockwidget.cpp" line="298"/>
<source>Please scan by correct WeChat</source>
<translation>使</translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="180"/>
<location filename="../src/tabletlockwidget.cpp" line="200"/>
<location filename="../src/tabletlockwidget.cpp" line="219"/>
<location filename="../src/tabletlockwidget.cpp" line="234"/>
<location filename="../src/tabletlockwidget.cpp" line="373"/>
<location filename="../src/tabletlockwidget.cpp" line="388"/>
<location filename="../src/tabletlockwidget.cpp" line="189"/>
<location filename="../src/tabletlockwidget.cpp" line="209"/>
<location filename="../src/tabletlockwidget.cpp" line="228"/>
<location filename="../src/tabletlockwidget.cpp" line="243"/>
<location filename="../src/tabletlockwidget.cpp" line="382"/>
<location filename="../src/tabletlockwidget.cpp" line="397"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="186"/>
<location filename="../src/tabletlockwidget.cpp" line="398"/>
<location filename="../src/tabletlockwidget.cpp" line="195"/>
<location filename="../src/tabletlockwidget.cpp" line="407"/>
<source>Back</source>
<translation></translation>
</message>
<message>
<location filename="../src/tabletlockwidget.cpp" line="239"/>
<location filename="../src/tabletlockwidget.cpp" line="248"/>
<source>Skip</source>
<translation></translation>
</message>
@ -2634,6 +2628,19 @@
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<location filename="../examples/LoadCustomPlugin/widget.ui" line="14"/>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../examples/LoadCustomPlugin/widget.ui" line="26"/>
<source>LoadPlugin</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
@ -2643,8 +2650,8 @@
</message>
<message>
<location filename="../src/ukui-screensaver-command.cpp" line="47"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="163"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="165"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="166"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="168"/>
<source>lock the screen immediately</source>
<translation></translation>
</message>
@ -2664,43 +2671,43 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ukui-screensaver-dialog.cpp" line="158"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="161"/>
<source>Dialog for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ukui-screensaver-dialog.cpp" line="167"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="170"/>
<source>activated by session idle signal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ukui-screensaver-dialog.cpp" line="169"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="173"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="172"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="176"/>
<source>lock the screen and show screensaver immediately</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/ukui-screensaver-dialog.cpp" line="171"/>
<location filename="../src/ukui-screensaver-dialog.cpp" line="174"/>
<source>show screensaver immediately</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/main.cpp" line="65"/>
<location filename="../screensaver/main.cpp" line="56"/>
<source>Screensaver for ukui-screensaver</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/main.cpp" line="69"/>
<location filename="../screensaver/main.cpp" line="60"/>
<source>show on root window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/main.cpp" line="71"/>
<location filename="../screensaver/main.cpp" line="62"/>
<source>show on window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../screensaver/main.cpp" line="72"/>
<location filename="../screensaver/main.cpp" line="63"/>
<source>window id</source>
<translation type="unfinished"></translation>
</message>

View File

@ -857,12 +857,10 @@ void Screensaver::initUI()
if(qssFile.open(QIODevice::ReadOnly)) {
setStyleSheet(qssFile.readAll());
qDebug()<<qssFile.readAll();
}
qssFile.close();
#ifdef USE_INTEL
m_weatherManager = new WeatherManager(this);
setWeatherLayout();
setDatelayout();
setCenterWidget();

View File

@ -156,7 +156,6 @@ private:
QTimer *movieTimer = nullptr;
int currentCount = 0;
QDateTime m_lastDateTime;
bool bControlFlg = true;
bool isScreensaver = false;
protected:
void paintEvent(QPaintEvent *event);

View File

@ -6,6 +6,7 @@ pkg_check_modules(QGS REQUIRED gsettings-qt)
pkg_check_modules(GLIB REQUIRED glib-2.0)
pkg_check_modules(MMIX REQUIRED libmatemixer)
pkg_check_modules(kylin-nm-base REQUIRED kylin-nm-base)
find_library(PAM_LIBRARIES pam)
@ -26,7 +27,7 @@ include_directories(
${QGS_INCLUDE_DIRS}
${GLIB_INCLUDE_DIRS}
${MMIX_INCLUDE_DIRS}
${MMIX_INCLUDE_DIRS}
${kylin-nm-base_INCLUDE_DIRS}
${KF5Wayland_LIBRARIES}
)
@ -44,6 +45,8 @@ set(EXTRA_LIBS
-lpthread
-lKF5WaylandServer
-lKF5WaylandClient
-llibnm-icon-kylin
-lukuiinputgatherclient
)
qt5_wrap_ui(dialog_SRC
@ -97,6 +100,7 @@ qt5_wrap_cpp(dialog_SRC
loginedusers.h
lockchecker.h
servicemanager.h
mytabwidget.h
plasma-shell-manager.h
PhysicalDeviceSet/brightnessdeviceset.h
PhysicalDeviceSet/flightmodeset.h
@ -105,6 +109,7 @@ qt5_wrap_cpp(dialog_SRC
device.h
enginedevice.h
batterywidget.h
libinputswitchevent.h
)
set(dialog_SRC
@ -147,6 +152,7 @@ set(dialog_SRC
loginedusers.cpp
lockchecker.cpp
servicemanager.cpp
mytabwidget.cpp
plasma-shell-manager.cpp
PhysicalDeviceSet/brightnessdeviceset.cpp
PhysicalDeviceSet/flightmodeset.cpp
@ -155,6 +161,7 @@ set(dialog_SRC
device.cpp
enginedevice.cpp
batterywidget.cpp
libinputswitchevent.cpp
)
add_executable(ukui-screensaver-dialog ${dialog_SRC})
add_definitions(-DAPP_API_MAJOR=0 -DAPP_API_MINOR=11 -DAPP_API_FUNC=0)

View File

@ -5,9 +5,7 @@
<qresource prefix="/image">
<file>assets/show-password.png</file>
<file>assets/hide-password.png</file>
<file>assets/keyboard.png</file>
<file>assets/switchGreeter.png</file>
<file>assets/switchUser.png</file>
<file>assets/waiting.png</file>
<file>assets/capslock.png</file>
<file>assets/combobox_down.png</file>
@ -25,13 +23,8 @@
<file>assets/unlock-button-pressed.png</file>
<file>assets/iconFace.png</file>
<file>assets/iconFace.svg</file>
<file>assets/powerManager.png</file>
<file>assets/lock.png</file>
<file>assets/logout.png</file>
<file>assets/shutdown.png</file>
<file>assets/suspend.png</file>
<file>assets/hibernate.png</file>
<file>assets/reboot.png</file>
<file>assets/bio-login.png</file>
<file>assets/password-login.png</file>
<file>assets/weather/68.png</file>
@ -125,5 +118,10 @@
<file>assets/ukui-loginopt-lose.svg</file>
<file>assets/01-default-commercial.png</file>
<file>assets/01-default-community.png</file>
<file>assets/suspend.svg</file>
<file>assets/shutdown.svg</file>
<file>assets/reboot.svg</file>
<file>assets/hibernate.svg</file>
<file>assets/switchuser.svg</file>
</qresource>
</RCC>

View File

@ -101,11 +101,6 @@ QLineEdit::focus{
/* 登录按钮 */
#loginButton{
min-width: 24px;
max-width: 24px;
min-height: 24px;
max-height: 24px;
icon-size: 24px;
background:#3D6BE5;
border-radius:12px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 902 B

1
src/assets/hibernate.svg Normal file
View File

@ -0,0 +1 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M41.06,31.53A18.5,18.5,0,0,1,16,6.44a1.51,1.51,0,0,0-2-2A21.5,21.5,0,1,0,43.1,33.57a1.51,1.51,0,0,0-2-2ZM24.22,41.78A18.5,18.5,0,0,1,11.39,10a21.27,21.27,0,0,0-.67,5.33,21.52,21.52,0,0,0,21.5,21.5,21.27,21.27,0,0,0,5.33-.67A18.49,18.49,0,0,1,24.22,41.78Z" fill="#fff"/><path d="M26,31h6.8a1,1,0,0,0,0-2H28.41l4.3-4.29a1,1,0,0,0,.21-1.09A1,1,0,0,0,32,23H26.4a1,1,0,0,0,0,2h3.19l-4.3,4.29a1,1,0,0,0-.21,1.09A1,1,0,0,0,26,31Z" fill="#fff"/><path d="M29,20h6.8a1,1,0,0,0,0-2H31.41l4.3-4.29a1,1,0,0,0,.21-1.09A1,1,0,0,0,35,12H29.4a1,1,0,0,0,0,2h3.19l-4.3,4.29a1,1,0,0,0-.21,1.09A1,1,0,0,0,29,20Z" fill="#fff"/><path d="M43.8,27H39.41l4.3-4.29a1,1,0,0,0,.21-1.09A1,1,0,0,0,43,21H37.4a1,1,0,0,0,0,2h3.19l-4.3,4.29a1,1,0,0,0-.21,1.09A1,1,0,0,0,37,29h6.8a1,1,0,0,0,0-2Z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 885 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

1
src/assets/reboot.svg Normal file
View File

@ -0,0 +1 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M42.44,21.88A1.5,1.5,0,0,0,41,23.43,17,17,0,0,1,12,36,17,17,0,0,1,34.91,11L32,13.91h8.29V5.62L37,8.84a20,20,0,1,0,7,14.49A1.46,1.46,0,0,0,42.44,21.88Z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

1
src/assets/shutdown.svg Normal file
View File

@ -0,0 +1 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M37.09,11.38a1.5,1.5,0,0,0-2,2.28A16.58,16.58,0,0,1,41,26.29a17,17,0,0,1-34,0,16.59,16.59,0,0,1,5.88-12.65,1.5,1.5,0,1,0-2-2.28A19.61,19.61,0,0,0,4,26.29,19.88,19.88,0,0,0,24,46,19.88,19.88,0,0,0,44,26.29,19.6,19.6,0,0,0,37.09,11.38Z" fill="#fff"/><rect x="22" y="2" width="4" height="24" rx="1.92" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 817 B

1
src/assets/suspend.svg Normal file
View File

@ -0,0 +1 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M42.06,30.53A18.5,18.5,0,0,1,17,5.44a1.51,1.51,0,0,0-2-2A21.5,21.5,0,1,0,44.1,32.57a1.51,1.51,0,0,0-2-2ZM25.22,40.78A18.5,18.5,0,0,1,12.39,9a21.27,21.27,0,0,0-.67,5.33,21.52,21.52,0,0,0,21.5,21.5,21.27,21.27,0,0,0,5.33-.67A18.49,18.49,0,0,1,25.22,40.78Z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 B

View File

@ -0,0 +1 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M27.73,8h.19A6.25,6.25,0,0,1,29.2,20.37a9.44,9.44,0,0,1-1.38,2,8.61,8.61,0,0,1-1.08,1A9.24,9.24,0,1,0,27.92,5a9.08,9.08,0,0,0-3.5.71c.17.07.34.13.5.21A9.21,9.21,0,0,1,27.73,8Z" fill="#fff"/><path d="M18.92,24.5a9.25,9.25,0,1,0-9.25-9.25A9.22,9.22,0,0,0,18.92,24.5Zm0-15.5a6.62,6.62,0,0,1,1.1.1,6.25,6.25,0,0,1,0,12.3,6.52,6.52,0,0,1-1.1.1,6.25,6.25,0,0,1,0-12.5Z" fill="#fff"/><path d="M37.75,25.81H33.08A8.28,8.28,0,0,1,36,28.34c.12.15.22.31.33.47h1.4A5.08,5.08,0,0,1,38.24,39,8,8,0,0,1,37,41a8.41,8.41,0,0,1-1,1h1.71a8.1,8.1,0,0,0,0-16.19Z" fill="#fff"/><path d="M35,29.81a8.09,8.09,0,0,0-6.27-3H9.09A8.1,8.1,0,0,0,9.09,43H28.75A8.08,8.08,0,0,0,35,29.81ZM28.75,40H9.09a5.1,5.1,0,0,1,0-10.19H28.75a5.1,5.1,0,0,1,0,10.19Z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 846 B

View File

@ -57,6 +57,12 @@ AuthDialog::AuthDialog(const UserItem &user, QWidget *parent) :
w_timer(nullptr),
m_uniauthService(new UniAuthService(this))
{
setObjectName("AuthDialog");
QFile qssFile(":/qss/assets/authdialog.qss");
if(qssFile.open(QIODevice::ReadOnly)) {
this->setStyleSheet(qssFile.readAll());
}
initUI();
pam_tally_init(); //这里写函数声明
@ -102,24 +108,6 @@ void AuthDialog::stopAuth()
// m_passwdWidget->hide();
}
QPixmap AuthDialog::PixmapToRound(const QPixmap &src, int radius)
{
if (src.isNull()) {
return QPixmap();
}
QPixmap pixmapa(src);
QPixmap pixmap(radius*2,radius*2);
pixmap.fill(Qt::transparent);
QPainter painter(&pixmap);
painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
QPainterPath path;
path.addEllipse(0, 0, radius*2, radius*2);
painter.setClipPath(path);
painter.drawPixmap(0, 0, radius*2, radius*2, pixmapa);
return pixmap;
}
void AuthDialog::initUI()
{
if (scale < 0.5) {
@ -412,9 +400,9 @@ void AuthDialog::setChildrenGeometry()
width()-(m_passwdWidget->width() - 240)/2, 36);
m_messageLabel->setMinimumHeight(36);
m_messageButton->setGeometry((m_passwdWidget->width() - 200)/2, 0, 200, 40);
m_messageButton->setStyleSheet("QPushButton:!checked:!pressed:!hover{background-color: rgba(255,255,255,40)}"
"QPushButton:!checked:!pressed:hover{background-color: rgba(255,255,255,100)}"
"QPushButton:pressed{background-color: rgba(255,255,255,40)}");
// m_messageButton->setStyleSheet("QPushButton:!checked:!pressed:!hover{background-color: rgba(255,255,255,40)}"
// "QPushButton:!checked:!pressed:hover{background-color: rgba(255,255,255,100)}"
// "QPushButton:pressed{background-color: rgba(255,255,255,40)}");
setBiometricWidgetGeometry();
@ -600,33 +588,52 @@ void AuthDialog::setX11Focus()
void AuthDialog::setFocusin(int target)
{
if(m_passwordEdit && m_widgetLoginOpts) {
if(m_passwordEdit) {
switch (target) {
case REMOVE: //焦点清除
m_widgetLoginOpts->tabOptionSelected(2);
if(m_widgetLoginOpts)
m_widgetLoginOpts->tabOptionSelected(2);
m_passwordEdit->setFocusin(2);
if(is_showMessageBtn) {
m_messageButton->clearFocus();
m_messageButton->setStyleSheet("QPushButton:!checked:!pressed:!hover{background-color: rgba(255,255,255,40)}"
"QPushButton:!checked:!pressed:hover{background-color: rgba(255,255,255,100)}"
"QPushButton:pressed{background-color: rgba(255,255,255,40)}");
}
m_nameLabel->setFocus();
break;
case IN_LIGIN: //焦点在登录按钮
m_widgetLoginOpts->tabOptionSelected(2);
if(m_widgetLoginOpts)
m_widgetLoginOpts->tabOptionSelected(2);
m_passwordEdit->setFocusin(1);
break;
case BIO_RIGHT: //登录选项焦点右移
m_widgetLoginOpts->tabOptionSelected(0);
if(m_widgetLoginOpts)
m_widgetLoginOpts->tabOptionSelected(0);
m_passwordEdit->setFocusin(2);
m_nameLabel->setFocus();
break;
case BIO_LEFT: //登录选项焦点左移
m_widgetLoginOpts->tabOptionSelected(1);
if(m_widgetLoginOpts)
m_widgetLoginOpts->tabOptionSelected(1);
m_passwordEdit->setFocusin(target);
m_nameLabel->setFocus();
break;
case IN_LINEEDIT: //焦点在密码输入框
m_widgetLoginOpts->tabOptionSelected(2);
if(m_widgetLoginOpts)
m_widgetLoginOpts->tabOptionSelected(2);
m_passwordEdit->setFocusin(0);
break;
case ON_MESSAGEBTN: //免密登录按钮
if(m_widgetLoginOpts)
m_widgetLoginOpts->tabOptionSelected(2);
m_passwordEdit->setFocusin(2);
m_messageButton->setFocus();
m_messageButton->setStyleSheet("QPushButton{background-color: rgba(255,255,255,15%); border-radius: 4px; border: 2px solid #2C73C8;}");
break;
default:
m_passwordEdit->setFocusin(target);
if(m_widgetLoginOpts)
m_passwordEdit->setFocusin(target);
m_widgetLoginOpts->tabOptionSelected(2);
break;
}
@ -733,9 +740,11 @@ void AuthDialog::show_authenticated(bool successful)
m_passwdWidget->show();
m_passwordEdit->hide();
m_passwordEdit->setFocusPolicy(Qt::NoFocus);
m_messageButton->setFocusPolicy(Qt::StrongFocus);
setFocusProxy(m_messageButton);
// m_messageButton->setFocusPolicy(Qt::StrongFocus);
// setFocusProxy(m_messageButton);
m_messageButton->show();
is_showMessageBtn = true;
Q_EMIT showMessageBtn(is_showMessageBtn);
m_messageButton->setFocus();
m_messageButton->setDefault(true);
@ -769,6 +778,7 @@ void AuthDialog::onMessageButtonClicked()
else
{
m_messageButton->hide();
is_showMessageBtn = false;
authMode = PASSWORD;
m_messageLabel->setText("");
@ -776,6 +786,11 @@ void AuthDialog::onMessageButtonClicked()
}
}
bool AuthDialog::getLineeditStatus()
{
return is_showMessageBtn;
}
void AuthDialog::onRespond(const QString &text)
{
if (!prompted && text != BIOMETRIC_SUCCESS) {

View File

@ -52,6 +52,7 @@ enum FOCUS {
BIO_RIGHT,
BIO_LEFT,
IN_LINEEDIT,
ON_MESSAGEBTN,
};
extern float scale;
@ -69,6 +70,7 @@ public:
void setClick();
void checkPassword();
int getBioNum();
bool getLineeditStatus();
private:
void initUI();
void startWaiting();
@ -79,7 +81,6 @@ private:
void initBiometricWidget();
void setChildrenGeometry();
void setBiometricWidgetGeometry();
QPixmap PixmapToRound(const QPixmap &src, int radius);
void startBioAuth(unsigned uTimeout = 1000);
void show_authenticated (bool successful = true);
void setLoginTypeTip(QString strLoginTypeTip);
@ -125,6 +126,7 @@ Q_SIGNALS:
void authenticateCompete(bool result);
void clickPassword(bool clicked);
void loginOptionClicked();
void showMessageBtn(bool is_show);
private:
UserItem user;
Auth *auth;
@ -157,6 +159,7 @@ private:
IconEdit *m_passwordEdit; //密码输入框
QLabel *m_messageLabel; //PAM消息显示
QPushButton *m_messageButton;
bool is_showMessageBtn = false;
QLabel *m_labelFace = nullptr;
QLabel *m_labelLoginTypeTip = nullptr; // 登录类型提示

View File

@ -38,7 +38,8 @@ void BatteryWidget::initUi()
}");
mValueLabel = new QLabel(this);
mValueLabel->setFixedSize(48, 48);
mValueLabel->setFixedHeight(48);
mValueLabel->setMidLineWidth(48);
mStatusLabel = new QLabel(this);
mStatusLabel->setFixedHeight(36);
@ -163,7 +164,6 @@ void BatteryWidget::onBatteryChanged(QStringList args)
} else if (batteryState == 4) {
mStatusLabel->setText(tr("fully charged"));
}
if (batteryState == 4 || batteryState == 1 || batteryState == 5) {
mStatusLabel->setVisible(true);
mModeLabel->setText(tr("PowerMode"));

View File

@ -38,7 +38,7 @@ public:
public:
ScreenSaver *getScreensaver();
static Configuration *instance(QObject *parent = nullptr);
QString getBackground();
QString getBackground();
bool lockWhenXScreensaverActivated();
int idlelock();
int idledelay();

View File

@ -211,21 +211,21 @@ FullBackgroundWidget::FullBackgroundWidget(QWidget *parent)
qDebug() << "init - screenStatus: " << screenStatus;
m_listWndIds.clear();
setMouseTracking(true);
// connect(monitorWatcher, &MonitorWatcher::monitorCountChanged,
// this, &FullBackgroundWidget::onScreenCountChanged);
// QDesktopWidget *desktop = QApplication::desktop();
// connect(monitorWatcher, &MonitorWatcher::monitorCountChanged,
// this, &FullBackgroundWidget::onScreenCountChanged);
QDesktopWidget *desktop = QApplication::desktop();
// connect(desktop, &QDesktopWidget::resized,
// this, &FullBackgroundWidget::onDesktopResized);
connect(desktop, &QDesktopWidget::resized,
this, &FullBackgroundWidget::onDesktopResized);
// connect(desktop, &QDesktopWidget::workAreaResized,
// this, &FullBackgroundWidget::onDesktopResized);
// connect(desktop, &QDesktopWidget::primaryScreenChanged,
// this, &FullBackgroundWidget::onDesktopResized);
// connect(desktop, &QDesktopWidget::screenCountChanged,
// this, &FullBackgroundWidget::onDesktopResized);
connect(desktop, &QDesktopWidget::primaryScreenChanged,
this, &FullBackgroundWidget::onDesktopResized);
connect(desktop, &QDesktopWidget::screenCountChanged,
this, &FullBackgroundWidget::onDesktopResized);
connect(QApplication::primaryScreen(),&QScreen::geometryChanged, this, &FullBackgroundWidget::onDesktopResized);
connect(QApplication::screens().at(0), &QScreen::virtualGeometryChanged, this,&FullBackgroundWidget::onDesktopResized);
// connect(QApplication::primaryScreen(),&QScreen::geometryChanged, this, &FullBackgroundWidget::onDesktopResized);
// connect(QApplication::screens().at(0), &QScreen::virtualGeometryChanged, this,&FullBackgroundWidget::onDesktopResized);
QDBusInterface *iface = new QDBusInterface("org.freedesktop.login1",
"/org/freedesktop/login1",
@ -256,10 +256,6 @@ FullBackgroundWidget::FullBackgroundWidget(QWidget *parent)
this, SLOT(propertiesChangedSlot(QString, QMap<QString, QVariant>, QStringList)));
#endif
if(QX11Info::isPlatformX11()){
xEventMonitor = new XEventMonitor(this);
}
init();
qApp->installNativeEventFilter(this);
installEventFilter(this);
@ -311,8 +307,8 @@ void FullBackgroundWidget::laterActivate()
raiseOtherWnd();
setFocus();
if(lockWidget && lockWidget->isVisible()) {
//lockWidget->setFocus();
lockWidget->onActiveWindpw();//将焦点设置到密码框
lockWidget->setFocus();
lockWidget->onActiveLineedit();//将焦点设置到密码框
}
update();
}
@ -323,8 +319,8 @@ void FullBackgroundWidget::laterOtherActivate()
raiseOtherWnd();
//setFocus();
if(lockWidget && lockWidget->isVisible()) {
//lockWidget->setFocus();
lockWidget->onActiveWindpw();//将焦点设置到密码框
lockWidget->setFocus();
lockWidget->onActiveLineedit();//将焦点设置到密码框
}
}
@ -346,15 +342,17 @@ void FullBackgroundWidget::setLockState()
bool FullBackgroundWidget::eventFilter(QObject *obj, QEvent *event)
{
if(event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseMove || event->type() == 7){
if(screenStatus & SCREEN_SAVER){
clearScreensavers();
if (!QX11Info::isPlatformX11()) {
if(event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseMove || event->type() == 7){
if(screenStatus & SCREEN_SAVER && !isBlank){
clearScreensavers();
}
}
}
if(event->type() == QEvent::WindowDeactivate){
QTimer::singleShot(50,this,SLOT(laterActivate()));
}else if(event->type() == QEvent::WindowActivate){
if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") {
if(QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") {
PlasmaShellManager::getInstance()->setAppWindowKeepAbove(true);
}
@ -563,13 +561,13 @@ bool FullBackgroundWidget::nativeEventFilter(const QByteArray &eventType, void *
return false;
}
} else if (responseType == XCB_KEY_PRESS) {
//xcb_key_press_event_t *xc = reinterpret_cast<xcb_key_press_event_t*>(event);
//qDebug()<<"---------------------XCB_KEY_PRESS:"<<xc->detail;
// xcb_key_press_event_t *xc = reinterpret_cast<xcb_key_press_event_t*>(event);
// qDebug()<<"---------------------XCB_KEY_PRESS:"<<xc->detail;
//onGlobalKeyPress(xc->detail);
} else if (responseType == XCB_KEY_RELEASE) {
//xcb_key_release_event_t *xc = reinterpret_cast<xcb_key_release_event_t*>(event);
//qDebug()<<"---------------------XCB_KEY_RELEASE:"<<xc->detail;
//onGlobalKeyRelease(xc->detail);
xcb_key_release_event_t *xc = reinterpret_cast<xcb_key_release_event_t*>(event);
qDebug()<<"---------------------XCB_KEY_RELEASE:"<<xc->detail;
onGlobalKeyRelease(xc->detail);
} else if(responseType == XCB_GE_GENERIC){
xcb_ge_generic_event_t *xc = reinterpret_cast<xcb_ge_generic_event_t*>(event);
if(xc->event_type == XCB_BUTTON_PRESS){ //此处获取的是窗口内的点击事件,光标坐标不需要使用就直接使用QCursor接口获取了
@ -647,17 +645,6 @@ void FullBackgroundWidget::init()
XGetWindowAttributes(QX11Info::display(), QX11Info::appRootWindow(), &rootAttr);
XSelectInput( QX11Info::display(), QX11Info::appRootWindow(),
SubstructureNotifyMask|rootAttr.your_event_mask );
// connect(xEventMonitor, SIGNAL(keyPress(const QString &)),
// this, SLOT(onGlobalKeyPress(const QString &)));
// connect(xEventMonitor, SIGNAL(keyRelease(const QString &)),
// this, SLOT(onGlobalKeyRelease(const QString &)));
// connect(xEventMonitor, SIGNAL(buttonDrag(int, int)),
// this, SLOT(onGlobalButtonDrag(int, int)));
// connect(xEventMonitor, SIGNAL(buttonPress(int, int)),
// this, SLOT(onGlobalButtonPressed(int, int)));
// xEventMonitor->start();
}
@ -667,7 +654,7 @@ void FullBackgroundWidget::init()
reader.setFileName(configuration->getBackground());
reader.setAutoTransform(true);
reader.setDecideFormatFromContent(true);
reader.setScaledSize(QApplication::primaryScreen()->size());
//reader.setScaledSize(QApplication::primaryScreen()->size());
background = QPixmap::fromImageReader(&reader);
if(!background.isNull()){
@ -715,11 +702,13 @@ void FullBackgroundWidget::onCursorMoved(const QPoint &pos)
{
return;
}
bool chkInOneScreen = false;
for(auto screen : QGuiApplication::screens())
{
#ifdef USE_INTEL
if(screen == qApp->primaryScreen()){
lockWidget->setGeometry(screen->geometry());
chkInOneScreen = true;
break;
}
#else
@ -732,10 +721,24 @@ void FullBackgroundWidget::onCursorMoved(const QPoint &pos)
lockWidget->hide();
lockWidget->setGeometry(screen->geometry());
lockWidget->show();
chkInOneScreen = true;
break;
}
#endif
}
if (!chkInOneScreen) {
for(auto screen : QGuiApplication::screens()) {
if(screen == qApp->primaryScreen()){
/*避免切换时闪烁*/
qInfo()<<"LockWidget:"<<screen->geometry()<<lockWidget->geometry();
lockWidget->hide();
lockWidget->setGeometry(screen->geometry());
lockWidget->show();
chkInOneScreen = true;
break;
}
}
}
}
void FullBackgroundWidget::lock()
@ -830,11 +833,11 @@ void FullBackgroundWidget::showScreensaver(bool isPreview/* = false*/)
{
ScreenSaver *saver = configuration->getScreensaver();
/*锁屏设置的Qt::WA_TranslucentBackground属性会导致第三方屏保变得透明因此在使用第三方屏保时
* */
if(saver->path != "/usr/lib/ukui-screensaver/ukui-screensaver-default")
{
setAttribute(Qt::WA_TranslucentBackground,false);
}
* */
if(saver->path != "/usr/lib/ukui-screensaver/ukui-screensaver-default")
{
setAttribute(Qt::WA_TranslucentBackground,false);
}
ScreenSaverWidget *saverWidget = new ScreenSaverWidget(saver, this);
qDebug() << " new ScreenSaverWidget";
@ -1080,8 +1083,12 @@ void FullBackgroundWidget::onGlobalKeyRelease(int key)
// 键盘上的num_lock生效、不需要登录界面进行管理
}
#else
if(key == Qt::Key_Escape && screenStatus == SCREEN_LOCK) // "escape"
{
if (key == 65) { // "Space"
if (lockWidget && lockWidget->isVisible()) {/*keyReleaseEvent有时候监听不到Space的按键事件 原因未知
Space按键放到nativeEventFilter里面*/
lockWidget->key_enter_release(Qt::Key_Space);
}
} else if (key == Qt::Key_Escape && screenStatus == SCREEN_LOCK) { // "escape"
bool canShow = true;
if (lockWidget && !lockWidget->exitSubWidget())
canShow = false;
@ -1091,9 +1098,7 @@ void FullBackgroundWidget::onGlobalKeyRelease(int key)
canShow = false;
if (canShow)
showScreensaver();
}
else if(screenStatus & SCREEN_SAVER && !isBlank)
{
} else if (screenStatus & SCREEN_SAVER && !isBlank) {
clearScreensavers();
}
#endif

View File

@ -68,6 +68,8 @@ IconEdit::IconEdit(QWidget *parent)
m_capsIcon->load(QString(":/image/assets/capslock.svg"));
m_iconButton = new QPushButton(this);
m_iconButton->setFixedSize(24, 24);
m_iconButton->setIconSize(QSize(24, 24));
m_iconButton->setObjectName(QStringLiteral("loginButton"));
m_iconButton->setCursor(QCursor(Qt::PointingHandCursor));
m_iconButton->installEventFilter(this);
@ -186,17 +188,15 @@ void IconEdit::setFocusin(int target)
switch (target) {
case 0:
m_edit->setFocus();
m_iconButton->setStyleSheet("min-width: 24px; max-width: 24px; min-height: 24px; max-height: 24px;"
"icon-size: 22px; background:#3D6BE5; border-radius:12px;");
m_iconButton->setStyleSheet("border-radius:12px; border:2px solid #3D6BE5;");
break;
case 1:
m_edit->clearFocus();
m_iconButton->setStyleSheet("min-width: 24px; max-width: 24px; min-height: 24px; max-height: 24px;"
"icon-size: 22px; background:#000000; border-radius:12px;");
m_iconButton->setFocus();
m_iconButton->setStyleSheet("border-radius:12px; border:2px solid #000000;");
break;
default:
m_iconButton->setStyleSheet("min-width: 24px; max-width: 24px; min-height: 24px; max-height: 24px;"
"icon-size: 22px; background:#3D6BE5; border-radius:12px;");
m_iconButton->setStyleSheet("border-radius:12px; border:2px solid #3D6BE5;");
m_edit->clearFocus();
break;
}

View File

@ -109,7 +109,10 @@ bool Interface::GetSlpState()
bool Interface::GetLockState()
{
return ((process.state() != QProcess::NotRunning) && lockState);
if(process.state() != QProcess::NotRunning)
return lockState;
else
return checkScreenDialogRunning();
}
bool Interface::GetBlankState()
@ -125,11 +128,13 @@ void Interface::SetLockState()
void Interface::emitLockState(bool val)
{
qDebug()<<"emitLockState state = "<<val;
QDBusInterface interface("org.kde.KWin",
if (QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") {
QDBusInterface interface("org.kde.KWin",
"/kglobalaccel",
"org.kde.KGlobalAccel",
QDBusConnection::sessionBus());
interface.call("blockGlobalShortcuts",val);
interface.call("blockGlobalShortcuts",val);
}
QDBusMessage message;
if(val){
message = QDBusMessage::createSignal(SS_DBUS_PATH,
@ -268,11 +273,14 @@ bool Interface::checkScreenDialogRunning()
lock.l_whence = SEEK_SET;
if(fcntl(fd, F_GETLK, &lock) < 0) {
close(fd);
return false;
} else {
if (lock.l_type == F_UNLCK) {
close(fd);
return false;
} else {
close(fd);
return true;
}
}

View File

@ -0,0 +1,65 @@
/*
* Copyright 2022 KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with thi1s program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "libinputswitchevent.h"
typedef std::function<void(Event*)> sendEvent;
LibinputSwitchEvent::LibinputSwitchEvent(QObject *parent) : QObject(parent)
{
sendEvent se = std::bind(&LibinputSwitchEvent::dealEvent, this, std::placeholders::_1);
m_inputGatherClient = new UKUIInputGatherClient;
m_inputGatherClient->setEventCallBack(se);
m_inputGatherClient->startToReceiveEvent();
}
LibinputSwitchEvent::~LibinputSwitchEvent()
{
delete m_inputGatherClient;
}
bool LibinputSwitchEvent::geInitDevicesStatus()
{
//0 非平板
//1 平板
//-1 不支持
int status = m_inputGatherClient->libinputTabletSwitchState();
qInfo() << __FILE__ << __LINE__<< "当前设备的状态:" << status;
if(status == 1)
return true;
else
return false;
}
void LibinputSwitchEvent::dealEvent(Event* e)
{
switch (e->type) {
case LIBINPUT_EVENT_SWITCH_TOGGLE:
qInfo() << __FILE__ << __LINE__ << "=LIBINPUT_EVENT_SWITCH_TOGGLE=";
if(e->event.switchEventDate.switchType == LIBINPUT_SWITCH_TABLET_MODE) {
qInfo() << __FILE__ << __LINE__ << "switch type" << e->event.switchEventDate.switchType;
qInfo() << __FILE__ << __LINE__ << "switch status" << e->event.switchEventDate.switchState;
if(e->event.switchEventDate.switchState == 1) {
Q_EMIT tabletModeStatusChanged(1);
}else {
Q_EMIT tabletModeStatusChanged(0);
}
}
break;
default:
break;
}
}

40
src/libinputswitchevent.h Normal file
View File

@ -0,0 +1,40 @@
/*
* Copyright 2022 KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef LIBINPUTSWITCHEVENT_H
#define LIBINPUTSWITCHEVENT_H
#include <QObject>
#include <QDebug>
#include <ukui/event.h>
#include <ukui/ukuiinputgatherclient.h>
//头文件以及顺序不可改,不可删
class LibinputSwitchEvent : public QObject
{
Q_OBJECT
public:
explicit LibinputSwitchEvent(QObject *parent = nullptr);
~LibinputSwitchEvent();
UKUIInputGatherClient * m_inputGatherClient = nullptr;
bool geInitDevicesStatus();
signals:
void tabletModeStatusChanged(int tabletmode);
private:
void dealEvent(Event* e);
};
#endif // LIBINPUTSWITCHEVENT_H

View File

@ -24,6 +24,7 @@
#include <QDateTime>
#include <QTimer>
#include <QDebug>
#include <QPluginLoader>
#include <QPainterPath>
#include <QtConcurrent/QtConcurrentRun>
#include <QScrollArea>
@ -33,6 +34,7 @@
#include <imageutil.h>
#include <QtX11Extras/QX11Info>
#include <X11/Xlib.h>
#include <kylin-nm/kynetworkicon.h>
#include <X11/XKBlib.h>
#include <QGSettings>
#include "authdialog.h"
@ -43,6 +45,7 @@
#include "commonfunc.h"
#include "hoverwidget.h"
#include "kylinnm.h"
#include "mytabwidget.h"
#include <QtX11Extras/QX11Info>
#include <X11/Xlib.h>
@ -82,6 +85,8 @@ LockWidget::LockWidget(QWidget *parent)
this,&LockWidget::onClickPassword);
connect(authDialog,&AuthDialog::loginOptionClicked,
this,&LockWidget::resetNavigation);
connect(authDialog,&AuthDialog::showMessageBtn,
this,&LockWidget::onShowMessageBtn);
// connect(this, &LockWidget::capsLockChanged,
// authDialog, &AuthDialog::onCapsLockChanged);
@ -96,12 +101,15 @@ LockWidget::LockWidget(QWidget *parent)
is_switchBtn = false;
ui->btnSwitchUser->hide();
}
if(is_batteryBtn)
horAT = BATTERYBTN;
else if(!is_batteryBtn && is_switchBtn)
horAT = SWITCHBTN;
else
horAT = NETWORKBTN;
if(horAT != KEYBOARDBTN) {
if(is_batteryBtn)
horAT = BATTERYBTN;
else if(!is_batteryBtn && is_switchBtn)
horAT = SWITCHBTN;
else
horAT = NETWORKBTN;
}
}
LockWidget::~LockWidget()
@ -120,11 +128,25 @@ void LockWidget::closeEvent(QCloseEvent *event)
bool LockWidget::eventFilter(QObject *obj, QEvent *event)
{
if(event->type() == 2){
if(obj == m_kylinNM)
if(obj == mkylinNM)
return true;
if(obj == ui->btnPowerManager || obj == ui->btnSwitchUser || obj == ui->btnNetworkManager || obj == ui->btnBatteryStatus)
if(vKeyboard && obj == vKeyboard)
return true;
if(obj == ui->btnPowerManager || obj == ui->btnSwitchUser || obj == btnNetworkManager || obj == ui->btnBatteryStatus || obj == ui->btnKeyboard) {
authDialog->setFocusin(REMOVE);
return false;
}
if(tabAt != LINEEDIT) {
authDialog->setFocusin(REMOVE);
if(tabAt == BOTTMBTN) {
tabAt = LINEEDIT;
setBottomBtnSheet();
tabAt = BOTTMBTN;
}
}
if(mBatteryWidget && mBatteryWidget->isVisible()) {
setCheckedSheet(BATTERYBTN, false);
@ -149,21 +171,20 @@ bool LockWidget::eventFilter(QObject *obj, QEvent *event)
if(powermanager && powermanager->isVisible()){
authDialog->show();
powermanager->hide();
tabAt = LINEEDIT;
if(!authDialog->getLineeditStatus()) {
tabAt = LINEEDIT;
authDialog->setFocusin(IN_LINEEDIT);
if(isTableMode && !(vKeyboard && vKeyboard->isVisible())) {
showVirtualKeyboard();
}
} else {
tabAt = MESSAGEBTN;
authDialog->setFocusin(ON_MESSAGEBTN);
}
setBottomBtnSheet();
authDialog->setFocusin(IN_LINEEDIT);
powermanager->clearStatus();
at_power = false;
}
if(tabAt != LINEEDIT) {
authDialog->setFocusin(REMOVE);
if(tabAt == BOTTMBTN) {
tabAt = LINEEDIT;
setBottomBtnSheet();
tabAt = BOTTMBTN;
}
}
}
if (obj == scrollContents ){
@ -172,24 +193,25 @@ bool LockWidget::eventFilter(QObject *obj, QEvent *event)
//qDebug()<<"````````````````````````````````````````````"<<event->type();
}
}
if(event->type() == QEvent::WindowActivate || event->type() == 8){ // QEvent::FocusIn
/*
if(event->type() == QEvent::WindowActivate){
if(!isNetFinished){
isNetFinished = true;
QTimer::singleShot(2000, this, [=](){
m_kylinNM = new KylinNM(this);
m_kylinNM->installEventFilter(this);
connect(m_kylinNM, &KylinNM::onConnectChanged, this,[=](){
updateNetIcon(m_kylinNM->getConnectStatus());
});
m_kylinNM->hide();
QtConcurrent::run([=](){
updateNetIcon(getNetStatus());
});
});
QTimer::singleShot(1000, this, [=](){
loadNetPlugin();
// m_kylinNM = new KylinNM(this);
// m_kylinNM->installEventFilter(this);
// connect(m_kylinNM, &KylinNM::onConnectChanged, this,[=](){
// updateNetIcon(m_kylinNM->getConnectStatus());
// });
// m_kylinNM->hide();
// QtConcurrent::run([=](){
// updateNetIcon(getNetStatus());
// });
});
}
}
*/
return false;
}
@ -237,7 +259,7 @@ void LockWidget::key_enter_release(int key)
case NETWORKBTN:
if(!m_kylinNM || !(m_kylinNM && m_kylinNM->isVisible()))
showNetManager(true);
ui->btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
authDialog->setFocusin(REMOVE);
break;
case KEYBOARDBTN:
@ -273,29 +295,40 @@ void LockWidget::key_tab_release(int key)
authDialog->setFocusin(IN_LIGIN);
tabAt = ENTERBTN;
break;
case ENTERBTN:
if(authDialog->getBioNum() >1) {
authDialog->setFocusin(BIO_RIGHT);
tabAt = BIOBTN;
} else {
tabAt = BOTTMBTN;
authDialog->setFocusin(REMOVE);
qDebug() << " is_batteryBtn = " << is_batteryBtn;
if(is_batteryBtn){
horAT = BATTERYBTN;
} else if(users->getUsers().count() > 1){
horAT = SWITCHBTN;
} else {
horAT =NETWORKBTN;
}
setBottomBtnSheet();
qDebug() << " horat = " << horAT;
}
break;
case BIOBTN:
case MESSAGEBTN :
tabAt = BOTTMBTN;
authDialog->setFocusin(REMOVE);
if(is_batteryBtn) {
horAT = BATTERYBTN;
setBottomBtnSheet();
} else if(users->getUsers().count() > 1){
horAT = SWITCHBTN;
setBottomBtnSheet();
} else {
horAT =NETWORKBTN;
setBottomBtnSheet();
}
break;
case ENTERBTN:
if(authDialog->getBioNum() >1) {
authDialog->setFocusin(BIO_RIGHT);
tabAt = BIOBTN;
} else {
tabAt = BOTTMBTN;
authDialog->setFocusin(REMOVE);
if(is_batteryBtn){
horAT = BATTERYBTN;
} else if(users->getUsers().count() > 1){
horAT = SWITCHBTN;
} else {
horAT =NETWORKBTN;
}
setBottomBtnSheet();
}
break;
case BIOBTN:
tabAt = BOTTMBTN;
authDialog->setFocusin(REMOVE);
qDebug() << " is_batteryBtn = " << is_batteryBtn;
if(is_batteryBtn) {
horAT = BATTERYBTN;
setBottomBtnSheet();
@ -306,12 +339,16 @@ void LockWidget::key_tab_release(int key)
horAT =NETWORKBTN;
setBottomBtnSheet();
}
qDebug() << " horat = " << horAT;
break;
case BOTTMBTN:
if(!at_power) {
authDialog->setFocusin(IN_LINEEDIT);
tabAt = LINEEDIT;
if(!authDialog->getLineeditStatus()) {
authDialog->setFocusin(IN_LINEEDIT);
tabAt = LINEEDIT;
} else {
authDialog->setFocusin(ON_MESSAGEBTN);
tabAt = MESSAGEBTN;
}
setBottomBtnSheet();
} else if (at_power) {
powermanager->keyBdRelease(Qt::Key_Right);
@ -360,6 +397,20 @@ void LockWidget::key_shiftTab_release()
}
setBottomBtnSheet();
break;
case MESSAGEBTN :
tabAt = BOTTMBTN;
authDialog->setFocusin(REMOVE);
if(is_batteryBtn) {
horAT = BATTERYBTN;
setBottomBtnSheet();
} else if(users->getUsers().count() > 1){
horAT = SWITCHBTN;
setBottomBtnSheet();
} else {
horAT =NETWORKBTN;
setBottomBtnSheet();
}
break;
case ENTERBTN:
authDialog->setFocusin(IN_LINEEDIT);
tabAt = LINEEDIT;
@ -371,13 +422,19 @@ void LockWidget::key_shiftTab_release()
break;
case BOTTMBTN:
if(!at_power) {
if(authDialog->getBioNum() >1) {
authDialog->setFocusin(BIO_RIGHT);
tabAt = BIOBTN;
if(!authDialog->getLineeditStatus()) {
if(authDialog->getBioNum() >1) {
authDialog->setFocusin(BIO_RIGHT);
tabAt = BIOBTN;
} else {
authDialog->setFocusin(IN_LIGIN);
tabAt = ENTERBTN;
}
} else {
authDialog->setFocusin(IN_LIGIN);
tabAt = ENTERBTN;
authDialog->setFocusin(ON_MESSAGEBTN);
tabAt = MESSAGEBTN;
}
setBottomBtnSheet();
} else {
powermanager->keyBdRelease(Qt::Key_Right);
tabAt = POWERMANAGER;
@ -422,7 +479,11 @@ void LockWidget::key_LR_release(int key)
horAT = NETWORKBTN;
break;
case NETWORKBTN:
horAT = POWERBTN;//KEYBOARDBTN;
if (ui->btnKeyboard->isHidden()) {
horAT = POWERBTN;
} else {
horAT = KEYBOARDBTN;
}
break;
case KEYBOARDBTN:
horAT = POWERBTN;
@ -470,7 +531,11 @@ void LockWidget::key_LR_release(int key)
horAT = NETWORKBTN;
break;
case POWERBTN:
horAT = NETWORKBTN;//KEYBOARDBTN;
if (ui->btnKeyboard->isHidden()) {
horAT = NETWORKBTN;
} else {
horAT = KEYBOARDBTN;
}
break;
default:
break;
@ -491,19 +556,19 @@ void LockWidget::setBottomBtnSheet()
case BATTERYBTN:
ui->btnBatteryStatus->setStyleSheet(ON_TAB_SHEET);
ui->btnSwitchUser->setStyleSheet(ON_NORMAL_SHEET);
ui->btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
ui->btnKeyboard->setStyleSheet(ON_NORMAL_SHEET);
ui->btnPowerManager->setStyleSheet(ON_NORMAL_SHEET);
break;
case SWITCHBTN:
ui->btnSwitchUser->setStyleSheet(ON_TAB_SHEET);
ui->btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
ui->btnKeyboard->setStyleSheet(ON_NORMAL_SHEET);
ui->btnPowerManager->setStyleSheet(ON_NORMAL_SHEET);
ui->btnBatteryStatus->setStyleSheet(ON_NORMAL_SHEET);
break;
case NETWORKBTN:
ui->btnNetworkManager->setStyleSheet(ON_TAB_SHEET);
btnNetworkManager->setStyleSheet(ON_TAB_SHEET);
ui->btnKeyboard->setStyleSheet(ON_NORMAL_SHEET);
ui->btnPowerManager->setStyleSheet(ON_NORMAL_SHEET);
ui->btnSwitchUser->setStyleSheet(ON_NORMAL_SHEET);
@ -513,19 +578,19 @@ void LockWidget::setBottomBtnSheet()
ui->btnKeyboard->setStyleSheet(ON_TAB_SHEET);
ui->btnPowerManager->setStyleSheet(ON_NORMAL_SHEET);
ui->btnSwitchUser->setStyleSheet(ON_NORMAL_SHEET);
ui->btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
ui->btnBatteryStatus->setStyleSheet(ON_NORMAL_SHEET);
break;
case POWERBTN:
ui->btnPowerManager->setStyleSheet(ON_TAB_SHEET);
ui->btnSwitchUser->setStyleSheet(ON_NORMAL_SHEET);
ui->btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
ui->btnKeyboard->setStyleSheet(ON_NORMAL_SHEET);
ui->btnBatteryStatus->setStyleSheet(ON_NORMAL_SHEET);
break;
default:
ui->btnSwitchUser->setStyleSheet(ON_NORMAL_SHEET);
ui->btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
ui->btnKeyboard->setStyleSheet(ON_NORMAL_SHEET);
ui->btnPowerManager->setStyleSheet(ON_NORMAL_SHEET);
ui->btnBatteryStatus->setStyleSheet(ON_NORMAL_SHEET);
@ -533,7 +598,7 @@ void LockWidget::setBottomBtnSheet()
}
} else {
ui->btnSwitchUser->setStyleSheet(ON_NORMAL_SHEET);
ui->btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
btnNetworkManager->setStyleSheet(ON_NORMAL_SHEET);
ui->btnKeyboard->setStyleSheet(ON_NORMAL_SHEET);
ui->btnPowerManager->setStyleSheet(ON_NORMAL_SHEET);
ui->btnBatteryStatus->setStyleSheet(ON_NORMAL_SHEET);
@ -696,6 +761,7 @@ void LockWidget::initUI()
ui->btnBatteryStatus->setFocusPolicy(Qt::NoFocus);
ui->btnBatteryStatus->installEventFilter(this);
ui->btnBatteryStatus->setCheckable(true);
ui->btnBatteryStatus->raise();
mBatteryWidget = new BatteryWidget(QPoint(ui->btnBatteryStatus->x(), ui->btnBatteryStatus->y()), this);
mBatteryWidget->hide();
connect(ui->btnBatteryStatus,&QPushButton::clicked
@ -714,7 +780,7 @@ void LockWidget::initUI()
}
//电源管理
ui->btnPowerManager->setIcon(QIcon(":/image/assets/powerManager.png"));
ui->btnPowerManager->setIcon(QIcon(":/image/assets/shutdown.svg"));
ui->btnPowerManager->setFixedSize(48,48);
ui->btnPowerManager->setIconSize(QSize(24,24));
ui->btnPowerManager->setFocusPolicy(Qt::NoFocus);
@ -724,19 +790,29 @@ void LockWidget::initUI()
,this,&LockWidget::showPowerManager);
QtConcurrent::run([=](){
updateNetIcon(getNetStatus());
});
// QtConcurrent::run([=](){
// updateNetIcon(getNetStatus());
// });
ui->btnNetworkManager->setFixedSize(48,48);
ui->btnNetworkManager->setIconSize(QSize(24,24));
ui->btnNetworkManager->setFocusPolicy(Qt::NoFocus);
btnNetworkManager = new KyNetworkIcon(this);
btnNetworkManager->setStyleSheet("QPushButton{text-align:center;color: rgb(255, 255, 255, 255);border: none;border-radius: 4px;outline: none;} \
QPushButton::hover{background-color: rgb(255,255,255,15%);} \
QPushButton::pressed {background-color: rgba(255,255,255,40%);}\
QPushButton::checked {background-color: rgba(255, 255, 255, 40%);}");
btnNetworkManager->setCheckable(true);
btnNetworkManager->setFixedSize(48,48);
btnNetworkManager->setIconSize(QSize(24,24));
btnNetworkManager->setFocusPolicy(Qt::NoFocus);
// ui->btnNetworkManager->setStyleSheet("QPushButton:Hover{border-radius:24px;background-color:rgba(255, 255, 255, 0.15);}"
// "QPushButton:Pressed{border-radius:24px;background-color:rgba(255, 255, 255, 0.05);}");
ui->btnNetworkManager->installEventFilter(this);
btnNetworkManager->installEventFilter(this);
btnNetworkManager->setCursor(Qt::PointingHandCursor);
connect(ui->btnNetworkManager,&QPushButton::clicked
,this,&LockWidget::showNetManager);
connect(btnNetworkManager,&QPushButton::clicked
,this, [&,this](){
this->showNetManager();
this->setCursor(Qt::ArrowCursor);
});
if(QX11Info::isPlatformX11()){
//虚拟键盘
@ -745,7 +821,6 @@ void LockWidget::initUI()
ui->btnKeyboard->setIconSize(QSize(24, 24));
ui->btnKeyboard->setFocusPolicy(Qt::NoFocus);
ui->btnKeyboard->installEventFilter(this);
ui->btnKeyboard->hide();
/* connect(ui->btnKeyboard, &QPushButton::clicked,
this, [&]{
@ -757,13 +832,15 @@ void LockWidget::initUI()
connect(ui->btnKeyboard, &QPushButton::clicked,
this, &LockWidget::showVirtualKeyboard);
} else {
ui->btnKeyboard->hide();
}
//用户切换
if(displayManager->canSwitch())
{
//initUserMenu();
ui->btnSwitchUser->setIcon(QIcon(":/image/assets/switchUser.png"));
ui->btnSwitchUser->setIcon(QIcon(":/image/assets/switchuser.svg"));
ui->btnSwitchUser->setIconSize(QSize(24, 24));
ui->btnSwitchUser->setFixedSize(48, 48);
ui->btnSwitchUser->setFocusPolicy(Qt::NoFocus);
@ -773,17 +850,41 @@ void LockWidget::initUI()
connect(ui->btnSwitchUser, &QPushButton::clicked,
this, &LockWidget::showUserMenu);
}
//监听物理键盘插拔
libswitch = new LibinputSwitchEvent;
isTableMode = libswitch->geInitDevicesStatus();
if(isTableMode && !(vKeyboard && vKeyboard->isVisible())) {
showVirtualKeyboard();
}
connect(libswitch , &LibinputSwitchEvent::tabletModeStatusChanged, this, [ = ](int tablet_mode) {
isTableMode = tablet_mode;
if(isTableMode && tabAt == LINEEDIT && !(vKeyboard && vKeyboard->isVisible())) {
showVirtualKeyboard();
QTimer::singleShot(500, this, [&, this](){
authDialog->setFocusin(IN_LINEEDIT);
});
}
});
}
void LockWidget::netInPutStatus()
{
if(isTableMode && !(vKeyboard && vKeyboard->isVisible()))
showVirtualKeyboard();
}
void LockWidget::showVirtualKeyboard()
{
if (!QX11Info::isPlatformX11()) {
return ;
}
tabAt = LINEEDIT;
setBottomBtnSheet();
tabAt = BOTTMBTN;
horAT = KEYBOARDBTN;
if(!vKeyboard){
vKeyboard = new VirtualKeyboard(this);
vKeyboard->installEventFilter(this);
vKeyboard->hide();
connect(vKeyboard, &VirtualKeyboard::aboutToClose,
@ -794,8 +895,18 @@ void LockWidget::showVirtualKeyboard()
if(!vKeyboard->isHidden()){
vKeyboard->raise();
authDialog->setFocusin(IN_LINEEDIT);
//authDialog->setFocusin(IN_LINEEDIT);
at_plugins = true;
if(m_kylinNM && m_kylinNM->isVisible()) {
m_kylinNM->move(this->width() - m_kylinNM->width() - 20,
this->height() - m_kylinNM->height() - vKeyboard->height());
m_kylinNM->raise();
} else
authDialog->setFocusin(IN_LINEEDIT);
if(scrollArea && scrollArea->isVisible())
setCheckedSheet(SWITCHBTN, false);
if(mBatteryWidget && mBatteryWidget->isVisible())
setCheckedSheet(BATTERYBTN, false);
}
setVirkeyboardPos();
}
@ -814,10 +925,10 @@ void LockWidget::showUserMenu()
setCheckedSheet(SWITCHBTN,false);
at_plugins = false;
authDialog->setFocusin(REMOVE);
}
else{
} else {
setCheckedSheet(SWITCHBTN, true);
at_plugins = true;
authDialog->setFocusin(REMOVE);
if(m_kylinNM && m_kylinNM->isVisible())
setCheckedSheet(NETWORKBTN, false);
if(mBatteryWidget && mBatteryWidget->isVisible())
@ -865,16 +976,23 @@ void LockWidget::showPowerManager(bool keynavigation)
if(powermanager->isVisible()){
authDialog->show();
powermanager->hide();
tabAt = LINEEDIT;
if(!authDialog->getLineeditStatus()) {
tabAt = LINEEDIT;
authDialog->setFocusin(IN_LINEEDIT);
if(isTableMode && !(vKeyboard && vKeyboard->isVisible())) {
showVirtualKeyboard();
}
} else {
tabAt = MESSAGEBTN;
authDialog->setFocusin(ON_MESSAGEBTN);
}
setBottomBtnSheet();
authDialog->setFocusin(IN_LINEEDIT);
powermanager->clearStatus();
at_power = false;
}
else{
authDialog->hide();
powermanager->show();
powermanager->setFocus();
if(keynavigation){
powermanager->keyBdRelease(Qt::Key_Right);
tabAt = POWERMANAGER;
@ -919,10 +1037,10 @@ void LockWidget::setCheckedSheet(int type, bool show)
case NETWORKBTN:
if(show) {
m_kylinNM->show();
ui->btnNetworkManager->setChecked(true);
btnNetworkManager->setChecked(true);
} else {
m_kylinNM->hide();
ui->btnNetworkManager->setChecked(false);
btnNetworkManager->setChecked(false);
}
break;
default:
@ -944,7 +1062,7 @@ void LockWidget::showWarning(QVector<InhibitInfo::InhibitorInfo> &wlist, int typ
sureWidget->setFocus();
ui->widgetTime->hide();
ui->btnPowerManager->hide();
ui->btnNetworkManager->hide();
btnNetworkManager->hide();
ui->btnSwitchUser->hide();
ui->btnKeyboard->hide();
ui->btnBatteryStatus->hide();
@ -966,7 +1084,7 @@ void LockWidget::switchToSureDialog(int type)
sureWidget->setFocus();
ui->widgetTime->hide();
ui->btnPowerManager->hide();
ui->btnNetworkManager->hide();
btnNetworkManager->hide();
ui->btnSwitchUser->hide();
ui->btnKeyboard->hide();
ui->btnBatteryStatus->hide();
@ -980,7 +1098,7 @@ void LockWidget::hideSureDialog()
powermanager->show();
ui->widgetTime->show();
ui->btnPowerManager->show();
ui->btnNetworkManager->show();
btnNetworkManager->show();
ui->btnSwitchUser->show();
ui->btnKeyboard->show();
ui->btnBatteryStatus->show();
@ -999,7 +1117,7 @@ void LockWidget::confirmClicked()
authDialog->show();
ui->widgetTime->show();
ui->btnPowerManager->show();
ui->btnNetworkManager->show();
btnNetworkManager->show();
ui->btnSwitchUser->show();
ui->btnKeyboard->show();
ui->btnBatteryStatus->show();
@ -1015,20 +1133,24 @@ void LockWidget::showNetManager(bool keynavigation)
horAT = NETWORKBTN;
}
if(!m_kylinNM){
return;
/*这里放在点击按钮后加载,一个原因是启动优化,另一个原因是如果放在构造函数中加载,则必须
* 退closeEvent中崩溃
* */
loadNetPlugin();
m_kylinNM->hide();
}
if(m_kylinNM->isVisible())
{
setCheckedSheet(NETWORKBTN, false);
} else {
m_kylinNM->show();
setCheckedSheet(NETWORKBTN, true);
if(scrollArea && scrollArea->isVisible())
setCheckedSheet(SWITCHBTN, false);
if(mBatteryWidget && mBatteryWidget->isVisible())
setCheckedSheet(BATTERYBTN, false);
m_kylinNM->setGeometry(this->width() - m_kylinNM->width() - 20,
this->height() - m_kylinNM->height() - 100,
this->height() - m_kylinNM->height() - 72 - 8,
m_kylinNM->width(),
m_kylinNM->height());
m_kylinNM->raise();
@ -1037,14 +1159,16 @@ void LockWidget::showNetManager(bool keynavigation)
* m_kylinNM->raise()authDialog->lower()*/
if(authDialog && authDialog->isVisible()){
authDialog->lower();
authDialog->clearFocus();
}
authDialog->clearFocus();
if(mBatteryWidget && mBatteryWidget->isVisible()) {
mBatteryWidget->lower();
mBatteryWidget->clearFocus();
}
at_plugins = true;
m_kylinNM->updateWifiList();
//m_kylinNM->updateWifiList();
}
}
@ -1068,9 +1192,21 @@ void LockWidget::onClickPassword()
at_plugins = false;
}
if(vKeyboard && vKeyboard->isVisible()) {
vKeyboard->hide();
at_plugins = false;
if(isTableMode) {
if(!(vKeyboard && vKeyboard->isVisible()))
showVirtualKeyboard();
}
// if(vKeyboard && vKeyboard->isVisible()) {
// vKeyboard->hide();
// at_plugins = false;
// }
}
void LockWidget::onShowMessageBtn(bool is_show)
{
if(is_show) {
tabAt = MESSAGEBTN;
authDialog->setFocusin(ON_MESSAGEBTN);
}
}
@ -1097,9 +1233,6 @@ void LockWidget::showBattery()
void LockWidget::hideBottomPlugins()
{
if(m_kylinNM && m_kylinNM->isVisible())
setCheckedSheet(NETWORKBTN, false);
if(scrollArea && scrollArea->isVisible())
setCheckedSheet(SWITCHBTN, false);
@ -1107,8 +1240,19 @@ void LockWidget::hideBottomPlugins()
vKeyboard->hide();
at_plugins = false;
}
if(m_kylinNM && m_kylinNM->isVisible()) {
m_kylinNM->move(this->width() - m_kylinNM->width() - 20,
this->height() - m_kylinNM->height() - 72 - 8);
tabAt = BOTTMBTN;
horAT = NETWORKBTN;
setCheckedSheet(NETWORKBTN, true);
at_plugins = true;
authDialog->setFocusin(REMOVE);
return ;
}
//tabAt = EMPTY;
tabAt = LINEEDIT;
if(!authDialog->getLineeditStatus())
tabAt = LINEEDIT;
setBottomBtnSheet();
}
@ -1169,22 +1313,111 @@ void LockWidget::updateNetIcon(int status)
switch(status) {
case 0:
//有线
ui->btnNetworkManager->setIcon(QIcon(":/image/assets/intel/icon-wired.png"));
btnNetworkManager->setIcon(QIcon(":/image/assets/intel/icon-wired.png"));
break;
case 1:
//无线
ui->btnNetworkManager->setIcon(QIcon(":/image/assets/intel/icon-wifi.png"));
btnNetworkManager->setIcon(QIcon(":/image/assets/intel/icon-wifi.png"));
break;
case 2:
//有线+无线
ui->btnNetworkManager->setIcon(QIcon(":/image/assets/intel/icon-wired.png"));
btnNetworkManager->setIcon(QIcon(":/image/assets/intel/icon-wired.png"));
break;
default:
//无连接
ui->btnNetworkManager->setIcon(QIcon(":/image/assets/intel/icon-no-signal.png"));
btnNetworkManager->setIcon(QIcon(":/image/assets/intel/icon-no-signal.png"));
}
}
void LockWidget::loadNetPlugin()
{
m_kylinNM = new QWidget(this);
m_kylinNM->setFixedSize(420,480);
m_kylinNM->setObjectName("m_kylinNM");
m_kylinNM->setStyleSheet("#m_kylinNM{background-color: white; border-radius:12px;}");
mkylinNM = new MyTabWidget(m_kylinNM);
mkylinNM->setFixedSize(420,480);
mkylinNM->tabBar()->setFixedHeight(40);
mkylinNM->installEventFilter(this);
QPluginLoader netloader("/usr/lib/kylin-nm/libnetconnect.so");//有线
QPluginLoader wlanloader("/usr/lib/kylin-nm/libwlanconnect.so");//无线
if (netloader.load()) {
QObject * plugin = netloader.instance();
if (plugin) {
Interface * pluginInstance = qobject_cast<Interface *>(plugin);
// 插件是否启用
if (!pluginInstance) {
return;
}
pluginInstance->setPluginType(SIMPLE);
QWidget *widget = pluginInstance->pluginUi();
mkylinNM->addTab(widget,"");
} else {
qDebug() << "Load Failed: " << netloader.errorString() << "\n";
return;
}
} else {
qDebug() << "Load Failed: " << netloader.errorString() << "\n";
return;
}
if (wlanloader.load()) {
QObject * plugin = wlanloader.instance();
if (plugin) {
Interface * pluginInstance = qobject_cast<Interface *>(plugin);
// 插件是否启用
if (!pluginInstance) {
return;
}
pluginInstance->setPluginType(SIMPLE);
/*这里需要先调用setParentWidget否则会出现网络连接弹窗无法弹出来的问题*/
pluginInstance->setParentWidget(this);
QWidget *widget = pluginInstance->pluginUi();
mkylinNM->addTab(widget,"");
// 平板模式输入状态下自动调出虚拟键盘
connect(pluginInstance, SIGNAL(needShowVirtualKeyboard()), this, SLOT(netInPutStatus()));
} else {
qDebug() << "Load Failed: " << wlanloader.errorString() << "\n";
return;
}
} else {
qDebug() << "Load Failed: " << wlanloader.errorString() << "\n";
return;
}
QHBoxLayout *m_tabBarLayout = new QHBoxLayout(mkylinNM);
m_tabBarLayout->setContentsMargins(0,0,0,0);
QLabel *m_lanLabel = new QLabel(tr("LAN"));
m_lanLabel->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
QLabel *m_wlanLabel = new QLabel(tr("WLAN"));
m_wlanLabel->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
m_tabBarLayout->addWidget(m_lanLabel);
m_tabBarLayout->addWidget(m_wlanLabel);
mkylinNM->tabBar()->setLayout(m_tabBarLayout);
mkylinNM->tabBar()->setFixedWidth(420);
QPalette pal = qApp->palette();
pal.setBrush(QPalette::Background, Qt::white);
// m_kylinNM->setPalette(pal);
mkylinNM->widget(0)->setPalette(pal);
mkylinNM->widget(1)->setPalette(pal);
m_kylinNM->setGeometry(this->width() - mkylinNM->width() - 20,
this->height() - mkylinNM->height() - 72 - 8,
mkylinNM->width(),
mkylinNM->height());
}
void LockWidget::switchToGreeter()
{
if(authDialog)
@ -1323,7 +1556,7 @@ void LockWidget::initUserMenu()
scrollArea->setFixedSize(usersMenu->width() + 16, height()/2);
}
scrollArea->move(ui->btnSwitchUser->geometry().x()- scrollArea->width()/2 + 24, \
height() - 72 - scrollArea->height() - 5);
height() - 72 - scrollArea->height() - 8);
}
}
@ -1347,7 +1580,7 @@ void LockWidget::keyReleaseEvent(QKeyEvent *e)
key_OB_release(e->key());
} else if (e->key() == Qt::Key_Left || e->key() == Qt::Key_Right ) { // "Left" "Right"
key_LR_release(e->key());
} else if (e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter || e->key() == Qt::Key_Space) { // "Return" "KP_Enter" "Space"
} else if (e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter) { // "Return" "KP_Enter"
key_enter_release(e->key());
}
}
@ -1369,11 +1602,14 @@ void LockWidget::resizeEvent(QResizeEvent *event)
//认证窗口
//设置认证窗口左右居中
if(scale >= 1)
authDialog->setGeometry((width()-authDialog->geometry().width())/2,height()/(4-0.65*scale), \
if(scale >= 1.3)
authDialog->setGeometry((width()-authDialog->geometry().width())/2,height()/(4-0.7*scale), \
authDialog->width(), (height()*3/4));
else if(scale <= 0.9)
authDialog->setGeometry((width()-authDialog->geometry().width())/2,height()/(4-0.9*scale), \
authDialog->width(), (height()*3/4));
else
authDialog->setGeometry((width()-authDialog->geometry().width())/2,height()/(4+0.65*scale), \
authDialog->setGeometry((width()-authDialog->geometry().width())/2,height()/(4-0.65*scale), \
authDialog->width(), (height()*3/4));
if(scale > 1)
@ -1384,13 +1620,13 @@ void LockWidget::resizeEvent(QResizeEvent *event)
x = x + ui->btnPowerManager->width();
ui->btnPowerManager->move(width() - x,height() - y);
if(ui->btnKeyboard->isVisible()){
if(!ui->btnKeyboard->isHidden()){
x = x+ui->btnKeyboard->width()+16;
ui->btnKeyboard->move(width() - x, height() - y);
}
x = x + ui->btnNetworkManager->width()+16;
ui->btnNetworkManager->move(width() - x, height() - y);
x = x + btnNetworkManager->width()+16;
btnNetworkManager->move(width() - x, height() - y);
if(!ui->btnSwitchUser->isHidden()) {
x = x + ui->btnSwitchUser->width()+16;
@ -1417,12 +1653,12 @@ void LockWidget::resizeEvent(QResizeEvent *event)
scrollArea->setFixedSize(usersMenu->width() + 16, height()/2);
}
scrollArea->move(ui->btnSwitchUser->geometry().x()- scrollArea->width()/2 + 24, \
height() - y - scrollArea->height() - 5);
height() - y - scrollArea->height() - 8);
}
if(m_kylinNM){
m_kylinNM->setGeometry(this->width() - m_kylinNM->width() - 20,
this->height() - m_kylinNM->height() - 100,
this->height() - m_kylinNM->height() - y - 8,
m_kylinNM->width(),
m_kylinNM->height());
}
@ -1492,24 +1728,6 @@ void LockWidget::onUserAdded(const UserItem &user)
usersMenu->adjustSize();
}
QPixmap LockWidget::PixmapToRound(const QPixmap &src, int radius)
{
if (src.isNull()) {
return QPixmap();
}
QPixmap pixmapa(src);
QPixmap pixmap(radius*2,radius*2);
pixmap.fill(Qt::transparent);
QPainter painter(&pixmap);
painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
QPainterPath path;
path.addEllipse(0, 0, radius*2, radius*2);
painter.setClipPath(path);
painter.drawPixmap(0, 0, radius*2, radius*2, pixmapa);
return pixmap;
}
void LockWidget::onUserDeleted(const UserItem &user)
{
for(auto action : usersMenu->actions())
@ -1617,7 +1835,7 @@ bool LockWidget::exitSubWidget()
setCheckedSheet(NETWORKBTN, false);
at_plugins = false;
if(tabAt == BOTTMBTN && horAT == NETWORKBTN)
ui->btnNetworkManager->setStyleSheet(ON_TAB_SHEET);
btnNetworkManager->setStyleSheet(ON_TAB_SHEET);
allExited = false;
} else if(vKeyboard && vKeyboard->isVisible()) {
vKeyboard->hide();
@ -1628,26 +1846,43 @@ bool LockWidget::exitSubWidget()
} else if(powermanager && powermanager->isVisible()){
authDialog->show();
powermanager->hide();
tabAt = LINEEDIT;
if(!authDialog->getLineeditStatus()) {
tabAt = LINEEDIT;
authDialog->setFocusin(IN_LINEEDIT);
if(isTableMode && !(vKeyboard && vKeyboard->isVisible())) {
showVirtualKeyboard();
}
} else {
tabAt = MESSAGEBTN;
authDialog->setFocusin(ON_MESSAGEBTN);
}
setBottomBtnSheet();
authDialog->setFocusin(IN_LINEEDIT);
powermanager->clearStatus();
at_power = false;
allExited = false;
return allExited;
}
if(tabAt != LINEEDIT)
authDialog->setFocusin(REMOVE);
// if (!is_keynavigation) {
// resetNavigation();
// }
return allExited;
}
void LockWidget::onActiveWindpw()
void LockWidget::onActiveLineedit()
{
if(tabAt == LINEEDIT) {
if(authDialog && authDialog->isVisible())
authDialog->setFocusin(IN_LINEEDIT);
if(tabAt == LINEEDIT || (tabAt == BOTTMBTN && horAT == KEYBOARDBTN)) { /*
session拉其他组件时会多次设置焦点
tabAt就会是BOTTOM
*/
if(authDialog && authDialog->isVisible()) {
if(!authDialog->getLineeditStatus()) {
authDialog->setFocusin(IN_LINEEDIT);
if(isTableMode && !(vKeyboard && vKeyboard->isVisible()))
showVirtualKeyboard();
} else {
tabAt = MESSAGEBTN;
authDialog->setFocusin(ON_MESSAGEBTN);
}
}
}
}
@ -1674,6 +1909,29 @@ QString LockWidget::getBatteryIconName()
return QString();
}
QString LockWidget::getBatteryIconName()
{
if (iface->isValid() && dface->isValid()) {
bool batteryState = false;
QDBusReply<QVariant> reply = batInterface->call("Get", UPOWER_SERVICE, "OnBattery");
if (reply.isValid()) {
batteryState = reply.value().toBool();
}
double percentage = -1.0;
QDBusReply<QVariant> percentage_reply = iface->call("Get", UPOWER_DIVICES_SERVICE, "Percentage");
if (percentage_reply.isValid()) {
percentage = percentage_reply.value().toDouble();
}
if (true == batteryState) {
return QString("battery-level-%1-symbolic").arg((int)percentage / 10 * 10);
} else {
return QString("battery-level-%1-charging-symbolic").arg((int)percentage / 10 * 10);
}
}
return QString();
}
int LockWidget::getLoginedNum()
{
if(loginedNum != 0)

View File

@ -25,10 +25,14 @@
#include <QWidget>
#include <QResizeEvent>
#include <QDBusArgument>
#include <QTabWidget>
#include <kylin-nm/kynetworkicon.h>
#include "kylin-nm/kylin-nm-interface.h"
#include "surewindow.h"
#include "lockchecker.h"
#include "xeventmonitor.h"
#include "batterywidget.h"
#include "libinputswitchevent.h"
namespace Ui {
class LockWidget;
@ -61,6 +65,7 @@ enum TABAT {
BIOBTN,
BOTTMBTN,
POWERMANAGER,
MESSAGEBTN,
};
enum HORIZONBTN {
@ -84,8 +89,9 @@ public:
void setX11Focus();
bool exitSubWidget();
void setStartupMode(bool mode);
void onActiveWindpw();
void onActiveLineedit();
QString getBatteryIconName();
void key_enter_release(int key);
Q_SIGNALS:
void closed();
@ -99,20 +105,20 @@ private:
void updateNetIcon(int status);
bool getLoadStatus(const QString &name);
int getNetStatus();
QPixmap PixmapToRound(const QPixmap &src, int radius);
void key_OB_release(int key);
void key_tab_release(int key);
void key_shiftTab_release();
void key_LR_release(int key);
void key_enter_release(int key);
int getLoginedNum();
void setBottomBtnSheet();
void setCheckedSheet(int type, bool show);
void loadNetPlugin();
void setBottomBtnSheet();
void setCheckedSheet(int type, bool show);
private Q_SLOTS:
void onUserAdded(const UserItem &user);
void onUserDeleted(const UserItem &user);
void onUserMenuTrigged(QAction *action);
void showVirtualKeyboard();
void netInPutStatus();
void showPowerManager(bool keynavigation = false);
void showUserMenu();
void showNetManager(bool keynavigation = false);
@ -127,6 +133,7 @@ private Q_SLOTS:
void resetNavigation();
void setBatteryIcon(QString str);
void dealMessage(QDBusMessage);
void onShowMessageBtn(bool is_show);
protected:
bool eventFilter(QObject *obj, QEvent *event);
@ -149,14 +156,16 @@ private:
QScrollArea *scrollArea;
QWidget *scrollContents;
QWidget *m_kylinNM = nullptr;
BatteryWidget *mBatteryWidget = nullptr;
KylinNM *m_kylinNM = nullptr;
QTabWidget *mkylinNM = nullptr;
QWidget *m_NetManagerWidget;
QStringList m_loginedUser;
bool isNetFinished = false;
int powermanagerType;
int nowAt = -1;
int loginedNum = 0;
QPushButton *btnNetworkManager = nullptr;
bool m_isStartupMode = false;
bool is_switchBtn = true;
bool is_batteryBtn = true;
@ -165,9 +174,15 @@ private:
int horAT = BATTERYBTN;
int at_power = false;
bool at_plugins = false;
QDBusInterface *batInterface = nullptr;
QDBusInterface *iface = nullptr;
QDBusInterface *dface = nullptr;
// 监听键盘插拔
LibinputSwitchEvent *libswitch = nullptr;
bool isTableMode = false;
};
#endif // LOCKWIDGET_H

View File

@ -144,25 +144,6 @@ QPushButton::pressed {
<string/>
</property>
</widget>
<widget class="QPushButton" name="btnNetworkManager">
<property name="geometry">
<rect>
<x>370</x>
<y>10</y>
<width>80</width>
<height>26</height>
</rect>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QPushButton" name="btnBatteryStatus">
<property name="geometry">
<rect>

40
src/mytabwidget.cpp Normal file
View File

@ -0,0 +1,40 @@
#include "mytabwidget.h"
#include <QStyleOption>
#include <QPainter>
#include <QBitmap>
MyTabWidget::MyTabWidget(QWidget *parent) : QTabWidget(parent)
{
//隐藏标题栏
// setWindowFlags(Qt::FramelessWindowHint);//无边框 置顶
//设置窗口背景透明
// setAttribute(Qt::WA_TranslucentBackground,false);
//设置样式
// QWidget *w = new QWidget(this);
// QWidget *k = new QWidget(this);
// this->addTab(w,"111");
// this->addTab(k,"222");
}
void MyTabWidget::paintEvent(QPaintEvent *p1)
{
//绘制样式
QStyleOption opt;
opt.initFrom(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);//绘制样式
QBitmap bmp(this->size());
bmp.fill();
QPainter painter(&bmp);
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::black);
painter.setRenderHint(QPainter::Antialiasing);
painter.drawRoundedRect(bmp.rect(), 12, 12);
setMask(bmp);
}

18
src/mytabwidget.h Normal file
View File

@ -0,0 +1,18 @@
#ifndef MYTABWIDGET_H
#define MYTABWIDGET_H
#include <QWidget>
#include <QTabWidget>
class MyTabWidget : public QTabWidget
{
Q_OBJECT
public:
explicit MyTabWidget(QWidget *parent = nullptr);
void paintEvent(QPaintEvent *event);
signals:
};
#endif // WIDGET_H

View File

@ -51,6 +51,11 @@ PowerManager::PowerManager(int num, QWidget *parent)
lasttime(QTime::currentTime())
{
// resize(ITEM_WIDTH*7, ITEM_HEIGHT);
QFile qssFile(":/qss/assets/authdialog.qss");
if(qssFile.open(QIODevice::ReadOnly)) {
this->setStyleSheet(qssFile.readAll());
}
setObjectName("PowerManager");
setFlow(QListWidget::LeftToRight);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
@ -197,7 +202,8 @@ void PowerManager::clearStatus()
void::PowerManager::setButtonStyle(QString Style)
{
if(Style == "normal")
listLabel.at(nowAt)->setStyleSheet("background-color: rgba(255, 255, 255, 15%);QLabel:hover{background-color:rgba(255,255,255,40%)};QLabel:pressed:!hover{background-color:rgba(255,255,255,30%)}");
listLabel.at(nowAt)->setStyleSheet("background-color: rgba(255, 255, 255, 15%);\
QPushButton:hover{background-color:rgba(255,255,255,40%)};QPushButton:pressed:!hover{background-color:rgba(255,255,255,30%)}");
else if(Style == "focus")
listLabel.at(nowAt)->setStyleSheet("background-color: rgba(255, 255, 255, 20%);border: 1px solid #296CD9; border-radius: 64px;");
}
@ -655,13 +661,14 @@ void PowerManager::initUI()
rebootWidget->setObjectName("rebootWidget");
QWidget *rbLabelWidget = new QWidget(this);
rbLabelWidget->setFixedSize(130, 130);
rebootFace = new QLabel(rbLabelWidget);
rebootFace = new QPushButton(rbLabelWidget);
rebootFace->setObjectName("rebootFace");
QLabel *rebootLabel = new QLabel(this);
rebootFace->setAlignment(Qt::AlignCenter);
//rebootFace->setAlignment(Qt::AlignCenter);
rebootFace->installEventFilter(this);
rebootLabel->setAlignment(Qt::AlignCenter);
rebootFace->setPixmap(QPixmap(":/image/assets/reboot.png").scaled(58,58));
rebootFace->setIcon(QIcon(":/image/assets/reboot.svg"));
rebootFace->setIconSize(QSize(48, 48));
rebootLabel->setText(tr("Reboot"));
rebootWidget->setFixedSize(ITEM_WIDTH,ITEM_HEIGHT);
QVBoxLayout *rebootlayout = new QVBoxLayout(rebootWidget);
@ -673,15 +680,16 @@ void PowerManager::initUI()
shutdownWidget->setObjectName("shutdownWidget");
QWidget *shLabelWidget = new QWidget(this);
shLabelWidget->setFixedSize(130, 130);
shutdownFace = new QLabel(shLabelWidget);
shutdownFace = new QPushButton(shLabelWidget);
shutdownFace->setObjectName("shutdownFace");
QLabel *shutdownLabel = new QLabel(this);
shutdownLabel->setAlignment(Qt::AlignCenter);
shutdownFace->setAlignment(Qt::AlignCenter);
//shutdownFace->setAlignment(Qt::AlignCenter);
shutdownFace->installEventFilter(this);
shutdownFace->setPixmap(QPixmap(":/image/assets/shutdown.png").scaled(58,58));
shutdownFace->setIcon(QIcon(":/image/assets/shutdown.svg"));
shutdownFace->setIconSize(QSize(48, 48));
shutdownLabel->setText(tr("Shut Down"));
shutdownWidget->setFixedSize(ITEM_WIDTH,ITEM_HEIGHT);
shutdownWidget->setFixedSize(ITEM_WIDTH, ITEM_HEIGHT);
QVBoxLayout *shutdownlayout = new QVBoxLayout(shutdownWidget);
shutdownlayout->addWidget(shLabelWidget);
shutdownlayout->addWidget(shutdownLabel);
@ -699,13 +707,14 @@ void PowerManager::initUI()
hibernateWidget->setObjectName("hibernateWidget");
QWidget *hbLabelWidget = new QWidget(this);
hbLabelWidget->setFixedSize(130, 130);
hibernateFace = new QLabel(hbLabelWidget);
hibernateFace = new QPushButton(hbLabelWidget);
hibernateFace->setObjectName("hibernateFace");
QLabel *hibernateLabel = new QLabel(this);
hibernateLabel->setAlignment(Qt::AlignCenter);
hibernateFace->setAlignment(Qt::AlignCenter);
//hibernateFace->setAlignment(Qt::AlignCenter);
hibernateFace->installEventFilter(this);
hibernateFace->setPixmap(QPixmap(":/image/assets/hibernate.png").scaled(48,48));
hibernateFace->setIcon(QIcon(":/image/assets/hibernate.svg"));
hibernateFace->setIconSize(QSize(48, 48));
hibernateLabel->setText(tr("Hibernate"));
hibernateWidget->setFixedSize(ITEM_WIDTH,ITEM_HEIGHT);
QVBoxLayout *hibernatelayout = new QVBoxLayout(hibernateWidget);
@ -726,13 +735,14 @@ void PowerManager::initUI()
suspendWidget->setObjectName("suspendWidget");
QWidget *spLabelWidget = new QWidget(this);
spLabelWidget->setFixedSize(130, 130);
suspendFace = new QLabel(spLabelWidget);
suspendFace = new QPushButton(spLabelWidget);
suspendFace->setObjectName("suspendFace");
QLabel *suspendLabel = new QLabel(this);
suspendLabel->setAlignment(Qt::AlignCenter);
suspendFace->setAlignment(Qt::AlignCenter);
//suspendFace->setAlignment(Qt::AlignCenter);
suspendFace->installEventFilter(this);
suspendFace->setPixmap(QPixmap(":/image/assets/suspend.png").scaled(48,48));
suspendFace->setIcon(QIcon(":/image/assets/suspend.svg"));
suspendFace->setIconSize(QSize(48, 48));
suspendLabel->setText(tr("Suspend"));
suspendWidget->setFixedSize(ITEM_WIDTH,ITEM_HEIGHT);
QVBoxLayout *suspendlayout = new QVBoxLayout(suspendWidget);

View File

@ -45,6 +45,7 @@ enum stateType {
};
class QLabel;
class QPushButton;
class QListWidget;
class QListWidgetItem;
class QDBusInterface;
@ -76,7 +77,7 @@ private:
void setQSS();
QWidget *list;
#else
QList<QLabel *> listLabel;
QList<QPushButton *> listLabel;
int nowAt = -1;
QListWidget *list;
QWidget *suspendWidget;
@ -97,10 +98,10 @@ private:
QWidget *rebootWidget;
QWidget *shutdownWidget;
QTime lasttime;
QLabel *rebootFace;
QLabel *shutdownFace;
QLabel *hibernateFace;
QLabel *suspendFace;
QPushButton *rebootFace;
QPushButton *shutdownFace;
QPushButton *hibernateFace;
QPushButton *suspendFace;
int loginedNum = 0;
bool m_isStartupMode = false;

View File

@ -198,11 +198,11 @@ int main(int argc, char *argv[])
window = new FullBackgroundWidget();
QFile qssFile(":/qss/assets/authdialog.qss");
if(qssFile.open(QIODevice::ReadOnly)) {
a.setStyleSheet(qssFile.readAll());
}
qssFile.close();
// QFile qssFile(":/qss/assets/authdialog.qss");
// if(qssFile.open(QIODevice::ReadOnly)) {
// a.setStyleSheet(qssFile.readAll());
// }
// qssFile.close();
// 注册DBus
ScreenSaverWndAdaptor adaptorWnd(window);
@ -226,7 +226,10 @@ int main(int argc, char *argv[])
}
#ifndef USE_INTEL
window->showFullScreen();
if (QString(qgetenv("XDG_SESSION_TYPE")) == "wayland")
window->showFullScreen();
else
window->show();
window->activateWindow();
#endif
if(parser.isSet(lockOption))