feat(network): Adapt network plugin

Description: 适配网络插件

Log: 123734 子 openkylin网络插件化适配 / openkylin网络插件化适配-登录锁屏
This commit is contained in:
winnerym 2022-12-07 21:53:27 +08:00
parent d2cff1fc8e
commit f6e281c8b7
51 changed files with 3183 additions and 743 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

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

@ -2,107 +2,166 @@
OL=天生我材必有用,千金散尽还复来。
author=李白《将进酒》
[2]
OL=新时代的伟大成就是党和人民一道拼出来、干出来、奋斗出来的。
author=习近平
[3]
OL=莫愁前路无知己,天下谁人不识君。
author=高适《别董大二首》
[3]
[4]
OL=莫听穿林打叶声,何妨吟啸且徐行。
author=苏轼《定风波》
[4]
[5]
OL=党用伟大奋斗创造了百年伟业,也一定能用新的伟大奋斗创造新的伟业。
author=习近平
[6]
OL=巧言令色,鲜矣仁!
author=《论语》
[5]
[7]
FL=与君初相识,犹如故人归。
SL=天涯明月新,朝暮最相思。
author=杜牧《会友》
[6]
[8]
FL=一个饱经沧桑而初心不变的党,才能基业常青;
SL=一个铸就辉煌仍勇于自我革命的党,才能无坚不摧。
author=习近平
[9]
OL=见贤思齐焉,见不贤而内自省也。
author=《论语》
[7]
[10]
OL=为政以德,譬如北辰,居其所而众星共之。
author=《论语》
[8]
[11]
FL=道阻且长,行则将至。前进道路上,无论是风高浪急还是惊涛骇浪,
SL=人民永远是我们最坚实的依托、最强大的底气。
author=习近平
[12]
OL=知彼知己,百战不殆。
author=《孙子兵法》
[9]
[13]
OL=人患不知其过,既知之,不能改,是无勇也。
author=韩愈《五箴》
[10]
[14]
FL=新征程是充满光荣和梦想的远征。蓝图已经绘就,号角已经吹响。
SL=我们要踔厉奋发、勇毅前行,努力创造更加灿烂的明天。
author=习近平
[15]
OL=万物并育而不相害,道并行而不相悖
author=《礼记·中庸》
[11]
[16]
OL=自信人生二百年,会当水击三千里
author=毛泽东《七古·残句》
[12]
[17]
OL=我们完全有信心有能力在新时代新征程创造令世人刮目相看的新的更大奇迹。
author=习近平
[18]
OL=青春虚度无所成,白首衔悲亦何及。
author=权德舆《放歌行》
[13]
[19]
OL=劳动模范是民族的精英、人民的楷模,是共和国的功臣。
author=习近平
[14]
[20]
FL=当前最重要的任务是撸起袖子加油干,
SL=一步一个脚印把党的二十大作出的重大决策部署付诸行动、见之于成效。
author=习近平
[21]
FL=广大人民群众坚持爱国奉献,无怨无悔,让我感到千千万万普通人最伟大,
SL=同时让我感到幸福都是奋斗出来的。
author=2018新年贺词 习近平
[15]
[22]
OL=中华文化既是历史的、也是当代的,既是民族的、也是世界的。
author=习近平
[16]
[23]
OL=没有坚实的物质技术基础,就不可能全面建成社会主义现代化强国。
author=习近平
[24]
OL=我们党没有自己的特殊利益,党在任何时候都是把群众利益放在第一位。
author=习近平
[17]
[25]
OL=知者行之始。行者知之成。
author=王阳明《传习录·卷上·门人陆澄录》
[18]
[26]
FL=江山就是人民,人民就是江山。
SL=中国共产党领导人民打江山、守江山,守的是人民的心,治国有常,利民为本。
author=习近平
[27]
OL=此心不动,随机而动。
author=王阳明
[19]
[28]
OL=你未看此花时,此花与汝心同归于寂。
author=《传习录·卷下·门人黄省曾录》
[20]
[29]
FL=时代呼唤我们,人民期待着我们,
SL=唯有矢志不渝、笃行不怠,方能不负时代、不负人民。
author=习近平
[30]
OL=省察是有事时存养,存养是无事时省察。
author=王阳明《传习录》
[21]
[31]
OL=路漫漫其修远兮,吾将上下而求索。
author=《离骚》
[22]
[32]
OL=当代中国青年生逢其时,施展才干的舞台无比广阔,实现梦想的前景无比光明。
author=习近平
[33]
FL=解决台湾问题是中国人自己的事,要由中国人来决定。
SL=国家统一、民族复兴的历史车轮滚滚向前,祖国完全统一一定要实现,也一定能够实现。
author=习近平
[34]
OL=悲莫悲兮生别离,乐莫乐兮新相知。
author=《九歌·少司命》
[23]
[35]
OL=风飒飒兮木萧萧,思公子兮徒离忧。
author=《九歌·山鬼》
[24]
[36]
OL=善守者,藏于九地之下,善攻者,动于九天之上。
author=《孙子兵法》
[25]
[37]
FL=我们正意气风发迈向全面建设社会主义现代化国家新征程,
SL=向第二个百年奋斗目标进军,以中国式现代化全面推进中华民族伟大复兴。
author=习近平
[38]
OL=善战者,致人而不致于人。
author=《孙子兵法·虚实第六》
[26]
[39]
OL=乱生于治,怯生于勇,弱生于强。
author=《孙子兵法·兵势第五》
[27]
[40]
FL=中国式现代化是中国共产党和中国人民长期实践探索的成果,
SL=是一项伟大而艰巨的事业。惟其艰巨,所以伟大;惟其艰巨,更显光荣。
author=习近平
[41]
OL=不战而屈人之兵,善之善者也。
author=《孙子兵法·谋攻第三》
[28]
[42]
OL=天行健,君子以自强不息。
author=《周易.乾卦》
[29]
[43]
FL=中国开放的大门只会越来越大。我们将坚定不移全面深化改革开放,
SL=坚定不移推动高质量发展,以自身发展为世界创造更多机遇。
author=习近平
[44]
OL=积善之家,必有余庆;积不善之家,必有余殃。
author=《周易.坤卦》
[30]
[45]
OL=穷则变,变则通,通则久。
author=《周易.系辞下》
[31]
[46]
FL=我们历来主张,人类的前途命运应该由世界各国人民来把握和决定。
SL=只要共行天下大道,各国就能够和睦相处、合作共赢,携手创造世界的美好未来。
author=习近平
[47]
OL=天若有情天亦老,人间正道是沧桑
author=毛泽东《七律·人民解放军占领南京》
[32]
[48]
OL=仰天大笑出门去,我辈岂是蓬蒿人。
author=李白《南陵别儿童入京》
[33]
[49]
OL=落叶秋风生渭水,落叶满长安。
author=贾岛《忆江上吴处士》
[34]
[50]
OL=人生来是精神所附丽的物质,免不掉物质所常有的惰性。
author=朱光潜《朝抵抗力最大的路径走》
[35]
[51]
FL=能朝抵抗力最大的路径走,是人的特点。
SL=人在能尽量发挥这特点时,就足见出他有富裕的生活力。
author=朱光潜《朝抵抗力最大的路径走》

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,32 +588,51 @@ void AuthDialog::setX11Focus()
void AuthDialog::setFocusin(int target)
{
if(m_passwordEdit && m_widgetLoginOpts) {
if(m_passwordEdit) {
switch (target) {
case REMOVE: //焦点清除
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: //焦点在登录按钮
if(m_widgetLoginOpts)
m_widgetLoginOpts->tabOptionSelected(2);
m_passwordEdit->setFocusin(1);
break;
case BIO_RIGHT: //登录选项焦点右移
if(m_widgetLoginOpts)
m_widgetLoginOpts->tabOptionSelected(0);
m_passwordEdit->setFocusin(2);
m_nameLabel->setFocus();
break;
case BIO_LEFT: //登录选项焦点左移
if(m_widgetLoginOpts)
m_widgetLoginOpts->tabOptionSelected(1);
m_passwordEdit->setFocusin(target);
m_nameLabel->setFocus();
break;
case IN_LINEEDIT: //焦点在密码输入框
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:
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,8 +786,17 @@ void AuthDialog::onMessageButtonClicked()
}
}
bool AuthDialog::getLineeditStatus()
{
return is_showMessageBtn;
}
void AuthDialog::onRespond(const QString &text)
{
if (!prompted && text != BIOMETRIC_SUCCESS) {
qInfo()<<"Wait for input passwd!";
return;
}
unacknowledged_messages=false;
clearMessage();
startWaiting();

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);
@ -56,22 +57,29 @@ void BatteryWidget::initUi()
void BatteryWidget::setupComponent()
{
QDBusInterface *batInterface = new QDBusInterface(
"org.ukui.upower", "/upower/BatteryInfo", "org.ukui.upower.battery", QDBusConnection::sessionBus(), this);
QString batteryPath = "";
dface = new QDBusInterface(UPOWER_SERVICE, UPOWER_PATH, UPOWER_INTERFACE, QDBusConnection::systemBus(), this);
QDBusReply<QList<QDBusObjectPath>> reply = dface->call("EnumerateDevices");
if (dface->isValid()) {
for (QDBusObjectPath op : reply.value()) {
if (op.path().contains("battery_")) {
batteryPath = op.path();
qDebug() << "battery path is :" << batteryPath;
break;
}
}
} else {
qDebug() << "Enumerate devices failed";
}
batInterface = new QDBusInterface(UPOWER_SERVICE, batteryPath, FREEDESKTOP_UPOWER, QDBusConnection::systemBus(), this);
QDBusInterface *powerInterface = new QDBusInterface(
"org.ukui.upower", "/upower", "org.ukui.upower", QDBusConnection::sessionBus(), this);
if (batInterface->isValid()) {
QDBusReply<QString> iconreply = batInterface->call("IconName");
QDBusConnection::systemBus().connect(
UPOWER_SERVICE, batteryPath, FREEDESKTOP_UPOWER, "PropertiesChanged", this, SLOT(dealMessage(QDBusMessage)));
iface = new QDBusInterface(UPOWER_SERVICE, UPOWER_PATH, FREEDESKTOP_UPOWER, QDBusConnection::systemBus());
if (dface->isValid()) {
mIconBtn->setIconSize(QSize(48, 32));
mIconBtn->setFocusPolicy(Qt::NoFocus);
mIconBtn->setIcon(QIcon::fromTheme(iconreply));
QDBusConnection::sessionBus().connect(
QString(), "/upower/BatteryInfo", "org.ukui.upower.battery", "BatteryIcon", this, SLOT(setBatteryIcon(QString)));
QDBusReply<bool> batteryreply = powerInterface->call("OnBattery");
mModeLabel->setText(batteryreply ? tr("BatteryMode") : tr("PowerMode"));
mIconBtn->setIcon(QIcon::fromTheme(getBatteryIconName()));
}
ed = EngineDevice::getInstance();
onBatteryChanged(ed->engine_get_state());
@ -96,6 +104,29 @@ void BatteryWidget::setPoint(QPoint point)
mPoint = point;
}
QString BatteryWidget::getBatteryIconName()
{
if (dface->isValid() && iface->isValid()) {
bool batteryState = false;
QDBusReply<QVariant> reply = iface->call("Get", UPOWER_SERVICE, "OnBattery");
if (reply.isValid()) {
batteryState = reply.value().toBool();
}
double percentage = -1.0;
QDBusReply<QVariant> percentage_reply = batInterface->call("Get", UPOWER_DIVICES_SERVICE, "Percentage");
if (percentage_reply.isValid()) {
percentage = percentage_reply.value().toDouble();
}
if (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();
}
void BatteryWidget::showEvent(QShowEvent *event)
{
QPoint pos = QPoint(mPoint.x(),
@ -133,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"));
@ -141,5 +171,11 @@ void BatteryWidget::onBatteryChanged(QStringList args)
mStatusLabel->setVisible(false);
mModeLabel->setText(tr("BatteryMode"));
}
mValueLabel->setText(QString("<font size='5';font color=#262626>%1</font>%").arg(battery));
}
void BatteryWidget::dealMessage(QDBusMessage)
{
mIconBtn->setIcon(QIcon::fromTheme(getBatteryIconName()));
}

View File

@ -9,6 +9,13 @@
#include <QPoint>
#include "enginedevice.h"
#define FREEDESKTOP_UPOWER "org.freedesktop.DBus.Properties"
#define UPOWER_INTERFACE "org.freedesktop.UPower"
#define UPOWER_PATH "/org/freedesktop/UPower"
#define UPOWER_SERVICE "org.freedesktop.UPower"
#define UPOWER_DISPLAY_PATH "/org/freedesktop/UPower/devices/DisplayDevice"
#define UPOWER_DIVICES_SERVICE "org.freedesktop.UPower.Device"
class BatteryWidget : public QWidget
{
Q_OBJECT
@ -18,6 +25,7 @@ public:
void initUi();
void setupComponent();
void setPoint(QPoint point);
QString getBatteryIconName();
protected:
void showEvent(QShowEvent *event);
@ -31,12 +39,15 @@ private:
QPoint mPoint;
QDBusInterface *batInterface;
QDBusInterface *iface;
QDBusInterface *dface;
EngineDevice* ed;
private Q_SLOTS:
void setBatteryIcon(QString icon);
void onBatteryChanged(QStringList args);
void dealMessage(QDBusMessage);
};

View File

@ -34,6 +34,7 @@
#include <QImageReader>
#include "plasma-shell-manager.h"
#include <QX11Info>
#include "lockwidget.h"
#include <X11/Xatom.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
@ -50,7 +51,6 @@
#include <sys/syslog.h>
#include <xcb/xcb.h>
#include "lockwidget.h"
#include "xeventmonitor.h"
#include "monitorwatcher.h"
#include "configuration.h"
@ -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,11 +342,13 @@ void FullBackgroundWidget::setLockState()
bool FullBackgroundWidget::eventFilter(QObject *obj, QEvent *event)
{
if (!QX11Info::isPlatformX11()) {
if(event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseMove || event->type() == 7){
if(screenStatus & SCREEN_SAVER){
if(screenStatus & SCREEN_SAVER && !isBlank){
clearScreensavers();
}
}
}
if(event->type() == QEvent::WindowDeactivate){
QTimer::singleShot(50,this,SLOT(laterActivate()));
}else if(event->type() == QEvent::WindowActivate){
@ -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接口获取了
@ -648,17 +646,6 @@ void FullBackgroundWidget::init()
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();
}
qDebug()<<"----------------------------------------------------------------开始异步调用";
@ -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()
@ -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;
if (QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") {
QDBusInterface interface("org.kde.KWin",
"/kglobalaccel",
"org.kde.KGlobalAccel",
QDBusConnection::sessionBus());
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(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();
if(!authDialog->getLineeditStatus()) {
tabAt = LINEEDIT;
setBottomBtnSheet();
authDialog->setFocusin(IN_LINEEDIT);
if(isTableMode && !(vKeyboard && vKeyboard->isVisible())) {
showVirtualKeyboard();
}
} else {
tabAt = MESSAGEBTN;
authDialog->setFocusin(ON_MESSAGEBTN);
}
setBottomBtnSheet();
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 {
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;
} else if(users->getUsers().count() > 1){
horAT = SWITCHBTN;
} else {
horAT =NETWORKBTN;
}
setBottomBtnSheet();
qDebug() << " horat = " << horAT;
}
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) {
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,6 +422,7 @@ void LockWidget::key_shiftTab_release()
break;
case BOTTMBTN:
if(!at_power) {
if(!authDialog->getLineeditStatus()) {
if(authDialog->getBioNum() >1) {
authDialog->setFocusin(BIO_RIGHT);
tabAt = BIOBTN;
@ -378,6 +430,11 @@ void LockWidget::key_shiftTab_release()
authDialog->setFocusin(IN_LIGIN);
tabAt = ENTERBTN;
}
} else {
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);
@ -665,24 +730,38 @@ void LockWidget::initUI()
ui->widgetTime->adjustSize();
//电池电量显示icon
QDBusInterface *batInterface = new QDBusInterface(
"org.ukui.upower", "/upower/BatteryInfo", "org.ukui.upower.battery", QDBusConnection::sessionBus(), this);
batInterface = new QDBusInterface(
"org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.DBus.Properties", QDBusConnection::systemBus(), this);
QDBusInterface *powerInterface = new QDBusInterface(
"org.ukui.upower", "/upower", "org.ukui.upower", QDBusConnection::sessionBus(), this);
if (batInterface->isValid()) {
QDBusReply<int> reply = powerInterface->call("MachineType");
QString batteryPath = "";
dface = new QDBusInterface(UPOWER_SERVICE, UPOWER_PATH, UPOWER_INTERFACE, QDBusConnection::systemBus(), this);
QDBusReply<QList<QDBusObjectPath>> reply = dface->call("EnumerateDevices");
if (dface->isValid()) {
for (QDBusObjectPath op : reply.value()) {
if (op.path().contains("battery_")) {
batteryPath = op.path();
qDebug() << "battery path is :" << batteryPath;
break;
}
}
} else {
qDebug() << "Enumerate devices failed";
}
iface = new QDBusInterface(UPOWER_SERVICE, batteryPath, FREEDESKTOP_UPOWER, QDBusConnection::systemBus());
if (dface->isValid()) {
QDBusReply<QVariant> reply = batInterface->call("Get", "org.freedesktop.UPower", "LidIsPresent");
if (reply.isValid()) {
if (1 == reply.value()) {
QDBusReply<QString> iconreply = batInterface->call("IconName");
setBatteryIcon(iconreply.value());
QDBusConnection::sessionBus().connect(
QString(), "/upower/BatteryInfo", "org.ukui.upower.battery", "BatteryIcon", this, SLOT(setBatteryIcon(QString)));
if (true == reply.value().toBool()) {
setBatteryIcon(getBatteryIconName());
QDBusConnection::systemBus().connect(
UPOWER_SERVICE, batteryPath, FREEDESKTOP_UPOWER, "PropertiesChanged", this, SLOT(dealMessage(QDBusMessage)));
ui->btnBatteryStatus->setFixedSize(48,48);
ui->btnBatteryStatus->setIconSize(QSize(24,24));
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
@ -701,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);
@ -711,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()){
//虚拟键盘
@ -732,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, [&]{
@ -744,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);
@ -760,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,
@ -781,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();
}
@ -801,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())
@ -852,16 +976,23 @@ void LockWidget::showPowerManager(bool keynavigation)
if(powermanager->isVisible()){
authDialog->show();
powermanager->hide();
if(!authDialog->getLineeditStatus()) {
tabAt = LINEEDIT;
setBottomBtnSheet();
authDialog->setFocusin(IN_LINEEDIT);
if(isTableMode && !(vKeyboard && vKeyboard->isVisible())) {
showVirtualKeyboard();
}
} else {
tabAt = MESSAGEBTN;
authDialog->setFocusin(ON_MESSAGEBTN);
}
setBottomBtnSheet();
powermanager->clearStatus();
at_power = false;
}
else{
authDialog->hide();
powermanager->show();
powermanager->setFocus();
if(keynavigation){
powermanager->keyBdRelease(Qt::Key_Right);
tabAt = POWERMANAGER;
@ -906,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:
@ -931,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();
@ -953,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();
@ -967,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();
@ -986,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();
@ -1002,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();
@ -1024,14 +1159,16 @@ void LockWidget::showNetManager(bool keynavigation)
* m_kylinNM->raise()authDialog->lower()*/
if(authDialog && authDialog->isVisible()){
authDialog->lower();
}
authDialog->clearFocus();
}
if(mBatteryWidget && mBatteryWidget->isVisible()) {
mBatteryWidget->lower();
mBatteryWidget->clearFocus();
}
at_plugins = true;
m_kylinNM->updateWifiList();
//m_kylinNM->updateWifiList();
}
}
@ -1055,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);
}
}
@ -1084,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);
@ -1094,7 +1240,18 @@ 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;
if(!authDialog->getLineeditStatus())
tabAt = LINEEDIT;
setBottomBtnSheet();
}
@ -1115,6 +1272,11 @@ void LockWidget::setBatteryIcon(QString str)
ui->btnBatteryStatus->setIcon(QPixmap::fromImage(img));
}
void LockWidget::dealMessage(QDBusMessage)
{
setBatteryIcon(getBatteryIconName());
}
int LockWidget::getNetStatus()
{
int ret = -1;
@ -1151,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)
@ -1305,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);
}
}
@ -1329,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());
}
}
@ -1351,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)
@ -1366,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;
@ -1399,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());
}
@ -1474,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())
@ -1599,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();
@ -1610,27 +1846,67 @@ bool LockWidget::exitSubWidget()
} else if(powermanager && powermanager->isVisible()){
authDialog->show();
powermanager->hide();
if(!authDialog->getLineeditStatus()) {
tabAt = LINEEDIT;
setBottomBtnSheet();
authDialog->setFocusin(IN_LINEEDIT);
if(isTableMode && !(vKeyboard && vKeyboard->isVisible())) {
showVirtualKeyboard();
}
} else {
tabAt = MESSAGEBTN;
authDialog->setFocusin(ON_MESSAGEBTN);
}
setBottomBtnSheet();
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())
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);
}
}
}
}
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()

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,7 +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();
@ -98,13 +105,12 @@ 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 loadNetPlugin();
void setBottomBtnSheet();
void setCheckedSheet(int type, bool show);
private Q_SLOTS:
@ -112,6 +118,7 @@ private Q_SLOTS:
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);
@ -125,6 +132,8 @@ private Q_SLOTS:
void hideBottomPlugins();
void resetNavigation();
void setBatteryIcon(QString str);
void dealMessage(QDBusMessage);
void onShowMessageBtn(bool is_show);
protected:
bool eventFilter(QObject *obj, QEvent *event);
@ -147,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;
@ -163,6 +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
if (QString(qgetenv("XDG_SESSION_TYPE")) == "wayland")
window->showFullScreen();
else
window->show();
window->activateWindow();
#endif
if(parser.isSet(lockOption))