diff -Nru ukui-control-center-4.10.0.0/debian/changelog ukui-control-center-4.10.0.0/debian/changelog
--- ukui-control-center-4.10.0.0/debian/changelog	2025-01-01 16:22:05.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/changelog	2025-02-27 10:16:00.000000000 +0800
@@ -1,3 +1,39 @@
+ukui-control-center (4.10.0.0-ok57) nile; urgency=medium
+
+  * BUG:无
+  * 需求号: 无
+  * 其他改动说明:更改changelog,重新传包
+  * 其他改动影响域:无
+
+ -- zhoubin <zhoubin@kylinos.cn>  Thu, 27 Feb 2025 10:16:00 +0800
+
+ukui-control-center (4.10.0.0-ok56) nile; urgency=medium
+
+  * BUG:无
+  * 需求号: 无
+  * 其他改动说明:更改OpenKylin为openkylin
+  * 其他改动影响域:无
+
+ -- zhoubin <zhoubin@kylinos.cn>  Tue, 25 Feb 2025 16:25:28 +0800
+
+ukui-control-center (4.10.0.0-ok55) nile; urgency=medium
+
+  * BUG:无
+  * 需求号: 无
+  * 其他改动说明: 新增多语言支持 阿拉伯/越南 / 新增多语言支持 阿拉伯/越南
+  * 其他改动影响域:无
+
+ -- zhoubin <zhoubin@kylinos.cn>  Fri, 07 Feb 2025 16:32:50 +0800
+
+ukui-control-center (4.10.0.0-ok54) nile; urgency=medium
+
+  * BUG:#290697 【设置】【字体】字体选择可选字体与要求不一致
+  * 需求号: 无
+  * 其他改动说明:解决编译问题
+  * 其他改动影响域:无
+
+ -- susidian <susidian@kylinos.cn>  Fri, 07 Feb 2025 16:32:50 +0800
+
 ukui-control-center (4.10.0.0-ok53) nile; urgency=medium
 
   * BUG:#277741 【显示器】缩放率修改注销后未生效
@@ -1335,7 +1371,7 @@
   * 任务号:无
   * 其他改动:无
 
- -- zhoubin <zhoubin@kylin>  Thu, 20 Oct 2022 09:40:39 +0800
+ -- zhoubin <zhoubin@kylinos.cn>  Thu, 20 Oct 2022 09:40:39 +0800
 
 ukui-control-center (3.22.1.7) v101; urgency=medium
 
diff -Nru ukui-control-center-4.10.0.0/debian/libukcc3.postinst ukui-control-center-4.10.0.0/debian/libukcc3.postinst
--- ukui-control-center-4.10.0.0/debian/libukcc3.postinst	2025-01-01 16:22:05.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/libukcc3.postinst	2025-02-27 10:16:00.000000000 +0800
@@ -1,5 +1,14 @@
+#!/bin/bash
+
 is_hwe=$(cat /etc/kylin-build  | grep "V10-SP1-hwe")
 file_path="/usr/lib/x86_64-linux-gnu/libukcc.so.1.0.0.old"
 if [ -f /usr/sbin/kysec_get ] && [ -n "${is_hwe}" ] && [ -f $file_path ];then
  kysec_set -n exectl -v verified $file_path
 fi
+
+path="/usr/lib/`/usr/bin/dpkg-architecture -qDEB_TARGET_MULTIARCH`/libukcc.so.1.0.0"
+path1="/usr/lib/`/usr/bin/dpkg-architecture -qDEB_TARGET_MULTIARCH`/libukcc.so.1"
+path2="/usr/lib/`/usr/bin/dpkg-architecture -qDEB_TARGET_MULTIARCH`/libukcc.so.1.0"
+dpkg-divert --package libukcc3  --rename --remove "$path"".old"
+dpkg-divert --package libukcc3  --rename --remove "$path1"".old"
+dpkg-divert --package libukcc3  --rename --remove "$path2"".old"
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0111-128-316417.patch ukui-control-center-4.10.0.0/debian/patches/0111-128-316417.patch
--- ukui-control-center-4.10.0.0/debian/patches/0111-128-316417.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0111-128-316417.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,217 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Fri, 3 Jan 2025 09:43:54 +0000
+Subject: =?utf-8?b?ITEyOCAzMTY0MTcg44CQ5Yy65Z+f6K+t6KiA44CR6L6T5YWl5rOV6K6+?=
+ =?utf-8?b?572u5omT5LiN5byAIE1lcmdlIHB1bGwgcmVxdWVzdCAhMTI4IGZyb20g6IuP5Zej?=
+ =?utf-8?b?5YW4L29wZW5reWxpbi9uaWxlLTExMDc=?=
+
+---
+ plugins/system/about/about.cpp                     |  4 ++
+ plugins/system/display/widget.cpp                  |  1 +
+ plugins/time-language/area/languageframe.cpp       | 50 ++++++++++++++++++++--
+ plugins/time-language/area/languageframe.h         | 21 +++++++++
+ registeredSession/plugins/about/aboutinterface.cpp | 12 ++++--
+ shell/mainwindow.cpp                               |  1 -
+ 6 files changed, 82 insertions(+), 7 deletions(-)
+
+diff --git a/plugins/system/about/about.cpp b/plugins/system/about/about.cpp
+index 6b8afd1..64cfa1f 100644
+--- a/plugins/system/about/about.cpp
++++ b/plugins/system/about/about.cpp
+@@ -45,6 +45,7 @@
+ #include <QSvgRenderer>
+ #include <QSqlQuery>
+ #include <QSqlRecord>
++#include <QElapsedTimer>
+ 
+ const QString kAboutFile = "/usr/share/applications/kylin-user-guide.desktop";
+ const QString kHPFile = "/usr/share/applications/hp-document.desktop";
+@@ -657,7 +658,10 @@ void About::securityControl()
+ 
+ void About::compareTime(QString date)
+ {
++    QElapsedTimer timer;
++    timer.start();
+     QString s1 = mAboutDBus->property("netDate").toString();
++    qDebug() << Q_FUNC_INFO << " ntpTime:" << s1 << timer.elapsed();
+     QStringList list_1;
+     QStringList list_2 = date.split("-");
+     int year;
+diff --git a/plugins/system/display/widget.cpp b/plugins/system/display/widget.cpp
+index 8b331ed..43275c3 100644
+--- a/plugins/system/display/widget.cpp
++++ b/plugins/system/display/widget.cpp
+@@ -1972,6 +1972,7 @@ void Widget::initConnection()
+     });
+ 
+     connect(mTemptWidget, &SliderWidget::valueChanged, this, [=]{
++        qDebug() << Q_FUNC_INFO << "susidian valueChanged" << mTemptWidget->value();
+         if (m_colorSettings) {
+             m_colorSettings->set(NIGHT_TEMPERATURE_KEY, mTemptWidget->value());
+         } else {
+diff --git a/plugins/time-language/area/languageframe.cpp b/plugins/time-language/area/languageframe.cpp
+index 8634356..843cd89 100644
+--- a/plugins/time-language/area/languageframe.cpp
++++ b/plugins/time-language/area/languageframe.cpp
+@@ -1,9 +1,29 @@
++/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
++ *
++ * Copyright (C) 2019 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 this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
++ *
++ */
+ #include "languageframe.h"
+ #include <QHBoxLayout>
+ #include <QMenu>
+ #include <QProcess>
+ #include <QDebug>
+ #include <QTextCodec>
++#include <QFile>
+ #include "ukcccommon.h"
+ using namespace ukcc;
+ 
+@@ -72,6 +92,12 @@ QToolButton* LanguageFrame::createToolBtn()
+     menu->addAction(edit);
+     menu->addAction(del);
+ 
++    QString inputMethodSetCmd = getInputMethodSetCmd();
++    qDebug() << "input method seting cmd = " << inputMethodSetCmd;
++    if (inputMethodSetCmd.isEmpty()) {
++        edit->setVisible(false);
++    }
++
+     connect(menu, &QMenu::aboutToShow, [=](){
+         if (selectedIconLabel->isVisible()) {
+             del->setEnabled(false);
+@@ -86,9 +112,7 @@ QToolButton* LanguageFrame::createToolBtn()
+     });
+ 
+     connect(edit, &QAction::triggered, this, [=](){
+-        QProcess process;
+-        process.startDetached("fcitx5-config-qt");
+-
++        editInputMethodSlot();
+     });
+ 
+     btn->setIcon(QIcon::fromTheme("view-more-horizontal-symbolic"));
+@@ -96,6 +120,26 @@ QToolButton* LanguageFrame::createToolBtn()
+     return btn;
+ }
+ 
++void LanguageFrame::editInputMethodSlot() {
++    QString cmd = getInputMethodSetCmd();
++    QProcess process;
++    process.startDetached(cmd);
++}
++
++QString LanguageFrame::getInputMethodSetCmd() {
++    QFile inputSetCmd("/usr/bin/fcitx5-config-qt");
++    if (inputSetCmd.exists()) {
++        return "/usr/bin/fcitx5-config-qt";
++    }
++
++    QFile inputSetCmd1("/usr/bin/fcitx-config-gtk3");
++    if (inputSetCmd1.exists()) {
++        return "/usr/bin/fcitx-config-gtk3";
++    }
++
++    return "";
++}
++
+ QString LanguageFrame::getShowName()
+ {
+     return this->nameLabel->text();
+diff --git a/plugins/time-language/area/languageframe.h b/plugins/time-language/area/languageframe.h
+index ea7551d..a0a84b8 100644
+--- a/plugins/time-language/area/languageframe.h
++++ b/plugins/time-language/area/languageframe.h
+@@ -1,3 +1,22 @@
++/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
++ *
++ * Copyright (C) 2019 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 this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
++ *
++ */
+ #ifndef LANGUAGEFRAME_H
+ #define LANGUAGEFRAME_H
+ 
+@@ -21,6 +40,8 @@ public:
+ 
+ private:
+     void mousePressEvent(QMouseEvent *e);
++    void editInputMethodSlot();
++    QString getInputMethodSetCmd();
+ 
+ private:
+     QLabel *nameLabel         = nullptr;
+diff --git a/registeredSession/plugins/about/aboutinterface.cpp b/registeredSession/plugins/about/aboutinterface.cpp
+index a7d9f52..9a24c5e 100644
+--- a/registeredSession/plugins/about/aboutinterface.cpp
++++ b/registeredSession/plugins/about/aboutinterface.cpp
+@@ -294,12 +294,18 @@ QString AboutInterface::getUpgradeDate()
+ 
+ QString AboutInterface::getNtpTime()
+ {
++    int count = 0;
+     for (QString host : mNtphostNameList) {
+         ipList.clear();
+         ntpGethostbyname(host.toLatin1().data());
+         for (QString ip : ipList) {
+-            char *host = ip.toLatin1().data();
+-            char *result = ntpdate(host);
++            ++count;
++            qDebug() << Q_FUNC_INFO << host << "---->" << ip << ":" << count;
++            if (count >= 5) {
++                return "";
++            }
++            char *mIp = ip.toLatin1().data();
++            char *result = ntpdate(mIp);
+             if (result != NULL) {
+                 return QString(result);
+             }
+@@ -401,7 +407,7 @@ char *AboutInterface::ntpdate(char *hostname)
+     // 设置超时
+     struct timeval timeout;
+     timeout.tv_sec = 0;
+-    timeout.tv_usec = 300000;//微秒
++    timeout.tv_usec = 280000;//微秒
+     if (setsockopt(s, SOL_SOCKET, SO_RCVTIMEO_NEW, &timeout, sizeof(timeout)) == -1) {
+         perror("setsockopt failed:");
+         return NULL;
+diff --git a/shell/mainwindow.cpp b/shell/mainwindow.cpp
+index 8579bc5..aeebab3 100644
+--- a/shell/mainwindow.cpp
++++ b/shell/mainwindow.cpp
+@@ -587,7 +587,6 @@ void MainWindow::initUkccAbout() {
+     connect(ukccExit, SIGNAL(triggered()), this, SLOT(close()));
+ 
+     connect(ukccAbout, &QAction::triggered, this, [=] {
+-        kdk::WindowManager::setSkipTaskBar(windowHandle(), true);
+         KAboutDialog *ukcc = new KAboutDialog(this);
+         ukcc->setAppIcon(QIcon::fromTheme("ukui-control-center"));
+         ukcc->setAppName(tr("Settings"));
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0112-fix-theme.patch ukui-control-center-4.10.0.0/debian/patches/0112-fix-theme.patch
--- ukui-control-center-4.10.0.0/debian/patches/0112-fix-theme.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0112-fix-theme.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,34 @@
+From: hesisheng <hesisheng@kylin.com>
+Date: Sat, 4 Jan 2025 12:25:35 +0800
+Subject: fix: theme
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+Description: 289673 拖动透明度滑动条不流畅,存在延迟
+
+Log: 289673 拖动透明度滑动条不流畅,存在延迟
+Signed-off-by: zhoubin <zhoubin@kylinos.cn>
+---
+ plugins/personalized/theme/theme.cpp | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/personalized/theme/theme.cpp b/plugins/personalized/theme/theme.cpp
+index 7c2ecfe..6fa7023 100644
+--- a/plugins/personalized/theme/theme.cpp
++++ b/plugins/personalized/theme/theme.cpp
+@@ -748,9 +748,12 @@ void Theme::initConnection()
+ 
+     connect(mTranWidget->slider(), &KSlider::valueChanged, this, [=](int value) {
+         changeTranpancySlot(value);
+-        revokeGlobalThemeSlot("getTransparencyBlur", QString::number(value, 10));
++    });
++
++    connect(mTranWidget->slider(), &KSlider::sliderReleased, this, [=]() {
++        revokeGlobalThemeSlot("getTransparencyBlur", QString::number(mTranWidget->slider()->value(), 10));
+         revokeGlobalThemeSlot("getSupportTransparency", "true");
+-        UkccCommon::buriedSettings(name(), "set transparency", QString("select"), QString::number(value));
++        UkccCommon::buriedSettings(name(), "set transparency", QString("select"), QString::number(mTranWidget->slider()->value()));
+     });
+ 
+     connect(mCornerWidget, &ComboxWidget::currentIndexChanged, this, [=](int index) {
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0113-fix-theme.patch ukui-control-center-4.10.0.0/debian/patches/0113-fix-theme.patch
--- ukui-control-center-4.10.0.0/debian/patches/0113-fix-theme.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0113-fix-theme.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,33 @@
+From: zhoubin <zhoubin@kylinos.cn>
+Date: Sat, 4 Jan 2025 16:57:28 +0800
+Subject: fix: theme
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+    Description: 289673 拖动透明度滑动条不流畅,存在延迟
+
+    Log: 289673 拖动透明度滑动条不流畅,存在延迟
+---
+ plugins/personalized/theme/theme.cpp | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/plugins/personalized/theme/theme.cpp b/plugins/personalized/theme/theme.cpp
+index 6fa7023..31dcc63 100644
+--- a/plugins/personalized/theme/theme.cpp
++++ b/plugins/personalized/theme/theme.cpp
+@@ -1363,9 +1363,11 @@ void Theme::changeEffectBtnSlot(bool checked)
+ 
+ void Theme::changeTranpancySlot(int value)
+ {
+-    personliseGsettings->set(PERSONALSIE_TRAN_KEY,(static_cast<int>(value) / 100.0));
+-    qtSettings->set(THEME_TRAN_KEY, value);
+-    qtSettings->set(PEONY_TRAN_KEY, value);
++    if (value % 5 == 0) {
++        personliseGsettings->set(PERSONALSIE_TRAN_KEY,(static_cast<int>(value) / 100.0));
++        qtSettings->set(THEME_TRAN_KEY, value);
++        qtSettings->set(PEONY_TRAN_KEY, value);
++    }
+ }
+ 
+ void Theme::changeTranpancySliderSlot(int value)
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0114-127-bug.patch ukui-control-center-4.10.0.0/debian/patches/0114-127-bug.patch
--- ukui-control-center-4.10.0.0/debian/patches/0114-127-bug.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0114-127-bug.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,161 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Tue, 7 Jan 2025 03:05:40 +0000
+Subject: =?utf-8?b?ITEyNyDkv67lpI1idWcgTWVyZ2UgcHVsbCByZXF1ZXN0ICExMjcgZnJv?=
+ =?utf-8?b?bSDkvZXmgJ3og5wvbmlsZQ==?=
+
+---
+ plugins/account/userinfo/changeuserlogo.cpp     | 2 ++
+ plugins/account/userinfo/changeusernickname.cpp | 2 ++
+ plugins/account/userinfo/changeuserpwd.cpp      | 2 ++
+ plugins/account/userinfo/creategroupdialog.cpp  | 2 ++
+ plugins/account/userinfo/createusernew.cpp      | 2 ++
+ plugins/account/userinfo/userinfo.cpp           | 2 --
+ plugins/devices/keyboard/keyboardmain.cpp       | 2 +-
+ plugins/devices/keyboard/keyboardui.cpp         | 6 ++++++
+ plugins/devices/keyboard/keyboardui.h           | 3 ++-
+ 9 files changed, 19 insertions(+), 4 deletions(-)
+
+diff --git a/plugins/account/userinfo/changeuserlogo.cpp b/plugins/account/userinfo/changeuserlogo.cpp
+index 1982be1..85d09b5 100644
+--- a/plugins/account/userinfo/changeuserlogo.cpp
++++ b/plugins/account/userinfo/changeuserlogo.cpp
+@@ -157,9 +157,11 @@ void ChangeUserLogo::initUI()
+     culCancelBtn = new QPushButton;
+     culCancelBtn->setText(tr("Cancel"));
+     culCancelBtn->setFocusPolicy(Qt::NoFocus);
++    culCancelBtn->setProperty("useButtonPalette", true);
+     culConfirmBtn = new QPushButton;
+     culConfirmBtn->setText(tr("Confirm"));
+     culConfirmBtn->setFocusPolicy(Qt::NoFocus);
++    culConfirmBtn->setProperty("isImportant", true);
+ 
+     culBottomBtnsHorLayout = new QHBoxLayout;
+     culBottomBtnsHorLayout->setSpacing(16);
+diff --git a/plugins/account/userinfo/changeusernickname.cpp b/plugins/account/userinfo/changeusernickname.cpp
+index d7d401a..6e8a97d 100644
+--- a/plugins/account/userinfo/changeusernickname.cpp
++++ b/plugins/account/userinfo/changeusernickname.cpp
+@@ -111,9 +111,11 @@ void ChangeUserNickname::initUI(){
+     cancelBtn = new QPushButton();
+     cancelBtn->setMinimumWidth(96);
+     cancelBtn->setText(tr("Cancel"));
++    cancelBtn->setProperty("useButtonPalette", true);
+     confirmBtn = new QPushButton();
+     confirmBtn->setMinimumWidth(96);
+     confirmBtn->setText(tr("Confirm"));
++    confirmBtn->setProperty("isImportant", true);
+ 
+     bottomBtnsHorLayout = new QHBoxLayout;
+     bottomBtnsHorLayout->setSpacing(16);
+diff --git a/plugins/account/userinfo/changeuserpwd.cpp b/plugins/account/userinfo/changeuserpwd.cpp
+index 2c4b97b..f56662e 100644
+--- a/plugins/account/userinfo/changeuserpwd.cpp
++++ b/plugins/account/userinfo/changeuserpwd.cpp
+@@ -215,10 +215,12 @@ void ChangeUserPwd::initUI(){
+     cancelBtn->setMinimumWidth(96);
+     cancelBtn->setText(tr("Cancel"));
+     cancelBtn->setFocusPolicy(Qt::FocusPolicy::NoFocus);
++    cancelBtn->setProperty("useButtonPalette", true);
+     confirmBtn = new QPushButton();
+     confirmBtn->setMinimumWidth(96);
+     confirmBtn->setText(tr("Confirm"));
+     confirmBtn->setFocusPolicy(Qt::FocusPolicy::NoFocus);
++    confirmBtn->setProperty("isImportant", true);
+ 
+     bottomBtnsHorLayout = new QHBoxLayout;
+     bottomBtnsHorLayout->setSpacing(16);
+diff --git a/plugins/account/userinfo/creategroupdialog.cpp b/plugins/account/userinfo/creategroupdialog.cpp
+index bf896fd..6586c57 100644
+--- a/plugins/account/userinfo/creategroupdialog.cpp
++++ b/plugins/account/userinfo/creategroupdialog.cpp
+@@ -89,8 +89,10 @@ void CreateGroupDialog::initUI()
+     mCancelBtn = new QPushButton(tr("Cancel"), this);
+     mCancelBtn->setFixedSize(96, 36);
+     mCancelBtn->setFocusPolicy(Qt::FocusPolicy::NoFocus);
++    mCancelBtn->setProperty("useButtonPalette", true);
+     mConfirmBtn = new QPushButton(tr("Confirm"), this);
+     mConfirmBtn->setMinimumSize(96, 36);
++    mConfirmBtn->setProperty("isImportant", true);
+ 
+     mConfirmHLaout = new QHBoxLayout(this);
+     mConfirmHLaout->setContentsMargins(0,0,0,0);
+diff --git a/plugins/account/userinfo/createusernew.cpp b/plugins/account/userinfo/createusernew.cpp
+index 4df7fdd..dff09ca 100644
+--- a/plugins/account/userinfo/createusernew.cpp
++++ b/plugins/account/userinfo/createusernew.cpp
+@@ -274,9 +274,11 @@ void CreateUserNew::initUI(){
+     cancelBtn = new QPushButton;
+     cancelBtn->setFocusPolicy(Qt::FocusPolicy::NoFocus);
+     cancelBtn->setText(tr("Cancel"));
++    cancelBtn->setProperty("useButtonPalette", true);
+     confirmBtn = new QPushButton;
+     confirmBtn->setFocusPolicy(Qt::FocusPolicy::NoFocus);
+     confirmBtn->setText(tr("Confirm"));
++    confirmBtn->setProperty("isImportant", true);
+ 
+     bottomHorLayout = new QHBoxLayout;
+     bottomHorLayout->setSpacing(16);
+diff --git a/plugins/account/userinfo/userinfo.cpp b/plugins/account/userinfo/userinfo.cpp
+index b568abc..10ff4c3 100644
+--- a/plugins/account/userinfo/userinfo.cpp
++++ b/plugins/account/userinfo/userinfo.cpp
+@@ -524,8 +524,6 @@ void UserInfo::showCreateUserNewDialog(){
+     QMap<QString, UserInfomation>::iterator it = allUserInfoMap.begin();
+     for (; it != allUserInfoMap.end(); it++){
+         UserInfomation user = it.value();
+-
+-        usersStringList.append(user.username);
+         usersStringList.append(user.realname);
+     }
+ 
+diff --git a/plugins/devices/keyboard/keyboardmain.cpp b/plugins/devices/keyboard/keyboardmain.cpp
+index 08888f0..a3db782 100644
+--- a/plugins/devices/keyboard/keyboardmain.cpp
++++ b/plugins/devices/keyboard/keyboardmain.cpp
+@@ -185,7 +185,7 @@ void KeyboardMain::initInputMethodSet()
+ {
+     qDebug() << "input method seting cmd = " << getInputMethodSetCmd();
+     if (getInputMethodSetCmd().isEmpty()) {
+-        keyBoardWidget->inputMethodPushButton()->setVisible(false);
++        keyBoardWidget->setInputMethodVisible(false);
+     }
+ }
+ 
+diff --git a/plugins/devices/keyboard/keyboardui.cpp b/plugins/devices/keyboard/keyboardui.cpp
+index 81d80f2..b40def6 100644
+--- a/plugins/devices/keyboard/keyboardui.cpp
++++ b/plugins/devices/keyboard/keyboardui.cpp
+@@ -16,6 +16,12 @@ KeyboardUi::~KeyboardUi()
+ 
+ }
+ 
++void KeyboardUi::setInputMethodVisible(bool isVisible)
++{
++    mInputTitleLabel->setVisible(isVisible);
++    mInputMethodSetFrame->setVisible(isVisible);
++}
++
+ void KeyboardUi::initUI()
+ {
+     mKeyboardFrame = new SettingGroup(this);
+diff --git a/plugins/devices/keyboard/keyboardui.h b/plugins/devices/keyboard/keyboardui.h
+index fec0d13..a560105 100644
+--- a/plugins/devices/keyboard/keyboardui.h
++++ b/plugins/devices/keyboard/keyboardui.h
+@@ -90,6 +90,8 @@ public:
+         return mSoundEfectsFrame;
+     }
+ 
++    void setInputMethodVisible(bool isVisible);
++
+ private:
+     QVBoxLayout *mVlayout = nullptr;
+ 
+@@ -128,7 +130,6 @@ private:
+     void setTextSizeFrame();
+     void setAnimationFrame();
+     void setSoundEfectsFrame();
+-
+ };
+ 
+ #endif // KEYBOARDUI_H
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0115-131-290807.patch ukui-control-center-4.10.0.0/debian/patches/0115-131-290807.patch
--- ukui-control-center-4.10.0.0/debian/patches/0115-131-290807.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0115-131-290807.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,869 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Tue, 7 Jan 2025 04:21:52 +0000
+Subject: =?utf-8?b?ITEzMSAyOTA4MDcg44CQ5pi+56S65Zmo44CR5o6l5YWl56ys5LqM5Liq?=
+ =?utf-8?b?5bGP5bmV77yM5o6n5Yi26Z2i5p2/6Zeq6YCAIE1lcmdlIHB1bGwgcmVxdWVzdCAh?=
+ =?utf-8?b?MTMxIGZyb20g6IuP5Zej5YW4L29wZW5reWxpbi9uaWxlLTExMDc=?=
+
+---
+ plugins/system/display/controlpanel.cpp            |   9 +-
+ plugins/system/display/controlpanel.h              |   1 +
+ registeredSession/area/areainterface.cpp           | 268 -------------------
+ registeredSession/area/areainterface.h             | 111 --------
+ registeredSession/main.cpp                         |   2 -
+ .../plugins/notice/noticeinterface.cpp             | 288 ---------------------
+ registeredSession/plugins/notice/noticeinterface.h |  78 ------
+ registeredSession/registeredSession.pro            |   2 -
+ 8 files changed, 9 insertions(+), 750 deletions(-)
+ delete mode 100644 registeredSession/area/areainterface.cpp
+ delete mode 100644 registeredSession/area/areainterface.h
+ delete mode 100644 registeredSession/plugins/notice/noticeinterface.cpp
+ delete mode 100644 registeredSession/plugins/notice/noticeinterface.h
+
+diff --git a/plugins/system/display/controlpanel.cpp b/plugins/system/display/controlpanel.cpp
+index f05af12..4b78408 100644
+--- a/plugins/system/display/controlpanel.cpp
++++ b/plugins/system/display/controlpanel.cpp
+@@ -41,7 +41,7 @@ void ControlPanel::setConfig(const KScreen::ConfigPtr &config)
+     mConfig = config;
+     connect(mConfig.data(), &KScreen::Config::outputAdded,
+             this, [=](const KScreen::OutputPtr &output) {
+-        addOutput(output, false);
++        addOutputSlot(output);
+     });
+     connect(mConfig.data(), &KScreen::Config::outputRemoved,
+             this, &ControlPanel::removeOutput);
+@@ -51,6 +51,13 @@ void ControlPanel::setConfig(const KScreen::ConfigPtr &config)
+     }
+ }
+ 
++void ControlPanel::addOutputSlot(const KScreen::OutputPtr &output) {
++    qDebug() << Q_FUNC_INFO << "wait 100ms for addOutput";
++    QTimer::singleShot(100, this, [=]() {
++        addOutput(output, false);
++    });
++}
++
+ void ControlPanel::addOutput(const KScreen::OutputPtr &output, bool connectChanged)
+ {
+     if (!connectChanged) {
+diff --git a/plugins/system/display/controlpanel.h b/plugins/system/display/controlpanel.h
+index 345c131..6386531 100644
+--- a/plugins/system/display/controlpanel.h
++++ b/plugins/system/display/controlpanel.h
+@@ -33,6 +33,7 @@ public:
+ 
+ private:
+     void isWayland();
++    void addOutputSlot(const KScreen::OutputPtr &output);
+ 
+ public Q_SLOTS:
+     void activateOutput(const KScreen::OutputPtr &output);
+diff --git a/registeredSession/area/areainterface.cpp b/registeredSession/area/areainterface.cpp
+deleted file mode 100644
+index 20518d2..0000000
+--- a/registeredSession/area/areainterface.cpp
++++ /dev/null
+@@ -1,268 +0,0 @@
+-#include "areainterface.h"
+-#include <unistd.h>
+-#include <QDBusConnection>
+-
+-AreaInterface::AreaInterface()
+-{
+-    ukccPanelGsettings = UniversalInterface::self()->ukccPanelGsettings();
+-    accountInterface   = UniversalInterface::self()->accountUserDbus();
+-    fcitxInterface     = UniversalInterface::self()->fcitxInputMethodDbus();
+-    styleGsettings     = UniversalInterface::self()->ukuiStyleGsettings();
+-    connect(ukccPanelGsettings, &QGSettings::changed, this, [=](QString key) {
+-        if (key == CALENDAR_KEY) {
+-            mCalendar.clear();
+-            getCalendar();
+-            Q_EMIT changed("calendar");
+-        } else if (key == FIRST_DAY_KEY) {
+-            mFirstDay.clear();
+-            getFirstDay();
+-            Q_EMIT changed("firstDay");
+-        } else if (key == DATE_FORMATE_KEY) {
+-            mDateFormat.clear();
+-            getDateFormat();
+-            Q_EMIT changed("dateFormat");
+-        } else if (key == TIME_FORMAT_KEY) {
+-            mTimeFormat.clear();
+-            getTimeFormat();
+-            Q_EMIT changed("timeFormat");
+-        } else if (key == SHOW_LANGUAGE_KEY) {
+-            mShowLanguageList.clear();
+-            getShowLanguageList();
+-            Q_EMIT changed("showLanguageList");
+-        }
+-    });
+-
+-    connect(styleGsettings, &QGSettings::changed, this, [=](QString key) {
+-        if (key == "iconThemeName") {
+-            Q_EMIT changed("iconThemeName");
+-        }
+-    });
+-}
+-
+-AreaInterface::~AreaInterface()
+-{
+-
+-}
+-
+-const QString AreaInterface::gsettingGet(const QString &key) const
+-{
+-    if (ukccPanelGsettings->keys().contains(key)) {
+-        return ukccPanelGsettings->get(key).toString();
+-    } else {
+-        return "";
+-    }
+-}
+-
+-void AreaInterface::gsettingSet(const QString &key, const QString &value)
+-{
+-    if (ukccPanelGsettings->keys().contains(key)) {
+-        ukccPanelGsettings->set(key, value);
+-    }
+-}
+-
+-const QStringList AreaInterface::getFormatCountryList()
+-{
+-    if (mFormatCountryList.isEmpty()) {
+-        mFormatCountryList.append(QString("en_US.UTF-8"));
+-        mFormatCountryList.append(QString("zh_CN.UTF-8"));
+-        mFormatCountryList.append(QString("bo_CN.UTF-8"));
+-    }
+-    return mFormatCountryList;
+-}
+-
+-const QStringList AreaInterface::getCalendarList()
+-{
+-    if (mCalendarList.isEmpty()) {
+-        mCalendarList.append(QString("solarlunar"));
+-        QString locale = QLocale::system().name();
+-        if ("zh_CN" == locale) {
+-            mCalendarList.append(QString("lunar"));
+-        }
+-    }
+-    return mCalendarList;
+-}
+-
+-const QStringList AreaInterface::getFirstDayList()
+-{
+-    if (mFirstDayList.isEmpty()) {
+-        mFirstDayList.append("monday");
+-        mFirstDayList.append("sunday");
+-    }
+-    return mFirstDayList;
+-}
+-
+-const QStringList AreaInterface::getDateFormatList()
+-{
+-    if (mDateFormatList.isEmpty()) {
+-        mDateFormatList.append("cn");
+-        mDateFormatList.append("en");
+-    }
+-    return mDateFormatList;
+-}
+-
+-const QStringList AreaInterface::getTimeFormatList()
+-{
+-    if (mtimeFormatList.isEmpty()) {
+-        mtimeFormatList.append("12");
+-        mtimeFormatList.append("24");
+-    }
+-    return mtimeFormatList;
+-}
+-
+-const QStringList AreaInterface::getShowLanguageList()
+-{
+-    if (mShowLanguageList.isEmpty()) {
+-        if (ukccPanelGsettings->keys().contains(SHOW_LANGUAGE_KEY)) {
+-            mShowLanguageList = ukccPanelGsettings->get(SHOW_LANGUAGE_KEY).toStringList();
+-        } else {
+-            qCritical() << "get SHOW_LANGUAGE_KEY error.";
+-        }
+-    }
+-    return mShowLanguageList;
+-}
+-
+-const QStringList AreaInterface::getLanguageList()
+-{
+-    if (mLanguageList.isEmpty()) {
+-        mLanguageList.append("zh_CN");
+-        mLanguageList.append("en");
+-        mLanguageList.append("bo_CN");
+-    }
+-    return mLanguageList;
+-}
+-
+-const QString AreaInterface::getFormatCountry()
+-{
+-    if (mFormatCountry.isEmpty()) {
+-        mFormatCountry = accountInterface->property("FormatsLocale").toString();
+-    }
+-    return mFormatCountry;
+-}
+-
+-const QString AreaInterface::getCalendar()
+-{
+-    if (mCalendar.isEmpty()) {
+-        mCalendar = gsettingGet(CALENDAR_KEY);
+-    }
+-    return mCalendar;
+-}
+-
+-const QString AreaInterface::getFirstDay()
+-{
+-    if (mFirstDay.isEmpty()) {
+-        mFirstDay = gsettingGet(FIRST_DAY_KEY);
+-    }
+-    return mFirstDay;
+-}
+-
+-const QString AreaInterface::getDateFormat()
+-{
+-    if (mDateFormat.isEmpty()) {
+-        mDateFormat = gsettingGet(DATE_FORMATE_KEY);
+-    }
+-    return mDateFormat;
+-}
+-
+-const QString AreaInterface::getTimeFormat()
+-{
+-    if (mTimeFormat.isEmpty()) {
+-        mTimeFormat = gsettingGet(TIME_FORMAT_KEY);
+-    }
+-    return mTimeFormat;
+-}
+-
+-const QString AreaInterface::getLanguage()
+-{
+-    mLanguage = accountInterface->property("Language").toString();
+-    return mLanguage;
+-}
+-
+-void AreaInterface::setFormatCountry(const QString &formatCountry)
+-{
+-    mFormatCountry = formatCountry;
+-    accountInterface->call("SetFormatsLocale", formatCountry);
+-    Q_EMIT changed("formatCountry");
+-}
+-
+-void AreaInterface::setCalendar(const QString &calendar)
+-{
+-    gsettingSet(CALENDAR_KEY, calendar);
+-}
+-
+-void AreaInterface::setFirstDay(const QString &firstDay)
+-{
+-    gsettingSet(FIRST_DAY_KEY, firstDay);
+-}
+-
+-void AreaInterface::setDateFormat(const QString &dateFormat)
+-{
+-    gsettingSet(DATE_FORMATE_KEY, dateFormat);
+-}
+-
+-void AreaInterface::setTimeFormat(const QString &timeFormat)
+-{
+-    gsettingSet(TIME_FORMAT_KEY, timeFormat);
+-}
+-
+-void AreaInterface::setShowLanguageList(const QStringList &languageList)
+-{
+-    if (ukccPanelGsettings->keys().contains(SHOW_LANGUAGE_KEY)) {
+-        ukccPanelGsettings->set(SHOW_LANGUAGE_KEY, languageList);
+-    } else {
+-        qCritical() << "set SHOW_LANGUAGE_KEY error:" << languageList;
+-    }
+-}
+-
+-void AreaInterface::setLanguage(const QString &languageCode)
+-{
+-    accountInterface->call("SetLanguage", languageCode);
+-    Q_EMIT changed("language");
+-}
+-
+-void AreaInterface::reloadInputMethodConfig()
+-{
+-    fcitxInterface->call("ReloadConfig");
+-}
+-
+-void AreaInterface::changeInputMethod(const QString &inputMethod, const bool &add)
+-{
+-    QString fileTextString;
+-    QFile configFile(FCITX_CONFIG_FILE);
+-    if (configFile.open(QIODevice::ReadWrite | QIODevice::Text)) {
+-        //把文件所有信息读出来
+-        QTextStream stream(&configFile);
+-        fileTextString = stream.readAll();
+-
+-        if (!fileTextString.contains(inputMethod)) {
+-            return ;
+-        }
+-        QString addString    = inputMethod  + ":True";
+-        QString removeString =  inputMethod + ":False";
+-        if (add) {
+-            fileTextString.replace(removeString, addString);
+-        } else {
+-            fileTextString.replace(addString, removeString);
+-        }
+-        stream << fileTextString;
+-        configFile.close();
+-        reloadInputMethodConfig();
+-    }
+-}
+-
+-bool AreaInterface::isAddedInputMethod(const QString &inputMethod)
+-{
+-    QString fileTextString;
+-    QFile mFile(FCITX_CONFIG_FILE);
+-    if (mFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
+-        QTextStream stream(&mFile);
+-        fileTextString = stream.readAll();
+-        QString string = inputMethod  + ":True";
+-        if (fileTextString.contains(string)) {
+-           return true;
+-        } else {
+-            return false;
+-        }
+-    }
+-    qCritical()<<"open "<<FCITX_CONFIG_FILE<<" error.";
+-    return false;
+-}
+diff --git a/registeredSession/area/areainterface.h b/registeredSession/area/areainterface.h
+deleted file mode 100644
+index e586bea..0000000
+--- a/registeredSession/area/areainterface.h
++++ /dev/null
+@@ -1,111 +0,0 @@
+-#ifndef AREAINTERFACE_H
+-#define AREAINTERFACE_H
+-
+-#include <QObject>
+-#include <QtDBus>
+-#include "../universalinterface.h"
+-
+-class AreaInterface : public QObject
+-{
+-    Q_OBJECT
+-    Q_CLASSINFO("D-Bus Interface", "org.ukui.ukcc.session.Area")
+-    Q_PROPERTY(QStringList formatCountryList READ getFormatCountryList)
+-    Q_PROPERTY(QStringList calendarList READ getCalendarList)
+-    Q_PROPERTY(QStringList firstDayList READ getFirstDayList)
+-    Q_PROPERTY(QStringList dateFormatList READ getDateFormatList)
+-    Q_PROPERTY(QStringList timeFormatList READ getTimeFormatList)
+-    Q_PROPERTY(QStringList languageList READ getLanguageList)
+-    Q_PROPERTY(QStringList showLanguageList READ getShowLanguageList)
+-    Q_PROPERTY(QString formatCountry READ getFormatCountry)
+-    Q_PROPERTY(QString calendar READ getCalendar)
+-    Q_PROPERTY(QString firstDay READ getFirstDay)
+-    Q_PROPERTY(QString dateFormat READ getDateFormat)
+-    Q_PROPERTY(QString timeFormat READ getTimeFormat)
+-    Q_PROPERTY(QString language READ getLanguage)
+-
+-public:
+-     AreaInterface();
+-    ~AreaInterface();
+-
+-protected:
+-    // 对属性的访问函数
+-    const QStringList getFormatCountryList();
+-    const QStringList getCalendarList();
+-    const QStringList getFirstDayList();
+-    const QStringList getDateFormatList();
+-    const QStringList getTimeFormatList();
+-    const QStringList getLanguageList();
+-    const QStringList getShowLanguageList();
+-    const QString getFormatCountry();
+-    const QString getCalendar();
+-    const QString getFirstDay();
+-    const QString getDateFormat();
+-    const QString getTimeFormat();
+-    const QString getLanguage();
+-
+-public Q_SLOTS:
+-    /**
+-     * @brief 修改输入法
+-     *
+-     * @param inputMethodName 输入法名称
+-     * @param add 添加/移除
+-     */
+-    void changeInputMethod(const QString &inputMethod, const bool &add);
+-
+-    /**
+-     * @brief 查询输入法是否已经添加
+-     *
+-     * @param inputMethodName 输入法名称
+-     * @return bool 返回输入法是否已经添加
+-     */
+-    bool isAddedInputMethod(const QString &inputMethod);
+-
+-    // 对属性的设置函数
+-    void setFormatCountry(const QString &formatCountry);
+-    void setCalendar(const QString &calendar);
+-    void setFirstDay(const QString &firstDay);
+-    void setDateFormat(const QString &dateFormat);
+-    void setTimeFormat(const QString &timeFormat);
+-    void setShowLanguageList(const QStringList &languageList);
+-    void setLanguage(const QString &languageCode);
+-
+-Q_SIGNALS:
+-    void changed(QString keyName);
+-
+-private:
+-    void reloadInputMethodConfig();
+-
+-    // 设置和获取gsetting的string类型的键值
+-    const QString gsettingGet(const QString &key) const;
+-    void gsettingSet(const QString &key, const QString &value);
+-
+-private:
+-    const QString SHOW_LANGUAGE_KEY = QString("showlanguage");
+-    const QString FCITX_CONFIG_FILE = QDir::homePath() + "/.config/fcitx/profile";
+-    const QString CALENDAR_KEY      = QString("calendar");
+-    const QString FIRST_DAY_KEY     = QString("firstday");
+-    const QString DATE_FORMATE_KEY  = QString("date");
+-    const QString TIME_FORMAT_KEY   = QString("hoursystem");
+-
+-private:
+-    QGSettings     *ukccPanelGsettings = nullptr;
+-    QDBusInterface *accountInterface   = nullptr;
+-    QDBusInterface *fcitxInterface     = nullptr;
+-    QGSettings     *styleGsettings     = nullptr;
+-private:
+-    QStringList mFormatCountryList = {};
+-    QStringList mCalendarList      = {};
+-    QStringList mFirstDayList      = {};
+-    QStringList mDateFormatList    = {};
+-    QStringList mtimeFormatList    = {};
+-    QStringList mShowLanguageList  = {};
+-    QStringList mLanguageList      = {};
+-    QString     mLanguage          = "";
+-    QString     mFormatCountry     = "";
+-    QString     mCalendar          = "";
+-    QString     mFirstDay          = "";
+-    QString     mDateFormat        = "";
+-    QString     mTimeFormat        = "";
+-};
+-
+-#endif // AREAINTERFACE_H
+diff --git a/registeredSession/main.cpp b/registeredSession/main.cpp
+index e9a688c..b37e031 100644
+--- a/registeredSession/main.cpp
++++ b/registeredSession/main.cpp
+@@ -12,7 +12,6 @@
+ #include "plugins/area/areainterface.h"
+ #include "plugins/default/defaultinterface.h"
+ #include "plugins/autoboot/autostartinterface.h"
+-#include "plugins/notice/noticeinterface.h"
+ #include "plugins/about/aboutinterface.h"
+ #include "plugins/datetime/datetimeinterface.h"
+ #include "plugins/wallpaper/wallpaperinterface.h"
+@@ -61,7 +60,6 @@ int main(int argc, char *argv[])
+     plugins["/Mouse"] = new MouseInterface;
+     plugins["/Default"] = new DefaultInterface;
+     plugins["/Autoboot"] = new AutoStartInterface;
+-    plugins["/Notice"] = new NoticeInterface;
+     plugins["/About"] = new AboutInterface;
+     plugins["/Wallpaper"] = new WallpaperInterface;
+     plugins["/Screenlock"] = new ScreenlockInterface;
+diff --git a/registeredSession/plugins/notice/noticeinterface.cpp b/registeredSession/plugins/notice/noticeinterface.cpp
+deleted file mode 100644
+index d41e182..0000000
+--- a/registeredSession/plugins/notice/noticeinterface.cpp
++++ /dev/null
+@@ -1,288 +0,0 @@
+-#include "noticeinterface.h"
+-#include "../../universalinterface.h"
+-#include <QDebug>
+-#include <QStandardPaths>
+-#include <QSettings>
+-#include <KApplicationTrader>
+-#include <KService>
+-#include <KSharedConfig>
+-#include <KConfigGroup>
+-#include <QFileInfo>
+-
+-#define NOTICE_SCHEMA           "org.ukui.control-center.notice"
+-#define ENABLE_NOTICE_KEY       "enable-notice"
+-
+-#define NOTICE_ORIGIN_SCHEMA    "org.ukui.control-center.noticeorigin"
+-#define NOTICE_ORIGIN_PATH      "/org/ukui/control-center/noticeorigin/"
+-#define MAX_SHORTCUTS           1000
+-#define MESSAGES_KEY "messages"
+-#define VOICE_KEY  "voice"
+-#define SHOW_SCREENLOCK_KEY "show-on-screenlock"
+-#define SHOW_DETAIL_KEY "show-detail"
+-#define STYLE_KEY "notification-style"
+-
+-#define NOTIFICATION_DEMO_SCHEMA "org.ukui.notification.demo"
+-#define AUTOSTART_KEY "autostartdisturb"
+-#define PROJECTIONSCREEN_KEY "projectionscreendisturb"
+-#define FULLSCREEN_KEY "fullscreendisturb"
+-#define ALARMCLOCK_KEY "alarmclockdisturb"
+-#define TIMESTART_KEY "timestart"
+-#define TIMEEND_KEY "timeend"
+-
+-#define AUTOSTARTDIR      "/etc/xdg/autostart/"
+-
+-NoticeInterface::NoticeInterface()
+-{
+-    mUkccNoticeGsettings = UniversalInterface::self()->ukccNoticeGsettings();
+-    mUkuiNoticeGsettings = UniversalInterface::self()->ukuiNoticeGsettings();
+-    mStyleGsettings = UniversalInterface::self()->ukuiStyleGsettings();
+-
+-    mGsettingMap[ENABLE_NOTICE_KEY] = QString("enableNotice");
+-    mGsettingMap[SHOW_SCREENLOCK_KEY] = QString("showOnScreenlock");
+-    mGsettingMap[SHOW_DETAIL_KEY] = QString("showDetail");
+-    mGsettingMap[STYLE_KEY] = QString("notificationStyle");
+-
+-    mWhiteList.append("kylin-screenshot.desktop");
+-    mWhiteList.append("peony.desktop");
+-    mWhiteList.append("kylin-device-daemon.desktop");
+-    mWhiteList.append("ukui-power-manager.desktop");
+-    mWhiteList.append("kylin-system-update.desktop");
+-    mWhiteList.append("ukui-bluetooth.desktop");
+-
+-    if (mUkccNoticeGsettings)
+-        connect(mUkccNoticeGsettings, &QGSettings::changed, [=](const QString &key){
+-            emit changed(key);
+-        });
+-    if (mUkuiNoticeGsettings)
+-        connect(mUkuiNoticeGsettings, &QGSettings::changed, [=](const QString &key){
+-            emit changed(key);
+-        });
+-    if (mStyleGsettings)
+-        connect(mStyleGsettings, &QGSettings::changed, [=](const QString &key){
+-            emit changed(key);
+-        });
+-
+-
+-
+-}
+-
+-bool NoticeInterface::getAutostartDisturb()
+-{
+-    if (mUkuiNoticeGsettings->keys().contains(AUTOSTART_KEY)) {
+-        return mUkuiNoticeGsettings->get(AUTOSTART_KEY).toBool();
+-    } else {
+-        qCritical() << "ukuiNoticeGsettings not contains the key: " << AUTOSTART_KEY;
+-    }
+-    return false;
+-}
+-
+-bool NoticeInterface::getProjectionsScreenDisturb()
+-{
+-    if (mUkuiNoticeGsettings->keys().contains(PROJECTIONSCREEN_KEY)) {
+-        return mUkuiNoticeGsettings->get(PROJECTIONSCREEN_KEY).toBool();
+-    } else {
+-        qCritical() << "ukuiNoticeGsettings not contains the key: " << PROJECTIONSCREEN_KEY;
+-    }
+-    return false;
+-}
+-
+-bool NoticeInterface::getFullScreenDisturb()
+-{
+-    if (mUkuiNoticeGsettings->keys().contains(FULLSCREEN_KEY)) {
+-        return mUkuiNoticeGsettings->get(FULLSCREEN_KEY).toBool();
+-    } else {
+-        qCritical() << "ukuiNoticeGsettings not contains the key: " << FULLSCREEN_KEY;
+-    }
+-    return false;
+-}
+-
+-bool NoticeInterface::getAlarmClockDisturb()
+-{
+-    if (mUkuiNoticeGsettings->keys().contains(ALARMCLOCK_KEY)) {
+-        return mUkuiNoticeGsettings->get(ALARMCLOCK_KEY).toBool();
+-    } else {
+-        qCritical() << "ukuiNoticeGsettings not contains the key: " << ALARMCLOCK_KEY;
+-    }
+-    return false;
+-}
+-
+-QString NoticeInterface::getTimeStart()
+-{
+-    if (mUkuiNoticeGsettings->keys().contains(TIMESTART_KEY)) {
+-        return mUkuiNoticeGsettings->get(TIMESTART_KEY).toString();
+-    } else {
+-        qCritical() << "ukuiNoticeGsettings not contains the key: " << TIMESTART_KEY;
+-    }
+-    return QString();
+-}
+-
+-QString NoticeInterface::getTimeEnd()
+-{
+-    if (mUkuiNoticeGsettings->keys().contains(TIMEEND_KEY)) {
+-        return mUkuiNoticeGsettings->get(TIMEEND_KEY).toString();
+-    } else {
+-        qCritical() << "ukuiNoticeGsettings not contains the key: " << TIMEEND_KEY;
+-    }
+-    return QString();
+-}
+-
+-bool NoticeInterface::getNoticeEnable()
+-{
+-    if (mUkccNoticeGsettings->keys().contains(mGsettingMap[ENABLE_NOTICE_KEY])) {
+-        return mUkccNoticeGsettings->get(ENABLE_NOTICE_KEY).toBool();
+-    } else {
+-        qCritical() << "mUkccNoticeGsettings not contains the key: " << mUkccNoticeGsettings;
+-    }
+-    return false;
+-}
+-
+-QList <QVariant> NoticeInterface::getNoticeAppList()
+-{
+-    qDBusRegisterMetaType<NoticeApp>();
+-    QList <QVariant> list;
+-    for (QString desktopName : mWhiteList) {
+-        QFileInfo file(AUTOSTARTDIR + desktopName);
+-        if (file.exists()) {
+-            QString mainSection = QStringLiteral("Desktop Entry");
+-            KSharedConfig::Ptr sharedConfig = KSharedConfig::openConfig(AUTOSTARTDIR + desktopName, KConfig::NoGlobals);
+-            KConfigGroup cfg(sharedConfig, mainSection);
+-            QString name = cfg.readEntry("Name");
+-            QString icon = cfg.readEntry("Icon");
+-            QString fileName = desktopName.left(desktopName.indexOf(QLatin1Char('.')));
+-
+-            if (mApplist.contains(name))
+-                continue;
+-            mApplist.append(name);
+-            NoticeApp app;
+-            app.desktop = fileName;
+-            app.name = name;
+-            app.icon = icon;
+-            getAppInfo(app, fileName);
+-            list.append(QVariant::fromValue(app));
+-        }
+-    }
+-
+-    KApplicationTrader::query([=, &list](const KService::Ptr &service) {
+-        if (service->exec().isEmpty() || service->noDisplay())
+-            return false;
+-
+-        QString appname, desktopEntryName, icon;
+-        appname = service->name();
+-        desktopEntryName = service->desktopEntryName();
+-        icon = service->icon();
+-
+-        if (mApplist.contains(appname))
+-            return false;
+-
+-        mApplist.append(appname);
+-        NoticeApp app;
+-        app.desktop = desktopEntryName;
+-        app.name = appname;
+-        app.icon = icon;
+-        getAppInfo(app, desktopEntryName);
+-        list.append(QVariant::fromValue(app));
+-        return true;
+-    });
+-    mApplist.clear();
+-    return list;
+-}
+-
+-void NoticeInterface::getAppInfo(NoticeApp &app, const QString &desktop)
+-{
+-    const QByteArray id(NOTICE_ORIGIN_SCHEMA);
+-    QString path = QString("%1%2%3").arg(NOTICE_ORIGIN_PATH).arg(desktop).arg("/");
+-    QGSettings *settings = new QGSettings(id, path.toUtf8().data(), this);
+-
+-    app.status = settings->get(MESSAGES_KEY).toBool();
+-
+-    app.voice = settings->get(VOICE_KEY).toBool();
+-    app.detail = settings->get(SHOW_DETAIL_KEY).toBool();
+-    app.show = settings->get(SHOW_SCREENLOCK_KEY).toBool();
+-    QString style = settings->get(STYLE_KEY).toString();
+-    app.mode = 0;
+-    if (style == "mutative") {
+-        app.mode = 0;
+-    } else if (style == "always") {
+-        app.mode = 1;
+-    } else if (style == "none") {
+-        app.mode = 2;
+-    }
+-    mNoticeAppsMap[desktop] = settings;
+-}
+-
+-void NoticeInterface::setNoticeDisturb(const QString &key, bool value)
+-{
+-    if (mUkuiNoticeGsettings->keys().contains(key)) {
+-        return mUkuiNoticeGsettings->set(key, value);
+-    } else {
+-        qCritical() << "ukuiNoticeGsettings not contains the key: " << key;
+-    }
+-}
+-
+-void NoticeInterface::setNoticeDisturb(const QString &key, const QString &value)
+-{
+-    if (mUkuiNoticeGsettings->keys().contains(key)) {
+-        return mUkuiNoticeGsettings->set(key, value);
+-    } else {
+-        qCritical() << "ukuiNoticeGsettings not contains the key: " << key;
+-    }
+-}
+-
+-void NoticeInterface::setUkccNotice(const QString &key, bool value)
+-{
+-    if (mUkccNoticeGsettings->keys().contains(mGsettingMap[key]) || mUkccNoticeGsettings->keys().contains(key)) {
+-        return mUkccNoticeGsettings->set(key, value);
+-    } else {
+-        qCritical() << "mUkccNoticeGsettings not contains the key: " << key;
+-    }
+-}
+-
+-void NoticeInterface::setAppInfo(const QString &desktop, const QString &key, bool value)
+-{
+-    auto iter = mNoticeAppsMap.find(desktop);
+-    if (iter != mNoticeAppsMap.end()) {
+-        QGSettings *settings = iter.value();
+-        if (settings)
+-            settings->set(key, value);
+-    }
+-}
+-
+-void NoticeInterface::setAppInfo(const QString &desktop, const QString &key, const QString &value)
+-{
+-    auto iter = mNoticeAppsMap.find(desktop);
+-    if (iter != mNoticeAppsMap.end()) {
+-        QGSettings *settings = iter.value();
+-        if (settings)
+-            settings->set(key, value);
+-    }
+-}
+-
+-const QDBusArgument &operator<<(QDBusArgument &argument, const NoticeApp &app)
+-{
+-    argument.beginStructure();
+-    argument << app.desktop;
+-    argument << app.icon;
+-    argument << app.name;
+-    argument << app.status;
+-    argument << app.voice;
+-    argument << app.detail;
+-    argument << app.show;
+-    argument << app.mode;
+-    argument.endStructure();
+-    return argument;
+-}
+-
+-const QDBusArgument &operator>>(const QDBusArgument &argument, NoticeApp &app)
+-{
+-    argument.beginStructure();
+-    argument >> app.desktop;
+-    argument >> app.icon;
+-    argument >> app.name;
+-    argument >> app.status;
+-    argument >> app.voice;
+-    argument >> app.detail;
+-    argument >> app.show;
+-    argument >> app.mode;
+-    argument.endStructure();
+-    return argument;
+-}
+diff --git a/registeredSession/plugins/notice/noticeinterface.h b/registeredSession/plugins/notice/noticeinterface.h
+deleted file mode 100644
+index ee37bc8..0000000
+--- a/registeredSession/plugins/notice/noticeinterface.h
++++ /dev/null
+@@ -1,78 +0,0 @@
+-#ifndef NOTICEINTERFACE_H
+-#define NOTICEINTERFACE_H
+-
+-#include <QObject>
+-#include <QDBusArgument>
+-#include <QVariant>
+-#include <QDBusMetaType>
+-#include <QGSettings>
+-
+-struct NoticeApp
+-{
+-    QString desktop;
+-    QString name;
+-    QString icon;
+-    bool status;
+-    bool voice;
+-    bool detail;
+-    bool show;
+-    int mode;
+-};
+-const QDBusArgument &operator<<(QDBusArgument &argument, const NoticeApp &app);
+-const QDBusArgument &operator>>(const QDBusArgument &argument, NoticeApp &app);
+-Q_DECLARE_METATYPE(NoticeApp)
+-
+-
+-class NoticeInterface : public QObject
+-{
+-    Q_OBJECT
+-    Q_CLASSINFO("D-Bus Interface", "org.ukui.ukcc.session.Notice")
+-    Q_PROPERTY(bool isAutostartDisturb READ getAutostartDisturb)
+-    Q_PROPERTY(bool isProjectionScreenDisturb READ getProjectionsScreenDisturb)
+-    Q_PROPERTY(bool isFullScreenDisturb READ getFullScreenDisturb)
+-    Q_PROPERTY(bool isAlarmClockDisturb READ getAlarmClockDisturb)
+-    Q_PROPERTY(QString timeStart READ getTimeStart)
+-    Q_PROPERTY(QString timeEnd READ getTimeEnd)
+-    Q_PROPERTY(bool isEnable READ getNoticeEnable)
+-    Q_PROPERTY(QList <QVariant> noticeAppList READ getNoticeAppList)
+-//    Q_PROPERTY(int cursorSpeed READ getCursorSpeed)
+-public:
+-    NoticeInterface();
+-
+-protected:
+-    bool getAutostartDisturb();
+-    bool getProjectionsScreenDisturb();
+-    bool getFullScreenDisturb();
+-    bool getAlarmClockDisturb();
+-    QString getTimeStart();
+-    QString getTimeEnd();
+-
+-    bool getNoticeEnable();
+-    QList <QVariant> getNoticeAppList();
+-
+-private:
+-    void getAppInfo(NoticeApp &app,const QString &desktop);
+-
+-public Q_SLOTS:
+-    void setNoticeDisturb(const QString &key, bool value);
+-    void setNoticeDisturb(const QString &key, const QString &value);
+-    void setUkccNotice(const QString &key, bool value);
+-    void setAppInfo(const QString &desktop, const QString &key, bool value);
+-    void setAppInfo(const QString &desktop, const QString &key, const QString &value);
+-
+-private:
+-    QGSettings *mUkccNoticeGsettings = nullptr;
+-    QGSettings *mUkuiNoticeGsettings = nullptr;
+-    QGSettings *mStyleGsettings = nullptr;
+-
+-    QMap <QString, QString> mGsettingMap;
+-    QMap <QString, QGSettings *> mNoticeAppsMap;
+-
+-    QStringList mWhiteList;
+-    QStringList mApplist;
+-
+-Q_SIGNALS:
+-    void changed(const QString &key);
+-};
+-
+-#endif // NOTICEINTERFACE_H
+diff --git a/registeredSession/registeredSession.pro b/registeredSession/registeredSession.pro
+index 262acfe..ddb17e5 100644
+--- a/registeredSession/registeredSession.pro
++++ b/registeredSession/registeredSession.pro
+@@ -49,7 +49,6 @@ SOURCES += \
+         plugins/keyboard/keyboardinterface.cpp \
+         plugins/mouse/mouseinterface.cpp \
+         plugins/default/defaultinterface.cpp \
+-        plugins/notice/noticeinterface.cpp \
+         plugins/screenlock/screenlockinterface.cpp \
+         plugins/screensaver/screensaverinterface.cpp \
+         plugins/shortcut/getshortcutworker.cpp \
+@@ -76,7 +75,6 @@ HEADERS += \
+         plugins/keyboard/keyboardinterface.h \
+         plugins/mouse/mouseinterface.h \
+         plugins/default/defaultinterface.h \
+-        plugins/notice/noticeinterface.h \
+         plugins/screenlock/screenlockinterface.h \
+         plugins/screensaver/screensaverinterface.h \
+         plugins/shortcut/getshortcutworker.h \
Binary files /tmp/tmpsas0hm28/7TTzQryte8/ukui-control-center-4.10.0.0/debian/patches/0116-chore-md.patch and /tmp/tmpsas0hm28/jRJlZLkzbT/ukui-control-center-4.10.0.0/debian/patches/0116-chore-md.patch differ
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0117-133-v11-2501.patch ukui-control-center-4.10.0.0/debian/patches/0117-133-v11-2501.patch
--- ukui-control-center-4.10.0.0/debian/patches/0117-133-v11-2501.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0117-133-v11-2501.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,1042 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Wed, 8 Jan 2025 07:48:16 +0000
+Subject: =?utf-8?b?ITEzMyDjgJB2MTEtMjUwMeOAkeWNleWFg+a1i+ivlSDmjqfliLbpnaI=?=
+ =?utf-8?b?5p2/IE1lcmdlIHB1bGwgcmVxdWVzdCAhMTMzIGZyb20g5L2V5oCd6IOcL25pbGU=?=
+
+---
+ registeredSession/json.cpp              | 732 --------------------------------
+ registeredSession/json.h                | 265 ------------
+ registeredSession/registeredSession.pro |   2 -
+ 3 files changed, 999 deletions(-)
+ delete mode 100644 registeredSession/json.cpp
+ delete mode 100644 registeredSession/json.h
+
+diff --git a/registeredSession/json.cpp b/registeredSession/json.cpp
+deleted file mode 100644
+index 6f3c0de..0000000
+--- a/registeredSession/json.cpp
++++ /dev/null
+@@ -1,732 +0,0 @@
+-/**
+- * QtJson - A simple class for parsing JSON data into a QVariant hierarchies and vice-versa.
+- * Copyright (C) 2011  Eeli Reilin
+- *
+- * 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 <http://www.gnu.org/licenses/>.
+- */
+-
+-/**
+- * \file json.cpp
+- */
+-
+-#include <QDateTime>
+-#include <QStringList>
+-#include "json.h"
+-
+-namespace QtJson {
+-    static QString dateFormat, dateTimeFormat;
+-    static bool prettySerialize = false;
+-
+-    static QString sanitizeString(QString str);
+-    static QByteArray join(const QList<QByteArray> &list, const QByteArray &sep);
+-    static QVariant parseValue(const QString &json, int &index, bool &success);
+-    static QVariant parseObject(const QString &json, int &index, bool &success);
+-    static QVariant parseArray(const QString &json, int &index, bool &success);
+-    static QVariant parseString(const QString &json, int &index, bool &success);
+-    static QVariant parseNumber(const QString &json, int &index);
+-    static int lastIndexOfNumber(const QString &json, int index);
+-    static void eatWhitespace(const QString &json, int &index);
+-    static int lookAhead(const QString &json, int index);
+-    static int nextToken(const QString &json, int &index);
+-
+-    template<typename T>
+-    QByteArray serializeMap(const T &map, bool &success, int _level = 0) {
+-        QByteArray newline;
+-        QByteArray tabs;
+-        QByteArray tabsFields;
+-        if (prettySerialize && !map.isEmpty()) {
+-            newline = "\n";
+-            for (int l=1; l<_level; l++) {
+-                tabs += "    ";
+-            }
+-            tabsFields = tabs + "    ";
+-        }
+-
+-        QByteArray str = "{" + newline;
+-        QList<QByteArray> pairs;
+-        for (typename T::const_iterator it = map.begin(), itend = map.end(); it != itend; ++it) {
+-            bool otherSuccess = true;
+-            QByteArray serializedValue = serialize(it.value(), otherSuccess, _level);
+-            if (serializedValue.isNull()) {
+-                success = false;
+-                break;
+-            }
+-            pairs << tabsFields + sanitizeString(it.key()).toUtf8() + ":" + (prettySerialize ? " " : "") + serializedValue;
+-        }
+-
+-        str += join(pairs, "," + newline) + newline;
+-        str += tabs + "}";
+-        return str;
+-    }
+-
+-    void insert(QVariant &v, const QString &key, const QVariant &value);
+-    void append(QVariant &v, const QVariant &value);
+-
+-    template<typename T>
+-    void cloneMap(QVariant &json, const T &map) {
+-    for (typename T::const_iterator it = map.begin(), itend = map.end(); it != itend; ++it) {
+-        insert(json, it.key(), (*it));
+-    }
+-    }
+-
+-    template<typename T>
+-    void cloneList(QVariant &json, const T &list) {
+-    for (typename T::const_iterator it = list.begin(), itend = list.end(); it != itend; ++it) {
+-        append(json, (*it));
+-    }
+-    }
+-
+-    /**
+-     * parse
+-     */
+-    QVariant parse(const QString &json) {
+-        bool success = true;
+-        return parse(json, success);
+-    }
+-
+-    /**
+-     * parse
+-     */
+-    QVariant parse(const QString &json, bool &success) {
+-        success = true;
+-
+-        // Return an empty QVariant if the JSON data is either null or empty
+-        if (!json.isNull() || !json.isEmpty()) {
+-            QString data = json;
+-            // We'll start from index 0
+-            int index = 0;
+-
+-            // Parse the first value
+-            QVariant value = parseValue(data, index, success);
+-
+-            // Return the parsed value
+-            return value;
+-        } else {
+-            // Return the empty QVariant
+-            return QVariant();
+-        }
+-    }
+-
+-    /**
+-     * clone
+-     */
+-    QVariant clone(const QVariant &data) {
+-    QVariant v;
+-
+-    if (data.type() == QVariant::Map) {
+-        cloneMap(v, data.toMap());
+-    } else if (data.type() == QVariant::Hash) {
+-        cloneMap(v, data.toHash());
+-    } else if (data.type() == QVariant::List) {
+-        cloneList(v, data.toList());
+-    } else if (data.type() == QVariant::StringList) {
+-        cloneList(v, data.toStringList());
+-    } else {
+-        v = QVariant(data);
+-    }
+-
+-    return v;
+-    }
+-
+-    /**
+-     * insert value (map case)
+-     */
+-    void insert(QVariant &v, const QString &key, const QVariant &value) {
+-    if (!v.canConvert<QVariantMap>()) v = QVariantMap();
+-    QVariantMap *p = (QVariantMap *)v.data();
+-    p->insert(key, clone(value));
+-    }
+-
+-    /**
+-     * append value (list case)
+-     */
+-    void append(QVariant &v, const QVariant &value) {
+-    if (!v.canConvert<QVariantList>()) v = QVariantList();
+-    QVariantList *p = (QVariantList *)v.data();
+-    p->append(value);
+-    }
+-
+-    QByteArray serialize(const QVariant &data) {
+-        bool success = true;
+-        return serialize(data, success);
+-    }
+-
+-    QByteArray serialize(const QVariant &data, bool &success, int _level /*= 0*/) {
+-        QByteArray newline;
+-        QByteArray tabs;
+-        QByteArray tabsFields;
+-        if (prettySerialize) {
+-            newline = "\n";
+-            for (int l=0; l<_level; l++) {
+-                tabs += "    ";
+-            }
+-            tabsFields = tabs + "    ";
+-        }
+-
+-        QByteArray str;
+-        success = true;
+-
+-        if (!data.isValid()) { // invalid or null?
+-            str = "null";
+-        } else if ((data.type() == QVariant::List) ||
+-                   (data.type() == QVariant::StringList)) { // variant is a list?
+-            QList<QByteArray> values;
+-            const QVariantList list = data.toList();
+-            Q_FOREACH(const QVariant& v, list) {
+-                bool otherSuccess = true;
+-                QByteArray serializedValue = serialize(v, otherSuccess, _level+1);
+-                if (serializedValue.isNull()) {
+-                    success = false;
+-                    break;
+-                }
+-                values << tabsFields + serializedValue;
+-            }
+-
+-            if (!values.isEmpty()) {
+-                str = "[" + newline + join( values, "," + newline ) + newline + tabs + "]";
+-            } else {
+-                str = "[]";
+-            }
+-        } else if (data.type() == QVariant::Hash) { // variant is a hash?
+-            str = serializeMap<>(data.toHash(), success, _level+1);
+-        } else if (data.type() == QVariant::Map) { // variant is a map?
+-            str = serializeMap<>(data.toMap(), success, _level+1);
+-        } else if ((data.type() == QVariant::String) ||
+-                   (data.type() == QVariant::ByteArray)) {// a string or a byte array?
+-            str = sanitizeString(data.toString()).toUtf8();
+-        } else if (data.type() == QVariant::Double) { // double?
+-            double value = data.toDouble(&success);
+-            if (success) {
+-                str = QByteArray::number(value, 'g');
+-                if (!str.contains(".") && ! str.contains("e")) {
+-                    str += ".0";
+-                }
+-            }
+-        } else if (data.type() == QVariant::Bool) { // boolean value?
+-            str = data.toBool() ? "true" : "false";
+-        } else if (data.type() == QVariant::ULongLong) { // large unsigned number?
+-            str = QByteArray::number(data.value<qulonglong>());
+-        } else if (data.canConvert<qlonglong>()) { // any signed number?
+-            str = QByteArray::number(data.value<qlonglong>());
+-        } else if (data.canConvert<long>()) { //TODO: this code is never executed because all smaller types can be converted to qlonglong
+-            str = QString::number(data.value<long>()).toUtf8();
+-        } else if (data.type() == QVariant::DateTime) { // datetime value?
+-            str = sanitizeString(dateTimeFormat.isEmpty()
+-                                 ? data.toDateTime().toString()
+-                                 : data.toDateTime().toString(dateTimeFormat)).toUtf8();
+-        } else if (data.type() == QVariant::Date) { // date value?
+-            str = sanitizeString(dateTimeFormat.isEmpty()
+-                                 ? data.toDate().toString()
+-                                 : data.toDate().toString(dateFormat)).toUtf8();
+-        } else if (data.canConvert<QString>()) { // can value be converted to string?
+-            // this will catch QUrl, ... (all other types which can be converted to string)
+-            str = sanitizeString(data.toString()).toUtf8();
+-        } else {
+-            success = false;
+-        }
+-
+-        if (success) {
+-            return str;
+-        }
+-        return QByteArray();
+-    }
+-
+-    QString serializeStr(const QVariant &data) {
+-        return QString::fromUtf8(serialize(data));
+-    }
+-
+-    QString serializeStr(const QVariant &data, bool &success) {
+-        return QString::fromUtf8(serialize(data, success));
+-    }
+-
+-
+-    /**
+-     * \enum JsonToken
+-     */
+-    enum JsonToken {
+-        JsonTokenNone = 0,
+-        JsonTokenCurlyOpen = 1,
+-        JsonTokenCurlyClose = 2,
+-        JsonTokenSquaredOpen = 3,
+-        JsonTokenSquaredClose = 4,
+-        JsonTokenColon = 5,
+-        JsonTokenComma = 6,
+-        JsonTokenString = 7,
+-        JsonTokenNumber = 8,
+-        JsonTokenTrue = 9,
+-        JsonTokenFalse = 10,
+-        JsonTokenNull = 11
+-    };
+-
+-    static QString sanitizeString(QString str) {
+-        str.replace(QLatin1String("\\"), QLatin1String("\\\\"));
+-        str.replace(QLatin1String("\""), QLatin1String("\\\""));
+-        str.replace(QLatin1String("\b"), QLatin1String("\\b"));
+-        str.replace(QLatin1String("\f"), QLatin1String("\\f"));
+-        str.replace(QLatin1String("\n"), QLatin1String("\\n"));
+-        str.replace(QLatin1String("\r"), QLatin1String("\\r"));
+-        str.replace(QLatin1String("\t"), QLatin1String("\\t"));
+-        return QString(QLatin1String("\"%1\"")).arg(str);
+-    }
+-
+-    static QByteArray join(const QList<QByteArray> &list, const QByteArray &sep) {
+-        QByteArray res;
+-        Q_FOREACH(const QByteArray &i, list) {
+-            if (!res.isEmpty()) {
+-                res += sep;
+-            }
+-            res += i;
+-        }
+-        return res;
+-    }
+-
+-    /**
+-     * parseValue
+-     */
+-    static QVariant parseValue(const QString &json, int &index, bool &success) {
+-        // Determine what kind of data we should parse by
+-        // checking out the upcoming token
+-        switch(lookAhead(json, index)) {
+-            case JsonTokenString:
+-                return parseString(json, index, success);
+-            case JsonTokenNumber:
+-                return parseNumber(json, index);
+-            case JsonTokenCurlyOpen:
+-                return parseObject(json, index, success);
+-            case JsonTokenSquaredOpen:
+-                return parseArray(json, index, success);
+-            case JsonTokenTrue:
+-                nextToken(json, index);
+-                return QVariant(true);
+-            case JsonTokenFalse:
+-                nextToken(json, index);
+-                return QVariant(false);
+-            case JsonTokenNull:
+-                nextToken(json, index);
+-                return QVariant();
+-            case JsonTokenNone:
+-                break;
+-        }
+-
+-        // If there were no tokens, flag the failure and return an empty QVariant
+-        success = false;
+-        return QVariant();
+-    }
+-
+-    /**
+-     * parseObject
+-     */
+-    static QVariant parseObject(const QString &json, int &index, bool &success) {
+-        QVariantMap map;
+-        int token;
+-
+-        // Get rid of the whitespace and increment index
+-        nextToken(json, index);
+-
+-        // Loop through all of the key/value pairs of the object
+-        bool done = false;
+-        while (!done) {
+-            // Get the upcoming token
+-            token = lookAhead(json, index);
+-
+-            if (token == JsonTokenNone) {
+-                success = false;
+-                return QVariantMap();
+-            } else if (token == JsonTokenComma) {
+-                nextToken(json, index);
+-            } else if (token == JsonTokenCurlyClose) {
+-                nextToken(json, index);
+-                return map;
+-            } else {
+-                // Parse the key/value pair's name
+-                QString name = parseString(json, index, success).toString();
+-
+-                if (!success) {
+-                    return QVariantMap();
+-                }
+-
+-                // Get the next token
+-                token = nextToken(json, index);
+-
+-                // If the next token is not a colon, flag the failure
+-                // return an empty QVariant
+-                if (token != JsonTokenColon) {
+-                    success = false;
+-                    return QVariant(QVariantMap());
+-                }
+-
+-                // Parse the key/value pair's value
+-                QVariant value = parseValue(json, index, success);
+-
+-                if (!success) {
+-                    return QVariantMap();
+-                }
+-
+-                // Assign the value to the key in the map
+-                map[name] = value;
+-            }
+-        }
+-
+-        // Return the map successfully
+-        return QVariant(map);
+-    }
+-
+-    /**
+-     * parseArray
+-     */
+-    static QVariant parseArray(const QString &json, int &index, bool &success) {
+-        QVariantList list;
+-
+-        nextToken(json, index);
+-
+-        bool done = false;
+-        while(!done) {
+-            int token = lookAhead(json, index);
+-
+-            if (token == JsonTokenNone) {
+-                success = false;
+-                return QVariantList();
+-            } else if (token == JsonTokenComma) {
+-                nextToken(json, index);
+-            } else if (token == JsonTokenSquaredClose) {
+-                nextToken(json, index);
+-                break;
+-            } else {
+-                QVariant value = parseValue(json, index, success);
+-                if (!success) {
+-                    return QVariantList();
+-                }
+-                list.push_back(value);
+-            }
+-        }
+-
+-        return QVariant(list);
+-    }
+-
+-    /**
+-     * parseString
+-     */
+-    static QVariant parseString(const QString &json, int &index, bool &success) {
+-        QString s;
+-        QChar c;
+-
+-        eatWhitespace(json, index);
+-
+-        c = json[index++];
+-
+-        bool complete = false;
+-        while(!complete) {
+-            if (index == json.size()) {
+-                break;
+-            }
+-
+-            c = json[index++];
+-
+-            if (c == '\"') {
+-                complete = true;
+-                break;
+-            } else if (c == '\\') {
+-                if (index == json.size()) {
+-                    break;
+-                }
+-
+-                c = json[index++];
+-
+-                if (c == '\"') {
+-                    s.append('\"');
+-                } else if (c == '\\') {
+-                    s.append('\\');
+-                } else if (c == '/') {
+-                    s.append('/');
+-                } else if (c == 'b') {
+-                    s.append('\b');
+-                } else if (c == 'f') {
+-                    s.append('\f');
+-                } else if (c == 'n') {
+-                    s.append('\n');
+-                } else if (c == 'r') {
+-                    s.append('\r');
+-                } else if (c == 't') {
+-                    s.append('\t');
+-                } else if (c == 'u') {
+-                    int remainingLength = json.size() - index;
+-                    if (remainingLength >= 4) {
+-                        QString unicodeStr = json.mid(index, 4);
+-
+-                        int symbol = unicodeStr.toInt(0, 16);
+-
+-                        s.append(QChar(symbol));
+-
+-                        index += 4;
+-                    } else {
+-                        break;
+-                    }
+-                }
+-            } else {
+-                s.append(c);
+-            }
+-        }
+-
+-        if (!complete) {
+-            success = false;
+-            return QVariant();
+-        }
+-
+-        return QVariant(s);
+-    }
+-
+-    /**
+-     * parseNumber
+-     */
+-    static QVariant parseNumber(const QString &json, int &index) {
+-        eatWhitespace(json, index);
+-
+-        int lastIndex = lastIndexOfNumber(json, index);
+-        int charLength = (lastIndex - index) + 1;
+-        QString numberStr;
+-
+-        numberStr = json.mid(index, charLength);
+-
+-        index = lastIndex + 1;
+-        bool ok;
+-
+-        if (numberStr.contains('.')) {
+-            return QVariant(numberStr.toDouble(NULL));
+-        } else if (numberStr.startsWith('-')) {
+-            int i = numberStr.toInt(&ok);
+-            if (!ok) {
+-                qlonglong ll = numberStr.toLongLong(&ok);
+-                return ok ? ll : QVariant(numberStr);
+-            }
+-            return i;
+-        } else {
+-            uint u = numberStr.toUInt(&ok);
+-            if (!ok) {
+-                qulonglong ull = numberStr.toULongLong(&ok);
+-                return ok ? ull : QVariant(numberStr);
+-            }
+-            return u;
+-        }
+-    }
+-
+-    /**
+-     * lastIndexOfNumber
+-     */
+-    static int lastIndexOfNumber(const QString &json, int index) {
+-        int lastIndex;
+-
+-        for(lastIndex = index; lastIndex < json.size(); lastIndex++) {
+-            if (QString("0123456789+-.eE").indexOf(json[lastIndex]) == -1) {
+-                break;
+-            }
+-        }
+-
+-        return lastIndex -1;
+-    }
+-
+-    /**
+-     * eatWhitespace
+-     */
+-    static void eatWhitespace(const QString &json, int &index) {
+-        for(; index < json.size(); index++) {
+-            if (QString(" \t\n\r").indexOf(json[index]) == -1) {
+-                break;
+-            }
+-        }
+-    }
+-
+-    /**
+-     * lookAhead
+-     */
+-    static int lookAhead(const QString &json, int index) {
+-        int saveIndex = index;
+-        return nextToken(json, saveIndex);
+-    }
+-
+-    /**
+-     * nextToken
+-     */
+-    static int nextToken(const QString &json, int &index) {
+-        eatWhitespace(json, index);
+-
+-        if (index == json.size()) {
+-            return JsonTokenNone;
+-        }
+-
+-        QChar c = json[index];
+-        index++;
+-        switch(c.toLatin1()) {
+-            case '{': return JsonTokenCurlyOpen;
+-            case '}': return JsonTokenCurlyClose;
+-            case '[': return JsonTokenSquaredOpen;
+-            case ']': return JsonTokenSquaredClose;
+-            case ',': return JsonTokenComma;
+-            case '"': return JsonTokenString;
+-            case '0': case '1': case '2': case '3': case '4':
+-            case '5': case '6': case '7': case '8': case '9':
+-            case '-': return JsonTokenNumber;
+-            case ':': return JsonTokenColon;
+-        }
+-        index--; // ^ WTF?
+-
+-        int remainingLength = json.size() - index;
+-
+-        // True
+-        if (remainingLength >= 4) {
+-            if (json[index] == 't' && json[index + 1] == 'r' &&
+-                json[index + 2] == 'u' && json[index + 3] == 'e') {
+-                index += 4;
+-                return JsonTokenTrue;
+-            }
+-        }
+-
+-        // False
+-        if (remainingLength >= 5) {
+-            if (json[index] == 'f' && json[index + 1] == 'a' &&
+-                json[index + 2] == 'l' && json[index + 3] == 's' &&
+-                json[index + 4] == 'e') {
+-                index += 5;
+-                return JsonTokenFalse;
+-            }
+-        }
+-
+-        // Null
+-        if (remainingLength >= 4) {
+-            if (json[index] == 'n' && json[index + 1] == 'u' &&
+-                json[index + 2] == 'l' && json[index + 3] == 'l') {
+-                index += 4;
+-                return JsonTokenNull;
+-            }
+-        }
+-
+-        return JsonTokenNone;
+-    }
+-
+-    void setDateTimeFormat(const QString &format) {
+-        dateTimeFormat = format;
+-    }
+-
+-    void setDateFormat(const QString &format) {
+-        dateFormat = format;
+-    }
+-
+-    QString getDateTimeFormat() {
+-        return dateTimeFormat;
+-    }
+-
+-    QString getDateFormat() {
+-        return dateFormat;
+-    }
+-
+-    void setPrettySerialize(bool enabled) {
+-        prettySerialize = enabled;
+-    }
+-
+-    bool isPrettySerialize() {
+-        return prettySerialize;
+-    }
+-
+-
+-
+-    QQueue<BuilderJsonObject *> BuilderJsonObject::created_list;
+-
+-    BuilderJsonObject::BuilderJsonObject() {
+-        // clean objects previous "created"
+-        while (!BuilderJsonObject::created_list.isEmpty()) {
+-            delete BuilderJsonObject::created_list.dequeue();
+-        }
+-    }
+-
+-    BuilderJsonObject::BuilderJsonObject(JsonObject &json) {
+-        BuilderJsonObject();
+-
+-        obj = json;
+-    }
+-
+-    BuilderJsonObject *BuilderJsonObject::set(const QString &key, const QVariant &value) {
+-        obj[key] = value;
+-
+-        return this;
+-    }
+-
+-    BuilderJsonObject *BuilderJsonObject::set(const QString &key, BuilderJsonObject *builder) {
+-        return set(key, builder->create());
+-    }
+-
+-    BuilderJsonObject *BuilderJsonObject::set(const QString &key, BuilderJsonArray *builder) {
+-        return set(key, builder->create());
+-    }
+-
+-    JsonObject BuilderJsonObject::create() {
+-        BuilderJsonObject::created_list.enqueue(this);
+-
+-        return obj;
+-    }
+-
+-
+-    QQueue<BuilderJsonArray *> BuilderJsonArray::created_list;
+-
+-    BuilderJsonArray::BuilderJsonArray() {
+-        // clean objects previous "created"
+-        while (!BuilderJsonArray::created_list.isEmpty()) {
+-            delete BuilderJsonArray::created_list.dequeue();
+-        }
+-    }
+-
+-    BuilderJsonArray::BuilderJsonArray(JsonArray &json) {
+-        BuilderJsonArray();
+-
+-        array = json;
+-    }
+-
+-    BuilderJsonArray *BuilderJsonArray::add(const QVariant &element) {
+-        array.append(element);
+-
+-        return this;
+-    }
+-
+-    BuilderJsonArray *BuilderJsonArray::add(BuilderJsonObject *builder) {
+-        return add(builder->create());
+-    }
+-
+-    BuilderJsonArray *BuilderJsonArray::add(BuilderJsonArray *builder) {
+-        return add(builder->create());
+-    }
+-
+-    JsonArray BuilderJsonArray::create() {
+-        BuilderJsonArray::created_list.enqueue(this);
+-
+-        return array;
+-    }
+-
+-
+-
+-
+-    BuilderJsonObject *objectBuilder() {
+-        return new BuilderJsonObject();
+-    }
+-
+-    BuilderJsonObject *objectBuilder(JsonObject &json) {
+-        return new BuilderJsonObject(json);
+-    }
+-
+-    BuilderJsonArray *arrayBuilder() {
+-        return new BuilderJsonArray();
+-    }
+-
+-    BuilderJsonArray *arrayBuilder(JsonArray &json) {
+-        return new BuilderJsonArray(json);
+-    }
+-
+-} //end namespace
+diff --git a/registeredSession/json.h b/registeredSession/json.h
+deleted file mode 100644
+index 74a2c40..0000000
+--- a/registeredSession/json.h
++++ /dev/null
+@@ -1,265 +0,0 @@
+-/**
+- * QtJson - A simple class for parsing JSON data into a QVariant hierarchies and vice-versa.
+- * Copyright (C) 2011  Eeli Reilin
+- *
+- * 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 <http://www.gnu.org/licenses/>.
+- */
+-
+-/**
+- * \file json.h
+- */
+-
+-#ifndef JSON_H
+-#define JSON_H
+-
+-#include <QVariant>
+-#include <QString>
+-#include <QQueue>
+-
+-
+-/**
+- * \namespace QtJson
+- * \brief A JSON data parser
+- *
+- * Json parses a JSON data into a QVariant hierarchy.
+- */
+-namespace QtJson {
+-    typedef QVariantMap JsonObject;
+-    typedef QVariantList JsonArray;
+-
+-    /**
+-     * Clone a JSON object (makes a deep copy)
+-     *
+-     * \param data The JSON object
+-     */
+-    QVariant clone(const QVariant &data);
+-
+-    /**
+-     * Insert value to JSON object (QVariantMap)
+-     *
+-     * \param v The JSON object
+-     * \param key The key
+-     * \param value The value
+-     */
+-    void insert(QVariant &v, const QString &key, const QVariant &value);
+-
+-    /**
+-     * Append value to JSON array (QVariantList)
+-     *
+-     * \param v The JSON array
+-     * \param value The value
+-     */
+-    void append(QVariant &v, const QVariant &value);
+-
+-    /**
+-     * Parse a JSON string
+-     *
+-     * \param json The JSON data
+-     */
+-    QVariant parse(const QString &json);
+-
+-    /**
+-     * Parse a JSON string
+-     *
+-     * \param json The JSON data
+-     * \param success The success of the parsing
+-     */
+-    QVariant parse(const QString &json, bool &success);
+-
+-    /**
+-     * This method generates a textual JSON representation
+-     *
+-     * \param data The JSON data generated by the parser.
+-     *
+-     * \return QByteArray Textual JSON representation in UTF-8
+-     */
+-    QByteArray serialize(const QVariant &data);
+-
+-    /**
+-     * This method generates a textual JSON representation
+-     *
+-     * \param data The JSON data generated by the parser.
+-     * \param success The success of the serialization
+-     *
+-     * \return QByteArray Textual JSON representation in UTF-8
+-     */
+-    QByteArray serialize(const QVariant &data, bool &success, int _level = 0);
+-
+-    /**
+-     * This method generates a textual JSON representation
+-     *
+-     * \param data The JSON data generated by the parser.
+-     *
+-     * \return QString Textual JSON representation
+-     */
+-    QString serializeStr(const QVariant &data);
+-
+-    /**
+-     * This method generates a textual JSON representation
+-     *
+-     * \param data The JSON data generated by the parser.
+-     * \param success The success of the serialization
+-     *
+-     * \return QString Textual JSON representation
+-     */
+-    QString serializeStr(const QVariant &data, bool &success, int _level = 0);
+-
+-    /**
+-     * This method sets date(time) format to be used for QDateTime::toString
+-     * If QString is empty, Qt::TextDate is used.
+-     *
+-     * \param format The JSON data generated by the parser.
+-     */
+-    void setDateTimeFormat(const QString& format);
+-    void setDateFormat(const QString& format);
+-
+-    /**
+-     * This method gets date(time) format to be used for QDateTime::toString
+-     * If QString is empty, Qt::TextDate is used.
+-     */
+-    QString getDateTimeFormat();
+-    QString getDateFormat();
+-
+-    /**
+-     * @brief setPrettySerialize enable/disabled pretty-print when serialize() a json
+-     * @param enabled
+-     */
+-    void setPrettySerialize(bool enabled);
+-
+-    /**
+-     * @brief isPrettySerialize check if is enabled pretty-print when serialize() a json
+-     * @return
+-     */
+-    bool isPrettySerialize();
+-
+-
+-
+-
+-    /**
+-     * QVariant based Json object
+-     */
+-    class Object : public QVariant {
+-        template<typename T>
+-        Object& insertKey(Object* ptr, const QString& key) {
+-            T* p = (T*)ptr->data();
+-            if (!p->contains(key)) p->insert(key, QVariant());
+-            return *reinterpret_cast<Object*>(&p->operator[](key));
+-        }
+-        template<typename T>
+-        void removeKey(Object *ptr, const QString& key) {
+-            T* p = (T*)ptr->data();
+-            p->remove(key);
+-        }
+-    public:
+-        Object() : QVariant() {}
+-        Object(const Object& ref) : QVariant(ref) {}
+-
+-        Object& operator=(const QVariant& rhs) {
+-            /** It maybe more robust when running under Qt versions below 4.7 */
+-            QObject * obj = qvariant_cast<QObject *>(rhs);
+-            //  setValue(rhs);
+-            setValue(obj);
+-            return *this;
+-        }
+-        Object& operator[](const QString& key) {
+-            if (type() == QVariant::Map)
+-                return insertKey<QVariantMap>(this, key);
+-            else if (type() == QVariant::Hash)
+-                return insertKey<QVariantHash>(this, key);
+-
+-            setValue(QVariantMap());
+-
+-            return insertKey<QVariantMap>(this, key);
+-        }
+-        const Object& operator[](const QString& key) const {
+-            return const_cast<Object*>(this)->operator[](key);
+-        }
+-        void remove(const QString& key) {
+-            if (type() == QVariant::Map)
+-                removeKey<QVariantMap>(this, key);
+-            else if (type() == QVariant::Hash)
+-                removeKey<QVariantHash>(this, key);
+-        }
+-    };
+-
+-
+-    class BuilderJsonArray;
+-
+-    /**
+-     * @brief The BuilderJsonObject class
+-     */
+-    class BuilderJsonObject {
+-
+-        public:
+-            BuilderJsonObject();
+-            BuilderJsonObject(JsonObject &json);
+-
+-            BuilderJsonObject *set(const QString &key, const QVariant &value);
+-            BuilderJsonObject *set(const QString &key, BuilderJsonObject *builder);
+-            BuilderJsonObject *set(const QString &key, BuilderJsonArray *builder);
+-            JsonObject create();
+-
+-        private:
+-            static QQueue<BuilderJsonObject *> created_list;
+-
+-            JsonObject obj;
+-    };
+-
+-    /**
+-     * @brief The BuilderJsonArray class
+-     */
+-    class BuilderJsonArray {
+-
+-        public:
+-            BuilderJsonArray();
+-            BuilderJsonArray(JsonArray &json);
+-
+-            BuilderJsonArray *add(const QVariant &element);
+-            BuilderJsonArray *add(BuilderJsonObject *builder);
+-            BuilderJsonArray *add(BuilderJsonArray *builder);
+-            JsonArray create();
+-
+-        private:
+-            static QQueue<BuilderJsonArray *> created_list;
+-
+-            JsonArray array;
+-    };
+-
+-
+-    /**
+-     * @brief Create a BuilderJsonObject
+-     * @return
+-     */
+-    BuilderJsonObject *objectBuilder();
+-
+-    /**
+-     * @brief Create a BuilderJsonObject starting from copy of another json
+-     * @return
+-     */
+-    BuilderJsonObject *objectBuilder(JsonObject &json);
+-
+-    /**
+-     * @brief Create a BuilderJsonArray
+-     * @return
+-     */
+-    BuilderJsonArray *arrayBuilder();
+-
+-    /**
+-     * @brief Create a BuilderJsonArray starting from copy of another json
+-     * @return
+-     */
+-    BuilderJsonArray *arrayBuilder(JsonArray &json);
+-}
+-
+-#endif //JSON_H
+diff --git a/registeredSession/registeredSession.pro b/registeredSession/registeredSession.pro
+index ddb17e5..9189016 100644
+--- a/registeredSession/registeredSession.pro
++++ b/registeredSession/registeredSession.pro
+@@ -40,7 +40,6 @@ INSTALLS += inst1
+ #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
+ 
+ SOURCES += \
+-        json.cpp \
+         main.cpp \
+         plugins/about/aboutinterface.cpp \
+         plugins/area/areainterface.cpp \
+@@ -67,7 +66,6 @@ target.path = /usr/bin/
+ 
+ 
+ HEADERS += \
+-        json.h \
+         plugins/about/aboutinterface.h \
+         plugins/area/areainterface.h \
+         plugins/autoboot/autostartinterface.h \
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0118-135-291185.patch ukui-control-center-4.10.0.0/debian/patches/0118-135-291185.patch
--- ukui-control-center-4.10.0.0/debian/patches/0118-135-291185.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0118-135-291185.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,28 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Wed, 8 Jan 2025 08:09:26 +0000
+Subject: =?utf-8?b?ITEzNSAyOTExODUg44CQ5pe26Ze05LiO5pel5pyf44CR5re75Yqg5paw?=
+ =?utf-8?b?5pe25Yy677yM5paw5pe25Yy65LiL6Z2i55qE5pe26Ze05pi+56S65byC5bi477yM?=
+ =?utf-8?b?5q+U5b2T5YmN5pe25Yy65pma55qE5pe26Ze05pi+56S65Li65q+U5LuK5aSp5pep?=
+ =?utf-8?b?55qE5pe26Ze0IE1lcmdlIHB1bGwgcmVxdWVzdCAhMTM1IGZyb20gbmlsL25pbGUt?=
+ =?utf-8?b?MDEwNw==?=
+
+---
+ plugins/time-language/datetime/timeBtn.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/time-language/datetime/timeBtn.cpp b/plugins/time-language/datetime/timeBtn.cpp
+index 4b27eaf..cdba347 100644
+--- a/plugins/time-language/datetime/timeBtn.cpp
++++ b/plugins/time-language/datetime/timeBtn.cpp
+@@ -103,9 +103,9 @@ void TimeBtn::updateTime(bool hour_24) {
+     QDateTime thisZoneTime;
+     const double timeDelta = (thisZone.offsetFromUtc(QDateTime::currentDateTime()) - currentZone.offsetFromUtc(QDateTime::currentDateTime())) / 3600.0;
+     QString dateLiteral;
+-    if (QDateTime::currentDateTime().toTimeZone(thisZone).time().hour() + timeDelta >= 24) {
++    if ((QDateTime::currentDateTime().time().hour() + timeDelta) >= 24) {
+         dateLiteral = tr("Tomorrow");
+-    } else if (QDateTime::currentDateTime().toTimeZone(thisZone).time().hour() + timeDelta < 0) {
++    } else if ((QDateTime::currentDateTime().time().hour() + timeDelta) < 0) {
+         dateLiteral = tr("Yesterday");
+     } else {
+         dateLiteral = tr("Today");
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0119-139-bug.patch ukui-control-center-4.10.0.0/debian/patches/0119-139-bug.patch
--- ukui-control-center-4.10.0.0/debian/patches/0119-139-bug.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0119-139-bug.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,107 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Fri, 10 Jan 2025 08:53:16 +0000
+Subject: =?utf-8?b?ITEzOSDkv67lpI1idWcgTWVyZ2UgcHVsbCByZXF1ZXN0ICExMzkgZnJv?=
+ =?utf-8?b?bSDkvZXmgJ3og5wvbmlsZQ==?=
+
+---
+ plugins/account/userinfo/createusernew.cpp   |  2 +-
+ plugins/commoninfo/boot/grubverifydialog.cpp |  4 ++--
+ plugins/devices/keyboard/keyboardmain.cpp    |  2 ++
+ plugins/system/vino/vino.cpp                 | 20 +++++++++++++++++++-
+ plugins/system/vino/vino.h                   |  1 +
+ 5 files changed, 25 insertions(+), 4 deletions(-)
+
+diff --git a/plugins/account/userinfo/createusernew.cpp b/plugins/account/userinfo/createusernew.cpp
+index dff09ca..e892dec 100644
+--- a/plugins/account/userinfo/createusernew.cpp
++++ b/plugins/account/userinfo/createusernew.cpp
+@@ -206,7 +206,7 @@ void CreateUserNew::initUI(){
+     typeBtnGroup->addButton(adminRadioBtn, 1);
+     typeBtnGroup->addButton(standardRadioBtn, 0);
+ 
+-    adminRadioBtn->setChecked(true);
++    standardRadioBtn->setChecked(true);
+ 
+     //管理员RadioButton布局
+     admin1VerLayout = new QVBoxLayout;
+diff --git a/plugins/commoninfo/boot/grubverifydialog.cpp b/plugins/commoninfo/boot/grubverifydialog.cpp
+index 0b89e21..0569cd1 100644
+--- a/plugins/commoninfo/boot/grubverifydialog.cpp
++++ b/plugins/commoninfo/boot/grubverifydialog.cpp
+@@ -38,7 +38,7 @@ void GrubVerify::initUI()
+ 
+     //新密码
+     newPwdLabel = new QLabel();
+-    newPwdLabel->setFixedSize(100,24);
++    newPwdLabel->setFixedWidth(100);
+     setTextDynamicInPwd(newPwdLabel, tr("Pwd"));
+     newTipLabel = new QLabel();
+     QFont ft;
+@@ -81,7 +81,7 @@ void GrubVerify::initUI()
+ 
+     //确认密码
+     surePwdLabel = new QLabel();
+-    surePwdLabel->setFixedSize(100,24);
++    surePwdLabel->setFixedWidth(100);
+     setTextDynamicInPwd(surePwdLabel, tr("Sure Pwd"));
+ 
+     surePwdLineEdit = new QLineEdit();
+diff --git a/plugins/devices/keyboard/keyboardmain.cpp b/plugins/devices/keyboard/keyboardmain.cpp
+index a3db782..e561a03 100644
+--- a/plugins/devices/keyboard/keyboardmain.cpp
++++ b/plugins/devices/keyboard/keyboardmain.cpp
+@@ -132,6 +132,8 @@ void KeyboardMain::initKeyboardStatus()
+ 
+     initShowIconOnDesktop();
+ 
++    initInputMethodSet();
++
+     initShowIconOnTray();
+ 
+     initKeyboardSize();
+diff --git a/plugins/system/vino/vino.cpp b/plugins/system/vino/vino.cpp
+index 85c875f..74e23f4 100644
+--- a/plugins/system/vino/vino.cpp
++++ b/plugins/system/vino/vino.cpp
+@@ -73,7 +73,10 @@ bool Vino::isEnable() const
+     if (!UkccCommon::isWayland()) {
+         return !UkccCommon::isCommunity() && isExistVino();
+     } else {
+-        return true;
++        if (isExistKylinRemote()) {
++            return true;
++        }
++        return false;
+     }
+ }
+ 
+@@ -81,3 +84,18 @@ bool Vino::isExistVino() const
+ {
+     return QGSettings::isSchemaInstalled(QByteArray("org.gnome.Vino"));
+ }
++
++bool Vino::isExistKylinRemote() const
++{
++    QProcess *process = new QProcess;
++    process->start("dpkg -l | grep kylin-remote-desktop-daemon");
++    process->waitForFinished();
++
++    QByteArray ba = process->readAllStandardOutput();
++    delete process;
++    QString mOutput = QString(ba.data());
++    if (mOutput.contains("kylin-remote-desktop-daemon")) {
++        return true;
++    }
++    return false;
++}
+diff --git a/plugins/system/vino/vino.h b/plugins/system/vino/vino.h
+index 9ee60ef..8beaf41 100644
+--- a/plugins/system/vino/vino.h
++++ b/plugins/system/vino/vino.h
+@@ -54,5 +54,6 @@ private:
+ private:
+     bool isExistVino() const;
+ 
++    bool isExistKylinRemote() const;
+ };
+ #endif // VINO_H
Binary files /tmp/tmpsas0hm28/7TTzQryte8/ukui-control-center-4.10.0.0/debian/patches/0120-140-fix-panel-bug-278913.patch and /tmp/tmpsas0hm28/jRJlZLkzbT/ukui-control-center-4.10.0.0/debian/patches/0120-140-fix-panel-bug-278913.patch differ
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0121-141-380937-2024-OEM-v11-2501.patch ukui-control-center-4.10.0.0/debian/patches/0121-141-380937-2024-OEM-v11-2501.patch
--- ukui-control-center-4.10.0.0/debian/patches/0121-141-380937-2024-OEM-v11-2501.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0121-141-380937-2024-OEM-v11-2501.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,721 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Wed, 15 Jan 2025 06:43:14 +0000
+Subject: =?utf-8?b?ITE0MSAzODA5Mzcg5a2QIOOAkDIwMjTjgJHln7rnoYDnu4Tku7bnu4Q=?=
+ =?utf-8?b?5ZGo5L6L5Lya5b6F5YqeJuW5s+aXtuS7u+WKoSZPRU3kuLTml7bku7vliqEgLyA=?=
+ =?utf-8?b?44CQdjExLTI1MDHjgJHljZXlhYPmtYvor5Ug5o6n5Yi26Z2i5p2/IOW8gOWPkSBN?=
+ =?utf-8?b?ZXJnZSBwdWxsIHJlcXVlc3QgITE0MSBmcm9tIOiLj+WXo+WFuC9vcGVua3lsaW4v?=
+ =?utf-8?b?bmlsZS0xMTA3?=
+
+---
+ registeredSession/main.cpp                         |   2 -
+ .../plugins/datetime/datetimeinterface.cpp         |   3 +-
+ .../plugins/datetime/datetimeinterface.h           |   2 +-
+ .../plugins/shortcut/shortcutinterface.cpp         |  13 +--
+ .../plugins/shortcut/shortcutinterface.h           |   2 +-
+ registeredSession/plugins/shortcut/type.cpp        |  51 --------
+ registeredSession/plugins/shortcut/type.h          |  10 --
+ registeredSession/plugins/vino/vinointerface.cpp   | 129 ---------------------
+ registeredSession/plugins/vino/vinointerface.h     |  56 ---------
+ .../plugins/wallpaper/wallpaperinterface.cpp       |   5 +-
+ registeredSession/plugins/wallpaper/xmlhandle.cpp  |  51 --------
+ registeredSession/plugins/wallpaper/xmlhandle.h    |   1 -
+ registeredSession/registeredSession.pro            |   3 -
+ tests/unit_test_datetime/unit_test_datetime.cpp    |  22 ++++
+ .../unit_test_screenlock/unit_test_screenlock.cpp  |  10 ++
+ tests/unit_test_shortcut/unit_test_shortcut.cpp    |  11 +-
+ tests/unit_test_shortcut/unit_test_shortcut.pro    |   4 -
+ tests/unit_test_wallpaper/unit_test_wallpaper.cpp  |  44 ++++++-
+ 18 files changed, 85 insertions(+), 334 deletions(-)
+ delete mode 100644 registeredSession/plugins/shortcut/type.cpp
+ delete mode 100644 registeredSession/plugins/vino/vinointerface.cpp
+ delete mode 100644 registeredSession/plugins/vino/vinointerface.h
+
+diff --git a/registeredSession/main.cpp b/registeredSession/main.cpp
+index b37e031..357580e 100644
+--- a/registeredSession/main.cpp
++++ b/registeredSession/main.cpp
+@@ -18,7 +18,6 @@
+ #include "plugins/screenlock/screenlockinterface.h"
+ #include "plugins/shortcut/shortcutinterface.h"
+ #include "plugins/screensaver/screensaverinterface.h"
+-#include "plugins/vino/vinointerface.h"
+ 
+ void registerPlugins(const QString &path, QObject *object, QDBusConnection &connection) {
+     if (!connection.registerObject(path, object, QDBusConnection::ExportAllSlots |
+@@ -65,7 +64,6 @@ int main(int argc, char *argv[])
+     plugins["/Screenlock"] = new ScreenlockInterface;
+     plugins["/Shortcut"] = new ShortcutInterface;
+     plugins["/Screensaver"] = new ScreensaverInterface;
+-    plugins["/Vino"] = new VinoInterface;
+ 
+     for (std::map<QString, QObject*>::value_type plugin : plugins)
+         registerPlugins(plugin.first, plugin.second, sessionBus);
+diff --git a/registeredSession/plugins/datetime/datetimeinterface.cpp b/registeredSession/plugins/datetime/datetimeinterface.cpp
+index 02ad875..51234cc 100644
+--- a/registeredSession/plugins/datetime/datetimeinterface.cpp
++++ b/registeredSession/plugins/datetime/datetimeinterface.cpp
+@@ -24,11 +24,12 @@ DatetimeInterface::~DatetimeInterface()
+ 
+ }
+ 
+-void DatetimeInterface::timezoneChanged(QString key)
++bool DatetimeInterface::timezoneChanged(QString key)
+ {
+     if (key == "timezone") {
+         Q_EMIT changed("timezone");
+     }
++    return true;
+ }
+ 
+ QStringList DatetimeInterface::getTimezone()
+diff --git a/registeredSession/plugins/datetime/datetimeinterface.h b/registeredSession/plugins/datetime/datetimeinterface.h
+index a98c0c3..78bc727 100644
+--- a/registeredSession/plugins/datetime/datetimeinterface.h
++++ b/registeredSession/plugins/datetime/datetimeinterface.h
+@@ -33,7 +33,7 @@ public Q_SLOTS:
+     QStringList timezoneName(QString timezone);
+ 
+ private Q_SLOTS:
+-    void timezoneChanged(QString key);
++    bool timezoneChanged(QString key);
+ 
+ private:
+     QDBusInterface *timeDateInterface = nullptr;
+diff --git a/registeredSession/plugins/shortcut/shortcutinterface.cpp b/registeredSession/plugins/shortcut/shortcutinterface.cpp
+index 8febb69..707fb04 100644
+--- a/registeredSession/plugins/shortcut/shortcutinterface.cpp
++++ b/registeredSession/plugins/shortcut/shortcutinterface.cpp
+@@ -3,16 +3,6 @@
+ 
+ ShortcutInterface::ShortcutInterface()
+ {
+-    qRegisterMetaType<QStringPair>("QStringPair");
+-    qDBusRegisterMetaType<QStringPair>();
+-    qRegisterMetaType<QStringPairList>("QStringPairList");
+-    qDBusRegisterMetaType<QStringPairList>();
+-
+-    qRegisterMetaType<KeyEntry>("KeyEntry");
+-    qDBusRegisterMetaType<KeyEntry>();
+-    qRegisterMetaType<KeyEntryList>("KeyEntryList");
+-    qDBusRegisterMetaType<KeyEntryList>();
+-
+     getShortcutThread();
+ }
+ 
+@@ -109,9 +99,10 @@ QList<QStringPair> ShortcutInterface::getCustomShortcut()
+     return customShortcutList;
+ }
+ 
+-void ShortcutInterface::updateShortcut()
++bool ShortcutInterface::updateShortcut()
+ {
+     getShortcutThread();
++    return true;
+ }
+ 
+ void ShortcutInterface::setSystemShortcut(const QString &key, const QString &value)
+diff --git a/registeredSession/plugins/shortcut/shortcutinterface.h b/registeredSession/plugins/shortcut/shortcutinterface.h
+index cb80cdc..2946ff8 100644
+--- a/registeredSession/plugins/shortcut/shortcutinterface.h
++++ b/registeredSession/plugins/shortcut/shortcutinterface.h
+@@ -24,7 +24,7 @@ public Q_SLOTS:
+     QList<KeyEntry>    getSystemShortcutEntry();
+     QList<KeyEntry>    getCustomShortcutEntry();
+ 
+-    void               updateShortcut();
++    bool               updateShortcut();
+     void               setSystemShortcut(const QString &key, const QString &value);
+ 
+ private:
+diff --git a/registeredSession/plugins/shortcut/type.cpp b/registeredSession/plugins/shortcut/type.cpp
+deleted file mode 100644
+index d05fb35..0000000
+--- a/registeredSession/plugins/shortcut/type.cpp
++++ /dev/null
+@@ -1,51 +0,0 @@
+-#include "type.h"
+-
+-const QDBusArgument &operator<<(QDBusArgument &argument, const QStringPair &string)
+-{
+-    argument.beginStructure();
+-    argument << string.name;
+-    argument << string.key;
+-    argument << string.mediakey;
+-    argument.endStructure();
+-    return argument;
+-}
+-
+-const QDBusArgument &operator>>(const QDBusArgument &argument, QStringPair &string)
+-{
+-    argument.beginStructure();
+-    argument >> string.name;
+-    argument >> string.key;
+-    argument >> string.mediakey;
+-    argument.endStructure();
+-    return argument;
+-}
+-
+-const QDBusArgument &operator<<(QDBusArgument &argument, const KeyEntry &key)
+-{
+-    argument.beginStructure();
+-    argument << key.gsSchema;
+-    argument << key.keyStr;
+-    argument << key.valueStr;
+-    argument << key.descStr;
+-    argument << key.gsPath;
+-    argument << key.nameStr;
+-    argument << key.bindingStr;
+-    argument << key.actionStr;
+-    argument.endStructure();
+-    return argument;
+-}
+-
+-const QDBusArgument &operator>>(const QDBusArgument &argument, KeyEntry &key)
+-{
+-    argument.beginStructure();
+-    argument >> key.gsSchema;
+-    argument >> key.keyStr;
+-    argument >> key.valueStr;
+-    argument >> key.descStr;
+-    argument >> key.gsPath;
+-    argument >> key.nameStr;
+-    argument >> key.bindingStr;
+-    argument >> key.actionStr;
+-    argument.endStructure();
+-    return argument;
+-}
+diff --git a/registeredSession/plugins/shortcut/type.h b/registeredSession/plugins/shortcut/type.h
+index 814668a..00aa7a3 100644
+--- a/registeredSession/plugins/shortcut/type.h
++++ b/registeredSession/plugins/shortcut/type.h
+@@ -1,9 +1,6 @@
+ #ifndef TYPE_H
+ #define TYPE_H
+ 
+-#include <QDBusArgument>
+-#include <QDBusMetaType>
+-
+ typedef struct _KeyEntry {
+     QString gsSchema;
+     QString keyStr;
+@@ -14,9 +11,6 @@ typedef struct _KeyEntry {
+     QString bindingStr;
+     QString actionStr;
+ }KeyEntry;
+-const QDBusArgument &operator<<(QDBusArgument &argument, const KeyEntry &key);
+-const QDBusArgument &operator>>(const QDBusArgument &argument, KeyEntry &key);
+-Q_DECLARE_METATYPE(KeyEntry)
+ 
+ typedef struct
+ {
+@@ -25,10 +19,6 @@ typedef struct
+     QString mediakey;
+ }QStringPair;
+ 
+-const QDBusArgument &operator<<(QDBusArgument &argument, const QStringPair &string);
+-const QDBusArgument &operator>>(const QDBusArgument &argument, QStringPair &string);
+-Q_DECLARE_METATYPE(QStringPair)
+-
+ typedef QList<KeyEntry> KeyEntryList;
+ typedef QList<QStringPair> QStringPairList;
+ 
+diff --git a/registeredSession/plugins/vino/vinointerface.cpp b/registeredSession/plugins/vino/vinointerface.cpp
+deleted file mode 100644
+index da94c11..0000000
+--- a/registeredSession/plugins/vino/vinointerface.cpp
++++ /dev/null
+@@ -1,129 +0,0 @@
+-#include "vinointerface.h"
+-#include <QDebug>
+-#include <QProcess>
+-
+-VinoInterface::VinoInterface()
+-{
+-    mVinoGsettings = UniversalInterface::self()->gnomeVinoGsettings();
+-    mUkuiVinoGsettings = UniversalInterface::self()->ukuiVinoGsettings();
+-
+-    mGsettingMap[kVinoViewOnlyKey] = QString("viewOnly");
+-    mGsettingMap[kVinoPromptKey] = QString("promptEnabled");
+-    mGsettingMap[kAuthenticationKey] = QString("authenticationMethods");
+-    mGsettingMap[kVncPwdKey] = QString("vncPassword");
+-    mGsettingMap[kVinoEnableKey] = QString("vinoEnabled");
+-    mGsettingMap[kXrdpEnableKey] = QString("xrdpEnabled");
+-    mGsettingMap[kEnableKey] = QString("enabled");
+-}
+-
+-bool VinoInterface::getViewOnly()
+-{
+-    if (mVinoGsettings->keys().contains("viewOnly")) {
+-        return mVinoGsettings->get(kVinoViewOnlyKey).toBool();
+-    } else {
+-        qCritical() << "mVinoGsettings not contains the key: " << kVinoViewOnlyKey;
+-    }
+-    return false;
+-}
+-
+-bool VinoInterface::getPromptEnabled()
+-{
+-    if (mVinoGsettings->keys().contains("promptEnabled")) {
+-        return mVinoGsettings->get(kVinoPromptKey).toBool();
+-    } else {
+-        qCritical() << "mVinoGsettings not contains the key: " << kVinoPromptKey;
+-    }
+-    return false;
+-}
+-
+-QString VinoInterface::getMethod()
+-{
+-    if (mVinoGsettings->keys().contains("authenticationMethods")) {
+-        return mVinoGsettings->get(kAuthenticationKey).toString();
+-    } else {
+-        qCritical() << "mVinoGsettings not contains the key: " << kAuthenticationKey;
+-    }
+-    return QString();
+-}
+-
+-QString VinoInterface::getPassword()
+-{
+-    if (mVinoGsettings->keys().contains("vncPassword")) {
+-        return mVinoGsettings->get(kVncPwdKey).toString();
+-    } else {
+-        qCritical() << "mVinoGsettings not contains the key: " << kVncPwdKey;
+-    }
+-    return QString();
+-}
+-
+-bool VinoInterface::getVinoServerStatus()
+-{
+-    QProcess process;
+-    process.start("systemctl", QStringList() << "--user" << "is-active" << "vino-server.service");
+-    process.waitForFinished();
+-    bool isActive = process.readAllStandardOutput().replace("\n", "") == "active";
+-    return isActive;
+-}
+-
+-bool VinoInterface::getVinoStatus()
+-{
+-    if (mUkuiVinoGsettings->keys().contains("vinoEnabled")) {
+-        return mUkuiVinoGsettings->get(kVinoEnableKey).toBool();
+-    } else {
+-        qCritical() << "mUkuiVinoGsettings not contains the key: " << kVinoEnableKey;
+-    }
+-    return false;
+-}
+-
+-bool VinoInterface::getXrdpStatus()
+-{
+-    if (mUkuiVinoGsettings->keys().contains("xrdpEnabled")) {
+-        return mUkuiVinoGsettings->get(kXrdpEnableKey).toBool();
+-    } else {
+-        qCritical() << "mUkuiVinoGsettings not contains the key: " << kXrdpEnableKey;
+-    }
+-    return false;
+-}
+-
+-bool VinoInterface::getEnableStatus()
+-{
+-    if (mUkuiVinoGsettings->keys().contains("enabled")) {
+-        return mUkuiVinoGsettings->get(kEnableKey).toBool();
+-    } else {
+-        qCritical() << "mUkuiVinoGsettings not contains the key: " << kEnableKey;
+-    }
+-    return false;
+-}
+-
+-void VinoInterface::setVinoKey(const QString &key, bool value)
+-{
+-    if (mVinoGsettings->keys().contains(mGsettingMap[key])) {
+-        return mVinoGsettings->set(key, value);
+-    } else {
+-        qCritical() << "mVinoGsettings not contains the key: " << key;
+-    }
+-
+-    if (mUkuiVinoGsettings->keys().contains(mGsettingMap[key])) {
+-        return mUkuiVinoGsettings->set(key, value);
+-    } else {
+-        qCritical() << "mUkuiVinoGsettings not contains the key: " << key;
+-    }
+-}
+-
+-void VinoInterface::setVinoKey(const QString &key, QString value)
+-{
+-    if (mVinoGsettings->keys().contains(mGsettingMap[key])) {
+-        return mVinoGsettings->set(key, value);
+-    } else {
+-        qCritical() << "ukuiNoticeGsettings not contains the key: " << key;
+-    }
+-}
+-
+-void VinoInterface::setVinoKey(const QString &key, QByteArray value)
+-{
+-    if (mVinoGsettings->keys().contains(mGsettingMap[key])) {
+-        return mVinoGsettings->set(key, value);
+-    } else {
+-        qCritical() << "ukuiNoticeGsettings not contains the key: " << key;
+-    }
+-}
+diff --git a/registeredSession/plugins/vino/vinointerface.h b/registeredSession/plugins/vino/vinointerface.h
+deleted file mode 100644
+index 2691edb..0000000
+--- a/registeredSession/plugins/vino/vinointerface.h
++++ /dev/null
+@@ -1,56 +0,0 @@
+-#ifndef VINOINTERFACE_H
+-#define VINOINTERFACE_H
+-
+-#include <QObject>
+-#include <QDBusArgument>
+-#include <QVariant>
+-#include <QDBusMetaType>
+-#include <QGSettings>
+-#include "../../universalinterface.h"
+-
+-class VinoInterface : public QObject
+-{
+-    Q_OBJECT
+-    Q_CLASSINFO("D-Bus Interface", "org.ukui.ukcc.session.Vino")
+-    Q_PROPERTY(bool isViewOnly READ getViewOnly)
+-    Q_PROPERTY(bool isPrompt READ getPromptEnabled)
+-    Q_PROPERTY(QString method READ getMethod)
+-    Q_PROPERTY(QString password READ getPassword)
+-    Q_PROPERTY(bool isActive READ getVinoServerStatus)
+-    Q_PROPERTY(bool isVino READ getVinoStatus)
+-    Q_PROPERTY(bool isXrdp READ getXrdpStatus)
+-    Q_PROPERTY(bool isEnable READ getEnableStatus)
+-
+-public:
+-    VinoInterface();
+-
+-protected:
+-    bool getViewOnly();
+-    bool getPromptEnabled();
+-    QString getMethod();
+-    QString getPassword();
+-    bool getVinoServerStatus();
+-    bool getVinoStatus();
+-    bool getXrdpStatus();
+-    bool getEnableStatus();
+-
+-public Q_SLOTS:
+-    void setVinoKey(const QString &key, bool value);
+-    void setVinoKey(const QString &key, QString value);
+-    void setVinoKey(const QString &key, QByteArray value);
+-
+-private:
+-    const QString kEnableKey =  "enabled";
+-    const QString kXrdpEnableKey = "xrdp-enabled";
+-    const QString kVinoEnableKey = "vino-enabled";
+-    const QString kVinoViewOnlyKey = "view-only";
+-    const QString kVinoPromptKey = "prompt-enabled";
+-    const QString kAuthenticationKey = "authentication-methods";
+-    const QString kVncPwdKey = "vnc-password";
+-
+-    QGSettings *mVinoGsettings     = nullptr;
+-    QGSettings *mUkuiVinoGsettings = nullptr;
+-    QMap <QString, QString> mGsettingMap;
+-};
+-
+-#endif // VINOINTERFACE_H
+diff --git a/registeredSession/plugins/wallpaper/wallpaperinterface.cpp b/registeredSession/plugins/wallpaper/wallpaperinterface.cpp
+index 1ca44fd..aaf3eba 100644
+--- a/registeredSession/plugins/wallpaper/wallpaperinterface.cpp
++++ b/registeredSession/plugins/wallpaper/wallpaperinterface.cpp
+@@ -3,12 +3,12 @@
+ WallpaperInterface::WallpaperInterface()
+ {
+     WorkerObject *workThread = new WorkerObject(this);
++    workThread->start();
+     connect(workThread, &WorkerObject::wallpaperReaded, this, [=](QStringList previewFiles, QStringList sourceFiles) {
+         previewWallpaperList = previewFiles;
+         sourceWallpaperList  = sourceFiles;
+     });
+-    workThread->start();
+-
++    connect(workThread, &QThread::finished, workThread, &QThread::deleteLater);
+     mWallpaperMode.clear();
+     QString filename = UniversalInterface::self()->mateBackgroundGsettings()->get("picture-filename").toString();
+     if (filename.isEmpty()) {
+@@ -54,6 +54,7 @@ WallpaperInterface::WallpaperInterface()
+             Q_EMIT changed("wallpaper");
+         }
+     });
++    workThread->wait();
+ }
+ 
+ WallpaperInterface::~WallpaperInterface()
+diff --git a/registeredSession/plugins/wallpaper/xmlhandle.cpp b/registeredSession/plugins/wallpaper/xmlhandle.cpp
+index 34ffea9..8654355 100644
+--- a/registeredSession/plugins/wallpaper/xmlhandle.cpp
++++ b/registeredSession/plugins/wallpaper/xmlhandle.cpp
+@@ -245,54 +245,3 @@ void XmlHandle::_xmlGenerate(){
+ 
+     file.close();
+ }
+-
+-void XmlHandle::xmlUpdate(QMap<QString, QMap<QString, QString> > wallpaperinfosMap){
+-    QFile file(localconf);
+-    if (!file.open(QFile::WriteOnly | QFile::Text)){
+-        qDebug() << "Error Open XML File When Update Local Xml: " << file.errorString();
+-        return;
+-    }
+-
+-    if (0 == wallpaperinfosMap.count()){
+-        qDebug() << "Error QMap Empty";
+-        return;
+-    }
+-
+-    QMap<QString, QString> currentheadMap;
+-    currentheadMap =  wallpaperinfosMap.find("head").value();
+-
+-    QXmlStreamWriter writer;
+-    writer.setDevice(&file);
+-    writer.setAutoFormatting(true); //自动格式化
+-//    writer.setCodec(headMap.find("encoding"));
+-    writer.writeStartDocument(QString(currentheadMap.find("version").value()), false);
+-
+-    //DTD
+-    writer.writeDTD(QString::fromLocal8Bit("<!DOCTYPE %1 SYSTEM \"%2\">").arg(currentheadMap.find("doctype").value()).arg(currentheadMap.find("system").value()));
+-
+-    //BODY
+-    writer.writeStartElement("wallpapers");
+-    QMap<QString, QMap<QString, QString> >::iterator its = wallpaperinfosMap.begin();
+-    for (; its != wallpaperinfosMap.end(); its++){
+-        if (QString(its.key()) == "head")
+-            continue;
+-
+-        QMap<QString, QString> sourceMap = (QMap<QString, QString>)its.value();
+-        QMap<QString, QString>::iterator it = sourceMap.begin();
+-
+-        writer.writeStartElement("wallpaper");
+-        writer.writeAttribute("deleted", QString(sourceMap.find("deleted").value()));
+-
+-        for(; it != sourceMap.end(); it++){
+-            if (it.key() == "deleted")
+-                continue;
+-            writer.writeTextElement(QString(it.key()), QString(it.value()));
+-        }
+-
+-        writer.writeEndElement();
+-    }
+-    writer.writeEndElement();
+-    writer.writeEndDocument();
+-
+-    file.close();
+-}
+diff --git a/registeredSession/plugins/wallpaper/xmlhandle.h b/registeredSession/plugins/wallpaper/xmlhandle.h
+index 97f4a76..77ac8cf 100644
+--- a/registeredSession/plugins/wallpaper/xmlhandle.h
++++ b/registeredSession/plugins/wallpaper/xmlhandle.h
+@@ -38,7 +38,6 @@ public:
+ public:
+     void init();
+     void xmlreader(QString filename);
+-    void xmlUpdate(QMap<QString, QMap<QString, QString>> wallpaperinfosMap);
+     QMap<QString, QMap<QString, QString> > requireXmlData();
+ 
+ public:
+diff --git a/registeredSession/registeredSession.pro b/registeredSession/registeredSession.pro
+index 9189016..b1420dd 100644
+--- a/registeredSession/registeredSession.pro
++++ b/registeredSession/registeredSession.pro
+@@ -52,8 +52,6 @@ SOURCES += \
+         plugins/screensaver/screensaverinterface.cpp \
+         plugins/shortcut/getshortcutworker.cpp \
+         plugins/shortcut/shortcutinterface.cpp \
+-        plugins/shortcut/type.cpp \
+-        plugins/vino/vinointerface.cpp \
+         plugins/wallpaper/wallpaperinterface.cpp \
+         plugins/wallpaper/workerobject.cpp \
+         plugins/wallpaper/xmlhandle.cpp \
+@@ -78,7 +76,6 @@ HEADERS += \
+         plugins/shortcut/getshortcutworker.h \
+         plugins/shortcut/shortcutinterface.h \
+         plugins/shortcut/type.h \
+-        plugins/vino/vinointerface.h \
+         plugins/wallpaper/wallpaperinterface.h \
+         plugins/wallpaper/workerobject.h \
+         plugins/wallpaper/xmlhandle.h \
+diff --git a/tests/unit_test_datetime/unit_test_datetime.cpp b/tests/unit_test_datetime/unit_test_datetime.cpp
+index 32ae84a..c326b3a 100644
+--- a/tests/unit_test_datetime/unit_test_datetime.cpp
++++ b/tests/unit_test_datetime/unit_test_datetime.cpp
+@@ -94,3 +94,25 @@ TEST_F(DatetimeInterfaceTest, getNtpServers)
+    QStringList ret = m_pDatetimeInterface->getNtpServers();
+    ASSERT_STREQ(ret.at(0).toStdString().c_str(), "pool.ntp.org");
+ }
++
++TEST_F(DatetimeInterfaceTest, timezoneChanged)
++{
++   bool ret = m_pDatetimeInterface->timezoneChanged("timezone");
++   ASSERT_EQ(ret, true);
++}
++
++TEST_F(DatetimeInterfaceTest, getTimeMode)
++{
++   QString ret = m_pDatetimeInterface->getTimeMode();
++   if (ret == "automatic") {
++   	ASSERT_STREQ(ret.toStdString().c_str(), "automatic");
++   } else {
++   	ASSERT_STREQ(ret.toStdString().c_str(), "manual");
++   }
++}
++
++TEST_F(DatetimeInterfaceTest, getNtpServer)
++{
++   QString ret = m_pDatetimeInterface->getNtpServer();
++   ASSERT_GE(ret.size(), 0);
++}
+diff --git a/tests/unit_test_screenlock/unit_test_screenlock.cpp b/tests/unit_test_screenlock/unit_test_screenlock.cpp
+index c2bcee4..58f9314 100644
+--- a/tests/unit_test_screenlock/unit_test_screenlock.cpp
++++ b/tests/unit_test_screenlock/unit_test_screenlock.cpp
+@@ -32,6 +32,10 @@ protected:
+ 
+     static void TearDownTestSuite()
+     {
++        if (m_pScreenlockInterface) {
++	    delete m_pScreenlockInterface;
++	    m_pScreenlockInterface = nullptr;
++	}
+     }
+ 
+     static ScreenlockInterface *m_pScreenlockInterface;
+@@ -80,3 +84,9 @@ TEST_F(ScreenlockInterfaceTest, getSourceWallpapers)
+     int size = m_pScreenlockInterface->getSourceWallpapers().size();
+     ASSERT_GE(size, 0);
+ }
++
++TEST_F(ScreenlockInterfaceTest, getWallpaper)
++{
++    int size = m_pScreenlockInterface->getWallpaper().size();
++    ASSERT_GE(size, 0);
++}
+diff --git a/tests/unit_test_shortcut/unit_test_shortcut.cpp b/tests/unit_test_shortcut/unit_test_shortcut.cpp
+index 4c38573..8315ff2 100644
+--- a/tests/unit_test_shortcut/unit_test_shortcut.cpp
++++ b/tests/unit_test_shortcut/unit_test_shortcut.cpp
+@@ -20,7 +20,6 @@
+ #include <gtest/gtest.h>
+ #include <gtest/gtest-death-test.h>
+ #include "../../registeredSession/plugins/shortcut/shortcutinterface.h"
+-#include "../../registeredSession/plugins/shortcut/type.h"
+ 
+ class ShortcutInterfaceTest : public testing::Test
+ {
+@@ -33,10 +32,6 @@ protected:
+ 
+     static void TearDownTestSuite()
+     {
+-        if (m_pShortcutInterface) {
+-            delete m_pShortcutInterface;
+-            m_pShortcutInterface = nullptr;
+-        }
+     }
+ 
+     static ShortcutInterface *m_pShortcutInterface;
+@@ -76,6 +71,12 @@ TEST_F(ShortcutInterfaceTest, getShowShortcutString)
+     ASSERT_GE(newShortKey.toStdString().c_str(), "Win+A");
+ }
+ 
++TEST_F(ShortcutInterfaceTest, updateShortcut)
++{
++    bool ret = m_pShortcutInterface->updateShortcut();
++    ASSERT_EQ(ret, true);
++}
++
+ TEST_F(ShortcutInterfaceTest, setSystemShortcut)
+ {
+     QGSettings generalShort("org.ukui.SettingsDaemon.plugins.media-keys");
+diff --git a/tests/unit_test_shortcut/unit_test_shortcut.pro b/tests/unit_test_shortcut/unit_test_shortcut.pro
+index 23bee08..7e0df90 100644
+--- a/tests/unit_test_shortcut/unit_test_shortcut.pro
++++ b/tests/unit_test_shortcut/unit_test_shortcut.pro
+@@ -38,13 +38,9 @@ INCLUDEPATH += $$PROJECT_ROOTDIR \
+ 
+ SOURCES += ../../registeredSession/plugins/shortcut/shortcutinterface.cpp \
+ 	   ../../registeredSession/plugins/shortcut/getshortcutworker.cpp \
+-	   ../../registeredSession/plugins/shortcut/type.cpp \
+-           ../../registeredSession/universalinterface.cpp \
+            unit_test_shortcut.cpp \
+            main.cpp
+ 
+ HEADERS += ../../registeredSession/plugins/shortcut/shortcutinterface.h \
+            ../../registeredSession/plugins/shortcut/getshortcutworker.h \
+            ../../registeredSession/plugins/shortcut/type.h \
+-           ../../registeredSession/universalinterface.h
+-
+diff --git a/tests/unit_test_wallpaper/unit_test_wallpaper.cpp b/tests/unit_test_wallpaper/unit_test_wallpaper.cpp
+index b450cd6..142e008 100644
+--- a/tests/unit_test_wallpaper/unit_test_wallpaper.cpp
++++ b/tests/unit_test_wallpaper/unit_test_wallpaper.cpp
+@@ -32,6 +32,10 @@ protected:
+ 
+     static void TearDownTestSuite()
+     {
++	if (m_pWallpaperInterface) {
++	     delete m_pWallpaperInterface;
++	     m_pWallpaperInterface = nullptr;
++	}
+     }
+ 
+     static WallpaperInterface* m_pWallpaperInterface;
+@@ -43,6 +47,7 @@ TEST_F(WallpaperInterfaceTest, getWallpaperMode)
+ {
+     QGSettings gset("org.mate.background");
+     QString oldValue = gset.get("picture-filename").toString();
++    m_pWallpaperInterface->getWallpaper();
+     std::string curValue = m_pWallpaperInterface->getWallpaperMode().toStdString();
+     if (oldValue.isEmpty()) {
+         ASSERT_STREQ(curValue.c_str(), "color");
+@@ -51,18 +56,45 @@ TEST_F(WallpaperInterfaceTest, getWallpaperMode)
+     }
+ }
+ 
+-TEST_F(WallpaperInterfaceTest, setWallpaper)
++TEST_F(WallpaperInterfaceTest, setWallpaperPicture)
+ {
+     QGSettings gset("org.mate.background");
+     QString oldValue = gset.get("picture-filename").toString();
++    QString mode = "picture";
++    QString colorData = "";
++    if (oldValue.isEmpty()) {
++	mode = "color";
++    	colorData = gset.get("primary-color").toString();
++    }
+     std::string wallpaperMode = m_pWallpaperInterface->getWallpaperMode().toStdString();
+-    if (!oldValue.isEmpty()) {
+-        m_pWallpaperInterface->setWallpaper("picture", "/usr/share/backgrounds/city.jpg");
+-        std::string newValue = gset.get("picture-filename").toString().toStdString();
+-        ASSERT_STREQ(newValue.c_str(), "/usr/share/backgrounds/city.jpg");
++    m_pWallpaperInterface->setWallpaper("picture", "/usr/share/backgrounds/city.jpg");
++    std::string newValue = gset.get("picture-filename").toString().toStdString();
++    ASSERT_STREQ(newValue.c_str(), "/usr/share/backgrounds/city.jpg");
++    if (mode == "color") {
++        m_pWallpaperInterface->setWallpaper("color", colorData.toStdString().c_str());
++    } else {
+         m_pWallpaperInterface->setWallpaper("picture", oldValue.toStdString().c_str());
++    }
++}
++
++TEST_F(WallpaperInterfaceTest, setWallpaperColor)
++{
++    QGSettings gset("org.mate.background");
++    QString oldValue = gset.get("picture-filename").toString();
++    QString mode = "picture";
++    QString colorData = "";
++    if (oldValue.isEmpty()) {
++	mode = "color";
++    	colorData = gset.get("primary-color").toString();
++    }
++    std::string wallpaperMode = m_pWallpaperInterface->getWallpaperMode().toStdString();
++    m_pWallpaperInterface->setWallpaper("color", "#2d7d9a");
++    std::string newValue = gset.get("primary-color").toString().toStdString();
++    ASSERT_STREQ(newValue.c_str(), "#2d7d9a");
++    if (mode == "color") {
++        m_pWallpaperInterface->setWallpaper("color", colorData.toStdString().c_str());
+     } else {
+-        ASSERT_STREQ(wallpaperMode.c_str(), "color");
++        m_pWallpaperInterface->setWallpaper("picture", oldValue.toStdString().c_str());
+     }
+ }
+ 
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0122-142-vino.patch ukui-control-center-4.10.0.0/debian/patches/0122-142-vino.patch
--- ukui-control-center-4.10.0.0/debian/patches/0122-142-vino.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0122-142-vino.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,251 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Wed, 15 Jan 2025 09:11:00 +0000
+Subject: =?utf-8?b?ITE0MiDmm7TmlrB2aW5vIE1lcmdlIHB1bGwgcmVxdWVzdCAhMTQyIGZy?=
+ =?utf-8?b?b20g6IuP5Zej5YW4L29wZW5reWxpbi9uaWxlLTExMDc=?=
+
+---
+ registeredSession/main.cpp                       |   2 +
+ registeredSession/plugins/vino/vinointerface.cpp | 129 +++++++++++++++++++++++
+ registeredSession/plugins/vino/vinointerface.h   |  56 ++++++++++
+ registeredSession/registeredSession.pro          |   2 +
+ 4 files changed, 189 insertions(+)
+ create mode 100644 registeredSession/plugins/vino/vinointerface.cpp
+ create mode 100644 registeredSession/plugins/vino/vinointerface.h
+
+diff --git a/registeredSession/main.cpp b/registeredSession/main.cpp
+index 357580e..68f458a 100644
+--- a/registeredSession/main.cpp
++++ b/registeredSession/main.cpp
+@@ -9,6 +9,7 @@
+ 
+ #include "plugins/keyboard/keyboardinterface.h"
+ #include "plugins/mouse/mouseinterface.h"
++#include "plugins/vino/vinointerface.h"
+ #include "plugins/area/areainterface.h"
+ #include "plugins/default/defaultinterface.h"
+ #include "plugins/autoboot/autostartinterface.h"
+@@ -64,6 +65,7 @@ int main(int argc, char *argv[])
+     plugins["/Screenlock"] = new ScreenlockInterface;
+     plugins["/Shortcut"] = new ShortcutInterface;
+     plugins["/Screensaver"] = new ScreensaverInterface;
++    plugins["/Vino"] = new VinoInterface;
+ 
+     for (std::map<QString, QObject*>::value_type plugin : plugins)
+         registerPlugins(plugin.first, plugin.second, sessionBus);
+diff --git a/registeredSession/plugins/vino/vinointerface.cpp b/registeredSession/plugins/vino/vinointerface.cpp
+new file mode 100644
+index 0000000..da94c11
+--- /dev/null
++++ b/registeredSession/plugins/vino/vinointerface.cpp
+@@ -0,0 +1,129 @@
++#include "vinointerface.h"
++#include <QDebug>
++#include <QProcess>
++
++VinoInterface::VinoInterface()
++{
++    mVinoGsettings = UniversalInterface::self()->gnomeVinoGsettings();
++    mUkuiVinoGsettings = UniversalInterface::self()->ukuiVinoGsettings();
++
++    mGsettingMap[kVinoViewOnlyKey] = QString("viewOnly");
++    mGsettingMap[kVinoPromptKey] = QString("promptEnabled");
++    mGsettingMap[kAuthenticationKey] = QString("authenticationMethods");
++    mGsettingMap[kVncPwdKey] = QString("vncPassword");
++    mGsettingMap[kVinoEnableKey] = QString("vinoEnabled");
++    mGsettingMap[kXrdpEnableKey] = QString("xrdpEnabled");
++    mGsettingMap[kEnableKey] = QString("enabled");
++}
++
++bool VinoInterface::getViewOnly()
++{
++    if (mVinoGsettings->keys().contains("viewOnly")) {
++        return mVinoGsettings->get(kVinoViewOnlyKey).toBool();
++    } else {
++        qCritical() << "mVinoGsettings not contains the key: " << kVinoViewOnlyKey;
++    }
++    return false;
++}
++
++bool VinoInterface::getPromptEnabled()
++{
++    if (mVinoGsettings->keys().contains("promptEnabled")) {
++        return mVinoGsettings->get(kVinoPromptKey).toBool();
++    } else {
++        qCritical() << "mVinoGsettings not contains the key: " << kVinoPromptKey;
++    }
++    return false;
++}
++
++QString VinoInterface::getMethod()
++{
++    if (mVinoGsettings->keys().contains("authenticationMethods")) {
++        return mVinoGsettings->get(kAuthenticationKey).toString();
++    } else {
++        qCritical() << "mVinoGsettings not contains the key: " << kAuthenticationKey;
++    }
++    return QString();
++}
++
++QString VinoInterface::getPassword()
++{
++    if (mVinoGsettings->keys().contains("vncPassword")) {
++        return mVinoGsettings->get(kVncPwdKey).toString();
++    } else {
++        qCritical() << "mVinoGsettings not contains the key: " << kVncPwdKey;
++    }
++    return QString();
++}
++
++bool VinoInterface::getVinoServerStatus()
++{
++    QProcess process;
++    process.start("systemctl", QStringList() << "--user" << "is-active" << "vino-server.service");
++    process.waitForFinished();
++    bool isActive = process.readAllStandardOutput().replace("\n", "") == "active";
++    return isActive;
++}
++
++bool VinoInterface::getVinoStatus()
++{
++    if (mUkuiVinoGsettings->keys().contains("vinoEnabled")) {
++        return mUkuiVinoGsettings->get(kVinoEnableKey).toBool();
++    } else {
++        qCritical() << "mUkuiVinoGsettings not contains the key: " << kVinoEnableKey;
++    }
++    return false;
++}
++
++bool VinoInterface::getXrdpStatus()
++{
++    if (mUkuiVinoGsettings->keys().contains("xrdpEnabled")) {
++        return mUkuiVinoGsettings->get(kXrdpEnableKey).toBool();
++    } else {
++        qCritical() << "mUkuiVinoGsettings not contains the key: " << kXrdpEnableKey;
++    }
++    return false;
++}
++
++bool VinoInterface::getEnableStatus()
++{
++    if (mUkuiVinoGsettings->keys().contains("enabled")) {
++        return mUkuiVinoGsettings->get(kEnableKey).toBool();
++    } else {
++        qCritical() << "mUkuiVinoGsettings not contains the key: " << kEnableKey;
++    }
++    return false;
++}
++
++void VinoInterface::setVinoKey(const QString &key, bool value)
++{
++    if (mVinoGsettings->keys().contains(mGsettingMap[key])) {
++        return mVinoGsettings->set(key, value);
++    } else {
++        qCritical() << "mVinoGsettings not contains the key: " << key;
++    }
++
++    if (mUkuiVinoGsettings->keys().contains(mGsettingMap[key])) {
++        return mUkuiVinoGsettings->set(key, value);
++    } else {
++        qCritical() << "mUkuiVinoGsettings not contains the key: " << key;
++    }
++}
++
++void VinoInterface::setVinoKey(const QString &key, QString value)
++{
++    if (mVinoGsettings->keys().contains(mGsettingMap[key])) {
++        return mVinoGsettings->set(key, value);
++    } else {
++        qCritical() << "ukuiNoticeGsettings not contains the key: " << key;
++    }
++}
++
++void VinoInterface::setVinoKey(const QString &key, QByteArray value)
++{
++    if (mVinoGsettings->keys().contains(mGsettingMap[key])) {
++        return mVinoGsettings->set(key, value);
++    } else {
++        qCritical() << "ukuiNoticeGsettings not contains the key: " << key;
++    }
++}
+diff --git a/registeredSession/plugins/vino/vinointerface.h b/registeredSession/plugins/vino/vinointerface.h
+new file mode 100644
+index 0000000..2691edb
+--- /dev/null
++++ b/registeredSession/plugins/vino/vinointerface.h
+@@ -0,0 +1,56 @@
++#ifndef VINOINTERFACE_H
++#define VINOINTERFACE_H
++
++#include <QObject>
++#include <QDBusArgument>
++#include <QVariant>
++#include <QDBusMetaType>
++#include <QGSettings>
++#include "../../universalinterface.h"
++
++class VinoInterface : public QObject
++{
++    Q_OBJECT
++    Q_CLASSINFO("D-Bus Interface", "org.ukui.ukcc.session.Vino")
++    Q_PROPERTY(bool isViewOnly READ getViewOnly)
++    Q_PROPERTY(bool isPrompt READ getPromptEnabled)
++    Q_PROPERTY(QString method READ getMethod)
++    Q_PROPERTY(QString password READ getPassword)
++    Q_PROPERTY(bool isActive READ getVinoServerStatus)
++    Q_PROPERTY(bool isVino READ getVinoStatus)
++    Q_PROPERTY(bool isXrdp READ getXrdpStatus)
++    Q_PROPERTY(bool isEnable READ getEnableStatus)
++
++public:
++    VinoInterface();
++
++protected:
++    bool getViewOnly();
++    bool getPromptEnabled();
++    QString getMethod();
++    QString getPassword();
++    bool getVinoServerStatus();
++    bool getVinoStatus();
++    bool getXrdpStatus();
++    bool getEnableStatus();
++
++public Q_SLOTS:
++    void setVinoKey(const QString &key, bool value);
++    void setVinoKey(const QString &key, QString value);
++    void setVinoKey(const QString &key, QByteArray value);
++
++private:
++    const QString kEnableKey =  "enabled";
++    const QString kXrdpEnableKey = "xrdp-enabled";
++    const QString kVinoEnableKey = "vino-enabled";
++    const QString kVinoViewOnlyKey = "view-only";
++    const QString kVinoPromptKey = "prompt-enabled";
++    const QString kAuthenticationKey = "authentication-methods";
++    const QString kVncPwdKey = "vnc-password";
++
++    QGSettings *mVinoGsettings     = nullptr;
++    QGSettings *mUkuiVinoGsettings = nullptr;
++    QMap <QString, QString> mGsettingMap;
++};
++
++#endif // VINOINTERFACE_H
+diff --git a/registeredSession/registeredSession.pro b/registeredSession/registeredSession.pro
+index b1420dd..a2e7b05 100644
+--- a/registeredSession/registeredSession.pro
++++ b/registeredSession/registeredSession.pro
+@@ -53,6 +53,7 @@ SOURCES += \
+         plugins/shortcut/getshortcutworker.cpp \
+         plugins/shortcut/shortcutinterface.cpp \
+         plugins/wallpaper/wallpaperinterface.cpp \
++        plugins/vino/vinointerface.cpp \
+         plugins/wallpaper/workerobject.cpp \
+         plugins/wallpaper/xmlhandle.cpp \
+         ukccsessionserver.cpp \
+@@ -77,6 +78,7 @@ HEADERS += \
+         plugins/shortcut/shortcutinterface.h \
+         plugins/shortcut/type.h \
+         plugins/wallpaper/wallpaperinterface.h \
++        plugins/vino/vinointerface.h \
+         plugins/wallpaper/workerobject.h \
+         plugins/wallpaper/xmlhandle.h \
+         screenStruct.h \
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0123-143-380927-v11-2501.patch ukui-control-center-4.10.0.0/debian/patches/0123-143-380927-v11-2501.patch
--- ukui-control-center-4.10.0.0/debian/patches/0123-143-380927-v11-2501.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0123-143-380927-v11-2501.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,529 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Mon, 20 Jan 2025 08:10:02 +0000
+Subject: =?utf-8?b?ITE0MyAzODA5MjfjgJB2MTEtMjUwMeOAkeWNleWFg+a1i+ivlSDmjqc=?=
+ =?utf-8?b?5Yi26Z2i5p2/IE1lcmdlIHB1bGwgcmVxdWVzdCAhMTQzIGZyb20g5L2V5oCd6IOc?=
+ =?utf-8?b?L25pbGU=?=
+
+---
+ plugins/devices/mouse/mouse.cpp                    |   4 +-
+ registeredSession/plugins/mouse/mouseinterface.cpp |   9 +
+ registeredSession/plugins/mouse/mouseinterface.h   |   2 +-
+ registeredSession/plugins/vino/vinointerface.cpp   |  22 +-
+ registeredSession/plugins/vino/vinointerface.h     |  15 +-
+ tests/tests.pro                                    |   1 +
+ tests/unit_test_vino/main.cpp                      |   8 +
+ tests/unit_test_vino/unit_test_vino.cpp            | 244 +++++++++++++++++++++
+ tests/unit_test_vino/unit_test_vino.pro            |  40 ++++
+ 9 files changed, 323 insertions(+), 22 deletions(-)
+ create mode 100644 tests/unit_test_vino/main.cpp
+ create mode 100644 tests/unit_test_vino/unit_test_vino.cpp
+ create mode 100644 tests/unit_test_vino/unit_test_vino.pro
+
+diff --git a/plugins/devices/mouse/mouse.cpp b/plugins/devices/mouse/mouse.cpp
+index 1983540..63811b3 100644
+--- a/plugins/devices/mouse/mouse.cpp
++++ b/plugins/devices/mouse/mouse.cpp
+@@ -320,10 +320,10 @@ void Mouse::blinkCursorOnTextSlot(bool checked)
+     mouseDbus->call("setCursorBlink", checked);
+ 
+     if (!checked) {
+-        mouseDbus->call("setCursorSpeed", 0);
++        mouseDbus->call("setStyleCursorSpeed", 0);
+     } else {
+         int mValue = mouseWidget->cursorSpeedWidget()->slider()->maximum() - mouseWidget->cursorSpeedWidget()->slider()->value() + mouseWidget->cursorSpeedWidget()->slider()->minimum();
+-        mouseDbus->call("setCursorSpeed", mValue);
++        mouseDbus->call("setStyleCursorSpeed", mValue);
+     }
+ 
+     UkccCommon::buriedSettings(name(), mouseWidget->cursorSpeedWidget()->objectName(), QString("settings"), checked ? "true":"false");
+diff --git a/registeredSession/plugins/mouse/mouseinterface.cpp b/registeredSession/plugins/mouse/mouseinterface.cpp
+index 78b3fda..dfd16d5 100644
+--- a/registeredSession/plugins/mouse/mouseinterface.cpp
++++ b/registeredSession/plugins/mouse/mouseinterface.cpp
+@@ -251,6 +251,15 @@ void MouseInterface::setCursorSpeed(const int value)
+     }
+ }
+ 
++void MouseInterface::setStyleCursorSpeed(const int value)
++{
++    if (ukuiStyleGsettings->keys().contains(CURSOR_BLINK_KEY)) {
++        ukuiStyleGsettings->set("cursor-blink-time", value);
++    } else {
++        qCritical() << "ukuiStyleGsettings not contains the key: " << CURSOR_BLINK_KEY;
++    }
++}
++
+ void MouseInterface::resetKey(QString key)
+ {
+     if (key == "wheelSpeed") {
+diff --git a/registeredSession/plugins/mouse/mouseinterface.h b/registeredSession/plugins/mouse/mouseinterface.h
+index 9007ca4..14b9ece 100644
+--- a/registeredSession/plugins/mouse/mouseinterface.h
++++ b/registeredSession/plugins/mouse/mouseinterface.h
+@@ -67,9 +67,9 @@ public Q_SLOTS:
+     void setPointerSize(const int value);
+     void setCursorBlink(const bool checked);
+     void setCursorSpeed(const int value);
++    void setStyleCursorSpeed(const int value);
+ 
+     void resetKey(QString key);
+-
+ Q_SIGNALS:
+     void changed(QString keyName);
+ 
+diff --git a/registeredSession/plugins/vino/vinointerface.cpp b/registeredSession/plugins/vino/vinointerface.cpp
+index da94c11..3aad696 100644
+--- a/registeredSession/plugins/vino/vinointerface.cpp
++++ b/registeredSession/plugins/vino/vinointerface.cpp
+@@ -18,7 +18,7 @@ VinoInterface::VinoInterface()
+ 
+ bool VinoInterface::getViewOnly()
+ {
+-    if (mVinoGsettings->keys().contains("viewOnly")) {
++    if (mVinoGsettings != nullptr && mVinoGsettings->keys().contains("viewOnly")) {
+         return mVinoGsettings->get(kVinoViewOnlyKey).toBool();
+     } else {
+         qCritical() << "mVinoGsettings not contains the key: " << kVinoViewOnlyKey;
+@@ -28,7 +28,7 @@ bool VinoInterface::getViewOnly()
+ 
+ bool VinoInterface::getPromptEnabled()
+ {
+-    if (mVinoGsettings->keys().contains("promptEnabled")) {
++    if (mVinoGsettings != nullptr && mVinoGsettings->keys().contains("promptEnabled")) {
+         return mVinoGsettings->get(kVinoPromptKey).toBool();
+     } else {
+         qCritical() << "mVinoGsettings not contains the key: " << kVinoPromptKey;
+@@ -38,7 +38,7 @@ bool VinoInterface::getPromptEnabled()
+ 
+ QString VinoInterface::getMethod()
+ {
+-    if (mVinoGsettings->keys().contains("authenticationMethods")) {
++    if (mVinoGsettings != nullptr && mVinoGsettings->keys().contains("authenticationMethods")) {
+         return mVinoGsettings->get(kAuthenticationKey).toString();
+     } else {
+         qCritical() << "mVinoGsettings not contains the key: " << kAuthenticationKey;
+@@ -48,7 +48,7 @@ QString VinoInterface::getMethod()
+ 
+ QString VinoInterface::getPassword()
+ {
+-    if (mVinoGsettings->keys().contains("vncPassword")) {
++    if (mVinoGsettings != nullptr && mVinoGsettings->keys().contains("vncPassword")) {
+         return mVinoGsettings->get(kVncPwdKey).toString();
+     } else {
+         qCritical() << "mVinoGsettings not contains the key: " << kVncPwdKey;
+@@ -67,7 +67,7 @@ bool VinoInterface::getVinoServerStatus()
+ 
+ bool VinoInterface::getVinoStatus()
+ {
+-    if (mUkuiVinoGsettings->keys().contains("vinoEnabled")) {
++    if (mVinoGsettings != nullptr && mUkuiVinoGsettings->keys().contains("vinoEnabled")) {
+         return mUkuiVinoGsettings->get(kVinoEnableKey).toBool();
+     } else {
+         qCritical() << "mUkuiVinoGsettings not contains the key: " << kVinoEnableKey;
+@@ -77,7 +77,7 @@ bool VinoInterface::getVinoStatus()
+ 
+ bool VinoInterface::getXrdpStatus()
+ {
+-    if (mUkuiVinoGsettings->keys().contains("xrdpEnabled")) {
++    if (mVinoGsettings != nullptr && mUkuiVinoGsettings->keys().contains("xrdpEnabled")) {
+         return mUkuiVinoGsettings->get(kXrdpEnableKey).toBool();
+     } else {
+         qCritical() << "mUkuiVinoGsettings not contains the key: " << kXrdpEnableKey;
+@@ -87,7 +87,7 @@ bool VinoInterface::getXrdpStatus()
+ 
+ bool VinoInterface::getEnableStatus()
+ {
+-    if (mUkuiVinoGsettings->keys().contains("enabled")) {
++    if (mVinoGsettings != nullptr && mUkuiVinoGsettings->keys().contains("enabled")) {
+         return mUkuiVinoGsettings->get(kEnableKey).toBool();
+     } else {
+         qCritical() << "mUkuiVinoGsettings not contains the key: " << kEnableKey;
+@@ -97,13 +97,13 @@ bool VinoInterface::getEnableStatus()
+ 
+ void VinoInterface::setVinoKey(const QString &key, bool value)
+ {
+-    if (mVinoGsettings->keys().contains(mGsettingMap[key])) {
++    if (mVinoGsettings != nullptr && mVinoGsettings->keys().contains(mGsettingMap[key])) {
+         return mVinoGsettings->set(key, value);
+     } else {
+         qCritical() << "mVinoGsettings not contains the key: " << key;
+     }
+ 
+-    if (mUkuiVinoGsettings->keys().contains(mGsettingMap[key])) {
++    if (mUkuiVinoGsettings != nullptr && mUkuiVinoGsettings->keys().contains(mGsettingMap[key])) {
+         return mUkuiVinoGsettings->set(key, value);
+     } else {
+         qCritical() << "mUkuiVinoGsettings not contains the key: " << key;
+@@ -112,7 +112,7 @@ void VinoInterface::setVinoKey(const QString &key, bool value)
+ 
+ void VinoInterface::setVinoKey(const QString &key, QString value)
+ {
+-    if (mVinoGsettings->keys().contains(mGsettingMap[key])) {
++    if (mVinoGsettings != nullptr && mVinoGsettings->keys().contains(mGsettingMap[key])) {
+         return mVinoGsettings->set(key, value);
+     } else {
+         qCritical() << "ukuiNoticeGsettings not contains the key: " << key;
+@@ -121,7 +121,7 @@ void VinoInterface::setVinoKey(const QString &key, QString value)
+ 
+ void VinoInterface::setVinoKey(const QString &key, QByteArray value)
+ {
+-    if (mVinoGsettings->keys().contains(mGsettingMap[key])) {
++    if (mVinoGsettings != nullptr && mVinoGsettings->keys().contains(mGsettingMap[key])) {
+         return mVinoGsettings->set(key, value);
+     } else {
+         qCritical() << "ukuiNoticeGsettings not contains the key: " << key;
+diff --git a/registeredSession/plugins/vino/vinointerface.h b/registeredSession/plugins/vino/vinointerface.h
+index 2691edb..83252b8 100644
+--- a/registeredSession/plugins/vino/vinointerface.h
++++ b/registeredSession/plugins/vino/vinointerface.h
+@@ -5,7 +5,6 @@
+ #include <QDBusArgument>
+ #include <QVariant>
+ #include <QDBusMetaType>
+-#include <QGSettings>
+ #include "../../universalinterface.h"
+ 
+ class VinoInterface : public QObject
+@@ -40,13 +39,13 @@ public Q_SLOTS:
+     void setVinoKey(const QString &key, QByteArray value);
+ 
+ private:
+-    const QString kEnableKey =  "enabled";
+-    const QString kXrdpEnableKey = "xrdp-enabled";
+-    const QString kVinoEnableKey = "vino-enabled";
+-    const QString kVinoViewOnlyKey = "view-only";
+-    const QString kVinoPromptKey = "prompt-enabled";
+-    const QString kAuthenticationKey = "authentication-methods";
+-    const QString kVncPwdKey = "vnc-password";
++    QString kEnableKey =  "enabled";
++    QString kXrdpEnableKey = "xrdp-enabled";
++    QString kVinoEnableKey = "vino-enabled";
++    QString kVinoViewOnlyKey = "view-only";
++    QString kVinoPromptKey = "prompt-enabled";
++    QString kAuthenticationKey = "authentication-methods";
++    QString kVncPwdKey = "vnc-password";
+ 
+     QGSettings *mVinoGsettings     = nullptr;
+     QGSettings *mUkuiVinoGsettings = nullptr;
+diff --git a/tests/tests.pro b/tests/tests.pro
+index 7f1158d..31ce3a6 100644
+--- a/tests/tests.pro
++++ b/tests/tests.pro
+@@ -11,6 +11,7 @@ SUBDIRS = unit_test_keyboard \
+           unit_test_screensaver \
+           unit_test_shortcut \
+           unit_test_wallpaper \
++          unit_test_vino \
+ 
+ 
+ # 打桩工具
+diff --git a/tests/unit_test_vino/main.cpp b/tests/unit_test_vino/main.cpp
+new file mode 100644
+index 0000000..9250f9b
+--- /dev/null
++++ b/tests/unit_test_vino/main.cpp
+@@ -0,0 +1,8 @@
++#include <gtest/gtest.h>
++
++int main(int argc, char **argv)
++{
++    testing::InitGoogleTest(&argc, argv);
++
++    return RUN_ALL_TESTS();
++}
+diff --git a/tests/unit_test_vino/unit_test_vino.cpp b/tests/unit_test_vino/unit_test_vino.cpp
+new file mode 100644
+index 0000000..320819c
+--- /dev/null
++++ b/tests/unit_test_vino/unit_test_vino.cpp
+@@ -0,0 +1,244 @@
++/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
++ *
++ * Copyright (C) 2024 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 this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
++ *
++ */
++#include <gtest/gtest.h>
++#include <gtest/gtest-death-test.h>
++
++#include "../../registeredSession/plugins/vino/vinointerface.h"
++
++#include "stubext.h"
++using namespace stub_ext;
++
++class VinoInterfaceTest : public testing::Test
++{
++protected:
++    static void SetUpTestSuite()
++    {
++        m_pVinoDbus = new VinoInterface();
++    }
++
++    static void TearDownTestSuite()
++    {
++        delete m_pVinoDbus;
++        m_pVinoDbus = nullptr;
++    }
++
++    static VinoInterface *m_pVinoDbus;
++};
++
++VinoInterface *VinoInterfaceTest::m_pVinoDbus = nullptr;
++
++TEST_F(VinoInterfaceTest, viewOnly)
++{
++    // get current value
++    bool repeatKeyValue = m_pVinoDbus->getViewOnly();
++
++    // call setKeyRepeat function to set different value
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kVinoViewOnlyKey, !repeatKeyValue);
++
++    // test the current value and the value you have set
++    ASSERT_EQ(!repeatKeyValue, m_pVinoDbus->getViewOnly());
++
++    // restore the value before test
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kVinoViewOnlyKey, repeatKeyValue);
++}
++
++TEST_F(VinoInterfaceTest, noViewOnly)
++{
++    // get current value
++    QString originKey = m_pVinoDbus->kVinoViewOnlyKey;
++    m_pVinoDbus->kVinoViewOnlyKey = "";
++
++    bool repeatKeyValue = m_pVinoDbus->getViewOnly();
++
++    // call setKeyRepeat function to set different value
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kVinoViewOnlyKey, !repeatKeyValue);
++
++    // test the current value and the value you have set
++    ASSERT_EQ(!repeatKeyValue, m_pVinoDbus->getViewOnly());
++
++    // restore the value before test
++    m_pVinoDbus->kVinoViewOnlyKey = originKey;
++}
++
++TEST_F(VinoInterfaceTest, PromptEnabled)
++{
++    bool promptKeyValue = m_pVinoDbus->getPromptEnabled();
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kVinoPromptKey, !promptKeyValue);
++
++    ASSERT_EQ(promptKeyValue, m_pVinoDbus->getPromptEnabled());
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kVinoPromptKey, promptKeyValue);
++}
++
++TEST_F(VinoInterfaceTest, noPromptEnabled)
++{
++    // get current value
++    QString originKey = m_pVinoDbus->kVinoPromptKey;
++    m_pVinoDbus->kVinoPromptKey = "";
++
++    bool promptKeyValue = m_pVinoDbus->getPromptEnabled();
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kVinoPromptKey, !promptKeyValue);
++
++    ASSERT_EQ(promptKeyValue, m_pVinoDbus->getPromptEnabled());
++
++    // restore the value before test
++    m_pVinoDbus->kVinoPromptKey = originKey;
++}
++
++TEST_F(VinoInterfaceTest, Method)
++{
++    QString methodKeyValue = m_pVinoDbus->getMethod();
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kAuthenticationKey, methodKeyValue);
++
++    ASSERT_EQ(methodKeyValue, m_pVinoDbus->getMethod());
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kAuthenticationKey, methodKeyValue);
++}
++
++TEST_F(VinoInterfaceTest, noMethod)
++{
++    // get current value
++    QString originKey = m_pVinoDbus->kAuthenticationKey;
++    m_pVinoDbus->kAuthenticationKey = "";
++
++    QString methodKeyValue = m_pVinoDbus->getMethod();
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kAuthenticationKey, methodKeyValue);
++
++    ASSERT_EQ(methodKeyValue, m_pVinoDbus->getMethod());
++
++    // restore the value before test
++    m_pVinoDbus->kAuthenticationKey = originKey;
++}
++
++
++TEST_F(VinoInterfaceTest, Password)
++{
++    QString passwordKeyValue = m_pVinoDbus->getPassword();
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kVncPwdKey, passwordKeyValue);
++
++    ASSERT_EQ(passwordKeyValue, m_pVinoDbus->getPassword());
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kVncPwdKey, passwordKeyValue);
++}
++
++TEST_F(VinoInterfaceTest, noPassword)
++{
++    // get current value
++    QString originKey = m_pVinoDbus->kVncPwdKey;
++    m_pVinoDbus->kVncPwdKey = "";
++
++    QString passwordKeyValue = m_pVinoDbus->getPassword();
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kVncPwdKey, passwordKeyValue);
++
++    ASSERT_EQ(passwordKeyValue, m_pVinoDbus->getPassword());
++
++    // restore the value before test
++    m_pVinoDbus->kVncPwdKey = originKey;
++}
++
++TEST_F(VinoInterfaceTest, VinoServerStatus)
++{
++    bool currentValue = m_pVinoDbus->getVinoServerStatus();
++}
++
++TEST_F(VinoInterfaceTest, VinoStatus)
++{
++    bool currentValue = m_pVinoDbus->getVinoStatus();
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kVinoEnableKey, !currentValue);
++
++    ASSERT_EQ(!currentValue, m_pVinoDbus->getVinoStatus());
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kVinoEnableKey, currentValue);
++}
++
++TEST_F(VinoInterfaceTest, noVinoStatus)
++{
++    // get current value
++    QString originKey = m_pVinoDbus->kVinoEnableKey;
++    m_pVinoDbus->kVinoEnableKey = "";
++
++    bool currentValue = m_pVinoDbus->getVinoStatus();
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kVinoEnableKey, !currentValue);
++
++    ASSERT_EQ(!currentValue, m_pVinoDbus->getVinoStatus());
++
++    // restore the value before test
++    m_pVinoDbus->kVinoEnableKey = originKey;
++}
++
++TEST_F(VinoInterfaceTest, XrdpStatus)
++{
++    bool currentValue = m_pVinoDbus->getXrdpStatus();
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kXrdpEnableKey, !currentValue);
++
++    ASSERT_EQ(!currentValue, m_pVinoDbus->getXrdpStatus());
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kXrdpEnableKey, currentValue);
++}
++
++TEST_F(VinoInterfaceTest, noXrdpStatus)
++{
++    // get current value
++    QString originKey = m_pVinoDbus->kXrdpEnableKey;
++    m_pVinoDbus->kXrdpEnableKey = "";
++
++    int currentValue = m_pVinoDbus->getXrdpStatus();
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kXrdpEnableKey, currentValue);
++
++    // restore the value before test
++    m_pVinoDbus->kXrdpEnableKey = originKey;
++}
++
++TEST_F(VinoInterfaceTest, noEnableStatus)
++{
++    bool currentValue = m_pVinoDbus->getEnableStatus();
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kEnableKey, !currentValue);
++
++    ASSERT_EQ(currentValue, m_pVinoDbus->getEnableStatus());
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kEnableKey, currentValue);
++}
++
++TEST_F(VinoInterfaceTest, EnableStatus)
++{
++    // get current value
++    QString originKey = m_pVinoDbus->kEnableKey;
++    m_pVinoDbus->kEnableKey = "";
++
++    bool currentValue = m_pVinoDbus->getEnableStatus();
++
++    m_pVinoDbus->setVinoKey(m_pVinoDbus->kEnableKey, !currentValue);
++
++    ASSERT_EQ(currentValue, m_pVinoDbus->getEnableStatus());
++
++    // restore the value before test
++    m_pVinoDbus->kEnableKey = originKey;
++}
+diff --git a/tests/unit_test_vino/unit_test_vino.pro b/tests/unit_test_vino/unit_test_vino.pro
+new file mode 100644
+index 0000000..8147c7d
+--- /dev/null
++++ b/tests/unit_test_vino/unit_test_vino.pro
+@@ -0,0 +1,40 @@
++#-------------------------------------------------
++#
++# Project created by QtCreator 2019-08-22T11:12:59
++#
++#-------------------------------------------------
++QT += dbus
++QT -= gui
++#greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
++TEMPLATE = app
++
++TARGET = unit_test_vino
++target.source += $$TARGET
++target.path = ./
++
++#代码覆盖率工具gcov
++QMAKE_LFLAGS +=-fprofile-arcs -ftest-coverage
++QMAKE_CXXFLAGS += --coverage -fno-inline -fno-access-control
++
++LIBS          += -lgtest_main -lpthread
++LIBS          +=  -L$$[QT_INSTALL_LIBS] -lgsettings-qt  -lgtest -lgcov
++
++#OBJECTS_DIR = ./obj
++#MOC_DIR = ./moc
++
++#打桩工具
++TEST_UTILS_PATH = $$PWD/../kt-test-utils
++
++# Include directories
++INCLUDEPATH += $$PROJECT_ROOTDIR \
++               $$TEST_UTILS_PATH/cpp-stub \
++               $$TEST_UTILS_PATH/cpp-stub-ext \
++
++SOURCES += ../../registeredSession/plugins/vino/vinointerface.cpp \
++           ../../registeredSession/universalinterface.cpp \
++           unit_test_vino.cpp \
++           main.cpp
++
++HEADERS += ../../registeredSession/plugins/vino/vinointerface.h \
++           ../../registeredSession/universalinterface.h
++
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0124-146-326999-core.patch ukui-control-center-4.10.0.0/debian/patches/0124-146-326999-core.patch
--- ukui-control-center-4.10.0.0/debian/patches/0124-146-326999-core.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0124-146-326999-core.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,68 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Mon, 20 Jan 2025 08:45:14 +0000
+Subject: =?utf-8?b?ITE0NiAzMjY5OTkg44CQ6K6+572u44CR57O757uf5a6J6KOF5oiQ5Yqf?=
+ =?utf-8?b?77yM56ys5LiA5qyh6L+b5YWl57O757uf77yM5pyq5pON5L2c5pe25by55Ye65byC?=
+ =?utf-8?b?5bi45oql6ZSZ77yM5a2Y5ZyoY29yZeaWh+S7tiBNZXJnZSBwdWxsIHJlcXVlc3Qg?=
+ =?utf-8?b?ITE0NiBmcm9tIOiLj+WXo+WFuC9vcGVua3lsaW4vbmlsZS0xMjEw?=
+
+---
+ plugins/personalized/wallpaper/wallpaper.cpp | 9 +++++----
+ plugins/personalized/wallpaper/wallpaper.h   | 4 +---
+ 2 files changed, 6 insertions(+), 7 deletions(-)
+
+diff --git a/plugins/personalized/wallpaper/wallpaper.cpp b/plugins/personalized/wallpaper/wallpaper.cpp
+index a07ddcf..7c7675f 100644
+--- a/plugins/personalized/wallpaper/wallpaper.cpp
++++ b/plugins/personalized/wallpaper/wallpaper.cpp
+@@ -48,9 +48,6 @@ Wallpaper::Wallpaper()
+     pluginName = tr("Background");
+     pluginType = PERSONALIZED;
+     picInfoList.clear();
+-    QtConcurrent::run([=]{
+-        preInitialize();
+-    });
+ }
+ 
+ Wallpaper::~Wallpaper()
+@@ -69,7 +66,7 @@ int Wallpaper::pluginTypes() {
+     return pluginType;
+ }
+ 
+-void Wallpaper::preInitialize() {
++void Wallpaper::loadPictureInfo() {
+     wallpaperInterface = new QDBusInterface("org.ukui.ukcc.session",
+                                            "/Wallpaper",
+                                            "org.ukui.ukcc.session.Wallpaper",
+@@ -115,6 +112,9 @@ void Wallpaper::preInitialize() {
+                 file.close();
+             }
+         }
++        if (qPixmap.isNull()) {
++            qDebug() << Q_FUNC_INFO << "filename" << filename << "to pixmap is null";
++        }
+         QPixmap pixmap = qPixmap.scaled(IMAGE_SIZE);
+ 
+         QFile wallpaperFile;
+@@ -181,6 +181,7 @@ void Wallpaper::dataChanged(const QString &key)
+ 
+ void Wallpaper::initContent()
+ {
++    loadPictureInfo();
+     initModes();
+     initTypes();
+     initMode();
+diff --git a/plugins/personalized/wallpaper/wallpaper.h b/plugins/personalized/wallpaper/wallpaper.h
+index c7e5fe7..042422e 100644
+--- a/plugins/personalized/wallpaper/wallpaper.h
++++ b/plugins/personalized/wallpaper/wallpaper.h
+@@ -65,9 +65,7 @@ public:
+     void initPictures();
+     void connectUiSignals();
+     void showLocalWpDialog();
+-
+-private:
+-    void preInitialize();
++    void loadPictureInfo();
+ 
+ private:
+     bool            mFirstLoad;
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0125-145-update-display-log.patch ukui-control-center-4.10.0.0/debian/patches/0125-145-update-display-log.patch
--- ukui-control-center-4.10.0.0/debian/patches/0125-145-update-display-log.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0125-145-update-display-log.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,15119 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Mon, 20 Jan 2025 09:19:03 +0000
+Subject: =?utf-8?q?!145_update_display_log_Merge_pull_request_!145_from_?=
+ =?utf-8?q?=E8=8B=8F=E5=97=A3=E5=85=B8/openkylin/nile-1107?=
+
+---
+ plugins/application/autoboot/addautoboot.cpp       |  344 ---
+ plugins/application/autoboot/addautoboot.h         |   98 -
+ plugins/application/autoboot/autoboot.cpp          |    1 -
+ plugins/application/autoboot/autoboot.h            |    1 -
+ plugins/application/autoboot/autoboot.pro          |    2 -
+ plugins/application/autoboot/autobootui.cpp        |    3 +-
+ plugins/application/autoboot/autobootui.h          |    4 +-
+ plugins/application/defaultapp/defaultapp.h        |    2 -
+ plugins/application/defaultapp/defaultappui.cpp    |    3 +-
+ plugins/application/defaultapp/defaultappui.h      |    5 +-
+ plugins/devices/printer/printer.cpp                |    3 +-
+ plugins/devices/printer/printer.h                  |    8 +-
+ plugins/devices/printer/printer.pro                |    2 -
+ plugins/devices/printer/printerbtn.cpp             |    3 +-
+ plugins/devices/printer/printerbtn.h               |    4 +
+ plugins/devices/shortcut/addshortcutdialog.cpp     |    1 -
+ plugins/devices/shortcut/addshortcutdialog.h       |    2 +
+ plugins/devices/shortcut/addshortcutdialog.ui      |   16 +-
+ plugins/devices/shortcut/shortcut.pro              |    2 -
+ plugins/devices/shortcut/shortcut.ui               |  160 --
+ plugins/devices/shortcut/shortcutui.cpp            |   10 +-
+ plugins/devices/shortcut/shortcutui.h              |    9 +-
+ plugins/personalized/fonts/fonts.cpp               |    2 +-
+ plugins/personalized/fonts/fonts.h                 |    1 +
+ plugins/personalized/fonts/fonts.ui                |   17 +-
+ plugins/personalized/screenlock/screenlock.ui      |  275 ---
+ plugins/personalized/screenlock/screenlockui.cpp   |    6 +-
+ plugins/personalized/screenlock/screenlockui.h     |    8 +-
+ plugins/personalized/screensaver/screensaver.pro   |    1 -
+ plugins/personalized/screensaver/screensaver.ui    |  254 --
+ plugins/personalized/screensaver/screensaverui.cpp |   17 +-
+ plugins/personalized/screensaver/screensaverui.h   |    6 +-
+ plugins/personalized/theme/theme.cpp               |   24 +-
+ plugins/personalized/theme/theme.h                 |   17 +-
+ plugins/personalized/theme/theme.pro               |    1 -
+ plugins/personalized/theme/themewidget.cpp         |    4 +-
+ plugins/personalized/theme/themewidget.h           |    4 +-
+ plugins/personalized/wallpaper/colordialog.cpp     |    1 -
+ plugins/personalized/wallpaper/wallpaper.pro       |    2 -
+ plugins/personalized/wallpaper/wallpaper.ui        |  387 ----
+ plugins/personalized/wallpaper/wallpaperui.cpp     |    3 +-
+ plugins/personalized/wallpaper/wallpaperui.h       |    7 +-
+ plugins/plugins.pro                                |    4 -
+ plugins/system/about/about.cpp                     |    4 +-
+ plugins/system/about/about.h                       |    2 -
+ plugins/system/about/aboutui.cpp                   |   64 +-
+ plugins/system/about/aboutui.h                     |   59 +-
+ plugins/system/about/privacydialog.cpp             |    1 +
+ plugins/system/about/privacydialog.h               |    1 -
+ plugins/system/about/statusdialog.cpp              |   13 +-
+ plugins/system/about/statusdialog.h                |   15 +-
+ plugins/system/about/trialdialog.cpp               |    3 +-
+ plugins/system/about/trialdialog.h                 |    6 +-
+ plugins/system/display/brightnessFrame.cpp         |    2 +-
+ plugins/system/display/brightnessFrame.h           |    5 +-
+ plugins/system/display/display.pro                 |    9 +-
+ plugins/system/display/display.ui                  |    6 +-
+ .../system/display/displayperformancedialog.cpp    |  213 --
+ plugins/system/display/displayperformancedialog.h  |   58 -
+ plugins/system/display/displayperformancedialog.ui |  818 -------
+ plugins/system/display/widget.cpp                  |   18 +-
+ plugins/system/display/widget.h                    |   18 +-
+ plugins/system/display_hw/brightnessFrame.cpp      |   42 -
+ plugins/system/display_hw/brightnessFrame.h        |   26 -
+ plugins/system/display_hw/colorinfo.h              |   32 -
+ plugins/system/display_hw/controlpanel.cpp         |  175 --
+ plugins/system/display_hw/controlpanel.h           |   62 -
+ .../system/display_hw/declarative/qmloutput.cpp    |  606 -----
+ plugins/system/display_hw/declarative/qmloutput.h  |  217 --
+ .../display_hw/declarative/qmloutputcomponent.cpp  |   63 -
+ .../display_hw/declarative/qmloutputcomponent.h    |   43 -
+ .../system/display_hw/declarative/qmlscreen.cpp    |  708 ------
+ plugins/system/display_hw/declarative/qmlscreen.h  |  133 --
+ plugins/system/display_hw/display_hw.cpp           |  105 -
+ plugins/system/display_hw/display_hw.h             |   64 -
+ plugins/system/display_hw/display_hw.pro           |   70 -
+ plugins/system/display_hw/display_hw.ui            |  931 --------
+ .../system/display_hw/displayperformancedialog.cpp |  213 --
+ .../system/display_hw/displayperformancedialog.h   |   58 -
+ .../system/display_hw/displayperformancedialog.ui  |  813 -------
+ plugins/system/display_hw/outputconfig.cpp         |  439 ----
+ plugins/system/display_hw/outputconfig.h           |   88 -
+ plugins/system/display_hw/qml.qrc                  |    6 -
+ plugins/system/display_hw/qml/Output.qml           |  277 ---
+ plugins/system/display_hw/qml/main.qml             |   75 -
+ plugins/system/display_hw/resolutionslider.cpp     |  206 --
+ plugins/system/display_hw/resolutionslider.h       |   53 -
+ plugins/system/display_hw/scalesize.h              |   42 -
+ plugins/system/display_hw/screenConfig.h           |   35 -
+ plugins/system/display_hw/unifiedoutputconfig.cpp  |  489 ----
+ plugins/system/display_hw/unifiedoutputconfig.h    |   46 -
+ plugins/system/display_hw/utils.cpp                |   24 -
+ plugins/system/display_hw/utils.h                  |   36 -
+ plugins/system/display_hw/widget.cpp               | 2440 --------------------
+ plugins/system/display_hw/widget.h                 |  260 ---
+ plugins/system/notice/notice.h                     |    1 -
+ plugins/system/notice/noticeui.h                   |    1 -
+ plugins/system/power/power.h                       |    2 -
+ plugins/time-language/area/area.pro                |    1 -
+ plugins/time-language/area/area.ui                 |  184 --
+ plugins/time-language/area/areaui.cpp              |   11 +-
+ plugins/time-language/area/areaui.h                |   14 +-
+ plugins/time-language/datetime/changtime.cpp       |    1 -
+ plugins/time-language/datetime/changtime.ui        |  627 -----
+ plugins/time-language/datetime/datetime.pro        |    2 -
+ plugins/time-language/datetime/datetime.ui         |  342 ---
+ plugins/time-language/datetime/datetimeui.cpp      |   24 +-
+ plugins/time-language/datetime/datetimeui.h        |   25 +-
+ plugins/time-language/datetime/timeBtn.cpp         |    2 +-
+ plugins/time-language/datetime/timeBtn.h           |    6 +-
+ plugins/time-language/datetime/timelabel.cpp       |    2 +-
+ plugins/time-language/datetime/timelabel.h         |    6 +-
+ .../datetime/worldMap/timezonechooser.cpp          |    1 -
+ 113 files changed, 276 insertions(+), 12892 deletions(-)
+ delete mode 100644 plugins/application/autoboot/addautoboot.cpp
+ delete mode 100644 plugins/application/autoboot/addautoboot.h
+ delete mode 100644 plugins/devices/shortcut/shortcut.ui
+ delete mode 100644 plugins/personalized/screenlock/screenlock.ui
+ delete mode 100644 plugins/personalized/screensaver/screensaver.ui
+ delete mode 100644 plugins/personalized/wallpaper/wallpaper.ui
+ delete mode 100644 plugins/system/display/displayperformancedialog.cpp
+ delete mode 100644 plugins/system/display/displayperformancedialog.h
+ delete mode 100644 plugins/system/display/displayperformancedialog.ui
+ delete mode 100644 plugins/system/display_hw/brightnessFrame.cpp
+ delete mode 100644 plugins/system/display_hw/brightnessFrame.h
+ delete mode 100644 plugins/system/display_hw/colorinfo.h
+ delete mode 100644 plugins/system/display_hw/controlpanel.cpp
+ delete mode 100644 plugins/system/display_hw/controlpanel.h
+ delete mode 100644 plugins/system/display_hw/declarative/qmloutput.cpp
+ delete mode 100644 plugins/system/display_hw/declarative/qmloutput.h
+ delete mode 100644 plugins/system/display_hw/declarative/qmloutputcomponent.cpp
+ delete mode 100644 plugins/system/display_hw/declarative/qmloutputcomponent.h
+ delete mode 100644 plugins/system/display_hw/declarative/qmlscreen.cpp
+ delete mode 100644 plugins/system/display_hw/declarative/qmlscreen.h
+ delete mode 100644 plugins/system/display_hw/display_hw.cpp
+ delete mode 100644 plugins/system/display_hw/display_hw.h
+ delete mode 100644 plugins/system/display_hw/display_hw.pro
+ delete mode 100644 plugins/system/display_hw/display_hw.ui
+ delete mode 100644 plugins/system/display_hw/displayperformancedialog.cpp
+ delete mode 100644 plugins/system/display_hw/displayperformancedialog.h
+ delete mode 100644 plugins/system/display_hw/displayperformancedialog.ui
+ delete mode 100644 plugins/system/display_hw/outputconfig.cpp
+ delete mode 100644 plugins/system/display_hw/outputconfig.h
+ delete mode 100644 plugins/system/display_hw/qml.qrc
+ delete mode 100644 plugins/system/display_hw/qml/Output.qml
+ delete mode 100644 plugins/system/display_hw/qml/main.qml
+ delete mode 100644 plugins/system/display_hw/resolutionslider.cpp
+ delete mode 100644 plugins/system/display_hw/resolutionslider.h
+ delete mode 100644 plugins/system/display_hw/scalesize.h
+ delete mode 100644 plugins/system/display_hw/screenConfig.h
+ delete mode 100644 plugins/system/display_hw/unifiedoutputconfig.cpp
+ delete mode 100644 plugins/system/display_hw/unifiedoutputconfig.h
+ delete mode 100644 plugins/system/display_hw/utils.cpp
+ delete mode 100644 plugins/system/display_hw/utils.h
+ delete mode 100644 plugins/system/display_hw/widget.cpp
+ delete mode 100644 plugins/system/display_hw/widget.h
+ delete mode 100644 plugins/time-language/area/area.ui
+ delete mode 100644 plugins/time-language/datetime/changtime.ui
+ delete mode 100644 plugins/time-language/datetime/datetime.ui
+
+diff --git a/plugins/application/autoboot/addautoboot.cpp b/plugins/application/autoboot/addautoboot.cpp
+deleted file mode 100644
+index 2f6eda4..0000000
+--- a/plugins/application/autoboot/addautoboot.cpp
++++ /dev/null
+@@ -1,344 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "addautoboot.h"
+-#include "closebutton.h"
+-
+-#include <QDebug>
+-#include <QFileInfo>
+-#include <QSettings>
+-#include <QPushButton>
+-#include <QApplication>
+-
+-// #define DESKTOPPATH "/etc/xdg/autostart/"
+-#define DESKTOPPATH "/usr/share/applications/"
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-AddAutoBoot::AddAutoBoot(QWidget *parent) :
+-    QDialog(parent)
+-{
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-
+-    initUi(this);
+-    initStyle();
+-    initConnection();
+-}
+-
+-void AddAutoBoot::resetBeforeClose()
+-{
+-    userEditNameFlag = false;
+-    userEditCommentFlag = false;
+-    mCertainBtn->setEnabled(false);
+-    mHintLabel->clear();
+-    mAppNameEdit->setToolTip("");
+-    mAppBewriteEdit->setToolTip("");
+-    mAppPathEdit->setToolTip("");
+-    mAppNameEdit->setText(QString());
+-    mAppBewriteEdit->setText(QString());
+-    mAppPathEdit->setText(QString());
+-    close();
+-}
+-
+-void AddAutoBoot::paintEvent(QPaintEvent *event)
+-{
+-    Q_UNUSED(event);
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 10, 10);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 10, false, false);
+-
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath, palette().color(QPalette::Base));
+-    p.restore();
+-}
+-void AddAutoBoot::initUi(QDialog *AddAutoBoot)
+-{
+-     AddAutoBoot->resize(420, 308);
+-     QVBoxLayout *mverticalLayout = new QVBoxLayout(AddAutoBoot);
+-     mverticalLayout->setSpacing(16);
+-     mverticalLayout->setContentsMargins(32, 32, 32, 24);
+-
+-     mTitleLabel = new QLabel(AddAutoBoot);
+-
+-     mAppFrame = new QFrame(AddAutoBoot);
+-     mAppFrame->setFixedSize(356,160);
+-     mAppFrame->setFrameShape(QFrame::NoFrame);
+-     mAppFrame->setFrameShadow(QFrame::Raised);
+-
+-     QGridLayout *mAppLayout = new QGridLayout(mAppFrame);
+-     mAppLayout->setHorizontalSpacing(8);
+-     mAppLayout->setVerticalSpacing(4);
+-     mAppNameLabel = new FixLabel(mAppFrame);
+-     mAppPathLabel = new FixLabel(mAppFrame);
+-     mAppBewriteLabel = new FixLabel(mAppFrame);
+-     mAppNameEdit = new QLineEdit(mAppFrame);
+-     mAppPathEdit = new QLineEdit(mAppFrame);
+-     mAppBewriteEdit = new QLineEdit(mAppFrame);
+-     mOpenBtn = new QPushButton(mAppFrame);
+-     mHintLabel = new QLabel(mAppFrame);
+-
+-     mOpenBtn->setContentsMargins(8, 0, 8, 0);
+-     mAppLayout->addWidget(mAppNameLabel,0,0,1,2);
+-     mAppLayout->addWidget(mAppNameEdit,0,2,1,3);
+-     mAppLayout->addWidget(mAppPathLabel,1,0,1,2);
+-     mAppLayout->addWidget(mAppPathEdit,1,2,1,2);
+-     mAppLayout->addWidget(mOpenBtn,1,4,1,1);
+-     mAppLayout->addWidget(mAppBewriteLabel,2,0,1,2);
+-     mAppLayout->addWidget(mAppBewriteEdit,2,2,1,3);
+-     mAppLayout->addWidget(mHintLabel,3,2,1,3);
+-
+-     mBtnFrame = new QFrame(AddAutoBoot);
+-     mBtnFrame->setFixedSize(356,36);
+-     mBtnFrame->setFrameShape(QFrame::NoFrame);
+-
+-     QHBoxLayout *mBtnLayout = new QHBoxLayout(mBtnFrame);
+-     mBtnLayout->setContentsMargins(0,0,0,0);
+-     mBtnLayout->setSpacing(16);
+-     mCancelBtn = new QPushButton(mBtnFrame);
+-     mCancelBtn->setFixedSize(100,36);
+-     mCertainBtn = new QPushButton(mBtnFrame);
+-     mCertainBtn->setFixedSize(100,36);
+-
+-     mBtnLayout->addStretch();
+-     mBtnLayout->addWidget(mCancelBtn);
+-     mBtnLayout->addWidget(mCertainBtn);
+-
+-     mverticalLayout->addWidget(mTitleLabel);
+-     mverticalLayout->addWidget(mAppFrame);
+-     mverticalLayout->addSpacing(8);
+-     mverticalLayout->addWidget(mBtnFrame);
+-
+-     retranslateUi();
+-}
+-
+-void AddAutoBoot::initStyle()
+-{
+-    mTitleLabel->setStyleSheet("QLabel{color: palette(windowText);}");
+-
+-    selectFile = "";
+-
+-    mAppNameEdit->setPlaceholderText(tr("Name"));
+-    mAppPathEdit->setPlaceholderText(tr("Exec"));
+-    mAppBewriteEdit->setPlaceholderText(tr("Comment"));
+-
+-    mHintLabel->setAlignment(Qt::AlignLeft);
+-    mHintLabel->setStyleSheet("color:red;");
+-    mCertainBtn->setEnabled(false);
+-
+-}
+-
+-void AddAutoBoot::initConnection()
+-{
+-    connect(mOpenBtn, SIGNAL(clicked(bool)), this, SLOT(open_desktop_dir_slots()));
+-    connect(mCancelBtn, SIGNAL(clicked(bool)), this, SLOT(close()));
+-    connect(mAppPathEdit, SIGNAL(textEdited(QString)), this, SLOT(execLinEditSlot(QString)));
+-
+-    connect(mCancelBtn, &QPushButton::clicked, [=] {
+-        resetBeforeClose();
+-    });
+-    connect(mCertainBtn, &QPushButton::clicked, this, [=] {
+-        emit autoboot_adding_signals(selectFile, mAppNameEdit->text(), mDesktopExec,
+-                                     mAppBewriteEdit->text(), mDesktopIcon);
+-        resetBeforeClose();
+-    });
+-
+-    connect(mAppNameEdit, &QLineEdit::editingFinished, this, [=](){
+-        if (mAppNameEdit->text().isEmpty()) {
+-            userEditNameFlag = false;
+-        } else {        // 用户输入了程序名
+-            userEditNameFlag = true;
+-        }
+-    });
+-    connect(mAppBewriteEdit, &QLineEdit::editingFinished, this, [=](){
+-        if (mAppBewriteEdit->text().isEmpty()) {
+-            userEditCommentFlag = false;
+-        } else {        // 用户输入了描述
+-            userEditCommentFlag = true;
+-        }
+-    });
+-
+-    connect(mAppNameEdit, &QLineEdit::textChanged, this, [=](){
+-        mAppNameEdit->setToolTip(mAppNameEdit->text());
+-    });
+-    connect(mAppBewriteEdit, &QLineEdit::textChanged, this, [=](){
+-        mAppBewriteEdit->setToolTip(mAppBewriteEdit->text());
+-    });
+-    connect(mAppPathEdit, &QLineEdit::textChanged, this, [=](){
+-        mAppPathEdit->setToolTip(mAppPathEdit->text());
+-    });
+-}
+-
+-void AddAutoBoot::retranslateUi()
+-{
+-    mHintLabel->setText(QString());
+-    mTitleLabel->setText(QApplication::translate("AddAutoBoot", "Add autoboot program", nullptr));
+-    mAppNameLabel->setText(QApplication::translate("AddAutoBoot", "Name", nullptr));
+-    mAppPathLabel->setText(QApplication::translate("AddAutoBoot", "Exec", nullptr));
+-    mAppBewriteLabel->setText(QApplication::translate("AddAutoBoot", "Comment", nullptr));
+-    mOpenBtn->setText(QApplication::translate("AddAutoBoot", "Open", nullptr));
+-    mCancelBtn->setText(QApplication::translate("AddAutoBoot", "Cancel", nullptr));
+-    mCertainBtn->setText(QApplication::translate("AddAutoBoot", "Certain", nullptr));
+-}
+-
+-AddAutoBoot::~AddAutoBoot()
+-{
+-
+-}
+-
+-void AddAutoBoot::open_desktop_dir_slots()
+-{
+-    QString filters = tr("Desktop files(*.desktop)");
+-    QFileDialog fd(this);
+-    fd.setDirectory(DESKTOPPATH);
+-    fd.setAcceptMode(QFileDialog::AcceptOpen);
+-    fd.setViewMode(QFileDialog::List);
+-    fd.setNameFilter(filters);
+-    fd.setFileMode(QFileDialog::ExistingFile);
+-    fd.setWindowTitle(tr("select autoboot desktop"));
+-    fd.setLabelText(QFileDialog::Accept, tr("Select"));
+-    fd.setLabelText(QFileDialog::Reject, tr("Cancel"));
+-    if (fd.exec() != QDialog::Accepted)
+-        return;
+-
+-    QString selectedfile;
+-    selectedfile = fd.selectedFiles().first();
+-    selectFile = selectedfile;
+-
+-    QByteArray ba;
+-    ba = selectedfile.toUtf8();
+-
+-    // 解析desktop文件
+-    GKeyFile *keyfile;
+-    char *name, *comment,*mname;
+-    bool no_display;
+-
+-    keyfile = g_key_file_new();
+-    if (!g_key_file_load_from_file(keyfile, ba.data(), G_KEY_FILE_NONE, NULL)) {
+-        g_key_file_free(keyfile);
+-        return;
+-    }
+-    no_display = g_key_file_get_boolean(keyfile, G_KEY_FILE_DESKTOP_GROUP,
+-                                        G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY, FALSE);
+-    name = g_key_file_get_string(keyfile, G_KEY_FILE_DESKTOP_GROUP,
+-                                        G_KEY_FILE_DESKTOP_KEY_NAME, NULL);
+-    mname = g_key_file_get_locale_string(keyfile, G_KEY_FILE_DESKTOP_GROUP,
+-                                        G_KEY_FILE_DESKTOP_KEY_NAME, NULL, NULL);
+-    comment = g_key_file_get_locale_string(keyfile, G_KEY_FILE_DESKTOP_GROUP,
+-                                           G_KEY_FILE_DESKTOP_KEY_COMMENT, NULL, NULL);
+-    mDesktopExec = g_key_file_get_string(keyfile, G_KEY_FILE_DESKTOP_GROUP,
+-                                         G_KEY_FILE_DESKTOP_KEY_EXEC, NULL);
+-    mDesktopIcon = g_key_file_get_string(keyfile, G_KEY_FILE_DESKTOP_GROUP,
+-                                         G_KEY_FILE_DESKTOP_KEY_ICON, NULL);
+-
+-    if (userEditNameFlag == false) {   // 用户输入了程序名,以用户输入为准,否则以自带的为准
+-        mAppNameEdit->setText(QString(mname));
+-    }
+-
+-    mAppPathEdit->setText(QString(selectedfile));
+-    if (userEditCommentFlag == false) {   // 用户输入了程序描述,以用户输入为准,否则以自带的为准
+-        mAppBewriteEdit->setText(QString(comment));
+-    }
+-
+-    emit mAppPathEdit->textEdited(QString(selectedfile));
+-
+-    if (no_display) {
+-        mHintLabel->setText(tr("desktop file not allowed add"));
+-        mHintLabel->setStyleSheet("color:red;");
+-        mCertainBtn->setEnabled(false);
+-    }
+-
+-    g_key_file_free(keyfile);
+-}
+-
+-void AddAutoBoot::execLinEditSlot(const QString &fileName)
+-{
+-    selectFile = fileName;
+-    QFileInfo fileInfo(fileName);
+-    if (fileInfo.isFile() && fileName.endsWith("desktop")) {
+-        mHintLabel->clear();
+-        mCertainBtn->setEnabled(true);
+-
+-        QByteArray ba;
+-        ba = fileName.toUtf8();
+-
+-        // 解析desktop文件
+-        GKeyFile *keyfile;
+-        char *name, *comment;
+-
+-        keyfile = g_key_file_new();
+-        if (!g_key_file_load_from_file(keyfile, ba.data(), G_KEY_FILE_NONE, NULL)) {
+-            g_key_file_free(keyfile);
+-            return;
+-        }
+-
+-        name = g_key_file_get_locale_string(keyfile, G_KEY_FILE_DESKTOP_GROUP,
+-                                            G_KEY_FILE_DESKTOP_KEY_NAME, NULL, NULL);
+-        mDesktopExec = g_key_file_get_string(keyfile, G_KEY_FILE_DESKTOP_GROUP,
+-                                             G_KEY_FILE_DESKTOP_KEY_EXEC, NULL);
+-        mDesktopIcon = g_key_file_get_string(keyfile, G_KEY_FILE_DESKTOP_GROUP,
+-                                             G_KEY_FILE_DESKTOP_KEY_ICON, NULL);
+-        comment = g_key_file_get_locale_string(keyfile, G_KEY_FILE_DESKTOP_GROUP,
+-                                               G_KEY_FILE_DESKTOP_KEY_COMMENT, NULL, NULL);
+-
+-        if (userEditNameFlag == false) {   // 用户输入了程序名,以用户输入为准,否则以自带的为准
+-            mAppNameEdit->setText(QString(name));
+-        }
+-
+-        mAppPathEdit->setText(fileName);
+-        if (userEditCommentFlag == false) {   // 用户输入了程序描述,以用户输入为准,否则以自带的为准
+-            mAppBewriteEdit->setText(QString(comment));
+-        }
+-
+-        g_key_file_free(keyfile);
+-    } else {
+-        mHintLabel->setText(tr("desktop file not exist"));
+-        mHintLabel->setStyleSheet("color:red;");
+-        mCertainBtn->setEnabled(false);
+-    }
+-}
+diff --git a/plugins/application/autoboot/addautoboot.h b/plugins/application/autoboot/addautoboot.h
+deleted file mode 100644
+index 220fd0a..0000000
+--- a/plugins/application/autoboot/addautoboot.h
++++ /dev/null
+@@ -1,98 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef ADDAUTOBOOT_H
+-#define ADDAUTOBOOT_H
+-
+-#include <QDialog>
+-#include <QFileDialog>
+-#include <QPainter>
+-#include <QPainterPath>
+-#include <QLineEdit>
+-#include <QLabel>
+-#include <QVBoxLayout>
+-#include "fixlabel.h"
+-/* qt会将glib里的signals成员识别为宏,所以取消该宏
+- * 后面如果用到signals时,使用Q_SIGNALS代替即可
+- **/
+-#ifdef signals
+-#undef signals
+-#endif
+-
+-#include <glib.h>
+-#include <glib/gstdio.h>
+-#include <gio/gio.h>
+-#include <gio/gdesktopappinfo.h>
+-
+-namespace Ui {
+-class AddAutoBoot;
+-}
+-
+-class AddAutoBoot : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit AddAutoBoot(QWidget *parent = 0);
+-    ~AddAutoBoot();
+-
+-    void resetBeforeClose();
+-
+-protected:
+-    void paintEvent(QPaintEvent *);
+-
+-private:
+-    QString selectFile;
+-    QString mDesktopExec;
+-    QString mDesktopIcon;
+-    bool userEditNameFlag    = false;
+-    bool userEditCommentFlag = false;
+-
+-    QFrame *mAppFrame;
+-    QFrame *mBtnFrame;
+-
+-    QLabel *mTitleLabel;
+-    FixLabel *mAppNameLabel;
+-    FixLabel *mAppPathLabel;
+-    FixLabel *mAppBewriteLabel;
+-    QLabel *mHintLabel;
+-
+-    QLineEdit *mAppNameEdit;
+-    QLineEdit *mAppPathEdit;
+-    QLineEdit *mAppBewriteEdit;
+-
+-    QPushButton *mOpenBtn;
+-    QPushButton *mCancelBtn;
+-    QPushButton *mCertainBtn;
+-
+-private:
+-    void initUi(QDialog *AddAutoBoot);
+-    void initStyle();
+-    void initConnection();
+-    void retranslateUi();
+-
+-private slots:
+-    void open_desktop_dir_slots();
+-    void execLinEditSlot(const QString &fileName);
+-
+-Q_SIGNALS:
+-    void autoboot_adding_signals(QString path, QString name, QString exec, QString comment, QString icon);
+-};
+-
+-#endif // ADDAUTOBOOT_H
+diff --git a/plugins/application/autoboot/autoboot.cpp b/plugins/application/autoboot/autoboot.cpp
+index 5e77fd8..7492a30 100644
+--- a/plugins/application/autoboot/autoboot.cpp
++++ b/plugins/application/autoboot/autoboot.cpp
+@@ -31,7 +31,6 @@
+ #include <QFileDialog>
+ #include <QMessageBox>
+ #include "rmenu.h"
+-#include "imageutil.h"
+ #include "mthread.h"
+ 
+ /* qt会将glib里的signals成员识别为宏,所以取消该宏
+diff --git a/plugins/application/autoboot/autoboot.h b/plugins/application/autoboot/autoboot.h
+index ff3b8f8..9cebdb2 100644
+--- a/plugins/application/autoboot/autoboot.h
++++ b/plugins/application/autoboot/autoboot.h
+@@ -26,7 +26,6 @@
+ #include "shell/interface.h"
+ #include "ukcccommon.h"
+ using namespace ukcc;
+-#include "titlelabel.h"
+ #include "hoverwidget.h"
+ #include "switchwidget.h"
+ #include "settinggroup.h"
+diff --git a/plugins/application/autoboot/autoboot.pro b/plugins/application/autoboot/autoboot.pro
+index 344233a..bbceb83 100644
+--- a/plugins/application/autoboot/autoboot.pro
++++ b/plugins/application/autoboot/autoboot.pro
+@@ -4,9 +4,7 @@
+ #
+ #-------------------------------------------------
+ include(../../../env.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/CloseButton/closebutton.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Label/label.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/ImageUtil/imageutil.pri)
+ include($$PROJECT_ROOTDIR/libukcc/interface.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/AddBtn/addbtn.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/SettingWidget/settingwidget.pri)
+diff --git a/plugins/application/autoboot/autobootui.cpp b/plugins/application/autoboot/autobootui.cpp
+index efe6d30..08ccbf9 100644
+--- a/plugins/application/autoboot/autobootui.cpp
++++ b/plugins/application/autoboot/autobootui.cpp
+@@ -12,7 +12,8 @@ void AutoBootUi::initUi()
+     vLyt->setSpacing(8);
+     vLyt->setContentsMargins(0, 0, 0, 0);
+ 
+-    TitleLabel *mTitleLabel = new TitleLabel(this);
++    KLabel *mTitleLabel = new KLabel(this);
++    mTitleLabel->setContentsMargins(16, 0, 0, 0);
+     //~ contents_path /Autostart/Autostart Settings
+     mTitleLabel->setText(tr("Autostart Settings"));
+ 
+diff --git a/plugins/application/autoboot/autobootui.h b/plugins/application/autoboot/autobootui.h
+index 97c2eac..74e564e 100644
+--- a/plugins/application/autoboot/autobootui.h
++++ b/plugins/application/autoboot/autobootui.h
+@@ -4,12 +4,14 @@
+ #include <QObject>
+ #include <QWidget>
+ 
+-#include "titlelabel.h"
+ #include "hoverwidget.h"
+ #include "addbutton.h"
+ #include "switchwidget.h"
+ #include "settinggroup.h"
+ #include "ukccframe.h"
++#include <klabel.h>
++
++using namespace kdk;
+ 
+ class AutoBootUi : public QWidget
+ {
+diff --git a/plugins/application/defaultapp/defaultapp.h b/plugins/application/defaultapp/defaultapp.h
+index b3cd5d5..9ec0518 100644
+--- a/plugins/application/defaultapp/defaultapp.h
++++ b/plugins/application/defaultapp/defaultapp.h
+@@ -36,8 +36,6 @@
+ 
+ 
+ #include "shell/interface.h"
+-#include "fixlabel.h"
+-#include "titlelabel.h"
+ #include "mthread.h"
+ #include "comboxwidget.h"
+ #include "settinggroup.h"
+diff --git a/plugins/application/defaultapp/defaultappui.cpp b/plugins/application/defaultapp/defaultappui.cpp
+index 0592ab8..b60a52c 100644
+--- a/plugins/application/defaultapp/defaultappui.cpp
++++ b/plugins/application/defaultapp/defaultappui.cpp
+@@ -12,7 +12,8 @@ void DefaultAppUi::initUi()
+     vLyt->setSpacing(8);
+     vLyt->setContentsMargins(0, 0, 0, 0);
+ 
+-    TitleLabel *mTitleLabel = new TitleLabel(this);
++    KLabel *mTitleLabel = new KLabel(this);
++    mTitleLabel->setContentsMargins(16, 0, 0, 0);
+     //~ contents_path /Defaultapp/Select Default Application
+     mTitleLabel->setText(tr("DefaultAppWindow", "Select Default Application"));
+     SettingGroup *mDefaultFrame = new SettingGroup(this);
+diff --git a/plugins/application/defaultapp/defaultappui.h b/plugins/application/defaultapp/defaultappui.h
+index ae0b9af..c6de9fb 100644
+--- a/plugins/application/defaultapp/defaultappui.h
++++ b/plugins/application/defaultapp/defaultappui.h
+@@ -5,12 +5,13 @@
+ #include <QWidget>
+ 
+ #include "shell/interface.h"
+-#include "fixlabel.h"
+-#include "titlelabel.h"
+ #include "mthread.h"
+ #include "comboxwidget.h"
+ #include "settinggroup.h"
+ #include "pushbuttonwidget.h"
++#include <klabel.h>
++
++using namespace kdk;
+ 
+ class DefaultAppUi : public QWidget
+ {
+diff --git a/plugins/devices/printer/printer.cpp b/plugins/devices/printer/printer.cpp
+index c3d0868..f96af46 100644
+--- a/plugins/devices/printer/printer.cpp
++++ b/plugins/devices/printer/printer.cpp
+@@ -117,7 +117,8 @@ void Printer::initUi(QWidget *widget)
+     QVBoxLayout *verticaLyt = new QVBoxLayout(widget);
+     verticaLyt->setSpacing(8);
+     verticaLyt->setContentsMargins(0, 0, 0, 0);
+-    mPrinterLabel = new TitleLabel;
++    mPrinterLabel = new KLabel;
++    mPrinterLabel->setContentsMargins(16, 0, 0, 0);
+     mPrinterLabel->setText(tr("Printers"));
+ 
+     mPrinterWidget = new SettingGroup(widget);
+diff --git a/plugins/devices/printer/printer.h b/plugins/devices/printer/printer.h
+index a3a1707..b117ae1 100644
+--- a/plugins/devices/printer/printer.h
++++ b/plugins/devices/printer/printer.h
+@@ -28,15 +28,13 @@
+ 
+ #include "shell/interface.h"
+ #include "hoverwidget.h"
+-#include "imageutil.h"
+-#include "hoverbtn.h"
+-#include "titlelabel.h"
+-#include "fixlabel.h"
+ #include "settinggroup.h"
+ #include "ukccframe.h"
+ #include "printerbtn.h"
+ #include "addbutton.h"
++#include <klabel.h>
+ 
++using namespace kdk;
+ 
+ namespace Ui {
+ class Printer;
+@@ -74,7 +72,7 @@ private:
+     QWidget *pluginWidget;
+     SettingGroup *mPrinterWidget;
+     UkccFrame *mAddWidget;
+-    TitleLabel *mPrinterLabel;
++    KLabel *mPrinterLabel;
+     QStringList mPrinterList;
+     QVector <PrinterInfo> mPrinters;
+ 
+diff --git a/plugins/devices/printer/printer.pro b/plugins/devices/printer/printer.pro
+index f8b5e76..5673ac7 100644
+--- a/plugins/devices/printer/printer.pro
++++ b/plugins/devices/printer/printer.pro
+@@ -6,11 +6,9 @@
+ 
+ include(../../../env.pri)
+ 
+-include($$PROJECT_ROOTDIR/libukcc/widgets/ImageUtil/imageutil.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Label/label.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/AddBtn/addbtn.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/HoverWidget/hoverwidget.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/HoverBtn/hoverbtn.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/SettingWidget/settingwidget.pri)
+ include($$PROJECT_ROOTDIR/libukcc/interface.pri)
+ 
+diff --git a/plugins/devices/printer/printerbtn.cpp b/plugins/devices/printer/printerbtn.cpp
+index 8eaba78..4c6dcf5 100644
+--- a/plugins/devices/printer/printerbtn.cpp
++++ b/plugins/devices/printer/printerbtn.cpp
+@@ -5,7 +5,6 @@
+ #include <QGSettings>
+ #include <QProcess>
+ 
+-#include "widgets/Label/fixlabel.h"
+ #define THEME_QT_SCHEMA  "org.ukui.style"
+ 
+ #define ICON_QT_KEY      "icon-theme-name"
+@@ -47,7 +46,7 @@ PrinterBtn::PrinterBtn(const PrinterInfo &printer, QWidget *parent):
+         }
+     });
+ 
+-    FixLabel *textLabel = new FixLabel(this);
++    KLabel *textLabel = new KLabel(this);
+     textLabel->setText(printerinfo.name);
+ 
+     mPrinterLyt->addWidget(iconLabel);
+diff --git a/plugins/devices/printer/printerbtn.h b/plugins/devices/printer/printerbtn.h
+index 1a68388..d895721 100644
+--- a/plugins/devices/printer/printerbtn.h
++++ b/plugins/devices/printer/printerbtn.h
+@@ -3,6 +3,10 @@
+ 
+ #include <QObject>
+ #include <QPushButton>
++#include <klabel.h>
++
++using namespace kdk;
++
+ struct PrinterInfo
+ {
+     QString name;
+diff --git a/plugins/devices/shortcut/addshortcutdialog.cpp b/plugins/devices/shortcut/addshortcutdialog.cpp
+index 9a47c7b..5b76588 100644
+--- a/plugins/devices/shortcut/addshortcutdialog.cpp
++++ b/plugins/devices/shortcut/addshortcutdialog.cpp
+@@ -20,7 +20,6 @@
+ 
+ #include "addshortcutdialog.h"
+ #include "ui_addshortcutdialog.h"
+-#include "closebutton.h"
+ #include "realizeshortcutwheel.h"
+ #include <QApplication>
+ #include <glib.h>
+diff --git a/plugins/devices/shortcut/addshortcutdialog.h b/plugins/devices/shortcut/addshortcutdialog.h
+index ebcc468..ec4f9a6 100644
+--- a/plugins/devices/shortcut/addshortcutdialog.h
++++ b/plugins/devices/shortcut/addshortcutdialog.h
+@@ -29,6 +29,8 @@
+ #include <QDebug>
+ #include "shortcutline.h"
+ #include <QLabel>
++#include <klabel.h>
++using namespace kdk;
+ 
+ namespace Ui {
+ class AddShortcutDialog;
+diff --git a/plugins/devices/shortcut/addshortcutdialog.ui b/plugins/devices/shortcut/addshortcutdialog.ui
+index fca9575..75f392f 100644
+--- a/plugins/devices/shortcut/addshortcutdialog.ui
++++ b/plugins/devices/shortcut/addshortcutdialog.ui
+@@ -71,7 +71,7 @@
+             <number>8</number>
+            </property>
+            <item>
+-            <widget class="FixLabel" name="label_3">
++            <widget class="KLabel" name="label_3">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+@@ -157,7 +157,7 @@
+             <number>8</number>
+            </property>
+            <item>
+-            <widget class="FixLabel" name="label_2">
++            <widget class="KLabel" name="label_2">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+@@ -237,7 +237,7 @@
+             <number>8</number>
+            </property>
+            <item>
+-            <widget class="FixLabel" name="label">
++            <widget class="KLabel" name="label">
+              <property name="minimumSize">
+               <size>
+                <width>48</width>
+@@ -376,16 +376,16 @@
+   </layout>
+  </widget>
+  <customwidgets>
+-  <customwidget>
+-   <class>FixLabel</class>
+-   <extends>QLabel</extends>
+-   <header location="global">fixlabel.h</header>
+-  </customwidget>
+   <customwidget>
+    <class>kdk::KPushButton</class>
+    <extends>QPushButton</extends>
+    <header>kysdk/applications/kpushbutton.h</header>
+   </customwidget>
++  <customwidget>
++   <class>KLabel</class>
++   <extends>QLabel</extends>
++   <header>klabel.h</header>
++  </customwidget>
+  </customwidgets>
+  <resources/>
+  <connections/>
+diff --git a/plugins/devices/shortcut/shortcut.pro b/plugins/devices/shortcut/shortcut.pro
+index ce5c719..1d03eec 100644
+--- a/plugins/devices/shortcut/shortcut.pro
++++ b/plugins/devices/shortcut/shortcut.pro
+@@ -1,10 +1,8 @@
+ include(../../../env.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/HoverWidget/hoverwidget.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/ImageUtil/imageutil.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Label/label.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/AddBtn/addbtn.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Frame/frame.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/CloseButton/closebutton.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/SettingWidget/settingwidget.pri)
+ include($$PROJECT_ROOTDIR/libukcc/interface.pri)
+ 
+diff --git a/plugins/devices/shortcut/shortcut.ui b/plugins/devices/shortcut/shortcut.ui
+deleted file mode 100644
+index 3ac2642..0000000
+--- a/plugins/devices/shortcut/shortcut.ui
++++ /dev/null
+@@ -1,160 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>Shortcut</class>
+- <widget class="QWidget" name="Shortcut">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>683</width>
+-    <height>459</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>550</width>
+-    <height>0</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>16777215</width>
+-    <height>16777215</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string notr="true">Shortcut</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_4">
+-   <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>
+-    <widget class="TitleLabel" name="systemLabel">
+-     <property name="sizePolicy">
+-      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-       <horstretch>0</horstretch>
+-       <verstretch>0</verstretch>
+-      </sizepolicy>
+-     </property>
+-     <property name="text">
+-      <string>System Shortcut</string>
+-     </property>
+-    </widget>
+-   </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="systemLayout"/>
+-   </item>
+-   <item>
+-    <spacer name="verticalSpacer_2">
+-     <property name="orientation">
+-      <enum>Qt::Vertical</enum>
+-     </property>
+-     <property name="sizeType">
+-      <enum>QSizePolicy::Fixed</enum>
+-     </property>
+-     <property name="sizeHint" stdset="0">
+-      <size>
+-       <width>20</width>
+-       <height>24</height>
+-      </size>
+-     </property>
+-    </spacer>
+-   </item>
+-   <item>
+-    <widget class="TitleLabel" name="customLabel">
+-     <property name="sizePolicy">
+-      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-       <horstretch>0</horstretch>
+-       <verstretch>0</verstretch>
+-      </sizepolicy>
+-     </property>
+-     <property name="text">
+-      <string>Custom Shortcut</string>
+-     </property>
+-    </widget>
+-   </item>
+-   <item>
+-    <widget class="QFrame" name="verticalFrame">
+-     <property name="frameShape">
+-      <enum>QFrame::NoFrame</enum>
+-     </property>
+-     <property name="lineWidth">
+-      <number>0</number>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_5">
+-      <property name="spacing">
+-       <number>1</number>
+-      </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>
+-       <layout class="QVBoxLayout" name="customLayout">
+-        <property name="spacing">
+-         <number>0</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>0</number>
+-        </property>
+-       </layout>
+-      </item>
+-      <item>
+-       <layout class="QHBoxLayout" name="addLyt">
+-        <property name="spacing">
+-         <number>0</number>
+-        </property>
+-        <property name="leftMargin">
+-         <number>0</number>
+-        </property>
+-        <property name="rightMargin">
+-         <number>0</number>
+-        </property>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <spacer name="verticalSpacer">
+-     <property name="orientation">
+-      <enum>Qt::Vertical</enum>
+-     </property>
+-     <property name="sizeHint" stdset="0">
+-      <size>
+-       <width>20</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-    </spacer>
+-   </item>
+-  </layout>
+- </widget>
+- <customwidgets>
+-  <customwidget>
+-   <class>TitleLabel</class>
+-   <extends>QLabel</extends>
+-   <header location="global">titlelabel.h</header>
+-  </customwidget>
+- </customwidgets>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/devices/shortcut/shortcutui.cpp b/plugins/devices/shortcut/shortcutui.cpp
+index a19127b..c0d00ee 100644
+--- a/plugins/devices/shortcut/shortcutui.cpp
++++ b/plugins/devices/shortcut/shortcutui.cpp
+@@ -27,7 +27,8 @@ void ShortcutUi::initUi()
+ 
+ void ShortcutUi::initSystem()
+ {
+-    systemTitle         = new TitleLabel(this);
++    systemTitle         = new KLabel(this);
++    systemTitle->setContentsMargins(16, 0, 0, 0);
+     systemShortcutGroup = new SettingGroup(this);
+     //~ contents_path /Shortcut/System Shortcut
+     systemTitle->setText(tr("System Shortcut"));
+@@ -38,12 +39,13 @@ void ShortcutUi::initSystem()
+ 
+ void ShortcutUi::initCustom()
+ {
+-    customTitle         = new TitleLabel(this);
++    customTitle         = new KLabel(this);
+     customShortcutGroup = new SettingGroup(this);
+     addButton           = new AddButton(this);
+     QHBoxLayout *layout = new QHBoxLayout(this);
+     //~ contents_path /Shortcut/Customize Shortcut
+     customTitle->setText(tr("Customize Shortcut"));
++    customTitle->setContentsMargins(16, 0, 0, 0);
+     customLayout->setSpacing(0);
+     customLayout->addWidget(customTitle);
+     customLayout->addSpacing(8);
+@@ -139,7 +141,7 @@ void ShortcutUi::addSystemShortcut(const QString &name, const QString &shortcut,
+ 
+     UkccFrame              *shortCutFrame         = new UkccFrame(this);
+ 
+-    FixLabel               *nameLabel             = new FixLabel(shortCutFrame);
++    KLabel                 *nameLabel             = new KLabel(shortCutFrame);
+     ClickFixLabel          *bingdingLabel         = new ClickFixLabel(shortCutFrame);
+     ClickFixLabel          *bingdingLabelTwice    = nullptr;
+ 
+@@ -151,7 +153,7 @@ void ShortcutUi::addSystemShortcut(const QString &name, const QString &shortcut,
+     QHBoxLayout            *lineEditLayoutTwice   = new QHBoxLayout;
+ 
+ #ifndef Nile
+-    FixLabel *bindingLabel = new FixLabel(shortCutFrame);
++    KLabel *bindingLabel = new KLabel(shortCutFrame);
+     bindingLabel->setText(getShowShortcutString(shortcut));
+     bindingLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
+ #endif
+diff --git a/plugins/devices/shortcut/shortcutui.h b/plugins/devices/shortcut/shortcutui.h
+index b2baadc..29369e3 100644
+--- a/plugins/devices/shortcut/shortcutui.h
++++ b/plugins/devices/shortcut/shortcutui.h
+@@ -3,8 +3,6 @@
+ 
+ #include "settinggroup.h"
+ #include "addbutton.h"
+-#include "fixlabel.h"
+-#include "titlelabel.h"
+ #include "doubleclicklineedit.h"
+ #include "clickfixlabel.h"
+ #include "addshortcutdialog.h"
+@@ -13,6 +11,9 @@
+ #include <QWidget>
+ #include <QMenu>
+ #include <QMessageBox>
++#include <klabel.h>
++
++using namespace kdk;
+ 
+ class ShortcutUi : public QWidget
+ {
+@@ -39,11 +40,11 @@ private:
+     QVBoxLayout *customLayout = nullptr;
+ 
+ private:
+-    TitleLabel   *systemTitle         = nullptr;
++    KLabel   *systemTitle         = nullptr;
+     SettingGroup *systemShortcutGroup = nullptr;
+ 
+ private:
+-    TitleLabel   *customTitle         = nullptr;
++    KLabel   *customTitle         = nullptr;
+     SettingGroup *customShortcutGroup = nullptr;
+     AddButton    *addButton           = nullptr;
+ 
+diff --git a/plugins/personalized/fonts/fonts.cpp b/plugins/personalized/fonts/fonts.cpp
+index cad1b68..a70b539 100644
+--- a/plugins/personalized/fonts/fonts.cpp
++++ b/plugins/personalized/fonts/fonts.cpp
+@@ -71,7 +71,7 @@ QWidget *Fonts::pluginUi() {
+         pluginWidget = new QWidget;
+         pluginWidget->setAttribute(Qt::WA_DeleteOnClose);
+         ui->setupUi(pluginWidget);
+-        ui->titleLabel->setContentsMargins(14, 0, 0, 0);
++        ui->titleLabel->setContentsMargins(16, 0, 0, 0);
+ 
+         initSearchText();
+ 
+diff --git a/plugins/personalized/fonts/fonts.h b/plugins/personalized/fonts/fonts.h
+index 8c6ce38..b7038f5 100644
+--- a/plugins/personalized/fonts/fonts.h
++++ b/plugins/personalized/fonts/fonts.h
+@@ -34,6 +34,7 @@
+ 
+ #include "shell/interface.h"
+ #include "ukcccommon.h"
++#include <klabel.h>
+ using namespace ukcc;
+ 
+ using namespace kdk;
+diff --git a/plugins/personalized/fonts/fonts.ui b/plugins/personalized/fonts/fonts.ui
+index fa3c661..f758ae1 100644
+--- a/plugins/personalized/fonts/fonts.ui
++++ b/plugins/personalized/fonts/fonts.ui
+@@ -39,7 +39,7 @@
+     <number>0</number>
+    </property>
+    <item>
+-    <widget class="TitleLabel" name="titleLabel">
++    <widget class="KLabel" name="titleLabel">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+        <horstretch>0</horstretch>
+@@ -123,7 +123,7 @@
+             <number>0</number>
+            </property>
+            <item>
+-            <widget class="FixLabel" name="fontSizeLabel">
++            <widget class="KLabel" name="fontSizeLabel">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+@@ -241,7 +241,7 @@
+             <number>0</number>
+            </property>
+            <item>
+-            <widget class="FixLabel" name="fontSelectLabel">
++            <widget class="KLabel" name="fontSelectLabel">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+@@ -347,7 +347,7 @@
+             <number>0</number>
+            </property>
+            <item>
+-            <widget class="FixLabel" name="monoSelectLabel">
++            <widget class="KLabel" name="monoSelectLabel">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+@@ -455,14 +455,9 @@
+  <layoutdefault spacing="6" margin="11"/>
+  <customwidgets>
+   <customwidget>
+-   <class>TitleLabel</class>
++   <class>KLabel</class>
+    <extends>QLabel</extends>
+-   <header location="global">titlelabel.h</header>
+-  </customwidget>
+-  <customwidget>
+-   <class>FixLabel</class>
+-   <extends>QLabel</extends>
+-   <header>fixlabel.h</header>
++   <header>klabel.h</header>
+   </customwidget>
+  </customwidgets>
+  <resources/>
+diff --git a/plugins/personalized/screenlock/screenlock.ui b/plugins/personalized/screenlock/screenlock.ui
+deleted file mode 100644
+index 9e77862..0000000
+--- a/plugins/personalized/screenlock/screenlock.ui
++++ /dev/null
+@@ -1,275 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>Screenlock</class>
+- <widget class="QWidget" name="Screenlock">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>550</width>
+-    <height>700</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>0</width>
+-    <height>0</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>16777215</width>
+-    <height>16777215</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Screenlock</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_2">
+-   <property name="spacing">
+-    <number>0</number>
+-   </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>
+-    <widget class="QFrame" name="frame_1">
+-     <property name="minimumSize">
+-      <size>
+-       <width>550</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>16777215</width>
+-       <height>16777215</height>
+-      </size>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout">
+-      <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>
+-       <widget class="TitleLabel" name="titleLabel">
+-        <property name="sizePolicy">
+-         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-          <horstretch>0</horstretch>
+-          <verstretch>0</verstretch>
+-         </sizepolicy>
+-        </property>
+-        <property name="text">
+-         <string>Screenlock Interface</string>
+-        </property>
+-       </widget>
+-      </item>
+-      <item>
+-       <widget class="QFrame" name="previewFrame">
+-        <property name="frameShape">
+-         <enum>QFrame::Box</enum>
+-        </property>
+-        <layout class="QHBoxLayout" name="horizontalLayout">
+-         <property name="leftMargin">
+-          <number>16</number>
+-         </property>
+-         <property name="topMargin">
+-          <number>16</number>
+-         </property>
+-         <property name="rightMargin">
+-          <number>16</number>
+-         </property>
+-         <property name="bottomMargin">
+-          <number>16</number>
+-         </property>
+-         <item>
+-          <widget class="QLabel" name="previewLabel">
+-           <property name="sizePolicy">
+-            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-             <horstretch>0</horstretch>
+-             <verstretch>0</verstretch>
+-            </sizepolicy>
+-           </property>
+-           <property name="minimumSize">
+-            <size>
+-             <width>300</width>
+-             <height>180</height>
+-            </size>
+-           </property>
+-           <property name="maximumSize">
+-            <size>
+-             <width>300</width>
+-             <height>180</height>
+-            </size>
+-           </property>
+-           <property name="text">
+-            <string/>
+-           </property>
+-           <property name="scaledContents">
+-            <bool>true</bool>
+-           </property>
+-          </widget>
+-         </item>
+-         <item>
+-          <spacer name="horizontalSpacer_4">
+-           <property name="orientation">
+-            <enum>Qt::Horizontal</enum>
+-           </property>
+-           <property name="sizeHint" stdset="0">
+-            <size>
+-             <width>40</width>
+-             <height>20</height>
+-            </size>
+-           </property>
+-          </spacer>
+-         </item>
+-        </layout>
+-       </widget>
+-      </item>
+-      <item>
+-       <layout class="QVBoxLayout" name="centerLayout"/>
+-      </item>
+-      <item>
+-       <layout class="QHBoxLayout" name="horizontalLayout_2">
+-        <property name="spacing">
+-         <number>32</number>
+-        </property>
+-        <property name="leftMargin">
+-         <number>4</number>
+-        </property>
+-        <property name="topMargin">
+-         <number>8</number>
+-        </property>
+-        <property name="rightMargin">
+-         <number>4</number>
+-        </property>
+-        <item>
+-         <widget class="QPushButton" name="browserLocalwpBtn">
+-          <property name="minimumSize">
+-           <size>
+-            <width>110</width>
+-            <height>0</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>110</width>
+-            <height>16777215</height>
+-           </size>
+-          </property>
+-          <property name="text">
+-           <string>Browse</string>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="QPushButton" name="onlineBtn">
+-          <property name="text">
+-           <string>Online Picture</string>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <spacer name="horizontalSpacer">
+-          <property name="orientation">
+-           <enum>Qt::Horizontal</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>20</width>
+-            <height>20</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-        <item>
+-         <widget class="QPushButton" name="resetBtn">
+-          <property name="minimumSize">
+-           <size>
+-            <width>120</width>
+-            <height>0</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>16777215</height>
+-           </size>
+-          </property>
+-          <property name="text">
+-           <string>Reset To Default</string>
+-          </property>
+-         </widget>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="verticalLayout_4">
+-     <property name="topMargin">
+-      <number>24</number>
+-     </property>
+-     <property name="bottomMargin">
+-      <number>8</number>
+-     </property>
+-     <item>
+-      <widget class="TitleLabel" name="setLabel">
+-       <property name="text">
+-        <string>Related Settings</string>
+-       </property>
+-      </widget>
+-     </item>
+-    </layout>
+-   </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="relatedLayout">
+-     <property name="spacing">
+-      <number>0</number>
+-     </property>
+-    </layout>
+-   </item>
+-   <item>
+-    <spacer name="verticalSpacer">
+-     <property name="orientation">
+-      <enum>Qt::Vertical</enum>
+-     </property>
+-     <property name="sizeHint" stdset="0">
+-      <size>
+-       <width>20</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-    </spacer>
+-   </item>
+-  </layout>
+- </widget>
+- <layoutdefault spacing="6" margin="11"/>
+- <customwidgets>
+-  <customwidget>
+-   <class>TitleLabel</class>
+-   <extends>QLabel</extends>
+-   <header location="global">titlelabel.h</header>
+-  </customwidget>
+- </customwidgets>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/personalized/screenlock/screenlockui.cpp b/plugins/personalized/screenlock/screenlockui.cpp
+index bb525f4..8d868c8 100644
+--- a/plugins/personalized/screenlock/screenlockui.cpp
++++ b/plugins/personalized/screenlock/screenlockui.cpp
+@@ -32,7 +32,8 @@ void ScreenlockUi::initUi()
+ 
+ void ScreenlockUi::initScreenLock()
+ {
+-    wallpaperTitleLabel = new TitleLabel(this);
++    wallpaperTitleLabel = new KLabel(this);
++    wallpaperTitleLabel->setContentsMargins(16, 0, 0, 0);
+     previewFrame        = new UkccFrame(this);
+     previewLayout       = new QHBoxLayout(previewFrame);
+     previewLabel        = new QLabel(this);
+@@ -130,7 +131,8 @@ void ScreenlockUi::initScreenLock()
+ 
+ void ScreenlockUi::initRelateSet()
+ {
+-    relateTitleLabel  = new TitleLabel(this);
++    relateTitleLabel  = new KLabel(this);
++    relateTitleLabel->setContentsMargins(16, 0, 0, 0);
+     relatedGroup      = new SettingGroup(this);
+     //~ contents_path /Screenlock/Monitor Off
+     monitorWidget     = new PushButtonWidget(tr("Monitor Off"), relatedGroup);
+diff --git a/plugins/personalized/screenlock/screenlockui.h b/plugins/personalized/screenlock/screenlockui.h
+index a848d99..fb3ee13 100644
+--- a/plugins/personalized/screenlock/screenlockui.h
++++ b/plugins/personalized/screenlock/screenlockui.h
+@@ -1,7 +1,6 @@
+ #ifndef SCREENLOCKUI_H
+ #define SCREENLOCKUI_H
+ 
+-#include "titlelabel.h"
+ #include "settinggroup.h"
+ #include "flowlayout.h"
+ #include "switchwidget.h"
+@@ -11,6 +10,9 @@
+ #include "pictureunit.h"
+ #include <QHBoxLayout>
+ #include <QWidget>
++#include <klabel.h>
++
++using namespace kdk;
+ 
+ class ScreenlockUi : public QWidget
+ {
+@@ -50,7 +52,7 @@ private:
+     QVBoxLayout *relateLayout     = nullptr;
+ 
+ private:
+-    TitleLabel   *wallpaperTitleLabel = nullptr;
++    KLabel   *wallpaperTitleLabel = nullptr;
+     UkccFrame    *previewFrame        = nullptr;
+     QHBoxLayout  *previewLayout       = nullptr;
+     QLabel       *previewLabel        = nullptr;
+@@ -71,7 +73,7 @@ private:
+     QPushButton  *resetBtn            = nullptr;
+ 
+ private:
+-    TitleLabel       *relateTitleLabel  = nullptr;
++    KLabel       *relateTitleLabel  = nullptr;
+     SettingGroup     *relatedGroup      = nullptr;
+     PushButtonWidget *monitorWidget     = nullptr;
+     PushButtonWidget *screensaverWidget = nullptr;
+diff --git a/plugins/personalized/screensaver/screensaver.pro b/plugins/personalized/screensaver/screensaver.pro
+index 1e6ed21..856f330 100644
+--- a/plugins/personalized/screensaver/screensaver.pro
++++ b/plugins/personalized/screensaver/screensaver.pro
+@@ -8,7 +8,6 @@ include(../../../env.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/ComboBox/combobox.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Label/label.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Frame/frame.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/Uslider/uslider.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/SettingWidget/settingwidget.pri)
+ include($$PROJECT_ROOTDIR/libukcc/interface.pri)
+ 
+diff --git a/plugins/personalized/screensaver/screensaver.ui b/plugins/personalized/screensaver/screensaver.ui
+deleted file mode 100644
+index 9bbdfdf..0000000
+--- a/plugins/personalized/screensaver/screensaver.ui
++++ /dev/null
+@@ -1,254 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>Screensaver</class>
+- <widget class="QWidget" name="Screensaver">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>684</width>
+-    <height>560</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>0</width>
+-    <height>0</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>16777215</width>
+-    <height>16777215</height>
+-   </size>
+-  </property>
+-  <property name="sizeIncrement">
+-   <size>
+-    <width>0</width>
+-    <height>0</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string notr="true">Screensaver</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_2">
+-   <property name="spacing">
+-    <number>8</number>
+-   </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>
+-    <widget class="TitleLabel" name="titleLabel">
+-     <property name="sizePolicy">
+-      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-       <horstretch>0</horstretch>
+-       <verstretch>0</verstretch>
+-      </sizepolicy>
+-     </property>
+-     <property name="text">
+-      <string>Screensaver</string>
+-     </property>
+-    </widget>
+-   </item>
+-   <item>
+-    <widget class="QFrame" name="viewFrame">
+-     <property name="frameShape">
+-      <enum>QFrame::Box</enum>
+-     </property>
+-     <layout class="QHBoxLayout" name="horizontalLayout">
+-      <property name="spacing">
+-       <number>0</number>
+-      </property>
+-      <property name="leftMargin">
+-       <number>16</number>
+-      </property>
+-      <property name="topMargin">
+-       <number>16</number>
+-      </property>
+-      <property name="rightMargin">
+-       <number>16</number>
+-      </property>
+-      <property name="bottomMargin">
+-       <number>16</number>
+-      </property>
+-      <item>
+-       <widget class="PreviewWidget" name="previewWidget" native="true">
+-        <property name="minimumSize">
+-         <size>
+-          <width>300</width>
+-          <height>180</height>
+-         </size>
+-        </property>
+-        <property name="maximumSize">
+-         <size>
+-          <width>300</width>
+-          <height>180</height>
+-         </size>
+-        </property>
+-       </widget>
+-      </item>
+-      <item>
+-       <spacer name="horizontalSpacer">
+-        <property name="orientation">
+-         <enum>Qt::Horizontal</enum>
+-        </property>
+-        <property name="sizeType">
+-         <enum>QSizePolicy::Expanding</enum>
+-        </property>
+-        <property name="sizeHint" stdset="0">
+-         <size>
+-          <width>40</width>
+-          <height>20</height>
+-         </size>
+-        </property>
+-       </spacer>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="screensaverLayout"/>
+-   </item>
+-   <item>
+-    <widget class="QFrame" name="enableFrame">
+-     <property name="minimumSize">
+-      <size>
+-       <width>550</width>
+-       <height>50</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>960</width>
+-       <height>50</height>
+-      </size>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::Box</enum>
+-     </property>
+-     <property name="lineWidth">
+-      <number>0</number>
+-     </property>
+-     <layout class="QHBoxLayout" name="horizontalLayout_3">
+-      <property name="spacing">
+-       <number>0</number>
+-      </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>
+-       <layout class="QHBoxLayout" name="enableHorLayout">
+-        <property name="spacing">
+-         <number>0</number>
+-        </property>
+-        <property name="leftMargin">
+-         <number>16</number>
+-        </property>
+-        <property name="rightMargin">
+-         <number>16</number>
+-        </property>
+-        <item>
+-         <widget class="FixLabel" name="enableLabel">
+-          <property name="sizePolicy">
+-           <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-            <horstretch>0</horstretch>
+-            <verstretch>0</verstretch>
+-           </sizepolicy>
+-          </property>
+-          <property name="minimumSize">
+-           <size>
+-            <width>196</width>
+-            <height>0</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>220</width>
+-            <height>16777215</height>
+-           </size>
+-          </property>
+-          <property name="text">
+-           <string>Lock screen when activating screensaver</string>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="QComboBox" name="comboBox">
+-          <property name="minimumSize">
+-           <size>
+-            <width>300</width>
+-            <height>0</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>30</height>
+-           </size>
+-          </property>
+-          <property name="styleSheet">
+-           <string notr="true"/>
+-          </property>
+-         </widget>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <spacer name="verticalSpacer">
+-     <property name="orientation">
+-      <enum>Qt::Vertical</enum>
+-     </property>
+-     <property name="sizeHint" stdset="0">
+-      <size>
+-       <width>20</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-    </spacer>
+-   </item>
+-  </layout>
+- </widget>
+- <layoutdefault spacing="6" margin="11"/>
+- <customwidgets>
+-  <customwidget>
+-   <class>TitleLabel</class>
+-   <extends>QLabel</extends>
+-   <header location="global">titlelabel.h</header>
+-  </customwidget>
+-  <customwidget>
+-   <class>FixLabel</class>
+-   <extends>QLabel</extends>
+-   <header>fixlabel.h</header>
+-  </customwidget>
+-  <customwidget>
+-   <class>PreviewWidget</class>
+-   <extends>QWidget</extends>
+-   <header>previewwidget.h</header>
+-   <container>1</container>
+-  </customwidget>
+- </customwidgets>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/personalized/screensaver/screensaverui.cpp b/plugins/personalized/screensaver/screensaverui.cpp
+index 0c23bc1..f45526c 100644
+--- a/plugins/personalized/screensaver/screensaverui.cpp
++++ b/plugins/personalized/screensaver/screensaverui.cpp
+@@ -26,7 +26,8 @@ void ScreensaverUi::initUi()
+ 
+ void ScreensaverUi::initPreview()
+ {
+-    screensaverTitle = new TitleLabel(this);
++    screensaverTitle = new KLabel(this);
++    screensaverTitle->setContentsMargins(16, 0, 0, 0);
+     previewFrame     = new UkccFrame(this);
+     previewLayout    = new QHBoxLayout(previewFrame);
+     previewWidget    = new PreviewWidget(this);
+@@ -74,7 +75,7 @@ void ScreensaverUi::initSourceFrame()
+ {
+     UkccFrame   *screensaverSourceFrame = new UkccFrame(customizeGroup, UkccFrame::BorderRadiusStyle::Around, true);
+     QHBoxLayout *sourceLayout           = new QHBoxLayout(screensaverSourceFrame);
+-    FixLabel    *sourceLabel            = new FixLabel();
++    KLabel    *sourceLabel            = new KLabel();
+ 
+     sourcePathLine = new QLineEdit();
+     sourceButton   = new QPushButton();
+@@ -99,7 +100,7 @@ void ScreensaverUi::initSwitchModeFrame()
+ {
+     UkccFrame    *pictureSwitchFrame = new UkccFrame(customizeGroup, UkccFrame::BorderRadiusStyle::Around, true);
+     QHBoxLayout  *randomLayout       = new QHBoxLayout(pictureSwitchFrame);
+-    FixLabel     *randomLabel        = new FixLabel();
++    KLabel     *randomLabel        = new KLabel();
+     QRadioButton *radioOrder         = new QRadioButton();
+     QRadioButton *radioRand          = new QRadioButton();
+ 
+@@ -129,7 +130,7 @@ void ScreensaverUi::initSwitchTimeFrame()
+ {
+     UkccFrame   *timeSetFrame  = new UkccFrame(customizeGroup, UkccFrame::BorderRadiusStyle::Around, true);
+     QHBoxLayout *timeSetLayout = new QHBoxLayout();
+-    FixLabel    *timeSetLabel  = new FixLabel();
++    KLabel    *timeSetLabel  = new KLabel();
+ 
+     switchTimeComboBox = new QComboBox();
+ 
+@@ -149,7 +150,7 @@ void ScreensaverUi::initCustomTextFrame()
+ {
+     UkccFrame   *showTextFrame  = new UkccFrame(customizeGroup, UkccFrame::BorderRadiusStyle::Around, true);
+     QHBoxLayout *showTextLayout = new QHBoxLayout();
+-    FixLabel    *showLabel      = new FixLabel();
++    KLabel    *showLabel      = new KLabel();
+ 
+     textLineEdit = new QLineEdit(); //用户输入文字
+     showTextFrame->setLayout(showTextLayout);
+@@ -168,7 +169,7 @@ void ScreensaverUi::initTextPositionFrame()
+ {
+     UkccFrame    *showTextSetFrame = new UkccFrame(customizeGroup, UkccFrame::BorderRadiusStyle::Around, true);
+     QHBoxLayout  *textSetLayout    = new QHBoxLayout(showTextSetFrame);
+-    FixLabel     *textSetLabel     = new FixLabel();
++    KLabel     *textSetLabel     = new KLabel();
+     QRadioButton *radioRandom      = new QRadioButton(this);
+     QRadioButton *radioCenter      = new QRadioButton(this);
+ 
+@@ -198,7 +199,7 @@ void ScreensaverUi::initBreakTimeFrame()
+ {
+     UkccFrame   *showTimeFrame  = new UkccFrame(screensaverGroup, UkccFrame::BorderRadiusStyle::Around, true);
+     QHBoxLayout *showTimeLayout = new QHBoxLayout(showTimeFrame);
+-    FixLabel    *showTimeLabel  = new FixLabel();
++    KLabel    *showTimeLabel  = new KLabel();
+ 
+     showTimeLayout->setContentsMargins(16,0,16,0);
+     showTimeLayout->addWidget(showTimeLabel);
+@@ -219,7 +220,7 @@ void ScreensaverUi::initScreenlockFrame()
+ {
+     UkccFrame   *lockFrame  = new UkccFrame(screensaverGroup, UkccFrame::BorderRadiusStyle::Around, true);;
+     QHBoxLayout *lockLayout = new QHBoxLayout(lockFrame);
+-    FixLabel    *lockLabel  = new FixLabel();
++    KLabel    *lockLabel  = new KLabel();
+     //~ contents_path /Screensaver/Lock screen when screensaver boot
+     lockLabel->setText(tr("Lock screen when screensaver boot"));
+     lockLabel->setFixedWidth(400);
+diff --git a/plugins/personalized/screensaver/screensaverui.h b/plugins/personalized/screensaver/screensaverui.h
+index 5cf7461..fd36cf9 100644
+--- a/plugins/personalized/screensaver/screensaverui.h
++++ b/plugins/personalized/screensaver/screensaverui.h
+@@ -1,7 +1,6 @@
+ #ifndef SCREENSAVERUI_H
+ #define SCREENSAVERUI_H
+ 
+-#include "titlelabel.h"
+ #include "settinggroup.h"
+ #include "switchwidget.h"
+ #include "pushbuttonwidget.h"
+@@ -15,6 +14,9 @@
+ #include <QFileDialog>
+ #include <QButtonGroup>
+ #include <QFileSystemWatcher>
++#include <klabel.h>
++
++using namespace kdk;
+ 
+ class ScreensaverUi : public QWidget
+ {
+@@ -56,7 +58,7 @@ private:
+     QVBoxLayout *uiLayout         = nullptr;
+ 
+ private:
+-    TitleLabel    *screensaverTitle = nullptr;
++    KLabel    *screensaverTitle = nullptr;
+     UkccFrame     *previewFrame     = nullptr;
+     QHBoxLayout   *previewLayout    = nullptr;
+     PreviewWidget *previewWidget    = nullptr;
+diff --git a/plugins/personalized/theme/theme.cpp b/plugins/personalized/theme/theme.cpp
+index 31dcc63..8e65b3e 100644
+--- a/plugins/personalized/theme/theme.cpp
++++ b/plugins/personalized/theme/theme.cpp
+@@ -26,9 +26,6 @@
+ #include <QtDBus/QDBusConnection>
+ #include <QtConcurrent>
+ #include <QRadioButton>
+-
+-#include "iconlabel.h"
+-
+ #include "cursor/xcursortheme.h"
+ #include "../../../shell/customstyle.h"
+ #include "ukcccommon.h"
+@@ -179,7 +176,8 @@ void Theme::initThemeUi()
+     mThemeModeFrame->setFrameShape(QFrame::Shape::Box);
+ 
+     FlowLayout *hLyt = new FlowLayout(mThemeModeFrame, 20, 40, 24);
+-    mThemeModeLabel = new TitleLabel(mThemeModeFrame);
++    mThemeModeLabel = new KLabel(mThemeModeFrame);
++    mThemeModeLabel->setContentsMargins(16, 0, 0, 0);
+ 
+     mLightBtn = new ThemeButton(tr("Light"), QPixmap(QString("://img/plugins/theme/%1.png").arg("light")), mThemeModeFrame);
+     mLightBtn->setObjectName("lighttheme");
+@@ -210,7 +208,8 @@ void Theme::initThemeUi()
+     ui->thememodeLayout->addSpacing(8);
+     ui->thememodeLayout->addWidget(mThemeModeFrame);
+ 
+-    mEffectLabel = new TitleLabel(pluginWidget);
++    mEffectLabel = new KLabel(pluginWidget);
++    mEffectLabel->setContentsMargins(16, 0, 0, 0);
+     //~ contents_path /Theme/Effect setting
+     mEffectLabel->setText(tr("Effect setting"));
+ 
+@@ -355,7 +354,8 @@ void Theme::initIconTheme() {
+ 
+     FlowLayout *fLyt = new FlowLayout(mThemeIconFrame, 0, 40, 0);
+     fLyt->setContentsMargins(16, 16, 0, 4);
+-    mThemeIconLabel = new TitleLabel();
++    mThemeIconLabel = new KLabel();
++    mThemeIconLabel->setContentsMargins(16, 0, 0, 0);
+ 
+     // 构建图标主题Widget Group,方便更新选中/非选中状态
+     mThemeIconBtnGroup = new QButtonGroup;
+@@ -419,7 +419,8 @@ void Theme::initControlTheme()
+     mControlMap.insert("dustGold",     QColor(255, 217, 102));
+     mControlMap.insert("polarGreen",   QColor(82, 196, 41));
+ 
+-    mControlLabel = new TitleLabel();
++    mControlLabel = new KLabel();
++    mControlLabel->setContentsMargins(16, 0, 0, 0);
+     mControlLabel->setMaximumWidth(100);
+     //~ contents_path /Theme/Corlor
+     mControlLabel->setText(tr("Corlor"));
+@@ -477,7 +478,8 @@ void Theme::initCursorTheme(){
+     FlowLayout *fLyt = new FlowLayout(mThemeCursorFrame, 0, 40, 0);
+     fLyt->setContentsMargins(16, 16, 0, 4);
+ 
+-    mThemeCursorLabel = new TitleLabel(mThemeCursorFrame);
++    mThemeCursorLabel = new KLabel(mThemeCursorFrame);
++    mThemeCursorLabel->setContentsMargins(16, 0, 0, 0);
+ 
+     QStringList cursorThemes = getSystemCursorThemes();
+ 
+@@ -532,7 +534,8 @@ void Theme::initGlobalTheme()
+ 
+     mFLyt = new FlowLayout(mSwitchFrame, 0, 40, 0);
+     mFLyt->setContentsMargins(16, 16, 0, 4);
+-    mSwitchLabel = new TitleLabel();
++    mSwitchLabel = new KLabel();
++    mSwitchLabel->setContentsMargins(16, 0, 0, 0);
+     mSwitchLabel->setText(tr("Theme"));
+ 
+     ui->switchLyt->addWidget(mSwitchLabel);
+@@ -604,7 +607,8 @@ QList<GlobalTheme *> Theme::sortGlobalTheme(const QList<GlobalTheme *> &globalTh
+ 
+ void Theme::initJumpTheme()
+ {
+-    mJumpLabel  = new TitleLabel(pluginWidget);
++    mJumpLabel  = new KLabel(pluginWidget);
++    mJumpLabel->setContentsMargins(16, 0, 0, 0);
+ 
+     //~ contents_path /Theme/Other
+     mJumpLabel->setText(tr("Other"));
+diff --git a/plugins/personalized/theme/theme.h b/plugins/personalized/theme/theme.h
+index 9366e81..47cf994 100644
+--- a/plugins/personalized/theme/theme.h
++++ b/plugins/personalized/theme/theme.h
+@@ -38,8 +38,6 @@
+ #include <libkysettings.h>
+ #endif
+ 
+-#include "uslider.h"
+-#include "titlelabel.h"
+ #include "flowlayout.h"
+ #include "icontheme.h"
+ 
+@@ -56,6 +54,7 @@
+ #include "switchwidget.h"
+ #include "sliderwidget.h"
+ #include "comboxwidget.h"
++#include <klabel.h>
+ 
+ using namespace kdk;
+ 
+@@ -99,13 +98,13 @@ private:
+     WidgetGroup *cursorThemeWidgetGroup;
+     WidgetGroup *iconThemeWidgetGroup;
+ 
+-    TitleLabel *mSwitchLabel;
+-    TitleLabel *mControlLabel;
+-    TitleLabel *mJumpLabel;
+-    TitleLabel *mThemeModeLabel;
+-    TitleLabel *mThemeIconLabel;
+-    TitleLabel *mThemeCursorLabel         = nullptr;
+-    TitleLabel *mEffectLabel;
++    KLabel *mSwitchLabel;
++    KLabel *mControlLabel;
++    KLabel *mJumpLabel;
++    KLabel *mThemeModeLabel;
++    KLabel *mThemeIconLabel;
++    KLabel *mThemeCursorLabel         = nullptr;
++    KLabel *mEffectLabel;
+ 
+     ThemeButton *mCustomPicUnit           = nullptr;
+     ThemeButton *mPrePicUnit              = nullptr;
+diff --git a/plugins/personalized/theme/theme.pro b/plugins/personalized/theme/theme.pro
+index 7bc7af4..fef836a 100644
+--- a/plugins/personalized/theme/theme.pro
++++ b/plugins/personalized/theme/theme.pro
+@@ -6,7 +6,6 @@
+ include(../../../env.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/FlowLayout/flowlayout.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Label/label.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/Uslider/uslider.pri)
+ include($$PROJECT_ROOTDIR/libukcc/interface.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/SettingWidget/settingwidget.pri)
+ 
+diff --git a/plugins/personalized/theme/themewidget.cpp b/plugins/personalized/theme/themewidget.cpp
+index 137a431..a95284b 100644
+--- a/plugins/personalized/theme/themewidget.cpp
++++ b/plugins/personalized/theme/themewidget.cpp
+@@ -65,7 +65,7 @@ ThemeWidget::ThemeWidget(QSize iSize, QString name, QStringList iStringList, QWi
+             selectedLabel->setPixmap(selectIcon.pixmap(selectIcon.actualSize(QSize(16, 16))));
+     });
+ 
+-    FixLabel * nameLabel = new FixLabel(this);
++    KLabel * nameLabel = new KLabel(this);
+     QSizePolicy nameSizePolicy = nameLabel->sizePolicy();
+     nameSizePolicy.setHorizontalPolicy(QSizePolicy::Fixed);
+     nameSizePolicy.setVerticalPolicy(QSizePolicy::Fixed);
+@@ -132,7 +132,7 @@ ThemeWidget::ThemeWidget(QSize iSize, QString name, const QList<QPixmap> &listMa
+             selectedLabel->setPixmap(selectIcon.pixmap(selectIcon.actualSize(QSize(16, 16))));
+     });
+ 
+-    FixLabel * nameLabel = new FixLabel(this);
++    KLabel * nameLabel = new KLabel(this);
+     QSizePolicy nameSizePolicy = nameLabel->sizePolicy();
+     nameSizePolicy.setHorizontalPolicy(QSizePolicy::Preferred);
+     nameSizePolicy.setVerticalPolicy(QSizePolicy::Fixed);
+diff --git a/plugins/personalized/theme/themewidget.h b/plugins/personalized/theme/themewidget.h
+index aa66bb2..008016b 100644
+--- a/plugins/personalized/theme/themewidget.h
++++ b/plugins/personalized/theme/themewidget.h
+@@ -27,7 +27,9 @@
+ #include <QRadioButton>
+ #include <QFrame>
+ #include <QGSettings>
+-#include "fixlabel.h"
++#include <klabel.h>
++
++using namespace kdk;
+ 
+ #define THEME_QT_SCHEMA  "org.ukui.style"
+ 
+diff --git a/plugins/personalized/wallpaper/colordialog.cpp b/plugins/personalized/wallpaper/colordialog.cpp
+index 5d305cc..492007b 100644
+--- a/plugins/personalized/wallpaper/colordialog.cpp
++++ b/plugins/personalized/wallpaper/colordialog.cpp
+@@ -21,7 +21,6 @@
+ #include "ui_colordialog.h"
+ #include "colorsquare.h"
+ #include "maskwidget.h"
+-#include "closebutton.h"
+ #include <QRegExp>
+ 
+ extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+diff --git a/plugins/personalized/wallpaper/wallpaper.pro b/plugins/personalized/wallpaper/wallpaper.pro
+index 553a482..51f972a 100644
+--- a/plugins/personalized/wallpaper/wallpaper.pro
++++ b/plugins/personalized/wallpaper/wallpaper.pro
+@@ -7,9 +7,7 @@ include(../../../env.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/AddBtn/addbtn.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Label/label.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/MaskWidget/maskwidget.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/CloseButton/closebutton.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/FlowLayout/flowlayout.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/ImageUtil/imageutil.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/HoverWidget/hoverwidget.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/SettingWidget/settingwidget.pri)
+ include($$PROJECT_ROOTDIR/libukcc/interface.pri)
+diff --git a/plugins/personalized/wallpaper/wallpaper.ui b/plugins/personalized/wallpaper/wallpaper.ui
+deleted file mode 100644
+index 6d5ef7f..0000000
+--- a/plugins/personalized/wallpaper/wallpaper.ui
++++ /dev/null
+@@ -1,387 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>Wallpaper</class>
+- <widget class="QWidget" name="Wallpaper">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>846</width>
+-    <height>479</height>
+-   </rect>
+-  </property>
+-  <property name="sizePolicy">
+-   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-    <horstretch>0</horstretch>
+-    <verstretch>0</verstretch>
+-   </sizepolicy>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>0</width>
+-    <height>0</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>16777215</width>
+-    <height>16777215</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string notr="true">Wallpaper</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_2">
+-   <property name="spacing">
+-    <number>0</number>
+-   </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>
+-    <widget class="QWidget" name="wallpaperWidget" native="true">
+-     <property name="sizePolicy">
+-      <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+-       <horstretch>0</horstretch>
+-       <verstretch>0</verstretch>
+-      </sizepolicy>
+-     </property>
+-     <property name="minimumSize">
+-      <size>
+-       <width>550</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>16777215</width>
+-       <height>16777215</height>
+-      </size>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_6">
+-      <property name="spacing">
+-       <number>0</number>
+-      </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>
+-       <layout class="QVBoxLayout" name="verticalLayout_3">
+-        <property name="spacing">
+-         <number>8</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>0</number>
+-        </property>
+-        <item>
+-         <widget class="TitleLabel" name="titleLabel">
+-          <property name="sizePolicy">
+-           <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-            <horstretch>0</horstretch>
+-            <verstretch>0</verstretch>
+-           </sizepolicy>
+-          </property>
+-          <property name="text">
+-           <string>Desktop Background</string>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="QStackedWidget" name="previewStackedWidget">
+-          <property name="minimumSize">
+-           <size>
+-            <width>0</width>
+-            <height>212</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>212</height>
+-           </size>
+-          </property>
+-          <property name="frameShape">
+-           <enum>QFrame::Box</enum>
+-          </property>
+-          <property name="currentIndex">
+-           <number>0</number>
+-          </property>
+-          <widget class="QWidget" name="pPicturePage">
+-           <layout class="QHBoxLayout" name="horizontalLayout_8">
+-            <property name="spacing">
+-             <number>0</number>
+-            </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>
+-             <layout class="QHBoxLayout" name="horizontalLayout">
+-              <property name="leftMargin">
+-               <number>16</number>
+-              </property>
+-              <property name="topMargin">
+-               <number>16</number>
+-              </property>
+-              <property name="rightMargin">
+-               <number>16</number>
+-              </property>
+-              <property name="bottomMargin">
+-               <number>16</number>
+-              </property>
+-              <item>
+-               <widget class="PictureLabel" name="previewLabel">
+-                <property name="sizePolicy">
+-                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                  <horstretch>0</horstretch>
+-                  <verstretch>0</verstretch>
+-                 </sizepolicy>
+-                </property>
+-                <property name="minimumSize">
+-                 <size>
+-                  <width>300</width>
+-                  <height>180</height>
+-                 </size>
+-                </property>
+-                <property name="maximumSize">
+-                 <size>
+-                  <width>300</width>
+-                  <height>180</height>
+-                 </size>
+-                </property>
+-                <property name="text">
+-                 <string/>
+-                </property>
+-               </widget>
+-              </item>
+-              <item>
+-               <spacer name="horizontalSpacer">
+-                <property name="orientation">
+-                 <enum>Qt::Horizontal</enum>
+-                </property>
+-                <property name="sizeHint" stdset="0">
+-                 <size>
+-                  <width>40</width>
+-                  <height>20</height>
+-                 </size>
+-                </property>
+-               </spacer>
+-              </item>
+-             </layout>
+-            </item>
+-           </layout>
+-          </widget>
+-          <widget class="QWidget" name="pColorPage">
+-           <layout class="QHBoxLayout" name="horizontalLayout_10">
+-            <property name="spacing">
+-             <number>0</number>
+-            </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>
+-             <layout class="QHBoxLayout" name="horizontalLayout_9">
+-              <property name="leftMargin">
+-               <number>16</number>
+-              </property>
+-              <property name="topMargin">
+-               <number>16</number>
+-              </property>
+-              <property name="rightMargin">
+-               <number>16</number>
+-              </property>
+-              <property name="bottomMargin">
+-               <number>16</number>
+-              </property>
+-              <item>
+-               <widget class="QWidget" name="previewWidget" native="true">
+-                <property name="minimumSize">
+-                 <size>
+-                  <width>300</width>
+-                  <height>0</height>
+-                 </size>
+-                </property>
+-                <property name="maximumSize">
+-                 <size>
+-                  <width>300</width>
+-                  <height>16777215</height>
+-                 </size>
+-                </property>
+-               </widget>
+-              </item>
+-              <item>
+-               <spacer name="horizontalSpacer_2">
+-                <property name="orientation">
+-                 <enum>Qt::Horizontal</enum>
+-                </property>
+-                <property name="sizeHint" stdset="0">
+-                 <size>
+-                  <width>40</width>
+-                  <height>20</height>
+-                 </size>
+-                </property>
+-               </spacer>
+-              </item>
+-             </layout>
+-            </item>
+-           </layout>
+-          </widget>
+-         </widget>
+-        </item>
+-        <item>
+-         <layout class="QVBoxLayout" name="centerLayout">
+-          <property name="spacing">
+-           <number>0</number>
+-          </property>
+-         </layout>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <widget class="QWidget" name="bottomWidget" native="true">
+-     <layout class="QHBoxLayout" name="horizontalLayout_4">
+-      <property name="spacing">
+-       <number>32</number>
+-      </property>
+-      <property name="leftMargin">
+-       <number>4</number>
+-      </property>
+-      <property name="topMargin">
+-       <number>16</number>
+-      </property>
+-      <property name="rightMargin">
+-       <number>4</number>
+-      </property>
+-      <property name="bottomMargin">
+-       <number>0</number>
+-      </property>
+-      <item>
+-       <widget class="QPushButton" name="browserLocalwpBtn">
+-        <property name="minimumSize">
+-         <size>
+-          <width>110</width>
+-          <height>0</height>
+-         </size>
+-        </property>
+-        <property name="maximumSize">
+-         <size>
+-          <width>110</width>
+-          <height>16777215</height>
+-         </size>
+-        </property>
+-        <property name="text">
+-         <string>Browse</string>
+-        </property>
+-       </widget>
+-      </item>
+-      <item>
+-       <widget class="QPushButton" name="onlineBtn">
+-        <property name="text">
+-         <string>Online Picture</string>
+-        </property>
+-       </widget>
+-      </item>
+-      <item>
+-       <spacer name="horizontalSpacer_3">
+-        <property name="orientation">
+-         <enum>Qt::Horizontal</enum>
+-        </property>
+-        <property name="sizeHint" stdset="0">
+-         <size>
+-          <width>40</width>
+-          <height>20</height>
+-         </size>
+-        </property>
+-       </spacer>
+-      </item>
+-      <item>
+-       <widget class="QPushButton" name="resetBtn">
+-        <property name="minimumSize">
+-         <size>
+-          <width>120</width>
+-          <height>0</height>
+-         </size>
+-        </property>
+-        <property name="maximumSize">
+-         <size>
+-          <width>16777215</width>
+-          <height>16777215</height>
+-         </size>
+-        </property>
+-        <property name="text">
+-         <string>Reset To Default</string>
+-        </property>
+-       </widget>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <spacer name="verticalSpacer">
+-     <property name="orientation">
+-      <enum>Qt::Vertical</enum>
+-     </property>
+-     <property name="sizeHint" stdset="0">
+-      <size>
+-       <width>20</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-    </spacer>
+-   </item>
+-  </layout>
+- </widget>
+- <layoutdefault spacing="6" margin="11"/>
+- <customwidgets>
+-  <customwidget>
+-   <class>TitleLabel</class>
+-   <extends>QLabel</extends>
+-   <header location="global">titlelabel.h</header>
+-  </customwidget>
+-  <customwidget>
+-   <class>PictureLabel</class>
+-   <extends>QLabel</extends>
+-   <header>picturelabel.h</header>
+-  </customwidget>
+- </customwidgets>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/personalized/wallpaper/wallpaperui.cpp b/plugins/personalized/wallpaper/wallpaperui.cpp
+index 6c3eb18..8a9a212 100644
+--- a/plugins/personalized/wallpaper/wallpaperui.cpp
++++ b/plugins/personalized/wallpaper/wallpaperui.cpp
+@@ -21,7 +21,8 @@ WallpaperUi::~WallpaperUi()
+ 
+ void WallpaperUi::createObject()
+ {
+-    wallpaperTitleLabel = new TitleLabel(this);
++    wallpaperTitleLabel = new KLabel(this);
++    wallpaperTitleLabel->setContentsMargins(16, 0, 0, 0);
+     previewLabel        = new PreviewLabel(this);
+     settingGroup        = new SettingGroup(this);
+     //~ contents_path /Wallpaper/Background
+diff --git a/plugins/personalized/wallpaper/wallpaperui.h b/plugins/personalized/wallpaper/wallpaperui.h
+index 13bf97c..3af4f4a 100644
+--- a/plugins/personalized/wallpaper/wallpaperui.h
++++ b/plugins/personalized/wallpaper/wallpaperui.h
+@@ -2,8 +2,6 @@
+ #define WALLPAPERUI_H
+ 
+ #include "previewlabel.h"
+-#include "titlelabel.h"
+-#include "fixlabel.h"
+ #include "settinggroup.h"
+ #include "ukccframe.h"
+ #include "addbutton.h"
+@@ -16,6 +14,9 @@
+ #include <QLineEdit>
+ #include <QRadioButton>
+ #include <QButtonGroup>
++#include <klabel.h>
++
++using namespace kdk;
+ 
+ class WallpaperUi : public QWidget
+ {
+@@ -48,7 +49,7 @@ private:
+     QVBoxLayout *uiLayout      = nullptr;
+ 
+ private:
+-    TitleLabel   *wallpaperTitleLabel = nullptr;
++    KLabel   *wallpaperTitleLabel = nullptr;
+     PreviewLabel *previewLabel        = nullptr;
+ 
+ private:
+diff --git a/plugins/plugins.pro b/plugins/plugins.pro
+index 1c4881d..5be6ac0 100644
+--- a/plugins/plugins.pro
++++ b/plugins/plugins.pro
+@@ -25,10 +25,6 @@ SUBDIRS += devices/shortcut \
+            security-updates/backup \
+ }
+ 
+-if(contains(DEFINES, PANGUW)){
+-SUBDIRS += system/display_hw \
+-}
+-
+ if(contains(DEFINES, MAVIS)){
+ SUBDIRS += system/display \
+            system/backup_intel \
+diff --git a/plugins/system/about/about.cpp b/plugins/system/about/about.cpp
+index 64cfa1f..05965c7 100644
+--- a/plugins/system/about/about.cpp
++++ b/plugins/system/about/about.cpp
+@@ -405,9 +405,9 @@ void About::setupDiskCompenet()
+             mAboutWidget->getDiskLabel()->hide();
+             mAboutWidget->getDiskContent()->hide();
+             QHBoxLayout * layout = new QHBoxLayout;
+-            QLabel *label = new FixLabel;
++            QLabel *label = new KLabel;
+             label->setText(tr("Disk") + QString::number(count + 1));
+-            QLabel *diskLabel = new FixLabel;
++            QLabel *diskLabel = new KLabel;
+             diskLabel->setText(iter.value().at(0) + "B (" + iter.value().at(1) + "B "+ tr("avaliable") +")");
+ 
+             layout->addWidget(label);
+diff --git a/plugins/system/about/about.h b/plugins/system/about/about.h
+index 7fbcd5b..82f5575 100644
+--- a/plugins/system/about/about.h
++++ b/plugins/system/about/about.h
+@@ -47,8 +47,6 @@ using namespace ukcc;
+ #include "statusdialog.h"
+ 
+ #include "shell/interface.h"
+-#include "titlelabel.h"
+-#include "fixlabel.h"
+ #include "lightlabel.h"
+ #include "kswitchbutton.h"
+ #include <kysdk/kysdk-system/libkysysinfo.h>
+diff --git a/plugins/system/about/aboutui.cpp b/plugins/system/about/aboutui.cpp
+index cb6f456..104950c 100644
+--- a/plugins/system/about/aboutui.cpp
++++ b/plugins/system/about/aboutui.cpp
+@@ -27,13 +27,16 @@ void AboutUi::initUi()
+     AboutLayout->setContentsMargins(0, 0, 0, 0);
+     AboutLayout->setSpacing(8);
+ 
+-    mTitleLabel = new TitleLabel(Aboutwidget);
++    mTitleLabel = new KLabel(Aboutwidget);
++    mTitleLabel->setContentsMargins(16, 0, 0, 0);
+     //~ contents_path /About/System Summary
+     mTitleLabel->setText(tr("System Summary"));
+-    mPriTitleLabel = new TitleLabel(Aboutwidget);
++    mPriTitleLabel = new KLabel(Aboutwidget);
++    mPriTitleLabel->setContentsMargins(16, 0, 0, 0);
+     //~ contents_path /About/Privacy and agreement
+     mPriTitleLabel->setText(tr("Privacy and agreement"));
+-    mHoldTitleLabel = new TitleLabel(Aboutwidget);
++    mHoldTitleLabel = new KLabel(Aboutwidget);
++    mHoldTitleLabel->setContentsMargins(16, 0, 0, 0);
+     mHoldTitleLabel->setText(tr("Support"));
+ 
+     mInformationFrame = new QFrame(Aboutwidget);
+@@ -44,38 +47,44 @@ void AboutUi::initUi()
+     mInformationLayout->setContentsMargins(space, space, space, space);
+ 
+     /* LOGO */
+-    mLogoLabel = new FixLabel(mInformationFrame);
++    mLogoLabel = new QLabel(mInformationFrame);
+     mLogoLabel->setFixedSize(130, 50);
+ 
+      /* 版本名称 */
+-    mVersionLabel_1 = new FixLabel(tr("Version"));
++    mVersionLabel_1 = new KLabel(this);
++    mVersionLabel_1->setText(tr("Version"));
+     mVersionLabel_2 = new LightLabel;
+     mVersionFrame = createFrame(mVersionLabel_1, mVersionLabel_2);
+ 
+      /* 版本号 */
+-    mVersionNumberLabel_1 = new FixLabel(tr("Version Number"));
++    mVersionNumberLabel_1 = new KLabel(this);
++    mVersionNumberLabel_1->setText(tr("Version Number"));
+     mVersionNumberLabel_2 = new LightLabel;
+     mVersionNumberFrame = createFrame(mVersionNumberLabel_1, mVersionNumberLabel_2);
+ 
+     /* 系统补丁版本号 */
+-    mPatchVersionLabel_1 = new FixLabel(tr("Patch Version"));
++    mPatchVersionLabel_1 = new KLabel(this);
++    mPatchVersionLabel_1->setText(tr("Patch Version"));
+     mPatchVersionLabel_2 = new LightLabel;
+     mPatchVersionFrame = createFrame(mPatchVersionLabel_1, mPatchVersionLabel_2);
+ 
+     /* 安装日期 */
+-    mInstallDateLabel_1 = new FixLabel(tr("Installed Date"));
++    mInstallDateLabel_1 = new KLabel(this);
++    mInstallDateLabel_1->setText(tr("Installed Date"));
+     mInstallDateLabel_2 = new LightLabel;
+     mInstallDateFrame = createFrame(mInstallDateLabel_1, mInstallDateLabel_2);
+ 
+     /* 系统更新时间 */
+-    mUpgradeDateLabel_1 = new FixLabel(tr("Upgrade Date"));
++    mUpgradeDateLabel_1 = new KLabel(this);
++    mUpgradeDateLabel_1->setText(tr("Upgrade Date"));
+     mUpgradeDateLabel_2 = new LightLabel;
+     mUpgradeDateFrame = createFrame(mUpgradeDateLabel_1, mUpgradeDateLabel_2);
+ 
+ 
+     /* 主机名 */
+     //~ contents_path /About/HostName
+-    mHostNameLabel_1 = new FixLabel(tr("HostName"));
++    mHostNameLabel_1 = new KLabel(this);
++    mHostNameLabel_1->setText(tr("HostName"));
+     mHostNameLabel_2 = new LightLabel;
+     mHostNameLabel_3 = new LightLabel;
+     mHostNameLabel_3->setFixedSize(16, 16);
+@@ -87,32 +96,38 @@ void AboutUi::initUi()
+     mHostNameFrame = createFrame(mHostNameLabel_1, mHostNameLabel_2, mHostNameLabel_3);
+ 
+     /* 内核 */
+-    mKernelLabel_1 = new FixLabel(tr("Kernel"));
++    mKernelLabel_1 = new KLabel(this);
++    mKernelLabel_1->setText(tr("Kernel"));
+     mKernelLabel_2 = new LightLabel;
+     mKernelFrame = createFrame(mKernelLabel_1, mKernelLabel_2);
+ 
+     /* CPU */
+-    mCpuLabel_1 = new FixLabel(tr("CPU"));
++    mCpuLabel_1 = new KLabel(this);
++    mCpuLabel_1->setText(tr("CPU"));
+     mCpuLabel_2 = new LightLabel;
+     mCpuFrame = createFrame(mCpuLabel_1, mCpuLabel_2);
+ 
+     /* 内存 */
+-    mMemoryLabel_1 = new FixLabel(tr("Memory"));
++    mMemoryLabel_1 = new KLabel(this);
++    mMemoryLabel_1->setText(tr("Memory"));
+     mMemoryLabel_2 = new LightLabel;
+     mMemoryFrame = createFrame(mMemoryLabel_1, mMemoryLabel_2);
+ 
+     /* 硬盘 */
+-    mDiskLabel_1 = new FixLabel(tr("Disk"));
++    mDiskLabel_1 = new KLabel(this);
++    mDiskLabel_1->setText(tr("Disk"));
+     mDiskLabel_2 = new LightLabel;
+     mDiskFrame = createFrame(mDiskLabel_1, mDiskLabel_2);
+ 
+     /* 桌面 */
+-    mDesktopLabel_1 = new FixLabel(tr("Desktop"));
++    mDesktopLabel_1 = new KLabel(this);
++    mDesktopLabel_1->setText(tr("Desktop"));
+     mDesktopLabel_2 = new LightLabel;
+     mDesktopFrame = createFrame(mDesktopLabel_1, mDesktopLabel_2);
+ 
+     /* 用户名 */
+-    mUsernameLabel_1 = new FixLabel(tr("User"));
++    mUsernameLabel_1 = new KLabel(this);
++    mUsernameLabel_1->setText(tr("User"));
+     mUsernameLabel_2 = new LightLabel;
+     mUsernameFrame = createFrame(mUsernameLabel_1, mUsernameLabel_2);
+ 
+@@ -120,7 +135,8 @@ void AboutUi::initUi()
+     mActivationFrame = initActiveUi();
+ 
+     /* 版权所有 */
+-    mTipLabel = new FixLabel(QString(tr("Copyright ©%1 %2. All rights reserved.").arg(mCopyRightYear).arg(mCopyRightName)), Aboutwidget);
++    mTipLabel = new KLabel(Aboutwidget);
++    mTipLabel->setText(QString(tr("Copyright ©%1 %2. All rights reserved.").arg(mCopyRightYear).arg(mCopyRightName)));
+     mTipLabel->setContentsMargins(16, 0, 0, 0);
+ 
+     /* 隐私和协议 */
+@@ -174,7 +190,7 @@ void AboutUi::initCopyRightName()
+     }
+ }
+ 
+-QFrame *AboutUi::createFrame(FixLabel *label_1, LightLabel *label_2, LightLabel *label_3)
++QFrame *AboutUi::createFrame(KLabel *label_1, LightLabel *label_2, LightLabel *label_3)
+ {
+     QFrame *frame = new QFrame;
+     frame->installEventFilter(this);
+@@ -227,7 +243,7 @@ QFrame *AboutUi::initHoldUi()
+ 
+     mHpLabel = new QLabel;
+     mEducateLabel = new QLabel;
+-    mEducateIconLabel = new FixLabel;
++    mEducateIconLabel = new KLabel;
+     mEducateIconLabel->setFixedSize(96,96);
+ 
+     mHpLabel->setWordWrap(true);
+@@ -301,10 +317,10 @@ QFrame *AboutUi::initActiveUi()
+     QGridLayout *mActivationLayout = new QGridLayout();
+     mActivationLayout->setVerticalSpacing(8);
+ 
+-    mStatusLabel_1 = new FixLabel;
++    mStatusLabel_1 = new KLabel;
+     mStatusLabel_1->setFixedSize(196, 30);
+     mStatusLabel_2 = new LightLabel;
+-    mSequenceLabel_1 = new FixLabel;
++    mSequenceLabel_1 = new KLabel;
+     mSequenceLabel_1->setFixedSize(196, 30);
+     mSequenceLabel_2 = new KBorderlessButton;
+     mSequenceLabel_2->setObjectName("sequence");
+@@ -336,7 +352,8 @@ QFrame *AboutUi::initPrivacyUi()
+     mPriBtn = new KSwitchButton(frame);
+     mPriBtn->setObjectName("privacysettings");
+     //~ contents_path /About/Send optional diagnostic data
+-    FixLabel *mPriLabel_1 = new FixLabel(tr("Send optional diagnostic data"));
++    KLabel *mPriLabel_1 = new KLabel(this);
++    mPriLabel_1->setText(tr("Send optional diagnostic data"));
+     LightLabel *mPriLabel_2 = new LightLabel(tr("By sending us diagnostic data, improve the system experience and solve your problems faster"));
+     QVBoxLayout *mverticalLayout_2 = new QVBoxLayout;
+     mverticalLayout_2->setSpacing(0);
+@@ -361,7 +378,8 @@ QFrame *AboutUi::initInfoBtnUi()
+     mBtnLyt->setContentsMargins(16, 0, 0, 0);
+     //~ contents_path /About/<<Protocol>>
+     mTrialBtn = new KBorderlessButton(tr("<<Protocol>>"));
+-    mAndLabel = new FixLabel(tr("and"));
++    mAndLabel = new KLabel(this);
++    mAndLabel->setText(tr("and"));
+     //~ contents_path /About/<<Privacy>>
+     mAgreeBtn = new KBorderlessButton(tr("<<Privacy>>"));
+     mTrialBtn->setStyleSheet("text-decoration:underline");
+diff --git a/plugins/system/about/aboutui.h b/plugins/system/about/aboutui.h
+index 504c133..bed61a9 100644
+--- a/plugins/system/about/aboutui.h
++++ b/plugins/system/about/aboutui.h
+@@ -11,12 +11,11 @@
+ #include "privacydialog.h"
+ #include "statusdialog.h"
+ #include "shell/interface.h"
+-#include "titlelabel.h"
+-#include "fixlabel.h"
+ #include "lightlabel.h"
+ #include "kswitchbutton.h"
+ #include <kysdk/kysdk-system/libkysysinfo.h>
+ #include <kborderlessbutton.h>
++#include <klabel.h>
+ 
+ using namespace ukcc;
+ using namespace kdk;
+@@ -63,9 +62,9 @@ public:
+     LightLabel *getUpgradeDate() {return mUpgradeDateLabel_2;}
+     LightLabel *getEditHost() {return mHostNameLabel_3;}
+ 
+-    FixLabel *getSequence() {return mSequenceLabel_1;}
++    KLabel *getSequence() {return mSequenceLabel_1;}
+     KBorderlessButton *getSequenceContent() {return mSequenceLabel_2;}
+-    FixLabel *getDiskLabel() {return mDiskLabel_1;}
++    KLabel *getDiskLabel() {return mDiskLabel_1;}
+ 
+     QFrame *getBuildFrame() {return mVersionNumberFrame;}
+     QFrame *getPatchFrame() {return mPatchVersionFrame;}
+@@ -79,7 +78,7 @@ public:
+ 
+ 
+ private:
+-    QFrame *createFrame(FixLabel *label_1, LightLabel *label_2, LightLabel *label_3 = nullptr);
++    QFrame *createFrame(KLabel *label_1, LightLabel *label_2, LightLabel *label_3 = nullptr);
+     void setShape(QFrame *frame, QFrame::Shape shape);
+     QPixmap loadSvg(const QString &path, int width, int height);
+ 
+@@ -87,9 +86,9 @@ private:
+     QFrame *mHoldWidget;
+     QWidget *mQrCodeWidget;
+ 
+-    TitleLabel *mTitleLabel;
+-    TitleLabel *mPriTitleLabel;
+-    TitleLabel *mHoldTitleLabel;
++    KLabel *mTitleLabel;
++    KLabel *mPriTitleLabel;
++    KLabel *mHoldTitleLabel;
+ 
+     QFrame *mInformationFrame;
+     QFrame *mActivationFrame;
+@@ -112,21 +111,21 @@ private:
+ 
+     QHBoxLayout *mDiskLayout;
+ 
+-    FixLabel *mLogoLabel;
+-    FixLabel *mVersionLabel_1;
+-    FixLabel *mVersionNumLabel_1;
+-    FixLabel *mVersionNumberLabel_1;
+-    FixLabel *mPatchVersionLabel_1;
+-    FixLabel *mInstallDateLabel_1;
+-    FixLabel *mUpgradeDateLabel_1;
+-    FixLabel *mInterVersionLabel_1;
+-    FixLabel *mHostNameLabel_1;
+-    FixLabel *mKernelLabel_1;
+-    FixLabel *mCpuLabel_1;
+-    FixLabel *mMemoryLabel_1;
+-    FixLabel *mDiskLabel_1;
+-    FixLabel *mDesktopLabel_1;
+-    FixLabel *mUsernameLabel_1;
++    QLabel *mLogoLabel;
++    KLabel *mVersionLabel_1;
++    KLabel *mVersionNumLabel_1;
++    KLabel *mVersionNumberLabel_1;
++    KLabel *mPatchVersionLabel_1;
++    KLabel *mInstallDateLabel_1;
++    KLabel *mUpgradeDateLabel_1;
++    KLabel *mInterVersionLabel_1;
++    KLabel *mHostNameLabel_1;
++    KLabel *mKernelLabel_1;
++    KLabel *mCpuLabel_1;
++    KLabel *mMemoryLabel_1;
++    KLabel *mDiskLabel_1;
++    KLabel *mDesktopLabel_1;
++    KLabel *mUsernameLabel_1;
+     LightLabel *mVersionLabel_2;
+     LightLabel *mVersionNumLabel_2;
+     LightLabel *mVersionNumberLabel_2;
+@@ -144,17 +143,17 @@ private:
+     LightLabel *mUsernameLabel_2;
+ 
+ 
+-    FixLabel *mStatusLabel_1;
++    KLabel *mStatusLabel_1;
+     LightLabel *mStatusLabel_2;
+-    FixLabel *mSequenceLabel_1;
++    KLabel *mSequenceLabel_1;
+     KBorderlessButton *mSequenceLabel_2;
+-    FixLabel *mTrialLabel;
+-    FixLabel *mAndLabel;
+-    FixLabel *mAgreeLabel;
++    KLabel *mTrialLabel;
++    KLabel *mAndLabel;
++    KLabel *mAgreeLabel;
+     QLabel *mHpLabel;
+-    FixLabel *mEducateIconLabel;
++    KLabel *mEducateIconLabel;
+     QLabel *mEducateLabel;
+-    FixLabel *mTipLabel;
++    KLabel *mTipLabel;
+ 
+     QPushButton *mActivationBtn;
+     QPushButton *mHpBtn;
+diff --git a/plugins/system/about/privacydialog.cpp b/plugins/system/about/privacydialog.cpp
+index 05e628d..3716733 100644
+--- a/plugins/system/about/privacydialog.cpp
++++ b/plugins/system/about/privacydialog.cpp
+@@ -3,6 +3,7 @@
+ #include <QDebug>
+ #include <QVBoxLayout>
+ #include <QHBoxLayout>
++#include <QLabel>
+ 
+ PrivacyDialog::PrivacyDialog(QWidget *parent) :
+     QDialog(parent)
+diff --git a/plugins/system/about/privacydialog.h b/plugins/system/about/privacydialog.h
+index 9fbc823..95f7d7d 100644
+--- a/plugins/system/about/privacydialog.h
++++ b/plugins/system/about/privacydialog.h
+@@ -8,7 +8,6 @@
+ #include <QString>
+ #include <QTextBrowser>
+ 
+-#include "titlelabel.h"
+ #include "ukcccommon.h"
+ 
+ using namespace ukcc;
+diff --git a/plugins/system/about/statusdialog.cpp b/plugins/system/about/statusdialog.cpp
+index 4060c82..1e4704f 100644
+--- a/plugins/system/about/statusdialog.cpp
++++ b/plugins/system/about/statusdialog.cpp
+@@ -33,7 +33,7 @@ void StatusDialog::initUI()
+     mVersionFrame->setFixedHeight(36);
+     mVersionFrame->setFrameShape(QFrame::NoFrame);
+     mVersionLabel_1 = new QLabel(mVersionFrame);
+-    mVersionLabel_2 = new FixLabel(mVersionFrame);
++    mVersionLabel_2 = new KLabel(mVersionFrame);
+     mVersionLabel_1->setFixedWidth(100);
+     mVersionLyt->addWidget(mVersionLabel_1);
+     mVersionLyt->addWidget(mVersionLabel_2);
+@@ -44,7 +44,7 @@ void StatusDialog::initUI()
+     mStatusLyt->setSpacing(16);
+     mStatusFrame->setFixedHeight(36);
+     mStatusFrame->setFrameShape(QFrame::NoFrame);
+-    mStatusLabel_1 = new FixLabel(mStatusFrame);
++    mStatusLabel_1 = new KLabel(mStatusFrame);
+     mStatusLabel_2 = new QLabel(mStatusFrame);
+     mStatusLabel_1->setFixedWidth(100);
+     mStatusLyt->addWidget(mStatusLabel_1);
+@@ -56,8 +56,9 @@ void StatusDialog::initUI()
+     mActivationLyt->setSpacing(16);
+     mActivationFrame->setFixedHeight(36);
+     mActivationFrame->setFrameShape(QFrame::NoFrame);
+-    mActivationCodeLabel_1 = new FixLabel(tr("Activation Code"), mActivationFrame);
+-    mActivationCodeLabel_2 = new FixLabel(mActivationFrame);
++    mActivationCodeLabel_1 = new KLabel(mActivationFrame);
++    mActivationCodeLabel_1->setText(tr("Activation Code"));
++    mActivationCodeLabel_2 = new KLabel(mActivationFrame);
+     mActivationCodeLabel_1->setFixedWidth(100);
+     mActivationLyt->addWidget(mActivationCodeLabel_1);
+     mActivationLyt->addWidget(mActivationCodeLabel_2);
+@@ -69,7 +70,7 @@ void StatusDialog::initUI()
+     mSerialFrame->setFixedHeight(36);
+     mSerialFrame->setFrameShape(QFrame::NoFrame);
+     mSerialLabel_1 = new QLabel(mSerialFrame);
+-    mSerialLabel_2 = new FixLabel(mSerialFrame);
++    mSerialLabel_2 = new KLabel(mSerialFrame);
+     mSerialLabel_1->setFixedWidth(100);
+     mSerialLyt->addWidget(mSerialLabel_1);
+     mSerialLyt->addWidget(mSerialLabel_2);
+@@ -80,7 +81,7 @@ void StatusDialog::initUI()
+     mTimeLyt->setSpacing(16);
+     mTimeFrame->setFixedHeight(36);
+     mTimeFrame->setFrameShape(QFrame::NoFrame);
+-    mTimeLabel_1 = new FixLabel(mTimeFrame);
++    mTimeLabel_1 = new KLabel(mTimeFrame);
+     mTimeLabel_2 = new QLabel(mTimeFrame);
+     mTimeLabel_1->setFixedWidth(100);
+     mTimeLyt->addWidget(mTimeLabel_1);
+diff --git a/plugins/system/about/statusdialog.h b/plugins/system/about/statusdialog.h
+index 5d8ec5d..351096d 100644
+--- a/plugins/system/about/statusdialog.h
++++ b/plugins/system/about/statusdialog.h
+@@ -5,8 +5,9 @@
+ #include <QDialog>
+ #include <QLabel>
+ #include <QPushButton>
++#include <klabel.h>
+ 
+-#include "fixlabel.h"
++using namespace kdk;
+ 
+ const QString vTen        = "v10";
+ const QString vTenEnhance = "v10.1";
+@@ -33,15 +34,15 @@ private:
+ public:
+     QLabel *mLogoLabel;
+     QLabel *mVersionLabel_1;
+-    FixLabel *mVersionLabel_2;
+-    FixLabel *mStatusLabel_1;
++    KLabel *mVersionLabel_2;
++    KLabel *mStatusLabel_1;
+     QLabel *mStatusLabel_2;
+     QLabel *mSerialLabel_1;
+-    FixLabel *mSerialLabel_2;
+-    FixLabel *mTimeLabel_1;
++    KLabel *mSerialLabel_2;
++    KLabel *mTimeLabel_1;
+     QLabel *mTimeLabel_2;
+-    FixLabel *mActivationCodeLabel_1;
+-    FixLabel *mActivationCodeLabel_2;
++    KLabel *mActivationCodeLabel_1;
++    KLabel *mActivationCodeLabel_2;
+     QPushButton *mExtentBtn;
+ 
+ private:
+diff --git a/plugins/system/about/trialdialog.cpp b/plugins/system/about/trialdialog.cpp
+index 709a297..545d9f4 100644
+--- a/plugins/system/about/trialdialog.cpp
++++ b/plugins/system/about/trialdialog.cpp
+@@ -29,7 +29,8 @@ void TrialDialog::initUi(QDialog *mTrialDialog)
+     QHBoxLayout *mTitleLayout = new QHBoxLayout;
+ 
+ 
+-    mTitleLabel = new TitleLabel(mTrialDialog);
++    mTitleLabel = new KLabel(mTrialDialog);
++    mTitleLabel->setContentsMargins(16, 0, 0, 0);
+     mTitleLabel->setFixedHeight(30);
+     mTitleLayout->addStretch();
+     mTitleLayout->addWidget(mTitleLabel);
+diff --git a/plugins/system/about/trialdialog.h b/plugins/system/about/trialdialog.h
+index e4462d5..7bd4fcc 100644
+--- a/plugins/system/about/trialdialog.h
++++ b/plugins/system/about/trialdialog.h
+@@ -3,7 +3,9 @@
+ 
+ #include <QDialog>
+ #include <QTextBrowser>
+-#include "titlelabel.h"
++#include <klabel.h>
++
++using namespace kdk;
+ 
+ class TrialDialog : public QDialog
+ {
+@@ -16,7 +18,7 @@ private:
+     void initUi(QDialog *mTrialDialog);
+ 
+ private:
+-    TitleLabel *mTitleLabel;
++    KLabel *mTitleLabel;
+ 
+     QLabel *mContentLabel_1;
+     QTextBrowser *mContentLabel_2;
+diff --git a/plugins/system/display/brightnessFrame.cpp b/plugins/system/display/brightnessFrame.cpp
+index 919914e..d563d34 100644
+--- a/plugins/system/display/brightnessFrame.cpp
++++ b/plugins/system/display/brightnessFrame.cpp
+@@ -65,7 +65,7 @@ BrightnessFrame::BrightnessFrame(const QString &name, const bool &isBattery, con
+     labelMsg->setDisabled(true);
+     labelMsg->setText(tr("Failed to get the brightness information of this monitor"));//未能获得该显示器的亮度信息
+ 
+-    labelName = new FixLabel(this);
++    labelName = new KLabel(this);
+     labelName->setFixedWidth(118);
+ 
+     slider = new KSlider(Qt::Horizontal, this);
+diff --git a/plugins/system/display/brightnessFrame.h b/plugins/system/display/brightnessFrame.h
+index 5fa8c27..e201750 100644
+--- a/plugins/system/display/brightnessFrame.h
++++ b/plugins/system/display/brightnessFrame.h
+@@ -24,7 +24,6 @@
+ #include <QLabel>
+ #include <QWidget>
+ #include <QLabel>
+-#include "uslider.h"
+ #include <QMutex>
+ #include <QFuture>
+ #include <QDBusInterface>
+@@ -33,12 +32,12 @@
+ #include <kslider.h>
+ #include <KF5/KScreen/kscreen/output.h>
+ #include <KF5/KScreen/kscreen/types.h>
+-#include "fixlabel.h"
+ #include "getBrightnessThread.h"
+ #include "ukccframe.h"
+ #include "lightlabel.h"
+ #include <kslider.h>
+ #include "ukcccommon.h"
++#include <klabel.h>
+ 
+ using namespace ukcc;
+ using namespace kdk;
+@@ -77,7 +76,7 @@ private:
+     void sliderValueChangeSlot(QString outputName);
+ 
+ private:
+-    FixLabel *labelName = nullptr;
++    KLabel *labelName = nullptr;
+     QLabel *labelValue = nullptr;
+     KSlider *slider = nullptr;
+     QString outputName;          //屏幕名
+diff --git a/plugins/system/display/display.pro b/plugins/system/display/display.pro
+index 7b02f0d..d29d6b5 100644
+--- a/plugins/system/display/display.pro
++++ b/plugins/system/display/display.pro
+@@ -5,8 +5,6 @@
+ #-------------------------------------------------
+ include(../../../env.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Label/label.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/Uslider/uslider.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/CloseButton/closebutton.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/ComboBox/combobox.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/SettingWidget/settingwidget.pri)
+ include($$PROJECT_ROOTDIR/libukcc/interface.pri)
+@@ -43,8 +41,7 @@ SOURCES += \
+     splicedialog.cpp \
+     unifiedoutputconfig.cpp \
+     utils.cpp \
+-    widget.cpp \
+-    displayperformancedialog.cpp
++    widget.cpp
+ 
+ HEADERS += \
+     brightnessFrame.h \
+@@ -61,12 +58,10 @@ HEADERS += \
+     splicedialog.h \
+     unifiedoutputconfig.h \
+     utils.h \
+-    widget.h \
+-    displayperformancedialog.h
++    widget.h
+ 
+ FORMS += \
+     display.ui \
+-    displayperformancedialog.ui \
+     splicedialog.ui
+ 
+ #DISTFILES += \
+diff --git a/plugins/system/display/display.ui b/plugins/system/display/display.ui
+index 658c01f..51738bf 100644
+--- a/plugins/system/display/display.ui
++++ b/plugins/system/display/display.ui
+@@ -27,7 +27,7 @@
+     <number>0</number>
+    </property>
+    <item>
+-    <widget class="TitleLabel" name="titleLabel">
++    <widget class="KLabel" name="titleLabel">
+      <property name="text">
+       <string>Display</string>
+      </property>
+@@ -140,9 +140,9 @@
+    <header location="global">QtQuickWidgets/QQuickWidget</header>
+   </customwidget>
+   <customwidget>
+-   <class>TitleLabel</class>
++   <class>KLabel</class>
+    <extends>QLabel</extends>
+-   <header location="global">titlelabel.h</header>
++   <header>klabel.h</header>
+   </customwidget>
+  </customwidgets>
+  <resources/>
+diff --git a/plugins/system/display/displayperformancedialog.cpp b/plugins/system/display/displayperformancedialog.cpp
+deleted file mode 100644
+index b1bf29f..0000000
+--- a/plugins/system/display/displayperformancedialog.cpp
++++ /dev/null
+@@ -1,213 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "displayperformancedialog.h"
+-#include "ui_displayperformancedialog.h"
+-#include "closebutton.h"
+-
+-#include <QFile>
+-#include <QDBusReply>
+-#include <QDBusInterface>
+-#include <QPainter>
+-#include <QPainterPath>
+-#include <QProcess>
+-#include <QDebug>
+-
+-#define ADVANCED_SCHEMAS "org.ukui.session.required-components"
+-#define ADVANCED_KEY "windowmanager"
+-
+-#define WM_CHOOSER_CONF "/etc/kylin-wm-chooser/default.conf"
+-#define WM_CHOOSER_CONF_TMP "/tmp/default.conf"
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-DisplayPerformanceDialog::DisplayPerformanceDialog(QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::DisplayPerformanceDialog)
+-{
+-    ui->setupUi(this);
+-
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    ui->titleLabel->setStyleSheet("QLabel{color: palette(windowText);}");
+-
+-    ui->label->setAlignment(Qt::AlignTop);
+-    ui->label_2->setAlignment(Qt::AlignTop);
+-    ui->label_3->setAlignment(Qt::AlignTop);
+-    ui->label_4->setAlignment(Qt::AlignTop);
+-    ui->label_5->setAlignment(Qt::AlignTop);
+-    ui->label_6->setAlignment(Qt::AlignTop);
+-
+-    ui->closeBtn->setIcon(QIcon("://img/titlebar/close.svg"));
+-
+-    const QByteArray id(ADVANCED_SCHEMAS);
+-    settings = new QGSettings(id);
+-
+-    confSettings = new QSettings(WM_CHOOSER_CONF, QSettings::NativeFormat);
+-
+-    setupComponent();
+-    setupConnect();
+-    initModeStatus();
+-    initThresholdStatus();
+-
+-}
+-
+-DisplayPerformanceDialog::~DisplayPerformanceDialog()
+-{
+-    delete ui;
+-    ui = nullptr;
+-    delete settings;
+-    settings = nullptr;
+-    delete confSettings;
+-    confSettings = nullptr;
+-}
+-
+-void DisplayPerformanceDialog::setupComponent(){
+-    ui->performanceRadioBtn->setProperty("wm", "mutter");
+-    ui->compatibleRadioBtn->setProperty("wm", "marco");
+-    ui->autoRadioBtn->setProperty("wm", "kylin-wm-chooser");
+-}
+-
+-void DisplayPerformanceDialog::setupConnect(){
+-    connect(ui->closeBtn, &CloseButton::clicked, [=]{
+-        close();
+-    });
+-
+-#if QT_VERSION <= QT_VERSION_CHECK(5, 12, 0)
+-    connect(ui->buttonGroup, static_cast<void (QButtonGroup::*)(QAbstractButton *)>(&QButtonGroup::buttonClicked), [=](QAbstractButton * button){
+-#else
+-    connect(ui->buttonGroup, QOverload<QAbstractButton *>::of(&QButtonGroup::buttonClicked), [=](QAbstractButton * button){
+-#endif
+-        QString mode = button->property("wm").toString();
+-        settings->set(ADVANCED_KEY, mode);
+-    });
+-
+-    connect(ui->autoRadioBtn, &QRadioButton::toggled, this, [=](bool checked){
+-        ui->lineEdit->setEnabled(checked);
+-        ui->applyBtn->setEnabled(checked);
+-        ui->resetBtn->setEnabled(checked);
+-    });
+-
+-    connect(ui->applyBtn, &QPushButton::clicked, this, [=]{
+-        changeConfValue();
+-    });
+-
+-    connect(ui->resetBtn, &QPushButton::clicked, this, [=]{
+-        ui->lineEdit->setText("256");
+-        changeConfValue();
+-    });
+-}
+-
+-void DisplayPerformanceDialog::initModeStatus(){
+-    QString mode = settings->get(ADVANCED_KEY).toString();
+-
+-    if (mode == ui->performanceRadioBtn->property("wm").toString()){
+-        ui->performanceRadioBtn->blockSignals(true);
+-        ui->performanceRadioBtn->setChecked(true);
+-        ui->performanceRadioBtn->blockSignals(false);
+-    } else if (mode == ui->compatibleRadioBtn->property("wm").toString()){
+-        ui->compatibleRadioBtn->blockSignals(true);
+-        ui->compatibleRadioBtn->setChecked(true);
+-        ui->compatibleRadioBtn->blockSignals(false);
+-    } else{
+-        ui->autoRadioBtn->blockSignals(true);
+-        ui->autoRadioBtn->setChecked(true);
+-        ui->autoRadioBtn->blockSignals(false);
+-    }
+-}
+-
+-void DisplayPerformanceDialog::initThresholdStatus(){
+-    confSettings->beginGroup("mutter");
+-    QString value = confSettings->value("threshold").toString();
+-    ui->lineEdit->blockSignals(true);
+-    ui->lineEdit->setText(value);
+-    ui->lineEdit->blockSignals(false);
+-    confSettings->endGroup();
+-}
+-
+-void DisplayPerformanceDialog::changeConfValue(){
+-    if (!QFile::copy(WM_CHOOSER_CONF, WM_CHOOSER_CONF_TMP))
+-        return;
+-
+-    QSettings * tempSettings = new QSettings(WM_CHOOSER_CONF_TMP, QSettings::NativeFormat);
+-    tempSettings->beginGroup("mutter");
+-    tempSettings->setValue("threshold", ui->lineEdit->text());
+-    tempSettings->endGroup();
+-
+-    delete tempSettings;
+-    tempSettings = nullptr;
+-
+-    //替换kylin-wm-chooser
+-    QDBusInterface * sysinterface = new QDBusInterface("com.control.center.qt.systemdbus",
+-                                     "/",
+-                                     "com.control.center.interface",
+-                                     QDBusConnection::systemBus());
+-
+-    if (!sysinterface->isValid()){
+-        qCritical() << "Create Client Interface Failed When Copy Face File: " << QDBusConnection::systemBus().lastError();
+-        return;
+-    }
+-
+-    QString cmd = QString("mv %1 %2").arg(WM_CHOOSER_CONF_TMP).arg(WM_CHOOSER_CONF);
+-
+-    QProcess::execute(cmd);
+-    delete sysinterface;
+-    sysinterface = nullptr;
+-}
+-
+-void DisplayPerformanceDialog::paintEvent(QPaintEvent *event){
+-    Q_UNUSED(event);
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 6, 6);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 10, false, false);
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-
+-    p.restore();
+-}
+diff --git a/plugins/system/display/displayperformancedialog.h b/plugins/system/display/displayperformancedialog.h
+deleted file mode 100644
+index 4d03ccc..0000000
+--- a/plugins/system/display/displayperformancedialog.h
++++ /dev/null
+@@ -1,58 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef DISPLAYPERFORMANCEDIALOG_H
+-#define DISPLAYPERFORMANCEDIALOG_H
+-
+-#include <QDialog>
+-#include <QSettings>
+-#include <QGSettings>
+-
+-namespace Ui {
+-class DisplayPerformanceDialog;
+-}
+-
+-class DisplayPerformanceDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit DisplayPerformanceDialog(QWidget *parent = 0);
+-    ~DisplayPerformanceDialog();
+-
+-public:
+-    void setupComponent();
+-    void setupConnect();
+-    void initModeStatus();
+-    void initThresholdStatus();
+-
+-    void changeConfValue();
+-
+-private:
+-    void paintEvent(QPaintEvent *event);
+-
+-private:
+-    Ui::DisplayPerformanceDialog *ui;
+-
+-private:
+-    QGSettings *settings;
+-    QSettings *confSettings;
+-};
+-
+-#endif // DISPLAYPERFORMANCEDIALOG_H
+diff --git a/plugins/system/display/displayperformancedialog.ui b/plugins/system/display/displayperformancedialog.ui
+deleted file mode 100644
+index a901710..0000000
+--- a/plugins/system/display/displayperformancedialog.ui
++++ /dev/null
+@@ -1,818 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>DisplayPerformanceDialog</class>
+- <widget class="QDialog" name="DisplayPerformanceDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>580</width>
+-    <height>646</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>580</width>
+-    <height>646</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>580</width>
+-    <height>646</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Dialog</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_2">
+-   <property name="spacing">
+-    <number>0</number>
+-   </property>
+-   <property name="leftMargin">
+-    <number>0</number>
+-   </property>
+-   <property name="topMargin">
+-    <number>9</number>
+-   </property>
+-   <property name="rightMargin">
+-    <number>9</number>
+-   </property>
+-   <property name="bottomMargin">
+-    <number>9</number>
+-   </property>
+-   <item>
+-    <widget class="QFrame" name="frame">
+-     <property name="sizePolicy">
+-      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-       <horstretch>0</horstretch>
+-       <verstretch>0</verstretch>
+-      </sizepolicy>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::NoFrame</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_3">
+-      <property name="spacing">
+-       <number>0</number>
+-      </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>
+-       <layout class="QVBoxLayout" name="verticalLayout">
+-        <property name="spacing">
+-         <number>0</number>
+-        </property>
+-        <property name="sizeConstraint">
+-         <enum>QLayout::SetDefaultConstraint</enum>
+-        </property>
+-        <property name="topMargin">
+-         <number>0</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>0</number>
+-        </property>
+-        <item>
+-         <widget class="QFrame" name="closeFrame">
+-          <property name="minimumSize">
+-           <size>
+-            <width>0</width>
+-            <height>36</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>36</height>
+-           </size>
+-          </property>
+-          <property name="frameShape">
+-           <enum>QFrame::StyledPanel</enum>
+-          </property>
+-          <property name="frameShadow">
+-           <enum>QFrame::Raised</enum>
+-          </property>
+-          <layout class="QHBoxLayout" name="horizontalLayout_6">
+-           <property name="spacing">
+-            <number>0</number>
+-           </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>
+-            <layout class="QHBoxLayout" name="horizontalLayout_2">
+-             <property name="spacing">
+-              <number>0</number>
+-             </property>
+-             <item>
+-              <spacer name="horizontalSpacer">
+-               <property name="orientation">
+-                <enum>Qt::Horizontal</enum>
+-               </property>
+-               <property name="sizeHint" stdset="0">
+-                <size>
+-                 <width>40</width>
+-                 <height>20</height>
+-                </size>
+-               </property>
+-              </spacer>
+-             </item>
+-             <item>
+-              <widget class="CloseButton" name="closeBtn">
+-               <property name="minimumSize">
+-                <size>
+-                 <width>32</width>
+-                 <height>32</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>32</width>
+-                 <height>32</height>
+-                </size>
+-               </property>
+-               <property name="text">
+-                <string/>
+-               </property>
+-              </widget>
+-             </item>
+-            </layout>
+-           </item>
+-          </layout>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="QWidget" name="widget" native="true">
+-          <property name="sizePolicy">
+-           <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-            <horstretch>0</horstretch>
+-            <verstretch>0</verstretch>
+-           </sizepolicy>
+-          </property>
+-          <property name="minimumSize">
+-           <size>
+-            <width>0</width>
+-            <height>0</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>16777215</height>
+-           </size>
+-          </property>
+-          <layout class="QVBoxLayout" name="verticalLayout_4">
+-           <property name="spacing">
+-            <number>8</number>
+-           </property>
+-           <property name="sizeConstraint">
+-            <enum>QLayout::SetDefaultConstraint</enum>
+-           </property>
+-           <property name="leftMargin">
+-            <number>32</number>
+-           </property>
+-           <property name="topMargin">
+-            <number>16</number>
+-           </property>
+-           <property name="rightMargin">
+-            <number>32</number>
+-           </property>
+-           <property name="bottomMargin">
+-            <number>32</number>
+-           </property>
+-           <item>
+-            <widget class="TitleLabel" name="titleLabel">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="text">
+-              <string>Display Advanced Settings</string>
+-             </property>
+-            </widget>
+-           </item>
+-           <item>
+-            <widget class="QScrollArea" name="scrollArea">
+-             <property name="verticalScrollBarPolicy">
+-              <enum>Qt::ScrollBarAsNeeded</enum>
+-             </property>
+-             <property name="horizontalScrollBarPolicy">
+-              <enum>Qt::ScrollBarAlwaysOff</enum>
+-             </property>
+-             <property name="widgetResizable">
+-              <bool>true</bool>
+-             </property>
+-             <widget class="QWidget" name="scrollAreaWidgetContents">
+-              <property name="geometry">
+-               <rect>
+-                <x>0</x>
+-                <y>0</y>
+-                <width>489</width>
+-                <height>556</height>
+-               </rect>
+-              </property>
+-              <layout class="QVBoxLayout" name="verticalLayout_32">
+-               <item>
+-                <layout class="QVBoxLayout" name="verticalLayout_6">
+-                 <property name="spacing">
+-                  <number>2</number>
+-                 </property>
+-                 <item>
+-                  <widget class="QFrame" name="performanceFrame">
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>50</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>16777215</width>
+-                     <height>50</height>
+-                    </size>
+-                   </property>
+-                   <property name="frameShape">
+-                    <enum>QFrame::Box</enum>
+-                   </property>
+-                   <property name="frameShadow">
+-                    <enum>QFrame::Plain</enum>
+-                   </property>
+-                   <layout class="QHBoxLayout" name="horizontalLayout_3">
+-                    <property name="spacing">
+-                     <number>0</number>
+-                    </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>
+-                     <layout class="QHBoxLayout" name="horizontalLayout">
+-                      <property name="spacing">
+-                       <number>0</number>
+-                      </property>
+-                      <property name="leftMargin">
+-                       <number>16</number>
+-                      </property>
+-                      <item>
+-                       <widget class="QRadioButton" name="performanceRadioBtn">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                        <property name="text">
+-                         <string>Performance</string>
+-                        </property>
+-                        <attribute name="buttonGroup">
+-                         <string notr="true">buttonGroup</string>
+-                        </attribute>
+-                       </widget>
+-                      </item>
+-                      <item>
+-                       <spacer name="horizontalSpacer_2">
+-                        <property name="orientation">
+-                         <enum>Qt::Horizontal</enum>
+-                        </property>
+-                        <property name="sizeHint" stdset="0">
+-                         <size>
+-                          <width>40</width>
+-                          <height>20</height>
+-                         </size>
+-                        </property>
+-                       </spacer>
+-                      </item>
+-                     </layout>
+-                    </item>
+-                   </layout>
+-                  </widget>
+-                 </item>
+-                 <item>
+-                  <widget class="QFrame" name="performanceTipFrame">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>0</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>16777215</width>
+-                     <height>16777215</height>
+-                    </size>
+-                   </property>
+-                   <property name="frameShape">
+-                    <enum>QFrame::Box</enum>
+-                   </property>
+-                   <property name="frameShadow">
+-                    <enum>QFrame::Plain</enum>
+-                   </property>
+-                   <layout class="QVBoxLayout" name="verticalLayout_11">
+-                    <property name="spacing">
+-                     <number>8</number>
+-                    </property>
+-                    <property name="leftMargin">
+-                     <number>16</number>
+-                    </property>
+-                    <property name="topMargin">
+-                     <number>0</number>
+-                    </property>
+-                    <property name="rightMargin">
+-                     <number>16</number>
+-                    </property>
+-                    <property name="bottomMargin">
+-                     <number>0</number>
+-                    </property>
+-                    <item>
+-                     <widget class="QLabel" name="label">
+-                      <property name="sizePolicy">
+-                       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                        <horstretch>0</horstretch>
+-                        <verstretch>0</verstretch>
+-                       </sizepolicy>
+-                      </property>
+-                      <property name="autoFillBackground">
+-                       <bool>false</bool>
+-                      </property>
+-                      <property name="text">
+-                       <string>Applicable to machine with discrete graphics, which can accelerate the rendering of 3D graphics.</string>
+-                      </property>
+-                      <property name="wordWrap">
+-                       <bool>true</bool>
+-                      </property>
+-                     </widget>
+-                    </item>
+-                    <item>
+-                     <widget class="QLabel" name="label_2">
+-                      <property name="sizePolicy">
+-                       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                        <horstretch>0</horstretch>
+-                        <verstretch>0</verstretch>
+-                       </sizepolicy>
+-                      </property>
+-                      <property name="text">
+-                       <string>(Note: not support connect graphical with xmanager on windows.)</string>
+-                      </property>
+-                      <property name="wordWrap">
+-                       <bool>true</bool>
+-                      </property>
+-                     </widget>
+-                    </item>
+-                   </layout>
+-                  </widget>
+-                 </item>
+-                </layout>
+-               </item>
+-               <item>
+-                <layout class="QVBoxLayout" name="verticalLayout_8">
+-                 <property name="spacing">
+-                  <number>2</number>
+-                 </property>
+-                 <item>
+-                  <widget class="QFrame" name="compatibleFrame">
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>50</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>16777215</width>
+-                     <height>50</height>
+-                    </size>
+-                   </property>
+-                   <property name="frameShape">
+-                    <enum>QFrame::Box</enum>
+-                   </property>
+-                   <property name="frameShadow">
+-                    <enum>QFrame::Plain</enum>
+-                   </property>
+-                   <layout class="QHBoxLayout" name="horizontalLayout_5">
+-                    <property name="spacing">
+-                     <number>0</number>
+-                    </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>
+-                     <layout class="QHBoxLayout" name="horizontalLayout_4">
+-                      <property name="spacing">
+-                       <number>0</number>
+-                      </property>
+-                      <property name="leftMargin">
+-                       <number>16</number>
+-                      </property>
+-                      <item>
+-                       <widget class="QRadioButton" name="compatibleRadioBtn">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                        <property name="text">
+-                         <string>Compatible</string>
+-                        </property>
+-                        <attribute name="buttonGroup">
+-                         <string notr="true">buttonGroup</string>
+-                        </attribute>
+-                       </widget>
+-                      </item>
+-                      <item>
+-                       <spacer name="horizontalSpacer_3">
+-                        <property name="orientation">
+-                         <enum>Qt::Horizontal</enum>
+-                        </property>
+-                        <property name="sizeHint" stdset="0">
+-                         <size>
+-                          <width>40</width>
+-                          <height>20</height>
+-                         </size>
+-                        </property>
+-                       </spacer>
+-                      </item>
+-                     </layout>
+-                    </item>
+-                   </layout>
+-                  </widget>
+-                 </item>
+-                 <item>
+-                  <widget class="QFrame" name="compatibleTipFrame">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>0</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>16777215</width>
+-                     <height>16777215</height>
+-                    </size>
+-                   </property>
+-                   <property name="frameShape">
+-                    <enum>QFrame::Box</enum>
+-                   </property>
+-                   <property name="frameShadow">
+-                    <enum>QFrame::Plain</enum>
+-                   </property>
+-                   <layout class="QVBoxLayout" name="verticalLayout_12">
+-                    <property name="spacing">
+-                     <number>8</number>
+-                    </property>
+-                    <property name="leftMargin">
+-                     <number>16</number>
+-                    </property>
+-                    <property name="topMargin">
+-                     <number>0</number>
+-                    </property>
+-                    <property name="rightMargin">
+-                     <number>16</number>
+-                    </property>
+-                    <property name="bottomMargin">
+-                     <number>0</number>
+-                    </property>
+-                    <item>
+-                     <widget class="QLabel" name="label_3">
+-                      <property name="sizePolicy">
+-                       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                        <horstretch>0</horstretch>
+-                        <verstretch>0</verstretch>
+-                       </sizepolicy>
+-                      </property>
+-                      <property name="text">
+-                       <string>Applicable to machine with integrated graphics,  there is no 3D graphics acceleration. </string>
+-                      </property>
+-                      <property name="wordWrap">
+-                       <bool>true</bool>
+-                      </property>
+-                     </widget>
+-                    </item>
+-                    <item>
+-                     <widget class="QLabel" name="label_4">
+-                      <property name="sizePolicy">
+-                       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                        <horstretch>0</horstretch>
+-                        <verstretch>0</verstretch>
+-                       </sizepolicy>
+-                      </property>
+-                      <property name="text">
+-                       <string>(Note: need connect graphical with xmanager on windows, use this option.)</string>
+-                      </property>
+-                      <property name="wordWrap">
+-                       <bool>true</bool>
+-                      </property>
+-                     </widget>
+-                    </item>
+-                   </layout>
+-                  </widget>
+-                 </item>
+-                </layout>
+-               </item>
+-               <item>
+-                <layout class="QVBoxLayout" name="verticalLayout_9">
+-                 <property name="spacing">
+-                  <number>2</number>
+-                 </property>
+-                 <item>
+-                  <widget class="QFrame" name="automaticFrame">
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>50</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>16777215</width>
+-                     <height>50</height>
+-                    </size>
+-                   </property>
+-                   <property name="frameShape">
+-                    <enum>QFrame::Box</enum>
+-                   </property>
+-                   <property name="frameShadow">
+-                    <enum>QFrame::Plain</enum>
+-                   </property>
+-                   <layout class="QHBoxLayout" name="horizontalLayout_8">
+-                    <property name="spacing">
+-                     <number>0</number>
+-                    </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>
+-                     <layout class="QHBoxLayout" name="horizontalLayout_7">
+-                      <property name="spacing">
+-                       <number>0</number>
+-                      </property>
+-                      <property name="leftMargin">
+-                       <number>16</number>
+-                      </property>
+-                      <item>
+-                       <widget class="QRadioButton" name="autoRadioBtn">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                        <property name="text">
+-                         <string>Automatic</string>
+-                        </property>
+-                        <attribute name="buttonGroup">
+-                         <string notr="true">buttonGroup</string>
+-                        </attribute>
+-                       </widget>
+-                      </item>
+-                      <item>
+-                       <spacer name="horizontalSpacer_4">
+-                        <property name="orientation">
+-                         <enum>Qt::Horizontal</enum>
+-                        </property>
+-                        <property name="sizeHint" stdset="0">
+-                         <size>
+-                          <width>40</width>
+-                          <height>20</height>
+-                         </size>
+-                        </property>
+-                       </spacer>
+-                      </item>
+-                     </layout>
+-                    </item>
+-                   </layout>
+-                  </widget>
+-                 </item>
+-                 <item>
+-                  <widget class="QFrame" name="automaticTipFrame">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>0</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>16777215</width>
+-                     <height>16777215</height>
+-                    </size>
+-                   </property>
+-                   <property name="frameShape">
+-                    <enum>QFrame::Box</enum>
+-                   </property>
+-                   <property name="frameShadow">
+-                    <enum>QFrame::Plain</enum>
+-                   </property>
+-                   <layout class="QVBoxLayout" name="verticalLayout_5">
+-                    <property name="spacing">
+-                     <number>8</number>
+-                    </property>
+-                    <property name="leftMargin">
+-                     <number>16</number>
+-                    </property>
+-                    <property name="topMargin">
+-                     <number>0</number>
+-                    </property>
+-                    <property name="rightMargin">
+-                     <number>16</number>
+-                    </property>
+-                    <property name="bottomMargin">
+-                     <number>0</number>
+-                    </property>
+-                    <item>
+-                     <widget class="QLabel" name="label_5">
+-                      <property name="sizePolicy">
+-                       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                        <horstretch>0</horstretch>
+-                        <verstretch>0</verstretch>
+-                       </sizepolicy>
+-                      </property>
+-                      <property name="text">
+-                       <string>Auto select according to environment, delay the login time (about 0.5 sec).</string>
+-                      </property>
+-                      <property name="wordWrap">
+-                       <bool>true</bool>
+-                      </property>
+-                     </widget>
+-                    </item>
+-                    <item>
+-                     <layout class="QHBoxLayout" name="autoHorLayout">
+-                      <property name="spacing">
+-                       <number>16</number>
+-                      </property>
+-                      <item>
+-                       <widget class="QLabel" name="label_7">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                        <property name="text">
+-                         <string>Threshold:</string>
+-                        </property>
+-                       </widget>
+-                      </item>
+-                      <item>
+-                       <widget class="QLineEdit" name="lineEdit">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                       </widget>
+-                      </item>
+-                      <item>
+-                       <widget class="QPushButton" name="applyBtn">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                        <property name="text">
+-                         <string>Apply</string>
+-                        </property>
+-                       </widget>
+-                      </item>
+-                      <item>
+-                       <widget class="QPushButton" name="resetBtn">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                        <property name="text">
+-                         <string>Reset</string>
+-                        </property>
+-                       </widget>
+-                      </item>
+-                     </layout>
+-                    </item>
+-                    <item>
+-                     <widget class="QLabel" name="label_6">
+-                      <property name="sizePolicy">
+-                       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                        <horstretch>0</horstretch>
+-                        <verstretch>0</verstretch>
+-                       </sizepolicy>
+-                      </property>
+-                      <property name="text">
+-                       <string>(Note: select this option to use 3D graphics acceleration and xmanager.)</string>
+-                      </property>
+-                      <property name="wordWrap">
+-                       <bool>true</bool>
+-                      </property>
+-                     </widget>
+-                    </item>
+-                   </layout>
+-                  </widget>
+-                 </item>
+-                </layout>
+-               </item>
+-              </layout>
+-              <zorder></zorder>
+-              <zorder></zorder>
+-              <zorder></zorder>
+-             </widget>
+-            </widget>
+-           </item>
+-          </layout>
+-         </widget>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-  </layout>
+- </widget>
+- <customwidgets>
+-  <customwidget>
+-   <class>TitleLabel</class>
+-   <extends>QLabel</extends>
+-   <header location="global">titlelabel.h</header>
+-  </customwidget>
+-  <customwidget>
+-   <class>CloseButton</class>
+-   <extends>QPushButton</extends>
+-   <header location="global">closebutton.h</header>
+-  </customwidget>
+- </customwidgets>
+- <resources/>
+- <connections/>
+- <buttongroups>
+-  <buttongroup name="buttonGroup"/>
+- </buttongroups>
+-</ui>
+diff --git a/plugins/system/display/widget.cpp b/plugins/system/display/widget.cpp
+index 43275c3..05a296d 100644
+--- a/plugins/system/display/widget.cpp
++++ b/plugins/system/display/widget.cpp
+@@ -23,7 +23,6 @@
+ #include "declarative/qmlscreen.h"
+ #include "utils.h"
+ #include "ui_display.h"
+-#include "displayperformancedialog.h"
+ #include "colorinfo.h"
+ #include "scalesize.h"
+ #include "ukcccommon.h"
+@@ -133,6 +132,7 @@ Widget::Widget(QWidget *parent) :
+     qRegisterMetaType<QQuickView *>();
+ 
+     ui->setupUi(this);
++    ui->titleLabel->setContentsMargins(16, 0, 0, 0);
+     initUi();
+     initNightModeUi();
+     initAutoBrihgtUI();
+@@ -202,6 +202,7 @@ void Widget::setConfig(const KScreen::ConfigPtr &config)
+     mConfig = config;
+     mPrevConfig = config->clone();
+     if (mMultiScreenFrame) {
++        qDebug() << Q_FUNC_INFO << "connetedOutputs count" << mConfig->connectedOutputs().size();
+         mMultiScreenFrame->setVisible(mConfig->connectedOutputs().size() > 1);
+     }
+     updateMultiScreen();
+@@ -281,7 +282,8 @@ KScreen::ConfigPtr Widget::currentConfig() const
+ void Widget::initNightModeUi()
+ {
+     ui->verticalLayout->setSpacing(8);
+-    mNightModeLabel = new TitleLabel(this);
++    mNightModeLabel = new KLabel(this);
++    mNightModeLabel->setContentsMargins(16, 0, 0, 0);
+     //~ contents_path /Display/Night Mode
+     mNightModeLabel->setText(tr("Night Mode"));
+     mNightModeFrame = new SettingGroup(this);
+@@ -527,7 +529,7 @@ void Widget::slotUnifyOutputs()
+     if (!mIscloneMode) {
+ 
+         unifySetconfig = true;
+-
++        qDebug() << Q_FUNC_INFO << "is not clone Mode, setConfig";
+         setConfig(mPrevConfig);
+ 
+         monitorComboBox->setEnabled(isExtendMode);
+@@ -1053,6 +1055,7 @@ int Widget::updateScreenConfig()
+     auto *preOp = new KScreen::GetConfigOperation();
+     preOp->exec();
+     mPrevConfig = preOp->config()->clone();  //重新获取屏幕当前状态,通过mconfig未必能获取到正确的状态
++    qDebug() << Q_FUNC_INFO << "updateScreenConfig connectedOutput count" << mPrevConfig->connectedOutputs().size();
+     preOp->deleteLater();
+     return 0;
+ }
+@@ -1870,6 +1873,7 @@ void Widget::usdScreenModeChangedSlot(int status)
+         mIscloneMode = false;
+     }
+ 
++    qDebug() << Q_FUNC_INFO << "screenMode" << status << "mIscloneMode:" << mIscloneMode;
+     int time = 1500;
+     if (mIscloneMode) {
+         time = 0;
+@@ -1972,7 +1976,7 @@ void Widget::initConnection()
+     });
+ 
+     connect(mTemptWidget, &SliderWidget::valueChanged, this, [=]{
+-        qDebug() << Q_FUNC_INFO << "susidian valueChanged" << mTemptWidget->value();
++        qDebug() << Q_FUNC_INFO << "TemptWidget valueChanged" << mTemptWidget->value();
+         if (m_colorSettings) {
+             m_colorSettings->set(NIGHT_TEMPERATURE_KEY, mTemptWidget->value());
+         } else {
+@@ -2826,15 +2830,15 @@ void Widget::initUi()
+     spliceFrame       = new UkccFrame(modeGroup, UkccFrame::BorderRadiusStyle::Around, true);
+     configGroup       = new SettingGroup(this);
+     monitorFrame      = new UkccFrame(configGroup, UkccFrame::BorderRadiusStyle::Around, true);
+-    monitorLabel      = new FixLabel(monitorFrame);
++    monitorLabel      = new KLabel(monitorFrame);
+     monitorComboBox   = new QComboBox(monitorFrame);
+     monitorBtn        = new QPushButton(monitorFrame);
+     mControlPanel     = new ControlPanel(configGroup);
+     scaleFrame        = new UkccFrame(configGroup, UkccFrame::BorderRadiusStyle::Around, true);
+-    scaleLabel        = new FixLabel(scaleFrame);
++    scaleLabel        = new KLabel(scaleFrame);
+     scaleComboBox     = new QComboBox(scaleFrame);
+     openMonitorFrame  = new UkccFrame(configGroup, UkccFrame::BorderRadiusStyle::Around, true);
+-    openMonitorLabel  = new FixLabel(openMonitorFrame);
++    openMonitorLabel  = new KLabel(openMonitorFrame);
+     openMonitorButton = new KSwitchButton(openMonitorFrame);
+     //~ contents_path /Display/Auto Brightness
+     mAutoBrightFrame   = new SwitchWidget(tr("Auto Brightness"));
+diff --git a/plugins/system/display/widget.h b/plugins/system/display/widget.h
+index d43e1a1..738c743 100644
+--- a/plugins/system/display/widget.h
++++ b/plugins/system/display/widget.h
+@@ -48,16 +48,14 @@
+ #include "outputconfig.h"
+ #include "brightnessFrame.h"
+ #include "screenConfig.h"
+-#include "titlelabel.h"
+-#include "fixlabel.h"
+ #include "lightlabel.h"
+-#include "uslider.h"
+ #include "switchwidget.h"
+ #include "kswitchbutton.h"
+ #include "ukccframe.h"
+ #include "settinggroup.h"
+ #include "comboxwidget.h"
+ #include "sliderwidget.h"
++#include <klabel.h>
+ 
+ using namespace kdk;
+ 
+@@ -262,13 +260,13 @@ private:
+     KSwitchButton *mAutoBrightBtn = nullptr;
+     KSwitchButton *mBackBrightBtn = nullptr;
+ 
+-    TitleLabel *mNightModeLabel = nullptr;
++    KLabel *mNightModeLabel = nullptr;
+     QLabel *mOpenLabel          = nullptr;
+     QLabel *mTimeModeLabel      = nullptr;
+     QLabel *mCustomTimeLabel    = nullptr;
+-    FixLabel *mTemptLabel       = nullptr;
+-    FixLabel *mWarmLabel        = nullptr;
+-    FixLabel *mColdLabel        = nullptr;
++    KLabel *mTemptLabel       = nullptr;
++    KLabel *mWarmLabel        = nullptr;
++    KLabel *mColdLabel        = nullptr;
+     QLabel *mLabel_1            = nullptr;
+ 
+     QLabel *nightLabel          = nullptr;
+@@ -355,15 +353,15 @@ private:
+     UkccFrame     *spliceFrame       = nullptr;
+     SettingGroup  *configGroup       = nullptr;
+     UkccFrame     *monitorFrame      = nullptr;
+-    FixLabel      *monitorLabel      = nullptr;
++    KLabel      *monitorLabel      = nullptr;
+     QComboBox     *monitorComboBox   = nullptr;
+     QPushButton   *monitorBtn        = nullptr;
+     ControlPanel  *mControlPanel     = nullptr;
+     UkccFrame     *scaleFrame        = nullptr;
+-    FixLabel      *scaleLabel        = nullptr;
++    KLabel      *scaleLabel        = nullptr;
+     QComboBox     *scaleComboBox     = nullptr;
+     UkccFrame     *openMonitorFrame  = nullptr;
+-    FixLabel      *openMonitorLabel  = nullptr;
++    KLabel      *openMonitorLabel  = nullptr;
+     KSwitchButton *openMonitorButton = nullptr;
+     UkccFrame     *mbrightnessFrame  = nullptr;
+     QVBoxLayout   *mbrightnesslayout = nullptr;
+diff --git a/plugins/system/display_hw/brightnessFrame.cpp b/plugins/system/display_hw/brightnessFrame.cpp
+deleted file mode 100644
+index b5b5761..0000000
+--- a/plugins/system/display_hw/brightnessFrame.cpp
++++ /dev/null
+@@ -1,42 +0,0 @@
+-#include "brightnessFrame.h"
+-#include <QHBoxLayout>
+-
+-BrightnessFrame::BrightnessFrame(QWidget *parent) :
+-    QFrame(parent)
+-{
+-    this->setFixedHeight(50);
+-    this->setMinimumWidth(550);
+-    this->setFrameShape(QFrame::Shape::Box);
+-    QHBoxLayout *layout = new QHBoxLayout(this);
+-    layout->setSpacing(6);
+-    layout->setMargin(9);
+-
+-    labelName = new QLabel(this);
+-    labelName->setFixedWidth(118);
+-
+-    slider = new Uslider(Qt::Horizontal, this);
+-    slider->setRange(10, 100);
+-
+-    labelValue = new QLabel(this);
+-    labelValue->setAlignment(Qt::AlignRight);
+-
+-    layout->addWidget(labelName);
+-    layout->addWidget(slider);
+-    layout->addWidget(labelValue);
+-
+-}
+-
+-BrightnessFrame::~BrightnessFrame()
+-{
+-
+-}
+-
+-void BrightnessFrame::setTextLableName(QString text)
+-{
+-    this->labelName->setText(text);
+-}
+-
+-void BrightnessFrame::setTextLableValue(QString text)
+-{
+-    this->labelValue->setText(text + "%");
+-}
+diff --git a/plugins/system/display_hw/brightnessFrame.h b/plugins/system/display_hw/brightnessFrame.h
+deleted file mode 100644
+index 565d52e..0000000
+--- a/plugins/system/display_hw/brightnessFrame.h
++++ /dev/null
+@@ -1,26 +0,0 @@
+-#ifndef BRIGHTNESSFRAME_H
+-#define BRIGHTNESSFRAME_H
+-
+-#include <QFrame>
+-#include <QLabel>
+-#include <QWidget>
+-#include <QLabel>
+-#include "uslider.h"
+-
+-class BrightnessFrame : public QFrame
+-{
+-    Q_OBJECT
+-public:
+-    BrightnessFrame(QWidget *parent = nullptr);
+-    ~BrightnessFrame();
+-    void setTextLableName(QString text);
+-    void setTextLableValue(QString text);
+-    Uslider *slider = nullptr;
+-    QString outputName;
+-    bool    openFlag = true;
+-private:
+-    QLabel *labelName = nullptr;
+-    QLabel *labelValue = nullptr;
+-};
+-
+-#endif // BRIGHTNESSFRAME_H
+diff --git a/plugins/system/display_hw/colorinfo.h b/plugins/system/display_hw/colorinfo.h
+deleted file mode 100644
+index b8551f1..0000000
+--- a/plugins/system/display_hw/colorinfo.h
++++ /dev/null
+@@ -1,32 +0,0 @@
+-#ifndef COLORINFO_H
+-#define COLORINFO_H
+-
+-#include <QHash>
+-#include <QVariant>
+-#include <QString>
+-#include <QDBusArgument>
+-
+-struct ColorInfo {
+-    QString arg;
+-    QDBusVariant out;
+-};
+-
+-QDBusArgument &operator<<(QDBusArgument &argument, const ColorInfo &mystruct)
+-{
+-    argument.beginStructure();
+-    argument << mystruct.arg << mystruct.out;
+-    argument.endStructure();
+-    return argument;
+-}
+-
+-const QDBusArgument &operator>>(const QDBusArgument &argument, ColorInfo &mystruct)
+-{
+-    argument.beginStructure();
+-    argument >> mystruct.arg >> mystruct.out;
+-    argument.endStructure();
+-    return argument;
+-}
+-
+-Q_DECLARE_METATYPE(ColorInfo)
+-
+-#endif // COLORINFO_H
+diff --git a/plugins/system/display_hw/controlpanel.cpp b/plugins/system/display_hw/controlpanel.cpp
+deleted file mode 100644
+index 16c74b1..0000000
+--- a/plugins/system/display_hw/controlpanel.cpp
++++ /dev/null
+@@ -1,175 +0,0 @@
+-#include "controlpanel.h"
+-#include "outputconfig.h"
+-#include "unifiedoutputconfig.h"
+-#include "utils.h"
+-#include "scalesize.h"
+-
+-#include <QVBoxLayout>
+-#include <QDebug>
+-#include <QLabel>
+-#include <QDBusInterface>
+-#include <KF5/KScreen/kscreen/config.h>
+-
+-QSize mScaleSize = QSize();
+-
+-ControlPanel::ControlPanel(QWidget *parent) :
+-    QFrame(parent),
+-    mUnifiedOutputCfg(nullptr)
+-{
+-    setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+-    mLayout = new QVBoxLayout(this);
+-    mLayout->setContentsMargins(0, 0, 0, 0);
+-
+-    isWayland();
+-}
+-
+-ControlPanel::~ControlPanel()
+-{
+-}
+-
+-void ControlPanel::setConfig(const KScreen::ConfigPtr &config)
+-{
+-    qDeleteAll(mOutputConfigs);
+-    mOutputConfigs.clear();
+-    delete mUnifiedOutputCfg;
+-    mUnifiedOutputCfg = nullptr;
+-
+-    if (mConfig) {
+-        mConfig->disconnect(this);
+-    }
+-
+-    mConfig = config;
+-    connect(mConfig.data(), &KScreen::Config::outputAdded,
+-            this, [=](const KScreen::OutputPtr &output){
+-        addOutput(output);
+-    });
+-    connect(mConfig.data(), &KScreen::Config::outputRemoved,
+-            this, &ControlPanel::removeOutput);
+-
+-    for (const KScreen::OutputPtr &output : mConfig->outputs()) {
+-        addOutput(output);
+-    }
+-}
+-
+-void ControlPanel::addOutput(const KScreen::OutputPtr &output)
+-{
+-    OutputConfig *outputCfg = new OutputConfig(this);
+-    outputCfg->setVisible(false);
+-    outputCfg->setShowScaleOption(mConfig->supportedFeatures().testFlag(KScreen::Config::Feature::PerOutputScaling));
+-
+-    outputCfg->setOutput(output);
+-    connect(outputCfg, &OutputConfig::changed,
+-            this, &ControlPanel::changed);
+-
+-    connect(outputCfg, &OutputConfig::scaleChanged,
+-            this, &ControlPanel::scaleChanged);
+-
+-    mLayout->addWidget(outputCfg);
+-
+-    mOutputConfigs << outputCfg;
+-
+-    if (mIsWayland) {
+-        activateOutput(mCurrentOutput);
+-    }
+-}
+-
+-void ControlPanel::removeOutput(int outputId)
+-{
+-    if (mUnifiedOutputCfg) {
+-        mUnifiedOutputCfg->setVisible(false);
+-        mIsCloneMode = false;
+-    }
+-
+-    for (OutputConfig *outputCfg : mOutputConfigs) {
+-        if (outputCfg->output()->id() == outputId) {
+-            mOutputConfigs.removeOne(outputCfg);
+-            delete outputCfg;
+-            outputCfg = nullptr;
+-        } else {
+-            outputCfg->setVisible(true);
+-        }
+-    }
+-}
+-
+-void ControlPanel::activateOutput(const KScreen::OutputPtr &output)
+-{
+-    // Ignore activateOutput when in unified mode
+-    if ((mUnifiedOutputCfg && mIsCloneMode) || output.isNull()) {
+-        return;
+-    }
+-
+-    mCurrentOutput = output;
+-
+-    Q_FOREACH (OutputConfig *cfg, mOutputConfigs) {
+-        cfg->setVisible(cfg->output()->id() == output->id());
+-    }
+-}
+-
+-void ControlPanel::activateOutputNoParam()
+-{
+-    // Ignore activateOutput when in unified mode
+-    if (mUnifiedOutputCfg) {
+-        return;
+-    }
+-
+-    Q_FOREACH (OutputConfig *cfg, mOutputConfigs) {
+-        cfg->setVisible(cfg->output()->id() == 66);
+-    }
+-}
+-
+-void ControlPanel::changescalemax(const KScreen::OutputPtr &output)
+-{
+-    QSize sizescale  = QSize();
+-    Q_FOREACH (const  KScreen::ModePtr &mode, output->modes()) {
+-        if (sizescale.width() <= mode->size().width()) {
+-            sizescale = mode->size();
+-        }
+-    }
+-    if (mScaleSize == QSize() || mScaleSize.width() > sizescale.width()) {
+-        mScaleSize = sizescale;
+-    }
+-}
+-
+-void ControlPanel::isWayland()
+-{
+-    QString sessionType = getenv("XDG_SESSION_TYPE");
+-
+-    if (!sessionType.compare(kSession, Qt::CaseSensitive)) {
+-        mIsWayland = true;
+-    } else {
+-        mIsWayland = false;
+-    }
+-}
+-
+-void ControlPanel::setUnifiedOutput(const KScreen::OutputPtr &output)
+-{
+-    Q_FOREACH (OutputConfig *config, mOutputConfigs) {
+-        if (!config->output()->isConnected()) {
+-            continue;
+-        }
+-
+-        // 隐藏下面控制
+-        config->setVisible(output == nullptr);
+-    }
+-
+-    if (output.isNull()) {
+-        mUnifiedOutputCfg->deleteLater();
+-        mUnifiedOutputCfg = nullptr;
+-    } else {
+-        mUnifiedOutputCfg = new UnifiedOutputConfig(mConfig, this);
+-        mUnifiedOutputCfg->setOutput(output);
+-        mUnifiedOutputCfg->setVisible(true);
+-        mIsCloneMode = true;
+-        mLayout->insertWidget(mLayout->count() - 2, mUnifiedOutputCfg);
+-        connect(mUnifiedOutputCfg, &UnifiedOutputConfig::changed,
+-                this, &ControlPanel::changed);
+-    }
+-}
+-
+-void ControlPanel::deleteUnifiedOutputCfg()
+-{
+-    if (mUnifiedOutputCfg) {
+-        delete mUnifiedOutputCfg;
+-        mUnifiedOutputCfg = nullptr;
+-    }
+-}
+diff --git a/plugins/system/display_hw/controlpanel.h b/plugins/system/display_hw/controlpanel.h
+deleted file mode 100644
+index b127567..0000000
+--- a/plugins/system/display_hw/controlpanel.h
++++ /dev/null
+@@ -1,62 +0,0 @@
+-#ifndef CONTROLPANEL_H
+-#define CONTROLPANEL_H
+-
+-#include <QFrame>
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-
+-class QVBoxLayout;
+-class OutputConfig;
+-class UnifiedOutputConfig;
+-
+-class QLabel;
+-class QCheckBox;
+-class QSlider;
+-class QComboBox;
+-
+-const QString kSession = "wayland";
+-
+-class ControlPanel : public QFrame
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit ControlPanel(QWidget *parent = nullptr);
+-    ~ControlPanel() override;
+-
+-    void setConfig(const KScreen::ConfigPtr &config);
+-    void setUnifiedOutput(const KScreen::OutputPtr &output);
+-    void activateOutputNoParam();
+-    void changescalemax(const KScreen::OutputPtr &output);
+-    void deleteUnifiedOutputCfg();
+-
+-private:
+-    void isWayland();
+-
+-public Q_SLOTS:
+-    void activateOutput(const KScreen::OutputPtr &output);
+-
+-Q_SIGNALS:
+-    void changed();
+-    void scaleChanged(double scale);
+-
+-private Q_SLOTS:
+-    void addOutput(const KScreen::OutputPtr &output);
+-    void removeOutput(int outputId);
+-
+-public:
+-    QVBoxLayout *mLayout;
+-
+-private:
+-    KScreen::ConfigPtr mConfig;
+-    QList<OutputConfig *> mOutputConfigs;
+-
+-    UnifiedOutputConfig *mUnifiedOutputCfg;
+-
+-    KScreen::OutputPtr mCurrentOutput;
+-
+-    bool mIsWayland;
+-    bool mIsCloneMode = false;
+-};
+-
+-#endif // CONTROLPANEL_H
+diff --git a/plugins/system/display_hw/declarative/qmloutput.cpp b/plugins/system/display_hw/declarative/qmloutput.cpp
+deleted file mode 100644
+index 9c0f4a1..0000000
+--- a/plugins/system/display_hw/declarative/qmloutput.cpp
++++ /dev/null
+@@ -1,606 +0,0 @@
+-/*
+-    Copyright (C) 2012  Dan Vratil <dvratil@redhat.com>
+-
+-    This library is free software; you can redistribute it and/or
+-    modify it under the terms of the GNU Lesser General Public
+-    License as published by the Free Software Foundation; either
+-    version 2.1 of the License, or (at your option) any later version.
+-
+-    This library 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
+-    Lesser General Public License for more details.
+-
+-    You should have received a copy of the GNU Lesser General Public
+-    License along with this library; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+-*/
+-
+-#include "qmloutput.h"
+-#include "qmlscreen.h"
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-#include <KF5/KScreen/kscreen/config.h>
+-
+-#include <QStandardItem>
+-#include <QStandardItemModel>
+-#include <qquickitem.h>
+-#include <QRect>
+-
+-const static int sMargin = 0;
+-const static int sSnapArea = 20;
+-const static int sSnapAlignArea = 6;
+-
+-Q_DECLARE_METATYPE(KScreen::ModePtr)
+-
+-bool operator>(const QSize &sizeA, const QSize &sizeB)
+-{
+-    return ((sizeA.width() > sizeB.width()) && (sizeA.height() > sizeB.height()));
+-}
+-
+-QMLOutput::QMLOutput(QQuickItem *parent):
+-    QQuickItem(parent),
+-    m_screen(nullptr),
+-    m_cloneOf(nullptr),
+-    m_leftDock(nullptr),
+-    m_topDock(nullptr),
+-    m_rightDock(nullptr),
+-    m_bottomDock(nullptr),
+-    pos_clicked(QPointF(0.0,0.0)),
+-    m_isCloneMode(false)
+-{
+-    connect(this, &QMLOutput::xChanged,
+-            this, static_cast<void(QMLOutput::*)()>(&QMLOutput::moved));
+-    connect(this, &QMLOutput::yChanged,
+-            this, static_cast<void(QMLOutput::*)()>(&QMLOutput::moved));
+-}
+-
+-KScreen::Output* QMLOutput::output() const
+-{
+-    return m_output.data();
+-}
+-
+-KScreen::OutputPtr QMLOutput::outputPtr() const
+-{
+-    return m_output;
+-}
+-
+-void QMLOutput::setOutputPtr(const KScreen::OutputPtr &output)
+-{
+-    Q_ASSERT(m_output.isNull());
+-
+-    m_output = output;
+-    Q_EMIT outputChanged();
+-
+-    connect(m_output.data(), &KScreen::Output::rotationChanged,
+-            this, &QMLOutput::updateRootProperties);
+-    connect(m_output.data(), &KScreen::Output::currentModeIdChanged,
+-            this, &QMLOutput::currentModeIdChanged);
+-}
+-
+-QMLScreen *QMLOutput::screen() const
+-{
+-    return m_screen;
+-}
+-
+-void QMLOutput::setScreen(QMLScreen *screen)
+-{
+-    Q_ASSERT(m_screen == nullptr);
+-
+-    m_screen = screen;
+-    Q_EMIT screenChanged();
+-}
+-
+-void QMLOutput::setLeftDockedTo(QMLOutput *output)
+-{
+-    if (m_leftDock == output) {
+-        return;
+-    }
+-
+-    m_leftDock = output;
+-    Q_EMIT leftDockedToChanged();
+-}
+-
+-QMLOutput *QMLOutput::leftDockedTo() const
+-{
+-    return m_leftDock;
+-}
+-
+-void QMLOutput::undockLeft()
+-{
+-    setLeftDockedTo(nullptr);
+-}
+-
+-void QMLOutput::setTopDockedTo(QMLOutput *output)
+-{
+-    if (m_topDock == output) {
+-        return;
+-    }
+-
+-    m_topDock = output;
+-    Q_EMIT topDockedToChanged();
+-}
+-
+-QMLOutput *QMLOutput::topDockedTo() const
+-{
+-    return m_topDock;
+-}
+-
+-void QMLOutput::undockTop()
+-{
+-    setTopDockedTo(nullptr);
+-}
+-
+-void QMLOutput::setRightDockedTo(QMLOutput *output)
+-{
+-    if (m_rightDock == output) {
+-        return;
+-    }
+-
+-    m_rightDock = output;
+-    Q_EMIT rightDockedToChanged();
+-}
+-
+-QMLOutput *QMLOutput::rightDockedTo() const
+-{
+-    return m_rightDock;
+-}
+-
+-void QMLOutput::undockRight()
+-{
+-    setRightDockedTo(nullptr);
+-}
+-
+-void QMLOutput::setBottomDockedTo(QMLOutput *output)
+-{
+-    if (m_bottomDock == output) {
+-        return;
+-    }
+-
+-    m_bottomDock = output;
+-    Q_EMIT bottomDockedToChanged();
+-}
+-
+-QMLOutput *QMLOutput::bottomDockedTo() const
+-{
+-    return m_bottomDock;
+-}
+-
+-void QMLOutput::undockBottom()
+-{
+-    setBottomDockedTo(nullptr);
+-}
+-
+-void QMLOutput::setCloneOf(QMLOutput* other)
+-{
+-    if (m_cloneOf == other) {
+-        return;
+-    }
+-
+-    m_cloneOf = other;
+-    Q_EMIT cloneOfChanged();
+-}
+-
+-QMLOutput* QMLOutput::cloneOf() const
+-{
+-    return m_cloneOf;
+-}
+-
+-int QMLOutput::currentOutputHeight() const
+-{
+-    if (!m_output) {
+-        return 0;
+-    }
+-
+-    KScreen::ModePtr mode = m_output->currentMode();
+-    if (!mode) {
+-        if (m_output->isConnected()) {
+-            mode = bestMode();
+-            if (!mode) {
+-                return 1000;
+-            }
+-            m_output->setCurrentModeId(mode->id());
+-        } else {
+-            return 1000;
+-        }
+-    }
+-    return mode->size().height() / m_output->scale();
+-}
+-
+-int QMLOutput::currentOutputWidth() const
+-{
+-    if (!m_output) {
+-        return 0;
+-    }
+-
+-    KScreen::ModePtr mode = m_output->currentMode();
+-    if (!mode) {
+-        if (m_output->isConnected()) {
+-            mode = bestMode();
+-            if (!mode) {
+-                return 1000;
+-            }
+-            m_output->setCurrentModeId(mode->id());
+-        } else {
+-            return 1000;
+-        }
+-    }
+-    return mode->size().width() / m_output->scale();
+-}
+-
+-void QMLOutput::currentModeIdChanged()
+-{
+-    if (!m_output) {
+-        return;
+-    }
+-
+-    if (isCloneMode()) {
+-        const float newWidth = currentOutputWidth() * m_screen->outputScale();
+-        setX((m_screen->width() - newWidth) / 2);
+-        const float newHeight = currentOutputHeight() * m_screen->outputScale();
+-        setY((m_screen->height() - newHeight) / 2);
+-    } else {
+-        if (m_rightDock) {
+-            QMLOutput *rightDock = m_rightDock;
+-            float newWidth = currentOutputWidth() * m_screen->outputScale();
+-            setX(rightDock->x() - newWidth);
+-            setRightDockedTo(rightDock);
+-        }
+-
+-        if (m_bottomDock) {
+-            QMLOutput *bottomDock = m_bottomDock;
+-            float newHeight = currentOutputHeight() * m_screen->outputScale();
+-            setY(bottomDock->y() - newHeight);
+-            setBottomDockedTo(bottomDock);
+-        }
+-    }
+-
+-    Q_EMIT currentOutputSizeChanged();
+-}
+-
+-
+-int QMLOutput::outputX() const
+-{
+-    return m_output->pos().x();
+-}
+-
+-void QMLOutput::setOutputX(int x)
+-{
+-    if (m_output->pos().rx() == x) {
+-        return;
+-    }
+-
+-    QPoint pos = m_output->pos();
+-    pos.setX(x);
+-    m_output->setPos(pos);
+-    Q_EMIT outputXChanged();
+-}
+-
+-int QMLOutput::outputY() const
+-{
+-    return m_output->pos().y();
+-}
+-
+-void QMLOutput::setOutputY(int y)
+-{
+-    if (m_output->pos().ry() == y) {
+-        return;
+-    }
+-
+-    QPoint pos = m_output->pos();
+-    pos.setY(y);
+-    m_output->setPos(pos);
+-    Q_EMIT outputYChanged();
+-}
+-
+-bool QMLOutput::isCloneMode() const
+-{
+-    return m_isCloneMode;
+-}
+-
+-void QMLOutput::setIsCloneMode(bool isCloneMode)
+-{
+-    if (m_isCloneMode == isCloneMode) {
+-        return;
+-    }
+-
+-    m_isCloneMode = isCloneMode;
+-    Q_EMIT isCloneModeChanged();
+-}
+-
+-void QMLOutput::dockToNeighbours()
+-{
+-    Q_FOREACH (QMLOutput *otherQmlOutput, m_screen->outputs()) {
+-        if (otherQmlOutput == this) {
+-            continue;
+-        }
+-
+-        if (!otherQmlOutput->output()->isConnected() || !otherQmlOutput->output()->isEnabled()) {
+-            continue;
+-        }
+-
+-        const QRect geom = m_output->geometry();
+-
+-        const QRect otherGeom = otherQmlOutput->output()->geometry();
+-
+-        //qDebug()<<"geom is ------>"<<geom<<" other:"<<otherGeom<<endl;
+-
+-        if (geom.left() - 1 == otherGeom.right()) {
+-            setLeftDockedTo(otherQmlOutput);
+-            continue;
+-        }
+-        if (geom.right() + 1 == otherGeom.left()) {
+-            setRightDockedTo(otherQmlOutput);
+-            continue;
+-        }
+-        if (geom.top() - 1 == otherGeom.bottom()) {
+-            setTopDockedTo(otherQmlOutput);
+-            continue;
+-        }
+-        if (geom.bottom() + 1 == otherGeom.top()) {
+-            setBottomDockedTo(otherQmlOutput);
+-            continue;
+-        }
+-    }
+-}
+-
+-int QMLOutput::enableCount() const
+-{
+-    return m_enableCount;
+-}
+-
+-void QMLOutput::setEnableCount(int count)
+-{
+-    Q_UNUSED(count);
+-    m_enableCount = count;
+-    Q_EMIT enableCountChanged();
+-}
+-
+-KScreen::ModePtr QMLOutput::bestMode() const
+-{
+-    if (!m_output) {
+-        return KScreen::ModePtr();
+-    }
+-
+-    KScreen::ModeList modes = m_output->modes();
+-    KScreen::ModePtr bestMode;
+-    Q_FOREACH (const KScreen::ModePtr &mode, modes) {
+-        if (!bestMode || (mode->size() > bestMode->size())) {
+-            bestMode = mode;
+-        }
+-    }
+-
+-    return bestMode;
+-}
+-
+-bool QMLOutput::collidesWithOutput(QObject *other)
+-{
+-    QQuickItem* otherItem = qobject_cast<QQuickItem*>(other);
+-    return boundingRect().intersects(otherItem->boundingRect());
+-}
+-
+-bool QMLOutput::maybeSnapTo(QMLOutput *other)
+-{
+-    qreal centerX = x() + (width() / 2.0);
+-    qreal centerY = y() + (height() / 2.0);
+-
+-    const qreal x2 = other->x();
+-    const qreal y2 = other->y();
+-    const qreal height2 = other->height();
+-    const qreal width2 = other->width();
+-    const qreal centerX2 = x2 + (width2 / 2.0);
+-    const qreal centerY2 = y2 + (height2 / 2.0);
+-
+-    /* left of other */
+-    if ((x() + width() > x2 - sSnapArea) && (x() + width() < x2 + sSnapArea) &&
+-        (y() + height() > y2) && (y() < y2 + height2))
+-    {
+-        setX(x2 - width() + sMargin);
+-        centerX = x() + (width() / 2.0);
+-        setRightDockedTo(other);
+-        other->setLeftDockedTo(this);
+-        //output.cloneOf = null;
+-
+-        /* output is snapped to other on left and their
+-         * upper sides are aligned */
+-        if ((y() < y2 + sSnapAlignArea) && (y() > y2 - sSnapAlignArea)) {
+-            setY(y2);
+-            return true;
+-        }
+-
+-        /* output is snapped to other on left and they
+-         * are centered */
+-        if ((centerY < centerY2 + sSnapAlignArea) && (centerY > centerY2 - sSnapAlignArea)) {
+-            setY(centerY2 - (height() / 2.0));
+-            return true;
+-        }
+-
+-        /* output is snapped to other on left and their
+-         * bottom sides are aligned */
+-        if ((y() + height() < y2 + height2 + sSnapAlignArea) &&
+-            (y() + height() > y2 + height2 - sSnapAlignArea))
+-        {
+-            setY(y2 + height2 - height());
+-            return true;
+-        }
+-
+-        return true;
+-    }
+-
+-    /* output is right of other */
+-    if ((x() > x2 + width2 - sSnapArea) && (x() < x2 + width2 + sSnapArea) &&
+-        (y() + height() > y2) && (y() < y2 + height2))
+-    {
+-        setX(x2 + width2 - sMargin);
+-        centerX = x() + (width() / 2.0);
+-        setLeftDockedTo(other);
+-        other->setRightDockedTo(this);
+-        //output.cloneOf = null;
+-
+-        /* output is snapped to other on right and their
+-         * upper sides are aligned */
+-        if ((y() < y2 + sSnapAlignArea) && (y() > y2 - sSnapAlignArea)) {
+-            setY(y2);
+-            return true;
+-        }
+-
+-        /* output is snapped to other on right and they
+-         * are centered */
+-        if ((centerY < centerY2 + sSnapAlignArea) && (centerY > centerY2 - sSnapAlignArea)) {
+-            setY(centerY2 - (height() / 2.0));
+-            return true;
+-        }
+-
+-        /* output is snapped to other on right and their
+-         * bottom sides are aligned */
+-        if ((y() + height() < y2 + height2 + sSnapAlignArea) &&
+-            (y() + height() > y2 + height2 - sSnapAlignArea))
+-        {
+-            setY(y2 + height2 - height());
+-            return true;
+-        }
+-
+-        return true;
+-    }
+-
+-    /* output is above other */
+-    if ((y() + height() > y2 - sSnapArea) && (y() + height() < y2 + sSnapArea) &&
+-        (x() + width() > x2) && (x() < x2 + width2))
+-    {
+-        setY(y2 - height() + sMargin);
+-        centerY = y() + (height() / 2.0);
+-        setBottomDockedTo(other);
+-        other->setTopDockedTo(this);
+-        //output.cloneOf = null;
+-
+-        /* output is snapped to other on top and their
+-         * left sides are aligned */
+-        if ((x() < x2 + sSnapAlignArea) && (x() > x2 - sSnapAlignArea)) {
+-            setX(x2);
+-            return true;
+-        }
+-
+-        /* output is snapped to other on top and they
+-         * are centered */
+-        if ((centerX < centerX2 + sSnapAlignArea) && (centerX > centerX2 - sSnapAlignArea)) {
+-            setX(centerX2 - (width() / 2.0));
+-            return true;
+-        }
+-
+-        /* output is snapped to other on top and their
+-         * right sides are aligned */
+-        if ((x() + width() < x2 + width2 + sSnapAlignArea) &&
+-            (x() + width() > x2 + width2 - sSnapAlignArea))
+-        {
+-            setX(x2 + width2 - width());
+-            return true;
+-        }
+-
+-        return true;
+-    }
+-
+-    /* output is below other */
+-    if ((y() > y2 + height2 - sSnapArea) && (y() < y2 + height2 + sSnapArea) &&
+-        (x() + width() > x2) && (x() < x2 + width2))
+-    {
+-        setY(y2 + height2 - sMargin);
+-        centerY = y() + (height() / 2.0);
+-        setTopDockedTo(other);
+-        other->setBottomDockedTo(this);
+-        //output.cloneOf = null;
+-
+-        /* output is snapped to other on bottom and their
+-         * left sides are aligned */
+-        if ((x() < x2 + sSnapAlignArea) && (x() > x2 - sSnapAlignArea)) {
+-            setX(x2);
+-            return true;
+-        }
+-
+-        /* output is snapped to other on bottom and they
+-         * are centered */
+-        if ((centerX < centerX2 + sSnapAlignArea) && (centerX > centerX2 - sSnapAlignArea)) {
+-            setX(centerX2 - (width() / 2.0));
+-            return true;
+-        }
+-
+-        /* output is snapped to other on bottom and their
+-         * right sides are aligned */
+-        if ((x() + width() < x2 + width2 + sSnapAlignArea) &&
+-            (x() + width() > x2 + width2 - sSnapAlignArea))
+-        {
+-            setX(x2 + width2 - width());
+-            return true;
+-        }
+-
+-        return true;
+-    }
+-    return false;
+-}
+-
+-void QMLOutput::moved()
+-{
+-    const QList<QQuickItem*> siblings = screen()->childItems();
+-
+-    // First, if we have moved, then unset the "cloneOf" flag
+-    setCloneOf(nullptr);
+-
+-    disconnect(this, &QMLOutput::xChanged, this, static_cast<void(QMLOutput::*)()>(&QMLOutput::moved));
+-    disconnect(this, &QMLOutput::yChanged, this, static_cast<void(QMLOutput::*)()>(&QMLOutput::moved));
+-    Q_FOREACH (QQuickItem *sibling, siblings) {
+-        QMLOutput *otherOutput = qobject_cast<QMLOutput*>(sibling);
+-        if (!otherOutput || otherOutput == this) {
+-            continue;
+-        }
+-
+-        if (!maybeSnapTo(otherOutput)) {
+-            if (m_leftDock == otherOutput) {
+-                m_leftDock->undockRight();
+-                undockLeft();
+-            }
+-            if (m_topDock == otherOutput) {
+-                m_topDock->undockBottom();
+-                undockTop();
+-            }
+-            if (m_rightDock == otherOutput) {
+-                m_rightDock->undockLeft();
+-                undockRight();
+-            }
+-            if (m_bottomDock == otherOutput) {
+-                m_bottomDock->undockTop();
+-                undockBottom();
+-            }
+-        }
+-    }
+-    connect(this, &QMLOutput::xChanged, this, static_cast<void(QMLOutput::*)()>(&QMLOutput::moved));
+-    connect(this, &QMLOutput::yChanged, this, static_cast<void(QMLOutput::*)()>(&QMLOutput::moved));
+-
+-    Q_EMIT moved(m_output->name());
+-}
+-
+-
+-/* Transformation of an item (rotation of the MouseArea) is only visual.
+- * The coordinates and dimensions are still the same (when you rotated
+- * 100x500 rectangle by 90 deg, it will still be 100x500, although
+- * visually it will be 500x100).
+- *
+- * This method calculates the real-visual coordinates and dimensions of
+- * the MouseArea and updates root item to match them. This makes snapping
+- * work correctly regardless off visual rotation of the output
+- */
+-
+-//旋转时计算坐标更改方向
+-void QMLOutput::updateRootProperties()
+-{
+-    const float transformedWidth = (m_output->isHorizontal() ? currentOutputWidth() : currentOutputHeight()) * m_screen->outputScale();
+-    const float transformedHeight = (m_output->isHorizontal() ? currentOutputHeight() : currentOutputWidth()) * m_screen->outputScale();
+-
+-    setSize(QSizeF(transformedWidth, transformedHeight));
+-}
+-
+-void QMLOutput::setPosClicked(QPointF pos) {
+-    this->pos_clicked = pos;
+-}
+-
+-QPointF QMLOutput::posClicked() {
+-    return this->pos_clicked;
+-}
+diff --git a/plugins/system/display_hw/declarative/qmloutput.h b/plugins/system/display_hw/declarative/qmloutput.h
+deleted file mode 100644
+index edd751d..0000000
+--- a/plugins/system/display_hw/declarative/qmloutput.h
++++ /dev/null
+@@ -1,217 +0,0 @@
+-/*
+-    Copyright (C) 2012  Dan Vratil <dvratil@redhat.com>
+-
+-    This library is free software; you can redistribute it and/or
+-    modify it under the terms of the GNU Lesser General Public
+-    License as published by the Free Software Foundation; either
+-    version 2.1 of the License, or (at your option) any later version.
+-
+-    This library 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
+-    Lesser General Public License for more details.
+-
+-    You should have received a copy of the GNU Lesser General Public
+-    License along with this library; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+-*/
+-
+-#ifndef QMLOUTPUT_H
+-#define QMLOUTPUT_H
+-
+-#include <QQuickItem>
+-#include <KF5/KScreen/kscreen/mode.h>
+-
+-class QStandardItemModel;
+-class QAbstractItemModel;
+-
+-class ModesProxyModel;
+-class QMLScreen;
+-
+-class QMLOutput : public QQuickItem
+-{
+-    Q_OBJECT
+-
+-    Q_PROPERTY(KScreen::Output *output
+-               READ output
+-               NOTIFY outputChanged)
+-
+-    Q_PROPERTY(KScreen::OutputPtr outputPtr
+-               READ outputPtr
+-               WRITE setOutputPtr
+-               NOTIFY outputChanged)
+-
+-    Q_PROPERTY(bool isCloneMode
+-               READ isCloneMode
+-               WRITE setIsCloneMode
+-               NOTIFY isCloneModeChanged)
+-
+-    Q_PROPERTY(int enableCount
+-               READ enableCount
+-               WRITE setEnableCount
+-               NOTIFY enableCountChanged)
+-
+-    Q_PROPERTY(QMLScreen* screen
+-               READ screen
+-               WRITE setScreen
+-               NOTIFY screenChanged)
+-
+-    Q_PROPERTY(QMLOutput* cloneOf
+-               READ cloneOf
+-               WRITE setCloneOf
+-               NOTIFY cloneOfChanged)
+-
+-    Q_PROPERTY(QMLOutput* leftDockedTo
+-               READ leftDockedTo
+-               WRITE setLeftDockedTo
+-               RESET undockLeft
+-               NOTIFY leftDockedToChanged)
+-
+-    Q_PROPERTY(QMLOutput* topDockedTo
+-               READ topDockedTo
+-               WRITE setTopDockedTo
+-               RESET undockTop
+-               NOTIFY topDockedToChanged)
+-
+-    Q_PROPERTY(QMLOutput* rightDockedTo
+-               READ rightDockedTo
+-               WRITE setRightDockedTo
+-               RESET undockRight
+-               NOTIFY rightDockedToChanged)
+-
+-    Q_PROPERTY(QMLOutput* bottomDockedTo
+-               READ bottomDockedTo
+-               WRITE setBottomDockedTo
+-               RESET undockBottom
+-               NOTIFY bottomDockedToChanged)
+-
+-    Q_PROPERTY(int currentOutputHeight
+-               READ currentOutputHeight
+-               NOTIFY currentOutputSizeChanged)
+-
+-    Q_PROPERTY(int currentOutputWidth
+-               READ currentOutputWidth
+-               NOTIFY currentOutputSizeChanged)
+-
+-    /* Workaround for possible QML bug when calling output.pos.y = VALUE works,
+-     * but output.pos.x = VALUE has no effect */
+-    Q_PROPERTY(int outputX
+-               READ outputX
+-               WRITE setOutputX
+-               NOTIFY outputXChanged)
+-
+-    Q_PROPERTY(int outputY
+-               READ outputY
+-               WRITE setOutputY
+-               NOTIFY outputYChanged)
+-
+-public:
+-    enum {        
+-        ModeRole = Qt::UserRole,
+-        ModeIdRole,
+-        SizeRole,
+-        RefreshRateRole
+-    };
+-
+-    explicit QMLOutput(QQuickItem *parent = nullptr);
+-
+-    KScreen::Output *output() const; // For QML
+-
+-    KScreen::OutputPtr outputPtr() const;
+-    void setOutputPtr(const KScreen::OutputPtr &output);
+-
+-    QMLScreen *screen() const;
+-    void setScreen(QMLScreen *screen);
+-
+-    QMLOutput *leftDockedTo() const;
+-    void setLeftDockedTo(QMLOutput *output);
+-    void undockLeft();
+-
+-    QMLOutput *topDockedTo() const;
+-    void setTopDockedTo(QMLOutput *output);
+-    void undockTop();
+-
+-    QMLOutput *rightDockedTo() const;
+-    void setRightDockedTo(QMLOutput *output);
+-    void undockRight();
+-
+-    QMLOutput *bottomDockedTo() const;
+-    void setBottomDockedTo(QMLOutput *output);
+-    void undockBottom();
+-
+-    Q_INVOKABLE bool collidesWithOutput(QObject *other);
+-    Q_INVOKABLE bool maybeSnapTo(QMLOutput *other);
+-
+-    void setCloneOf(QMLOutput *other);
+-    QMLOutput *cloneOf() const;
+-
+-    int currentOutputHeight() const;
+-    int currentOutputWidth() const;
+-
+-    int outputX() const;
+-    void setOutputX(int x);
+-
+-    int outputY() const;
+-    void setOutputY(int y);
+-
+-    void setIsCloneMode(bool isCloneMode);
+-    bool isCloneMode() const;
+-
+-    void dockToNeighbours();
+-
+-    int enableCount() const;
+-    void setEnableCount(int count = 0);
+-    void setPosClicked(QPointF pos);
+-    QPointF posClicked();
+-
+-public Q_SLOTS:
+-    void updateRootProperties();
+-
+-Q_SIGNALS:
+-    void changed();
+-
+-    void moved(const QString &self);
+-
+-    /* Property notifications */
+-    void outputChanged();
+-    void screenChanged();
+-    void cloneOfChanged();
+-    void currentOutputSizeChanged();
+-
+-    void leftDockedToChanged();
+-    void topDockedToChanged();
+-    void rightDockedToChanged();
+-    void bottomDockedToChanged();
+-
+-    void outputYChanged();
+-    void outputXChanged();
+-
+-    void isCloneModeChanged();
+-
+-    void enableCountChanged();
+-
+-private Q_SLOTS:
+-    void moved();
+-    void currentModeIdChanged();
+-
+-private:
+-    /**
+-     * Returns the biggest resolution available assuming it's the preferred one
+-     */
+-    KScreen::ModePtr bestMode() const;
+-
+-    KScreen::OutputPtr m_output;
+-    QMLScreen *m_screen;
+-
+-    QMLOutput *m_cloneOf;
+-    QMLOutput *m_leftDock;
+-    QMLOutput *m_topDock;
+-    QMLOutput *m_rightDock;
+-    QMLOutput *m_bottomDock;
+-    QPointF pos_clicked;
+-
+-    bool m_isCloneMode;
+-    int m_enableCount;
+-};
+-
+-#endif // QMLOUTPUT_H
+diff --git a/plugins/system/display_hw/declarative/qmloutputcomponent.cpp b/plugins/system/display_hw/declarative/qmloutputcomponent.cpp
+deleted file mode 100644
+index cdfe186..0000000
+--- a/plugins/system/display_hw/declarative/qmloutputcomponent.cpp
++++ /dev/null
+@@ -1,63 +0,0 @@
+-/*
+-    Copyright (C) 2012  Dan Vratil <dvratil@redhat.com>
+-
+-    This library is free software; you can redistribute it and/or
+-    modify it under the terms of the GNU Lesser General Public
+-    License as published by the Free Software Foundation; either
+-    version 2.1 of the License, or (at your option) any later version.
+-
+-    This library 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
+-    Lesser General Public License for more details.
+-
+-    You should have received a copy of the GNU Lesser General Public
+-    License along with this library; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+-*/
+-
+-#include "qmloutputcomponent.h"
+-#include "qmloutput.h"
+-#include "qmlscreen.h"
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-
+-#include <QDir>
+-#include <QStandardPaths>
+-#include <QQmlEngine>
+-#include <QDebug>
+-#include <KF5/KScreen/kscreen/types.h>
+-
+-Q_DECLARE_METATYPE(KScreen::OutputPtr)
+-Q_DECLARE_METATYPE(QMLScreen*)
+-
+-QMLOutputComponent::QMLOutputComponent(QQmlEngine *engine, QMLScreen *parent):
+-    QQmlComponent(engine, parent),
+-    m_engine(engine)
+-{
+-    loadUrl(QUrl("qrc:/qml/Output.qml"));
+-}
+-
+-QMLOutputComponent::~QMLOutputComponent()
+-{
+-}
+-
+-QMLOutput* QMLOutputComponent::createForOutput(const KScreen::OutputPtr &output)
+-{
+-    QObject *instance = beginCreate(m_engine->rootContext());
+-    if (!instance) {
+-        qWarning() << errorString();
+-        return nullptr;
+-    }
+-
+-    bool success = instance->setProperty("outputPtr", QVariant::fromValue(qobject_cast<KScreen::OutputPtr>(output)));
+-
+-    Q_ASSERT(success);
+-    success = instance->setProperty("screen", QVariant::fromValue(qobject_cast<QMLScreen*>(parent())));
+-    Q_ASSERT(success);
+-    Q_UNUSED(success);
+-
+-    completeCreate();
+-
+-    return qobject_cast<QMLOutput*>(instance);
+-}
+diff --git a/plugins/system/display_hw/declarative/qmloutputcomponent.h b/plugins/system/display_hw/declarative/qmloutputcomponent.h
+deleted file mode 100644
+index cf38ab3..0000000
+--- a/plugins/system/display_hw/declarative/qmloutputcomponent.h
++++ /dev/null
+@@ -1,43 +0,0 @@
+-/*
+-    Copyright (C) 2012  Dan Vratil <dvratil@redhat.com>
+-
+-    This library is free software; you can redistribute it and/or
+-    modify it under the terms of the GNU Lesser General Public
+-    License as published by the Free Software Foundation; either
+-    version 2.1 of the License, or (at your option) any later version.
+-
+-    This library 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
+-    Lesser General Public License for more details.
+-
+-    You should have received a copy of the GNU Lesser General Public
+-    License along with this library; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+-*/
+-
+-#ifndef QMLOUTPUTCOMPONENT_H
+-#define QMLOUTPUTCOMPONENT_H
+-
+-#include <QQmlComponent>
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-
+-class QMLScreen;
+-class QMLOutput;
+-
+-class QMLOutputComponent : public QQmlComponent
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit QMLOutputComponent(QQmlEngine *engine, QMLScreen *parent);
+-    ~QMLOutputComponent() override;
+-
+-    QMLOutput *createForOutput(const KScreen::OutputPtr &output);
+-
+-private:
+-    QQmlEngine *m_engine;
+-};
+-
+-#endif // QMLOUTPUTCOMPONENT_H
+diff --git a/plugins/system/display_hw/declarative/qmlscreen.cpp b/plugins/system/display_hw/declarative/qmlscreen.cpp
+deleted file mode 100644
+index ae469d9..0000000
+--- a/plugins/system/display_hw/declarative/qmlscreen.cpp
++++ /dev/null
+@@ -1,708 +0,0 @@
+-/*
+-    Copyright (C) 2012  Dan Vratil <dvratil@redhat.com>
+-
+-    This library is free software; you can redistribute it and/or
+-    modify it under the terms of the GNU Lesser General Public
+-    License as published by the Free Software Foundation; either
+-    version 2.1 of the License, or (at your option) any later version.
+-
+-    This library 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
+-    Lesser General Public License for more details.
+-
+-    You should have received a copy of the GNU Lesser General Public
+-    License along with this library; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+-*/
+-
+-#include "qmlscreen.h"
+-#include "qmloutputcomponent.h"
+-#include "qmloutput.h"
+-
+-#include "screenConfig.h"
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-#include <KF5/KScreen/kscreen/config.h>
+-
+-#include <QDBusMessage>
+-#include <QDBusArgument>
+-#include <QDBusInterface>
+-
+-#include <QTimer>
+-#include <sys/socket.h>
+-
+-Q_DECLARE_METATYPE(KScreen::OutputPtr)
+-
+-static bool sizeLessThan(ScreenConfig posxA, ScreenConfig posxB)
+-{
+-    return posxA.screenPosX > posxB.screenPosY;
+-}
+-
+-static bool sizeLessThanQml(QPointF posxA, QPointF posxB)
+-{
+-    return posxA.x() > posxB.x();
+-}
+-
+-QMLScreen::QMLScreen(QQuickItem *parent) :
+-    QQuickItem(parent)
+-{
+-    connect(this, &QMLScreen::widthChanged, this, &QMLScreen::viewSizeChanged);
+-    connect(this, &QMLScreen::heightChanged, this, &QMLScreen::viewSizeChanged);
+-}
+-
+-QMLScreen::~QMLScreen()
+-{
+-    qDeleteAll(m_outputMap);
+-    m_outputMap.clear();
+-}
+-
+-KScreen::ConfigPtr QMLScreen::config() const
+-{
+-    return m_config;
+-}
+-
+-void QMLScreen::setConfig(const KScreen::ConfigPtr &config)
+-{
+-    qDeleteAll(m_outputMap);
+-    m_outputMap.clear();
+-    m_manuallyMovedOutputs.clear();
+-    m_bottommost = m_leftmost = m_rightmost = m_topmost = nullptr;
+-    m_connectedOutputsCount = 0;
+-    m_enabledOutputsCount = 0;
+-
+-    if (m_config) {
+-        m_config->disconnect(this);
+-    }
+-
+-    m_config = config;
+-    connect(m_config.data(), &KScreen::Config::outputAdded,
+-            this, [this](const KScreen::OutputPtr &output) {
+-            addOutput(output);
+-            m_manuallyMovedOutputs.clear();
+-            updateOutputsPlacement();
+-            enableChangedSlot();
+-    });
+-    connect(m_config.data(), &KScreen::Config::outputRemoved,
+-            this, &QMLScreen::removeOutput);
+-
+-    for (const KScreen::OutputPtr &output : m_config->outputs()) {
+-        addOutput(output);
+-    }
+-
+-    updateOutputsPlacement();
+-
+-    for (QMLOutput *qmlOutput : m_outputMap) {
+-        if (qmlOutput->output()->isConnected() && qmlOutput->output()->isEnabled()) {
+-            qmlOutput->dockToNeighbours();
+-        }
+-    }
+-}
+-
+-void QMLScreen::addOutput(const KScreen::OutputPtr &output)
+-{
+-    QMLOutputComponent comp(qmlEngine(this), this);
+-
+-    QMLOutput *qmloutput = comp.createForOutput(output);
+-    if (!qmloutput) {
+-        qWarning() << "Failed to create QMLOutput";
+-        return;
+-    }
+-
+-    m_outputMap.insert(output, qmloutput);
+-
+-    qmloutput->setParentItem(this);
+-    qmloutput->setZ(m_outputMap.count());
+-
+-    connect(output.data(), &KScreen::Output::isConnectedChanged,
+-            this, &QMLScreen::outputConnectedChanged);
+-    connect(output.data(), &KScreen::Output::isEnabledChanged,
+-            this, &QMLScreen::outputEnabledChanged);
+-    connect(output.data(), &KScreen::Output::posChanged,
+-            this, &QMLScreen::outputPositionChanged);
+-    connect(qmloutput, &QMLOutput::yChanged,
+-            [this, qmloutput]() {
+-        qmlOutputMoved(qmloutput);
+-    });
+-    connect(qmloutput, &QMLOutput::xChanged,
+-            [this, qmloutput]() {
+-        qmlOutputMoved(qmloutput);
+-    });
+-    // 在这里点击上面小屏幕
+-    connect(qmloutput, SIGNAL(clicked()),
+-            this, SLOT(setActiveOutput()));
+-
+-    connect(qmloutput, SIGNAL(mouseReleased(bool)),
+-            this, SLOT(setScreenPos(bool)));
+-
+-    connect(qmloutput, SIGNAL(rotationChanged(bool)),
+-            this, SLOT(setScreenPos(bool)));
+-
+-    connect(qmloutput, SIGNAL(widthChanged(bool)),
+-            this, SLOT(setScreenPos(bool)));
+-
+-    connect(qmloutput, SIGNAL(heightChanged(bool)),
+-            this, SLOT(setScreenPos(bool)));
+-
+-    // bug#65441
+-    // qmloutput->updateRootProperties();
+-}
+-
+-void QMLScreen::removeOutput(int outputId)
+-{
+-    for (const KScreen::OutputPtr &output : m_outputMap.keys()) {
+-        if (output->id() == outputId) {
+-            QMLOutput *qmlOutput = m_outputMap.take(output);
+-            qmlOutput->setParentItem(nullptr);
+-            qmlOutput->setParent(nullptr);
+-            // TODO:bug51346
+-            // qmlOutput->deleteLater();
+-            return;
+-        }
+-    }
+-    enableChangedSlot();
+-}
+-
+-int QMLScreen::connectedOutputsCount() const
+-{
+-    return m_connectedOutputsCount;
+-}
+-
+-int QMLScreen::enabledOutputsCount() const
+-{
+-    return m_enabledOutputsCount;
+-}
+-
+-QMLOutput *QMLScreen::primaryOutput() const
+-{
+-    Q_FOREACH (QMLOutput *qmlOutput, m_outputMap) {
+-        if (qmlOutput->output()->isPrimary()) {
+-            return qmlOutput;
+-        }
+-    }
+-
+-    return nullptr;
+-}
+-
+-QList<QMLOutput *> QMLScreen::outputs() const
+-{
+-    return m_outputMap.values();
+-}
+-
+-void QMLScreen::setActiveOutput(QMLOutput *output)
+-{
+-    output->setPosClicked(output->position());
+-    Q_FOREACH (QMLOutput *qmlOutput, m_outputMap) {
+-        if (qmlOutput->z() > output->z()) {
+-            qmlOutput->setZ(qmlOutput->z() - 1);
+-        }
+-    }
+-
+-    output->setZ(m_outputMap.count());
+-    // 中屏幕
+-    output->setFocus(true);
+-    Q_EMIT focusedOutputChanged(output);
+-}
+-
+-void QMLScreen::setScreenCenterPos()
+-{
+-    // 组成最大矩形四个边的位置,分别对应左上(1),右下(2)的xy坐标值
+-    qreal localX1 = -1, localX2 = -1, localY1 = -1, localY2 = -1;
+-    qreal mX1 = 0, mY1 = 0, mX2 = 0, mY2 = 0; // 矩形中点坐标
+-    qreal moveX = 0, moveY = 0;// 移动的值
+-    bool firstFlag = true;
+-    bool unifyFlag = false;
+-    Q_FOREACH (QMLOutput *qmlOutput, m_outputMap) {
+-        if (qmlOutput->output()->isConnected()) {
+-            if (qmlOutput->isCloneMode()) {
+-                localX1 = qmlOutput->x();
+-                localX2 = qmlOutput->x() + qmlOutput->width();
+-                localY1 = qmlOutput->y();
+-                localY2 = qmlOutput->y() + qmlOutput->height();
+-                unifyFlag = true;
+-                break;
+-            }
+-
+-            if (firstFlag == true || localX1 > qmlOutput->x()) {
+-                localX1 = qmlOutput->x();
+-            }
+-            if (firstFlag == true || localX2 < qmlOutput->x() + qmlOutput->width()) {
+-                localX2 = qmlOutput->x() + qmlOutput->width();
+-            }
+-            if (firstFlag == true || localY1 > qmlOutput->y()) {
+-                localY1 = qmlOutput->y();
+-            }
+-            if (firstFlag == true || localY2 < qmlOutput->y() + qmlOutput->height()) {
+-                localY2 = qmlOutput->y() + qmlOutput->height();
+-            }
+-            firstFlag = false;
+-        }
+-    }
+-
+-    mX1 = localX1 + (localX2-localX1)/2;
+-    mY1 = localY1 + (localY2-localY1)/2;
+-
+-    mX2 = (width() - (localX2 - localX1))/2 + (localX2-localX1)/2;
+-    mY2 = (height() - (localY2 - localY1))/2 + (localY2-localY1)/2;
+-
+-    moveX = mX2 - mX1;
+-    moveY = mY2 - mY1;
+-
+-    Q_FOREACH (QMLOutput *qmlOutput, m_outputMap) {
+-        if (false == unifyFlag) {
+-            qmlOutput->setX(qmlOutput->x() + moveX);
+-            qmlOutput->setY(qmlOutput->y() + moveY);
+-        } else {
+-            if (qmlOutput->isCloneMode()) {
+-                qmlOutput->blockSignals(true);
+-                qmlOutput->setX(qmlOutput->x() + moveX);
+-                qmlOutput->setY(qmlOutput->y() + moveY);
+-                qmlOutput->blockSignals(false);
+-                break;
+-            }
+-        }
+-    }
+-}
+-
+-void QMLScreen::setScreenPosCenter(QMLOutput *output, bool isReleased)
+-{
+-    if (output == nullptr) {
+-        return;
+-    }
+-    QPointF posBefore = output->posClicked();
+-    if ((output->outputPtr()->rotation() == KScreen::Output::Left || output->outputPtr()->rotation() == KScreen::Output::Right)
+-            && (output->width() > output->height())) {
+-        qreal fwidth = output->size().width();
+-        qreal fheight = output->size().height();
+-        output->setSize(QSizeF(fheight, fwidth));
+-    }
+-    // 镜像模式下跳过屏幕旋转处理
+-    if (this->primaryOutput() && isCloneMode()) {
+-        return;
+-    }
+-
+-    qreal x1 = 0, y1 = 0;
+-    qreal width1 = 0, height1 = 0;
+-    qreal x2 = 0, y2 = 0;
+-    qreal width2 = 0, height2 = 0;
+-
+-    x1 = output->x();
+-    y1 = output->y();
+-    width1 = output->width();
+-    height1 = output->height();
+-
+-    int connectedScreen = 0;
+-
+-    QMLOutput *other = NULL;
+-    Q_FOREACH (QMLOutput *qmlOutput, m_outputMap) {
+-        if (qmlOutput->output()->isConnected()) {
+-            connectedScreen++;
+-        }
+-        if (qmlOutput != output && qmlOutput->output()->isConnected()) {
+-            other = qmlOutput;
+-            x2 = other->x();
+-            y2 = other->y();
+-            if ((other->outputPtr()->rotation() == KScreen::Output::Left || other->outputPtr()->rotation() == KScreen::Output::Right) &&
+-                    (other->width() >  other->height())) {
+-                qreal swidth = qmlOutput->width();
+-                qreal sheigth = qmlOutput->height();
+-                qmlOutput->setSize(QSizeF(sheigth, swidth));
+-            }
+-            width2 = other->width();
+-            height2 = other->height();
+-        }
+-    }
+-
+-    // 坐标为负的情况,bug#76350
+-    if (x1 < 0 || y1 < 0 || x2 < 0 || y2 < 0) {
+-        return;
+-    }
+-
+-    if (connectedScreen < 2) {
+-        setScreenCenterPos();
+-        return;
+-    }
+-
+-    if (!((x1 + width1 == x2)
+-          || (y1 == y2 + height2)
+-          || (x1 == x2 + width2)
+-          || (y1 + height1 == y2))) {
+-        if (x1 + width1 < x2) {
+-            output->setX(x2 - width1);
+-            output->setY(y2);
+-        } else if (y1 > y2 + height2) {
+-            output->setX(x2);
+-            output->setY(y2 + height2);
+-        } else if (x1 > x2 + width2) {
+-            output->setX(x2 + width2);
+-            output->setY(y2);
+-        } else if (y1 + height1 < y2) {
+-            output->setX(x2);
+-            output->setY(y2 - height1);
+-        }
+-
+-
+-
+-        // 矩形是否相交
+-        if (!(x1 + width1 <= x2 || x2 + width2 <= x1
+-              || y1 >= y2 +height2 || y2 >= y1 + height1)
+-            && (x1 != x2 || y1 != y2) && other != NULL
+-            && other->output()->isConnected()) {
+-            if ((x1 + width1 > x2) && (x1 < x2)) {
+-                output->setX(x2 - width1);
+-            } else if ((x1 < x2 + width2) && (x1 + width1 > x2 + width2)) {
+-                output->setX(x2 + width2);
+-            } else if ((y1 + height() > y2) && (y1 < y2 + height2)) {
+-                output->setY(y2 - height1);
+-            } else if ((y1 < y2  + height2) && (y1 + height1 > y2 + height2)) {
+-                output->setY(y2 + height2);
+-            }
+-        }
+-    }
+-
+-    setScreenCenterPos();
+-    QPointF posAfter = output->position();
+-    if (isReleased && (posBefore != posAfter)) {
+-        Q_EMIT released();
+-    }
+-}
+-
+-void QMLScreen::setActiveOutputByCombox(int screenId)
+-{
+-    QHash<KScreen::OutputPtr, QMLOutput *>::const_iterator it = m_outputMap.constBegin();
+-    while (it != m_outputMap.constEnd()) {
+-        if (screenId == it.key()->id()) {
+-            setActiveOutput(it.value());
+-            return;
+-        }
+-        it++;
+-    }
+-}
+-
+-void QMLScreen::enableChangedSlot()
+-{
+-    int count = 0;
+-    for (KScreen::OutputPtr output : m_config->connectedOutputs()) {
+-        if (output->isEnabled()) {
+-            count++;
+-        }
+-    }
+-
+-    Q_FOREACH (QQuickItem *item, childItems()) {
+-        QMLOutput *qmlOutput = qobject_cast<QMLOutput *>(item);
+-        qmlOutput->setEnableCount(count);
+-    }
+-}
+-
+-QSize QMLScreen::maxScreenSize() const
+-{
+-    return m_config->screen()->maxSize();
+-}
+-
+-float QMLScreen::outputScale() const
+-{
+-    return m_outputScale;
+-}
+-
+-void QMLScreen::outputConnectedChanged()
+-{
+-    int connectedCount = 0;
+-
+-    Q_FOREACH (const KScreen::OutputPtr &output, m_outputMap.keys()) {
+-        if (output->isConnected()) {
+-            ++connectedCount;
+-        }
+-    }
+-
+-    if (connectedCount != m_connectedOutputsCount) {
+-        m_connectedOutputsCount = connectedCount;
+-        Q_EMIT connectedOutputsCountChanged();
+-        updateOutputsPlacement();
+-    }
+-}
+-
+-void QMLScreen::outputEnabledChanged()
+-{
+-    const KScreen::OutputPtr output(qobject_cast<KScreen::Output *>(sender()), [](void *){});
+-
+-    int enabledCount = 0;
+-
+-    Q_FOREACH (const KScreen::OutputPtr &output, m_outputMap.keys()) {
+-        if (output->isEnabled()) {
+-            ++enabledCount;
+-        }
+-    }
+-
+-    if (enabledCount == m_enabledOutputsCount) {
+-        m_enabledOutputsCount = enabledCount;
+-        Q_EMIT enabledOutputsCountChanged();
+-    }
+-}
+-
+-void QMLScreen::outputPositionChanged()
+-{
+-    /* TODO: Reposition the QMLOutputs */
+-}
+-
+-void QMLScreen::qmlOutputMoved(QMLOutput *qmlOutput)
+-{
+-    if (qmlOutput->isCloneMode()) {
+-        return;
+-    }
+-
+-    if (!m_manuallyMovedOutputs.contains(qmlOutput))
+-        m_manuallyMovedOutputs.append(qmlOutput);
+-
+-    updateCornerOutputs();
+-
+-    if (m_leftmost) {
+-        m_leftmost->setOutputX(0);
+-    }
+-    if (m_topmost) {
+-        m_topmost->setOutputY(0);
+-    }
+-
+-    if (qmlOutput == m_leftmost) {
+-        Q_FOREACH (QMLOutput *other, m_outputMap) {
+-            if (other == m_leftmost) {
+-                continue;
+-            }
+-
+-            if (!other->output()->isConnected() || !other->output()->isEnabled()) {
+-                continue;
+-            }
+-
+-            other->setOutputX(float(other->x() - m_leftmost->x()) / outputScale());
+-        }
+-    } else if (m_leftmost) {
+-        qmlOutput->setOutputX(float(qmlOutput->x() - m_leftmost->x()) / outputScale());
+-    }
+-
+-    if (qmlOutput == m_topmost) {
+-        Q_FOREACH (QMLOutput *other, m_outputMap) {
+-            if (other == m_topmost) {
+-                continue;
+-            }
+-
+-            if (!other->output()->isConnected() || !other->output()->isEnabled()) {
+-                continue;
+-            }
+-
+-            other->setOutputY(float(other->y() - m_topmost->y()) / outputScale());
+-        }
+-    } else if (m_topmost) {
+-        qmlOutput->setOutputY(float(qmlOutput->y() - m_topmost->y()) / outputScale());
+-    }
+-}
+-
+-void QMLScreen::viewSizeChanged()
+-{
+-    updateOutputsPlacement();
+-    setScreenCenterPos();
+-}
+-
+-void QMLScreen::updateCornerOutputs()
+-{
+-    m_leftmost = nullptr;
+-    m_topmost = nullptr;
+-    m_rightmost = nullptr;
+-    m_bottommost = nullptr;
+-
+-    Q_FOREACH (QMLOutput *output, m_outputMap) {
+-        if (!output->output()->isConnected() || !output->output()->isEnabled()) {
+-            continue;
+-        }
+-
+-        QMLOutput *other = m_leftmost;
+-        if (!other || output->x() < other->x()) {
+-            m_leftmost = output;
+-        }
+-
+-        if (!other || output->y() < other->y()) {
+-            m_topmost = output;
+-        }
+-
+-        if (!other || output->x() + output->width() > other->x() + other->width()) {
+-            m_rightmost = output;
+-        }
+-
+-        if (!other || output->y() + output->height() > other->y() + other->height()) {
+-            m_bottommost = output;
+-        }
+-    }
+-}
+-
+-void QMLScreen::setOutputScale(float scale)
+-{
+-    if (qFuzzyCompare(scale, m_outputScale))
+-        return;
+-    m_outputScale = scale;
+-    emit outputScaleChanged();
+-}
+-
+-bool QMLScreen::isCloneMode()
+-{
+-    KScreen::OutputPtr output = m_config->primaryOutput();
+-    if (m_config->connectedOutputs().count() >= 2) {
+-        foreach (KScreen::OutputPtr secOutput, m_config->connectedOutputs()) {
+-            if (secOutput->geometry() != output->geometry() || !secOutput->isEnabled()) {
+-                return false;
+-            }
+-        }
+-    } else {
+-        return false;
+-    }
+-    return true;
+-}
+-
+-// 画坐标
+-void QMLScreen::updateOutputsPlacement()
+-{
+-    if (width() <= 0)
+-        return;
+-
+-    QSizeF initialActiveScreenSize;
+-
+-    Q_FOREACH (QQuickItem *item, childItems()) {
+-        QMLOutput *qmlOutput = qobject_cast<QMLOutput *>(item);
+-        if (!qmlOutput->output()->isConnected() || !qmlOutput->output()->isEnabled()) {
+-            continue;
+-        }
+-
+-        if (qmlOutput->outputX() + qmlOutput->currentOutputWidth()
+-            > initialActiveScreenSize.width()) {
+-            initialActiveScreenSize.setWidth(qmlOutput->outputX()
+-                                             + qmlOutput->currentOutputWidth());
+-        }
+-        if (qmlOutput->outputY() + qmlOutput->currentOutputHeight()
+-            > initialActiveScreenSize.height()) {
+-            initialActiveScreenSize.setHeight(
+-                qmlOutput->outputY() + qmlOutput->currentOutputHeight());
+-        }
+-    }
+-
+-    auto initialScale = outputScale();
+-
+-    auto scale = initialScale;
+-    qreal lastX = -1.0;
+-    int enableCount;
+-    do {
+-        auto activeScreenSize = initialActiveScreenSize * scale;
+-
+-        const QPointF offset((width() - activeScreenSize.width()) / 2.0,
+-                             (height() - activeScreenSize.height()) / 2.0);
+-
+-        lastX = -1.0;
+-        qreal lastY = -1.0;
+-        enableCount = 0;
+-        Q_FOREACH (QQuickItem *item, childItems()) {
+-            QMLOutput *qmlOutput = qobject_cast<QMLOutput *>(item);
+-            if (m_config->connectedOutputs().count() >= 2 && qmlOutput->outputPtr()->isEnabled()) {
+-                enableCount++;
+-            }
+-            // 连接
+-            if ((!qmlOutput->output()->isConnected() || !qmlOutput->output()->isEnabled()
+-                    || m_manuallyMovedOutputs.contains(qmlOutput)) && !qmlOutput->isCloneMode()) {
+-                continue;
+-            }
+-
+-            qmlOutput->blockSignals(true);
+-            qmlOutput->setPosition(QPointF(offset.x() + (qmlOutput->outputX() * scale),
+-                                           offset.y() + (qmlOutput->outputY() * scale)));
+-            lastX = qMax(lastX,
+-                         qmlOutput->position().x() + qmlOutput->width() / initialScale * scale);
+-            lastY = qMax(lastY, qmlOutput->position().y());
+-            qmlOutput->blockSignals(false);
+-        }
+-
+-        Q_FOREACH (QQuickItem *item, childItems()) {
+-            QMLOutput *qmlOutput = qobject_cast<QMLOutput *>(item);
+-            if (qmlOutput->output()->isConnected() && !qmlOutput->output()->isEnabled()
+-                && !m_manuallyMovedOutputs.contains(qmlOutput)) {
+-                qmlOutput->blockSignals(true);
+-                qmlOutput->setPosition(QPointF(lastX, lastY));
+-                lastX += qmlOutput->width() / initialScale * scale;
+-                qmlOutput->blockSignals(false);
+-            }
+-        }
+-        // calculate the scale dynamically, so all screens fit to the dialog
+-        if (lastX > width()) {
+-            scale *= 0.8;
+-        }
+-    } while (lastX > width());
+-
+-    if (enableCount == 1) {
+-        setPosByConfig();
+-    }
+-
+-    // Use a timer to avoid binding loop on width()
+-    QTimer::singleShot(0, this, [scale, this] {
+-        setOutputScale(scale);
+-    });
+-}
+-
+-void QMLScreen::setPosByConfig()
+-{
+-    if (!m_config.isNull()) {
+-
+-        QDBusInterface mUkccInterface("org.ukui.ukcc.session",
+-                                       "/",
+-                                       "org.ukui.ukcc.session.interface",
+-                                       QDBusConnection::sessionBus());
+-
+-        QDBusMessage msg = mUkccInterface.call("getPreScreenCfg");
+-        if (msg.type() == QDBusMessage::ErrorMessage) {
+-            qWarning() << "get pre screen cfg failed";
+-        }
+-        QDBusArgument argument = msg.arguments().at(0).value<QDBusArgument>();
+-        QList<QVariant> infos;
+-        argument >> infos;
+-
+-        QList<QPointF> qmlScreens;
+-        QList<ScreenConfig> preScreenCfg;
+-
+-
+-        QList<QPoint> points;
+-        for (int i = 0; i < infos.size(); i++) {
+-            ScreenConfig cfg;
+-            infos.at(i).value<QDBusArgument>() >> cfg;
+-            preScreenCfg.append(cfg);
+-            // 坐标相同不做处理
+-            if (points.contains(QPoint(cfg.screenPosX, cfg.screenPosY))) {
+-                return;
+-            }
+-            points.append(QPoint(cfg.screenPosX, cfg.screenPosY));
+-        }
+-
+-        // 配置文件为空跳过处理
+-        if (preScreenCfg.isEmpty()) {
+-            return;
+-        }
+-
+-        std::sort(preScreenCfg.begin(), preScreenCfg.end(), sizeLessThan);
+-
+-        Q_FOREACH (QQuickItem *item, childItems()) {
+-            QMLOutput *qmlOutput = qobject_cast<QMLOutput *>(item);
+-            qmlScreens.append(qmlOutput->position());
+-        }
+-        std::sort(qmlScreens.begin(), qmlScreens.end(), sizeLessThanQml);
+-
+-        QMLOutput *adjustOutput;
+-        for (int i = 0; i < preScreenCfg.count(); i++) {
+-            for (int j = 0; j < childItems().count(); j++) {
+-                QMLOutput *qmlOutput = qobject_cast<QMLOutput *>(childItems().at(j));
+-                if (qmlOutput != nullptr) {
+-                    adjustOutput = qmlOutput;
+-                }
+-
+-                if (!qmlOutput->outputPtr()->name().compare(preScreenCfg.at(i).screenId)) {
+-                    qmlOutput->blockSignals(true);
+-                    qmlOutput->setPosition(qmlScreens.at(i));
+-                    qmlOutput->blockSignals(false);
+-                }
+-            }
+-        }
+-
+-        setScreenPosCenter(adjustOutput, false);
+-    }
+-}
+diff --git a/plugins/system/display_hw/declarative/qmlscreen.h b/plugins/system/display_hw/declarative/qmlscreen.h
+deleted file mode 100644
+index 66f4b7a..0000000
+--- a/plugins/system/display_hw/declarative/qmlscreen.h
++++ /dev/null
+@@ -1,133 +0,0 @@
+-/*
+-    Copyright (C) 2012  Dan Vratil <dvratil@redhat.com>
+-
+-    This library is free software; you can redistribute it and/or
+-    modify it under the terms of the GNU Lesser General Public
+-    License as published by the Free Software Foundation; either
+-    version 2.1 of the License, or (at your option) any later version.
+-
+-    This library 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
+-    Lesser General Public License for more details.
+-
+-    You should have received a copy of the GNU Lesser General Public
+-    License along with this library; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+-*/
+-
+-#ifndef QMLSCREEN_H
+-#define QMLSCREEN_H
+-
+-#include <QQuickItem>
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-#include "qmloutput.h"
+-
+-class QQmlEngine;
+-
+-namespace KScreen {
+-class Output;
+-class Config;
+-}
+-
+-class QMLScreen : public QQuickItem
+-{
+-    Q_OBJECT
+-
+-    Q_PROPERTY(QSize maxScreenSize
+-               READ maxScreenSize
+-               CONSTANT)
+-
+-    Q_PROPERTY(int connectedOutputsCount
+-               READ connectedOutputsCount
+-               NOTIFY connectedOutputsCountChanged)
+-
+-    Q_PROPERTY(int enabledOutputsCount
+-               READ enabledOutputsCount
+-               NOTIFY enabledOutputsCountChanged)
+-
+-    Q_PROPERTY(float outputScale
+-               READ outputScale
+-               NOTIFY outputScaleChanged)
+-
+-public:
+-    explicit QMLScreen(QQuickItem *parent = nullptr);
+-    ~QMLScreen() override;
+-
+-    int connectedOutputsCount() const;
+-    int enabledOutputsCount() const;
+-
+-    QMLOutput *primaryOutput() const;
+-    QList<QMLOutput*> outputs() const;
+-
+-    QSize maxScreenSize() const;
+-
+-    float outputScale() const;
+-
+-    KScreen::ConfigPtr config() const;
+-    void setConfig(const KScreen::ConfigPtr &config);
+-
+-    void updateOutputsPlacement();
+-    void setPosByConfig();
+-
+-    void setActiveOutput(QMLOutput *output);
+-
+-    void setScreenPosCenter(QMLOutput *output, bool isReleased);
+-
+-    void setScreenCenterPos();
+-public Q_SLOTS:
+-    void setActiveOutput()
+-    {
+-        setActiveOutput(qobject_cast<QMLOutput *>(sender()));
+-    }
+-
+-    void setActiveOutputByCombox(int screenId);
+-    void setScreenPos(bool isReleased)
+-    {
+-        setScreenPosCenter(qobject_cast<QMLOutput*>(sender()), isReleased);
+-    }
+-
+-    // 是否禁用小屏幕拖动
+-    void enableChangedSlot();
+-
+-Q_SIGNALS:
+-    void connectedOutputsCountChanged();
+-    void enabledOutputsCountChanged();
+-
+-    void outputScaleChanged();
+-
+-    void focusedOutputChanged(QMLOutput *output);
+-    void released();
+-
+-private Q_SLOTS:
+-    void addOutput(const KScreen::OutputPtr &output);
+-    void removeOutput(int outputId);
+-
+-    void outputConnectedChanged();
+-    void outputEnabledChanged();
+-    void outputPositionChanged();
+-
+-    void viewSizeChanged();
+-
+-private:
+-    void qmlOutputMoved(QMLOutput *qmlOutput);
+-    void updateCornerOutputs();
+-    void setOutputScale(float scale);
+-    bool isCloneMode();
+-
+-    KScreen::ConfigPtr m_config;
+-    QHash<KScreen::OutputPtr, QMLOutput *> m_outputMap;
+-    QVector<QMLOutput*> m_manuallyMovedOutputs;
+-    int m_connectedOutputsCount = 0;
+-    int m_enabledOutputsCount = 0;
+-
+-    float m_outputScale = 1.0 / 14.0;// 缩放比例
+-
+-    QMLOutput *m_leftmost = nullptr;
+-    QMLOutput *m_topmost = nullptr;
+-    QMLOutput *m_rightmost = nullptr;
+-    QMLOutput *m_bottommost = nullptr;
+-};
+-
+-#endif // QMLSCREEN_H
+diff --git a/plugins/system/display_hw/display_hw.cpp b/plugins/system/display_hw/display_hw.cpp
+deleted file mode 100644
+index e11f9c0..0000000
+--- a/plugins/system/display_hw/display_hw.cpp
++++ /dev/null
+@@ -1,105 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include <QtWidgets>
+-
+-#include "display_hw.h"
+-#include "ui_display_hw.h"
+-#include "ukcccommon.h"
+-using namespace ukcc;
+-
+-#include <KF5/KScreen/kscreen/getconfigoperation.h>
+-#include <KF5/KScreen/kscreen/output.h>
+-#include <QDebug>
+-#include <QDBusInterface>
+-#include <QDBusConnection>
+-
+-DisplaySet::DisplaySet() : mFirstLoad(true)
+-{
+-    pluginName = tr("Display");
+-    pluginType = SYSTEM;
+-}
+-
+-DisplaySet::~DisplaySet()
+-{
+-}
+-
+-QString DisplaySet::plugini18nName()
+-{
+-    return pluginName;
+-}
+-
+-int DisplaySet::pluginTypes()
+-{
+-    return pluginType;
+-}
+-
+-QWidget *DisplaySet::pluginUi()
+-{
+-    if (mFirstLoad) {
+-        requestBackend();
+-        mFirstLoad = false;
+-        pluginWidget = new Widget;
+-        pluginWidget->adjustSize();
+-        QObject::connect(new KScreen::GetConfigOperation(), &KScreen::GetConfigOperation::finished,
+-                         [&](KScreen::ConfigOperation *op) {
+-            pluginWidget->setConfig(qobject_cast<KScreen::GetConfigOperation *>(op)->config(), true);
+-        });
+-    }
+-    return pluginWidget;
+-}
+-
+-const QString DisplaySet::name() const
+-{
+-    return QStringLiteral("Display");
+-}
+-
+-bool DisplaySet::isShowOnHomePage() const
+-{
+-    return UkccCommon::isWayland();
+-}
+-
+-QIcon DisplaySet::icon() const
+-{
+-    return QIcon::fromTheme("system-computer-symbolic");
+-}
+-
+-bool DisplaySet::isEnable() const
+-{
+-    return UkccCommon::isWayland();
+-}
+-
+-void DisplaySet::requestBackend()
+-{
+-    QDBusInterface screenIft("org.kde.KScreen",
+-                             "/",
+-                             "org.kde.KScreen",
+-                             QDBusConnection::sessionBus());
+-    if (!screenIft.isValid()) {
+-        QProcess process;
+-        process.start("uname -m");
+-        process.waitForFinished();
+-        QString output = process.readAll();
+-        output = output.simplified();
+-
+-        QString command = "/usr/lib/" + output + "-linux-gnu"
+-                          +"/libexec/kf5/kscreen_backend_launcher";
+-        QProcess::startDetached(command);
+-    }
+-}
+diff --git a/plugins/system/display_hw/display_hw.h b/plugins/system/display_hw/display_hw.h
+deleted file mode 100644
+index 6ca40d4..0000000
+--- a/plugins/system/display_hw/display_hw.h
++++ /dev/null
+@@ -1,64 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef DISPLAYSET_H
+-#define DISPLAYSET_H
+-
+-#include <QObject>
+-#include <QtPlugin>
+-
+-#include <QGSettings>
+-
+-#include "shell/interface.h"
+-#include "widget.h"
+-
+-namespace Ui {
+-class DisplayWindow;
+-}
+-
+-class DisplaySet : public QObject, CommonInterface
+-{
+-    Q_OBJECT
+-    Q_PLUGIN_METADATA(IID "org.kycc.CommonInterface")
+-    Q_INTERFACES(CommonInterface)
+-
+-public:
+-    DisplaySet();
+-    ~DisplaySet();
+-
+-    QString plugini18nName()      Q_DECL_OVERRIDE;
+-    int pluginTypes()             Q_DECL_OVERRIDE;
+-    QWidget *pluginUi()           Q_DECL_OVERRIDE;
+-    const QString name() const    Q_DECL_OVERRIDE;
+-    bool isShowOnHomePage() const Q_DECL_OVERRIDE;
+-    QIcon icon() const            Q_DECL_OVERRIDE;
+-    bool isEnable() const         Q_DECL_OVERRIDE;
+-
+-private:
+-    void requestBackend();
+-private:
+-    Ui::DisplayWindow *ui;
+-    QString pluginName;
+-    int pluginType;
+-    Widget *pluginWidget;
+-
+-    bool mFirstLoad;
+-};
+-
+-#endif // DISPLAYSET_H
+diff --git a/plugins/system/display_hw/display_hw.pro b/plugins/system/display_hw/display_hw.pro
+deleted file mode 100644
+index b1f341d..0000000
+--- a/plugins/system/display_hw/display_hw.pro
++++ /dev/null
+@@ -1,70 +0,0 @@
+-#-------------------------------------------------
+-#
+-# Project created by QtCreator 2019-02-20T15:36:43
+-#
+-#-------------------------------------------------
+-include(../../../env.pri)
+-include($$PROJECT_ROOTDIR/libukcc/interface.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/Uslider/uslider.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/CloseButton/closebutton.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/ComboBox/combobox.pri)
+-
+-QT            += widgets core gui quickwidgets quick xml KScreen  dbus concurrent KConfigCore
+-TEMPLATE = lib
+-CONFIG        += c++11   link_pkgconfig plugin
+-
+-TARGET = $$qtLibraryTarget(display_hw)
+-DESTDIR = ../..
+-target.path = $${PLUGIN_INSTALL_DIRS}
+-INSTALLS += target
+-
+-INCLUDEPATH   +=  \
+-                 $$PROJECT_ROOTDIR \
+-
+-LIBS          += -L$$[QT_INSTALL_LIBS] -lgsettings-qt
+-
+-PKGCONFIG += gsettings-qt     \
+-             kysdk-qtwidgets
+-
+-QMAKE_CXXFLAGS *= -D_FORTIFY_SOURCE=2 -O2
+-
+-SOURCES += \
+-    brightnessFrame.cpp \
+-    declarative/qmloutput.cpp \
+-    declarative/qmloutputcomponent.cpp \
+-    declarative/qmlscreen.cpp \
+-    controlpanel.cpp \
+-    display_hw.cpp \
+-    outputconfig.cpp \
+-    resolutionslider.cpp \
+-    unifiedoutputconfig.cpp \
+-    utils.cpp \
+-    widget.cpp \
+-    displayperformancedialog.cpp
+-
+-HEADERS += \
+-    brightnessFrame.h \
+-    colorinfo.h \
+-    declarative/qmloutput.h \
+-    declarative/qmloutputcomponent.h \
+-    declarative/qmlscreen.h \
+-    controlpanel.h \
+-    display_hw.h \
+-    outputconfig.h \
+-    resolutionslider.h \
+-    scalesize.h \
+-    unifiedoutputconfig.h \
+-    utils.h \
+-    widget.h \
+-    displayperformancedialog.h
+-
+-FORMS += \
+-    display_hw.ui \
+-    displayperformancedialog.ui
+-
+-#DISTFILES += \
+-#    qml/main.qml \
+-#    qml/Output.qml
+-
+-RESOURCES += \
+-    qml.qrc
+diff --git a/plugins/system/display_hw/display_hw.ui b/plugins/system/display_hw/display_hw.ui
+deleted file mode 100644
+index 3d62dce..0000000
+--- a/plugins/system/display_hw/display_hw.ui
++++ /dev/null
+@@ -1,931 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>DisplayWindow</class>
+- <widget class="QWidget" name="DisplayWindow">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>945</width>
+-    <height>1260</height>
+-   </rect>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Form</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_5">
+-   <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>
+-    <widget class="TitleLabel" name="titleLabel">
+-     <property name="text">
+-      <string>Display</string>
+-     </property>
+-    </widget>
+-   </item>
+-   <item>
+-    <spacer name="verticalSpacer_2">
+-     <property name="orientation">
+-      <enum>Qt::Vertical</enum>
+-     </property>
+-     <property name="sizeType">
+-      <enum>QSizePolicy::Fixed</enum>
+-     </property>
+-     <property name="sizeHint" stdset="0">
+-      <size>
+-       <width>12</width>
+-       <height>12</height>
+-      </size>
+-     </property>
+-    </spacer>
+-   </item>
+-   <item>
+-    <widget class="QFrame" name="mainframe">
+-     <property name="minimumSize">
+-      <size>
+-       <width>550</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>16777215</width>
+-       <height>16777215</height>
+-      </size>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::Box</enum>
+-     </property>
+-     <layout class="QHBoxLayout" name="horizontalLayout_3">
+-      <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>
+-       <widget class="QQuickWidget" name="quickWidget">
+-        <property name="minimumSize">
+-         <size>
+-          <width>550</width>
+-          <height>300</height>
+-         </size>
+-        </property>
+-        <property name="maximumSize">
+-         <size>
+-          <width>16777215</width>
+-          <height>300</height>
+-         </size>
+-        </property>
+-       </widget>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="verticalLayout_3">
+-     <property name="spacing">
+-      <number>2</number>
+-     </property>
+-     <item>
+-      <widget class="QFrame" name="screenframe">
+-       <property name="minimumSize">
+-        <size>
+-         <width>550</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>16777215</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::Box</enum>
+-       </property>
+-       <layout class="QHBoxLayout" name="horizontalLayout">
+-        <item>
+-         <widget class="QLabel" name="primaryLabel">
+-          <property name="minimumSize">
+-           <size>
+-            <width>118</width>
+-            <height>30</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>118</width>
+-            <height>30</height>
+-           </size>
+-          </property>
+-          <property name="text">
+-           <string>monitor</string>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="QComboBox" name="primaryCombo">
+-          <property name="minimumSize">
+-           <size>
+-            <width>200</width>
+-            <height>0</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>30</height>
+-           </size>
+-          </property>
+-          <property name="styleSheet">
+-           <string notr="true"/>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="QPushButton" name="mainScreenButton">
+-          <property name="minimumSize">
+-           <size>
+-            <width>120</width>
+-            <height>30</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>150</width>
+-            <height>30</height>
+-           </size>
+-          </property>
+-          <property name="font">
+-           <font>
+-            <pointsize>11</pointsize>
+-           </font>
+-          </property>
+-          <property name="focusPolicy">
+-           <enum>Qt::NoFocus</enum>
+-          </property>
+-          <property name="text">
+-           <string>as main</string>
+-          </property>
+-         </widget>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-     <item>
+-      <layout class="QVBoxLayout" name="controlPanelLayout">
+-       <property name="spacing">
+-        <number>1</number>
+-       </property>
+-       <property name="sizeConstraint">
+-        <enum>QLayout::SetNoConstraint</enum>
+-       </property>
+-      </layout>
+-     </item>
+-     <item>
+-      <widget class="QFrame" name="frame">
+-       <property name="minimumSize">
+-        <size>
+-         <width>550</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>16777215</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::Box</enum>
+-       </property>
+-       <property name="frameShadow">
+-        <enum>QFrame::Raised</enum>
+-       </property>
+-       <layout class="QHBoxLayout" name="horizontalLayout_4">
+-        <item>
+-         <widget class="QLabel" name="scaleLabel">
+-          <property name="minimumSize">
+-           <size>
+-            <width>118</width>
+-            <height>30</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>118</width>
+-            <height>30</height>
+-           </size>
+-          </property>
+-          <property name="text">
+-           <string>screen zoom</string>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="QComboBox" name="scaleCombo">
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>30</height>
+-           </size>
+-          </property>
+-         </widget>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-     <item>
+-      <widget class="QFrame" name="showMonitorframe">
+-       <property name="enabled">
+-        <bool>true</bool>
+-       </property>
+-       <property name="sizePolicy">
+-        <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-         <horstretch>0</horstretch>
+-         <verstretch>0</verstretch>
+-        </sizepolicy>
+-       </property>
+-       <property name="minimumSize">
+-        <size>
+-         <width>550</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>16777215</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::Box</enum>
+-       </property>
+-       <layout class="QHBoxLayout" name="horizontalLayout_2">
+-        <item>
+-         <layout class="QHBoxLayout" name="showScreenLayout">
+-          <item>
+-           <widget class="QLabel" name="label">
+-            <property name="minimumSize">
+-             <size>
+-              <width>118</width>
+-              <height>30</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>16777215</width>
+-              <height>30</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string>open monitor</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer_6">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>78</width>
+-              <height>29</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-     <item>
+-      <layout class="QHBoxLayout" name="advancedHorLayout">
+-       <property name="spacing">
+-        <number>0</number>
+-       </property>
+-       <property name="leftMargin">
+-        <number>9</number>
+-       </property>
+-       <property name="topMargin">
+-        <number>8</number>
+-       </property>
+-       <property name="rightMargin">
+-        <number>9</number>
+-       </property>
+-       <property name="bottomMargin">
+-        <number>32</number>
+-       </property>
+-       <item>
+-        <widget class="QPushButton" name="advancedBtn">
+-         <property name="minimumSize">
+-          <size>
+-           <width>120</width>
+-           <height>36</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>120</width>
+-           <height>36</height>
+-          </size>
+-         </property>
+-         <property name="text">
+-          <string>Advanced</string>
+-         </property>
+-        </widget>
+-       </item>
+-       <item>
+-        <spacer name="horizontalSpacer_8">
+-         <property name="orientation">
+-          <enum>Qt::Horizontal</enum>
+-         </property>
+-         <property name="sizeHint" stdset="0">
+-          <size>
+-           <width>40</width>
+-           <height>20</height>
+-          </size>
+-         </property>
+-        </spacer>
+-       </item>
+-      </layout>
+-     </item>
+-     <item>
+-      <widget class="QFrame" name="unionframe">
+-       <property name="minimumSize">
+-        <size>
+-         <width>550</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>16777215</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::Box</enum>
+-       </property>
+-       <layout class="QHBoxLayout" name="horizontalLayout_6">
+-        <item>
+-         <layout class="QHBoxLayout" name="unionLayout">
+-          <item>
+-           <widget class="QLabel" name="unifyLabel">
+-            <property name="text">
+-             <string>Mirror Display</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer_3">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>98</width>
+-              <height>17</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-    </layout>
+-   </item>
+-   <item>
+-    <widget class="QFrame" name="unifyBrightFrame">
+-     <property name="minimumSize">
+-      <size>
+-       <width>0</width>
+-       <height>106</height>
+-      </size>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::NoFrame</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_4">
+-      <property name="spacing">
+-       <number>2</number>
+-      </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>
+-       <layout class="QVBoxLayout" name="unifyBrightLayout">
+-        <property name="spacing">
+-         <number>2</number>
+-        </property>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="verticalLayout">
+-     <property name="spacing">
+-      <number>2</number>
+-     </property>
+-     <item>
+-      <widget class="QFrame" name="nightframe">
+-       <property name="minimumSize">
+-        <size>
+-         <width>550</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>16777215</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::Box</enum>
+-       </property>
+-      </widget>
+-     </item>
+-     <item>
+-      <widget class="QFrame" name="themeFrame">
+-       <property name="minimumSize">
+-        <size>
+-         <width>550</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>960</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::Box</enum>
+-       </property>
+-      </widget>
+-     </item>
+-     <item>
+-      <widget class="QFrame" name="sunframe">
+-       <property name="minimumSize">
+-        <size>
+-         <width>550</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>16777215</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::Box</enum>
+-       </property>
+-       <layout class="QHBoxLayout" name="horizontalLayout_8">
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_9">
+-          <item>
+-           <widget class="QLabel" name="label_6">
+-            <property name="minimumSize">
+-             <size>
+-              <width>118</width>
+-              <height>30</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>16777215</width>
+-              <height>30</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string>follow the sunrise and sunset(17:55-05:04)</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>40</width>
+-              <height>20</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-          <item>
+-           <widget class="QRadioButton" name="sunradioBtn">
+-            <property name="text">
+-             <string/>
+-            </property>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-     <item>
+-      <widget class="QFrame" name="customframe">
+-       <property name="minimumSize">
+-        <size>
+-         <width>550</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>16777215</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::Box</enum>
+-       </property>
+-       <layout class="QHBoxLayout" name="horizontalLayout_12">
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_13">
+-          <item>
+-           <widget class="QLabel" name="label_12">
+-            <property name="minimumSize">
+-             <size>
+-              <width>118</width>
+-              <height>30</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>16777215</width>
+-              <height>30</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string>custom time</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer_2">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>40</width>
+-              <height>20</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-          <item>
+-           <widget class="QRadioButton" name="customradioBtn">
+-            <property name="text">
+-             <string/>
+-            </property>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-     <item>
+-      <widget class="QFrame" name="opframe">
+-       <property name="minimumSize">
+-        <size>
+-         <width>550</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>16777215</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::Box</enum>
+-       </property>
+-       <layout class="QHBoxLayout" name="horizontalLayout_18">
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_19">
+-          <item>
+-           <widget class="QLabel" name="label_21">
+-            <property name="minimumSize">
+-             <size>
+-              <width>118</width>
+-              <height>30</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>16777215</width>
+-              <height>30</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string>opening time</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer_5">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>40</width>
+-              <height>20</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-          <item>
+-           <widget class="QComboBox" name="opHourCom">
+-            <property name="minimumSize">
+-             <size>
+-              <width>80</width>
+-              <height>32</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>80</width>
+-              <height>32</height>
+-             </size>
+-            </property>
+-            <property name="styleSheet">
+-             <string notr="true"/>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="QComboBox" name="opMinCom">
+-            <property name="minimumSize">
+-             <size>
+-              <width>80</width>
+-              <height>32</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>80</width>
+-              <height>32</height>
+-             </size>
+-            </property>
+-            <property name="styleSheet">
+-             <string notr="true"/>
+-            </property>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-     <item>
+-      <widget class="QFrame" name="clsframe">
+-       <property name="minimumSize">
+-        <size>
+-         <width>550</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>16777215</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::Box</enum>
+-       </property>
+-       <layout class="QHBoxLayout" name="horizontalLayout_10">
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_11">
+-          <item>
+-           <widget class="QLabel" name="label_10">
+-            <property name="text">
+-             <string>closing time</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer_7">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>40</width>
+-              <height>20</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-          <item>
+-           <widget class="QComboBox" name="clHourCom">
+-            <property name="minimumSize">
+-             <size>
+-              <width>80</width>
+-              <height>32</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>80</width>
+-              <height>32</height>
+-             </size>
+-            </property>
+-            <property name="styleSheet">
+-             <string notr="true"/>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="QComboBox" name="clMinCom">
+-            <property name="minimumSize">
+-             <size>
+-              <width>80</width>
+-              <height>32</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>80</width>
+-              <height>32</height>
+-             </size>
+-            </property>
+-            <property name="styleSheet">
+-             <string notr="true"/>
+-            </property>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-     <item>
+-      <widget class="QFrame" name="temptframe">
+-       <property name="minimumSize">
+-        <size>
+-         <width>550</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>16777215</width>
+-         <height>50</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::Box</enum>
+-       </property>
+-       <layout class="QHBoxLayout" name="horizontalLayout_16">
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_17">
+-          <item>
+-           <widget class="QLabel" name="label_18">
+-            <property name="minimumSize">
+-             <size>
+-              <width>118</width>
+-              <height>30</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>16777215</width>
+-              <height>30</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string>color temperature</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="QLabel" name="label_19">
+-            <property name="text">
+-             <string>warm</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="Uslider" name="temptSlider">
+-            <property name="sizePolicy">
+-             <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+-              <horstretch>0</horstretch>
+-              <verstretch>0</verstretch>
+-             </sizepolicy>
+-            </property>
+-            <property name="styleSheet">
+-             <string notr="true"/>
+-            </property>
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="QLabel" name="label_20">
+-            <property name="text">
+-             <string>cold</string>
+-            </property>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-    </layout>
+-   </item>
+-   <item>
+-    <layout class="QHBoxLayout" name="horizontalLayout_5">
+-     <property name="spacing">
+-      <number>6</number>
+-     </property>
+-     <property name="bottomMargin">
+-      <number>0</number>
+-     </property>
+-    </layout>
+-   </item>
+-   <item>
+-    <spacer name="verticalSpacer">
+-     <property name="orientation">
+-      <enum>Qt::Vertical</enum>
+-     </property>
+-     <property name="sizeHint" stdset="0">
+-      <size>
+-       <width>20</width>
+-       <height>40</height>
+-      </size>
+-     </property>
+-    </spacer>
+-   </item>
+-  </layout>
+-  <zorder>mainframe</zorder>
+-  <zorder>unifyBrightFrame</zorder>
+-  <zorder>titleLabel</zorder>
+- </widget>
+- <customwidgets>
+-  <customwidget>
+-   <class>QQuickWidget</class>
+-   <extends>QWidget</extends>
+-   <header location="global">QtQuickWidgets/QQuickWidget</header>
+-  </customwidget>
+-  <customwidget>
+-   <class>TitleLabel</class>
+-   <extends>QLabel</extends>
+-   <header location="global">titlelabel.h</header>
+-  </customwidget>
+-  <customwidget>
+-   <class>Uslider</class>
+-   <extends>QSlider</extends>
+-   <header>uslider.h</header>
+-  </customwidget>
+- </customwidgets>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/system/display_hw/displayperformancedialog.cpp b/plugins/system/display_hw/displayperformancedialog.cpp
+deleted file mode 100644
+index bb31e33..0000000
+--- a/plugins/system/display_hw/displayperformancedialog.cpp
++++ /dev/null
+@@ -1,213 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "displayperformancedialog.h"
+-#include "ui_displayperformancedialog.h"
+-#include "closebutton.h"
+-
+-#include <QFile>
+-#include <QDBusReply>
+-#include <QDBusInterface>
+-#include <QPainter>
+-#include <QPainterPath>
+-#include <QProcess>
+-#include <QDebug>
+-
+-#define ADVANCED_SCHEMAS "org.ukui.session.required-components"
+-#define ADVANCED_KEY "windowmanager"
+-
+-#define WM_CHOOSER_CONF "/etc/kylin-wm-chooser/default.conf"
+-#define WM_CHOOSER_CONF_TMP "/tmp/default.conf"
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-DisplayPerformanceDialog::DisplayPerformanceDialog(QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::DisplayPerformanceDialog)
+-{
+-    ui->setupUi(this);
+-
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    ui->titleLabel->setStyleSheet("QLabel{font-size: 18px; color: palette(windowText);}");
+-
+-    ui->label->setAlignment(Qt::AlignTop);
+-    ui->label_2->setAlignment(Qt::AlignTop);
+-    ui->label_3->setAlignment(Qt::AlignTop);
+-    ui->label_4->setAlignment(Qt::AlignTop);
+-    ui->label_5->setAlignment(Qt::AlignTop);
+-    ui->label_6->setAlignment(Qt::AlignTop);
+-
+-    ui->closeBtn->setIcon(QIcon("://img/titlebar/close.svg"));
+-
+-    const QByteArray id(ADVANCED_SCHEMAS);
+-    settings = new QGSettings(id);
+-
+-    confSettings = new QSettings(WM_CHOOSER_CONF, QSettings::NativeFormat);
+-
+-    setupComponent();
+-    setupConnect();
+-    initModeStatus();
+-    initThresholdStatus();
+-
+-}
+-
+-DisplayPerformanceDialog::~DisplayPerformanceDialog()
+-{
+-    delete ui;
+-    ui = nullptr;
+-    delete settings;
+-    settings = nullptr;
+-    delete confSettings;
+-    confSettings = nullptr;
+-}
+-
+-void DisplayPerformanceDialog::setupComponent(){
+-    ui->performanceRadioBtn->setProperty("wm", "mutter");
+-    ui->compatibleRadioBtn->setProperty("wm", "marco");
+-    ui->autoRadioBtn->setProperty("wm", "kylin-wm-chooser");
+-}
+-
+-void DisplayPerformanceDialog::setupConnect(){
+-    connect(ui->closeBtn, &CloseButton::clicked, [=]{
+-        close();
+-    });
+-
+-#if QT_VERSION <= QT_VERSION_CHECK(5, 12, 0)
+-    connect(ui->buttonGroup, static_cast<void (QButtonGroup::*)(QAbstractButton *)>(&QButtonGroup::buttonClicked), [=](QAbstractButton * button){
+-#else
+-    connect(ui->buttonGroup, QOverload<QAbstractButton *>::of(&QButtonGroup::buttonClicked), [=](QAbstractButton * button){
+-#endif
+-        QString mode = button->property("wm").toString();
+-        settings->set(ADVANCED_KEY, mode);
+-    });
+-
+-    connect(ui->autoRadioBtn, &QRadioButton::toggled, this, [=](bool checked){
+-        ui->lineEdit->setEnabled(checked);
+-        ui->applyBtn->setEnabled(checked);
+-        ui->resetBtn->setEnabled(checked);
+-    });
+-
+-    connect(ui->applyBtn, &QPushButton::clicked, this, [=]{
+-        changeConfValue();
+-    });
+-
+-    connect(ui->resetBtn, &QPushButton::clicked, this, [=]{
+-        ui->lineEdit->setText("256");
+-        changeConfValue();
+-    });
+-}
+-
+-void DisplayPerformanceDialog::initModeStatus(){
+-    QString mode = settings->get(ADVANCED_KEY).toString();
+-
+-    if (mode == ui->performanceRadioBtn->property("wm").toString()){
+-        ui->performanceRadioBtn->blockSignals(true);
+-        ui->performanceRadioBtn->setChecked(true);
+-        ui->performanceRadioBtn->blockSignals(false);
+-    } else if (mode == ui->compatibleRadioBtn->property("wm").toString()){
+-        ui->compatibleRadioBtn->blockSignals(true);
+-        ui->compatibleRadioBtn->setChecked(true);
+-        ui->compatibleRadioBtn->blockSignals(false);
+-    } else{
+-        ui->autoRadioBtn->blockSignals(true);
+-        ui->autoRadioBtn->setChecked(true);
+-        ui->autoRadioBtn->blockSignals(false);
+-    }
+-}
+-
+-void DisplayPerformanceDialog::initThresholdStatus(){
+-    confSettings->beginGroup("mutter");
+-    QString value = confSettings->value("threshold").toString();
+-    ui->lineEdit->blockSignals(true);
+-    ui->lineEdit->setText(value);
+-    ui->lineEdit->blockSignals(false);
+-    confSettings->endGroup();
+-}
+-
+-void DisplayPerformanceDialog::changeConfValue(){
+-    if (!QFile::copy(WM_CHOOSER_CONF, WM_CHOOSER_CONF_TMP))
+-        return;
+-
+-    QSettings * tempSettings = new QSettings(WM_CHOOSER_CONF_TMP, QSettings::NativeFormat);
+-    tempSettings->beginGroup("mutter");
+-    tempSettings->setValue("threshold", ui->lineEdit->text());
+-    tempSettings->endGroup();
+-
+-    delete tempSettings;
+-    tempSettings = nullptr;
+-
+-    //替换kylin-wm-chooser
+-    QDBusInterface * sysinterface = new QDBusInterface("com.control.center.qt.systemdbus",
+-                                     "/",
+-                                     "com.control.center.interface",
+-                                     QDBusConnection::systemBus());
+-
+-    if (!sysinterface->isValid()){
+-        qCritical() << "Create Client Interface Failed When Copy Face File: " << QDBusConnection::systemBus().lastError();
+-        return;
+-    }
+-
+-    QString cmd = QString("mv %1 %2").arg(WM_CHOOSER_CONF_TMP).arg(WM_CHOOSER_CONF);
+-
+-    QProcess::execute(cmd);
+-    delete sysinterface;
+-    sysinterface = nullptr;
+-}
+-
+-void DisplayPerformanceDialog::paintEvent(QPaintEvent *event){
+-    Q_UNUSED(event);
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 6, 6);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 10, false, false);
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-
+-    p.restore();
+-}
+diff --git a/plugins/system/display_hw/displayperformancedialog.h b/plugins/system/display_hw/displayperformancedialog.h
+deleted file mode 100644
+index 4d03ccc..0000000
+--- a/plugins/system/display_hw/displayperformancedialog.h
++++ /dev/null
+@@ -1,58 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef DISPLAYPERFORMANCEDIALOG_H
+-#define DISPLAYPERFORMANCEDIALOG_H
+-
+-#include <QDialog>
+-#include <QSettings>
+-#include <QGSettings>
+-
+-namespace Ui {
+-class DisplayPerformanceDialog;
+-}
+-
+-class DisplayPerformanceDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit DisplayPerformanceDialog(QWidget *parent = 0);
+-    ~DisplayPerformanceDialog();
+-
+-public:
+-    void setupComponent();
+-    void setupConnect();
+-    void initModeStatus();
+-    void initThresholdStatus();
+-
+-    void changeConfValue();
+-
+-private:
+-    void paintEvent(QPaintEvent *event);
+-
+-private:
+-    Ui::DisplayPerformanceDialog *ui;
+-
+-private:
+-    QGSettings *settings;
+-    QSettings *confSettings;
+-};
+-
+-#endif // DISPLAYPERFORMANCEDIALOG_H
+diff --git a/plugins/system/display_hw/displayperformancedialog.ui b/plugins/system/display_hw/displayperformancedialog.ui
+deleted file mode 100644
+index 5c587f0..0000000
+--- a/plugins/system/display_hw/displayperformancedialog.ui
++++ /dev/null
+@@ -1,813 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>DisplayPerformanceDialog</class>
+- <widget class="QDialog" name="DisplayPerformanceDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>580</width>
+-    <height>646</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>580</width>
+-    <height>646</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>580</width>
+-    <height>646</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Dialog</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_2">
+-   <property name="spacing">
+-    <number>0</number>
+-   </property>
+-   <property name="leftMargin">
+-    <number>0</number>
+-   </property>
+-   <property name="topMargin">
+-    <number>9</number>
+-   </property>
+-   <property name="rightMargin">
+-    <number>9</number>
+-   </property>
+-   <property name="bottomMargin">
+-    <number>9</number>
+-   </property>
+-   <item>
+-    <widget class="QFrame" name="frame">
+-     <property name="sizePolicy">
+-      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-       <horstretch>0</horstretch>
+-       <verstretch>0</verstretch>
+-      </sizepolicy>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::NoFrame</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_3">
+-      <property name="spacing">
+-       <number>0</number>
+-      </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>
+-       <layout class="QVBoxLayout" name="verticalLayout">
+-        <property name="spacing">
+-         <number>0</number>
+-        </property>
+-        <property name="sizeConstraint">
+-         <enum>QLayout::SetDefaultConstraint</enum>
+-        </property>
+-        <property name="topMargin">
+-         <number>0</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>0</number>
+-        </property>
+-        <item>
+-         <widget class="QFrame" name="closeFrame">
+-          <property name="minimumSize">
+-           <size>
+-            <width>0</width>
+-            <height>36</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>36</height>
+-           </size>
+-          </property>
+-          <property name="frameShape">
+-           <enum>QFrame::StyledPanel</enum>
+-          </property>
+-          <property name="frameShadow">
+-           <enum>QFrame::Raised</enum>
+-          </property>
+-          <layout class="QHBoxLayout" name="horizontalLayout_6">
+-           <property name="spacing">
+-            <number>0</number>
+-           </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>
+-            <layout class="QHBoxLayout" name="horizontalLayout_2">
+-             <property name="spacing">
+-              <number>0</number>
+-             </property>
+-             <item>
+-              <spacer name="horizontalSpacer">
+-               <property name="orientation">
+-                <enum>Qt::Horizontal</enum>
+-               </property>
+-               <property name="sizeHint" stdset="0">
+-                <size>
+-                 <width>40</width>
+-                 <height>20</height>
+-                </size>
+-               </property>
+-              </spacer>
+-             </item>
+-             <item>
+-              <widget class="CloseButton" name="closeBtn">
+-               <property name="minimumSize">
+-                <size>
+-                 <width>32</width>
+-                 <height>32</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>32</width>
+-                 <height>32</height>
+-                </size>
+-               </property>
+-               <property name="text">
+-                <string/>
+-               </property>
+-              </widget>
+-             </item>
+-            </layout>
+-           </item>
+-          </layout>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="QWidget" name="widget" native="true">
+-          <property name="sizePolicy">
+-           <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-            <horstretch>0</horstretch>
+-            <verstretch>0</verstretch>
+-           </sizepolicy>
+-          </property>
+-          <property name="minimumSize">
+-           <size>
+-            <width>0</width>
+-            <height>0</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>16777215</height>
+-           </size>
+-          </property>
+-          <layout class="QVBoxLayout" name="verticalLayout_4">
+-           <property name="spacing">
+-            <number>8</number>
+-           </property>
+-           <property name="sizeConstraint">
+-            <enum>QLayout::SetDefaultConstraint</enum>
+-           </property>
+-           <property name="leftMargin">
+-            <number>32</number>
+-           </property>
+-           <property name="topMargin">
+-            <number>16</number>
+-           </property>
+-           <property name="rightMargin">
+-            <number>32</number>
+-           </property>
+-           <property name="bottomMargin">
+-            <number>32</number>
+-           </property>
+-           <item>
+-            <widget class="QLabel" name="titleLabel">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="text">
+-              <string>Display Advanced Settings</string>
+-             </property>
+-            </widget>
+-           </item>
+-           <item>
+-            <widget class="QScrollArea" name="scrollArea">
+-             <property name="verticalScrollBarPolicy">
+-              <enum>Qt::ScrollBarAsNeeded</enum>
+-             </property>
+-             <property name="horizontalScrollBarPolicy">
+-              <enum>Qt::ScrollBarAlwaysOff</enum>
+-             </property>
+-             <property name="widgetResizable">
+-              <bool>true</bool>
+-             </property>
+-             <widget class="QWidget" name="scrollAreaWidgetContents">
+-              <property name="geometry">
+-               <rect>
+-                <x>0</x>
+-                <y>0</y>
+-                <width>526</width>
+-                <height>564</height>
+-               </rect>
+-              </property>
+-              <layout class="QVBoxLayout" name="verticalLayout_32">
+-               <item>
+-                <layout class="QVBoxLayout" name="verticalLayout_6">
+-                 <property name="spacing">
+-                  <number>2</number>
+-                 </property>
+-                 <item>
+-                  <widget class="QFrame" name="performanceFrame">
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>50</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>16777215</width>
+-                     <height>50</height>
+-                    </size>
+-                   </property>
+-                   <property name="frameShape">
+-                    <enum>QFrame::Box</enum>
+-                   </property>
+-                   <property name="frameShadow">
+-                    <enum>QFrame::Plain</enum>
+-                   </property>
+-                   <layout class="QHBoxLayout" name="horizontalLayout_3">
+-                    <property name="spacing">
+-                     <number>0</number>
+-                    </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>
+-                     <layout class="QHBoxLayout" name="horizontalLayout">
+-                      <property name="spacing">
+-                       <number>0</number>
+-                      </property>
+-                      <property name="leftMargin">
+-                       <number>16</number>
+-                      </property>
+-                      <item>
+-                       <widget class="QRadioButton" name="performanceRadioBtn">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                        <property name="text">
+-                         <string>Performance</string>
+-                        </property>
+-                        <attribute name="buttonGroup">
+-                         <string notr="true">buttonGroup</string>
+-                        </attribute>
+-                       </widget>
+-                      </item>
+-                      <item>
+-                       <spacer name="horizontalSpacer_2">
+-                        <property name="orientation">
+-                         <enum>Qt::Horizontal</enum>
+-                        </property>
+-                        <property name="sizeHint" stdset="0">
+-                         <size>
+-                          <width>40</width>
+-                          <height>20</height>
+-                         </size>
+-                        </property>
+-                       </spacer>
+-                      </item>
+-                     </layout>
+-                    </item>
+-                   </layout>
+-                  </widget>
+-                 </item>
+-                 <item>
+-                  <widget class="QFrame" name="performanceTipFrame">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>0</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>16777215</width>
+-                     <height>16777215</height>
+-                    </size>
+-                   </property>
+-                   <property name="frameShape">
+-                    <enum>QFrame::Box</enum>
+-                   </property>
+-                   <property name="frameShadow">
+-                    <enum>QFrame::Plain</enum>
+-                   </property>
+-                   <layout class="QVBoxLayout" name="verticalLayout_11">
+-                    <property name="spacing">
+-                     <number>8</number>
+-                    </property>
+-                    <property name="leftMargin">
+-                     <number>16</number>
+-                    </property>
+-                    <property name="topMargin">
+-                     <number>0</number>
+-                    </property>
+-                    <property name="rightMargin">
+-                     <number>16</number>
+-                    </property>
+-                    <property name="bottomMargin">
+-                     <number>0</number>
+-                    </property>
+-                    <item>
+-                     <widget class="QLabel" name="label">
+-                      <property name="sizePolicy">
+-                       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                        <horstretch>0</horstretch>
+-                        <verstretch>0</verstretch>
+-                       </sizepolicy>
+-                      </property>
+-                      <property name="autoFillBackground">
+-                       <bool>false</bool>
+-                      </property>
+-                      <property name="text">
+-                       <string>Applicable to machine with discrete graphics, which can accelerate the rendering of 3D graphics.</string>
+-                      </property>
+-                      <property name="wordWrap">
+-                       <bool>true</bool>
+-                      </property>
+-                     </widget>
+-                    </item>
+-                    <item>
+-                     <widget class="QLabel" name="label_2">
+-                      <property name="sizePolicy">
+-                       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                        <horstretch>0</horstretch>
+-                        <verstretch>0</verstretch>
+-                       </sizepolicy>
+-                      </property>
+-                      <property name="text">
+-                       <string>(Note: not support connect graphical with xmanager on windows.)</string>
+-                      </property>
+-                      <property name="wordWrap">
+-                       <bool>true</bool>
+-                      </property>
+-                     </widget>
+-                    </item>
+-                   </layout>
+-                  </widget>
+-                 </item>
+-                </layout>
+-               </item>
+-               <item>
+-                <layout class="QVBoxLayout" name="verticalLayout_8">
+-                 <property name="spacing">
+-                  <number>2</number>
+-                 </property>
+-                 <item>
+-                  <widget class="QFrame" name="compatibleFrame">
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>50</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>16777215</width>
+-                     <height>50</height>
+-                    </size>
+-                   </property>
+-                   <property name="frameShape">
+-                    <enum>QFrame::Box</enum>
+-                   </property>
+-                   <property name="frameShadow">
+-                    <enum>QFrame::Plain</enum>
+-                   </property>
+-                   <layout class="QHBoxLayout" name="horizontalLayout_5">
+-                    <property name="spacing">
+-                     <number>0</number>
+-                    </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>
+-                     <layout class="QHBoxLayout" name="horizontalLayout_4">
+-                      <property name="spacing">
+-                       <number>0</number>
+-                      </property>
+-                      <property name="leftMargin">
+-                       <number>16</number>
+-                      </property>
+-                      <item>
+-                       <widget class="QRadioButton" name="compatibleRadioBtn">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                        <property name="text">
+-                         <string>Compatible</string>
+-                        </property>
+-                        <attribute name="buttonGroup">
+-                         <string notr="true">buttonGroup</string>
+-                        </attribute>
+-                       </widget>
+-                      </item>
+-                      <item>
+-                       <spacer name="horizontalSpacer_3">
+-                        <property name="orientation">
+-                         <enum>Qt::Horizontal</enum>
+-                        </property>
+-                        <property name="sizeHint" stdset="0">
+-                         <size>
+-                          <width>40</width>
+-                          <height>20</height>
+-                         </size>
+-                        </property>
+-                       </spacer>
+-                      </item>
+-                     </layout>
+-                    </item>
+-                   </layout>
+-                  </widget>
+-                 </item>
+-                 <item>
+-                  <widget class="QFrame" name="compatibleTipFrame">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>0</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>16777215</width>
+-                     <height>16777215</height>
+-                    </size>
+-                   </property>
+-                   <property name="frameShape">
+-                    <enum>QFrame::Box</enum>
+-                   </property>
+-                   <property name="frameShadow">
+-                    <enum>QFrame::Plain</enum>
+-                   </property>
+-                   <layout class="QVBoxLayout" name="verticalLayout_12">
+-                    <property name="spacing">
+-                     <number>8</number>
+-                    </property>
+-                    <property name="leftMargin">
+-                     <number>16</number>
+-                    </property>
+-                    <property name="topMargin">
+-                     <number>0</number>
+-                    </property>
+-                    <property name="rightMargin">
+-                     <number>16</number>
+-                    </property>
+-                    <property name="bottomMargin">
+-                     <number>0</number>
+-                    </property>
+-                    <item>
+-                     <widget class="QLabel" name="label_3">
+-                      <property name="sizePolicy">
+-                       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                        <horstretch>0</horstretch>
+-                        <verstretch>0</verstretch>
+-                       </sizepolicy>
+-                      </property>
+-                      <property name="text">
+-                       <string>Applicable to machine with integrated graphics,  there is no 3D graphics acceleration. </string>
+-                      </property>
+-                      <property name="wordWrap">
+-                       <bool>true</bool>
+-                      </property>
+-                     </widget>
+-                    </item>
+-                    <item>
+-                     <widget class="QLabel" name="label_4">
+-                      <property name="sizePolicy">
+-                       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                        <horstretch>0</horstretch>
+-                        <verstretch>0</verstretch>
+-                       </sizepolicy>
+-                      </property>
+-                      <property name="text">
+-                       <string>(Note: need connect graphical with xmanager on windows, use this option.)</string>
+-                      </property>
+-                      <property name="wordWrap">
+-                       <bool>true</bool>
+-                      </property>
+-                     </widget>
+-                    </item>
+-                   </layout>
+-                  </widget>
+-                 </item>
+-                </layout>
+-               </item>
+-               <item>
+-                <layout class="QVBoxLayout" name="verticalLayout_9">
+-                 <property name="spacing">
+-                  <number>2</number>
+-                 </property>
+-                 <item>
+-                  <widget class="QFrame" name="automaticFrame">
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>50</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>16777215</width>
+-                     <height>50</height>
+-                    </size>
+-                   </property>
+-                   <property name="frameShape">
+-                    <enum>QFrame::Box</enum>
+-                   </property>
+-                   <property name="frameShadow">
+-                    <enum>QFrame::Plain</enum>
+-                   </property>
+-                   <layout class="QHBoxLayout" name="horizontalLayout_8">
+-                    <property name="spacing">
+-                     <number>0</number>
+-                    </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>
+-                     <layout class="QHBoxLayout" name="horizontalLayout_7">
+-                      <property name="spacing">
+-                       <number>0</number>
+-                      </property>
+-                      <property name="leftMargin">
+-                       <number>16</number>
+-                      </property>
+-                      <item>
+-                       <widget class="QRadioButton" name="autoRadioBtn">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                        <property name="text">
+-                         <string>Automatic</string>
+-                        </property>
+-                        <attribute name="buttonGroup">
+-                         <string notr="true">buttonGroup</string>
+-                        </attribute>
+-                       </widget>
+-                      </item>
+-                      <item>
+-                       <spacer name="horizontalSpacer_4">
+-                        <property name="orientation">
+-                         <enum>Qt::Horizontal</enum>
+-                        </property>
+-                        <property name="sizeHint" stdset="0">
+-                         <size>
+-                          <width>40</width>
+-                          <height>20</height>
+-                         </size>
+-                        </property>
+-                       </spacer>
+-                      </item>
+-                     </layout>
+-                    </item>
+-                   </layout>
+-                  </widget>
+-                 </item>
+-                 <item>
+-                  <widget class="QFrame" name="automaticTipFrame">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>0</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>16777215</width>
+-                     <height>16777215</height>
+-                    </size>
+-                   </property>
+-                   <property name="frameShape">
+-                    <enum>QFrame::Box</enum>
+-                   </property>
+-                   <property name="frameShadow">
+-                    <enum>QFrame::Plain</enum>
+-                   </property>
+-                   <layout class="QVBoxLayout" name="verticalLayout_5">
+-                    <property name="spacing">
+-                     <number>8</number>
+-                    </property>
+-                    <property name="leftMargin">
+-                     <number>16</number>
+-                    </property>
+-                    <property name="topMargin">
+-                     <number>0</number>
+-                    </property>
+-                    <property name="rightMargin">
+-                     <number>16</number>
+-                    </property>
+-                    <property name="bottomMargin">
+-                     <number>0</number>
+-                    </property>
+-                    <item>
+-                     <widget class="QLabel" name="label_5">
+-                      <property name="sizePolicy">
+-                       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                        <horstretch>0</horstretch>
+-                        <verstretch>0</verstretch>
+-                       </sizepolicy>
+-                      </property>
+-                      <property name="text">
+-                       <string>Auto select according to environment, delay the login time (about 0.5 sec).</string>
+-                      </property>
+-                      <property name="wordWrap">
+-                       <bool>true</bool>
+-                      </property>
+-                     </widget>
+-                    </item>
+-                    <item>
+-                     <layout class="QHBoxLayout" name="autoHorLayout">
+-                      <property name="spacing">
+-                       <number>16</number>
+-                      </property>
+-                      <item>
+-                       <widget class="QLabel" name="label_7">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                        <property name="text">
+-                         <string>Threshold:</string>
+-                        </property>
+-                       </widget>
+-                      </item>
+-                      <item>
+-                       <widget class="QLineEdit" name="lineEdit">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                       </widget>
+-                      </item>
+-                      <item>
+-                       <widget class="QPushButton" name="applyBtn">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                        <property name="text">
+-                         <string>Apply</string>
+-                        </property>
+-                       </widget>
+-                      </item>
+-                      <item>
+-                       <widget class="QPushButton" name="resetBtn">
+-                        <property name="sizePolicy">
+-                         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-                          <horstretch>0</horstretch>
+-                          <verstretch>0</verstretch>
+-                         </sizepolicy>
+-                        </property>
+-                        <property name="text">
+-                         <string>Reset</string>
+-                        </property>
+-                       </widget>
+-                      </item>
+-                     </layout>
+-                    </item>
+-                    <item>
+-                     <widget class="QLabel" name="label_6">
+-                      <property name="sizePolicy">
+-                       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-                        <horstretch>0</horstretch>
+-                        <verstretch>0</verstretch>
+-                       </sizepolicy>
+-                      </property>
+-                      <property name="text">
+-                       <string>(Note: select this option to use 3D graphics acceleration and xmanager.)</string>
+-                      </property>
+-                      <property name="wordWrap">
+-                       <bool>true</bool>
+-                      </property>
+-                     </widget>
+-                    </item>
+-                   </layout>
+-                  </widget>
+-                 </item>
+-                </layout>
+-               </item>
+-              </layout>
+-              <zorder></zorder>
+-              <zorder></zorder>
+-              <zorder></zorder>
+-             </widget>
+-            </widget>
+-           </item>
+-          </layout>
+-         </widget>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-  </layout>
+- </widget>
+- <customwidgets>
+-  <customwidget>
+-   <class>CloseButton</class>
+-   <extends>QPushButton</extends>
+-   <header location="global">../../../libukcc/widgets/CloseButton/closebutton.h</header>
+-  </customwidget>
+- </customwidgets>
+- <resources/>
+- <connections/>
+- <buttongroups>
+-  <buttongroup name="buttonGroup"/>
+- </buttongroups>
+-</ui>
+diff --git a/plugins/system/display_hw/outputconfig.cpp b/plugins/system/display_hw/outputconfig.cpp
+deleted file mode 100644
+index 375e7a8..0000000
+--- a/plugins/system/display_hw/outputconfig.cpp
++++ /dev/null
+@@ -1,439 +0,0 @@
+-#include "outputconfig.h"
+-#include "resolutionslider.h"
+-#include "utils.h"
+-
+-#include <QStringBuilder>
+-#include <QFormLayout>
+-#include <QComboBox>
+-#include <QCheckBox>
+-#include <QHBoxLayout>
+-#include <QLabel>
+-#include <QPushButton>
+-#include <QGroupBox>
+-#include <QMessageBox>
+-
+-#include <QComboBox>
+-#include <QGSettings>
+-#include <QDBusInterface>
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-#include <KF5/KScreen/kscreen/edid.h>
+-
+-#include "combobox.h"
+-
+-double mScreenScale = 1.0;
+-int changeItm = -1;
+-
+-OutputConfig::OutputConfig(QWidget *parent) :
+-    QWidget(parent),
+-    mOutput(nullptr)
+-{
+-    initDpiConnection();
+-}
+-
+-OutputConfig::OutputConfig(const KScreen::OutputPtr &output, QWidget *parent) :
+-    QWidget(parent)
+-{
+-    initDpiConnection();
+-    setOutput(output);
+-}
+-
+-OutputConfig::~OutputConfig()
+-{
+-}
+-
+-void OutputConfig::setTitle(const QString &title)
+-{
+-    mTitle->setText(title);
+-}
+-
+-void OutputConfig::initUi()
+-{
+-    connect(mOutput.data(), &KScreen::Output::isConnectedChanged,
+-            this, [=]() {
+-        if (!mOutput->isConnected()) {
+-            setVisible(false);
+-        }
+-    });
+-
+-    connect(mOutput.data(), &KScreen::Output::rotationChanged,
+-            this, [=]() {
+-        const int index = mRotation->findData(mOutput->rotation());
+-        mRotation->blockSignals(true);
+-        mRotation->setCurrentIndex(index);
+-        mRotation->blockSignals(false);
+-    });
+-
+-    connect(mOutput.data(), &KScreen::Output::currentModeIdChanged,
+-            this, [=]() {
+-        if (mOutput->currentMode()) {
+-            if (mRefreshRate) {
+-                mRefreshRate->blockSignals(true);
+-                slotResolutionChanged(mOutput->currentMode()->size(), false);
+-                mRefreshRate->blockSignals(false);
+-            }
+-        }
+-    });
+-
+-    connect(mOutput.data(), &KScreen::Output::isEnabledChanged, this, [=](){
+-       slotEnableWidget();
+-    });
+-
+-    setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+-
+-    QVBoxLayout *vbox = new QVBoxLayout(this);
+-    vbox->setContentsMargins(0, 0, 0, 0);
+-    vbox->setSpacing(2);
+-
+-    // 分辨率下拉框
+-    mResolution = new ResolutionSlider(mOutput, this);
+-    mResolution->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-
+-    QLabel *resLabel = new QLabel(this);
+-    //~ contents_path /display/resolution
+-    resLabel->setText(tr("resolution"));
+-    resLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    resLabel->setFixedSize(118, 30);
+-
+-    QHBoxLayout *resLayout = new QHBoxLayout();
+-    resLayout->addWidget(resLabel);
+-    resLayout->addWidget(mResolution);
+-
+-    QFrame *resFrame = new QFrame(this);
+-    resFrame->setFrameShape(QFrame::Shape::Box);
+-    resFrame->setLayout(resLayout);
+-
+-    resFrame->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    resFrame->setMinimumSize(552, 50);
+-    resFrame->setMaximumSize(16777215, 50);
+-
+-    vbox->addWidget(resFrame);
+-
+-    connect(mResolution, &ResolutionSlider::resolutionChanged,
+-            this, [=](QSize size){
+-                slotResolutionChanged(size, true);
+-            });
+-
+-    // 方向下拉框
+-    mRotation = new QComboBox(this);
+-    mRotation->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-
+-    QLabel *rotateLabel = new QLabel(this);
+-    // ~contents_path /display/orientation
+-    rotateLabel->setText(tr("orientation"));
+-    rotateLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    rotateLabel->setFixedSize(118, 30);
+-
+-    QHBoxLayout *rotateLayout = new QHBoxLayout();
+-    rotateLayout->addWidget(rotateLabel);
+-
+-    rotateLayout->addWidget(mRotation);
+-
+-    QFrame *rotateFrame = new QFrame(this);
+-    rotateFrame->setFrameShape(QFrame::Shape::Box);
+-    rotateFrame->setLayout(rotateLayout);
+-
+-    rotateFrame->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    rotateFrame->setMinimumSize(550, 50);
+-    rotateFrame->setMaximumSize(16777215, 50);
+-
+-    mRotation->addItem(tr("arrow-up"), KScreen::Output::None);
+-    mRotation->addItem(tr("90° arrow-right"), KScreen::Output::Right);
+-    mRotation->addItem(tr("90° arrow-left"), KScreen::Output::Left);
+-    mRotation->addItem(tr("arrow-down"), KScreen::Output::Inverted);
+-    connect(mRotation, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+-            this, &OutputConfig::slotRotationChanged);
+-    mRotation->setCurrentIndex(mRotation->findData(mOutput->rotation()));
+-
+-    vbox->addWidget(rotateFrame);
+-
+-    // 刷新率下拉框
+-    mRefreshRate = new QComboBox(this);
+-
+-    QLabel *freshLabel = new QLabel(this);
+-    // ~contents_path /display/frequency
+-    freshLabel->setText(tr("frequency"));
+-    freshLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    freshLabel->setFixedSize(118, 30);
+-
+-    QHBoxLayout *freshLayout = new QHBoxLayout();
+-    freshLayout->addWidget(freshLabel);
+-    freshLayout->addWidget(mRefreshRate);
+-
+-    QFrame *freshFrame = new QFrame(this);
+-    freshFrame->setFrameShape(QFrame::Shape::Box);
+-    freshFrame->setLayout(freshLayout);
+-
+-    freshFrame->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    freshFrame->setMinimumSize(550, 50);
+-    freshFrame->setMaximumSize(16777215, 50);
+-
+-    vbox->addWidget(freshFrame);
+-
+-    slotResolutionChanged(mResolution->currentResolution(), true);
+-    connect(mRefreshRate, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+-            this, &OutputConfig::slotRefreshRateChanged);
+-
+-    mScaleCombox = new QComboBox(this);
+-    mScaleCombox->setObjectName("scaleCombox");
+-
+-    double scale = getScreenScale();
+-
+-    mScaleCombox->setCurrentText(scaleToString(scale));
+-
+-    if (mScaleCombox->findData(scale) == -1) {
+-        mScaleCombox->addItem(scaleToString(scale), scale);
+-        mScaleCombox->setCurrentText(scaleToString(scale));
+-    }
+-
+-    QLabel *scaleLabel = new QLabel(this);
+-    //~ contents_path /display/screen zoom
+-    scaleLabel->setText(tr("screen zoom"));
+-    scaleLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    scaleLabel->setFixedSize(118, 30);
+-
+-    QHBoxLayout *scaleLayout = new QHBoxLayout();
+-    scaleLayout->addWidget(scaleLabel);
+-    scaleLayout->addWidget(mScaleCombox);
+-
+-    QFrame *scaleFrame = new QFrame(this);
+-    scaleFrame->setFrameShape(QFrame::Shape::Box);
+-    scaleFrame->setLayout(scaleLayout);
+-
+-    scaleFrame->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    scaleFrame->setMinimumSize(550, 50);
+-    scaleFrame->setMaximumSize(16777215, 50);
+-    vbox->addWidget(scaleFrame);
+-    scaleFrame->hide();
+-
+-    slotEnableWidget();
+-}
+-
+-double OutputConfig::getScreenScale()
+-{
+-    double scale = 1.0;
+-    if (QGSettings::isSchemaInstalled(SCALE_SCHEMAS)) {
+-        if (mDpiSettings->keys().contains("scalingFactor")) {
+-            scale = mDpiSettings->get(SCALE_KEY).toDouble();
+-        }
+-    }
+-    return scale;
+-}
+-
+-void OutputConfig::initDpiConnection()
+-{
+-    QByteArray id(SCALE_SCHEMAS);
+-    if (QGSettings::isSchemaInstalled(SCALE_SCHEMAS)) {
+-        mDpiSettings = new QGSettings(id, QByteArray(), this);
+-        connect(mDpiSettings, &QGSettings::changed, this, [=](QString key) {
+-            slotDPIChanged(key);
+-        });
+-    }
+-}
+-
+-QString OutputConfig::scaleToString(double scale)
+-{
+-    return QString::number(scale * 100) + "%";
+-}
+-
+-KScreen::ModePtr OutputConfig::findBestMode(const QSize &size)
+-{
+-    KScreen::ModePtr m_mode;
+-    float refreshRate = 0;
+-    Q_FOREACH (const KScreen::ModePtr &mode, mOutput->modes()) {
+-        if (mode->size() == size && mode->refreshRate() > refreshRate) {
+-            refreshRate = mode->refreshRate();
+-            m_mode = mode;
+-        }
+-    }
+-    return m_mode;
+-}
+-
+-void OutputConfig::setOutput(const KScreen::OutputPtr &output)
+-{
+-    mOutput = output;
+-    initUi();
+-}
+-
+-KScreen::OutputPtr OutputConfig::output() const
+-{
+-    return mOutput;
+-}
+-
+-void OutputConfig::slotResolutionChanged(const QSize &size, bool emitFlag)
+-{
+-    // Ignore disconnected outputs
+-    if (!size.isValid()) {
+-        return;
+-    }
+-    bool mIsModeInit = false;
+-    QString modeID;
+-    KScreen::ModePtr selectMode;
+-    KScreen::ModePtr currentMode = mOutput->currentMode();
+-    QList<KScreen::ModePtr> modes;
+-    Q_FOREACH (const KScreen::ModePtr &mode, mOutput->modes()) {
+-        //初始化时,currentMode可能为空(比如刚插上屏幕)
+-        if (!currentMode || (currentMode && currentMode->size() == size)) {
+-            if (currentMode) {
+-                selectMode = currentMode;
+-            }
+-            mIsModeInit = true;
+-        }
+-        if (mode->size() == size) {
+-            if (!mIsModeInit || !currentMode) {
+-                selectMode = mode;
+-            }
+-            modes << mode;
+-        }
+-    }
+-    //非初始化,则设置选中(用户设置)的mode为该分辨率下刷新率最大的mode
+-    if (!mIsModeInit) {
+-        selectMode = findBestMode(selectMode->size());
+-    }
+-    modeID = selectMode->id();
+-    mRefreshRate->blockSignals(true);
+-    mRefreshRate->clear();
+-    mRefreshRate->blockSignals(false);
+-
+-    for (int i = 0, total = modes.count(); i < total; ++i) {
+-        const KScreen::ModePtr mode = modes.at(i);
+-        QString comText  = refreshRateToText(mode->refreshRate());
+-        int     comIndex = 0;
+-        bool alreadyExisted = false;
+-        for (int j = 0; j < mRefreshRate->count(); ++j) {
+-            if (comText == mRefreshRate->itemText(j)) {
+-                alreadyExisted = true;
+-                break;
+-            }
+-        }
+-
+-        if (alreadyExisted == false) {   //不添加已经存在的项
+-            if (mRefreshRate->count() > 0) {
+-                for (int r = 0; r < mRefreshRate->count(); ++r) {
+-                    if (comText.compare(mRefreshRate->itemText(r)) < 0) {
+-                        comIndex = r + 1;
+-                    } else {
+-                        break;
+-                    }
+-                }
+-            }
+-            mRefreshRate->blockSignals(true);
+-            mRefreshRate->insertItem(comIndex, comText, mode->id());
+-            mRefreshRate->blockSignals(false);
+-        }
+-
+-        //mode是选中的mode,则设置
+-        if (mode == selectMode && mRefreshRate->count() > 0) {
+-            mRefreshRate->blockSignals(true);
+-            mRefreshRate->setCurrentIndex(comIndex);
+-            mRefreshRate->blockSignals(false);
+-        }
+-    }
+-
+-    if (mRefreshRate->count() == 0) {
+-        mRefreshRate->blockSignals(true);
+-        mRefreshRate->addItem(tr("auto"), -1);
+-        mRefreshRate->blockSignals(false);
+-    } else {
+-        if (-1 == mRefreshRate->currentIndex()) {
+-            modeID = mRefreshRate->itemData(0).toString();
+-            // 避免选择50hz以下刷新率为空
+-            mRefreshRate->blockSignals(true);
+-            mRefreshRate->setCurrentIndex(0);
+-            mRefreshRate->blockSignals(false);
+-        }
+-    }
+-
+-    mOutput->setCurrentModeId(modeID);
+-
+-    if (!mIsModeInit) {
+-        if (emitFlag) {
+-            changeItm = RESOLUTION;
+-            Q_EMIT changed();
+-        }
+-    }
+-}
+-
+-void OutputConfig::slotRotationChanged(int index)
+-{
+-    KScreen::Output::Rotation rotation
+-        = static_cast<KScreen::Output::Rotation>(mRotation->itemData(index).toInt());
+-    mOutput->setRotation(rotation);
+-
+-    changeItm = ORIENTATION;
+-    Q_EMIT changed();
+-}
+-
+-void OutputConfig::slotRefreshRateChanged(int index)
+-{
+-    QString modeId;
+-    if (index < 0) {
+-        // Item 0 is "Auto" - "Auto" is equal to highest refresh rate (at least
+-        // that's how I understand it, and since the combobox is sorted in descending
+-        // order, we just pick the second item from top
+-        modeId = mRefreshRate->itemData(0).toString();
+-    } else {
+-        modeId = mRefreshRate->itemData(index).toString();
+-    }
+-    qDebug() << "modeId is:" << modeId << endl;
+-    mOutput->setCurrentModeId(modeId);
+-    changeItm = FREQUENCY;
+-    Q_EMIT changed();
+-}
+-
+-void OutputConfig::slotScaleChanged(int index)
+-{
+-    Q_EMIT scaleChanged(mScaleCombox->itemData(index).toDouble());
+-}
+-
+-void OutputConfig::slotDPIChanged(QString key)
+-{
+-    if (mScaleCombox == nullptr)
+-        return;
+-    if (!key.compare("scalingFactor", Qt::CaseSensitive)) {
+-        double scale = mDpiSettings->get(key).toDouble();
+-        if (mScaleCombox->findData(scale) == -1) {
+-            mScaleCombox->addItem(scaleToString(scale), scale);
+-        }
+-        mScaleCombox->blockSignals(true);
+-        mScaleCombox->setCurrentText(scaleToString(scale));
+-        mScaleCombox->blockSignals(false);
+-    }
+-}
+-
+-void OutputConfig::slotEnableWidget()
+-{
+-    if (mOutput.data()->isEnabled()) {
+-        mResolution->setEnabled(true);
+-        mRotation->setEnabled(true);
+-        mRefreshRate->setEnabled(true);
+-    } else {
+-        mResolution->setEnabled(false);
+-        mRotation->setEnabled(false);
+-        mRefreshRate->setEnabled(false);
+-    }
+-}
+-
+-void OutputConfig::setShowScaleOption(bool showScaleOption)
+-{
+-    mShowScaleOption = showScaleOption;
+-    if (mOutput) {
+-        initUi();
+-    }
+-}
+-
+-bool OutputConfig::showScaleOption() const
+-{
+-    return mShowScaleOption;
+-}
+-
+-// 拿取配置
+-void OutputConfig::initConfig(const KScreen::ConfigPtr &config)
+-{
+-    mConfig = config;
+-}
+-
+-QString OutputConfig::refreshRateToText(float refreshRate)
+-{
+-    return tr("%1 Hz").arg(QLocale().toString(refreshRate));
+-}
+diff --git a/plugins/system/display_hw/outputconfig.h b/plugins/system/display_hw/outputconfig.h
+deleted file mode 100644
+index 3a09a2c..0000000
+--- a/plugins/system/display_hw/outputconfig.h
++++ /dev/null
+@@ -1,88 +0,0 @@
+-#ifndef OUTPUTCONFIG_H
+-#define OUTPUTCONFIG_H
+-
+-#include <QGroupBox>
+-#include <QComboBox>
+-#include <QWidget>
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-
+-#include <QGSettings>
+-
+-#include "scalesize.h"
+-
+-class QCheckBox;
+-class ResolutionSlider;
+-class QLabel;
+-class QStyledItemDelegate;
+-
+-namespace Ui {
+-class KScreenWidget;
+-}
+-
+-class OutputConfig : public QWidget
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit OutputConfig(QWidget *parent);
+-    explicit OutputConfig(const KScreen::OutputPtr &output, QWidget *parent = nullptr);
+-    ~OutputConfig() override;
+-
+-    virtual void setOutput(const KScreen::OutputPtr &output);
+-    KScreen::OutputPtr output() const;
+-
+-    void setTitle(const QString &title);
+-    void setShowScaleOption(bool showScaleOption);
+-    bool showScaleOption() const;
+-
+-    void initConfig(const KScreen::ConfigPtr &config);
+-    QString refreshRateToText(float refreshRate);
+-
+-protected Q_SLOTS:
+-    void slotResolutionChanged(const QSize &size, bool emitFlag);
+-    void slotRotationChanged(int index);
+-    void slotRefreshRateChanged(int index);
+-    void slotScaleChanged(int index);
+-    void slotDPIChanged(QString key);
+-    void slotEnableWidget();
+-
+-Q_SIGNALS:
+-    void changed();
+-    void scaleChanged(double scale);
+-
+-protected:
+-    virtual void initUi();
+-    double getScreenScale();
+-
+-private:
+-    void initDpiConnection();
+-    QString scaleToString(double scale);
+-    KScreen::ModePtr findBestMode(const QSize &size);
+-
+-protected:
+-    KScreen::OutputPtr mOutput;
+-    QLabel *mTitle = nullptr;
+-    QCheckBox *mEnabled = nullptr;
+-    ResolutionSlider *mResolution = nullptr;
+-
+-    QComboBox *mRotation = nullptr;
+-    QComboBox *mScale = nullptr;
+-    QComboBox *mRefreshRate = nullptr;
+-    QComboBox *mMonitor = nullptr;
+-    QComboBox *mScaleCombox = nullptr;
+-
+-    bool mShowScaleOption = false;
+-    bool mIsWayland = false;
+-    bool mIsFirstLoad = true;
+-
+-#if QT_VERSION <= QT_VERSION_CHECK(5, 12, 0)
+-    KScreen::ConfigPtr mConfig;
+-#else
+-    KScreen::ConfigPtr mConfig = nullptr;
+-#endif
+-
+-    QGSettings *mDpiSettings = nullptr;
+-};
+-
+-#endif // OUTPUTCONFIG_H
+diff --git a/plugins/system/display_hw/qml.qrc b/plugins/system/display_hw/qml.qrc
+deleted file mode 100644
+index 1ffe197..0000000
+--- a/plugins/system/display_hw/qml.qrc
++++ /dev/null
+@@ -1,6 +0,0 @@
+-<RCC>
+-    <qresource prefix="/">
+-        <file>qml/Output.qml</file>
+-        <file>qml/main.qml</file>
+-    </qresource>
+-</RCC>
+diff --git a/plugins/system/display_hw/qml/Output.qml b/plugins/system/display_hw/qml/Output.qml
+deleted file mode 100644
+index d6ae382..0000000
+--- a/plugins/system/display_hw/qml/Output.qml
++++ /dev/null
+@@ -1,277 +0,0 @@
+-/*
+-    Copyright (C) 2012  Dan Vratil <dvratil@redhat.com>
+-
+-    This library is free software; you can redistribute it and/or
+-    modify it under the terms of the GNU Lesser General Public
+-    License as published by the Free Software Foundation; either
+-    version 2.1 of the License, or (at your option) any later version.
+-
+-    This library 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
+-    Lesser General Public License for more details.
+-
+-    You should have received a copy of the GNU Lesser General Public
+-    License along with this library; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+-*/
+-
+-import QtQuick 2.1
+-import QtGraphicalEffects 1.0
+-import org.kde.kscreen 1.0
+-
+-QMLOutput {
+-
+-    id: root;
+-
+-    signal clicked();
+-    signal primaryTriggered(string self);
+-    signal enabledToggled(string self);
+-    signal mousePressed();
+-    signal mouseReleased(bool isReleased);
+-    signal positionChanged(bool isReleased);
+-    signal rotationChanged(bool isReleased);
+-    signal widthChanged(bool isReleased);
+-    signal heightChanged(bool isReleased);
+-
+-    property bool isDragged: monitorMouseArea.drag.active;
+-    property bool isDragEnabled: true;
+-    property bool isToggleButtonVisible: false;
+-    property bool hasMoved: false;
+-
+-    property var screenName:[
+-        "Unknown",
+-        "VGA",
+-        "DVI",
+-        "DVII",
+-        "DVIA",
+-        "DVID",
+-        "HDMI",
+-        "eDP",
+-        "TV",
+-        "TVComposite",
+-        "TVSVideo",
+-        "TVComponent",
+-        "TVSCART",
+-        "TVC4",
+-        "DP"
+-    ];
+-
+-    width: monitorMouseArea.width;
+-    height: monitorMouseArea.height;
+-
+-    visible: (opacity > 0);
+-    opacity: output.connected ? 1.0 : 0.0;
+-
+-    Component.onCompleted: {
+-        root.updateRootProperties();
+-    }
+-
+-    SystemPalette {
+-        id: palette;
+-    }
+-
+-    MouseArea {
+-        id: monitorMouseArea;
+-        width: root.currentOutputWidth * screen.outputScale;
+-        height: root.currentOutputHeight * screen.outputScale
+-        anchors.centerIn: parent;
+-        //是否激活时的透明度
+-        opacity: root.output.enabled ? 1.0 : 0.3;
+-        transformOrigin: Item.Center;
+-        rotation: {
+-            if (output.rotation === KScreenOutput.None) {
+-                return 0;
+-            } else if (output.rotation === KScreenOutput.Left) {
+-                return 270;
+-            } else if (output.rotation === KScreenOutput.Inverted) {
+-                return 180;
+-            } else {
+-                return 90;
+-            }
+-        }
+-
+-        hoverEnabled: true;
+-        preventStealing: true;
+-
+-        drag {
+-            target: root.isDragEnabled && !root.isCloneMode && (root.enableCount >= 2) ? root : null;
+-            axis: Drag.XandYAxis;
+-            minimumX: 0;
+-            maximumX: screen.maxScreenSize.width - root.width;
+-            minimumY: 0;
+-            maximumY: screen.maxScreenSize.height - root.height;
+-
+-            filterChildren: false;
+-        }
+-
+-        drag.onActiveChanged: {
+-            /* If the drag is shorter then the animation then make sure
+-             * we won't end up in an inconsistent state */
+-            if (dragActiveChangedAnimation.running) {
+-                dragActiveChangedAnimation.complete();
+-            }
+-
+-            dragActiveChangedAnimation.running = true;
+-        }
+-
+-        onPressed: root.clicked();
+-        onReleased: root.mouseReleased(true)
+-        onRotationChanged: root.rotationChanged(false);
+-        onWidthChanged: root.widthChanged(false);
+-        onHeightChanged: root.heightChanged(false);
+-
+-        /* FIXME: This could be in 'Behavior', but MouseArea had
+-         * some complaints...to tired to investigate */
+-        PropertyAnimation {
+-            id: dragActiveChangedAnimation;
+-
+-            target: monitor;
+-            property: "opacity";
+-            from: monitorMouseArea.drag.active ? 0.7 : 1.0
+-            to: monitorMouseArea.drag.active ? 1.0 : 0.7
+-            duration: 100;
+-            easing.type: "OutCubic";
+-        }
+-
+-        Behavior on opacity {
+-            PropertyAnimation {
+-                property: "opacity";
+-                easing.type: "OutCubic";
+-                duration: 250;
+-            }
+-        }
+-
+-        Behavior on rotation {
+-            RotationAnimation {
+-                easing.type: "OutCubic"
+-                duration: 250;
+-                direction: RotationAnimation.Shortest;
+-            }
+-        }
+-
+-        Behavior on width {
+-            PropertyAnimation {
+-                property: "width";
+-                easing.type: "OutCubic";
+-                duration: 150;
+-            }
+-        }
+-
+-        Behavior on height {
+-            PropertyAnimation {
+-                property: "height";
+-                easing.type: "OutCubic";
+-                duration: 150;
+-            }
+-        }
+-
+-        Rectangle {
+-            id: monitor;
+-            anchors.fill: parent;
+-            //圆角
+-            radius: 8;
+-            //是否点击到屏幕
+-            color: root.focus? "#3D6BE5" : "#AEACAD";
+-            smooth: true;
+-            clip: true;
+-
+-            border {
+-                color: root.focus ? "#3498DB" : "#AED6F1";
+-                width: 1;
+-
+-                Behavior on color {
+-                    PropertyAnimation {
+-                        duration: 150;
+-                    }
+-                }
+-            }
+-
+-            Rectangle {
+-                id: posLabel;
+-                y: 4;
+-                x: 4;
+-                width: childrenRect.width + 5;
+-                height: childrenRect.height + 2;
+-                radius: 8;
+-                opacity: root.output.enabled && monitorMouseArea.drag.active ? 1.0 : 0.0;
+-                visible: opacity != 0.0;
+-
+-                color: "#101010";
+-
+-                Text {
+-                    id: posLabelText;
+-                    text: root.outputX + "," + root.outputY;
+-                    color: "white";
+-                    y: 2;
+-                    x: 2;
+-                }
+-            }
+-
+-            Item {
+-                //文字位置
+-                y: ((parent.height - orientationPanel.height) / 2) - (implicitHeight / 2)
+-
+-                anchors {
+-                    left: parent.left;
+-                    right: parent.right;
+-                    leftMargin: 5;
+-                    rightMargin: 5;
+-                }
+-
+-                Text {
+-                    id: labelVendor;
+-                    text: if (root.isCloneMode) {
+-                            return ("Unity");
+-                          } else {
+-                            return screenName[root.output.type];
+-                          }
+-
+-                    anchors {
+-                        verticalCenter: parent.verticalCenter;
+-                        left: parent.left;
+-                        right: parent.right;
+-                    }
+-                    horizontalAlignment: Text.AlignHCenter;
+-                    color: "#FFFFFF";
+-                    font.pixelSize: 12;
+-                    elide: Text.ElideRight;
+-                }
+-            }
+-        }
+-        Item {
+-            id: orientationPanelContainer;
+-
+-            anchors.fill: monitor;
+-
+-            visible: false
+-
+-            Rectangle {
+-                id: orientationPanel;
+-                height: 10;
+-                //底部颜色
+-                color:  palette.highlight ;
+-                smooth: true;
+-
+-                Behavior on color {
+-                    PropertyAnimation {
+-                        duration: 150;
+-                    }
+-                }
+-            }
+-        }
+-
+-        OpacityMask {
+-            anchors.fill: orientationPanelContainer;
+-            source: orientationPanelContainer;
+-            maskSource: monitor;
+-        }
+-    }
+-
+-    Behavior on opacity {
+-        PropertyAnimation {
+-            duration: 200;
+-            easing.type: "OutCubic";
+-        }
+-    }
+-}
+diff --git a/plugins/system/display_hw/qml/main.qml b/plugins/system/display_hw/qml/main.qml
+deleted file mode 100644
+index 2c93116..0000000
+--- a/plugins/system/display_hw/qml/main.qml
++++ /dev/null
+@@ -1,75 +0,0 @@
+-/*
+-    Copyright (C) 2012  Dan Vratil <dvratil@redhat.com>
+-
+-    This library is free software; you can redistribute it and/or
+-    modify it under the terms of the GNU Lesser General Public
+-    License as published by the Free Software Foundation; either
+-    version 2.1 of the License, or (at your option) any later version.
+-
+-    This library 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
+-    Lesser General Public License for more details.
+-
+-    You should have received a copy of the GNU Lesser General Public
+-    License along with this library; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+-
+-*/
+-
+-import QtQuick 2.1
+-import QtQuick.Controls 1.1 as Controls
+-import org.kde.kscreen 1.0
+-
+-Item {
+-    id: root;
+-
+-    property variant virtualScreen: null;
+-
+-    objectName: "root";
+-    focus: true;
+-
+-    SystemPalette {
+-        id: palette;
+-    }
+-
+-    MouseArea {
+-        anchors.fill: parent;
+-        focus: true;
+-
+-        Rectangle {
+-            id: background;
+-
+-            anchors.fill: parent;
+-            focus: true;
+-
+-            color: "transparent";
+-
+-            FocusScope {
+-
+-                id: outputViewFocusScope;
+-
+-                anchors.fill: parent;
+-                focus: true;
+-
+-                QMLScreen {
+-                    id: outputView;
+-                    anchors.fill: parent;
+-                    clip: true;
+-                    objectName: "outputView";
+-                }
+-            }
+-
+-            Column {
+-                anchors {
+-                    left: parent.left;
+-                    bottom: parent.bottom;
+-                    margins: 5;
+-                }
+-                spacing: 5;
+-            }
+-        }
+-
+-    }
+-
+-}
+diff --git a/plugins/system/display_hw/resolutionslider.cpp b/plugins/system/display_hw/resolutionslider.cpp
+deleted file mode 100644
+index 1e93606..0000000
+--- a/plugins/system/display_hw/resolutionslider.cpp
++++ /dev/null
+@@ -1,206 +0,0 @@
+-#include "resolutionslider.h"
+-#include "utils.h"
+-
+-#include <QGridLayout>
+-#include <QLabel>
+-#include <QSlider>
+-#include <QComboBox>
+-#include <QFile>
+-#include <QStyledItemDelegate>
+-
+-#include <QDBusInterface>
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-
+-static bool sizeLessThan(const QSize &sizeA, const QSize &sizeB)
+-{
+-    return sizeA.width() * sizeA.height() < sizeB.width() * sizeB.height();
+-}
+-
+-ResolutionSlider::ResolutionSlider(const KScreen::OutputPtr &output, QWidget *parent) :
+-    QWidget(parent),
+-    mOutput(output)
+-{
+-    QString sessionType = getenv("XDG_SESSION_TYPE");
+-    if (sessionType.compare("wayland", Qt::CaseSensitive)) {
+-       mExcludeModes.push_back(QSize(1152, 864));
+-    }
+-
+-    connect(output.data(), &KScreen::Output::currentModeIdChanged,
+-            this, &ResolutionSlider::slotOutputModeChanged);
+-    connect(output.data(), &KScreen::Output::modesChanged,
+-            this, &ResolutionSlider::init);
+-    init();
+-}
+-
+-ResolutionSlider::~ResolutionSlider()
+-{
+-}
+-
+-void ResolutionSlider::init()
+-{
+-    this->setMinimumSize(402, 30);
+-    this->setMaximumSize(1677215, 30);
+-    mModes.clear();
+-    Q_FOREACH (const KScreen::ModePtr &mode, mOutput->modes()) {
+-        if (mModes.contains(mode->size())
+-            || (mode->size().width() * mode->size().height()) < (1024 * 768)
+-            || mExcludeModes.contains(mode->size())) {
+-            continue;
+-        }
+-        mModes << mode->size();
+-    }
+-    std::sort(mModes.begin(), mModes.end(), sizeLessThan);
+-
+-    delete layout();
+-    delete mSmallestLabel;
+-    mSmallestLabel = nullptr;
+-    delete mBiggestLabel;
+-    mBiggestLabel = nullptr;
+-    delete mCurrentLabel;
+-    mCurrentLabel = nullptr;
+-    delete mSlider;
+-    mSlider = nullptr;
+-    delete mComboBox;
+-    mComboBox = nullptr;
+-
+-    QGridLayout *layout = new QGridLayout(this);
+-    int margin = layout->margin();
+-    // Avoid double margins
+-    layout->setContentsMargins(0, 0, 0, 0);
+-    if (!mModes.empty()) {
+-        std::reverse(mModes.begin(), mModes.end());
+-        mComboBox = new QComboBox(this);
+-        mComboBox->setMinimumSize(402, 30);
+-        mComboBox->setMaximumSize(1677215, 30);
+-
+-        int currentModeIndex = -1;
+-        int preferredModeIndex = -1;
+-        Q_FOREACH (const QSize &size, mModes) {
+-#ifdef __sw_64__
+-            if (size.width() < int(1920)) {
+-                continue;
+-            }
+-#endif
+-            mComboBox->addItem(Utils::sizeToString(size));
+-
+-            if (mOutput->currentMode() && (mOutput->currentMode()->size() == size)) {
+-                currentModeIndex = mComboBox->count() - 1;
+-            } else if (mOutput->preferredMode() && (mOutput->preferredMode()->size() == size)) {
+-                preferredModeIndex = mComboBox->count() - 1;
+-            }
+-        }
+-        if (currentModeIndex != -1) {
+-            mComboBox->setCurrentIndex(currentModeIndex);
+-        } else if (preferredModeIndex != -1) {
+-            mComboBox->setCurrentIndex(preferredModeIndex);
+-        }
+-
+-        layout->addWidget(mComboBox, 0, 0, 1, 1);
+-        connect(mComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+-                this, &ResolutionSlider::slotValueChanged, Qt::UniqueConnection);
+-        // bug#75687触发两次应用信号
+-        // Q_EMIT resolutionChanged(mModes.at(mComboBox->currentIndex()));
+-    } else {
+-        mCurrentLabel = new QLabel(this);
+-        mCurrentLabel->setAlignment(Qt::AlignCenter);
+-        layout->addWidget(mCurrentLabel, 1, 0, 1, 3);
+-
+-        if (mModes.isEmpty()) {
+-            mCurrentLabel->setText(tr("No available resolutions"));
+-        } else if (mModes.count() == 1) {
+-            mCurrentLabel->setText(Utils::sizeToString(mModes.first()));
+-        } else {
+-            // No double margins left and right, but they are needed on top and bottom
+-            layout->setContentsMargins(0, margin, 0, margin);
+-            mSlider = new Uslider(Qt::Horizontal, this);
+-            mSlider->setTickInterval(1);
+-            mSlider->setTickPosition(QSlider::TicksBelow);
+-            mSlider->setSingleStep(1);
+-            mSlider->setPageStep(1);
+-            mSlider->setMinimum(0);
+-            mSlider->setMaximum(mModes.size() - 1);
+-            mSlider->setSingleStep(1);
+-            if (mOutput->currentMode()) {
+-                mSlider->setValue(mModes.indexOf(mOutput->currentMode()->size()));
+-            } else if (mOutput->preferredMode()) {
+-                mSlider->setValue(mModes.indexOf(mOutput->preferredMode()->size()));
+-            } else {
+-                mSlider->setValue(mSlider->maximum());
+-            }
+-            layout->addWidget(mSlider, 0, 1);
+-            connect(mSlider, &QSlider::valueChanged,
+-                    this, &ResolutionSlider::slotValueChanged);
+-
+-            mSmallestLabel = new QLabel(this);
+-            mSmallestLabel->setText(Utils::sizeToString(mModes.first()));
+-            layout->addWidget(mSmallestLabel, 0, 0);
+-            mBiggestLabel = new QLabel(this);
+-            mBiggestLabel->setText(Utils::sizeToString(mModes.last()));
+-            layout->addWidget(mBiggestLabel, 0, 2);
+-
+-            const auto size = mModes.at(mSlider->value());
+-            mCurrentLabel->setText(Utils::sizeToString(size));
+-            Q_EMIT resolutionChanged(size);
+-        }
+-    }
+-}
+-
+-QSize ResolutionSlider::currentResolution() const
+-{
+-    if (mModes.isEmpty()) {
+-        return QSize();
+-    }
+-
+-    if (mModes.size() < 2) {
+-        return mModes.first();
+-    }
+-
+-    if (mSlider) {
+-        return mModes.at(mSlider->value());
+-    } else {
+-        const int i = mComboBox->currentIndex();
+-        return i > -1 ? mModes.at(i) : QSize();
+-    }
+-}
+-
+-QSize ResolutionSlider::getMaxResolution() const
+-{
+-    if (mModes.isEmpty()) {
+-        return QSize();
+-    }
+-    return mModes.first();
+-}
+-
+-void ResolutionSlider::setResolution(const QSize &size)
+-{
+-    mComboBox->blockSignals(true);
+-    mComboBox->setCurrentIndex(mModes.indexOf(size));
+-    mComboBox->blockSignals(false);
+-}
+-
+-void ResolutionSlider::slotOutputModeChanged()
+-{
+-    if (!mOutput->currentMode()) {
+-        return;
+-    }
+-
+-    if (mSlider) {
+-        mSlider->blockSignals(true);
+-        mSlider->setValue(mModes.indexOf(mOutput->currentMode()->size()));
+-        mSlider->blockSignals(false);
+-    } else if (mComboBox) {
+-        mComboBox->blockSignals(true);
+-        mComboBox->setCurrentIndex(mModes.indexOf(mOutput->currentMode()->size()));
+-        mComboBox->blockSignals(false);
+-    }
+-}
+-
+-void ResolutionSlider::slotValueChanged(int value)
+-{
+-    const QSize &size = mModes.at(value);
+-    if (mCurrentLabel) {
+-        mCurrentLabel->setText(Utils::sizeToString(size));
+-    }
+-    Q_EMIT resolutionChanged(size);
+-}
+diff --git a/plugins/system/display_hw/resolutionslider.h b/plugins/system/display_hw/resolutionslider.h
+deleted file mode 100644
+index 9f870b7..0000000
+--- a/plugins/system/display_hw/resolutionslider.h
++++ /dev/null
+@@ -1,53 +0,0 @@
+-#ifndef RESOLUTIONSLIDER_H
+-#define RESOLUTIONSLIDER_H
+-
+-#include <QWidget>
+-#include <QSet>
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-#include "uslider.h"
+-
+-class QSlider;
+-class QLabel;
+-class QComboBox;
+-class QStyledItemDelegate;
+-
+-class ResolutionSlider : public QWidget
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit ResolutionSlider(const KScreen::OutputPtr &output, QWidget *parent = nullptr);
+-    ~ResolutionSlider() override;
+-
+-    QSize currentResolution() const;
+-    QSize getMaxResolution() const;
+-
+-    void setResolution(const QSize &size);
+-
+-Q_SIGNALS:
+-    void resolutionChanged(const QSize &size, bool emitFlag = true);
+-
+-public Q_SLOTS:
+-    void slotValueChanged(int);
+-    void slotOutputModeChanged();
+-
+-private:
+-    void init();
+-
+-private:
+-    KScreen::OutputPtr mOutput;
+-
+-    QList<QSize> mModes;
+-    QList<QSize> mExcludeModes;
+-
+-    QLabel *mSmallestLabel = nullptr;
+-    QLabel *mBiggestLabel = nullptr;
+-    QLabel *mCurrentLabel = nullptr;
+-    Uslider *mSlider = nullptr;
+-    QComboBox *mComboBox = nullptr;
+-
+-    bool mIsWayland = false;
+-};
+-
+-#endif // RESOLUTIONSLIDER_H
+diff --git a/plugins/system/display_hw/scalesize.h b/plugins/system/display_hw/scalesize.h
+deleted file mode 100644
+index e75c410..0000000
+--- a/plugins/system/display_hw/scalesize.h
++++ /dev/null
+@@ -1,42 +0,0 @@
+-#ifndef SCALESIZE_H
+-#define SCALESIZE_H
+-
+-#include <QSize>
+-typedef enum{
+-    RESOLUTION,
+-    ORIENTATION,
+-    FREQUENCY
+-}CONFIG;
+-
+-#define SCALE_SCHEMAS "org.ukui.SettingsDaemon.plugins.xsettings"
+-#define SCALE_KEY     "scaling-factor"
+-
+-const QSize KRsolution(1920, 1080);
+-
+-const QVector<QSize> k125Scale{QSize(1280, 1024), QSize(1440, 900), QSize(1600, 900),
+-                               QSize(1680, 1050)};
+-
+-const QVector<QSize> k150Scale{ QSize(1920, 1080), QSize(1920, 1200),
+-                               QSize(1920, 1280), QSize(2048, 1080), QSize(2048, 1280),
+-                               QSize(2160, 1440), QSize(2560, 1440),QSize(3840, 2160)};
+-
+-const QVector<QSize> k175Scale{QSize(2048, 1080), QSize(2048, 1280), QSize(2160, 1440),
+-                               QSize(2560, 1440), QSize(3840, 2160)};
+-
+-const QVector<QSize> k200Scale{QSize(2048, 1080), QSize(2048, 1280), QSize(2160, 1440),
+-                               QSize(2560, 1440), QSize(3840, 2160)};
+-
+-const QVector<QSize> k250Scale{QSize(2560, 1440), QSize(3840, 2160)};
+-
+-const QVector<QSize> k275Scale{QSize(3840, 2160)};
+-
+-
+-extern QSize  mScaleSize;
+-
+-extern QSize mScaleSizeRes;
+-
+-extern double mScreenScale;
+-
+-extern int changeItm;
+-
+-#endif // SCALESIZE_H
+diff --git a/plugins/system/display_hw/screenConfig.h b/plugins/system/display_hw/screenConfig.h
+deleted file mode 100644
+index 82f0672..0000000
+--- a/plugins/system/display_hw/screenConfig.h
++++ /dev/null
+@@ -1,35 +0,0 @@
+-#ifndef SCREENCONFIG_H
+-#define SCREENCONFIG_H
+-
+-#include <QDBusArgument>
+-#include <QString>
+-
+-struct ScreenConfig
+-{
+-    QString screenId;
+-    QString screenModeId;
+-    int screenPosX;
+-    int screenPosY;
+-    bool primary;
+-
+-    friend QDBusArgument &operator<<(QDBusArgument &argument, const ScreenConfig &screenStruct)
+-    {
+-        argument.beginStructure();
+-        argument << screenStruct.screenId  << screenStruct.screenModeId << screenStruct.screenPosX
+-                 << screenStruct.screenPosY << screenStruct.primary;
+-        argument.endStructure();
+-        return argument;
+-    }
+-
+-    friend const QDBusArgument &operator>>(const QDBusArgument &argument, ScreenConfig &screenStruct)
+-    {
+-        argument.beginStructure();
+-        argument >> screenStruct.screenId >> screenStruct.screenModeId
+-                 >> screenStruct.screenPosX >> screenStruct.screenPosY >> screenStruct.primary;
+-        argument.endStructure();
+-        return argument;
+-    }
+-};
+-Q_DECLARE_METATYPE(ScreenConfig)
+-
+-#endif // SCREENCONFIG_H
+diff --git a/plugins/system/display_hw/unifiedoutputconfig.cpp b/plugins/system/display_hw/unifiedoutputconfig.cpp
+deleted file mode 100644
+index a8f8e3b..0000000
+--- a/plugins/system/display_hw/unifiedoutputconfig.cpp
++++ /dev/null
+@@ -1,489 +0,0 @@
+-#include "unifiedoutputconfig.h"
+-#include "resolutionslider.h"
+-#include "utils.h"
+-
+-#include <QComboBox>
+-#include <QIcon>
+-#include <QLabel>
+-#include <QGridLayout>
+-#include <QSpacerItem>
+-#include <QCheckBox>
+-#include <QGroupBox>
+-#include <QFormLayout>
+-#include <QStyledItemDelegate>
+-#include <QFile>
+-#include <QVector>
+-#include <QCryptographicHash>
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-#include <KF5/KScreen/kscreen/config.h>
+-#include <KF5/KScreen/kscreen/getconfigoperation.h>
+-
+-#include <KF5/KConfigCore/KSharedConfig>
+-#include <KF5/KConfigCore/KConfigGroup>
+-
+-bool operator<(const QSize &s1, const QSize &s2)
+-{
+-    return s1.width() * s1.height() < s2.width() * s2.height();
+-}
+-
+-template<>
+-bool qMapLessThanKey(const QSize &s1, const QSize &s2)
+-{
+-    return s1 < s2;
+-}
+-
+-UnifiedOutputConfig::UnifiedOutputConfig(const KScreen::ConfigPtr &config, QWidget *parent) :
+-    OutputConfig(parent),
+-    mConfig(config)
+-{
+-
+-}
+-
+-UnifiedOutputConfig::~UnifiedOutputConfig()
+-{
+-}
+-
+-void UnifiedOutputConfig::setOutput(const KScreen::OutputPtr &output)
+-{
+-    mOutput = output;
+-
+-    mClones.clear();
+-    mClones.reserve(mOutput->clones().count());
+-    Q_FOREACH (int id, mOutput->clones()) {
+-        mClones << mConfig->output(id);
+-    }
+-    mClones << mOutput;
+-
+-    OutputConfig::setOutput(output);
+-}
+-
+-void UnifiedOutputConfig::initUi()
+-{
+-    QVBoxLayout *vbox = new QVBoxLayout(this);
+-    vbox->setContentsMargins(0, 0, 0, 0);
+-    setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+-
+-    KScreen::OutputPtr fakeOutput = createFakeOutput();
+-    mResolution = new ResolutionSlider(fakeOutput, this);
+-
+-    mResolution->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    mResolution->setMinimumSize(402, 30);
+-
+-    //监听,否则无法处理修改分辨率/刷新率未保存
+-    connect(mOutput.data(), &KScreen::Output::currentModeIdChanged,
+-            this, &UnifiedOutputConfig::slotRestoreResoltion);
+-
+-    connect(mOutput.data(), &KScreen::Output::rotationChanged,
+-            this, &UnifiedOutputConfig::slotRestoreRatation);
+-
+-    QLabel *resLabel = new QLabel(this);
+-    resLabel->setText(tr("resolution"));
+-    resLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    resLabel->setMinimumSize(118, 30);
+-    resLabel->setMaximumSize(118, 30);
+-
+-    QHBoxLayout *resLayout = new QHBoxLayout();
+-    resLayout->addWidget(resLabel);
+-    resLayout->addWidget(mResolution);
+-
+-    QFrame *resFrame = new QFrame(this);
+-    resFrame->setFrameShape(QFrame::Shape::Box);
+-    resFrame->setLayout(resLayout);
+-
+-    resFrame->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    resFrame->setMinimumSize(552, 50);
+-    resFrame->setMaximumSize(16777215, 50);
+-
+-    vbox->addWidget(resFrame);
+-    connect(mResolution, &ResolutionSlider::resolutionChanged,
+-            this, [=](QSize size, bool emitFlag){
+-                slotResolutionChanged(size, emitFlag);
+-            });
+-
+-    // 方向下拉框
+-    mRotation = new QComboBox(this);
+-
+-    mRotation->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    mRotation->setMinimumSize(402, 30);
+-    mRotation->setMaximumSize(16777215, 30);
+-
+-    QLabel *rotateLabel = new QLabel(this);
+-    rotateLabel->setText(tr("orientation"));
+-    rotateLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    rotateLabel->setMinimumSize(118, 30);
+-    rotateLabel->setMaximumSize(118, 30);
+-
+-    mRotation->addItem(tr("arrow-up"), KScreen::Output::None);
+-    mRotation->addItem(tr("90° arrow-right"), KScreen::Output::Right);
+-    mRotation->addItem(tr("90° arrow-left"), KScreen::Output::Left);
+-    mRotation->addItem(tr("arrow-down"), KScreen::Output::Inverted);
+-
+-    int index = mRotation->findData(mOutput->rotation());
+-    mRotation->setCurrentIndex(index);
+-
+-    connect(mRotation, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+-            this, &UnifiedOutputConfig::slotRotationChangedDerived);
+-
+-    QHBoxLayout *roatateLayout = new QHBoxLayout();
+-    roatateLayout->addWidget(rotateLabel);
+-    roatateLayout->addWidget(mRotation);
+-
+-    QFrame *rotateFrame = new QFrame(this);
+-    rotateFrame->setFrameShape(QFrame::Shape::Box);
+-    rotateFrame->setLayout(roatateLayout);
+-
+-    rotateFrame->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    rotateFrame->setMinimumSize(552, 50);
+-    rotateFrame->setMaximumSize(16777215, 50);
+-
+-    vbox->addWidget(rotateFrame);
+-
+-    // 统一输出刷新率下拉框
+-    mRefreshRate = new QComboBox(this);
+-    mRefreshRate->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    mRefreshRate->setMinimumSize(402, 30);
+-    mRefreshRate->setMaximumSize(16777215, 30);
+-
+-    QLabel *freshLabel = new QLabel(this);
+-    freshLabel->setText(tr("frequency"));
+-    freshLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    freshLabel->setMinimumSize(118, 30);
+-    freshLabel->setMaximumSize(118, 30);
+-
+-    mRefreshRate->addItem(tr("auto"), -1);
+-
+-    QHBoxLayout *freshLayout = new QHBoxLayout();
+-    freshLayout->addWidget(freshLabel);
+-    freshLayout->addWidget(mRefreshRate);
+-
+-    QFrame *freshFrame = new QFrame(this);
+-    freshFrame->setFrameShape(QFrame::Shape::Box);
+-    freshFrame->setLayout(freshLayout);
+-
+-    vbox->addWidget(freshFrame);
+-
+-    freshFrame->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+-    freshFrame->setMinimumSize(552, 50);
+-    freshFrame->setMaximumSize(16777215, 50);
+-
+-    slotResolutionChanged(mResolution->currentResolution(), false);
+-    connect(mRefreshRate, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+-        this, &UnifiedOutputConfig::slotRefreshRateChanged);
+-    QObject::connect(new KScreen::GetConfigOperation(), &KScreen::GetConfigOperation::finished, this,
+-                         [&](KScreen::ConfigOperation *op) {
+-        KScreen::ConfigPtr sConfig = qobject_cast<KScreen::GetConfigOperation *>(op)->config();
+-        KScreen::OutputPtr sOutput = sConfig -> primaryOutput();
+-
+-        for (int i = 0; i < mRefreshRate->count(); ++i) {
+-            if (!sOutput.isNull() && !sOutput->currentMode().isNull() && mRefreshRate->itemText(i) == refreshRateToText(sOutput->currentMode()->refreshRate())) {
+-                mRefreshRate->setCurrentIndex(i);
+-            }
+-        }
+-    });
+-    initscale(vbox);
+-}
+-
+-void UnifiedOutputConfig::initscale(QVBoxLayout *vbox)
+-{
+-    QFrame *scaleFrame = new QFrame(this);
+-    vbox->addWidget(scaleFrame);
+-    scaleFrame->hide();
+-}
+-
+-void UnifiedOutputConfig::slotScaleChanged(int index)
+-{
+-    Q_EMIT scaleChanged(mScaleCombox->itemData(index).toDouble());
+-}
+-
+-KScreen::OutputPtr UnifiedOutputConfig::createFakeOutput()
+-{
+-    // Find set of common resolutions
+-    QMap<QSize, int> commonSizes;
+-    Q_FOREACH (const KScreen::OutputPtr &clone, mClones) {
+-        QList<QSize> processedSizes;
+-        Q_FOREACH (const KScreen::ModePtr &mode, clone->modes()) {
+-            // Make sure we don't count some modes multiple times because of different
+-            // refresh rates
+-            if (processedSizes.contains(mode->size())) {
+-                continue;
+-            }
+-
+-            processedSizes << mode->size();
+-
+-            if (commonSizes.contains(mode->size())) {
+-                commonSizes[mode->size()]++;
+-            } else {
+-                commonSizes.insert(mode->size(), 1);
+-            }
+-        }
+-    }
+-
+-    KScreen::OutputPtr fakeOutput(new KScreen::Output);
+-
+-    // This will give us list of resolution that are shared by all outputs
+-    QList<QSize> commonResults = commonSizes.keys(mClones.count());
+-    // If there are no common resolution, fallback to smallest preferred mode
+-    if (commonResults.isEmpty()) {
+-        QSize smallestMode;
+-        Q_FOREACH (const KScreen::OutputPtr &clone, mClones) {
+-            if (!smallestMode.isValid() || clone->preferredMode()->size() < smallestMode) {
+-                smallestMode = clone->preferredMode()->size();
+-            }
+-        }
+-        commonResults << smallestMode;
+-    }
+-    std::sort(commonResults.begin(), commonResults.end());
+-
+-    KScreen::ModeList modes;
+-    Q_FOREACH (const QSize &size, commonResults) {
+-        KScreen::ModePtr mode(new KScreen::Mode);
+-        mode->setSize(size);
+-        mode->setId(Utils::sizeToString(size));
+-        mode->setName(mode->id());
+-        modes.insert(mode->id(), mode);
+-    }
+-    fakeOutput->setModes(modes);
+-    if (!mOutput->currentModeId().isEmpty()) {
+-        fakeOutput->setCurrentModeId(Utils::sizeToString(mOutput->currentMode()->size()));
+-    } else {
+-        fakeOutput->setCurrentModeId(Utils::sizeToString(commonResults.last()));
+-    }
+-
+-    return fakeOutput;
+-}
+-
+-void UnifiedOutputConfig::slotResolutionChanged(const QSize &size, bool emitFlag = false)
+-{
+-    // Ignore disconnected outputs
+-    if (!size.isValid()) {
+-        return;
+-    }
+-    bool mIsModeInit = true;
+-    QVector<QString>Vrefresh;
+-    bool mIsCloneMode = isCloneMode();
+-    mRefreshRate->blockSignals(true);
+-    mRefreshRate->clear();
+-    mRefreshRate->blockSignals(false);
+-    Q_FOREACH (const KScreen::OutputPtr &clone, mClones) {
+-        const QString &id = findBestMode(clone, size, emitFlag);
+-        if (id.isEmpty() || id == "auto-fill") {
+-            // FIXME: Error?
+-            return;
+-        }
+-        //本来就是镜像模式且当前分辨率就是选中分辨率,就不需要重新设置显示参数
+-        //用于镜像模式下刚打开控制面板时的显示,否则显示的不是实际刷新率而是findBestMode
+-        if (!mIsCloneMode || size != clone->currentMode()->size()) {
+-            mIsModeInit = false;
+-            clone->blockSignals(true); //必须加blockSignals,否则在这里就会触发currentModeIdChanged的信号
+-            clone->setCurrentModeId(id);
+-            clone->setPos(QPoint(0, 0));
+-            clone->blockSignals(false);
+-        }
+-
+-        QList<KScreen::ModePtr> modes;
+-        Q_FOREACH (const KScreen::ModePtr &mode, clone->modes()) {
+-            if (mode->size() == size) {
+-                modes << mode;
+-            }
+-        }
+-
+-        QVector<QString>VrefreshTemp;
+-        for (int i = 0, total = modes.count(); i < total; ++i) {
+-           const KScreen::ModePtr mode = modes.at(i);
+-
+-           bool alreadyExisted = false; //判断该显示器的刷新率是否有重复的,确保同一刷新率在一个屏幕上只出现一次
+-           for (int j = 0; j < VrefreshTemp.size(); ++j) {
+-               if (refreshRateToText(mode->refreshRate()) == VrefreshTemp[j]) {
+-                   alreadyExisted = true;
+-                   break;
+-               }
+-           }
+-           if (alreadyExisted == false) {   //不添加重复的项
+-               VrefreshTemp.append(refreshRateToText(mode->refreshRate()));
+-           }
+-        }
+-
+-        for (int i = 0; i < VrefreshTemp.size(); ++i) {
+-            Vrefresh.append(VrefreshTemp[i]);
+-        }
+-    }
+-
+-    for (int i = 0; i < Vrefresh.size(); ++i) {
+-        if (Vrefresh.count(Vrefresh[i]) == mClones.size()) { //该刷新率出现次数等于屏幕数,即每个屏幕都有该刷新率
+-            bool existFlag = false;
+-            for (int j = 0; j < mRefreshRate->count(); ++j) {  //已经存在就不再添加
+-                if (Vrefresh[i] == mRefreshRate->itemText(j)) {
+-                    existFlag = true;
+-                    break;
+-                }
+-            }
+-            if (existFlag == false) {  //不存在添加到容器中
+-                mRefreshRate->blockSignals(true);
+-                mRefreshRate->addItem(Vrefresh[i]);
+-                mRefreshRate->blockSignals(false);
+-            }
+-        }
+-    }
+-
+-    if (mRefreshRate->count() > 1) {
+-        float currentRereshRate = mClones[0]->currentMode()->refreshRate();
+-        for (int i = 0; i < mRefreshRate->count(); i++) {
+-            if (refreshRateToText(currentRereshRate) == mRefreshRate->itemText(i)) {
+-                mRefreshRate->blockSignals(true);
+-                mRefreshRate->setCurrentIndex(i);
+-                mRefreshRate->blockSignals(false);
+-                break;
+-            }
+-        }
+-    }
+-
+-    if (mRefreshRate->count() == 0) {
+-        mRefreshRate->blockSignals(true);
+-        mRefreshRate->addItem(tr("auto"), -1);
+-        mRefreshRate->blockSignals(false);
+-    }
+-    if (emitFlag && !mIsModeInit){
+-        changeItm = RESOLUTION;
+-        Q_EMIT changed();
+-    }
+-}
+-
+-void UnifiedOutputConfig::slotRefreshRateChanged(int index)
+-{
+-    Q_FOREACH (const KScreen::OutputPtr &clone, mClones) {
+-        Q_FOREACH (const KScreen::ModePtr &mode, clone->modes()) {
+-            if (mode->size() == mResolution->currentResolution() && \
+-                    refreshRateToText(mode->refreshRate()) == mRefreshRate->itemText(index)) {
+-                clone->blockSignals(true);
+-                clone->setCurrentModeId(mode->id());
+-                clone->blockSignals(false);
+-            }
+-        }
+-    }
+-    changeItm = FREQUENCY;
+-    Q_EMIT changed();
+-}
+-
+-QString UnifiedOutputConfig::findBestMode(const KScreen::OutputPtr &output, const QSize &size, bool isUser)
+-{
+-    float refreshRate = 0;
+-    QString id = "auto-fill";
+-    Q_FOREACH (const KScreen::ModePtr &mode, output->modes()) {
+-        if (mode->size() == size && mode->refreshRate() > refreshRate) {
+-            refreshRate = mode->refreshRate();
+-            id = mode->id();
+-        }
+-    }
+-
+-    // 第一次开启镜像模式读取kwin配置
+-    if (!isUser) {
+-        QVector<KScreen::Output *> outputs;
+-        Q_FOREACH (const auto &output, mConfig->outputs()) {
+-            outputs << output.data();
+-        }
+-
+-        QCryptographicHash hash(QCryptographicHash::Md5);
+-        Q_FOREACH (const KScreen::Output *output, outputs) {
+-            hash.addData(output->uuid());
+-        }
+-        QByteArray groupUuid = QByteArray(1, '1').append(hash.result().toHex()).left(15);
+-        const auto config = KSharedConfig::openConfig(QLatin1String("ukui-kwinrc"));
+-        const auto outputGroup = config->group("DrmOutputs");
+-        const auto configGroup = outputGroup.group(groupUuid);
+-
+-        QSize outputSize;
+-        Q_FOREACH (const auto &aimOutput, outputs) {
+-            const auto outputConfig = configGroup.group(output->uuid());
+-            QString res = outputConfig.readEntry("Mode");
+-            // don't change mode if cannot found config
+-            if (outputConfig.hasKey("Mode")) {
+-                QStringList list = res.split(QLatin1String("_"));
+-                QStringList size = list[0].split(QLatin1String("x"));
+-                if (list.size() > 1 && size.size() > 1) {
+-                    outputSize = QSize(size[0].toInt(), size[1].toInt());
+-                    int refreshRate = list[1].toInt();
+-                    Q_FOREACH (const auto &m, output->modes()) {
+-                        if (m->size() == outputSize && m->refreshRate() * 1000 == refreshRate && output == aimOutput) {
+-                            id = m->id();
+-                        }
+-                    }
+-                }
+-            }
+-        }
+-        if (outputSize.isValid()) {
+-            mResolution->setResolution(outputSize);
+-            if (outputSize != size) {
+-                slotResolutionChanged(outputSize, false);  //重新填充刷新率
+-                id = "auto-fill";  //已经填充了刷新率
+-            }
+-        }
+-    }
+-    return id;
+-}
+-
+-// 统一输出方向信号改变
+-void UnifiedOutputConfig::slotRotationChangedDerived(int index)
+-{
+-    KScreen::Output::Rotation rotation = static_cast<KScreen::Output::Rotation>(mRotation->itemData(index).toInt());
+-    Q_FOREACH (const KScreen::OutputPtr &clone, mClones) {
+-        if (clone->isConnected() && clone->isEnabled()) {
+-            clone->setRotation(rotation);
+-            clone->setPos(QPoint(0, 0));
+-        }
+-    }
+-    changeItm = ORIENTATION;
+-    Q_EMIT changed();
+-}
+-
+-void UnifiedOutputConfig::slotRestoreResoltion()
+-{
+-    if (!mOutput->currentMode()) {
+-        return;
+-    }
+-    if (mResolution->currentResolution() != mOutput->currentMode()->size()) { //分辨率改变时,触发该信号重新加载刷新率,用于修改分辨率之后但未保存
+-        mResolution->setResolution(mOutput->currentMode()->size()); //这里面不会触发分辨率改变信号
+-        slotResolutionChanged(mOutput->currentMode()->size(), false);
+-    } else { //分辨率未修改,刷新率修改,用于修改刷新率之后但未保存
+-        for (int i = 0; i < mRefreshRate->count(); i++) {
+-           if (refreshRateToText(mOutput->currentMode()->refreshRate()) == mRefreshRate->itemText(i)\
+-                   || mRefreshRate->count() == 1) {
+-               mRefreshRate->blockSignals(true);
+-               mRefreshRate->setCurrentIndex(i);
+-               mRefreshRate->blockSignals(false);
+-               break;
+-           }
+-        }
+-    }
+-}
+-
+-void UnifiedOutputConfig::slotRestoreRatation()
+-{
+-    mRotation->blockSignals(true);
+-    mRotation->setCurrentIndex(mRotation->findData(mOutput->rotation()));
+-    mRotation->blockSignals(false);
+-}
+-
+-bool UnifiedOutputConfig::isCloneMode()
+-{
+-    /*
+-     *不能直接用isVisible判断是否为镜像模式
+-     *设置镜像模式时,visiable总是true,但此时还未设置currentMode
+-     *导致某些情况异常
+-     */
+-    //return this->isVisible();    //显示则表示是统一输出
+-    if (!mClones.isEmpty() && mClones[0] && mClones[0]->currentMode()) {
+-        QSize cloneSize(mClones[0]->currentMode()->size());
+-        QPoint clonePos(mClones[0]->pos());
+-        Q_FOREACH (const KScreen::OutputPtr &clone, mClones) {
+-            if (clone->currentMode() && (clone->currentMode()->size() != cloneSize || clone->pos() != clonePos)) {
+-                return false;
+-            }
+-        }
+-        return true;
+-    } else {
+-        return false;
+-    }
+-
+-}
+-
+diff --git a/plugins/system/display_hw/unifiedoutputconfig.h b/plugins/system/display_hw/unifiedoutputconfig.h
+deleted file mode 100644
+index 9260417..0000000
+--- a/plugins/system/display_hw/unifiedoutputconfig.h
++++ /dev/null
+@@ -1,46 +0,0 @@
+-#ifndef UNIFIEDOUTPUTCONFIG_H
+-#define UNIFIEDOUTPUTCONFIG_H
+-
+-#include "outputconfig.h"
+-#include <QVBoxLayout>
+-
+-namespace KScreen {
+-class Output;
+-class Config;
+-}
+-
+-class UnifiedOutputConfig : public OutputConfig
+-{
+-    Q_OBJECT
+-public:
+-    explicit UnifiedOutputConfig(const KScreen::ConfigPtr &config, QWidget *parent);
+-    ~UnifiedOutputConfig() override;
+-
+-    void setOutput(const KScreen::OutputPtr &output) override;
+-    bool isCloneMode();
+-private Q_SLOTS:
+-    void slotResolutionChanged(const QSize &size, bool emitFlag);
+-
+-    // 统一输出后调整屏幕方向统一代码
+-    void slotRotationChangedDerived(int index);
+-    void slotRestoreResoltion();
+-    void slotRestoreRatation();
+-    void slotRefreshRateChanged(int index);
+-    void slotScaleChanged(int index);
+-
+-Q_SIGNALS:
+-    void scaleChanged(double scale);
+-
+-private:
+-    void initUi() override;
+-    void initscale(QVBoxLayout *vbox);
+-    KScreen::OutputPtr createFakeOutput();
+-    QString findBestMode(const KScreen::OutputPtr &output, const QSize &size, bool isUser);
+-
+-private:
+-    KScreen::ConfigPtr mConfig;
+-    QList<KScreen::OutputPtr> mClones;
+-    QComboBox *mScaleCombox = nullptr;
+-};
+-
+-#endif // UNIFIEDOUTPUTCONFIG_H
+diff --git a/plugins/system/display_hw/utils.cpp b/plugins/system/display_hw/utils.cpp
+deleted file mode 100644
+index e075c90..0000000
+--- a/plugins/system/display_hw/utils.cpp
++++ /dev/null
+@@ -1,24 +0,0 @@
+-#include "utils.h"
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-#include <KF5/KScreen/kscreen/edid.h>
+-
+-QString Utils::outputName(const KScreen::OutputPtr &output)
+-{
+-    return outputName(output.data());
+-}
+-
+-QString Utils::outputName(const KScreen::Output *output)
+-{
+-    if (output != nullptr) {
+-        return kOutput.at(output->type());
+-    }
+-
+-    return kOutput.at(0);
+-}
+-
+-QString Utils::sizeToString(const QSize &size)
+-{
+-    return QStringLiteral("%1x%2").arg(size.width()).arg(size.height());
+-}
+-
+diff --git a/plugins/system/display_hw/utils.h b/plugins/system/display_hw/utils.h
+deleted file mode 100644
+index d1a3be6..0000000
+--- a/plugins/system/display_hw/utils.h
++++ /dev/null
+@@ -1,36 +0,0 @@
+-#ifndef KSCREEN_KCM_UTILS_H
+-#define KSCREEN_KCM_UTILS_H
+-
+-#include <QString>
+-#include <QSize>
+-#include <QStringList>
+-
+-#include <KF5/KScreen/kscreen/types.h>
+-#include <KF5/KScreen/kscreen/output.h>
+-
+-const QStringList kOutput {
+-    "Unknown",
+-    "VGA",
+-    "DVI",
+-    "DVII",
+-    "DVIA",
+-    "DVID",
+-    "HDMI",
+-    "eDP",
+-    "TV",
+-    "TVComposite",
+-    "TVSVideo",
+-    "TVComponent",
+-    "TVSCART",
+-    "TVC4",
+-    "DP"
+-};
+-
+-namespace Utils {
+-QString outputName(const KScreen::Output *output);
+-QString outputName(const KScreen::OutputPtr &output);
+-
+-QString sizeToString(const QSize &size);
+-}
+-
+-#endif
+diff --git a/plugins/system/display_hw/widget.cpp b/plugins/system/display_hw/widget.cpp
+deleted file mode 100644
+index 22e014b..0000000
+--- a/plugins/system/display_hw/widget.cpp
++++ /dev/null
+@@ -1,2440 +0,0 @@
+-#include "widget.h"
+-#include "controlpanel.h"
+-#include "declarative/qmloutput.h"
+-#include "declarative/qmlscreen.h"
+-#include "utils.h"
+-#include "ui_display_hw.h"
+-#include "displayperformancedialog.h"
+-#include "colorinfo.h"
+-#include "ukcccommon.h"
+-using namespace ukcc;
+-#include "../../../shell/mainwindow.h"
+-
+-#include <QHBoxLayout>
+-#include <QTimer>
+-#include <QLabel>
+-#include <QVBoxLayout>
+-#include <QSplitter>
+-#include <QtGlobal>
+-#include <QQuickView>
+-#include <qquickitem.h>
+-#include <QDebug>
+-#include <QPushButton>
+-#include <QProcess>
+-#include <QtAlgorithms>
+-#include <QtXml>
+-#include <QDomDocument>
+-#include <QDir>
+-#include <QStandardPaths>
+-#include <QComboBox>
+-#include <QQuickWidget>
+-#include <QMessageBox>
+-#include <QDBusConnection>
+-#include <QJsonDocument>
+-#include <QtConcurrent>
+-#include <QDBusMetaType>
+-
+-#include <KF5/KScreen/kscreen/output.h>
+-#include <KF5/KScreen/kscreen/edid.h>
+-#include <KF5/KScreen/kscreen/mode.h>
+-#include <KF5/KScreen/kscreen/config.h>
+-#include <KF5/KScreen/kscreen/getconfigoperation.h>
+-#include <KF5/KScreen/kscreen/configmonitor.h>
+-#include <KF5/KScreen/kscreen/setconfigoperation.h>
+-#include <KF5/KScreen/kscreen/edid.h>
+-#include <KF5/KScreen/kscreen/types.h>
+-
+-#include <KF5/KConfigCore/KSharedConfig>
+-#include <KF5/KConfigCore/KConfigGroup>
+-
+-#ifdef signals
+-#undef signals
+-#endif
+-
+-#define QML_PATH "kcm_kscreen/qml/"
+-
+-#define UKUI_CONTORLCENTER_PANEL_SCHEMAS "org.ukui.control-center.panel.plugins"
+-#define THEME_NIGHT_KEY                  "themebynight"
+-
+-#define FONT_RENDERING_DPI               "org.ukui.SettingsDaemon.plugins.xsettings"
+-#define SCALE_KEY                        "scaling-factor"
+-
+-#define MOUSE_SIZE_SCHEMAS               "org.ukui.peripherals-mouse"
+-#define CURSOR_SIZE_KEY                  "cursor-size"
+-
+-#define POWER_SCHMES                     "org.ukui.power-manager"
+-#define POWER_KEY                        "brightness-ac"
+-
+-#define ADVANCED_SCHEMAS                 "org.ukui.session.required-components"
+-#define ADVANCED_KEY                     "windowmanager"
+-
+-const QString kCpu = "ZHAOXIN";
+-const QString kLoong = "Loongson";
+-const QString tempDayBrig = "6500";
+-
+-QSize mScaleSizeRes = QSize();
+-
+-Q_DECLARE_METATYPE(KScreen::OutputPtr)
+-
+-Widget::Widget(QWidget *parent) :
+-    QWidget(parent),
+-    ui(new Ui::DisplayWindow())
+-{
+-    qRegisterMetaType<QQuickView *>();
+-
+-    ui->setupUi(this);
+-    ui->quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
+-    ui->quickWidget->setContentsMargins(0, 0, 0, 9);
+-
+-    mCloseScreenButton = new KSwitchButton(this);
+-    ui->showScreenLayout->addWidget(mCloseScreenButton);
+-
+-    mUnifyButton = new KSwitchButton(this);
+-    ui->unionLayout->addWidget(mUnifyButton);
+-
+-    qDBusRegisterMetaType<ScreenConfig>();
+-
+-    setHideModuleInfo();
+-    initNightUI();
+-    isWayland();
+-
+-    QProcess *process = new QProcess;
+-    process->start("lsb_release -r");
+-    process->waitForFinished();
+-
+-    QByteArray ba = process->readAllStandardOutput();
+-    QString osReleaseCrude = QString(ba.data());
+-    QStringList res = osReleaseCrude.split(":");
+-    QString osRelease = res.length() >= 2 ? res.at(1) : "";
+-    osRelease = osRelease.simplified();
+-
+-    const QByteArray idd(ADVANCED_SCHEMAS);
+-    if (QGSettings::isSchemaInstalled(idd) && osRelease == "V10") {
+-        ui->advancedBtn->show();
+-        ui->advancedHorLayout->setContentsMargins(9, 8, 9, 32);
+-    } else {
+-        ui->advancedBtn->hide();
+-        ui->advancedHorLayout->setContentsMargins(9, 0, 9, 0);
+-    }
+-
+-    setTitleLabel();
+-    initGSettings();
+-    initTemptSlider();
+-    initUiComponent();
+-    initNightStatus();
+-
+-#if QT_VERSION <= QT_VERSION_CHECK(5, 12, 0)
+-    ui->nightframe->setVisible(false);
+-#else
+-    ui->nightframe->setVisible(this->mRedshiftIsValid);
+-#endif
+-
+-    mNightButton->setChecked(this->mIsNightMode);
+-    showNightWidget(mNightButton->isChecked());
+-
+-    initConnection();
+-    loadQml();
+-
+-    connect(ui->scaleCombo, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+-            this, [=](int index){
+-        scaleChangedSlot(ui->scaleCombo->itemData(index).toDouble());
+-    });
+-}
+-
+-Widget::~Widget()
+-{
+-    exitFlag = true;
+-    clearOutputIdentifiers();
+-    delete ui;
+-    ui = nullptr;
+-}
+-
+-bool Widget::eventFilter(QObject *object, QEvent *event)
+-{
+-    if (event->type() == QEvent::Resize) {
+-        if (mOutputIdentifiers.contains(qobject_cast<QQuickView *>(object))) {
+-            QResizeEvent *e = static_cast<QResizeEvent *>(event);
+-            const QRect screenSize = object->property("screenSize").toRect();
+-            QRect geometry(QPoint(0, 0), e->size());
+-            geometry.moveCenter(screenSize.center());
+-            static_cast<QQuickView *>(object)->setGeometry(geometry);
+-            // Pass the event further
+-        }
+-    }
+-    return QObject::eventFilter(object, event);
+-}
+-
+-void Widget::setConfig(const KScreen::ConfigPtr &config, bool showBrightnessFrameFlag)
+-{
+-    if (mConfig) {
+-        KScreen::ConfigMonitor::instance()->removeConfig(mConfig);
+-        for (const KScreen::OutputPtr &output : mConfig->outputs()) {
+-            output->disconnect(this);
+-        }
+-        mConfig->disconnect(this);
+-    }
+-    mConfig = config;
+-    mPrevConfig = config->clone();
+-    mPreScreenConfig = config->clone();
+-    for (int i = 0; i < BrightnessFrameV.size(); i = 0) {
+-        BrightnessFrameV[BrightnessFrameV.size() - 1]->deleteLater();
+-        BrightnessFrameV[BrightnessFrameV.size() - 1] = nullptr;
+-        BrightnessFrameV.pop_back();
+-    }
+-
+-    changescale();
+-    KScreen::ConfigMonitor::instance()->addConfig(mConfig);
+-    resetPrimaryCombo();
+-    connect(mConfig.data(), &KScreen::Config::outputAdded,
+-            this, &Widget::outputAdded);
+-    connect(mConfig.data(), &KScreen::Config::outputRemoved,
+-            this, &Widget::outputRemoved);
+-    for (const KScreen::OutputPtr &output : mConfig->outputs()) {
+-        if (output->isConnected()) {
+-            connect(output.data(), &KScreen::Output::currentModeIdChanged,
+-                    this, [=]() {
+-                if (output->currentMode()) {
+-                    if (ui->scaleCombo) {
+-                        changescale();
+-                    }
+-                }
+-            });
+-        }
+-
+-    }
+-
+-    if (!mIsWayland) {
+-        connect(mConfig.data(), &KScreen::Config::primaryOutputChanged,
+-                this, &Widget::primaryOutputChanged);
+-    }
+-
+-    // 上面屏幕拿取配置
+-    mScreen->setConfig(mConfig);
+-    mControlPanel->setConfig(mConfig);
+-    mUnifyButton->setEnabled(mConfig->connectedOutputs().count() > 1);
+-    ui->unionframe->setVisible(mConfig->outputs().count() > 1);
+-
+-    for (const KScreen::OutputPtr &output : mConfig->outputs()) {
+-        outputAdded(output);
+-    }
+-
+-    // 择主屏幕输出
+-    QMLOutput *qmlOutput = mScreen->primaryOutput();
+-
+-    if (qmlOutput) {
+-        mScreen->setActiveOutput(qmlOutput);
+-    } else {
+-        if (!mScreen->outputs().isEmpty()) {
+-            mScreen->setActiveOutput(mScreen->outputs().at(0));
+-            // 择一个主屏幕,避免闪退现象
+-            primaryButtonEnable(true);
+-        }
+-    }
+-    slotOutputEnabledChanged();
+-
+-    if (mFirstLoad && isCloneMode()) {
+-        mUnifyButton->blockSignals(true);
+-        mUnifyButton->setChecked(true);
+-        mUnifyButton->blockSignals(false);
+-        slotUnifyOutputs();
+-    }
+-    mFirstLoad = false;
+-
+-    if (showBrightnessFrameFlag == true) {
+-        showBrightnessFrame();   //初始化的时候,显示
+-    }
+-
+-    enableChangedSlot();
+-}
+-
+-KScreen::ConfigPtr Widget::currentConfig() const
+-{
+-    return mConfig;
+-}
+-
+-void Widget::loadQml()
+-{
+-    qmlRegisterType<QMLOutput>("org.kde.kscreen", 1, 0, "QMLOutput");
+-    qmlRegisterType<QMLScreen>("org.kde.kscreen", 1, 0, "QMLScreen");
+-
+-    qmlRegisterType<KScreen::Output>("org.kde.kscreen", 1, 0, "KScreenOutput");
+-    qmlRegisterType<KScreen::Edid>("org.kde.kscreen", 1, 0, "KScreenEdid");
+-    qmlRegisterType<KScreen::Mode>("org.kde.kscreen", 1, 0, "KScreenMode");
+-
+-    ui->quickWidget->setSource(QUrl("qrc:/qml/main.qml"));
+-
+-    QQuickItem *rootObject = ui->quickWidget->rootObject();
+-    mScreen = rootObject->findChild<QMLScreen *>(QStringLiteral("outputView"));
+-
+-    connect(mScreen, &QMLScreen::released, this, [=] {
+-       delayApply();
+-    });
+-
+-    if (!mScreen) {
+-        return;
+-    }
+-    connect(mScreen, &QMLScreen::focusedOutputChanged,
+-            this, &Widget::slotFocusedOutputChanged);
+-}
+-
+-void Widget::resetPrimaryCombo()
+-{
+-    // Don't emit currentIndexChanged when resetting
+-    bool blocked = ui->primaryCombo->blockSignals(true);
+-    ui->primaryCombo->clear();
+-    ui->primaryCombo->blockSignals(blocked);
+-
+-    if (!mConfig) {
+-        return;
+-    }
+-
+-    for (auto &output: mConfig->outputs()) {
+-        addOutputToPrimaryCombo(output);
+-    }
+-}
+-
+-void Widget::addOutputToPrimaryCombo(const KScreen::OutputPtr &output)
+-{
+-    // 注释后让他显示全部屏幕下拉框
+-    if (!output->isConnected()) {
+-        return;
+-    }
+-
+-    ui->primaryCombo->addItem(Utils::outputName(output), output->id());
+-    if (output->isPrimary() && !mIsWayland) {
+-        Q_ASSERT(mConfig);
+-        int lastIndex = ui->primaryCombo->count() - 1;
+-        ui->primaryCombo->setCurrentIndex(lastIndex);
+-    }
+-}
+-
+-// 这里从屏幕点击来读取输出
+-void Widget::slotFocusedOutputChanged(QMLOutput *output)
+-{
+-    mControlPanel->activateOutput(output->outputPtr());
+-
+-    // 读取屏幕点击选择下拉框
+-    Q_ASSERT(mConfig);
+-    int index = output->outputPtr().isNull() ? 0 : ui->primaryCombo->findData(output->outputPtr()->id());
+-    if (index == -1 || index == ui->primaryCombo->currentIndex()) {
+-        return;
+-    }
+-    ui->primaryCombo->setCurrentIndex(index);
+-}
+-
+-void Widget::slotOutputEnabledChanged()
+-{
+-    // 点击禁用屏幕输出后的改变
+-    resetPrimaryCombo();
+-    setActiveScreen(mKDSCfg);
+-    int enabledOutputsCount = 0;
+-    Q_FOREACH (const KScreen::OutputPtr &output, mConfig->outputs()) {
+-        for (int i = 0; i < BrightnessFrameV.size(); ++i) {
+-                if (BrightnessFrameV[i]->outputName == Utils::outputName(output)){
+-                    if (!output->isEnabled())
+-                        BrightnessFrameV[i]->openFlag = false;
+-                    else
+-                        BrightnessFrameV[i]->openFlag = true;
+-            }
+-        }
+-        if (output->isEnabled()) {
+-            ++enabledOutputsCount;
+-        }
+-        if (enabledOutputsCount > 1) {
+-            break;
+-        }
+-    }
+-    mUnifyButton->setEnabled(screenEnableCount() > 1);
+-    ui->unionframe->setVisible(screenEnableCount() > 1);
+-    showBrightnessFrame(10);
+-}
+-
+-void Widget::slotOutputConnectedChanged()
+-{
+-    resetPrimaryCombo();
+-}
+-
+-// 更改方向,再更改分辨率重叠问题
+-void Widget::slotQmloutOutChanged()
+-{
+-    QMLOutput *output = mScreen->primaryOutput();
+-    if (output != nullptr && !output->outputPtr().isNull()) {
+-        mScreen->setScreenPosCenter(output, false);
+-    }
+-
+-}
+-
+-void Widget::slotUnifyOutputs()
+-{
+-    QMLOutput *base = mScreen->primaryOutput();
+-
+-    QList<int> clones;
+-
+-    if (!base) {
+-        for (QMLOutput *output: mScreen->outputs()) {
+-            if (output->output()->isConnected() && output->output()->isEnabled()) {
+-                base = output;
+-                break;
+-            }
+-        }
+-        if (!base) {
+-            // WTF?
+-            return;
+-        }
+-    }
+-
+-    // 取消统一输出
+-    if (!mUnifyButton->isChecked()) {
+-        KScreen::OutputList screens = mPrevConfig->connectedOutputs();
+-        if (mKDSCfg.isEmpty()) {
+-            if (!getPreScreenCfg().isEmpty()) {
+-                QList<ScreenConfig> preScreenCfg = getPreScreenCfg();
+-                int posX = preScreenCfg.at(0).screenPosX;
+-                bool isOverlap = false;
+-                for (int i = 1; i< preScreenCfg.count(); i++) {
+-                    if (posX == preScreenCfg.at(i).screenPosX) {
+-                        isOverlap = true;
+-                        setScreenKDS("expand");
+-                        break;
+-                    }
+-                }
+-                Q_FOREACH(ScreenConfig cfg, preScreenCfg) {
+-                    Q_FOREACH(KScreen::OutputPtr output, screens) {
+-                        if (!cfg.screenId.compare(output->name()) && !isOverlap) {
+-                            output->setCurrentModeId(cfg.screenModeId);
+-                            output->setPos(QPoint(cfg.screenPosX, cfg.screenPosY));
+-                        }
+-                    }
+-                }
+-            }
+-
+-            QPoint raw(0,0);
+-            int originCount = 0;
+-            Q_FOREACH(KScreen::OutputPtr output, screens) {
+-                if (output->pos() == raw) {
+-                    originCount++;
+-                }
+-                if (originCount >= 2) {
+-                    setScreenKDS("expand");
+-                }
+-            }
+-        }
+-
+-        setConfig(mPrevConfig);
+-
+-        ui->primaryCombo->setEnabled(true);
+-        mCloseScreenButton->setEnabled(true);
+-        ui->showMonitorframe->setVisible(true);
+-        ui->primaryCombo->setEnabled(true);
+-    } else if (mUnifyButton->isChecked()) {
+-        // Clone the current config, so that we can restore it in case user
+-        // breaks the cloning
+-        mPrevConfig = mConfig->clone();
+-
+-        if (!mFirstLoad && !mIsOutputAdd && mKDSCfg.isEmpty()) {
+-            setPreScreenCfg(mPrevConfig->connectedOutputs());
+-        }
+-
+-        for (QMLOutput *output: mScreen->outputs()) {
+-            if (output != mScreen->primaryOutput() && mScreen->primaryOutput()) {
+-                output->output()->setRotation(mScreen->primaryOutput()->output()->rotation());
+-            }
+-
+-            if (!output->output()->isConnected()) {
+-                continue;
+-            }
+-
+-            if (!output->output()->isEnabled()) {
+-                output->setVisible(false);
+-                continue;
+-            }
+-
+-            if (!base) {
+-                base = output;
+-            }
+-
+-            output->setOutputX(0);
+-            output->setOutputY(0);
+-            output->output()->setPos(QPoint(0, 0));
+-            output->output()->setClones(QList<int>());
+-
+-            if (base != output) {
+-                clones << output->output()->id();
+-                output->setCloneOf(base);
+-                output->setVisible(false);
+-            }
+-        }
+-
+-        base->output()->setClones(clones);
+-
+-        base->setIsCloneMode(true);
+-
+-        mScreen->updateOutputsPlacement();
+-
+-        // 关闭开关
+-        mCloseScreenButton->setEnabled(false);
+-        ui->showMonitorframe->setVisible(false);
+-        ui->primaryCombo->setEnabled(false);
+-        ui->mainScreenButton->setEnabled(false);
+-        mControlPanel->setUnifiedOutput(base->outputPtr());
+-    }
+-}
+-
+-// FIXME: Copy-pasted from KDED's Serializer::findOutput()
+-KScreen::OutputPtr Widget::findOutput(const KScreen::ConfigPtr &config, const QVariantMap &info)
+-{
+-    KScreen::OutputList outputs = config->outputs();
+-    Q_FOREACH (const KScreen::OutputPtr &output, outputs) {
+-        if (!output->isConnected()) {
+-            continue;
+-        }
+-
+-        const QString outputId
+-            = (output->edid()
+-               && output->edid()->isValid()) ? output->edid()->hash() : output->name();
+-        if (outputId != info[QStringLiteral("id")].toString()) {
+-            continue;
+-        }
+-
+-        QVariantMap posInfo = info[QStringLiteral("pos")].toMap();
+-        QPoint point(posInfo[QStringLiteral("x")].toInt(), posInfo[QStringLiteral("y")].toInt());
+-        output->setPos(point);
+-        output->setPrimary(info[QStringLiteral("primary")].toBool());
+-        output->setEnabled(info[QStringLiteral("enabled")].toBool());
+-        output->setRotation(static_cast<KScreen::Output::Rotation>(info[QStringLiteral("rotation")].
+-                                                                   toInt()));
+-
+-        QVariantMap modeInfo = info[QStringLiteral("mode")].toMap();
+-        QVariantMap modeSize = modeInfo[QStringLiteral("size")].toMap();
+-        QSize size(modeSize[QStringLiteral("width")].toInt(),
+-                   modeSize[QStringLiteral("height")].toInt());
+-
+-        const KScreen::ModeList modes = output->modes();
+-        Q_FOREACH (const KScreen::ModePtr &mode, modes) {
+-            if (mode->size() != size) {
+-                continue;
+-            }
+-            if (QString::number(mode->refreshRate())
+-                != modeInfo[QStringLiteral("refresh")].toString()) {
+-                continue;
+-            }
+-
+-            output->setCurrentModeId(mode->id());
+-            break;
+-        }
+-        return output;
+-    }
+-
+-    return KScreen::OutputPtr();
+-}
+-
+-void Widget::setHideModuleInfo()
+-{
+-    mCPU = getCpuInfo();
+-    if (!mCPU.startsWith(kCpu, Qt::CaseInsensitive)) {
+-        ui->quickWidget->setAttribute(Qt::WA_AlwaysStackOnTop);
+-        ui->quickWidget->setClearColor(Qt::transparent);
+-    }
+-}
+-
+-void Widget::setTitleLabel()
+-{
+-
+-    //~ contents_path /display/monitor
+-    ui->primaryLabel->setText(tr("monitor"));
+-
+-    //~ contents_path /display/screen zoom
+-    ui->scaleLabel->setText(tr("screen zoom"));
+-}
+-void Widget::writeScale(double scale)
+-{
+-    if (scale != scaleGSettings->get(SCALE_KEY).toDouble()) {
+-        mIsScaleChanged = true;
+-    }
+-
+-    if (mIsScaleChanged) {
+-        if (!mIsChange) {
+-            showZoomtips();
+-        } else {
+-            // 非主动切换缩放率,则不弹提示弹窗
+-            mIsChange = false;
+-        }
+-    } else {
+-        return;
+-    }
+-
+-    mIsScaleChanged = false;
+-    int cursize;
+-    QByteArray iid(MOUSE_SIZE_SCHEMAS);
+-    if (QGSettings::isSchemaInstalled(MOUSE_SIZE_SCHEMAS)) {
+-        QGSettings cursorSettings(iid);
+-
+-        if (1.0 == scale) {
+-            cursize = 24;
+-        } else if (2.0 == scale) {
+-            cursize = 48;
+-        } else if (3.0 == scale) {
+-            cursize = 96;
+-        } else {
+-            cursize = 24;
+-        }
+-
+-        QStringList keys = scaleGSettings->keys();
+-        if (keys.contains("scalingFactor")) {
+-
+-            scaleGSettings->set(SCALE_KEY, scale);
+-        }
+-        cursorSettings.set(CURSOR_SIZE_KEY, cursize);
+-        UkccCommon::setKwinMouseSize(cursize);
+-    }
+-}
+-
+-void Widget::initGSettings()
+-{
+-    QByteArray id(UKUI_CONTORLCENTER_PANEL_SCHEMAS);
+-    if (QGSettings::isSchemaInstalled(id)) {
+-        mGsettings = new QGSettings(id, QByteArray(), this);
+-        if (mGsettings->keys().contains(THEME_NIGHT_KEY)) {
+-            mThemeButton->setChecked(mGsettings->get(THEME_NIGHT_KEY).toBool());
+-        }
+-    } else {
+-        qDebug() << Q_FUNC_INFO << "org.ukui.control-center.panel.plugins not install";
+-        return;
+-    }
+-
+-    QByteArray powerId(POWER_SCHMES);
+-    if (QGSettings::isSchemaInstalled(powerId)) {
+-        mPowerGSettings = new QGSettings(powerId, QByteArray(), this);
+-        mPowerKeys = mPowerGSettings->keys();
+-        connect(mPowerGSettings, &QGSettings::changed, this, [=](QString key) {
+-            if ("brightnessAc" == key || "brightnessBat" == key) {
+-                int value = mPowerGSettings->get(key).toInt();
+-                if (mIsWayland && !mIsBattery) {
+-                    value = (value == 0 ? 0 : value / 10);
+-                }
+-
+-                for (int i = 0; i < BrightnessFrameV.size(); ++i) {
+-                    if (BrightnessFrameV[i]->outputName == "eDP") {
+-                       BrightnessFrameV[i]->slider->blockSignals(true);
+-                       BrightnessFrameV[i]->setTextLableValue(QString::number(value));
+-                       BrightnessFrameV[i]->slider->setValue(value);
+-                       BrightnessFrameV[i]->slider->blockSignals(false);
+-                    }
+-                }
+-            }
+-        });
+-    }
+-
+-    QByteArray scaleId(FONT_RENDERING_DPI);
+-    if (QGSettings::isSchemaInstalled(scaleId)) {
+-        scaleGSettings = new QGSettings(scaleId, QByteArray(), this);
+-    }
+-}
+-
+-void Widget::initNightUI()
+-{
+-    //~ contents_path /display/unify output
+-    ui->unifyLabel->setText(tr("Mirror Display"));
+-
+-    QHBoxLayout *nightLayout = new QHBoxLayout(ui->nightframe);
+-    //~ contents_path /display/night mode
+-    nightLabel = new QLabel(tr("night mode"), this);
+-    mNightButton = new KSwitchButton(this);
+-    nightLayout->addWidget(nightLabel);
+-    nightLayout->addStretch();
+-    nightLayout->addWidget(mNightButton);
+-
+-    QHBoxLayout *themeLayout = new QHBoxLayout(ui->themeFrame);
+-    mThemeButton = new KSwitchButton(this);
+-    themeLayout->addWidget(new QLabel(tr("Theme follow night mode")));
+-    themeLayout->addStretch();
+-    themeLayout->addWidget(mThemeButton);
+-}
+-
+-bool Widget::isRestoreConfig()
+-{
+-    int cnt = 30;
+-    int ret;
+-    MainWindow *mainWindow = static_cast<MainWindow*>(this->topLevelWidget());
+-    QMessageBox msg;
+-    QPushButton *saveBtn = msg.addButton(tr("Save"), QMessageBox::AcceptRole);
+-    QPushButton *canelBtn = msg.addButton(tr("Not Save"), QMessageBox::RejectRole);
+-    msg.setDefaultButton(saveBtn);
+-    saveBtn->setFocusPolicy(Qt::TabFocus);
+-    canelBtn->setFocusPolicy(Qt::TabFocus);
+-    connect(mainWindow, &MainWindow::posChanged, this, [=,&msg]() {
+-        QTimer::singleShot(8, this, [=,&msg]() { //窗管会移动窗口,等待8ms,确保在窗管移动之后再move,时间不能太长,否则会看到移动的路径
+-            QRect rect = this->topLevelWidget()->geometry();
+-            int msgX = 0, msgY = 0;
+-            msgX = rect.x() + rect.width()/2 - msg.width()/2;
+-            msgY = rect.y() + rect.height()/2 - (msg.height()+40)/2;
+-            msg.move(msgX, msgY);
+-        });
+-    });
+-
+-    if (mConfigChanged && !mIsUnifyChanged) {
+-        QString config_name;
+-        switch (changeItm) {
+-        case 0:
+-            config_name = tr("resolution");
+-            break;
+-        case 1:
+-            config_name = tr("orientation");
+-            break;
+-        case 2:
+-            config_name = tr("frequency");
+-            break;
+-        }
+-        msg.setIcon(QMessageBox::Warning);
+-        msg.setText(QString(tr("The screen %1 has been modified, whether to save it ? "
+-                       "<br/>"
+-                       "<font style= 'color:#626c6e'>the settings will be saved after 29 seconds</font>")).arg(config_name));
+-
+-        QTimer cntDown;
+-        QObject::connect(&cntDown, &QTimer::timeout, [&msg, &cnt, &cntDown, &ret ,&config_name]()->void {
+-            if (--cnt < 0) {
+-                cntDown.stop();
+-                msg.hide();
+-                msg.close();
+-            } else {
+-                msg.setText(QString(tr("The screen %1 has been modified, whether to save it ? "
+-                                       "<br/>"
+-                                       "<font style= 'color:#626c6e'>the settings will be saved after %2 seconds</font>")).arg(config_name).arg(cnt));
+-                msg.show();
+-            }
+-        });
+-        cntDown.start(1000);
+-        QTimer::singleShot(100, this, [=,&msg]() { //延时获取msg的size
+-            QRect rect = this->topLevelWidget()->geometry();
+-            int msgX = 0, msgY = 0;
+-            msgX = rect.x() + rect.width()/2 - msg.width()/2;
+-            msgY = rect.y() + rect.height()/2 - (msg.height()+40)/2;
+-            msg.move(msgX, msgY);
+-        });
+-        ret = msg.exec();
+-    }
+-    disconnect(mainWindow, &MainWindow::posChanged, 0, 0);
+-
+-    bool res = false;
+-    switch (ret) {
+-    case QMessageBox::AcceptRole:
+-        res = false;
+-        break;
+-    case QMessageBox::RejectRole:
+-        if (mIsSCaleRes) {
+-            QStringList keys = scaleGSettings->keys();
+-            if (keys.contains("scalingFactor")) {
+-                scaleGSettings->set(SCALE_KEY,scaleres);
+-            }
+-            mIsSCaleRes = false;
+-        }
+-        res = true;
+-        break;
+-    }
+-    return res;
+-}
+-
+-QString Widget::getCpuInfo()
+-{
+-    return Utils::getCpuInfo();
+-}
+-
+-bool Widget::isCloneMode()
+-{
+-    KScreen::OutputPtr output = mConfig->primaryOutput();
+-    if (mConfig->connectedOutputs().count() >= 2) {
+-        foreach (KScreen::OutputPtr secOutput, mConfig->connectedOutputs()) {
+-            if (secOutput->geometry() != output->geometry() || !secOutput->isEnabled()) {
+-                return false;
+-            }
+-        }
+-    } else {
+-        return false;
+-    }
+-    return true;
+-}
+-
+-bool Widget::isBacklight()
+-{
+-    QString cmd = "ukui-power-backlight-helper --get-max-brightness";
+-    QProcess process;
+-    process.start(cmd);
+-    process.waitForFinished();
+-    QString result = process.readAllStandardOutput().trimmed();
+-
+-    QString pattern("^[0-9]*$");
+-    QRegExp reg(pattern);
+-
+-    return reg.exactMatch(result);
+-}
+-
+-QString Widget::getMonitorType()
+-{
+-    QString monitor = ui->primaryCombo->currentText();
+-    QString type;
+-    if (monitor.contains("VGA", Qt::CaseInsensitive)) {
+-        type = "4";
+-    } else {
+-        type = "8";
+-    }
+-    return type;
+-}
+-
+-bool Widget::isLaptopScreen()
+-{
+-    const QString &monitor = ui->primaryCombo->currentText();
+-    if (monitor == "eDP") {
+-        return true;
+-    }
+-    return false;
+-}
+-
+-bool Widget::isVisibleBrightness()
+-{
+-    if ((mIsBattery && isLaptopScreen())
+-            || (mIsWayland && !mIsBattery)
+-            || (!mIsWayland && mIsBattery)) {
+-        return true;
+-    }
+-    return false;
+-}
+-
+-int Widget::getDDCBrighthess()
+-{
+-    QString type = getMonitorType();
+-    QDBusInterface ukccIfc("com.control.center.qt.systemdbus",
+-                           "/",
+-                           "com.control.center.interface",
+-                           QDBusConnection::systemBus());
+-
+-    QDBusReply<int> reply = ukccIfc.call("getDDCBrightness", type);
+-
+-    if (reply.isValid()) {
+-        return reply.value();
+-    }
+-    return 0;
+-}
+-
+-int Widget::getDDCBrighthess(QString name)
+-{
+-    QString type;
+-    int times = 100;
+-    if (name.contains("VGA", Qt::CaseInsensitive)) {
+-        type = "4";
+-    } else {
+-        type = "8";
+-    }
+-    QDBusInterface ukccIfc("com.control.center.qt.systemdbus",
+-                           "/",
+-                           "com.control.center.interface",
+-                           QDBusConnection::systemBus());
+-
+-    while (--times) {
+-        if (exitFlag == true)
+-            return -1;
+-        for (int i = 0; i < deleteFrameNameV.size(); ++i) {
+-            if (name == deleteFrameNameV[i]) {  //该屏幕已经被remove
+-                deleteFrameNameV.remove(i);
+-                return -1;
+-            }
+-        }
+-        QDBusReply<int> reply = ukccIfc.call("getDDCBrightness", type);
+-        if (reply.isValid() && reply.value() > 0) {
+-            return reply.value();
+-        }
+-        usleep(80000);
+-    }
+-    return 0;
+-}
+-
+-int Widget::getDDCBrighthess(QString edidHash, QString i2cBus) {
+-    int times = 600;
+-    QDBusInterface ukccIfc("com.control.center.qt.systemdbus",
+-                           "/",
+-                           "com.control.center.interface",
+-                           QDBusConnection::systemBus());
+-    QDBusReply<int> reply;
+-    while (times) {
+-        //防止调用terminate不会结束线程,锁屏在龙芯架构上出现过
+-        if (exitFlag) {
+-            return -1;
+-        }
+-        if (times %10 != 0) {
+-            times--;
+-            usleep(100000);
+-            continue;
+-        }
+-        if (i2cBus == "") {
+-            return -1;
+-        }
+-        reply = ukccIfc.call("getDisplayBrightness", edidHash, i2cBus);
+-        if (reply.isValid() && reply.value() >= 0 && reply.value() <= 100) {
+-           return reply.value();
+-        }
+-        times--;
+-        usleep(100000);
+-    }
+-    return -1;
+-}
+-
+-int Widget::getLaptopBrightness() const
+-{
+-    return mPowerGSettings->get(POWER_KEY).toInt();
+-}
+-
+-void Widget::showNightWidget(bool judge)
+-{
+-    if (judge) {
+-        ui->sunframe->setVisible(true);
+-        ui->customframe->setVisible(true);
+-        ui->temptframe->setVisible(true);
+-        ui->themeFrame->setVisible(false);
+-    } else {
+-        ui->sunframe->setVisible(false);
+-        ui->customframe->setVisible(false);
+-        ui->temptframe->setVisible(false);
+-        ui->themeFrame->setVisible(false);
+-    }
+-
+-    if (judge && ui->customradioBtn->isChecked()) {
+-        showCustomWiget(CUSTOM);
+-    } else {
+-        showCustomWiget(SUN);
+-    }
+-}
+-
+-void Widget::showCustomWiget(int index)
+-{
+-    if (SUN == index) {
+-        ui->opframe->setVisible(false);
+-        ui->clsframe->setVisible(false);
+-    } else if (CUSTOM == index) {
+-        ui->opframe->setVisible(true);
+-        ui->clsframe->setVisible(true);
+-    }
+-}
+-
+-void Widget::slotThemeChanged(bool judge)
+-{
+-    if (mGsettings->keys().contains(THEME_NIGHT_KEY)) {
+-        mGsettings->set(THEME_NIGHT_KEY, judge);
+-    }
+-}
+-
+-void Widget::clearOutputIdentifiers()
+-{
+-    mOutputTimer->stop();
+-    qDeleteAll(mOutputIdentifiers);
+-    mOutputIdentifiers.clear();
+-}
+-
+-void Widget::addBrightnessFrame(QString name, bool openFlag, const KScreen::OutputPtr &output, QString i2cBus)
+-{
+-    if (mIsBattery && name != "eDP")  //笔记本非内置
+-        return;
+-
+-    for (int i = 0; i < BrightnessFrameV.size(); ++i) {  //已经有了
+-        if (name == BrightnessFrameV[i]->outputName )
+-            return;
+-    }
+-    BrightnessFrame *frame = new BrightnessFrame;
+-    frame->openFlag = openFlag;
+-    frame->setTextLableValue("0"); //最低亮度10,获取前为0
+-    BrightnessFrameV.push_back(frame);
+-
+-    for (int i = 0; i < deleteFrameNameV.size(); ++i) {
+-        if (deleteFrameNameV[i] == name) {
+-            deleteFrameNameV.remove(i);
+-        }
+-    }
+-    if (mIsBattery && name == "eDP") {
+-        frame->outputName = name;
+-        int initValue = mPowerGSettings->get(POWER_KEY).toInt();
+-        frame->setTextLableValue(QString::number(initValue));
+-        frame->slider->setValue(initValue);
+-        ui->unifyBrightLayout->addWidget(frame);
+-        connect(frame->slider, &QSlider::valueChanged, this, [=](){
+-            qDebug()<<name<<"brightness"<<" is changed, value = "<<frame->slider->value();
+-            mPowerGSettings->set(POWER_KEY, frame->slider->value());
+-            frame->setTextLableValue(QString::number(mPowerGSettings->get(POWER_KEY).toInt()));
+-        });
+-    } else if(!mIsBattery && output) {
+-        frame->outputName = name;
+-        ui->unifyBrightLayout->addWidget(frame);
+-        frame->slider->setValue(10);
+-        if (output->supportBrightness()) {
+-            QtConcurrent::run([=]{
+-                int initValue = output->brightness();
+-                if (initValue == -1 || frame == nullptr)
+-                    return;
+-                frame->slider->setValue(initValue);
+-                frame->setTextLableValue(QString::number(initValue));
+-                connect(frame->slider, &QSlider::valueChanged, this, [=](){
+-                                    qDebug()<<name<<"brightness"<<" is changed, value = "<<frame->slider->value();
+-                                    frame->setTextLableValue(QString::number(frame->slider->value()));
+-                                    output->setBrightness(frame->slider->value());
+-                                    setKscreenConfig(this->currentConfig());
+-                                    Q_FOREACH (const KScreen::OutputPtr &pOutput, mPrevConfig->outputs()) {
+-                                        if (Utils::outputName(pOutput) == name) {
+-                                            pOutput->setBrightness(frame->slider->value());
+-                                        }
+-                                    }
+-                });
+-            });
+-        } else {
+-            frame->slider->setEnabled(false);
+-            //使用DDC
+-            QtConcurrent::run([=]{
+-                if (openFlag == false)
+-                    return;
+-
+-                int initValue = getDDCBrighthess("", i2cBus);
+-                if (initValue == -1 || frame == nullptr)
+-                    return;
+-
+-                frame->slider->setEnabled(true);
+-                frame->slider->setValue(initValue);
+-                frame->setTextLableValue(QString::number(initValue));
+-                connect(frame->slider, &QSlider::valueChanged, this, [=](){
+-                     qDebug()<<name<<"brightness"<<" is changed, value = "<<frame->slider->value();
+-                     frame->setTextLableValue(QString::number(frame->slider->value()));
+-                     setDDCBrightnessN(frame->slider->value(), "", i2cBus);
+-                });
+-            });
+-        }
+-    }
+-}
+-
+-void Widget::outputAdded(const KScreen::OutputPtr &output)
+-{
+-    getAllI2Cbus();
+-    mPreScreenConfig = mConfig->clone();
+-    QString name = Utils::outputName(output);
+-    QMap<QString, QString>::iterator it;
+-    QString outPutI2cBus = "";
+-    for (it = I2CbusMap.begin(); it != I2CbusMap.end(); it++) {
+-        if (name.contains(it.key(), Qt::CaseInsensitive)) {
+-            outPutI2cBus = it.value();
+-            break;
+-        }
+-    }
+-    addBrightnessFrame(name, output->isEnabled(), output, outPutI2cBus);
+-    // 刷新缩放选项,监听新增显示屏的mode变化
+-    changescale();
+-    if (output->isConnected()) {
+-        connect(output.data(), &KScreen::Output::currentModeIdChanged,
+-                this, [=]() {
+-            if (output->currentMode()) {
+-                if (ui->scaleCombo) {
+-                    ui->scaleCombo->blockSignals(true);
+-                    changescale();
+-                    ui->scaleCombo->blockSignals(false);
+-                }
+-            }
+-        });
+-    }
+-
+-    // 刷新缩放选项,监听新增显示屏的mode变化
+-    changescale();
+-    if (output->isConnected()) {
+-        connect(output.data(), &KScreen::Output::currentModeIdChanged,
+-                this, [=]() {
+-            if (output->currentMode()) {
+-                if (ui->scaleCombo) {
+-                    ui->scaleCombo->blockSignals(true);
+-                    changescale();
+-                    ui->scaleCombo->blockSignals(false);
+-                }
+-            }
+-        });
+-    }
+-
+-    connect(output.data(), &KScreen::Output::isConnectedChanged,
+-            this, &Widget::slotOutputConnectedChanged);
+-    connect(output.data(), &KScreen::Output::isEnabledChanged,
+-            this, &Widget::slotOutputEnabledChanged);
+-
+-    addOutputToPrimaryCombo(output);
+-
+-    // 检查统一输出-防止多显示屏幕
+-    if (mUnifyButton->isChecked()) {
+-        for (QMLOutput *qmlOutput: mScreen->outputs()) {
+-            if (!qmlOutput->output()->isConnected()) {
+-                continue;
+-            }
+-            if (!qmlOutput->isCloneMode()) {
+-                qmlOutput->blockSignals(true);
+-                qmlOutput->setVisible(false);
+-                qmlOutput->blockSignals(false);
+-            }
+-        }
+-    }
+-
+-    ui->unionframe->setVisible(screenEnableCount() > 1);
+-    mUnifyButton->setEnabled(screenEnableCount() > 1);
+-
+-    if (!mFirstLoad) {
+-        QTimer::singleShot(1500, this, [=] {
+-            mIsOutputAdd = true;
+-            mainScreenButtonSelect(ui->primaryCombo->currentIndex());
+-            mUnifyButton->setChecked(isCloneMode());
+-            mIsOutputAdd = false;
+-        });
+-    }
+-    showBrightnessFrame();
+-}
+-
+-void Widget::outputRemoved(int outputId)
+-{
+-    // 刷新缩放选项
+-    changescale();
+-
+-    KScreen::OutputPtr output = mConfig->output(outputId);
+-    if (!output.isNull()) {
+-        output->disconnect(this);
+-    }
+-
+-    const int index = ui->primaryCombo->findData(outputId);
+-    if (index == -1) {
+-        return;
+-    }
+-
+-    if (index == ui->primaryCombo->currentIndex()) {
+-        // We'll get the actual primary update signal eventually
+-        // Don't emit currentIndexChanged
+-        const bool blocked = ui->primaryCombo->blockSignals(true);
+-        ui->primaryCombo->setCurrentIndex(0);
+-        ui->primaryCombo->blockSignals(blocked);
+-    }
+-
+-    QString name = ui->primaryCombo->itemText(index);
+-    for (int i = 0; i < BrightnessFrameV.size(); ++i) {
+-        if (BrightnessFrameV[i]->outputName == name) {
+-            delete BrightnessFrameV[i];
+-            BrightnessFrameV[i] = nullptr;
+-            BrightnessFrameV.remove(i);
+-            bool existFlag = false;
+-            for (int i = 0; i < deleteFrameNameV.size(); ++i) {
+-                if (deleteFrameNameV[i] == name) {
+-                    existFlag = true;
+-                    break;
+-                }
+-            }
+-            if (existFlag == false)
+-                deleteFrameNameV.push_back(name);
+-        }
+-    }
+-    ui->primaryCombo->removeItem(index);
+-
+-    // 检查统一输出-防止移除后没有屏幕可显示
+-    if (mUnifyButton->isChecked()) {
+-        for (QMLOutput *qmlOutput: mScreen->outputs()) {
+-            if (!qmlOutput->output()->isConnected()) {
+-                continue;
+-            }
+-            qmlOutput->setIsCloneMode(false);
+-            qmlOutput->blockSignals(true);
+-            qmlOutput->setVisible(true);
+-            qmlOutput->blockSignals(false);
+-        }
+-    }
+-    ui->unionframe->setVisible(mConfig->connectedOutputs().count() > 1);
+-    mUnifyButton->blockSignals(true);
+-    mUnifyButton->setChecked(mConfig->connectedOutputs().count() > 1);
+-    mUnifyButton->blockSignals(false);
+-    mainScreenButtonSelect(ui->primaryCombo->currentIndex());
+-    // 在双屏下拔掉显示器,然后更改配置应用,恢复到原来配置崩溃
+-    mPreScreenConfig = mConfig->clone();
+-    showBrightnessFrame();
+-}
+-
+-void Widget::primaryOutputSelected(int index)
+-{
+-    if (!mConfig) {
+-        return;
+-    }
+-
+-    const KScreen::OutputPtr newPrimary = index == 0 ? KScreen::OutputPtr() : mConfig->output(ui->primaryCombo->itemData(index).toInt());
+-    if (newPrimary == mConfig->primaryOutput()) {
+-        return;
+-    }
+-
+-    mConfig->setPrimaryOutput(newPrimary);
+-}
+-
+-// 主输出
+-void Widget::primaryOutputChanged(const KScreen::OutputPtr &output)
+-{
+-    Q_ASSERT(mConfig);
+-    int index = output.isNull() ? 0 : ui->primaryCombo->findData(output->id());
+-    if (index == -1 || index == ui->primaryCombo->currentIndex()) {
+-        return;
+-    }
+-    ui->primaryCombo->setCurrentIndex(index);
+-}
+-
+-void Widget::slotIdentifyButtonClicked(bool checked)
+-{
+-    Q_UNUSED(checked);
+-    connect(new KScreen::GetConfigOperation(), &KScreen::GetConfigOperation::finished,
+-            this, &Widget::slotIdentifyOutputs);
+-}
+-
+-void Widget::slotIdentifyOutputs(KScreen::ConfigOperation *op)
+-{
+-    if (op->hasError()) {
+-        return;
+-    }
+-
+-    const KScreen::ConfigPtr config = qobject_cast<KScreen::GetConfigOperation *>(op)->config();
+-
+-    const QString qmlPath = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral(QML_PATH "OutputIdentifier.qml"));
+-
+-    mOutputTimer->stop();
+-    clearOutputIdentifiers();
+-
+-    /* Obtain the current active configuration from KScreen */
+-    Q_FOREACH (const KScreen::OutputPtr &output, config->outputs()) {
+-        if (!output->isConnected() || !output->currentMode()) {
+-            continue;
+-        }
+-
+-        const KScreen::ModePtr mode = output->currentMode();
+-
+-        QQuickView *view = new QQuickView();
+-
+-        view->setFlags(Qt::X11BypassWindowManagerHint | Qt::FramelessWindowHint);
+-        view->setResizeMode(QQuickView::SizeViewToRootObject);
+-        view->setSource(QUrl::fromLocalFile(qmlPath));
+-        view->installEventFilter(this);
+-
+-        QQuickItem *rootObj = view->rootObject();
+-        if (!rootObj) {
+-            qWarning() << "Failed to obtain root item";
+-            continue;
+-        }
+-
+-        QSize deviceSize, logicalSize;
+-        if (output->isHorizontal()) {
+-            deviceSize = mode->size();
+-        } else {
+-            deviceSize = QSize(mode->size().height(), mode->size().width());
+-        }
+-
+-#if QT_VERSION <= QT_VERSION_CHECK(5, 12, 0)
+-#else
+-        if (config->supportedFeatures() & KScreen::Config::Feature::PerOutputScaling) {
+-            // no scale adjustment needed on Wayland
+-            logicalSize = deviceSize;
+-        } else {
+-            logicalSize = deviceSize / devicePixelRatioF();
+-        }
+-#endif
+-
+-        rootObj->setProperty("outputName", Utils::outputName(output));
+-        rootObj->setProperty("modeName", Utils::sizeToString(deviceSize));
+-
+-#if QT_VERSION <= QT_VERSION_CHECK(5, 12, 0)
+-        view->setProperty("screenSize", QRect(output->pos(), deviceSize));
+-#else
+-        view->setProperty("screenSize", QRect(output->pos(), logicalSize));
+-#endif
+-
+-        mOutputIdentifiers << view;
+-    }
+-
+-    for (QQuickView *view: mOutputIdentifiers) {
+-        view->show();
+-    }
+-
+-    mOutputTimer->start(2500);
+-}
+-
+-void Widget::isWayland()
+-{
+-    QString sessionType = getenv("XDG_SESSION_TYPE");
+-
+-    if (!sessionType.compare(kSession, Qt::CaseSensitive)) {
+-        mIsWayland = true;
+-    } else {
+-        mIsWayland = false;
+-    }
+-}
+-
+-
+-void Widget::setDDCBrightnessN(int value, QString screenName)
+-{
+-    QString type;
+-    if (screenName.contains("VGA", Qt::CaseInsensitive)) {
+-        type = "4";
+-    } else {
+-        type = "8";
+-    }
+-    QDBusInterface ukccIfc("com.control.center.qt.systemdbus",
+-                           "/",
+-                           "com.control.center.interface",
+-                           QDBusConnection::systemBus());
+-
+-
+-       if (mLock.tryLock()) {
+-            ukccIfc.call("setDDCBrightness", QString::number(value), type);
+-            mLock.unlock();
+-       }
+-}
+-
+-void Widget::setDDCBrightnessN(int value, QString edidHash, QString i2cBus)
+-{
+-    if (i2cBus == "")
+-        return;
+-
+-    QDBusInterface ukccIfc("com.control.center.qt.systemdbus",
+-                           "/",
+-                           "com.control.center.interface",
+-                           QDBusConnection::systemBus());
+-
+-
+-    if (mLock.tryLock()) {
+-        ukccIfc.call("setDisplayBrightness", QString::number(value), edidHash, i2cBus);
+-        mLock.unlock();
+-    }
+-
+-}
+-
+-void Widget::setScreenKDS(QString kdsConfig)
+-{
+-    KScreen::OutputList screens = mConfig->connectedOutputs();
+-    int firstScreenID = screens.begin().key();
+-    int endScreenID = screens.end().key();
+-    if (kdsConfig == "expand") {
+-        Q_FOREACH(KScreen::OutputPtr output, screens) {
+-            if (!output.isNull() && !mUnifyButton->isChecked()) {
+-                output->setEnabled(true);
+-                output->setCurrentModeId("0");
+-            }
+-        }
+-
+-        KScreen::OutputList screensPre = mPrevConfig->connectedOutputs();
+-
+-        KScreen::OutputPtr mainScreen = mPrevConfig->primaryOutput();
+-        if (!mainScreen.isNull()) {
+-            mainScreen->setPos(QPoint(0, 0));
+-        }
+-
+-        KScreen::OutputPtr preIt = mainScreen;
+-        QMap<int, KScreen::OutputPtr>::iterator nowIt = screensPre.begin();
+-
+-        while (nowIt != screensPre.end()) {
+-            if (nowIt.value() != mainScreen) {
+-                nowIt.value()->setPos(QPoint(preIt->pos().x() + preIt->size().width(), 0));
+-                KScreen::ModeList modes = preIt->modes();
+-                Q_FOREACH (const KScreen::ModePtr &mode, modes) {
+-                    if (preIt->currentModeId() == mode->id()) {
+-                        if (preIt->rotation() != KScreen::Output::Rotation::Left && preIt->rotation() != KScreen::Output::Rotation::Right) {
+-                            nowIt.value()->setPos(QPoint(preIt->pos().x() + mode->size().width(), 0));
+-                        } else {
+-                            nowIt.value()->setPos(QPoint(preIt->pos().x() + mode->size().height(), 0));
+-                        }
+-                    }
+-                }
+-                preIt = nowIt.value();
+-            }
+-            nowIt++;
+-        }
+-    } else if (kdsConfig == "first") {
+-        QMapIterator<int, KScreen::OutputPtr> firstIt(screens);
+-        while (firstIt.hasNext()) {
+-            firstIt.next();
+-            firstIt.value()->setEnabled(firstIt.key() == firstScreenID);
+-        }
+-    } else if (kdsConfig == "second") {
+-        QMapIterator<int, KScreen::OutputPtr> endIt(screens);
+-        while (endIt.hasNext()) {
+-            endIt.next();
+-            endIt.value()->setEnabled(endIt.key() == endScreenID);
+-        }
+-    } else {
+-        Q_FOREACH(KScreen::OutputPtr output, screens) {
+-            if (!output.isNull()) {
+-                output->setEnabled(true);
+-            }
+-        }
+-    }
+-    delayApply();
+-}
+-
+-void Widget::setActiveScreen(QString status)
+-{
+-    int activeScreenId = 1;
+-    int enableCount = 0;
+-    int connectCount = 0;
+-    Q_FOREACH(const KScreen::OutputPtr &output, mConfig->connectedOutputs()) {
+-        connectCount++;
+-        enableCount = (output->isEnabled() ? (++enableCount) : enableCount);
+-    }
+-
+-    if (status == "second") {
+-        activeScreenId = connectCount;
+-    }
+-
+-    for (int index = 0; index <= ui->primaryCombo->count(); index++) {
+-        KScreen::OutputPtr output = mConfig->output(ui->primaryCombo->itemData(index).toInt());
+-        if (status.isEmpty() && connectCount > enableCount && !output.isNull() && output->isEnabled()) {
+-            ui->primaryCombo->setCurrentIndex(index);
+-        }
+-
+-        if (!status.isEmpty() && !output.isNull() && activeScreenId == output->id()) {
+-            ui->primaryCombo->setCurrentIndex(index);
+-        }
+-    }
+-}
+-
+-QList<ScreenConfig> Widget::getPreScreenCfg()
+-{
+-    QDBusMessage msg = mUkccInterface.get()->call("getPreScreenCfg");
+-    if(msg.type() == QDBusMessage::ErrorMessage) {
+-        qWarning() << "get pre screen cfg failed";
+-    }
+-    QDBusArgument argument = msg.arguments().at(0).value<QDBusArgument>();
+-    QList<QVariant> infos;
+-    argument >> infos;
+-
+-    QList<ScreenConfig> preScreenCfg;
+-    for (int i = 0; i < infos.size(); i++){
+-        ScreenConfig cfg;
+-        infos.at(i).value<QDBusArgument>() >> cfg;
+-        preScreenCfg.append(cfg);
+-    }
+-
+-    return preScreenCfg;
+-}
+-
+-void Widget::setPreScreenCfg(KScreen::OutputList screens)
+-{
+-    QMap<int, KScreen::OutputPtr>::iterator nowIt = screens.begin();
+-
+-    QVariantList retlist;
+-    int enableCount = 0;
+-    while (nowIt != screens.end()) {
+-        ScreenConfig cfg;
+-        cfg.screenId = nowIt.value()->name();
+-        cfg.screenModeId = nowIt.value()->currentModeId();
+-        cfg.screenPosX = nowIt.value()->pos().x();
+-        cfg.screenPosY = nowIt.value()->pos().y();
+-        cfg.primary = nowIt.value()->isPrimary();
+-
+-        QVariant variant = QVariant::fromValue(cfg);
+-        retlist << variant;
+-        if (nowIt.value()->isEnabled()) {
+-            enableCount++;
+-        }
+-        nowIt++;
+-    }
+-    if (enableCount < 2) {
+-        return;
+-    }
+-
+-    mUkccInterface.get()->call("setPreScreenCfg", retlist);
+-
+-    QVariantList outputList;
+-    Q_FOREACH(QVariant variant, retlist) {
+-        ScreenConfig screenCfg = variant.value<ScreenConfig>();
+-        QVariantMap map;
+-        map["id"] = screenCfg.screenId;
+-        map["modeid"] = screenCfg.screenModeId;
+-        map["x"] = screenCfg.screenPosX;
+-        map["y"] = screenCfg.screenPosY;
+-        map["primary"] = screenCfg.primary;
+-        outputList << map;
+-    }
+-
+-    QString filePath = QDir::homePath() + "/.config/ukui/ukcc-screenPreCfg.json";
+-    QFile file(filePath);
+-    if (!file.open(QIODevice::WriteOnly)) {
+-        qWarning() << "Failed to open config file for writing! " << file.errorString();
+-
+-    }
+-    file.write(QJsonDocument::fromVariant(outputList).toJson());
+-}
+-
+-void Widget::setScreenIsApply(bool isApply)
+-{
+-    mIsScreenAdd = !isApply;
+-}
+-
+-int Widget::screenEnableCount()
+-{
+-    int enableCount = 0;
+-    Q_FOREACH(KScreen::OutputPtr output, mConfig->connectedOutputs()) {
+-        if (output->isEnabled()) {
+-            enableCount++;
+-        }
+-    }
+-    return enableCount;
+-}
+-
+-void Widget::setExtendPrimaryScreen()
+-{
+-    QVector<KScreen::Output *> outputs;
+-    Q_FOREACH (const auto &output, mConfig->outputs()) {
+-        outputs << output.data();
+-    }
+-
+-    QCryptographicHash hash(QCryptographicHash::Md5);
+-    Q_FOREACH (const KScreen::Output *output, outputs) {
+-        hash.addData(output->uuid());
+-    }
+-    QByteArray groupUuid = QByteArray(1, '0').append(hash.result().toHex()).left(15);
+-    const auto config = KSharedConfig::openConfig(QLatin1String("ukui-kwinrc"));
+-    const auto outputGroup = config->group("DrmOutputs");
+-    const auto configGroup = outputGroup.group(groupUuid);
+-
+-    Q_FOREACH (const auto &output, outputs) {
+-        const auto outputConfig = configGroup.group(output->uuid());
+-        bool primary = outputConfig.readEntry<bool>("Primary", false);
+-        if (primary) {
+-            output->setPrimary(true);
+-        }
+-    }
+-}
+-
+-void Widget::showZoomtips()
+-{
+-    int ret;
+-    QMessageBox msg(this->topLevelWidget());
+-    msg.setWindowTitle(tr("Hint"));
+-    msg.setIcon(QMessageBox::Warning);
+-    msg.setText(tr("The zoom has been modified, it will take effect after you log off"));
+-    msg.addButton(tr("Log out now"), QMessageBox::AcceptRole);
+-    msg.addButton(tr("Later"), QMessageBox::RejectRole);
+-
+-    ret = msg.exec();
+-
+-    switch (ret) {
+-    case QMessageBox::AcceptRole:
+-        system("ukui-session-tools --logout");
+-        break;
+-    case QMessageBox::RejectRole:
+-        break;
+-    }
+-}
+-
+-//通过win+p修改,不存在按钮影响亮度显示的情况,直接就应用了,此时每个屏幕的openFlag是没有修改的,需要单独处理(setScreenKDS)
+-void Widget::kdsScreenchangeSlot(QString status)
+-{
+-    qDebug() << Q_FUNC_INFO << "changed by kds";
+-    if (!status.compare(mPreKDSCfg)) {
+-        return;
+-    }
+-    if (!mUnifyButton->isChecked()) {
+-        setPreScreenCfg(mConfig->connectedOutputs());
+-    }
+-    //fix bug#107519,由于从镜像变为扩展之后,UnifiedOutputCfg监听到currentModeId改变从而修改了分辨率导致
+-    if (status != "copy") {
+-        mControlPanel->deleteUnifiedOutputCfg();
+-    }
+-    QTimer::singleShot(2500, this, [=] {
+-        bool isPreChecked = mUnifyButton->isChecked();
+-        bool isCheck = (status == "copy") ? true : false;
+-        mKDSCfg = status;
+-        mPreKDSCfg = status;
+-        mPrevConfig = mConfig->clone();
+-        if (mConfig->connectedOutputs().count() >= 2) {
+-            mUnifyButton->setChecked(isCheck);
+-        }
+-        bool afterChecked = mUnifyButton->isChecked();
+-
+-        Q_FOREACH(KScreen::OutputPtr output, mConfig->connectedOutputs()) {
+-            if (output.isNull())
+-                continue;
+-            for (int i = 0; i < BrightnessFrameV.size(); ++i) {
+-                if (BrightnessFrameV[i]->outputName == Utils::outputName(output)) {
+-                    BrightnessFrameV[i]->openFlag = output->isEnabled();
+-                }
+-            }
+-        }
+-        if (isCheck == true) {
+-            showBrightnessFrame(1);
+-        } else {
+-            showBrightnessFrame(2);
+-        }
+-        // 统一输出按钮状态未改变,清除标志位
+-        if (isPreChecked == afterChecked) {
+-            mKDSCfg.clear();
+-        }
+-        enableChangedSlot();
+-        mainScreenButtonSelect(ui->primaryCombo->currentIndex());
+-    });
+-}
+-
+-void Widget::delayApply()
+-{
+-    QTimer::singleShot(500, this, [=] {
+-        if (mKDSCfg.isEmpty() && !mIsScreenAdd) {
+-            slotQmloutOutChanged();
+-            save();
+-            enableChangedSlot();
+-        }
+-        mIsUnifyChanged = false;
+-        mKDSCfg.clear();
+-        mIsScreenAdd = false;
+-    });
+-}
+-
+-void Widget::enableChangedSlot()
+-{
+-    int count = 0;
+-    for (KScreen::OutputPtr output : mConfig->connectedOutputs()) {
+-        if (output->isEnabled()) {
+-            count++;
+-        }
+-    }
+-
+-    for (QMLOutput *output: mScreen->outputs()) {
+-        output->setEnableCount(count);
+-    }
+-}
+-
+-void Widget::setKscreenConfig(const KScreen::ConfigPtr &config)
+-{
+-    /* Store the current config, apply settings */
+-    auto *op = new KScreen::SetConfigOperation(config);
+-
+-    /* Block until the operation is completed, otherwise KCMShell will terminate
+-     * before we get to execute the Operation */
+-    op->exec();
+-    op->deleteLater();
+-    op = nullptr;
+-}
+-
+-void Widget::save()
+-{
+-    qDebug() << Q_FUNC_INFO << "apply config";
+-    if (!this) {
+-        return;
+-    }
+-
+-    const KScreen::ConfigPtr &config = this->currentConfig();
+-
+-    Q_FOREACH (const KScreen::OutputPtr &output, config->outputs()) {
+-        if (!output->isConnected())
+-            continue;
+-
+-        QMLOutput *base = mScreen->primaryOutput();
+-        if (!base) {
+-            for (QMLOutput *output: mScreen->outputs()) {
+-                if (output->output()->isConnected() && output->output()->isEnabled()) {
+-                    base = output;
+-                    break;
+-                }
+-            }
+-
+-            if (!base) {
+-                // WTF?
+-                return;
+-            }
+-        }
+-    }
+-
+-    if (((ui->opHourCom->currentIndex() < ui->clHourCom->currentIndex())
+-                || (ui->opHourCom->currentIndex() == ui->clHourCom->currentIndex()
+-                    && ui->opMinCom->currentIndex() <= ui->clMinCom->currentIndex()))
+-               && CUSTOM == singleButton->checkedId() && mNightButton->isChecked()) {
+-        QMessageBox::warning(this, tr("Warning"),
+-                             tr("Open time should be earlier than close time!"));
+-        mCloseScreenButton->setChecked(true);
+-        return;
+-    }
+-
+-    setNightMode(mNightButton->isChecked());
+-
+-    if (!KScreen::Config::canBeApplied(config)) {
+-        QMessageBox::information(this,
+-                                 tr("Warnning"),
+-                                 tr("Sorry, your configuration could not be applied.\nCommon reasons are that the overall screen size is too big, or you enabled more displays than supported by your GPU."));
+-        return;
+-    }
+-
+-    int enableScreenCount = 0;
+-    KScreen::OutputPtr enableOutput;
+-    for (const KScreen::OutputPtr &output : mConfig->outputs()) {
+-        if (output->isEnabled()) {
+-            enableOutput = output;
+-            enableScreenCount++;
+-        }
+-    }
+-    KScreen::ConfigPtr mPrevConfig = mPreScreenConfig->clone();
+-    if (enableScreenCount > 0) {
+-        auto *preOp = new KScreen::GetConfigOperation();
+-        preOp->exec();
+-        mPrevConfig = preOp->config()->clone();  //重新获取屏幕当前状态
+-        preOp->deleteLater();
+-    }
+-
+-    setKscreenConfig(config);
+-
+-    // The 1000ms is a bit "random" here, it's what works on the systems I've tested, but ultimately, this is a hack
+-    // due to the fact that we just can't be sure when xrandr is done changing things, 1000 doesn't seem to get in the way
+-    QTimer::singleShot(1000, this,
+-                       [=]() {
+-        if (mIsWayland) {
+-            QString hash = config->connectedOutputsHash();
+-            writeFile(mDir % hash);
+-        }
+-        mIsUnifyChanged = false;
+-        mConfigChanged = false;
+-        mainScreenButtonSelect(ui->primaryCombo->currentIndex());
+-    });
+-
+-    if (isRestoreConfig()) {
+-        auto *op = new KScreen::SetConfigOperation(mPrevConfig);
+-        op->exec();
+-        // 无法知道什么时候执行完操作
+-        QTimer::singleShot(1000, this, [=]() {
+-            writeFile(mDir % mPrevConfig->connectedOutputsHash());
+-        });
+-    } else {
+-        mPreKDSCfg.clear();  // 控制面板主动操作,清除win+p标志位
+-        mPreScreenConfig = mConfig->clone();
+-    }
+-
+-    if (enableScreenCount >= 2 && !mUnifyButton->isChecked()) {
+-        setPreScreenCfg(mConfig->connectedOutputs());
+-    }
+-
+-    setActiveScreen();
+-
+-    for (int i = 0; i < BrightnessFrameV.size(); ++i) {   //应用成功再更新屏幕是否开启的状态,判断亮度条是否打开
+-        for (KScreen::OutputPtr output : mConfig->outputs()) {
+-            if (BrightnessFrameV[i]->outputName == Utils::outputName(output)) {
+-                BrightnessFrameV[i]->openFlag = output->isEnabled();
+-            }
+-        }
+-    }
+-    int flag = mUnifyButton->isChecked() ? 1 : 2;
+-    showBrightnessFrame(flag);  //成功应用之后,重新显示亮度条,传入是否统一输出,1表示打开,2表示关闭
+-}
+-
+-QVariantMap metadata(const KScreen::OutputPtr &output)
+-{
+-    QVariantMap metadata;
+-    metadata[QStringLiteral("name")] = output->name();
+-    if (!output->edid() || !output->edid()->isValid()) {
+-        return metadata;
+-    }
+-
+-    metadata[QStringLiteral("fullname")] = output->edid()->deviceId();
+-    return metadata;
+-}
+-
+-QString Widget::globalFileName(const QString &hash)
+-{
+-    QString s_dirPath = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)
+-                        %QStringLiteral("/kscreen/");
+-    QString dir = s_dirPath  % QStringLiteral("outputs/");
+-    if (!QDir().mkpath(dir)) {
+-        return QString();
+-    }
+-    return QString();
+-}
+-
+-QVariantMap Widget::getGlobalData(KScreen::OutputPtr output)
+-{
+-    QFile file(globalFileName(output->hashMd5()));
+-    if (!file.open(QIODevice::ReadOnly)) {
+-        qDebug() << "Failed to open file" << file.fileName();
+-        return QVariantMap();
+-    }
+-    QJsonDocument parser;
+-    return parser.fromJson(file.readAll()).toVariant().toMap();
+-}
+-
+-void Widget::writeGlobal(const KScreen::OutputPtr &output)
+-{
+-    // get old values and subsequently override
+-    QVariantMap info = getGlobalData(output);
+-    if (!writeGlobalPart(output, info, nullptr)) {
+-        return;
+-    }
+-    QFile file(globalFileName(output->hashMd5()));
+-    if (!file.open(QIODevice::WriteOnly)) {
+-        qWarning() << "Failed to open global output file for writing! " << file.errorString();
+-        return;
+-    }
+-
+-    file.write(QJsonDocument::fromVariant(info).toJson());
+-    return;
+-}
+-
+-bool Widget::writeGlobalPart(const KScreen::OutputPtr &output, QVariantMap &info,
+-                             const KScreen::OutputPtr &fallback)
+-{
+-    info[QStringLiteral("id")] = output->hash();
+-    info[QStringLiteral("metadata")] = metadata(output);
+-    info[QStringLiteral("rotation")] = output->rotation();
+-
+-    // Round scale to four digits
+-    info[QStringLiteral("scale")] = int(output->scale() * 10000 + 0.5) / 10000.;
+-
+-    QVariantMap modeInfo;
+-    float refreshRate = -1.;
+-    QSize modeSize;
+-    if (output->currentMode() && output->isEnabled()) {
+-        refreshRate = output->currentMode()->refreshRate();
+-        modeSize = output->currentMode()->size();
+-    } else if (fallback && fallback->currentMode()) {
+-        refreshRate = fallback->currentMode()->refreshRate();
+-        modeSize = fallback->currentMode()->size();
+-    }
+-
+-    if (refreshRate < 0 || !modeSize.isValid()) {
+-        return false;
+-    }
+-
+-    modeInfo[QStringLiteral("refresh")] = refreshRate;
+-
+-    QVariantMap modeSizeMap;
+-    modeSizeMap[QStringLiteral("width")] = modeSize.width();
+-    modeSizeMap[QStringLiteral("height")] = modeSize.height();
+-    modeInfo[QStringLiteral("size")] = modeSizeMap;
+-
+-    info[QStringLiteral("mode")] = modeInfo;
+-
+-    return true;
+-}
+-
+-bool Widget::writeFile(const QString &filePath)
+-{
+-    const KScreen::OutputList outputs = mConfig->outputs();
+-    const auto oldConfig = mPreScreenConfig;
+-    KScreen::OutputList oldOutputs;
+-    if (oldConfig) {
+-        oldOutputs = oldConfig->outputs();
+-    }
+-    QVariantList outputList;
+-    for (const KScreen::OutputPtr &output : outputs) {
+-        QVariantMap info;
+-        const auto oldOutputIt = std::find_if(oldOutputs.constBegin(), oldOutputs.constEnd(),
+-                                              [output](const KScreen::OutputPtr &out) {
+-            return out->hashMd5() == output->hashMd5();
+-        });
+-        const KScreen::OutputPtr oldOutput = oldOutputIt != oldOutputs.constEnd() ? *oldOutputIt
+-                                             : nullptr;
+-        if (!output->isConnected()) {
+-            continue;
+-        }
+-
+-        writeGlobalPart(output, info, oldOutput);
+-        info[QStringLiteral("primary")] = output->isPrimary();
+-        info[QStringLiteral("enabled")] = output->isEnabled();
+-
+-        auto setOutputConfigInfo = [&info](const KScreen::OutputPtr &out) {
+-                                       if (!out) {
+-                                           return;
+-                                       }
+-
+-                                       QVariantMap pos;
+-                                       pos[QStringLiteral("x")] = out->pos().x();
+-                                       pos[QStringLiteral("y")] = out->pos().y();
+-                                       info[QStringLiteral("pos")] = pos;
+-                                   };
+-        setOutputConfigInfo(output->isEnabled() ? output : oldOutput);
+-
+-        if (output->isEnabled()) {
+-            // try to update global output data
+-            writeGlobal(output);
+-        }
+-        outputList.append(info);
+-    }
+-
+-    QFile file(filePath);
+-    if (!file.open(QIODevice::WriteOnly)) {
+-        qWarning() << "Failed to open config file for writing! " << file.errorString();
+-        return false;
+-    }
+-    file.write(QJsonDocument::fromVariant(outputList).toJson());
+-    qDebug() << "Config saved on: " << file.fileName();
+-
+-    return true;
+-}
+-
+-void Widget::scaleChangedSlot(double scale)
+-{
+-    if (scaleGSettings->get(SCALE_KEY).toDouble() != scale) {
+-        mIsScaleChanged = true;
+-    } else {
+-        mIsScaleChanged = false;
+-    }
+-    writeScale(scale);
+-}
+-
+-void Widget::changedSlot()
+-{
+-    mConfigChanged = true;
+-}
+-
+-void Widget::propertiesChangedSlot(QString property, QMap<QString, QVariant> propertyMap,
+-                                   QStringList propertyList)
+-{
+-    Q_UNUSED(property);
+-    Q_UNUSED(propertyList);
+-    if (propertyMap.keys().contains("OnBattery")) {
+-        mOnBattery = propertyMap.value("OnBattery").toBool();
+-    }
+-}
+-
+-// 是否禁用主屏按钮
+-void Widget::mainScreenButtonSelect(int index)
+-{
+-    if (!mConfig || ui->primaryCombo->count() <= 0) {
+-        return;
+-    }
+-
+-    const KScreen::OutputPtr newPrimary = mConfig->output(ui->primaryCombo->itemData(index).toInt());
+-
+-    if (!newPrimary->isEnabled()) {
+-        ui->scaleCombo->setEnabled(false);
+-    } else {
+-        ui->scaleCombo->setEnabled(true);
+-    }
+-
+-    int connectCount = mConfig->connectedOutputs().count();
+-
+-    if (newPrimary == mConfig->primaryOutput() || mUnifyButton->isChecked() || (mConfig->connectedOutputs().count() == 1) || !newPrimary->isEnabled()) {
+-        ui->mainScreenButton->setEnabled(false);
+-    } else {
+-        ui->mainScreenButton->setEnabled(true);
+-    }
+-
+-    // 设置是否勾选
+-    mCloseScreenButton->setEnabled(true);
+-    ui->showMonitorframe->setVisible(connectCount > 1 && !mUnifyButton->isChecked());
+-
+-    // 初始化时不要发射信号
+-    mCloseScreenButton->blockSignals(true);
+-    mCloseScreenButton->setChecked(newPrimary->isEnabled());
+-    mCloseScreenButton->blockSignals(false);
+-    mControlPanel->activateOutput(newPrimary);
+-
+-    mScreen->setActiveOutputByCombox(newPrimary->id());
+-}
+-
+-// 设置主屏按钮
+-void Widget::primaryButtonEnable(bool status)
+-{
+-    Q_UNUSED(status);
+-    if (!mConfig) {
+-        return;
+-    }
+-    int index = ui->primaryCombo->currentIndex();
+-    ui->mainScreenButton->setEnabled(false);
+-    const KScreen::OutputPtr newPrimary = mConfig->output(ui->primaryCombo->itemData(index).toInt());
+-    mConfig->setPrimaryOutput(newPrimary);
+-}
+-
+-void Widget::checkOutputScreen(bool judge)
+-{
+-    const KScreen::ConfigPtr &config = this->currentConfig();
+-
+-    int enableOutputCount = 0;
+-    Q_FOREACH (const KScreen::OutputPtr &output, config->outputs()) {
+-        if (output->isEnabled()) {
+-            enableOutputCount++;
+-        }
+-    }
+-    if (enableOutputCount < 2 && !judge) {
+-        QMessageBox::warning(this, tr("Warning"), tr("please insure at least one output!"));
+-        mCloseScreenButton->blockSignals(true);
+-        mCloseScreenButton->setChecked(true);
+-        mCloseScreenButton->blockSignals(false);
+-        return;
+-    }
+-
+-    int index = ui->primaryCombo->currentIndex();
+-    KScreen::OutputPtr newPrimary = mConfig->output(ui->primaryCombo->itemData(index).toInt());
+-
+-    KScreen::OutputPtr mainScreen = mConfig->primaryOutput();
+-
+-    if (!mainScreen) {
+-        mConfig->setPrimaryOutput(newPrimary);
+-    }
+-    mainScreen = mConfig->primaryOutput();
+-
+-    if (!judge) {
+-        setPreScreenCfg(mConfig->connectedOutputs());
+-    } else {
+-        QList<ScreenConfig> preScreenCfg = getPreScreenCfg();
+-        KScreen::OutputList screens = mConfig->connectedOutputs();
+-
+-        if (!preScreenCfg.isEmpty()) {
+-            Q_FOREACH(ScreenConfig cfg, preScreenCfg) {
+-                Q_FOREACH(KScreen::OutputPtr output, screens) {
+-                    if (!cfg.screenId.compare(output->name())) {
+-                        output->setPos(QPoint(cfg.screenPosX, cfg.screenPosY));
+-                    }
+-                }
+-            }
+-        } else {
+-            KScreen::OutputPtr enableOutput;
+-            Q_FOREACH(KScreen::OutputPtr output, screens) {
+-                if (output->isEnabled()) {
+-                    enableOutput = output;
+-                    break;
+-                }
+-            }
+-            newPrimary->setEnabled(judge);
+-            newPrimary->setPos(QPoint(enableOutput->size().width(), 0));
+-        }
+-        setExtendPrimaryScreen();
+-    }
+-
+-    newPrimary->setEnabled(judge);
+-
+-
+-    ui->primaryCombo->blockSignals(true);
+-    ui->primaryCombo->setCurrentIndex(index);
+-    ui->primaryCombo->blockSignals(false);
+-    mainScreenButtonSelect(index);
+-}
+-
+-
+-void Widget::initConnection()
+-{
+-    connect(mNightButton, SIGNAL(checkedChanged(bool)), this, SLOT(showNightWidget(bool)));
+-    connect(mThemeButton, SIGNAL(checkedChanged(bool)), this, SLOT(slotThemeChanged(bool)));
+-    connect(singleButton, SIGNAL(buttonClicked(int)), this, SLOT(showCustomWiget(int)));
+-
+-    connect(ui->mainScreenButton, &QPushButton::clicked, this, [=](bool status) {
+-       primaryButtonEnable(status);
+-       delayApply();
+-    });
+-
+-    mControlPanel = new ControlPanel(this);
+-    connect(mControlPanel, &ControlPanel::changed, this, &Widget::changed);
+-    connect(this, &Widget::changed, this, &Widget::changedSlot);
+-    connect(mControlPanel, &ControlPanel::scaleChanged, this, &Widget::scaleChangedSlot);
+-
+-    connect(this, &Widget::changed, this, [=](){
+-        changedSlot();
+-        delayApply();
+-    });
+-
+-    ui->controlPanelLayout->addWidget(mControlPanel);
+-
+-    connect(mCloseScreenButton, &KSwitchButton::stateChanged, this, [this](bool checked){
+-        checkOutputScreen(checked);
+-        delayApply();
+-        changescale();
+-    });
+-
+-    connect(ui->advancedBtn, &QPushButton::clicked, this, [=] {
+-        DisplayPerformanceDialog *dialog = new DisplayPerformanceDialog;
+-        dialog->exec();
+-    });
+-
+-    connect(mUnifyButton, &KSwitchButton::stateChanged,
+-            [this] {
+-        mIsUnifyChanged = true;
+-        slotUnifyOutputs();
+-        setScreenIsApply(true);
+-        delayApply();
+-    });
+-
+-    QDBusConnection::sessionBus().connect(QString(),
+-                                          QString("/"),
+-                                          "org.ukui.ukcc.session.interface",
+-                                          "screenChanged",
+-                                          this,
+-                                          SLOT(kdsScreenchangeSlot(QString)));
+-
+-    QDBusConnection::sessionBus().connect(QString(),
+-                                          QString("/ColorCorrect"),
+-                                          "org.ukui.kwin.ColorCorrect",
+-                                          "nightColorConfigChanged",
+-                                          this,
+-                                          SLOT(nightChangedSlot(QHash<QString,QVariant>)));
+-
+-    mOutputTimer = new QTimer(this);
+-    connect(mOutputTimer, &QTimer::timeout,
+-            this, &Widget::clearOutputIdentifiers);
+-
+-    mApplyShortcut = new QShortcut(QKeySequence("Ctrl+A"), this);
+-    connect(mApplyShortcut, SIGNAL(activated()), this, SLOT(save()));
+-
+-    connect(ui->primaryCombo, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+-            this, [=](int index) {
+-        mainScreenButtonSelect(index);
+-        showBrightnessFrame();  //当前屏幕框变化的时候,显示,此时不判断
+-
+-    });
+-}
+-
+-
+-void Widget::initTemptSlider()
+-{
+-    ui->temptSlider->setRange(1.1*1000, 6500);
+-    ui->temptSlider->setTracking(true);
+-
+-    for (int i = 0; i < 24; i++) {
+-        ui->opHourCom->addItem(QStringLiteral("%1").arg(i, 2, 10, QLatin1Char('0')));
+-        ui->clHourCom->addItem(QStringLiteral("%1").arg(i, 2, 10, QLatin1Char('0')));
+-    }
+-
+-    for (int i = 0; i < 60; i++) {
+-        ui->opMinCom->addItem(QStringLiteral("%1").arg(i, 2, 10, QLatin1Char('0')));
+-        ui->clMinCom->addItem(QStringLiteral("%1").arg(i, 2, 10, QLatin1Char('0')));
+-    }
+-}
+-
+-void Widget::setNightMode(const bool nightMode)
+-{
+-    QDBusInterface colorIft("org.ukui.KWin",
+-                            "/ColorCorrect",
+-                            "org.ukui.kwin.ColorCorrect",
+-                            QDBusConnection::sessionBus());
+-    if (!colorIft.isValid()) {
+-        qWarning() << "create org.ukui.kwin.ColorCorrect failed";
+-        return;
+-    }
+-
+-    if (!nightMode) {
+-        mNightConfig["Active"] = false;
+-    } else {
+-        mNightConfig["Active"] = true;
+-        mNightConfig["Mode"] = 2;
+-
+-        if (ui->sunradioBtn->isChecked()) {
+-            mNightConfig["EveningBeginFixed"] = "17:55:00";
+-            mNightConfig["MorningBeginFixed"] = "05:55:04";
+-        } else if (ui->customradioBtn->isChecked()) {
+-            mNightConfig["EveningBeginFixed"] = ui->opHourCom->currentText() + ":"
+-                                                + ui->opMinCom->currentText() + ":00";
+-            mNightConfig["MorningBeginFixed"] = ui->clHourCom->currentText() + ":"
+-                                                + ui->clMinCom->currentText() + ":00";
+-        }
+-        mNightConfig["NightTemperature"] = ui->temptSlider->value();
+-    }
+-
+-    colorIft.call("setNightColorConfig", mNightConfig);
+-}
+-
+-void Widget::initUiComponent()
+-{
+-    mDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)
+-            %QStringLiteral("/kscreen/")
+-            %QStringLiteral("" /*"configs/"*/);
+-
+-    singleButton = new QButtonGroup();
+-    singleButton->addButton(ui->sunradioBtn);
+-    singleButton->addButton(ui->customradioBtn);
+-
+-    singleButton->setId(ui->sunradioBtn, SUN);
+-    singleButton->setId(ui->customradioBtn, CUSTOM);
+-
+-    MODE value = ui->customradioBtn->isChecked() == SUN ? SUN : CUSTOM;
+-    showNightWidget(mNightButton->isChecked());
+-    if (mNightButton->isChecked()) {
+-        showCustomWiget(value);
+-    }
+-
+-    QDBusInterface brightnessInterface("org.freedesktop.UPower",
+-                                       "/org/freedesktop/UPower/devices/DisplayDevice",
+-                                       "org.freedesktop.DBus.Properties",
+-                                       QDBusConnection::systemBus());
+-    if (!brightnessInterface.isValid()) {
+-        qDebug() << "Create UPower Interface Failed : " << QDBusConnection::systemBus().lastError();
+-        return;
+-    }
+-
+-    QDBusReply<QVariant> briginfo;
+-    briginfo = brightnessInterface.call("Get", "org.freedesktop.UPower.Device", "PowerSupply");
+-    mIsBattery = briginfo.value().toBool();
+-
+-    mUPowerInterface = QSharedPointer<QDBusInterface>(
+-        new QDBusInterface("org.freedesktop.UPower",
+-                           "/org/freedesktop/UPower",
+-                           "org.freedesktop.DBus.Properties",
+-                           QDBusConnection::systemBus()));
+-
+-    if (!mUPowerInterface.get()->isValid()) {
+-        qDebug() << "Create UPower Battery Interface Failed : " <<
+-            QDBusConnection::systemBus().lastError();
+-        return;
+-    }
+-
+-    QDBusReply<QVariant> batteryInfo;
+-    batteryInfo = mUPowerInterface.get()->call("Get", "org.freedesktop.UPower", "OnBattery");
+-    if (batteryInfo.isValid()) {
+-        mOnBattery = batteryInfo.value().toBool();
+-    }
+-
+-    mUPowerInterface.get()->connection().connect("org.freedesktop.UPower",
+-                                                 "/org/freedesktop/UPower",
+-                                                 "org.freedesktop.DBus.Properties",
+-                                                 "PropertiesChanged",
+-                                                 this,
+-                                                 SLOT(propertiesChangedSlot(QString,QMap<QString, QVariant>,
+-                                                                            QStringList)));
+-    mUkccInterface = QSharedPointer<QDBusInterface>(
+-                new QDBusInterface("org.ukui.ukcc.session",
+-                                   "/",
+-                                   "org.ukui.ukcc.session.interface",
+-                                   QDBusConnection::sessionBus()));
+-}
+-
+-void Widget::initNightStatus()
+-{
+-    QDBusInterface colorIft("org.ukui.KWin",
+-                            "/ColorCorrect",
+-                            "org.ukui.kwin.ColorCorrect",
+-                            QDBusConnection::sessionBus());
+-    if (colorIft.isValid() && UkccCommon::isExistEffect() && !mIsWayland) {
+-        this->mRedshiftIsValid = true;
+-    } else {
+-        qWarning() << "create org.ukui.kwin.ColorCorrect failed";
+-        return;
+-    }
+-
+-    QDBusMessage result = colorIft.call("nightColorInfo");
+-
+-    QList<QVariant> outArgs = result.arguments();
+-    QVariant first = outArgs.at(0);
+-    QDBusArgument dbvFirst = first.value<QDBusArgument>();
+-    QVariant vFirst = dbvFirst.asVariant();
+-    const QDBusArgument &dbusArgs = vFirst.value<QDBusArgument>();
+-
+-    QVector<ColorInfo> nightColor;
+-
+-    dbusArgs.beginArray();
+-    while (!dbusArgs.atEnd()) {
+-        ColorInfo color;
+-        dbusArgs >> color;
+-        nightColor.push_back(color);
+-    }
+-    dbusArgs.endArray();
+-
+-    for (ColorInfo it : nightColor) {
+-        mNightConfig.insert(it.arg, it.out.variant());
+-    }
+-
+-    this->mIsNightMode = mNightConfig["Active"].toBool();
+-    ui->temptSlider->setValue(mNightConfig["CurrentColorTemperature"].toInt());
+-    if (0 == mNightConfig["Mode"].toInt()) {
+-        ui->sunradioBtn->setChecked(true);
+-    } else if (2 == mNightConfig["Mode"].toInt()) {
+-        ui->customradioBtn->setChecked(true);
+-        QString openTime = mNightConfig["EveningBeginFixed"].toString();
+-        QString ophour = openTime.split(":").at(0);
+-        QString opmin = openTime.split(":").at(1);
+-
+-        ui->opHourCom->setCurrentIndex(ophour.toInt());
+-        ui->opMinCom->setCurrentIndex(opmin.toInt());
+-
+-        QString cltime = mNightConfig["MorningBeginFixed"].toString();
+-        QString clhour = cltime.split(":").at(0);
+-        QString clmin = cltime.split(":").at(1);
+-
+-        ui->clHourCom->setCurrentIndex(clhour.toInt());
+-        ui->clMinCom->setCurrentIndex(clmin.toInt());
+-    }
+-}
+-
+-void Widget::nightChangedSlot(QHash<QString, QVariant> nightArg)
+-{
+-    if (this->mRedshiftIsValid) {
+-        mNightButton->setChecked(nightArg["Active"].toBool());
+-    }
+-}
+-
+-
+-/* 总结: 亮度条怎么显示和实际的屏幕状态有关,与按钮选择状态关系不大:
+- * 实际为镜像模式,就显示所有屏幕的亮度(笔记本外显除外,笔记本外显任何情况均隐藏,这里未涉及)。
+- * 实际为扩展模式,就显示当前选中的屏幕亮度,如果当前选中复制模式,则亮度条隐藏不显示,应用之后再显示所有亮度条;
+- * 实际为单屏模式,即另一个屏幕关闭,则显示打开屏幕的亮度,关闭的显示器不显示亮度
+- *
+- *ps: by feng chao
+-*/
+-
+-void Widget::showBrightnessFrame(const int flag)
+-{
+-    QTimer::singleShot(0, this, [=]{
+-        int *pFlag = new int(flag);
+-        QObject::connect(new KScreen::GetConfigOperation(), &KScreen::GetConfigOperation::finished,
+-                         [&, pFlag](KScreen::ConfigOperation *op) {
+-            bool allShowFlag = true;
+-
+-            KScreen::ConfigPtr config = this->currentConfig();
+-
+-            KScreen::OutputPtr output = config->primaryOutput();
+-            if (mConfig->connectedOutputs().count() >= 2 && !output.isNull()) {
+-                foreach (KScreen::OutputPtr secOutput, config->connectedOutputs()) {
+-                    if (secOutput->geometry() != output->geometry() || !secOutput->isEnabled()) {
+-                        allShowFlag = false;
+-                    }
+-                    for (int i = 0; i < BrightnessFrameV.size(); ++i) { //检查其它显示屏是否实际打开,否则关闭,适用于显示器插拔
+-                            if (BrightnessFrameV[i]->outputName == Utils::outputName(secOutput)){
+-                                if (!secOutput->isEnabled())
+-                                    BrightnessFrameV[i]->openFlag = false;
+-                                else
+-                                    BrightnessFrameV[i]->openFlag = true;
+-                        }
+-                    }
+-                }
+-            } else {  //只有一个屏幕,把它亮度条打开,防止remove出问题
+-                allShowFlag = false;
+-                for (int i = 0; i < BrightnessFrameV.size(); ++i) {
+-                    if (BrightnessFrameV[i]->outputName == Utils::outputName(output)) {
+-                        BrightnessFrameV[i]->openFlag = true;
+-                    }
+-                }
+-            }
+-
+-            ui->unifyBrightFrame->setFixedHeight(0);
+-            if (*pFlag == 0 && allShowFlag == false && mUnifyButton->isChecked()) {  //选中了镜像模式,实际是扩展模式
+-
+-            } else if ((allShowFlag == true && *pFlag == 0) || *pFlag == 1) { //镜像模式/即将成为镜像模式
+-                ui->unifyBrightFrame->setFixedHeight(BrightnessFrameV.size() * (50 + 2 + 2));
+-                for (int i = 0; i < BrightnessFrameV.size(); ++i) {
+-                    BrightnessFrameV[i]->openFlag = true;
+-                    BrightnessFrameV[i]->setTextLableName(tr("Brightness") + QString("(") + BrightnessFrameV[i]->outputName + QString(")"));
+-                    BrightnessFrameV[i]->setVisible(true);
+-                }
+-            } else {
+-                for (int i = 0; i < BrightnessFrameV.size(); ++i) {
+-                    if (ui->primaryCombo->currentText() == BrightnessFrameV[i]->outputName && BrightnessFrameV[i]->openFlag) {
+-                        ui->unifyBrightFrame->setFixedHeight(52);
+-                        BrightnessFrameV[i]->setTextLableName(tr("Brightness"));
+-                        BrightnessFrameV[i]->setVisible(true);
+-                        //不能break,要把其他的frame隐藏
+-                    } else {
+-                        BrightnessFrameV[i]->setVisible(false);
+-                    }
+-                }
+-            }
+-            if (ui->unifyBrightFrame->height() > 0) {
+-                ui->unifyBrightFrame->setVisible(true);
+-            } else {
+-                ui->unifyBrightFrame->setVisible(false);
+-            }
+-            delete pFlag;
+-        });
+-    });
+-}
+-
+-void Widget::changescale()
+-{
+-    mScaleSizeRes = QSize();
+-    for (const KScreen::OutputPtr &output : mConfig->outputs()) {
+-        if (output->isEnabled()) {
+-            if (output->currentMode()) {
+-                if (mScaleSizeRes == QSize()) {
+-                    mScaleSizeRes = output->currentMode()->size();
+-                } else {
+-                    mScaleSizeRes = mScaleSizeRes.width() < output->currentMode()->size().width()?mScaleSizeRes:output->currentMode()->size();
+-                }
+-            } else {
+-                return;
+-            }
+-
+-        }
+-    }
+-    if (mScaleSizeRes != QSize(0,0)) {
+-        QSize scalesize = mScaleSizeRes;
+-        ui->scaleCombo->blockSignals(true);
+-        ui->scaleCombo->clear();
+-        ui->scaleCombo->addItem("100%", 1.0);
+-
+-        if (scalesize.width() > 1024 ) {
+-            ui->scaleCombo->addItem("125%", 1.25);
+-        }
+-        if (scalesize.width() == 1920 ) {
+-            ui->scaleCombo->addItem("150%", 1.5);
+-        }
+-        if (scalesize.width() > 1920) {
+-            ui->scaleCombo->addItem("150%", 1.5);
+-            ui->scaleCombo->addItem("175%", 1.75);
+-        }
+-        if (scalesize.width() >= 2160) {
+-            ui->scaleCombo->addItem("200%", 2.0);
+-        }
+-        if (scalesize.width() > 2560) {
+-            ui->scaleCombo->addItem("225%", 2.25);
+-        }
+-        if (scalesize.width() > 3072) {
+-            ui->scaleCombo->addItem("250%", 2.5);
+-        }
+-        if (scalesize.width() > 3840) {
+-            ui->scaleCombo->addItem("275%", 2.75);
+-        }
+-
+-        double scale;
+-        QStringList keys = scaleGSettings->keys();
+-        if (keys.contains("scalingFactor")) {
+-            scale = scaleGSettings->get(SCALE_KEY).toDouble();
+-        }
+-        if (ui->scaleCombo->findData(scale) == -1) {
+-            //记录分辨率切换时,新分辨率不存在的缩放率,在用户点击恢复设置时写入
+-            mIsSCaleRes = true;
+-            //记录是否因分辨率导致的缩放率变化
+-            mIsChange = true;
+-            scaleres = scale;
+-            scale = 1.0;
+-        }
+-        ui->scaleCombo->setCurrentText(QString::number(scale * 100) + "%");
+-        scaleChangedSlot(scale);
+-        ui->scaleCombo->blockSignals(false);
+-        mScaleSizeRes = QSize();
+-
+-    }
+-}
+-
+-void Widget::getAllI2Cbus()
+-{
+-    I2CbusMap.clear();
+-    QMap<QString, QString> msg;
+-    QString cmd = "find /sys/class/drm/card0-*/*/ -name '*i2c-[0-9]*'";
+-    QProcess process;
+-    process.start("bash", QStringList() <<"-c"<<cmd);
+-    process.waitForFinished();
+-    QString strResult = process.readAllStandardOutput();
+-    QStringList resultList = strResult.split("\n"); //所有结果
+-
+-    qDebug()<<"read i2c process result = "<<resultList;
+-    for (int i = 0; i < resultList.size(); i++) {
+-        QStringList i2cList = resultList.at(i).split("/"); //切割每一行结果
+-        if (i2cList.size() >= 5) {
+-            if (!msg.keys().contains(i2cList.at(4))) {
+-                //当不存在时就添加
+-                msg.insert(i2cList.at(4), resultList.at(i));
+-            } else {
+-                //已经存在,但是内容更少时也重新替换,drm中文件是嵌套的,可能存在包含关系,故做此处理
+-                if (msg[i2cList.at(4)].size() > resultList.at(i).size()) {
+-                    msg[i2cList.at(4)] = resultList.at(i);
+-                }
+-            }
+-        }
+-    }
+-    QMap<QString, QString>::const_iterator it;
+-    for (it = msg.constBegin(); it != msg.constEnd(); ++it) {
+-        qDebug()<<" ----------MAP-MSG--------- "<<it.key()<<" "<<it.value();
+-        //显示器名只取中间的(HDMI\VGA...),因为后面的内容kscreen和内核提供的不一定一致
+-        //因此当有多个HDMI接口时此方式并不适用
+-        QString name = it.key().split("-").at(1);
+-        QStringList i2cList = it.value().split("/");
+-        QString i2cStr = i2cList.at(i2cList.size() - 1);
+-        if (!i2cStr.contains("i2c-",Qt::CaseInsensitive)) {
+-            i2cStr = i2cList.at(i2cList.size() - 2);
+-        }
+-
+-        QString busNum = i2cStr.split("-").at(1);
+-        if (QString::number(busNum.toInt()) == busNum) {
+-            if (I2CbusMap.keys().contains(name)) {
+-                qDebug()<<"Unable to get the correct bus number from the kernel ... "<<name;
+-                I2CbusMap.clear(); //如果出现了一样的,表明有重复的接口,舍弃使用内核提供的bus号
+-                return;
+-            }
+-            qDebug()<<" i2c-name = "<<name<<" *** "<<"i2c-bus="<<busNum;
+-            I2CbusMap.insert(name, busNum);
+-        }
+-    }
+-    return;
+-}
+diff --git a/plugins/system/display_hw/widget.h b/plugins/system/display_hw/widget.h
+deleted file mode 100644
+index 77aad33..0000000
+--- a/plugins/system/display_hw/widget.h
++++ /dev/null
+@@ -1,260 +0,0 @@
+-#ifndef WIDGET_H
+-#define WIDGET_H
+-
+-#include <QMutex>
+-#include <QWidget>
+-#include <QVariantMap>
+-#include <QGSettings>
+-#include <QSettings>
+-#include <QButtonGroup>
+-#include <QDBusInterface>
+-#include <QDBusConnection>
+-#include <QDBusError>
+-#include <QDBusReply>
+-#include <QStringList>
+-#include <QSharedPointer>
+-#include <QHash>
+-#include <QVariant>
+-#include <QScreen>
+-#include <QMultiMap>
+-#include <QShortcut>
+-#include <QFuture>
+-
+-#include <KF5/KScreen/kscreen/config.h>
+-#include <unistd.h>
+-
+-#include "outputconfig.h"
+-#include "brightnessFrame.h"
+-#include "screenConfig.h"
+-#include "scalesize.h"
+-#include "kswitchbutton.h"
+-using namespace kdk;
+-
+-class QLabel;
+-class QMLOutput;
+-class QMLScreen;
+-class ControlPanel;
+-class PrimaryOutputCombo;
+-
+-class QPushButton;
+-class QComboBox;
+-
+-class QQuickView;
+-class QQuickWidget;
+-class QStyledItemDelegate;
+-
+-typedef enum {
+-    SUN,
+-    CUSTOM,
+-}MODE;
+-
+-namespace KScreen {
+-class ConfigOperation;
+-}
+-
+-namespace Ui {
+-class DisplayWindow;
+-}
+-
+-class Widget : public QWidget
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit Widget(QWidget *parent = nullptr);
+-    ~Widget() override;
+-
+-    void setConfig(const KScreen::ConfigPtr &config, bool showBrightnessFrameFlag = false);
+-    KScreen::ConfigPtr currentConfig() const;
+-
+-    void initConnection();
+-    QString getScreenName(QString name = "");
+-    void initTemptSlider();
+-
+-    bool writeFile(const QString &filePath);
+-    void writeGlobal(const KScreen::OutputPtr &output);
+-    bool writeGlobalPart(const KScreen::OutputPtr &output, QVariantMap &info,
+-                         const KScreen::OutputPtr &fallback);
+-    QString globalFileName(const QString &hash);
+-    QVariantMap getGlobalData(KScreen::OutputPtr output);
+-
+-    float converToScale(const int value);
+-    int scaleToSlider(const float value);
+-
+-    void initUiComponent();
+-    void addBrightnessFrame(QString name, bool openFlag, const KScreen::OutputPtr &output = nullptr, QString i2cBus = "");
+-    void showBrightnessFrame(const int flag = 0);
+-    void getAllI2Cbus();
+-
+-    void changescale();
+-    void setKscreenConfig(const KScreen::ConfigPtr &config);
+-protected:
+-    bool eventFilter(QObject *object, QEvent *event) override;
+-
+-Q_SIGNALS:
+-    void changed();
+-
+-    void nightModeChanged(const bool nightMode) const;
+-    void redShiftValidChanged(const bool isValid) const;
+-
+-private Q_SLOTS:
+-    void slotFocusedOutputChanged(QMLOutput *output);
+-
+-    void slotOutputEnabledChanged();
+-    void slotOutputConnectedChanged();
+-    void slotQmloutOutChanged();
+-
+-    void slotUnifyOutputs();
+-
+-    void slotIdentifyButtonClicked(bool checked = true);
+-    void slotIdentifyOutputs(KScreen::ConfigOperation *op);
+-    void clearOutputIdentifiers();
+-
+-    void outputAdded(const KScreen::OutputPtr &output);
+-    void outputRemoved(int outputId);
+-    void primaryOutputSelected(int index);
+-    void primaryOutputChanged(const KScreen::OutputPtr &output);
+-
+-    void showNightWidget(bool judge);
+-    void showCustomWiget(int index);
+-
+-    void slotThemeChanged(bool judge);
+-
+-    void primaryButtonEnable(bool);             // 按钮选择主屏确认按钮
+-    void mainScreenButtonSelect(int index);     // 是否禁用设置主屏按钮
+-    void checkOutputScreen(bool judge);         // 是否禁用屏幕
+-
+-    void setNightMode(const bool nightMode);    // 设置夜间模式
+-
+-    void initNightStatus();                     // 初始化夜间模式
+-    void nightChangedSlot(QHash<QString, QVariant> nightArg);
+-
+-    void isWayland();
+-
+-    void kdsScreenchangeSlot(QString status);
+-    void delayApply();
+-
+-    void enableChangedSlot();                  // 是否禁用小屏幕拖动
+-
+-public Q_SLOTS:
+-    void save();
+-    void scaleChangedSlot(double scale);
+-    void changedSlot();
+-    void propertiesChangedSlot(QString, QMap<QString, QVariant>, QStringList);
+-
+-private:
+-    void loadQml();
+-    void resetPrimaryCombo();
+-    void addOutputToPrimaryCombo(const KScreen::OutputPtr &output);
+-    KScreen::OutputPtr findOutput(const KScreen::ConfigPtr &config, const QVariantMap &info);
+-
+-    void setHideModuleInfo();
+-    void setTitleLabel();
+-    void writeScale(double scale);
+-    void initGSettings();
+-    void initNightUI();
+-
+-    bool isRestoreConfig();                       // 是否恢复应用之前的配置
+-    bool isCloneMode();
+-    bool isBacklight();
+-    bool isLaptopScreen();
+-    bool isVisibleBrightness();
+-
+-    QString getCpuInfo();
+-    QString getMonitorType();
+-
+-    int getDDCBrighthess();
+-    int getDDCBrighthess(QString name);
+-    int getDDCBrighthess(QString edidHash, QString i2cBus);
+-    int getLaptopBrightness() const;
+-
+-    void setDDCBrightnessN(int value, QString screenName);
+-    void setDDCBrightnessN(int value, QString edidHash, QString i2cBus);
+-    void setScreenKDS(QString kdsConfig);
+-    void setActiveScreen(QString status = "");
+-
+-    QList<ScreenConfig> getPreScreenCfg();
+-    void setPreScreenCfg(KScreen::OutputList screens);
+-
+-    void setScreenIsApply(bool isApply);
+-
+-    int screenEnableCount();
+-
+-    void setExtendPrimaryScreen();
+-
+-    void showZoomtips();
+-
+-private:
+-    Ui::DisplayWindow *ui;
+-    QMLScreen *mScreen = nullptr;
+-
+-    KScreen::ConfigPtr mConfig          = nullptr;
+-    KScreen::ConfigPtr mPrevConfig      = nullptr;
+-    KScreen::ConfigPtr mPreScreenConfig = nullptr;
+-
+-    ControlPanel *mControlPanel = nullptr;
+-
+-    OutputConfig *mOutputConfig = nullptr;        // 设置主显示器相关控件
+-
+-    QList<QQuickView *> mOutputIdentifiers;
+-    QTimer *mOutputTimer = nullptr;
+-
+-    QMutex      mLock;
+-
+-    QString     mCPU;
+-    QString     mDir;
+-    QStringList mPowerKeys;
+-    QString     mKDSCfg;
+-    QString     mPreKDSCfg;
+-
+-    KSwitchButton *mNightButton = nullptr;
+-    KSwitchButton *mCloseScreenButton = nullptr;
+-    KSwitchButton *mUnifyButton = nullptr;
+-    KSwitchButton *mThemeButton = nullptr;
+-
+-    QLabel *nightLabel = nullptr;
+-
+-    QGSettings *mGsettings = nullptr;
+-    QGSettings *scaleGSettings = nullptr;
+-    QGSettings *mPowerGSettings = nullptr;
+-
+-    QSettings *mQsettings = nullptr;
+-
+-    QButtonGroup *singleButton;
+-
+-    QSharedPointer<QDBusInterface> mUPowerInterface;
+-    QSharedPointer<QDBusInterface> mUkccInterface;
+-
+-    QHash<QString, QVariant> mNightConfig;
+-
+-    double scaleres = 1.0;
+-
+-    bool mIsNightMode     = false;
+-    bool mRedshiftIsValid = false;
+-    bool mIsScaleChanged  = false;
+-    bool mConfigChanged   = false;
+-    bool mOnBattery       = false;
+-    bool mIsUnifyChanged  = false;
+-    bool mFirstLoad       = true;
+-    bool mIsWayland       = false;
+-    bool mIsBattery       = false;
+-    bool mIsOutputAdd     = false;
+-    bool mIsScreenAdd     = false;
+-    bool mIsSCaleRes      = false;
+-    bool mIsChange = false;
+-
+-    QSize mScaleSizeRes = QSize();
+-
+-    bool threadRunExit = false;
+-    QFuture<void> threadRun;
+-
+-    QShortcut *mApplyShortcut;
+-    QVector<BrightnessFrame*> BrightnessFrameV;
+-    QVector<QString> deleteFrameNameV;  //用二级指针判断null出现问题,只想到这种方式排除段错误
+-    BrightnessFrame *currentBrightnessFrame;
+-    bool exitFlag = false;
+-    QMap<QString, QString> I2CbusMap;
+-
+-};
+-
+-#endif // WIDGET_H
+diff --git a/plugins/system/notice/notice.h b/plugins/system/notice/notice.h
+index 10e0db7..d3e48c4 100644
+--- a/plugins/system/notice/notice.h
++++ b/plugins/system/notice/notice.h
+@@ -31,7 +31,6 @@
+ #include <QComboBox>
+ 
+ #include <shell/interface.h>
+-#include "titlelabel.h"
+ #include "lightlabel.h"
+ #include "kswitchbutton.h"
+ #include "switchwidget.h"
+diff --git a/plugins/system/notice/noticeui.h b/plugins/system/notice/noticeui.h
+index 1d80044..bd460e9 100644
+--- a/plugins/system/notice/noticeui.h
++++ b/plugins/system/notice/noticeui.h
+@@ -6,7 +6,6 @@
+ #include <QComboBox>
+ 
+ #include <shell/interface.h>
+-#include "titlelabel.h"
+ #include "lightlabel.h"
+ #include "kswitchbutton.h"
+ #include "switchwidget.h"
+diff --git a/plugins/system/power/power.h b/plugins/system/power/power.h
+index 19baca7..20dc70b 100644
+--- a/plugins/system/power/power.h
++++ b/plugins/system/power/power.h
+@@ -30,9 +30,7 @@
+ #include <QButtonGroup>
+ 
+ #include "shell/interface.h"
+-#include "widgets/Label/titlelabel.h"
+ #include "widgets/ComboxFrame/comboxframe.h"
+-#include "widgets/Label/fixlabel.h"
+ #include <kysdk/kysdk-system/libkysysinfo.h>
+ #include "kswitchbutton.h"
+ using namespace kdk;
+diff --git a/plugins/time-language/area/area.pro b/plugins/time-language/area/area.pro
+index 5d3e1b5..680f604 100644
+--- a/plugins/time-language/area/area.pro
++++ b/plugins/time-language/area/area.pro
+@@ -6,7 +6,6 @@
+ include(../../../env.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Label/label.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/AddBtn/addbtn.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/ImageUtil/imageutil.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/HoverWidget/hoverwidget.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Frame/frame.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/SettingWidget/settingwidget.pri)
+diff --git a/plugins/time-language/area/area.ui b/plugins/time-language/area/area.ui
+deleted file mode 100644
+index 55e5dca..0000000
+--- a/plugins/time-language/area/area.ui
++++ /dev/null
+@@ -1,184 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>Area</class>
+- <widget class="QWidget" name="Area">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>700</width>
+-    <height>551</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>0</width>
+-    <height>0</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>16777215</width>
+-    <height>16777215</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Area</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_3">
+-   <property name="spacing">
+-    <number>8</number>
+-   </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>
+-    <widget class="TitleLabel" name="titleLabel">
+-     <property name="minimumSize">
+-      <size>
+-       <width>0</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>16777215</width>
+-       <height>16777215</height>
+-      </size>
+-     </property>
+-     <property name="text">
+-      <string>Language Format</string>
+-     </property>
+-    </widget>
+-   </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="formatLayout"/>
+-   </item>
+-   <item>
+-    <layout class="QHBoxLayout" name="horizontalLayout_11">
+-     <property name="leftMargin">
+-      <number>0</number>
+-     </property>
+-     <property name="topMargin">
+-      <number>32</number>
+-     </property>
+-     <property name="bottomMargin">
+-      <number>0</number>
+-     </property>
+-     <item>
+-      <widget class="TitleLabel" name="title3Label">
+-       <property name="minimumSize">
+-        <size>
+-         <width>0</width>
+-         <height>0</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>16777215</width>
+-         <height>16777215</height>
+-        </size>
+-       </property>
+-       <property name="text">
+-        <string>System Language</string>
+-       </property>
+-      </widget>
+-     </item>
+-     <item>
+-      <spacer name="horizontalSpacer_10">
+-       <property name="orientation">
+-        <enum>Qt::Horizontal</enum>
+-       </property>
+-       <property name="sizeHint" stdset="0">
+-        <size>
+-         <width>40</width>
+-         <height>20</height>
+-        </size>
+-       </property>
+-      </spacer>
+-     </item>
+-    </layout>
+-   </item>
+-   <item>
+-    <widget class="LightLabel" name="summaryLabel">
+-     <property name="minimumSize">
+-      <size>
+-       <width>550</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>960</width>
+-       <height>16777215</height>
+-      </size>
+-     </property>
+-     <property name="text">
+-      <string>TextLabel</string>
+-     </property>
+-    </widget>
+-   </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="verticalLayout_4">
+-     <property name="spacing">
+-      <number>1</number>
+-     </property>
+-     <property name="topMargin">
+-      <number>0</number>
+-     </property>
+-     <item>
+-      <layout class="QVBoxLayout" name="languageLayout">
+-       <property name="spacing">
+-        <number>0</number>
+-       </property>
+-      </layout>
+-     </item>
+-     <item>
+-      <layout class="QVBoxLayout" name="addLayout">
+-       <property name="spacing">
+-        <number>0</number>
+-       </property>
+-      </layout>
+-     </item>
+-    </layout>
+-   </item>
+-   <item>
+-    <spacer name="verticalSpacer">
+-     <property name="orientation">
+-      <enum>Qt::Vertical</enum>
+-     </property>
+-     <property name="sizeHint" stdset="0">
+-      <size>
+-       <width>20</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-    </spacer>
+-   </item>
+-  </layout>
+- </widget>
+- <layoutdefault spacing="6" margin="11"/>
+- <customwidgets>
+-  <customwidget>
+-   <class>TitleLabel</class>
+-   <extends>QLabel</extends>
+-   <header location="global">titlelabel.h</header>
+-  </customwidget>
+-  <customwidget>
+-   <class>LightLabel</class>
+-   <extends>QLabel</extends>
+-   <header>lightlabel.h</header>
+-  </customwidget>
+- </customwidgets>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/time-language/area/areaui.cpp b/plugins/time-language/area/areaui.cpp
+index 72cb73c..c767fea 100644
+--- a/plugins/time-language/area/areaui.cpp
++++ b/plugins/time-language/area/areaui.cpp
+@@ -32,7 +32,8 @@ void AreaUi::initUi()
+ 
+ void AreaUi::initLanguageFormat()
+ {
+-    formatTitleLabel = new TitleLabel(this);
++    formatTitleLabel = new KLabel(this);
++    formatTitleLabel->setContentsMargins(16, 0, 0, 0);
+     formatGroup      = new SettingGroup(this);
+     //~ contents_path /Area/Regional Format
+     countryWidget    = new ComboxWidget(tr("Regional Format"), formatGroup, UkccFrame::BorderRadiusStyle::Top);
+@@ -71,10 +72,11 @@ void AreaUi::initLanguageFormat()
+         QHBoxLayout* formatDateLayout = new QHBoxLayout();
+         formatDateLayout->setContentsMargins(16, 0, 16, 0);
+         //~ contents_path /Area/Language Format Example
+-        m_formatDateNameLabel = new FixLabel(tr("Language Format Example"), m_formatDateFrame);
++        m_formatDateNameLabel = new KLabel(m_formatDateFrame);
++        m_formatDateNameLabel->setText(tr("Language Format Example"));
+         m_formatDateNameLabel->setFixedSize(214, 59);
+ 
+-        m_formatDateValueLabel = new FixLabel(m_formatDateFrame);
++        m_formatDateValueLabel = new KLabel(m_formatDateFrame);
+ 
+         formatDateLayout->addWidget(m_formatDateNameLabel);
+         formatDateLayout->setSpacing(16);
+@@ -87,7 +89,8 @@ void AreaUi::initLanguageFormat()
+ 
+ void AreaUi::initSystemLanguage()
+ {
+-    languageTitleLable   = new TitleLabel(this);
++    languageTitleLable   = new KLabel(this);
++    languageTitleLable->setContentsMargins(16, 0, 0, 0);
+     languageGroup        = new SettingGroup(this);
+     addLanguageBtn       = new AddButton(this, UkccFrame::BorderRadiusStyle::Bottom);
+     addLanguageDialog    = new AddLanguageDialog(this);
+diff --git a/plugins/time-language/area/areaui.h b/plugins/time-language/area/areaui.h
+index 7774dda..bc5a805 100644
+--- a/plugins/time-language/area/areaui.h
++++ b/plugins/time-language/area/areaui.h
+@@ -4,14 +4,16 @@
+ #include "languageframe.h"
+ #include "addlanguagedialog.h"
+ #include "addinputmethoddialog.h"
+-#include "libukcc/widgets/Label/titlelabel.h"
+ #include "addbutton.h"
+ #include "settinggroup.h"
+ #include "comboxwidget.h"
+ #include <QWidget>
+ #include <QVBoxLayout>
+ #include "ukcccommon.h"
++#include <klabel.h>
++
+ using namespace ukcc;
++using namespace kdk;
+ 
+ class AreaUi : public QWidget
+ {
+@@ -119,7 +121,7 @@ public:
+         return m_formatDateFrame;
+     }
+ 
+-    inline FixLabel* formatDateValueLabel() {
++    inline KLabel* formatDateValueLabel() {
+         return m_formatDateValueLabel;
+     }
+ 
+@@ -137,7 +139,7 @@ private:
+     QVBoxLayout *LanguageLayout = nullptr;
+ 
+ private:
+-    TitleLabel   *formatTitleLabel = nullptr;
++    KLabel   *formatTitleLabel = nullptr;
+     SettingGroup *formatGroup      = nullptr;
+     ComboxWidget *countryWidget    = nullptr;
+     ComboxWidget *calendarWidget   = nullptr;
+@@ -147,14 +149,14 @@ private:
+     ComboxWidget *timeWidget       = nullptr;
+ 
+ private:
+-    TitleLabel           *languageTitleLable   = nullptr;
++    KLabel           *languageTitleLable   = nullptr;
+     AddButton            *addLanguageBtn       = nullptr;
+     SettingGroup         *languageGroup        = nullptr;
+     AddLanguageDialog    *addLanguageDialog    = nullptr;
+     AddInputMethodDialog *addInputMehtodDialog = nullptr;
+     UkccFrame* m_formatDateFrame = nullptr;
+-    FixLabel* m_formatDateNameLabel = nullptr;
+-    FixLabel* m_formatDateValueLabel = nullptr;
++    KLabel* m_formatDateNameLabel = nullptr;
++    KLabel* m_formatDateValueLabel = nullptr;
+ 
+ private:
+     QList<LanguageFrame*> languageFrameList = {};
+diff --git a/plugins/time-language/datetime/changtime.cpp b/plugins/time-language/datetime/changtime.cpp
+index 209b0ce..dbcc081 100644
+--- a/plugins/time-language/datetime/changtime.cpp
++++ b/plugins/time-language/datetime/changtime.cpp
+@@ -19,7 +19,6 @@
+  */
+ #include "changtime.h"
+ #include "ui_changtime.h"
+-#include "closebutton.h"
+ 
+ #include <QDebug>
+ #include <QStringList>
+diff --git a/plugins/time-language/datetime/changtime.ui b/plugins/time-language/datetime/changtime.ui
+deleted file mode 100644
+index 24ddd27..0000000
+--- a/plugins/time-language/datetime/changtime.ui
++++ /dev/null
+@@ -1,627 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>changtimedialog</class>
+- <widget class="QDialog" name="changtimedialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>421</width>
+-    <height>425</height>
+-   </rect>
+-  </property>
+-  <property name="sizePolicy">
+-   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+-    <horstretch>0</horstretch>
+-    <verstretch>0</verstretch>
+-   </sizepolicy>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>421</width>
+-    <height>412</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>421</width>
+-    <height>425</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Dialog</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_4">
+-   <property name="spacing">
+-    <number>0</number>
+-   </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>
+-    <widget class="QFrame" name="frame">
+-     <property name="sizePolicy">
+-      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-       <horstretch>0</horstretch>
+-       <verstretch>0</verstretch>
+-      </sizepolicy>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::NoFrame</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <property name="midLineWidth">
+-      <number>0</number>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_3">
+-      <property name="leftMargin">
+-       <number>24</number>
+-      </property>
+-      <property name="topMargin">
+-       <number>16</number>
+-      </property>
+-      <property name="rightMargin">
+-       <number>9</number>
+-      </property>
+-      <property name="bottomMargin">
+-       <number>0</number>
+-      </property>
+-      <item>
+-       <layout class="QHBoxLayout" name="horizontalLayout_6">
+-        <property name="leftMargin">
+-         <number>20</number>
+-        </property>
+-        <property name="topMargin">
+-         <number>4</number>
+-        </property>
+-        <property name="rightMargin">
+-         <number>8</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>4</number>
+-        </property>
+-        <item>
+-         <widget class="TitleLabel" name="titleLabel">
+-          <property name="sizePolicy">
+-           <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+-            <horstretch>0</horstretch>
+-            <verstretch>0</verstretch>
+-           </sizepolicy>
+-          </property>
+-          <property name="minimumSize">
+-           <size>
+-            <width>190</width>
+-            <height>30</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>190</width>
+-            <height>30</height>
+-           </size>
+-          </property>
+-          <property name="text">
+-           <string>current date</string>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <spacer name="horizontalSpacer_2">
+-          <property name="orientation">
+-           <enum>Qt::Horizontal</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>40</width>
+-            <height>20</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-       </layout>
+-      </item>
+-      <item>
+-       <spacer name="verticalSpacer">
+-        <property name="orientation">
+-         <enum>Qt::Vertical</enum>
+-        </property>
+-        <property name="sizeHint" stdset="0">
+-         <size>
+-          <width>20</width>
+-          <height>41</height>
+-         </size>
+-        </property>
+-       </spacer>
+-      </item>
+-      <item>
+-       <layout class="QVBoxLayout" name="verticalLayout_2">
+-        <property name="spacing">
+-         <number>1</number>
+-        </property>
+-        <property name="leftMargin">
+-         <number>20</number>
+-        </property>
+-        <property name="rightMargin">
+-         <number>31</number>
+-        </property>
+-        <item>
+-         <widget class="QFrame" name="timeframe">
+-          <property name="minimumSize">
+-           <size>
+-            <width>336</width>
+-            <height>50</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>336</width>
+-            <height>50</height>
+-           </size>
+-          </property>
+-          <property name="frameShape">
+-           <enum>QFrame::Box</enum>
+-          </property>
+-          <layout class="QHBoxLayout" name="horizontalLayout_4">
+-           <property name="spacing">
+-            <number>0</number>
+-           </property>
+-           <item>
+-            <widget class="QLabel" name="timelabel">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="minimumSize">
+-              <size>
+-               <width>0</width>
+-               <height>0</height>
+-              </size>
+-             </property>
+-             <property name="maximumSize">
+-              <size>
+-               <width>50</width>
+-               <height>16777215</height>
+-              </size>
+-             </property>
+-             <property name="text">
+-              <string>time</string>
+-             </property>
+-            </widget>
+-           </item>
+-           <item>
+-            <widget class="QComboBox" name="hourcomboBox">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="minimumSize">
+-              <size>
+-               <width>83</width>
+-               <height>0</height>
+-              </size>
+-             </property>
+-             <property name="maximumSize">
+-              <size>
+-               <width>84</width>
+-               <height>16777215</height>
+-              </size>
+-             </property>
+-             <property name="styleSheet">
+-              <string notr="true"/>
+-             </property>
+-            </widget>
+-           </item>
+-           <item>
+-            <widget class="QComboBox" name="mincomboBox">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="minimumSize">
+-              <size>
+-               <width>80</width>
+-               <height>0</height>
+-              </size>
+-             </property>
+-             <property name="maximumSize">
+-              <size>
+-               <width>84</width>
+-               <height>32</height>
+-              </size>
+-             </property>
+-            </widget>
+-           </item>
+-           <item>
+-            <widget class="QComboBox" name="seccomboBox">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="minimumSize">
+-              <size>
+-               <width>80</width>
+-               <height>32</height>
+-              </size>
+-             </property>
+-             <property name="maximumSize">
+-              <size>
+-               <width>84</width>
+-               <height>32</height>
+-              </size>
+-             </property>
+-            </widget>
+-           </item>
+-          </layout>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="QFrame" name="yearframe">
+-          <property name="sizePolicy">
+-           <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+-            <horstretch>0</horstretch>
+-            <verstretch>0</verstretch>
+-           </sizepolicy>
+-          </property>
+-          <property name="minimumSize">
+-           <size>
+-            <width>336</width>
+-            <height>50</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>336</width>
+-            <height>50</height>
+-           </size>
+-          </property>
+-          <property name="frameShape">
+-           <enum>QFrame::Box</enum>
+-          </property>
+-          <layout class="QHBoxLayout" name="horizontalLayout">
+-           <item>
+-            <widget class="QLabel" name="yearlabel">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="minimumSize">
+-              <size>
+-               <width>0</width>
+-               <height>0</height>
+-              </size>
+-             </property>
+-             <property name="maximumSize">
+-              <size>
+-               <width>50</width>
+-               <height>16777215</height>
+-              </size>
+-             </property>
+-             <property name="text">
+-              <string>year</string>
+-             </property>
+-            </widget>
+-           </item>
+-           <item>
+-            <widget class="QComboBox" name="yearcomboBox">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="minimumSize">
+-              <size>
+-               <width>258</width>
+-               <height>32</height>
+-              </size>
+-             </property>
+-             <property name="maximumSize">
+-              <size>
+-               <width>257</width>
+-               <height>16777215</height>
+-              </size>
+-             </property>
+-             <property name="styleSheet">
+-              <string notr="true"/>
+-             </property>
+-            </widget>
+-           </item>
+-          </layout>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="QFrame" name="monthframe">
+-          <property name="sizePolicy">
+-           <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+-            <horstretch>0</horstretch>
+-            <verstretch>0</verstretch>
+-           </sizepolicy>
+-          </property>
+-          <property name="minimumSize">
+-           <size>
+-            <width>336</width>
+-            <height>50</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>336</width>
+-            <height>50</height>
+-           </size>
+-          </property>
+-          <property name="frameShape">
+-           <enum>QFrame::Box</enum>
+-          </property>
+-          <layout class="QHBoxLayout" name="horizontalLayout_2">
+-           <item>
+-            <widget class="QLabel" name="monthlabel">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="minimumSize">
+-              <size>
+-               <width>27</width>
+-               <height>0</height>
+-              </size>
+-             </property>
+-             <property name="maximumSize">
+-              <size>
+-               <width>50</width>
+-               <height>16777215</height>
+-              </size>
+-             </property>
+-             <property name="text">
+-              <string>month</string>
+-             </property>
+-            </widget>
+-           </item>
+-           <item>
+-            <widget class="QComboBox" name="monthcomboBox">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="minimumSize">
+-              <size>
+-               <width>258</width>
+-               <height>32</height>
+-              </size>
+-             </property>
+-             <property name="maximumSize">
+-              <size>
+-               <width>258</width>
+-               <height>16777215</height>
+-              </size>
+-             </property>
+-            </widget>
+-           </item>
+-          </layout>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="QFrame" name="dayframe">
+-          <property name="sizePolicy">
+-           <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+-            <horstretch>0</horstretch>
+-            <verstretch>0</verstretch>
+-           </sizepolicy>
+-          </property>
+-          <property name="minimumSize">
+-           <size>
+-            <width>336</width>
+-            <height>50</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>336</width>
+-            <height>50</height>
+-           </size>
+-          </property>
+-          <property name="frameShape">
+-           <enum>QFrame::Box</enum>
+-          </property>
+-          <layout class="QHBoxLayout" name="horizontalLayout_3">
+-           <item>
+-            <widget class="QLabel" name="daylabel">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="minimumSize">
+-              <size>
+-               <width>0</width>
+-               <height>0</height>
+-              </size>
+-             </property>
+-             <property name="maximumSize">
+-              <size>
+-               <width>50</width>
+-               <height>16777215</height>
+-              </size>
+-             </property>
+-             <property name="text">
+-              <string>day</string>
+-             </property>
+-            </widget>
+-           </item>
+-           <item>
+-            <widget class="QComboBox" name="daycomboBox">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="minimumSize">
+-              <size>
+-               <width>258</width>
+-               <height>32</height>
+-              </size>
+-             </property>
+-             <property name="maximumSize">
+-              <size>
+-               <width>258</width>
+-               <height>16777215</height>
+-              </size>
+-             </property>
+-            </widget>
+-           </item>
+-          </layout>
+-         </widget>
+-        </item>
+-       </layout>
+-      </item>
+-      <item>
+-       <spacer name="verticalSpacer_3">
+-        <property name="orientation">
+-         <enum>Qt::Vertical</enum>
+-        </property>
+-        <property name="sizeHint" stdset="0">
+-         <size>
+-          <width>17</width>
+-          <height>14</height>
+-         </size>
+-        </property>
+-       </spacer>
+-      </item>
+-      <item>
+-       <widget class="QWidget" name="widget" native="true">
+-        <property name="sizePolicy">
+-         <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+-          <horstretch>0</horstretch>
+-          <verstretch>0</verstretch>
+-         </sizepolicy>
+-        </property>
+-        <property name="minimumSize">
+-         <size>
+-          <width>345</width>
+-          <height>50</height>
+-         </size>
+-        </property>
+-        <property name="maximumSize">
+-         <size>
+-          <width>16777215</width>
+-          <height>50</height>
+-         </size>
+-        </property>
+-        <layout class="QHBoxLayout" name="horizontalLayout_5">
+-         <property name="rightMargin">
+-          <number>32</number>
+-         </property>
+-         <item>
+-          <spacer name="horizontalSpacer">
+-           <property name="orientation">
+-            <enum>Qt::Horizontal</enum>
+-           </property>
+-           <property name="sizeHint" stdset="0">
+-            <size>
+-             <width>40</width>
+-             <height>20</height>
+-            </size>
+-           </property>
+-          </spacer>
+-         </item>
+-         <item>
+-          <widget class="QPushButton" name="cancelButton">
+-           <property name="minimumSize">
+-            <size>
+-             <width>120</width>
+-             <height>36</height>
+-            </size>
+-           </property>
+-           <property name="maximumSize">
+-            <size>
+-             <width>120</width>
+-             <height>30</height>
+-            </size>
+-           </property>
+-           <property name="sizeIncrement">
+-            <size>
+-             <width>120</width>
+-             <height>30</height>
+-            </size>
+-           </property>
+-           <property name="text">
+-            <string>cancel</string>
+-           </property>
+-          </widget>
+-         </item>
+-         <item>
+-          <widget class="QPushButton" name="confirmButton">
+-           <property name="minimumSize">
+-            <size>
+-             <width>120</width>
+-             <height>36</height>
+-            </size>
+-           </property>
+-           <property name="maximumSize">
+-            <size>
+-             <width>120</width>
+-             <height>30</height>
+-            </size>
+-           </property>
+-           <property name="text">
+-            <string>confirm</string>
+-           </property>
+-          </widget>
+-         </item>
+-        </layout>
+-       </widget>
+-      </item>
+-      <item>
+-       <spacer name="verticalSpacer_2">
+-        <property name="orientation">
+-         <enum>Qt::Vertical</enum>
+-        </property>
+-        <property name="sizeHint" stdset="0">
+-         <size>
+-          <width>17</width>
+-          <height>20</height>
+-         </size>
+-        </property>
+-       </spacer>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-  </layout>
+- </widget>
+- <customwidgets>
+-  <customwidget>
+-   <class>TitleLabel</class>
+-   <extends>QLabel</extends>
+-   <header location="global">titlelabel.h</header>
+-  </customwidget>
+- </customwidgets>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/time-language/datetime/datetime.pro b/plugins/time-language/datetime/datetime.pro
+index 3cb2b3a..0931be9 100644
+--- a/plugins/time-language/datetime/datetime.pro
++++ b/plugins/time-language/datetime/datetime.pro
+@@ -13,10 +13,8 @@ CONFIG += plugin \
+ 
+ include(../../../env.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/FlowLayout/flowlayout.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/ImageUtil/imageutil.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Label/label.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/AddBtn/addbtn.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/CloseButton/closebutton.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/HoverWidget/hoverwidget.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Frame/frame.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/SettingWidget/settingwidget.pri)
+diff --git a/plugins/time-language/datetime/datetime.ui b/plugins/time-language/datetime/datetime.ui
+deleted file mode 100644
+index 859b056..0000000
+--- a/plugins/time-language/datetime/datetime.ui
++++ /dev/null
+@@ -1,342 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>DateTime</class>
+- <widget class="QWidget" name="DateTime">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>684</width>
+-    <height>669</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>0</width>
+-    <height>0</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>16777215</width>
+-    <height>16777215</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string>DateTime</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout">
+-   <property name="spacing">
+-    <number>8</number>
+-   </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>
+-    <widget class="TitleLabel" name="titleLabel">
+-     <property name="sizePolicy">
+-      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+-       <horstretch>0</horstretch>
+-       <verstretch>0</verstretch>
+-      </sizepolicy>
+-     </property>
+-     <property name="minimumSize">
+-      <size>
+-       <width>0</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>16777215</width>
+-       <height>16777215</height>
+-      </size>
+-     </property>
+-     <property name="text">
+-      <string>current date</string>
+-     </property>
+-    </widget>
+-   </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="currentDateLayout">
+-     <property name="spacing">
+-      <number>0</number>
+-     </property>
+-    </layout>
+-   </item>
+-   <item>
+-    <spacer name="verticalSpacer">
+-     <property name="orientation">
+-      <enum>Qt::Vertical</enum>
+-     </property>
+-     <property name="sizeType">
+-      <enum>QSizePolicy::Fixed</enum>
+-     </property>
+-     <property name="sizeHint" stdset="0">
+-      <size>
+-       <width>20</width>
+-       <height>32</height>
+-      </size>
+-     </property>
+-    </spacer>
+-   </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="timeLayout">
+-     <property name="spacing">
+-      <number>0</number>
+-     </property>
+-     <item>
+-      <widget class="QFrame" name="TilleFrame">
+-       <property name="minimumSize">
+-        <size>
+-         <width>552</width>
+-         <height>0</height>
+-        </size>
+-       </property>
+-       <property name="maximumSize">
+-        <size>
+-         <width>16777215</width>
+-         <height>16777215</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::NoFrame</enum>
+-       </property>
+-       <property name="frameShadow">
+-        <enum>QFrame::Plain</enum>
+-       </property>
+-       <property name="lineWidth">
+-        <number>1</number>
+-       </property>
+-       <layout class="QVBoxLayout" name="verticalLayout_4">
+-        <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>
+-         <layout class="QVBoxLayout" name="verticalLayout_3">
+-          <property name="spacing">
+-           <number>0</number>
+-          </property>
+-          <item>
+-           <widget class="TitleLabel" name="titleLabel_2">
+-            <property name="text">
+-             <string>titleLabel</string>
+-            </property>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-     <item>
+-      <spacer name="verticalSpacer_3">
+-       <property name="orientation">
+-        <enum>Qt::Vertical</enum>
+-       </property>
+-       <property name="sizeType">
+-        <enum>QSizePolicy::Fixed</enum>
+-       </property>
+-       <property name="sizeHint" stdset="0">
+-        <size>
+-         <width>20</width>
+-         <height>4</height>
+-        </size>
+-       </property>
+-      </spacer>
+-     </item>
+-     <item>
+-      <widget class="UkccFrame" name="frame_7">
+-       <property name="minimumSize">
+-        <size>
+-         <width>0</width>
+-         <height>0</height>
+-        </size>
+-       </property>
+-       <property name="frameShape">
+-        <enum>QFrame::NoFrame</enum>
+-       </property>
+-       <property name="frameShadow">
+-        <enum>QFrame::Raised</enum>
+-       </property>
+-       <property name="lineWidth">
+-        <number>0</number>
+-       </property>
+-       <layout class="QVBoxLayout" name="verticalLayout_11">
+-        <property name="spacing">
+-         <number>1</number>
+-        </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>
+-         <widget class="SettingGroup" name="showFrame">
+-          <property name="minimumSize">
+-           <size>
+-            <width>552</width>
+-            <height>0</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>16777215</height>
+-           </size>
+-          </property>
+-          <property name="frameShape">
+-           <enum>QFrame::NoFrame</enum>
+-          </property>
+-          <property name="frameShadow">
+-           <enum>QFrame::Plain</enum>
+-          </property>
+-          <property name="lineWidth">
+-           <number>0</number>
+-          </property>
+-          <layout class="QVBoxLayout" name="verticalLayout_7">
+-           <property name="spacing">
+-            <number>0</number>
+-           </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>
+-          </layout>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="UkccFrame" name="addFrame">
+-          <property name="minimumSize">
+-           <size>
+-            <width>0</width>
+-            <height>0</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>16777215</height>
+-           </size>
+-          </property>
+-          <property name="frameShape">
+-           <enum>QFrame::NoFrame</enum>
+-          </property>
+-          <property name="frameShadow">
+-           <enum>QFrame::Plain</enum>
+-          </property>
+-          <layout class="QHBoxLayout" name="horizontalLayout_2">
+-           <property name="spacing">
+-            <number>0</number>
+-           </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>
+-            <layout class="QHBoxLayout" name="addLayout">
+-             <property name="spacing">
+-              <number>0</number>
+-             </property>
+-            </layout>
+-           </item>
+-          </layout>
+-         </widget>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-    </layout>
+-   </item>
+-   <item>
+-    <widget class="QFrame" name="hourFrame">
+-     <property name="frameShape">
+-      <enum>QFrame::StyledPanel</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-    </widget>
+-   </item>
+-   <item>
+-    <spacer name="verticalSpacer_2">
+-     <property name="orientation">
+-      <enum>Qt::Vertical</enum>
+-     </property>
+-     <property name="sizeType">
+-      <enum>QSizePolicy::Expanding</enum>
+-     </property>
+-     <property name="sizeHint" stdset="0">
+-      <size>
+-       <width>20</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-    </spacer>
+-   </item>
+-  </layout>
+- </widget>
+- <layoutdefault spacing="6" margin="11"/>
+- <customwidgets>
+-  <customwidget>
+-   <class>TitleLabel</class>
+-   <extends>QLabel</extends>
+-   <header location="global">titlelabel.h</header>
+-  </customwidget>
+-  <customwidget>
+-   <class>UkccFrame</class>
+-   <extends>QFrame</extends>
+-   <header location="global">ukccframe.h</header>
+-   <container>1</container>
+-  </customwidget>
+-  <customwidget>
+-   <class>SettingGroup</class>
+-   <extends>QFrame</extends>
+-   <header location="global">settinggroup.h</header>
+-   <container>1</container>
+-  </customwidget>
+- </customwidgets>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/time-language/datetime/datetimeui.cpp b/plugins/time-language/datetime/datetimeui.cpp
+index 6a86da9..14d7811 100644
+--- a/plugins/time-language/datetime/datetimeui.cpp
++++ b/plugins/time-language/datetime/datetimeui.cpp
+@@ -37,29 +37,31 @@ void DatetimeUi::initUi()
+ void DatetimeUi::initObject()
+ {
+     // 当前时间
+-    currentTitleLabel = new TitleLabel(this); // 标题
++    currentTitleLabel = new KLabel(this); // 标题
++    currentTitleLabel->setContentsMargins(16, 0, 0, 0);
+     clockWidget       = new ClockWidget(); // 时钟
+     timeLabel         = new TimeLabel(this); // 时间
+-    mDateLabel        = new FixLabel(this); // 日期
+-    changeTZbutton    = new FixButton(this); // 修改时区
+-    setTimeModeLabel  = new FixLabel(this);  // 设置时间
++    mDateLabel        = new KLabel(this); // 日期
++    changeTZbutton    = new KPushButton(this); // 修改时区
++    setTimeModeLabel  = new KLabel(this);  // 设置时间
+     manualRadioButton = new QRadioButton(this); // 手动设置时间
+     syncRadioButton   = new QRadioButton(this); // 自动同步时间
+-    syncResultLabel   = new FixLabel(); // 同步时间结果
+-    setDateLabel      = new FixLabel(this); // 手动设置日期
++    syncResultLabel   = new KLabel(); // 同步时间结果
++    setDateLabel      = new KLabel(this); // 手动设置日期
+     dategroupWidget   = new DategroupWidget(this);
+     timeBtnGroup      = new QButtonGroup(this);
+     //~ contents_path /Date/Sync Server
+     ntpSerWidget      = new ComboxWidget(tr("Sync Server"), this);
+-    setNtpLabel       = new FixLabel(this);
++    setNtpLabel       = new KLabel(this);
+     setNtpLineEdit    = new QLineEdit(this);
+-    setNtpButton      = new FixButton(this);
++    setNtpButton      = new KPushButton(this);
+ 
+     timeBtnGroup->addButton(manualRadioButton, 0);
+     timeBtnGroup->addButton(syncRadioButton, 1);
+     syncResultLabel->setStyleSheet("QLabel{color: #D9F82929;}");
+ 
+-    otherTimezoneTitleLabel = new TitleLabel(this);
++    otherTimezoneTitleLabel = new KLabel(this);
++    otherTimezoneTitleLabel->setContentsMargins(16, 0, 0, 0);
+     addTimezoneButton       = new AddButton(this, UkccFrame::BorderRadiusStyle::Around);
+ }
+ 
+@@ -214,7 +216,7 @@ void DatetimeUi::initSignals()
+             Q_EMIT timeModeChanged(toggledBtn, "automatic");
+         }
+     });
+-    connect(changeTZbutton, &FixButton::clicked, this, &DatetimeUi::timezoneButtonClicked);
++    connect(changeTZbutton, &KPushButton::clicked, this, &DatetimeUi::timezoneButtonClicked);
+     connect(ntpSerWidget->comboBox(), QOverload<const QString&>::of(&QComboBox::activated), this, [=](QString server){
+         if (ntpSerWidget->comboBox()->currentIndex() == 0) {
+             server = "default";
+@@ -225,7 +227,7 @@ void DatetimeUi::initSignals()
+             Q_EMIT ntpServerChanged(server);
+         }
+     });
+-    connect(setNtpButton, &FixButton::clicked, this, [=](){
++    connect(setNtpButton, &KPushButton::clicked, this, [=](){
+         Q_EMIT ntpServerChanged(setNtpLineEdit->text());
+     });
+     connect(addTimezoneButton, &AddButton::clicked, this, &DatetimeUi::addTimezoneButtonClicked);
+diff --git a/plugins/time-language/datetime/datetimeui.h b/plugins/time-language/datetime/datetimeui.h
+index c232da7..13141d4 100644
+--- a/plugins/time-language/datetime/datetimeui.h
++++ b/plugins/time-language/datetime/datetimeui.h
+@@ -1,17 +1,14 @@
+ #ifndef DATETIMEUI_H
+ #define DATETIMEUI_H
+ 
+-#include "titlelabel.h"
+ #include "timeBtn.h"
+ #include "timelabel.h"
+ #include "clockwidget.h"
+ #include "calendarwidget.h"
+ #include "dategroupwidget.h"
+ #include "dateedit.h"
+-#include "fixlabel.h"
+ #include "settinggroup.h"
+ #include "ukccframe.h"
+-#include "fixbutton.h"
+ #include "addbutton.h"
+ #include "comboxwidget.h"
+ #include <QWidget>
+@@ -19,6 +16,10 @@
+ #include <QLineEdit>
+ #include <QRadioButton>
+ #include <QButtonGroup>
++#include <kpushbutton.h>
++#include <klabel.h>
++
++using namespace kdk;
+ 
+ class DatetimeUi : public QWidget
+ {
+@@ -54,23 +55,23 @@ private:
+ 
+ private:
+     // 当前时间
+-    TitleLabel      *currentTitleLabel = nullptr;
++    KLabel          *currentTitleLabel = nullptr;
+     ClockWidget     *clockWidget       = nullptr;
+     TimeLabel       *timeLabel         = nullptr;
+-    FixLabel        *mDateLabel        = nullptr;
+-    FixButton       *changeTZbutton    = nullptr;
+-    FixLabel        *setTimeModeLabel  = nullptr;
++    KLabel        *mDateLabel        = nullptr;
++    KPushButton     *changeTZbutton    = nullptr;
++    KLabel        *setTimeModeLabel  = nullptr;
+     QRadioButton    *manualRadioButton = nullptr;
+     QRadioButton    *syncRadioButton   = nullptr;
+-    FixLabel        *syncResultLabel   = nullptr;
+-    FixLabel        *setDateLabel      = nullptr;
++    KLabel        *syncResultLabel   = nullptr;
++    KLabel        *setDateLabel      = nullptr;
+     DategroupWidget *dategroupWidget   = nullptr;
+     ComboxWidget    *ntpSerWidget      = nullptr;
+-    FixLabel        *setNtpLabel       = nullptr;
++    KLabel        *setNtpLabel       = nullptr;
+     QLineEdit       *setNtpLineEdit    = nullptr;
+-    FixButton       *setNtpButton      = nullptr;
++    KPushButton     *setNtpButton      = nullptr;
+     // 其他时区时间
+-    TitleLabel *otherTimezoneTitleLabel = nullptr;
++    KLabel *otherTimezoneTitleLabel = nullptr;
+     AddButton  *addTimezoneButton       = nullptr;
+ 
+ private:
+diff --git a/plugins/time-language/datetime/timeBtn.cpp b/plugins/time-language/datetime/timeBtn.cpp
+index cdba347..2314751 100644
+--- a/plugins/time-language/datetime/timeBtn.cpp
++++ b/plugins/time-language/datetime/timeBtn.cpp
+@@ -13,7 +13,7 @@ TimeBtn::TimeBtn(const QString &timezone, const QString &kyTimezone)
+     QHBoxLayout *timeShowLayout = new QHBoxLayout(this);
+     QWidget     *timeWid      = new QWidget(this);
+     QVBoxLayout *timeLayout   = new QVBoxLayout(timeWid);
+-    labelInfo    = new FixLabel(this);    //时间,和标题字号一致
++    labelInfo    = new KLabel(this);    //时间,和标题字号一致
+     labelTime    = new LightLabel(this);    //日期
+     deleteBtn    = new QPushButton(this);
+ 
+diff --git a/plugins/time-language/datetime/timeBtn.h b/plugins/time-language/datetime/timeBtn.h
+index ad4f499..affa3d1 100644
+--- a/plugins/time-language/datetime/timeBtn.h
++++ b/plugins/time-language/datetime/timeBtn.h
+@@ -1,13 +1,15 @@
+ #ifndef TIMEBTN_H
+ #define TIMEBTN_H
+ #include <QPushButton>
+-#include "fixlabel.h"
+ #include "lightlabel.h"
+ #include <QGSettings>
+ #include <QTimeZone>
+ #include <QLabel>
+ #include "ukccframe.h"
+ #include <QTimerEvent>
++#include <klabel.h>
++
++using namespace kdk;
+ 
+ class TimeBtn : public UkccFrame
+ {
+@@ -25,7 +27,7 @@ protected:
+ private:
+     QTimeZone thisZone;
+     int timerId = 0;
+-    FixLabel       *labelInfo     = nullptr;
++    KLabel       *labelInfo     = nullptr;
+     LightLabel     *labelTime     = nullptr;
+     QDBusInterface *areaInterface = nullptr;
+     QPushButton    *deleteBtn     = nullptr;
+diff --git a/plugins/time-language/datetime/timelabel.cpp b/plugins/time-language/datetime/timelabel.cpp
+index a7f2883..98915f8 100644
+--- a/plugins/time-language/datetime/timelabel.cpp
++++ b/plugins/time-language/datetime/timelabel.cpp
+@@ -4,7 +4,7 @@
+ #include <QDateTime>
+ 
+ TimeLabel::TimeLabel(QWidget *parent) :
+-    FixLabel(parent)
++    KLabel(parent)
+ {
+     QFont font = QApplication::font();
+     if (QLocale::system().amText() == "སྔ་དྲོ་") {
+diff --git a/plugins/time-language/datetime/timelabel.h b/plugins/time-language/datetime/timelabel.h
+index 746fe3c..70b4cb1 100644
+--- a/plugins/time-language/datetime/timelabel.h
++++ b/plugins/time-language/datetime/timelabel.h
+@@ -1,10 +1,12 @@
+ #ifndef TIMELABEL_H
+ #define TIMELABEL_H
+ 
+-#include "fixlabel.h"
+ #include <QDBusInterface>
++#include <klabel.h>
+ 
+-class TimeLabel : public FixLabel
++using namespace kdk;
++
++class TimeLabel : public KLabel
+ {
+     Q_OBJECT
+ 
+diff --git a/plugins/time-language/datetime/worldMap/timezonechooser.cpp b/plugins/time-language/datetime/worldMap/timezonechooser.cpp
+index 32c212b..b95da08 100644
+--- a/plugins/time-language/datetime/worldMap/timezonechooser.cpp
++++ b/plugins/time-language/datetime/worldMap/timezonechooser.cpp
+@@ -15,7 +15,6 @@
+ #include <QtCore/qmath.h>
+ #include <QDialog>
+ #include <QGSettings>
+-#include "imageutil.h"
+ 
+ const QString kcnBj = "北京";
+ const QString kenBj = "Asia/Beijing";
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0126-152-sdk.patch ukui-control-center-4.10.0.0/debian/patches/0126-152-sdk.patch
--- ukui-control-center-4.10.0.0/debian/patches/0126-152-sdk.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0126-152-sdk.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,197 @@
+From: =?utf-8?b?6IuP5Zej5YW4?= <susidian@kylinos.cn>
+Date: Wed, 22 Jan 2025 01:25:21 +0000
+Subject: =?utf-8?b?ITE1MiDpgILphY1zZGsgTWVyZ2UgcHVsbCByZXF1ZXN0ICExNTIgZnJv?=
+ =?utf-8?b?bSDkvZXmgJ3og5wvbmlsZQ==?=
+
+---
+ plugins/account/userinfo/creategroupdialog.cpp | 9 +++++----
+ plugins/account/userinfo/creategroupdialog.h   | 9 +++++----
+ plugins/account/userinfo/deleteuserexists.cpp  | 6 ++++--
+ plugins/account/userinfo/deleteuserexists.h    | 7 ++++---
+ plugins/account/userinfo/userinfo.cpp          | 1 -
+ plugins/account/userinfo/userinfo.pro          | 2 --
+ plugins/devices/keyboard/keyboard.pro          | 1 -
+ shell/mainwindow.cpp                           | 1 -
+ shell/shell.pro                                | 1 -
+ 9 files changed, 18 insertions(+), 19 deletions(-)
+
+diff --git a/plugins/account/userinfo/creategroupdialog.cpp b/plugins/account/userinfo/creategroupdialog.cpp
+index 6586c57..5c5728e 100644
+--- a/plugins/account/userinfo/creategroupdialog.cpp
++++ b/plugins/account/userinfo/creategroupdialog.cpp
+@@ -20,7 +20,6 @@
+ 
+ #include "creategroupdialog.h"
+ #include "userinfo.h"
+-#include "closebutton.h"
+ #include "changeusergroup.h"
+ 
+ #define GROUPNAME_LENGTH 32
+@@ -51,7 +50,8 @@ void CreateGroupDialog::initUI()
+     this->setFixedSize(480, 214);
+     setAttribute(Qt::WA_DeleteOnClose);
+ 
+-    mGroupNameLabel = new FixLabel(tr("Name"), this);
++    mGroupNameLabel = new KLabel(this);
++    mGroupNameLabel->setText(tr("Name"));
+     mGroupNameLabel->setFixedSize(62, 36);
+     mGroupNameEdit = new QLineEdit(this);
+     mGroupNameEdit->installEventFilter(this);
+@@ -63,7 +63,7 @@ void CreateGroupDialog::initUI()
+     mGroupNameHLayout->addWidget(mGroupNameLabel);
+     mGroupNameHLayout->addWidget(mGroupNameEdit);
+ 
+-    mGroupNameTipLabel = new FixLabel();
++    mGroupNameTipLabel = new KLabel(this);
+     mGroupNameTipLabel->setFixedWidth(370);
+     QFont ft;
+     ft.setPixelSize(14);
+@@ -75,7 +75,8 @@ void CreateGroupDialog::initUI()
+     mGroupNameTipHLayout->addStretch();
+     mGroupNameTipHLayout->addWidget(mGroupNameTipLabel);
+ 
+-    mGroupIdLabel = new FixLabel(tr("Id"), this);
++    mGroupIdLabel = new KLabel(this);
++    mGroupIdLabel->setText(tr("Id"));
+     mGroupIdLabel->setFixedSize(62, 36);
+     mGroupIdEdit = new QLineEdit(this);
+     mGroupIdEdit->setFixedSize(370, 36);
+diff --git a/plugins/account/userinfo/creategroupdialog.h b/plugins/account/userinfo/creategroupdialog.h
+index 0c0e6b8..90cbda8 100644
+--- a/plugins/account/userinfo/creategroupdialog.h
++++ b/plugins/account/userinfo/creategroupdialog.h
+@@ -34,7 +34,8 @@
+ #include <QLabel>
+ #include <QPushButton>
+ 
+-#include "widgets/Label/fixlabel.h"
++#include <kysdk/applications/klabel.h>
++using namespace kdk;
+ 
+ class changeUserGroup;
+ namespace Ui {
+@@ -64,8 +65,8 @@ private:
+     QFrame *mGroupIdFrame;
+     QFrame *mConfirmFrame;
+ 
+-    QLabel *mGroupNameLabel;
+-    QLabel *mGroupIdLabel;
++    KLabel *mGroupNameLabel;
++    KLabel *mGroupIdLabel;
+ 
+     QLineEdit *mGroupNameEdit;
+     QLineEdit *mGroupIdEdit;
+@@ -82,7 +83,7 @@ private:
+     bool _idHasModified;
+ 
+     QString oldGroupName;
+-    FixLabel *mGroupNameTipLabel;
++    KLabel *mGroupNameTipLabel;
+     QString mGroupNameTip;
+ 
+     void initUI();
+diff --git a/plugins/account/userinfo/deleteuserexists.cpp b/plugins/account/userinfo/deleteuserexists.cpp
+index a425bce..732090a 100644
+--- a/plugins/account/userinfo/deleteuserexists.cpp
++++ b/plugins/account/userinfo/deleteuserexists.cpp
+@@ -62,8 +62,10 @@ void DeleteUserExists::initUI()
+     removeBtnGroup->addButton(removeWholeRadioBtn, 1);
+     removeWholeRadioBtn->setChecked(true);
+ 
+-    removeButKeepFilesLabel = new FixLabel(tr("Keep desktop, files, favorites, music of the user"));
+-    removeWholeLabel = new FixLabel(tr("Delete whole data belong user"));
++    removeButKeepFilesLabel = new KLabel(this);
++    removeButKeepFilesLabel->setText(tr("Keep desktop, files, favorites, music of the user"));
++    removeWholeLabel = new KLabel(this);
++    removeWholeLabel->setText(tr("Delete whole data belong user"));
+ 
+     removeButKeepFilesHorLayout = new QHBoxLayout;
+     removeButKeepFilesHorLayout->setSpacing(9);
+diff --git a/plugins/account/userinfo/deleteuserexists.h b/plugins/account/userinfo/deleteuserexists.h
+index aeeb37e..bfde175 100644
+--- a/plugins/account/userinfo/deleteuserexists.h
++++ b/plugins/account/userinfo/deleteuserexists.h
+@@ -2,7 +2,8 @@
+ #define DELETEUSEREXISTS_H
+ 
+ #include <QDialog>
+-#include "fixlabel.h"
++#include <kysdk/applications/klabel.h>
++using namespace kdk;
+ 
+ class QHBoxLayout;
+ class QVBoxLayout;
+@@ -40,8 +41,8 @@ public:
+     QRadioButton * removeWholeRadioBtn;
+ 
+     QLabel *noteLabel;
+-    FixLabel *removeButKeepFilesLabel;
+-    FixLabel *removeWholeLabel;
++    KLabel *removeButKeepFilesLabel;
++    KLabel *removeWholeLabel;
+ 
+     QPushButton * cancelBtn;
+     QPushButton * confirmBtn;
+diff --git a/plugins/account/userinfo/userinfo.cpp b/plugins/account/userinfo/userinfo.cpp
+index 10ff4c3..c939fa9 100644
+--- a/plugins/account/userinfo/userinfo.cpp
++++ b/plugins/account/userinfo/userinfo.cpp
+@@ -49,7 +49,6 @@
+ 
+ #include "ukcccommon.h"
+ using namespace ukcc;
+-#include "imageutil.h"
+ 
+ /* qt会将glib里的signals成员识别为宏,所以取消该宏
+  * 后面如果用到signals时,使用Q_SIGNALS代替即可
+diff --git a/plugins/account/userinfo/userinfo.pro b/plugins/account/userinfo/userinfo.pro
+index 5ead1f4..1b1939f 100644
+--- a/plugins/account/userinfo/userinfo.pro
++++ b/plugins/account/userinfo/userinfo.pro
+@@ -5,10 +5,8 @@
+ #-------------------------------------------------
+ include(../../../env.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/FlowLayout/flowlayout.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/ImageUtil/imageutil.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Label/label.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/AddBtn/addbtn.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/CloseButton/closebutton.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/SettingWidget/settingwidget.pri)
+ include($$PROJECT_ROOTDIR/libukcc/interface.pri)
+ 
+diff --git a/plugins/devices/keyboard/keyboard.pro b/plugins/devices/keyboard/keyboard.pro
+index aaaf50e..77015a8 100644
+--- a/plugins/devices/keyboard/keyboard.pro
++++ b/plugins/devices/keyboard/keyboard.pro
+@@ -6,7 +6,6 @@
+ 
+ include(../../../env.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Label/label.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/CloseButton/closebutton.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/SettingWidget/settingwidget.pri)
+ include($$PROJECT_ROOTDIR/libukcc/interface.pri)
+ 
+diff --git a/shell/mainwindow.cpp b/shell/mainwindow.cpp
+index aeebab3..469a417 100644
+--- a/shell/mainwindow.cpp
++++ b/shell/mainwindow.cpp
+@@ -21,7 +21,6 @@
+ #include "ui_mainwindow.h"
+ #include "interface/ukcccommon.h"
+ using namespace ukcc;
+-#include "imageutil.h"
+ #include "ukccabout.h"
+ 
+ #include <QLabel>
+diff --git a/shell/shell.pro b/shell/shell.pro
+index 3ec42ad..fa1880d 100644
+--- a/shell/shell.pro
++++ b/shell/shell.pro
+@@ -19,7 +19,6 @@ DEFINES += QT_DEPRECATED_WARNINGS
+ include(../env.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/Label/label.pri)
+ include($$PROJECT_ROOTDIR/libukcc/widgets/FlowLayout/flowlayout.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/ImageUtil/imageutil.pri)
+ include($$PROJECT_ROOTDIR/libukcc/interface.pri)
+ 
+ DEFINES += PLUGIN_INSTALL_DIRS='\\"$${PLUGIN_INSTALL_DIRS}\\"'
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0127-154-fix-ukui-control-center-update-agreement.patch ukui-control-center-4.10.0.0/debian/patches/0127-154-fix-ukui-control-center-update-agreement.patch
--- ukui-control-center-4.10.0.0/debian/patches/0127-154-fix-ukui-control-center-update-agreement.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0127-154-fix-ukui-control-center-update-agreement.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,23 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Fri, 7 Feb 2025 07:31:59 +0000
+Subject: =?utf-8?q?!154_fix=28ukui-control-center=29=3A_update_agreement_Me?=
+ =?utf-8?q?rge_pull_request_!154_from_=E8=8B=8F=E5=97=A3=E5=85=B8/nile-0122?=
+
+---
+ plugins/system/about/res/Ukcc-Agreement-zh_CN.txt | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/plugins/system/about/res/Ukcc-Agreement-zh_CN.txt b/plugins/system/about/res/Ukcc-Agreement-zh_CN.txt
+index c710b44..b388699 100644
+--- a/plugins/system/about/res/Ukcc-Agreement-zh_CN.txt
++++ b/plugins/system/about/res/Ukcc-Agreement-zh_CN.txt
+@@ -104,7 +104,8 @@
+         5)本产品的生物特征管理工具支持系统组件使用生物特征进行认证,包括指纹、指静脉、虹膜、声纹等。您录入的生物特征信息将储存在本地计算机,这部分信息我们仅接收验证结果,不会收集和上传。如您不需要使用生物特征进行系统认证,可以在生物特征管理工具中关闭该功能。
+         6)本产品提供录音功能,您在使用本产品录音软件中,我们仅会将您使用录音时的音频内容存储在本地计算机中,不会进行收集和上传。
+         7)本产品的服务与支持功能会收集由您提供给我们的日志、电子邮箱、电话、姓名等信息,便于提供技术服务,我们将妥善保管您的个人信息。
+-        8)本产品升级过程中,如需新增收集您的个人信息,我们将及时更新本部分内容。
++        8)为了确保您的账户安全和提供个性化的服务,本产品可能会收集您用于登录计算机系统的用户名和密码信息。这些信息将经过加密处理,并仅用于身份验证和账户管理目的。我们承诺不会以明文形式存储或传输您的密码,并采取严格的安全措施保护您的个人信息。
++        9)本产品升级过程中,如需新增收集您的个人信息,我们将及时更新本部分内容。
+         2.使用个人信息的情况
+         我们严格遵守法律法规的规定及与您的约定,将收集的信息用于以下用途。若我们超出以下用途,我们将再次向您进行说明,并征得您的同意。
+         1)涉及产品许可机制、软件商店使用、系统更新维护、生物识别、在线服务等需要;
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0128-155-fix-font.patch ukui-control-center-4.10.0.0/debian/patches/0128-155-fix-font.patch
--- ukui-control-center-4.10.0.0/debian/patches/0128-155-fix-font.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0128-155-fix-font.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,91 @@
+From: =?utf-8?b?6IuP5Zej5YW4?= <susidian@kylinos.cn>
+Date: Fri, 7 Feb 2025 08:47:59 +0000
+Subject: !155 fix: font Merge pull request !155 from nil/nile-25-0205
+
+---
+ data/org.ukui.control-center.gschema.xml |  2 +-
+ shell/searchwidget.cpp                   | 16 +---------------
+ shell/searchwidget.h                     |  2 --
+ 3 files changed, 2 insertions(+), 18 deletions(-)
+
+diff --git a/data/org.ukui.control-center.gschema.xml b/data/org.ukui.control-center.gschema.xml
+index 6bbcb0b..275b25a 100644
+--- a/data/org.ukui.control-center.gschema.xml
++++ b/data/org.ukui.control-center.gschema.xml
+@@ -1,7 +1,7 @@
+ <schemalist gettext-domain="ukui-control-center">
+   <schema id="org.ukui.control-center" path="/org/ukui/control-center/">
+     <key name="fonts-list" type="as">
+-      <default>['CESI仿宋-GB13000','CESI_FS_GB13000', 'CESI仿宋-GB18030','CESI_FS_GB18030', 'CESI仿宋-GB2312','CESI_FS_GB2312', 'CESI宋体-GB13000','CESI_SS_GB13000', 'CESI宋体-GB18030','CESI_SS_GB18030', 'CESI宋体-GB2312','CESI_SS_GB2312', 'CESI小标宋-GB13000','CESI_XBS_GB13000', 'CESI小标宋-GB18030','CESI_XBS_GB18030', 'CESI小标宋-GB2312','CESI_XBS_GB2312', 'CESI楷体-GB13000','CESI_KT_GB13000', 'CESI楷体-GB18030','CESI_KT_GB18030', 'CESI楷体-GB2312','CESI_KT_GB2312', 'CESI黑体-GB13000','CESI_HT_GB13000', 'CESI黑体-GB18030','CESI_HT_GB18030', 'CESI黑体-GB2312','CESI_HT_GB2312', '仿宋', '黑体', '楷体', '宋体', '华文彩云','STCaiyun', '华文仿宋','STFangsong', '华文琥珀','STHupo', '华文楷体','STKaiti', '华文隶书','STLiti', '华文宋体','STSong', '华文细黑','STXihei', '华文行楷','STXingkai', '华文新魏','STXinwei', 'Noto Sans CJK SC', 'Noto Sans CJK SC Black', 'Noto Sans Mono CJK SC', 'Noto Sans CJK SC DemiLight', 'Noto Sans CJK SC Light', 'Noto Sans CJK SC Medium', 'Noto Sans CJK SC', 'Noto Sans CJK SC Thin','Dotted Songti Square','WenQuanYi Bitmap Song','国标仿宋', '国标宋体-超大字符集', '国标仿宋-GB/T 2312', '国标黑体', '国标黑体-GB/T 2312', '国标楷体', '国标楷体-GB/T 2312', '国标宋体', '国标宋体-GB/T 2312', '国标小标宋', '国标小标宋-GB/T 2312']</default>
++      <default>['CESI仿宋-GB13000','CESI_FS_GB13000', 'CESI仿宋-GB18030','CESI_FS_GB18030', 'CESI仿宋-GB2312','CESI_FS_GB2312', 'CESI宋体-GB13000','CESI_SS_GB13000', 'CESI宋体-GB18030','CESI_SS_GB18030', 'CESI宋体-GB2312','CESI_SS_GB2312', 'CESI小标宋-GB13000','CESI_XBS_GB13000', 'CESI小标宋-GB18030','CESI_XBS_GB18030', 'CESI小标宋-GB2312','CESI_XBS_GB2312', 'CESI楷体-GB13000','CESI_KT_GB13000', 'CESI楷体-GB18030','CESI_KT_GB18030', 'CESI楷体-GB2312','CESI_KT_GB2312', 'CESI黑体-GB13000','CESI_HT_GB13000', 'CESI黑体-GB18030','CESI_HT_GB18030', 'CESI黑体-GB2312','CESI_HT_GB2312', '仿宋', '黑体', '楷体', '宋体', '华文仿宋','STFangsong', '华文楷体','STKaiti', '华文隶书','STLiti', '华文宋体','STSong', '华文细黑','STXihei', '华文行楷','STXingkai', '华文新魏','STXinwei', 'Noto Sans CJK SC', 'Noto Sans CJK SC Black', 'Noto Sans Mono CJK SC', 'Noto Sans CJK SC DemiLight', 'Noto Sans CJK SC Light', 'Noto Sans CJK SC Medium', 'Noto Sans CJK SC', 'Noto Sans CJK SC Thin','Dotted Songti Square','WenQuanYi Bitmap Song','国标仿宋','GB_FS_GB18030', '国标宋体-超大字符集','GB_SS_GB18030_ExtendedK', '国标仿宋-GB/T 2312','GB_FS_GBT2312', '国标黑体','GB_HT_GB18030', '国标黑体-GB/T 2312','GB_HT_GBT2312', '国标楷体', 'GB_KT_GB18030','国标楷体-GB/T 2312', 'GB_KT_GBT2312','国标宋体', 'GB_SS_GB18030','国标宋体-GB/T 2312','GB_SS_GBT2312', '国标小标宋','GB_XBS_GB18030','国标小标宋-GB/T 2312','GB_XBS_GBT2312']</default>
+       <summary>Control panel default font list</summary>
+       <description>Control panel default font list</description>
+     </key>
+diff --git a/shell/searchwidget.cpp b/shell/searchwidget.cpp
+index 06a7b2a..3be58d6 100644
+--- a/shell/searchwidget.cpp
++++ b/shell/searchwidget.cpp
+@@ -438,18 +438,6 @@ void SearchWidget::addShortcutSearch() {
+     clearSearchData();
+ }
+ 
+-void SearchWidget::removeRepeatItems()
+-{
+-    for (int index = 0 ; index < m_model->rowCount() ; index++) {
+-        QString text = m_model->item(index)->text();
+-        if (m_repeatlist.contains(text)) {
+-            m_model->removeRow(index);
+-            index--;
+-        }
+-        m_repeatlist.append(text);
+-    }
+-}
+-
+ void SearchWidget::appendShortcutSearch() {
+     typedef QList<QStringPair> QStringPairList;
+     QDBusReply<QStringPairList> systemEntryReply = m_shortcutInterface->call("getSystemShortcut");
+@@ -611,7 +599,7 @@ void SearchWidget::appendChineseData(SearchWidget::SearchBoxStruct data) {
+ 
+         for (auto datas : m_TxtList) {
+             for (int i = 0; i < datas.count(); i++) {
+-                if( data.translateContent == datas){
++                if (data.translateContent == datas){
+                     return;
+                 }
+             }
+@@ -736,7 +724,6 @@ void SearchWidget::setLanguage(QString type) {
+     loadxml();
+     //记录搜索项总数
+     count = m_model->rowCount();
+-    removeRepeatItems();
+ }
+ 
+ //save all modules moduleInteface name and actual moduleName
+@@ -751,7 +738,6 @@ void SearchWidget::addModulesName(QString moduleName, QString searchName, QStrin
+     if (!translation.isEmpty()) {
+         m_xmlFilePath.insert(translation);
+     }
+-
+ }
+ 
+ void SearchWidget::onCompleterActivated(QString value) {
+diff --git a/shell/searchwidget.h b/shell/searchwidget.h
+index 734665c..8752ab0 100644
+--- a/shell/searchwidget.h
++++ b/shell/searchwidget.h
+@@ -76,7 +76,6 @@ private:
+                           SearchBoxStruct *data = nullptr);
+     void appendShortcutSearch();
+     void addShortcutSearch();
+-    void removeRepeatItems();
+ 
+ private:
+     QStandardItemModel *m_model;
+@@ -96,7 +95,6 @@ private:
+     QList<QString> m_TxtList;
+ 
+     QStringList mExcludeList;
+-    QStringList m_repeatlist;
+     int count;
+     QVariantMap searchMap;
+     bool m_shortcutInterfaceValid = true;
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0129-162-fix-ukui-control-center-fix-about-getCpuinfo.patch ukui-control-center-4.10.0.0/debian/patches/0129-162-fix-ukui-control-center-fix-about-getCpuinfo.patch
--- ukui-control-center-4.10.0.0/debian/patches/0129-162-fix-ukui-control-center-fix-about-getCpuinfo.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0129-162-fix-ukui-control-center-fix-about-getCpuinfo.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,156 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Fri, 14 Feb 2025 02:25:14 +0000
+Subject: =?utf-8?q?!162_fix=28ukui-control-center=29=3A_fix_about_getCpuinf?=
+ =?utf-8?q?o_Merge_pull_request_!162_from_=E8=8B=8F=E5=97=A3=E5=85=B8/nile-?=
+ =?utf-8?q?0122?=
+
+---
+ data/en_US/index.md                                |  6 +++---
+ libukcc/interface/ukcccommon.cpp                   |  6 +++++-
+ plugins/personalized/screenlock/screenlock.cpp     | 10 ----------
+ plugins/personalized/wallpaper/wallpaper.cpp       | 11 -----------
+ plugins/system/display/widget.cpp                  |  1 +
+ registeredSession/plugins/about/aboutinterface.cpp |  5 +++++
+ shell/mainwindow.cpp                               |  4 ++++
+ 7 files changed, 18 insertions(+), 25 deletions(-)
+
+diff --git a/data/en_US/index.md b/data/en_US/index.md
+index 7cf841b..1f1c43a 100644
+--- a/data/en_US/index.md
++++ b/data/en_US/index.md
+@@ -381,7 +381,7 @@ In Screenlock module, you can select the background image to display on the logi
+ 
+ As shown in Fig 22.
+ 
+-![Fig 21-3 Effect settings](image/19.png)
++![Fig 22-1 Screenlock](image/19.png)
+ 
+ 
+ 
+@@ -389,7 +389,7 @@ As shown in Fig 22.
+ 
+ In Screensaver module, you can set screen saver program, wait time, show rest time, lock screen when screensaver boot. The screen saver provides two options: UKUI and Customize.
+ 
+-![Fig 22 Screenlock-big](image/20.png)
++![Fig 22 Screensaver-big](image/20.png)
+ 
+ ### Fonts
+ 
+@@ -397,7 +397,7 @@ General settings for font, size, and monospace.
+ 
+ Click the "Restore Defaults" button to restore all font settings to the system defaults.
+ 
+-![Fig 23 Screensaver-big](image/21.png)
++![Fig 23 Fonts-big](image/21.png)
+ 
+ ### Panel
+ 
+diff --git a/libukcc/interface/ukcccommon.cpp b/libukcc/interface/ukcccommon.cpp
+index 9b25b89..0154dfb 100644
+--- a/libukcc/interface/ukcccommon.cpp
++++ b/libukcc/interface/ukcccommon.cpp
+@@ -72,6 +72,10 @@ QString UkccCommon::getCpuInfo() {
+         QStringList modelLineWayland = buffer.split('\n').filter(QRegularExpression("^Hardware"));
+         QStringList lines = buffer.split('\n');
+ 
++        if (modelLine.isEmpty()) {
++            modelLine = buffer.split('\n').filter(QRegularExpression("^Model Name"));
++            qDebug() << Q_FUNC_INFO << "model name is empty, get Model Name" << modelLine;
++        }
+         if (modelLine.isEmpty()) {
+             if (modelLineWayland.isEmpty()) {
+                 return "Unknown";
+@@ -85,7 +89,7 @@ QString UkccCommon::getCpuInfo() {
+         QString result;
+         result.append(modelLine.first().split(':').at(1));
+         result = result.trimmed();
+-
++        qDebug() << Q_FUNC_INFO << "getCpuInfo" << result;
+         return result;
+     }
+ 
+diff --git a/plugins/personalized/screenlock/screenlock.cpp b/plugins/personalized/screenlock/screenlock.cpp
+index 05f27a2..bf939ef 100644
+--- a/plugins/personalized/screenlock/screenlock.cpp
++++ b/plugins/personalized/screenlock/screenlock.cpp
+@@ -224,16 +224,6 @@ void Screenlock::showLocalWpDialog()
+     }
+     QString selectedfile;
+     selectedfile = fd.selectedFiles().first();
+-
+-    QStringList fileRes = selectedfile.split("/");
+-
+-    QProcess * process = new QProcess(this);
+-    QString program("cp");
+-    QStringList arguments;
+-    arguments << selectedfile ;
+-    arguments << "/tmp";
+-    process->start(program, arguments);
+-
+     screenlockInterface->call("setWallpaper", selectedfile);
+     UkccCommon::buriedSettings(name(), QString("browserLocalwpBtn"), QString("clicked"));
+ }
+diff --git a/plugins/personalized/wallpaper/wallpaper.cpp b/plugins/personalized/wallpaper/wallpaper.cpp
+index 7c7675f..473b111 100644
+--- a/plugins/personalized/wallpaper/wallpaper.cpp
++++ b/plugins/personalized/wallpaper/wallpaper.cpp
+@@ -328,16 +328,5 @@ void Wallpaper::showLocalWpDialog()
+     }
+     QString selectedfile;
+     selectedfile = fd.selectedFiles().first();
+-
+-    QStringList fileRes = selectedfile.split("/");
+-
+-    QProcess process;
+-    QString program("cp");
+-    QStringList arguments;
+-    arguments << selectedfile ;
+-    arguments << "/tmp";
+-    process.start(program, arguments);
+-    QString bgfile = "/tmp/" + fileRes.at(fileRes.length() - 1);
+-
+     wallpaperInterface->call("setWallpaper", "picture", selectedfile);
+ }
+diff --git a/plugins/system/display/widget.cpp b/plugins/system/display/widget.cpp
+index 05a296d..9b7ec43 100644
+--- a/plugins/system/display/widget.cpp
++++ b/plugins/system/display/widget.cpp
+@@ -804,6 +804,7 @@ bool Widget::isRestoreConfig()
+ 
+     msg.addButton(tr("Not Save"), QMessageBox::RejectRole);
+     QPushButton *saveBtn = msg.addButton(tr("Save"), QMessageBox::AcceptRole);
++    msg.setParent(this);
+ 
+     QString config_name;
+     if (mConfigChanged) {
+diff --git a/registeredSession/plugins/about/aboutinterface.cpp b/registeredSession/plugins/about/aboutinterface.cpp
+index 9a24c5e..b2db84e 100644
+--- a/registeredSession/plugins/about/aboutinterface.cpp
++++ b/registeredSession/plugins/about/aboutinterface.cpp
+@@ -132,6 +132,11 @@ void AboutInterface::getBuildList() {
+ 
+ QStringList AboutInterface::getBuild()
+ {
++    mBuild.clear();
++    version_t ver= kdk_system_get_version_detaile();
++    mBuild.append(ver.os_version);
++    mBuild.append(ver.update_version);
++    qDebug() << Q_FUNC_INFO << "os_version" << ver.os_version << "update_version" << ver.update_version;
+     return mBuild;
+ }
+ 
+diff --git a/shell/mainwindow.cpp b/shell/mainwindow.cpp
+index 469a417..d4e34c8 100644
+--- a/shell/mainwindow.cpp
++++ b/shell/mainwindow.cpp
+@@ -665,6 +665,10 @@ void MainWindow::determinePlugin(const QString &fileName, const QDir &dir)
+     }
+ #endif
+ 
++    if (!fileName.endsWith(".so")) {
++        qDebug() << Q_FUNC_INFO << "file is not plugin" << fileName;
++        return;
++    }
+ 
+     QPluginLoader loader(pluginPath);
+     QObject * plugin = loader.instance();
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0130-164-fix-mainwindow-loadplugin.patch ukui-control-center-4.10.0.0/debian/patches/0130-164-fix-mainwindow-loadplugin.patch
--- ukui-control-center-4.10.0.0/debian/patches/0130-164-fix-mainwindow-loadplugin.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0130-164-fix-mainwindow-loadplugin.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,22 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Fri, 14 Feb 2025 02:28:06 +0000
+Subject: =?utf-8?q?!164_fix=28mainwindow=29=3A_loadplugin_Merge_pull_reques?=
+ =?utf-8?q?t_!164_from_=E4=BD=95=E6=80=9D=E8=83=9C/nile-0212?=
+
+---
+ shell/mainwindow.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/shell/mainwindow.cpp b/shell/mainwindow.cpp
+index d4e34c8..9d3b584 100644
+--- a/shell/mainwindow.cpp
++++ b/shell/mainwindow.cpp
+@@ -677,7 +677,7 @@ void MainWindow::determinePlugin(const QString &fileName, const QDir &dir)
+         CommonInterface * pluginInstance = qobject_cast<CommonInterface *>(plugin);
+         qDebug() << "Load Plugin : " << pluginInstance->name() << "isEnable:" << pluginInstance->isEnable();
+         // 插件是否启用
+-        if (!pluginInstance || !pluginInstance->isEnable() || !fileName.endsWith("so")) {
++        if (!pluginInstance || !fileName.endsWith("so")) {
+             return;
+         }
+ 
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0131-Added-translation-using-Weblate-Arabic.patch ukui-control-center-4.10.0.0/debian/patches/0131-Added-translation-using-Weblate-Arabic.patch
--- ukui-control-center-4.10.0.0/debian/patches/0131-Added-translation-using-Weblate-Arabic.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0131-Added-translation-using-Weblate-Arabic.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,35 @@
+From: KevinDuan <duankaiwen@kylinos.cn>
+Date: Mon, 17 Feb 2025 09:32:47 +0800
+Subject: Added translation using Weblate (Arabic)
+
+---
+ libukcc/plugin-test/translations/ar.ts | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+ create mode 100644 libukcc/plugin-test/translations/ar.ts
+
+diff --git a/libukcc/plugin-test/translations/ar.ts b/libukcc/plugin-test/translations/ar.ts
+new file mode 100644
+index 0000000..8a364e1
+--- /dev/null
++++ b/libukcc/plugin-test/translations/ar.ts
+@@ -0,0 +1,20 @@
++<?xml version="1.0" encoding="utf-8"?>
++<!DOCTYPE TS>
++<TS version="2.1" language="ar">
++<context>
++    <name>UkccPlugin</name>
++    <message>
++        <location filename="../ukccplugin.cpp" line="11"/>
++        <location filename="../ukccplugin.cpp" line="64"/>
++        <source>UkccPlugin</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/UkccPlugin/UkccPlugin</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../ukccplugin.cpp" line="66"/>
++        <source>ukccplugin test</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/UkccPlugin/ukccplugin test</extra-contents_path>
++    </message>
++</context>
++</TS>
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0132-Added-translation-using-Weblate-Vietnamese.patch ukui-control-center-4.10.0.0/debian/patches/0132-Added-translation-using-Weblate-Vietnamese.patch
--- ukui-control-center-4.10.0.0/debian/patches/0132-Added-translation-using-Weblate-Vietnamese.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0132-Added-translation-using-Weblate-Vietnamese.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,13929 @@
+From: KevinDuan <duankaiwen@kylinos.cn>
+Date: Mon, 17 Feb 2025 14:58:03 +0800
+Subject: Added translation using Weblate (Vietnamese)
+
+---
+ libukcc/plugin-test/translations/vi.ts |    20 +
+ shell/res/i18n/ar.ts                   | 13886 +++++++++++++++++++++++++++++++
+ 2 files changed, 13906 insertions(+)
+ create mode 100644 libukcc/plugin-test/translations/vi.ts
+ create mode 100644 shell/res/i18n/ar.ts
+
+diff --git a/libukcc/plugin-test/translations/vi.ts b/libukcc/plugin-test/translations/vi.ts
+new file mode 100644
+index 0000000..6a05142
+--- /dev/null
++++ b/libukcc/plugin-test/translations/vi.ts
+@@ -0,0 +1,20 @@
++<?xml version="1.0" encoding="utf-8"?>
++<!DOCTYPE TS>
++<TS version="2.1" language="vi">
++<context>
++    <name>UkccPlugin</name>
++    <message>
++        <location filename="../ukccplugin.cpp" line="11"/>
++        <location filename="../ukccplugin.cpp" line="64"/>
++        <source>UkccPlugin</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/UkccPlugin/UkccPlugin</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../ukccplugin.cpp" line="66"/>
++        <source>ukccplugin test</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/UkccPlugin/ukccplugin test</extra-contents_path>
++    </message>
++</context>
++</TS>
+diff --git a/shell/res/i18n/ar.ts b/shell/res/i18n/ar.ts
+new file mode 100644
+index 0000000..92517d6
+--- /dev/null
++++ b/shell/res/i18n/ar.ts
+@@ -0,0 +1,13886 @@
++<?xml version="1.0" encoding="utf-8"?>
++<!DOCTYPE TS>
++<TS version="2.1" language="ar">
++<context>
++    <name>About</name>
++    <message>
++        <source>System Summary</source>
++        <translation type="vanished">系统概述</translation>
++    </message>
++    <message>
++        <source>Support</source>
++        <translation type="vanished">支持</translation>
++    </message>
++    <message>
++        <source>Version Number</source>
++        <translation type="vanished">版本号</translation>
++    </message>
++    <message>
++        <source>Copyright © 2020. All rights reserved.</source>
++        <translation type="obsolete">版权所有 @ 2009-%1%2 保留所有权利。 {2020.?}</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="546"/>
++        <source>Status</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="224"/>
++        <source>DateRes</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Wechat code scanning obtains HP professional technical support</source>
++        <translation type="vanished">微信扫码获得HP专业技术支持</translation>
++    </message>
++    <message>
++        <source>HostName</source>
++        <translation type="vanished">计算机名</translation>
++    </message>
++    <message>
++        <source>Copyright © 2020 KylinSoft. All rights reserved.</source>
++        <translation type="vanished">版权所有 © 2020 麒麟软件 保留所有权利。</translation>
++    </message>
++    <message>
++        <source>See more about Kylin Tianqi edu platform</source>
++        <translation type="vanished">查看麒麟天启教育平台更多信息</translation>
++    </message>
++    <message>
++        <source>&lt;&lt;Protocol&gt;&gt;</source>
++        <translation type="vanished">《试用免责协议》</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="56"/>
++        <source>About and Support</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>InterVersion</source>
++        <translation type="vanished">内部版本</translation>
++    </message>
++    <message>
++        <source>Patch Version</source>
++        <translation type="vanished">系统补丁版本号</translation>
++    </message>
++    <message>
++        <source>Privacy and agreement</source>
++        <translation type="vanished">隐私和协议</translation>
++    </message>
++    <message>
++        <source>Send optional diagnostic data</source>
++        <translation type="vanished">发送可选诊断数据</translation>
++    </message>
++    <message>
++        <source>By sending us diagnostic data, improve the system experience and solve your problems faster</source>
++        <translation type="vanished">通过向我们发送诊断数据,提升系统体验以及更快的解决你的问题</translation>
++    </message>
++    <message>
++        <source>Copyright © 2009-%1 KylinSoft. All rights reserved.</source>
++        <translation type="vanished">版权所有 © 2009-%1 麒麟软件 保留所有权利。</translation>
++    </message>
++    <message>
++        <source>and</source>
++        <translation type="vanished">和</translation>
++    </message>
++    <message>
++        <source>&lt;&lt;Privacy&gt;&gt;</source>
++        <translation type="vanished">《用户隐私协议》</translation>
++    </message>
++    <message>
++        <source>Learn more HP user manual&gt;&gt;</source>
++        <translation type="vanished">了解更多 Hp用户手册&gt;&gt;</translation>
++    </message>
++    <message>
++        <source>See user manual&gt;&gt;</source>
++        <translation type="vanished">查看用户手册</translation>
++    </message>
++    <message>
++        <source>Not activated (trial period)</source>
++        <translation type="vanished">未激活(试用期)</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="229"/>
++        <source>Trial expiration time</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="456"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="552"/>
++        <source>expired</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="244"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="457"/>
++        <source>Extend</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Installed Date</source>
++        <translation type="vanished">安装日期</translation>
++    </message>
++    <message>
++        <source>Upgrade Date</source>
++        <translation type="vanished">系统更新时间</translation>
++    </message>
++    <message>
++        <source>Copyright © 2009-%1 %2. All rights reserved.</source>
++        <translation type="vanished">版权所有 @ 2009-%1%2 保留所有权利。</translation>
++    </message>
++    <message>
++        <source>openkylin</source>
++        <translation type="vanished">开放麒麟</translation>
++    </message>
++    <message>
++        <source>KylinSoft</source>
++        <translation type="vanished">麒麟软件</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="279"/>
++        <source>Kylin Linux Desktop (Touch Screen) V10 (SP1)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="281"/>
++        <source>Kylin Linux Desktop (Tablet) V10 (SP1)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="517"/>
++        <source>The system needs to be restarted to set the HostName, whether to reboot</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="518"/>
++        <source>Reboot Now</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="519"/>
++        <source>Reboot Later</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Technical service has expired</source>
++        <translation type="vanished">已过期</translation>
++    </message>
++    <message>
++        <source>Extended</source>
++        <translation type="vanished">延长服务</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="400"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="409"/>
++        <source>avaliable</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>version</source>
++        <translation type="vanished">版本</translation>
++    </message>
++    <message>
++        <source>Copyright 2009-2020 @ Kylinos All rights reserved</source>
++        <translation type="vanished">版权所有2009-2020@kylinos保留所有权利</translation>
++    </message>
++    <message>
++        <source>Copyright 2009-2021 @ Kylinos All rights reserved</source>
++        <translation type="vanished">版权所有2009-2021@kylinos保留所有权利</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="544"/>
++        <source>Version</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="287"/>
++        <source>Kylin Linux Desktop V10 (SP1)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Copyright @ 2009-2021 KylinSoft. All rights reserved.</source>
++        <translation type="vanished">版权所有 @ 2009-2021 麒麟软件 保留所有权利。</translation>
++    </message>
++    <message>
++        <source>Copyright © 2009-2021 KylinSoft. All rights reserved.</source>
++        <translation type="vanished">版权所有 © 2009-2021 麒麟软件 保留所有权利。</translation>
++    </message>
++    <message>
++        <source>Kernel</source>
++        <translation type="vanished">内核</translation>
++        <extra-contents_path>/About/Kernel</extra-contents_path>
++    </message>
++    <message>
++        <source>CPU</source>
++        <translation type="vanished">CPU</translation>
++        <extra-contents_path>/About/CPU</extra-contents_path>
++    </message>
++    <message>
++        <source>Memory</source>
++        <translation type="vanished">内存</translation>
++        <extra-contents_path>/About/Memory</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="407"/>
++        <source>Disk</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Desktop</source>
++        <translation type="vanished">桌面</translation>
++        <extra-contents_path>/About/Desktop</extra-contents_path>
++    </message>
++    <message>
++        <source>User</source>
++        <translation type="vanished">用户名</translation>
++        <extra-contents_path>/About/User</extra-contents_path>
++    </message>
++    <message>
++        <source>Active Status</source>
++        <translation type="vanished">激活状态</translation>
++    </message>
++    <message>
++        <source>DataRes</source>
++        <translation type="vanished">有效期</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="548"/>
++        <source>Serial</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Protocol</source>
++        <translation type="vanished">免责协议</translation>
++    </message>
++    <message>
++        <source>Service serial number</source>
++        <translation type="vanished">序列号</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="231"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="235"/>
++        <source>Active</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Trial version disclaimer</source>
++        <translation type="vanished">试用版免责声明</translation>
++    </message>
++    <message>
++        <source>Devices Summary</source>
++        <translation type="vanished">设备规格</translation>
++    </message>
++    <message>
++        <source>about</source>
++        <translation type="vanished">关于</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="58"/>
++        <source>About</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>The system has expired. The expiration time is:</source>
++        <translation type="vanished">您的系统已激活,技术服务已到期:</translation>
++    </message>
++    <message>
++        <source>Disk:</source>
++        <translation type="vanished">硬盘:</translation>
++    </message>
++    <message>
++        <source> available</source>
++        <translation type="vanished">可用</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="227"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="233"/>
++        <source>Inactivated</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="243"/>
++        <source>Activated</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>UNKNOWN</source>
++        <translation type="vanished">未知的</translation>
++    </message>
++    <message>
++        <source>Current desktop env:</source>
++        <translation type="vanished">当前桌面环境:</translation>
++    </message>
++    <message>
++        <source>OS Version:</source>
++        <translation type="vanished">系统版本:</translation>
++    </message>
++    <message>
++        <source>CPU Arch:</source>
++        <translation type="vanished">CPU架构:</translation>
++    </message>
++    <message>
++        <source>Kernel Version</source>
++        <translation type="vanished">内核版本</translation>
++    </message>
++    <message>
++        <source>Manufacturers:</source>
++        <translation type="vanished">制造商:</translation>
++    </message>
++    <message>
++        <source>Product Name:</source>
++        <translation type="vanished">产品名:</translation>
++    </message>
++    <message>
++        <source>Version:</source>
++        <translation type="vanished">版本:</translation>
++    </message>
++    <message>
++        <source>Serial Number:</source>
++        <translation type="vanished">序列号:</translation>
++    </message>
++</context>
++<context>
++    <name>AboutInterface</name>
++    <message>
++        <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="226"/>
++        <source>avaliable</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AboutUi</name>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="31"/>
++        <source>System Summary</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="33"/>
++        <source>Privacy and agreement</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="35"/>
++        <source>Support</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="49"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="376"/>
++        <source>Version</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/version</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="54"/>
++        <source>Version Number</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="59"/>
++        <source>Patch Version</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="64"/>
++        <source>Installed Date</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="69"/>
++        <source>Upgrade Date</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="75"/>
++        <source>HostName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="87"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="378"/>
++        <source>Kernel</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Kernel</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="92"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="380"/>
++        <source>CPU</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/CPU</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="97"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="382"/>
++        <source>Memory</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Memory</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="102"/>
++        <source>Disk</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="107"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="384"/>
++        <source>Desktop</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Desktop</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="112"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="386"/>
++        <source>User</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/User</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="120"/>
++        <source>Copyright ©%1 %2. All rights reserved.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Copyright ©2022 %1. All rights reserved.</source>
++        <translation type="vanished">版权所有 ©2022 %1. 保留所有权利。</translation>
++    </message>
++    <message>
++        <source>Copyright © %1 %2. All rights reserved.</source>
++        <translation type="vanished">版权所有 © %1 %2. 保留所有权利。</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="169"/>
++        <source>openKylin</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="166"/>
++        <source>KylinSoft</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Copyright © 2020 KylinSoft. All rights reserved.</source>
++        <translation type="vanished">版权所有 © 2020 麒麟软件 保留所有权利。</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="232"/>
++        <source>Wechat code scanning obtains HP professional technical support</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="233"/>
++        <source>See more about Kylin Tianqi edu platform</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="253"/>
++        <source>Learn more HP user manual&gt;&gt;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="258"/>
++        <source>See user manual&gt;&gt;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="336"/>
++        <source>Send optional diagnostic data</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="337"/>
++        <source>By sending us diagnostic data, improve the system experience and solve your problems faster</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="359"/>
++        <source>&lt;&lt;Protocol&gt;&gt;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="360"/>
++        <source>and</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="361"/>
++        <source>&lt;&lt;Privacy&gt;&gt;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="388"/>
++        <source>Status</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Status</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="390"/>
++        <source>Active</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Active</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="391"/>
++        <source>Serial</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AddAppDialog</name>
++    <message>
++        <source>OK</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++</context>
++<context>
++    <name>AddAutoBoot</name>
++    <message>
++        <source>Add AutoBoot</source>
++        <translation type="vanished">添加自启动程序</translation>
++    </message>
++    <message>
++        <source>Add autoboot program</source>
++        <translation type="vanished">添加自启动程序</translation>
++    </message>
++    <message>
++        <source>Program name</source>
++        <translation type="vanished">程序名</translation>
++    </message>
++    <message>
++        <source>Program exec</source>
++        <translation type="vanished">程序路径</translation>
++    </message>
++    <message>
++        <source>Open</source>
++        <translation type="vanished">浏览</translation>
++    </message>
++    <message>
++        <source>Program comment</source>
++        <translation type="vanished">程序描述</translation>
++    </message>
++    <message>
++        <source>Name</source>
++        <translation type="vanished">程序名</translation>
++    </message>
++    <message>
++        <source>Exec</source>
++        <translation type="vanished">程序路径</translation>
++    </message>
++    <message>
++        <source>Comment</source>
++        <translation type="vanished">程序描述</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Desktop files(*.desktop)</source>
++        <translation type="vanished">桌面文件(*.desktop)</translation>
++    </message>
++    <message>
++        <source>select autoboot desktop</source>
++        <translation type="vanished">选择自启动程序</translation>
++    </message>
++    <message>
++        <source>Select</source>
++        <translation type="vanished">选择</translation>
++    </message>
++    <message>
++        <source>desktop file not allowed add</source>
++        <translation type="vanished">此应用不允许添加</translation>
++    </message>
++    <message>
++        <source>desktop file  already exist</source>
++        <translation type="vanished">桌面文件已经存在</translation>
++    </message>
++    <message>
++        <source>desktop file not exist</source>
++        <translation type="vanished">desktop文件不存在</translation>
++    </message>
++</context>
++<context>
++    <name>AddBtn</name>
++    <message>
++        <location filename="../../../libukcc/widgets/AddBtn/addbtn.cpp" line="27"/>
++        <source>Add</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AddButton</name>
++    <message>
++        <location filename="../../../libukcc/widgets/SettingWidget/addbutton.cpp" line="25"/>
++        <source>Add</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AddInputMethodDialog</name>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="26"/>
++        <source>Dialog</source>
++        <translation></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="38"/>
++        <source>Select the input method to add</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="94"/>
++        <source>No</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="113"/>
++        <source>Yes</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="5"/>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="6"/>
++        <source>keyboard</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="5"/>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="6"/>
++        <source>Tibetan</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="7"/>
++        <source>With ASCII numbers</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="15"/>
++        <source>Input Method</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AddLanguageDialog</name>
++    <message>
++        <location filename="../../../plugins/time-language/area/addlanguagedialog.ui" line="26"/>
++        <source>Dialog</source>
++        <translation></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addlanguagedialog.ui" line="164"/>
++        <source>Yes</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addlanguagedialog.ui" line="145"/>
++        <source>No</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addlanguagedialog.cpp" line="13"/>
++        <source>Add Language</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addlanguagedialog.cpp" line="14"/>
++        <source>Search</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AddNetBtn</name>
++    <message>
++        <source>Add WiredNetork</source>
++        <translation type="vanished">添加有线网络</translation>
++    </message>
++</context>
++<context>
++    <name>AddShortcutDialog</name>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="32"/>
++        <source>Dialog</source>
++        <translation></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="94"/>
++        <source>Exec</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="132"/>
++        <source>Open</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="180"/>
++        <source>Name</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="228"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="299"/>
++        <source>TextLabel</source>
++        <translation></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="254"/>
++        <source>Key</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="348"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="266"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="367"/>
++        <source>Save</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="73"/>
++        <source>Add Shortcut</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="86"/>
++        <source>Please enter a shortcut</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="224"/>
++        <source>Desktop files(*.desktop)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
++        <source>select desktop</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="302"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="323"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="334"/>
++        <source>Invalid application</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="304"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="319"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="330"/>
++        <source>Shortcut conflict</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="306"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="321"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="332"/>
++        <source>Invalid shortcut</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="309"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="316"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="337"/>
++        <source>Name repetition</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="343"/>
++        <source>Unknown error</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="522"/>
++        <source>Shortcut cannot be empty</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="526"/>
++        <source>Name cannot be empty</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AppDetail</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">更改时间</translation>
++    </message>
++    <message>
++        <source>Allow notification</source>
++        <translation type="vanished">允许通知</translation>
++    </message>
++    <message>
++        <source>Number of notification centers</source>
++        <translation type="vanished">最大通知数量</translation>
++    </message>
++    <message>
++        <source>cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++</context>
++<context>
++    <name>AppUpdateWid</name>
++    <message>
++        <source>Lack of local disk space!</source>
++        <translation type="vanished">磁盘空间不足!</translation>
++    </message>
++    <message>
++        <source>Update</source>
++        <translation type="vanished">更新</translation>
++    </message>
++    <message>
++        <source>Network abnormal!</source>
++        <translation type="vanished">网络异常!</translation>
++    </message>
++    <message>
++        <source>Download failed!</source>
++        <translation type="vanished">下载失败!</translation>
++    </message>
++    <message>
++        <source>failed to get from the source!</source>
++        <translation type="vanished">从源中获取失败!</translation>
++    </message>
++    <message>
++        <source>The download cache has been removed</source>
++        <translation type="vanished">下载缓存已被删除</translation>
++    </message>
++    <message>
++        <source>Being installed</source>
++        <translation type="vanished">正在安装</translation>
++    </message>
++    <message>
++        <source>Update succeeded , please restart the system!</source>
++        <translation type="vanished">更新成功,请重启系统!</translation>
++    </message>
++    <message>
++        <source>Update succeeded , please log in to the system again!</source>
++        <translation type="vanished"> 更新成功,请注销重新登录系统!</translation>
++    </message>
++    <message>
++        <source>Update succeeded!</source>
++        <translation type="vanished">更新成功!</translation>
++    </message>
++    <message>
++        <source>Update failed!</source>
++        <translation type="vanished">更新失败!</translation>
++    </message>
++    <message>
++        <source>Failure reason:</source>
++        <translation type="vanished">失败原因:</translation>
++    </message>
++    <message>
++        <source>details</source>
++        <translation type="vanished">详情</translation>
++    </message>
++    <message>
++        <source>Update log</source>
++        <translation type="vanished">更新日志</translation>
++    </message>
++    <message>
++        <source>Newest:</source>
++        <translation type="vanished">最新:</translation>
++    </message>
++    <message>
++        <source>Download size:</source>
++        <translation type="vanished">下载大小:</translation>
++    </message>
++    <message>
++        <source>Current version:</source>
++        <translation type="vanished">当前版本:</translation>
++    </message>
++    <message>
++        <source>back</source>
++        <translation type="vanished">收起</translation>
++    </message>
++    <message>
++        <source>In the pause</source>
++        <translation type="vanished">暂停中</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Update succeeded , It is recommended that you restart later!</source>
++        <translation type="vanished">更新成功,建议您稍后重启!</translation>
++    </message>
++    <message>
++        <source>Update succeeded , It is recommended that you log out later and log in again!</source>
++        <translation type="vanished">更新成功,建议您稍后注销重新登录系统!</translation>
++    </message>
++    <message>
++        <source>The battery is below 50% and the update cannot be downloaded</source>
++        <translation type="vanished">电池电量低于 50%,无法下载更新</translation>
++    </message>
++    <message>
++        <source>OK</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>A single update will not automatically backup the system, if you want to backup, please click Update All.</source>
++        <translation type="vanished">单个更新不会自动备份系统,如需备份,请点击全部更新。</translation>
++    </message>
++    <message>
++        <source>Prompt information</source>
++        <translation type="vanished">提示信息</translation>
++    </message>
++    <message>
++        <source>Do not backup, continue to update</source>
++        <translation type="vanished">不备份,继续更新</translation>
++    </message>
++    <message>
++        <source>Cancel update</source>
++        <translation type="vanished">取消更新</translation>
++    </message>
++    <message>
++        <source>This time will no longer prompt</source>
++        <translation type="vanished">本次更新不再提示</translation>
++    </message>
++    <message>
++        <source>Calculate the download speed</source>
++        <translation type="vanished">正在获取当前下载进度</translation>
++    </message>
++    <message>
++        <source>Get depends failed!</source>
++        <translation type="vanished">依赖获取异常!</translation>
++    </message>
++    <message>
++        <source>In the update</source>
++        <translation type="vanished">更新中</translation>
++    </message>
++    <message>
++        <source>Ready to install</source>
++        <translation type="vanished">准备安装</translation>
++    </message>
++    <message>
++        <source>Calculate the download progress</source>
++        <translation type="vanished">正在计算当前下载速度</translation>
++    </message>
++    <message>
++        <source>No content.</source>
++        <translation type="vanished">暂无内容.</translation>
++    </message>
++</context>
++<context>
++    <name>AptProxyDialog</name>
++    <message>
++        <source>Set Apt Proxy</source>
++        <translation type="vanished">设置APT代理</translation>
++    </message>
++    <message>
++        <source>Server Address</source>
++        <translation type="vanished">服务器地址</translation>
++    </message>
++    <message>
++        <source>Port</source>
++        <translation type="vanished">端口</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>Area</name>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="28"/>
++        <source>Area</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Regional Format</source>
++        <translation type="vanished">显示日期、时间和货币格式</translation>
++        <extra-contents_path>/Area/Current Region</extra-contents_path>
++    </message>
++    <message>
++        <source>Current Region</source>
++        <translation type="vanished">显示日期、时间和货币格式的区域</translation>
++        <extra-contents_path>/Area/Current Region</extra-contents_path>
++    </message>
++    <message>
++        <source>First Day Of The Week</source>
++        <translation type="vanished">一周的第一天</translation>
++    </message>
++    <message>
++        <source>Calendar</source>
++        <translation type="vanished">日历</translation>
++        <extra-contents_path>/Area/Calendar</extra-contents_path>
++    </message>
++    <message>
++        <source>Language Format</source>
++        <translation type="vanished">语言格式</translation>
++        <extra-contents_path>/Area/Regional Format</extra-contents_path>
++    </message>
++    <message>
++        <source>Date</source>
++        <translation type="vanished">日期</translation>
++        <extra-contents_path>/Area/Date</extra-contents_path>
++    </message>
++    <message>
++        <source>Time</source>
++        <translation type="vanished">时间</translation>
++        <extra-contents_path>/Area/Time</extra-contents_path>
++    </message>
++    <message>
++        <source>Area showing time currency format</source>
++        <translation type="vanished">显示日期、货币、时间、货币格式的区域</translation>
++    </message>
++    <message>
++        <source>Regional format data</source>
++        <translation type="vanished">区域格式数据</translation>
++    </message>
++    <message>
++        <source>lunar</source>
++        <translation type="vanished">农历</translation>
++    </message>
++    <message>
++        <source>First day of the week</source>
++        <translation type="vanished">一周的第一天</translation>
++    </message>
++    <message>
++        <source>day</source>
++        <translation type="vanished">号</translation>
++    </message>
++    <message>
++        <source>area</source>
++        <translation type="vanished">区域语言</translation>
++    </message>
++    <message>
++        <source>current area</source>
++        <translation type="vanished">当前区域</translation>
++    </message>
++    <message>
++        <source>display format area</source>
++        <translation type="vanished">显示日期、时间、货币格式的区域</translation>
++    </message>
++    <message>
++        <source>US</source>
++        <translation type="vanished">美国</translation>
++    </message>
++    <message>
++        <source>Language for system windows,menus and web pages</source>
++        <translation type="vanished">显示在系统窗口、菜单和网页的语言</translation>
++    </message>
++    <message>
++        <source>Add main language</source>
++        <translation type="vanished">添加首语言</translation>
++    </message>
++    <message>
++        <source>System Language</source>
++        <translation type="vanished">系统语言</translation>
++        <extra-contents_path>/Area/system language</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="641"/>
++        <source>Simplified Chinese</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="195"/>
++        <source>English  (US)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="196"/>
++        <source>Simplified Chinese  (CN)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="198"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="200"/>
++        <source>Tibetan  (CN)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>First Day Of Week</source>
++        <translation type="vanished">一周的第一天</translation>
++        <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="233"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="386"/>
++        <source>12 Hours</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="234"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="387"/>
++        <source>24 Hours</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Settings</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <source>简体中文</source>
++        <translation type="vanished">简体中文</translation>
++    </message>
++    <message>
++        <source>བོད་ཡིག</source>
++        <translation type="vanished">藏语</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="201"/>
++        <source>Uygur  (CN)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Kirghiz  (CN)</source>
++        <translation type="vanished">柯尔克孜语  (中国)</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="202"/>
++        <source>Traditional Chinese  (CN)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="203"/>
++        <source>Mongolian  (CN)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="201"/>
++        <source>Kazaqa  (KZ)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="205"/>
++        <source>Kirghiz  (KG)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="206"/>
++        <source>German  (DE)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="207"/>
++        <source>Spanish  (ES)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="208"/>
++        <source>French  (FR)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="215"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="302"/>
++        <source>Solar calendar</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="216"/>
++        <source>Lunar</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="221"/>
++        <source>Monday</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="222"/>
++        <source>Sunday</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="368"/>
++        <source>MMMM dd, yyyy</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="371"/>
++        <source>MMMM d, yy</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="645"/>
++        <source>Tibetan</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="612"/>
++        <source>Kazaqa</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="649"/>
++        <source>Uygur</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="651"/>
++        <source>Kirghiz</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="653"/>
++        <source>Traditional Chinese</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="655"/>
++        <source>Mongolian</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="657"/>
++        <source>German</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="659"/>
++        <source>Spanish</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="661"/>
++        <source>French</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="674"/>
++        <source>Modify the current region need to logout to take effect, whether to logout?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="675"/>
++        <source>Logout later</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="676"/>
++        <source>Logout now</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="678"/>
++        <source>Modify the first language need to reboot to take effect, whether to reboot?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="679"/>
++        <source>Reboot later</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="680"/>
++        <source>Reboot now</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>calendar</source>
++        <translation type="vanished">日历</translation>
++    </message>
++    <message>
++        <source>first day of week</source>
++        <translation type="vanished">一周的第一天</translation>
++    </message>
++    <message>
++        <source>date</source>
++        <translation type="vanished">日期</translation>
++    </message>
++    <message>
++        <source>2019/12/17</source>
++        <translation type="vanished">2019/12/17</translation>
++    </message>
++    <message>
++        <source>time</source>
++        <translation type="vanished">时间</translation>
++    </message>
++    <message>
++        <source>9:52</source>
++        <translation type="vanished">9:52</translation>
++    </message>
++    <message>
++        <source>change format of data</source>
++        <translation type="vanished">更改数据格式</translation>
++    </message>
++    <message>
++        <source>first language</source>
++        <translation type="vanished">首选语言</translation>
++    </message>
++    <message>
++        <source>system language</source>
++        <translation type="vanished">显示语言</translation>
++    </message>
++    <message>
++        <source>CN</source>
++        <translation type="vanished">中国</translation>
++    </message>
++    <message>
++        <source>Need to cancel to take effect</source>
++        <translation type="vanished">需要注销生效</translation>
++    </message>
++    <message>
++        <source>Need to log off to take effect</source>
++        <translation type="vanished">需要注销生效</translation>
++    </message>
++    <message>
++        <source>Message</source>
++        <translation type="vanished">信息</translation>
++    </message>
++    <message>
++        <source>country</source>
++        <translation type="vanished">显示日期,时间,货币格式的区域</translation>
++    </message>
++    <message>
++        <source>regional format</source>
++        <translation type="vanished">区域格式数据</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="643"/>
++        <source>English</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Chinese</source>
++        <translation type="vanished">简体中文</translation>
++    </message>
++    <message>
++        <source>add main language</source>
++        <translation type="vanished">添加首语言</translation>
++    </message>
++    <message>
++        <source>solar calendar</source>
++        <translation type="vanished">公历</translation>
++    </message>
++    <message>
++        <source>monday</source>
++        <translation type="vanished">星期一</translation>
++    </message>
++    <message>
++        <source>English (US)</source>
++        <translation type="vanished">英文 (美国)</translation>
++    </message>
++    <message>
++        <source>Simplified Chinese (CN)</source>
++        <translation type="vanished">简体中文 (中国)</translation>
++    </message>
++    <message>
++        <source>Tibetan (CN)</source>
++        <translation type="vanished">藏文 (中国)</translation>
++    </message>
++    <message>
++        <source>sunday</source>
++        <translation type="vanished">星期日</translation>
++    </message>
++    <message>
++        <source>change data format</source>
++        <translation type="vanished">更改数据格式</translation>
++    </message>
++</context>
++<context>
++    <name>AreaCodeLineEdit</name>
++    <message>
++        <source>Sign up by Phone</source>
++        <translation type="vanished">请输入手机号码</translation>
++    </message>
++</context>
++<context>
++    <name>AreaUi</name>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="38"/>
++        <source>Regional Format</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Regional Format</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="40"/>
++        <source>Calendar</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Calendar</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="42"/>
++        <source>First Day Of Week</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="46"/>
++        <source>Long Format Date</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="45"/>
++        <source>Short Foramt Date</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Date</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="48"/>
++        <source>Date</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="52"/>
++        <source>Time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="65"/>
++        <source>Language Format</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Language Format</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="76"/>
++        <source>Language Format Example</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Language Format Example</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="105"/>
++        <source>System Language</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/System Language</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>Audio</name>
++    <message>
++        <source>Audio</source>
++        <translation type="vanished">声音</translation>
++    </message>
++</context>
++<context>
++    <name>AutoBoot</name>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="96"/>
++        <source>Auto Start</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="293"/>
++        <source>Desktop files(*.desktop)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
++        <source>select autoboot desktop</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
++        <source>Select</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="303"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Add</source>
++        <translation type="vanished">添加</translation>
++        <extra-contents_path>/Autoboot/Add</extra-contents_path>
++    </message>
++    <message>
++        <source>Autoboot Settings</source>
++        <translation type="vanished">开机启动设置</translation>
++        <extra-contents_path>/autoboot/Autoboot Settings</extra-contents_path>
++    </message>
++    <message>
++        <source>Add autoboot app </source>
++        <translation type="vanished">添加自启动程序 </translation>
++    </message>
++    <message>
++        <source>autoboot</source>
++        <translation type="vanished">开机启动</translation>
++    </message>
++    <message>
++        <source>Autoboot</source>
++        <translation type="vanished">开机启动</translation>
++    </message>
++    <message>
++        <source>Auto Boot</source>
++        <translation type="vanished">开机启动</translation>
++    </message>
++    <message>
++        <source>Name</source>
++        <translation type="vanished">程序名称</translation>
++    </message>
++    <message>
++        <source>Status</source>
++        <translation type="vanished">当前状态</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="231"/>
++        <source>Delete</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AutoBootUi</name>
++    <message>
++        <source>Autoboot Settings</source>
++        <translation type="vanished">开机启动设置</translation>
++        <extra-contents_path>/Autoboot/Autoboot Settings</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="17"/>
++        <source>Autostart Settings</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Autostart/Autostart Settings</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="27"/>
++        <source>Add</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Autostart/Add</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>Backup</name>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.ui" line="53"/>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="115"/>
++        <source>Backup</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Back up your files to other drives, and when the original files are lost, damaged, or deleted, you can restore them to ensure
++the integrity of your system.</source>
++        <translation type="vanished">将您的文件备份到其他驱动器,当源文件丢失、受损或被删除时可以还原它们,保证系统的完整性。</translation>
++    </message>
++    <message>
++        <source>Back up your files to other drives, and when the original files are lost, damaged, or deleted,
++you can restore them to ensure the integrity of your system.</source>
++        <translation type="vanished">将您的文件备份到其他驱动器,当源文件丢失、受损、删除时还原它们,保证系统的完整性。</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.ui" line="69"/>
++        <source>Back up your files to other drives, and when the original files are lost, damaged, or deleted, 
++you can restore them to ensure the integrity of your system.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.ui" line="113"/>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="162"/>
++        <source>Begin backup</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Backup/Begin backup</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.ui" line="157"/>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="139"/>
++        <source>Restore</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.ui" line="173"/>
++        <source>View a list of backed-upfiles to backed up files to the system</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>View a list of backed-upfiles to restore backed up files to the system</source>
++        <translation type="vanished">查看备份列表,将已备份文件还原至系统</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.ui" line="213"/>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="164"/>
++        <source>Begin restore</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Backup/Begin restore</extra-contents_path>
++    </message>
++    <message>
++        <source>backup</source>
++        <translation type="vanished">备份</translation>
++    </message>
++    <message>
++        <source>All data stored on the computer will be permanently erased,and the system will revert to
++                                its original factory state when this operation is completed.</source>
++        <translation type="vanished">将永久抹掉存储在计算机的所有数据,且无法撤销此操作。抹掉完成后系统将恢复至最初始出厂状态</translation>
++    </message>
++    <message>
++        <source>All data stored on the computer will be permanently erased,and the system will revert to 
++                                its original factory state when this operation is completed.</source>
++        <translation type="vanished">将永久清空储存在计算机的所有数据,且无法撤销此操作,
++              清空完成后系统将恢复至最初始出厂状态。</translation>
++    </message>
++    <message>
++        <source>Clear and restore</source>
++        <translation type="vanished">抹掉所有内容和设置</translation>
++        <extra-contents_path>/Backup/Clear and restore</extra-contents_path>
++    </message>
++    <message>
++        <source>System Recovery</source>
++        <translation type="vanished">系统还原</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="44"/>
++        <source>Backup Restore</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="117"/>
++        <source>Back up your files to other drives and restore them when the source files are lost, damaged, or deleted to ensure the integrity of the system.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="141"/>
++        <source>View the backup list and restore the backup file to the system</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="160"/>
++        <source>Backup and Restore</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>BindPhoneDialog</name>
++    <message>
++        <source>Your account here</source>
++        <translation type="obsolete">请输入用户名</translation>
++    </message>
++    <message>
++        <source>Your password here</source>
++        <translation type="obsolete">输入密码</translation>
++    </message>
++    <message>
++        <source>Your code here</source>
++        <translation type="vanished">输入验证码</translation>
++    </message>
++    <message>
++        <source>Get</source>
++        <translation type="vanished">获取验证码</translation>
++    </message>
++    <message>
++        <source>Get phone code</source>
++        <translation type="vanished">获取绑定手机验证码</translation>
++    </message>
++</context>
++<context>
++    <name>BiometricEnrollDialog</name>
++    <message>
++        <source>Biometrics </source>
++        <translation type="vanished">生物识别</translation>
++    </message>
++    <message>
++        <source>Continue to enroll </source>
++        <translation type="vanished">继续录入</translation>
++    </message>
++    <message>
++        <source>Finish</source>
++        <translation type="vanished">完成</translation>
++    </message>
++    <message>
++        <source>FingerPrint</source>
++        <translation type="vanished">指纹</translation>
++    </message>
++    <message>
++        <source>Fingervein</source>
++        <translation type="vanished">指静脉</translation>
++    </message>
++    <message>
++        <source>Iris</source>
++        <translation type="vanished">虹膜</translation>
++    </message>
++    <message>
++        <source>Face</source>
++        <translation type="vanished">人脸</translation>
++    </message>
++    <message>
++        <source>VoicePrint</source>
++        <translation type="vanished">声纹</translation>
++    </message>
++    <message>
++        <source>Enroll</source>
++        <translation type="vanished">录入</translation>
++    </message>
++    <message>
++        <source>Verify</source>
++        <translation type="vanished">验证</translation>
++    </message>
++    <message>
++        <source>Search</source>
++        <translation type="vanished">搜索</translation>
++    </message>
++    <message>
++        <source>Permission is required.
++Please authenticate yourself to continue</source>
++        <translation type="vanished">需要授权,请先进行认证已继续操作</translation>
++    </message>
++    <message>
++        <source>Enroll successfully</source>
++        <translation type="vanished">录入成功</translation>
++    </message>
++    <message>
++        <source>Verify successfully</source>
++        <translation type="vanished">验证成功</translation>
++    </message>
++    <message>
++        <source>Not Match</source>
++        <translation type="vanished">不匹配</translation>
++    </message>
++    <message>
++        <source>D-Bus calling error</source>
++        <translation type="vanished">D-Bus获取错误</translation>
++    </message>
++    <message>
++        <source>Device is busy</source>
++        <translation type="vanished">设备忙</translation>
++    </message>
++    <message>
++        <source>No such device</source>
++        <translation type="vanished">设备不存在</translation>
++    </message>
++    <message>
++        <source>Permission denied</source>
++        <translation type="vanished">权限不够</translation>
++    </message>
++</context>
++<context>
++    <name>BiometricMoreInfoDialog</name>
++    <message>
++        <source>Biometrics </source>
++        <translation type="vanished">生物识别</translation>
++    </message>
++    <message>
++        <source>Default device </source>
++        <translation type="vanished">默认设备</translation>
++    </message>
++    <message>
++        <source>Verify Type:</source>
++        <translation type="vanished">验证类型:</translation>
++    </message>
++    <message>
++        <source>Bus Type:</source>
++        <translation type="vanished">总线类型:</translation>
++    </message>
++    <message>
++        <source>Device Status:</source>
++        <translation type="vanished">设备状态:</translation>
++    </message>
++    <message>
++        <source>Storage Type:</source>
++        <translation type="vanished">存储类型:</translation>
++    </message>
++    <message>
++        <source>Identification Type:</source>
++        <translation type="vanished">验证类型:</translation>
++    </message>
++    <message>
++        <source>Connected</source>
++        <translation type="vanished">已连接</translation>
++    </message>
++    <message>
++        <source>Unconnected</source>
++        <translation type="vanished">未连接</translation>
++    </message>
++    <message>
++        <source>FingerPrint</source>
++        <translation type="vanished">指纹</translation>
++    </message>
++    <message>
++        <source>Fingervein</source>
++        <translation type="vanished">指静脉</translation>
++    </message>
++    <message>
++        <source>Iris</source>
++        <translation type="vanished">虹膜</translation>
++    </message>
++    <message>
++        <source>Face</source>
++        <translation type="vanished">人脸</translation>
++    </message>
++    <message>
++        <source>VoicePrint</source>
++        <translation type="vanished">声纹</translation>
++    </message>
++    <message>
++        <source>Hardware Verification</source>
++        <translation type="vanished">硬件验证</translation>
++    </message>
++    <message>
++        <source>Software Verification</source>
++        <translation type="vanished">软件验证</translation>
++    </message>
++    <message>
++        <source>Mix Verification</source>
++        <translation type="vanished">混合验证</translation>
++    </message>
++    <message>
++        <source>Other Verification</source>
++        <translation type="vanished">其他验证</translation>
++    </message>
++    <message>
++        <source>Device Storage</source>
++        <translation type="vanished">设备存储</translation>
++    </message>
++    <message>
++        <source>OS Storage</source>
++        <translation type="vanished">系统存储</translation>
++    </message>
++    <message>
++        <source>Mix Storage</source>
++        <translation type="vanished">混合存储</translation>
++    </message>
++    <message>
++        <source>Serial</source>
++        <translation type="vanished">串口</translation>
++    </message>
++    <message>
++        <source>USB</source>
++        <translation type="vanished">USB</translation>
++    </message>
++    <message>
++        <source>PCIE</source>
++        <translation type="vanished">PCIE</translation>
++    </message>
++    <message>
++        <source>Any</source>
++        <translation type="vanished">任意类型</translation>
++    </message>
++    <message>
++        <source>Other</source>
++        <translation type="vanished">其他</translation>
++    </message>
++    <message>
++        <source>Hardware Identification</source>
++        <translation type="vanished">硬件识别</translation>
++    </message>
++    <message>
++        <source>Software Identification</source>
++        <translation type="vanished">软件识别</translation>
++    </message>
++    <message>
++        <source>Mix Identification</source>
++        <translation type="vanished">混合识别</translation>
++    </message>
++    <message>
++        <source>Other Identification</source>
++        <translation type="vanished">其他识别</translation>
++    </message>
++</context>
++<context>
++    <name>Biometrics</name>
++    <message>
++        <source>Biometrics</source>
++        <translation type="vanished">生物特征与密码</translation>
++    </message>
++</context>
++<context>
++    <name>BiometricsWidget</name>
++    <message>
++        <source>Biometric password</source>
++        <translation type="vanished">生物特征</translation>
++    </message>
++    <message>
++        <source>Account password</source>
++        <translation type="vanished">账户密码</translation>
++    </message>
++    <message>
++        <source>Change password</source>
++        <translation type="vanished">修改密码</translation>
++    </message>
++    <message>
++        <source>Enable biometrics </source>
++        <translation type="vanished">生物特征</translation>
++    </message>
++    <message>
++        <source>Device Type</source>
++        <translation type="vanished">设备类型</translation>
++    </message>
++    <message>
++        <source>Device Name</source>
++        <translation type="vanished">设备名</translation>
++    </message>
++    <message>
++        <source>Add biometric feature</source>
++        <translation type="vanished">添加生物密码</translation>
++    </message>
++    <message>
++        <source>Standard</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>Admin</source>
++        <translation type="vanished">管理员</translation>
++    </message>
++    <message>
++        <source>root</source>
++        <translation type="vanished">Root</translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++</context>
++<context>
++    <name>BlueToothMain</name>
++    <message>
++        <source>Turn off Bluetooth</source>
++        <translation type="vanished">关闭蓝牙</translation>
++    </message>
++    <message>
++        <source>Turn on Bluetooth</source>
++        <translation type="vanished">开启蓝牙</translation>
++    </message>
++    <message>
++        <source>Bluetooth</source>
++        <translation type="vanished">蓝牙</translation>
++    </message>
++    <message>
++        <source>Turn on :</source>
++        <translation type="vanished">开启:</translation>
++    </message>
++    <message>
++        <source>Bluetooth adapter</source>
++        <translation type="vanished">蓝牙适配器</translation>
++    </message>
++    <message>
++        <source>Show icon on taskbar</source>
++        <translation type="vanished">在任务栏显示蓝牙图标</translation>
++    </message>
++    <message>
++        <source>Discoverable by nearby Bluetooth devices</source>
++        <translation type="vanished">可被附近的蓝牙设备发现</translation>
++    </message>
++    <message>
++        <source>Audio</source>
++        <translation type="obsolete">声音</translation>
++    </message>
++    <message>
++        <source>Other</source>
++        <translation type="obsolete">其他</translation>
++    </message>
++    <message>
++        <source>Bluetooth adapter is not detected!</source>
++        <translation type="vanished">未检测到蓝牙适配器!</translation>
++    </message>
++    <message>
++        <source>Bluetooth adapter is abnormal !</source>
++        <translation type="vanished">蓝牙适配器异常!</translation>
++    </message>
++    <message>
++        <source>You can refer to the rfkill command for details.</source>
++        <translation type="vanished">可查阅rfkill命令了解详情</translation>
++    </message>
++    <message>
++        <source>Allow Bluetooth devices to be discoverable</source>
++        <translation type="vanished">允许蓝牙设备可以被发现</translation>
++    </message>
++    <message>
++        <source>Discoverable</source>
++        <translation type="vanished">设备可见性</translation>
++    </message>
++    <message>
++        <source>My Devices</source>
++        <translation type="vanished">我的设备</translation>
++    </message>
++    <message>
++        <source>Can now be found as </source>
++        <translation type="vanished">现在可被发现为 </translation>
++    </message>
++    <message>
++        <source>Other Devices</source>
++        <translation type="vanished">蓝牙设备</translation>
++    </message>
++    <message>
++        <source>Refresh</source>
++        <translation type="vanished">刷新</translation>
++    </message>
++</context>
++<context>
++    <name>BlueToothMainWindow</name>
++    <message>
++        <source>Bluetooth adapter is abnormal !</source>
++        <translation type="obsolete">蓝牙适配器异常!</translation>
++    </message>
++    <message>
++        <source>Bluetooth</source>
++        <translation type="obsolete">蓝牙</translation>
++    </message>
++    <message>
++        <source>Turn on :</source>
++        <translation type="obsolete">开启:</translation>
++    </message>
++    <message>
++        <source>Show icon on taskbar</source>
++        <translation type="obsolete">在任务栏显示蓝牙图标</translation>
++    </message>
++    <message>
++        <source>Discoverable by nearby Bluetooth devices</source>
++        <translation type="obsolete">可被附近的蓝牙设备发现</translation>
++    </message>
++    <message>
++        <source>My Devices</source>
++        <translation type="obsolete">我的设备</translation>
++    </message>
++    <message>
++        <source>Other Devices</source>
++        <translation type="obsolete">蓝牙设备</translation>
++    </message>
++</context>
++<context>
++    <name>Bluetooth</name>
++    <message>
++        <source>Bluetooth</source>
++        <translation type="vanished">蓝牙</translation>
++    </message>
++</context>
++<context>
++    <name>BluetoothNameLabel</name>
++    <message>
++        <source>Can now be found as </source>
++        <translation type="vanished">现在可被发现为 </translation>
++    </message>
++    <message>
++        <source>Double-click to change the device name</source>
++        <translation type="vanished">双击修改设备名称</translation>
++    </message>
++    <message>
++        <source>Can now be found as &quot;%1&quot;</source>
++        <translation type="vanished">现在可被发现为&quot;%1&quot;</translation>
++    </message>
++    <message>
++        <source>Tip</source>
++        <translation type="vanished">提示</translation>
++    </message>
++    <message>
++        <source>The length of the device name does not exceed %1 characters !</source>
++        <translation type="vanished">设备名称的长度不超过 %1 个字符!</translation>
++    </message>
++</context>
++<context>
++    <name>Boot</name>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/boot.cpp" line="7"/>
++        <source>Boot</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>boot</source>
++        <translation type="vanished">系统启动</translation>
++    </message>
++    <message>
++        <source>Grub verify</source>
++        <translation type="vanished">Grub 验证</translation>
++        <extra-contents_path>/Boot/Grub verify</extra-contents_path>
++    </message>
++    <message>
++        <source>Password required for Grub editing after enabling</source>
++        <translation type="vanished">启用后在Grub编辑需要密码</translation>
++    </message>
++    <message>
++        <source>Reset password</source>
++        <translation type="vanished">重置密码</translation>
++    </message>
++</context>
++<context>
++    <name>BootUi</name>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="21"/>
++        <source>boot</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="33"/>
++        <source>Grub verify</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Boot/Grub verify</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="36"/>
++        <source>Password required for Grub editing after enabling</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="38"/>
++        <source>Reset password</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>BrightnessFrame</name>
++    <message>
++        <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="36"/>
++        <source>Failed to get the brightness information of this monitor</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>CertificationDialog</name>
++    <message>
++        <source>UserCertification</source>
++        <translation type="vanished">用户认证</translation>
++    </message>
++    <message>
++        <source>User:</source>
++        <translation type="vanished">用户名:</translation>
++    </message>
++    <message>
++        <source>Passwd:</source>
++        <translation type="vanished">密码:</translation>
++    </message>
++    <message>
++        <source>Close</source>
++        <translation type="vanished">关闭</translation>
++    </message>
++    <message>
++        <source>Certification</source>
++        <translation type="vanished">认证</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeFaceDialog</name>
++    <message>
++        <source>select custom face file</source>
++        <translation type="vanished">选择自定义头像文件</translation>
++    </message>
++    <message>
++        <source>Select</source>
++        <translation type="vanished">选择</translation>
++    </message>
++    <message>
++        <source>Position: </source>
++        <translation type="vanished">位置: </translation>
++    </message>
++    <message>
++        <source>FileName: </source>
++        <translation type="vanished">文件名: </translation>
++    </message>
++    <message>
++        <source>FileType: </source>
++        <translation type="vanished">文件类型: </translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Warning</source>
++        <translation type="vanished">警告</translation>
++    </message>
++    <message>
++        <source>The avatar is larger than 1M, please choose again</source>
++        <translation type="vanished">警告,头像大于1M请重新选择</translation>
++    </message>
++    <message>
++        <source>The avatar is larger than 2M, please choose again</source>
++        <translation type="vanished">警告,头像大于2M请重新选择</translation>
++    </message>
++    <message>
++        <source>Change User Face</source>
++        <translation type="vanished">更改用户头像</translation>
++    </message>
++    <message>
++        <source>System Icon</source>
++        <translation type="vanished">系统头像</translation>
++    </message>
++    <message>
++        <source>Select face from local</source>
++        <translation type="vanished">从本地选择用户头像</translation>
++    </message>
++    <message>
++        <source>Save</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeFaceIntelDialog</name>
++    <message>
++        <source>Change User Face</source>
++        <translation type="vanished">更换用户头像</translation>
++        <extra-contents_path>/UserinfoIntel/Change User Face</extra-contents_path>
++    </message>
++    <message>
++        <source>History</source>
++        <translation type="vanished">自定义</translation>
++    </message>
++    <message>
++        <source>System</source>
++        <translation type="vanished">系统自带</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++    <message>
++        <source>select custom face file</source>
++        <translation type="vanished">选择自定义头像文件</translation>
++    </message>
++    <message>
++        <source>Select</source>
++        <translation type="vanished">选择</translation>
++    </message>
++    <message>
++        <source>Position: </source>
++        <translation type="vanished">位置: </translation>
++    </message>
++    <message>
++        <source>FileName: </source>
++        <translation type="vanished">文件名: </translation>
++    </message>
++    <message>
++        <source>FileType: </source>
++        <translation type="vanished">文件类型: </translation>
++    </message>
++    <message>
++        <source>Warning</source>
++        <translation type="vanished">警告</translation>
++    </message>
++    <message>
++        <source>The avatar is larger than 2M, please choose again</source>
++        <translation type="vanished">警告,头像大于2M请重新选择</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeFeatureName</name>
++    <message>
++        <source>Change Username</source>
++        <translation type="vanished">修改用户名</translation>
++    </message>
++    <message>
++        <source>Feature name</source>
++        <translation type="vanished">特征名称</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Save</source>
++        <translation type="vanished">保存</translation>
++    </message>
++    <message>
++        <source>Name already in use, change another one.</source>
++        <translation type="vanished">该用户名已存在,请更改。</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeGroupDialog</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">用户组</translation>
++    </message>
++    <message>
++        <source>User Group Settings</source>
++        <translation type="vanished">用户组设置</translation>
++    </message>
++    <message>
++        <source>User groups available in the system</source>
++        <translation type="vanished">系统中可用的用户组</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Add new user</source>
++        <translation type="obsolete">添加新用户</translation>
++    </message>
++    <message>
++        <source>User group</source>
++        <translation type="vanished">用户组</translation>
++    </message>
++    <message>
++        <source>Add user group</source>
++        <translation type="vanished">添加用户组</translation>
++    </message>
++    <message>
++        <source>Tips</source>
++        <translation type="vanished">提示</translation>
++    </message>
++    <message>
++        <source>Invalid Id!</source>
++        <translation type="vanished">无效组ID!</translation>
++    </message>
++    <message>
++        <source>OK</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Invalid Group Name!</source>
++        <translation type="vanished">无效组名!</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeGroupIntelDialog</name>
++    <message>
++        <source>User Group Settings</source>
++        <translation type="vanished">用户组设置</translation>
++    </message>
++    <message>
++        <source>User groups available in the system</source>
++        <translation type="vanished">系统中可用的用户组</translation>
++    </message>
++    <message>
++        <source>Add user group</source>
++        <translation type="vanished">添加用户组</translation>
++    </message>
++</context>
++<context>
++    <name>ChangePhoneIntelDialog</name>
++    <message>
++        <source>changephone</source>
++        <translation type="vanished">更换手机号</translation>
++    </message>
++    <message>
++        <source>Please input old phone num</source>
++        <translation type="vanished">请输入旧手机号</translation>
++    </message>
++    <message>
++        <source>GetVerifyCode</source>
++        <translation type="vanished">获取验证码</translation>
++    </message>
++    <message>
++        <source>submit</source>
++        <translation type="vanished">提交</translation>
++    </message>
++    <message>
++        <source>Change Phone</source>
++        <translation type="vanished">更换手机号</translation>
++    </message>
++    <message>
++        <source>Phone number</source>
++        <translation type="vanished">手机号</translation>
++    </message>
++    <message>
++        <source>SMS verification code</source>
++        <translation type="vanished">短信验证码</translation>
++    </message>
++    <message>
++        <source>Please input old phone number</source>
++        <translation type="vanished">请输入旧手机号</translation>
++    </message>
++    <message>
++        <source>Next</source>
++        <translation type="vanished">下一步</translation>
++    </message>
++    <message>
++        <source>Please enter new mobile number</source>
++        <translation type="vanished">请输入新手机号</translation>
++    </message>
++    <message>
++        <source>Submit</source>
++        <translation type="vanished">提交</translation>
++    </message>
++    <message>
++        <source>changed success</source>
++        <translation type="vanished">修改成功</translation>
++    </message>
++    <message>
++        <source>You have successfully modified your phone</source>
++        <translation type="vanished">您已成功更换手机号</translation>
++    </message>
++    <message>
++        <source>Recapture</source>
++        <translation type="vanished">重新获取</translation>
++    </message>
++    <message>
++        <source>Network connection failure, please check</source>
++        <translation type="vanished">网络连接故障,请检查</translation>
++    </message>
++    <message>
++        <source>GetCode</source>
++        <translation type="vanished">获取验证码</translation>
++    </message>
++    <message>
++        <source>Phone is lock,try again in an hour</source>
++        <translation type="vanished">手机号已被锁定,1小时之后再试</translation>
++    </message>
++    <message>
++        <source>Phone code is wrong</source>
++        <translation type="vanished">验证码错误,请重试</translation>
++    </message>
++    <message>
++        <source>Current login expired,using wechat code!</source>
++        <translation type="vanished">登录信息过期,请重新使用微信扫码登录</translation>
++    </message>
++    <message>
++        <source>Unknown error, please try again later</source>
++        <translation type="vanished">未知错误,请稍后重试</translation>
++    </message>
++    <message>
++        <source>Phone can not same</source>
++        <translation type="vanished">新旧手机号不能一致</translation>
++    </message>
++    <message>
++        <source>finished</source>
++        <translation type="vanished">完成</translation>
++    </message>
++    <message>
++        <source>Phone number already in used!</source>
++        <translation type="vanished">该号码已被注册,请更换手机号</translation>
++    </message>
++</context>
++<context>
++    <name>ChangePinIntelDialog</name>
++    <message>
++        <source>Change Password</source>
++        <translation type="vanished">修改密码</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeProjectionName</name>
++    <message>
++        <source>Name is too long, change another one.</source>
++        <translation type="vanished">名称过长,请更改</translation>
++    </message>
++    <message>
++        <source>Change Username</source>
++        <translation type="vanished">修改用户名</translation>
++    </message>
++    <message>
++        <source>Changename</source>
++        <translation type="vanished">修改名称</translation>
++    </message>
++    <message>
++        <source>ChangeProjectionname</source>
++        <translation type="vanished">设备名称</translation>
++    </message>
++    <message>
++        <source>Save</source>
++        <translation type="vanished">保存</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++</context>
++<context>
++    <name>ChangePwdDialog</name>
++    <message>
++        <source>Change Pwd</source>
++        <translation type="vanished">更改密码</translation>
++    </message>
++    <message>
++        <source>Pwd type</source>
++        <translation type="vanished">密码类型</translation>
++    </message>
++    <message>
++        <source>Cur pwd</source>
++        <translation type="vanished">当前密码</translation>
++    </message>
++    <message>
++        <source>New pwd</source>
++        <translation type="vanished">新密码</translation>
++    </message>
++    <message>
++        <source>New pwd sure</source>
++        <translation type="vanished">新密码确认</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Change pwd</source>
++        <translation type="vanished">更改密码</translation>
++    </message>
++    <message>
++        <source>Cur pwd checking!</source>
++        <translation type="vanished">当前密码检查!</translation>
++    </message>
++    <message>
++        <source>General Pwd</source>
++        <translation type="vanished">通用密码</translation>
++    </message>
++    <message>
++        <source>Current Password</source>
++        <translation type="vanished">当前密码</translation>
++    </message>
++    <message>
++        <source>New Password</source>
++        <translation type="vanished">新密码</translation>
++    </message>
++    <message>
++        <source>New Password Identify</source>
++        <translation type="vanished">新密码确认</translation>
++    </message>
++    <message>
++        <source>Authentication failed, input authtok again!</source>
++        <translation type="vanished">密码输入错误,重新输入!</translation>
++    </message>
++    <message>
++        <source>Pwd input error, re-enter!</source>
++        <translation type="vanished">密码输入错误,重新输入!</translation>
++    </message>
++    <message>
++        <source>Contains illegal characters!</source>
++        <translation type="vanished">含有非法字符!</translation>
++    </message>
++    <message>
++        <source>Same with old pwd</source>
++        <translation type="vanished">与旧密码相同</translation>
++    </message>
++    <message>
++        <source>Password length needs to more than %1 character!</source>
++        <translation type="vanished">密码长度至少大于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Password length needs to less than %1 character!</source>
++        <translation type="vanished">密码长度需要小于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Password length needs to more than 5 character!</source>
++        <translation type="vanished">密码长度需要大于5个字符!</translation>
++    </message>
++    <message>
++        <source>Inconsistency with pwd</source>
++        <translation type="vanished">与新密码不同</translation>
++    </message>
++</context>
++<context>
++    <name>ChangePwdIntelDialog</name>
++    <message>
++        <source>Change Pwd</source>
++        <translation type="vanished">更换密码</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++    <message>
++        <source>General Pwd</source>
++        <translation type="vanished">通用密码</translation>
++    </message>
++    <message>
++        <source>Old Password</source>
++        <translation type="vanished">当前密码</translation>
++    </message>
++    <message>
++        <source>New Password</source>
++        <translation type="vanished">新密码</translation>
++    </message>
++    <message>
++        <source>New Password Identify</source>
++        <translation type="vanished">新密码确认</translation>
++    </message>
++    <message>
++        <source>Please set different pwd!</source>
++        <translation type="vanished">新密码请勿与当前密码相同!</translation>
++    </message>
++    <message>
++        <source>Inconsistency with pwd</source>
++        <translation type="vanished">与新密码不同</translation>
++    </message>
++    <message>
++        <source>Old pwd is wrong!</source>
++        <translation type="vanished">当前密码错误!</translation>
++    </message>
++    <message>
++        <source>New pwd is too similar with old pwd!</source>
++        <translation type="vanished">新密码与当前密码相似度过高!</translation>
++    </message>
++    <message>
++        <source>Check old pwd failed because of unknown reason!</source>
++        <translation type="vanished">密码验证失败!(未知的原因)</translation>
++    </message>
++    <message>
++        <source>Password length needs to more than %1 character!</source>
++        <translation type="vanished">密码长度至少大于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Password length needs to less than %1 character!</source>
++        <translation type="vanished">密码长度需要小于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Password cannot be made up entirely by Numbers!</source>
++        <translation type="vanished">密码复杂度过低!</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeTypeDialog</name>
++    <message>
++        <source>Make sure that there is at least one administrator on the computer</source>
++        <translation type="vanished">请确保该计算机上至少有一个管理员用户</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot install software and change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能安装软件和更改系统配置</translation>
++    </message>
++    <message>
++        <source>Change Account Type</source>
++        <translation type="vanished">更改用户类型</translation>
++    </message>
++    <message>
++        <source>standard user</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能修改系统配置</translation>
++    </message>
++    <message>
++        <source>administrator</source>
++        <translation type="vanished">管理员用户</translation>
++    </message>
++    <message>
++        <source>Administrators can make any changes they need</source>
++        <translation type="vanished">管理员账户可以更改任何系统配置,包括安装软件和升级软件</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Change type</source>
++        <translation type="vanished">更改类型</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeTypeIntelDialog</name>
++    <message>
++        <source>Change Account Type</source>
++        <translation type="vanished">更换用户类型</translation>
++    </message>
++    <message>
++        <source>standard user</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot install software and change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能安装软件和更改系统配置</translation>
++    </message>
++    <message>
++        <source>administrator</source>
++        <translation type="vanished">管理员用户</translation>
++    </message>
++    <message>
++        <source>Administrators can make any changes they need</source>
++        <translation type="vanished">管理员账户可以更改任何系统配置,包括安装软件和升级软件</translation>
++    </message>
++    <message>
++        <source>Make sure that there is at least one administrator on the computer</source>
++        <translation type="vanished">提示:请确保在该计算机上至少有一个用户拥有管理员权限</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeUserLogo</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="139"/>
++        <source>System Logos</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Local Logo</source>
++        <translation type="vanished">本地头像</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="116"/>
++        <source>User logo</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="148"/>
++        <source>Select Local Logo</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="158"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="161"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="302"/>
++        <source>select custom face file</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="303"/>
++        <source>Select</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
++        <source>Position: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
++        <source>FileName: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
++        <source>FileType: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="322"/>
++        <source>Warning</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="323"/>
++        <source>The avatar is larger than 1M, please choose again</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>ChangeUserName</name>
++    <message>
++        <source>Change Username</source>
++        <translation type="vanished">修改用户名</translation>
++    </message>
++    <message>
++        <source>NickName</source>
++        <translation type="vanished">用户昵称</translation>
++    </message>
++    <message>
++        <source>UserName</source>
++        <translation type="vanished">用户名</translation>
++    </message>
++    <message>
++        <source>ComName</source>
++        <translation type="vanished">计算机名</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Save</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Name already in use, change another one.</source>
++        <translation type="vanished">该用户名已存在,请更改。</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeUserNickname</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="31"/>
++        <source>Set Nickname</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="53"/>
++        <source>UserName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="70"/>
++        <source>NickName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="156"/>
++        <source>NickName&apos;s length must between 1~%1 characters!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
++        <source>nickName already in use.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
++        <source>Can&apos;t contains &apos;:&apos;.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>The length must be 1~%1 characters!</source>
++        <translation type="vanished">长度必须为 1~%1 个字符</translation>
++    </message>
++    <message>
++        <source>nickName length must less than %1 letters!</source>
++        <translation type="vanished">用户昵称长度必须小于%1!</translation>
++    </message>
++    <message>
++        <source>Name already in use, change another one.</source>
++        <translation type="vanished">该用户名已存在,请更改。</translation>
++    </message>
++    <message>
++        <source>ComputerName</source>
++        <translation type="vanished">计算机名</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="113"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="116"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>ChangeUserPwd</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="98"/>
++        <source>Change password</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="103"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="541"/>
++        <source>Current Pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="116"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="158"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="191"/>
++        <source>Required</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="147"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="542"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="550"/>
++        <source>New Pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="187"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="543"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="551"/>
++        <source>Sure Pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="249"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="253"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="375"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="441"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="318"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="614"/>
++        <source>Inconsistency with pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="371"/>
++        <source>Same with old pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="424"/>
++        <source>Pwd Changed Succes</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="431"/>
++        <source>Authentication failed, input authtok again!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="573"/>
++        <source>Contains illegal characters!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="685"/>
++        <source>current pwd cannot be empty!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="690"/>
++        <source>new pwd cannot be empty!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="695"/>
++        <source>sure pwd cannot be empty!</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>ChangeUserType</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="24"/>
++        <source>UserType</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="71"/>
++        <source>administrator</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="73"/>
++        <source>standard user</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="61"/>
++        <source>Select account type (Ensure have admin on system):</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="75"/>
++        <source>change system settings, install and upgrade software.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="77"/>
++        <source>use most software, cannot change system settings.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="130"/>
++        <source>Note: Effective After Logout!!!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="141"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="144"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>ChangeVaildDialog</name>
++    <message>
++        <source>Password Validity Setting</source>
++        <translation type="vanished">密码有效期设置</translation>
++    </message>
++    <message>
++        <source>Current passwd validity:</source>
++        <translation type="vanished">当前密码有效期至:</translation>
++    </message>
++    <message>
++        <source>Adjust date to:</source>
++        <translation type="vanished">调整有效期至:</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeValidDialog</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">更改时间</translation>
++    </message>
++    <message>
++        <source>Password Validity Setting</source>
++        <translation type="vanished">密码有效期设置</translation>
++    </message>
++    <message>
++        <source>Current passwd validity:</source>
++        <translation type="vanished">当前密码有效期至:</translation>
++    </message>
++    <message>
++        <source>Adjust date to:</source>
++        <translation type="vanished">调整有效期至:</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Change valid</source>
++        <translation type="vanished">密码时效</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeValidIntelDialog</name>
++    <message>
++        <source>Password Validity Setting</source>
++        <translation type="vanished">密码有效期设置</translation>
++    </message>
++    <message>
++        <source>Current passwd validity:</source>
++        <translation type="vanished">当前密码有效期至:</translation>
++    </message>
++    <message>
++        <source>Adjust date to:</source>
++        <translation type="vanished">调整有效期至:</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>ChangtimeDialog</name>
++    <message>
++        <source>day</source>
++        <translation type="vanished">日期</translation>
++    </message>
++    <message>
++        <source>time</source>
++        <translation type="vanished">时间</translation>
++    </message>
++    <message>
++        <source>year</source>
++        <translation type="vanished">年份</translation>
++    </message>
++    <message>
++        <source>month</source>
++        <translation type="vanished">月份</translation>
++    </message>
++</context>
++<context>
++    <name>ColorDialog</name>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="32"/>
++        <source>Dialog</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="86"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="89"/>
++        <source>Choose a custom color</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="254"/>
++        <source>HEX</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="290"/>
++        <source>RGB</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="457"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="476"/>
++        <source>OK</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="94"/>
++        <source>Custom color</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="182"/>
++        <source>Close</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>CreateGroupDialog</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">添加用户组</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.ui" line="26"/>
++        <source>Add New Group</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="54"/>
++        <source>Name</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="78"/>
++        <source>Id</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="92"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="202"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="216"/>
++        <source>GroupName&apos;s length must be between 1 and %1 characters!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Members</source>
++        <translation type="vanished">组成员</translation>
++    </message>
++    <message>
++        <source>Group Name</source>
++        <translation type="vanished">组名</translation>
++    </message>
++    <message>
++        <source>Group Id</source>
++        <translation type="vanished">组ID</translation>
++    </message>
++    <message>
++        <source>Group Members</source>
++        <translation type="vanished">组成员</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="89"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="50"/>
++        <source>Add user group</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>CreateGroupIntelDialog</name>
++    <message>
++        <source>Add New Group</source>
++        <translation type="vanished">添加用户组</translation>
++    </message>
++    <message>
++        <source>Group Name</source>
++        <translation type="vanished">组名</translation>
++    </message>
++    <message>
++        <source>Group Id</source>
++        <translation type="vanished">组ID</translation>
++    </message>
++    <message>
++        <source>Group Members</source>
++        <translation type="vanished">组成员</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>CreateUserDialog</name>
++    <message>
++        <source>UserName</source>
++        <translation type="vanished">用户名</translation>
++    </message>
++    <message>
++        <source>ComName</source>
++        <translation type="vanished">计算机名</translation>
++    </message>
++    <message>
++        <source>Password</source>
++        <translation type="vanished">密码</translation>
++    </message>
++    <message>
++        <source>Account Type</source>
++        <translation type="vanished">用户类型</translation>
++    </message>
++    <message>
++        <source>Add New Account</source>
++        <translation type="vanished">添加新用户</translation>
++    </message>
++    <message>
++        <source>PwdType</source>
++        <translation type="vanished">密码类型</translation>
++    </message>
++    <message>
++        <source>PasswordSure</source>
++        <translation type="vanished">确认密码</translation>
++    </message>
++    <message>
++        <source>standard user</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能修改系统配置</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot install the software and
++change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能安装软件和更改系统配置</translation>
++    </message>
++    <message>
++        <source>administrator</source>
++        <translation type="vanished">管理员用户</translation>
++    </message>
++    <message>
++        <source>Administrators can make any changes they need</source>
++        <translation type="vanished">管理员账户可以更改任何系统配置,包括安装软件和升级软件</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Password Identify</source>
++        <translation type="vanished">密码确认</translation>
++    </message>
++    <message>
++        <source>General Password</source>
++        <translation type="vanished">通用密码</translation>
++    </message>
++    <message>
++        <source>Inconsistency with pwd</source>
++        <translation type="vanished">和密码不一致</translation>
++    </message>
++    <message>
++        <source>Must be begin with lower letters!</source>
++        <translation type="vanished">用户名必须以小写字母开始!</translation>
++    </message>
++    <message>
++        <source>Can not contain capital letters!</source>
++        <translation type="vanished">用户名不能包含大写字母!</translation>
++    </message>
++    <message>
++        <source>Name already in use, change another one.</source>
++        <translation type="vanished">该用户名已存在,请更改。</translation>
++    </message>
++    <message>
++        <source>Name corresponds to group already exists.</source>
++        <translation type="vanished">用户名对应组已存在,请更改。</translation>
++    </message>
++    <message>
++        <source>Name length must less than %1 letters!</source>
++        <translation type="vanished">用户名长度必须小于%1!</translation>
++    </message>
++    <message>
++        <source>Can only contain letters,digits,underline!</source>
++        <translation type="vanished">用户名仅能包含字母,数字及下划线</translation>
++    </message>
++    <message>
++        <source>Username&apos;s folder exists, change another one</source>
++        <translation type="vanished">用户目录已存在,请更改</translation>
++    </message>
++    <message>
++        <source>Password length needs to more than %1 character!</source>
++        <translation type="vanished">密码长度至少大于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Password length needs to less than %1 character!</source>
++        <translation type="vanished">密码长度需要小于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Add new user</source>
++        <translation type="vanished">添加新用户</translation>
++    </message>
++    <message>
++        <source>Password cannot be made up entirely by Numbers!</source>
++        <translation type="obsolete">密码复杂度过低!</translation>
++    </message>
++    <message>
++        <source>Contains illegal characters!</source>
++        <translation type="vanished">含有非法字符!</translation>
++    </message>
++    <message>
++        <source>The user name cannot be empty</source>
++        <translation type="vanished">用户名不能为空</translation>
++    </message>
++    <message>
++        <source>The first character must be lowercase letters!</source>
++        <translation type="vanished">首字符必须为小写字符!</translation>
++    </message>
++    <message>
++        <source>User name can not contain capital letters!</source>
++        <translation type="vanished">用户名不能包含大写字符!</translation>
++    </message>
++    <message>
++        <source>The user name is already in use, please use a different one.</source>
++        <translation type="vanished">用户名已存在,请换用其他用户名。</translation>
++    </message>
++    <message>
++        <source>The name corresponds to the group already exists.</source>
++        <translation type="vanished">用户名对应组已存在,请更换用户名.</translation>
++    </message>
++    <message>
++        <source>User name length need to less than %1 letters!</source>
++        <translation type="vanished">用户名长度需要小于%1个字符!</translation>
++    </message>
++    <message>
++        <source>The user name can only be composed of letters, numbers and underline!</source>
++        <translation type="vanished">用户名只能由字母、数字以及下划线组成!</translation>
++    </message>
++    <message>
++        <source>The username is configured, please change the username</source>
++        <translation type="vanished">用户配置已存在,请更换用户名</translation>
++    </message>
++</context>
++<context>
++    <name>CreateUserIntelDialog</name>
++    <message>
++        <source>Add New Account</source>
++        <translation type="vanished">添加新用户</translation>
++    </message>
++    <message>
++        <source>Account Type</source>
++        <translation type="vanished">用户类型</translation>
++    </message>
++    <message>
++        <source>standard user</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot install the software and
++change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能安装软件和更改系统配置</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot install the software and 
++change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能安装软件和更改系统配置</translation>
++    </message>
++    <message>
++        <source>administrator</source>
++        <translation type="vanished">管理员用户</translation>
++    </message>
++    <message>
++        <source>Administrators can make any changes they need</source>
++        <translation type="vanished">管理员账户可以更改任何系统配置,包括安装软件和升级软件</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>UserName</source>
++        <translation type="vanished">账户名称</translation>
++    </message>
++    <message>
++        <source>Password</source>
++        <translation type="vanished">输入密码</translation>
++    </message>
++    <message>
++        <source>Password Identify</source>
++        <translation type="vanished">确认密码</translation>
++    </message>
++    <message>
++        <source>Inconsistency with pwd</source>
++        <translation type="vanished">和密码不一致</translation>
++    </message>
++    <message>
++        <source>Password length needs to more than %1 character!</source>
++        <translation type="vanished">密码长度至少大于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Password length needs to less than %1 character!</source>
++        <translation type="vanished">密码长度需要小于%1个字符!</translation>
++    </message>
++    <message>
++        <source>The user name cannot be empty</source>
++        <translation type="vanished">用户名不能为空</translation>
++    </message>
++    <message>
++        <source>The first character must be lowercase letters!</source>
++        <translation type="vanished">首字符必须为小写字符!</translation>
++    </message>
++    <message>
++        <source>User name can not contain capital letters!</source>
++        <translation type="vanished">用户名不能包含大写字符!</translation>
++    </message>
++    <message>
++        <source>The user name is already in use, please use a different one.</source>
++        <translation type="vanished">用户名已存在,请换用其他用户名。</translation>
++    </message>
++    <message>
++        <source>User name length need to less than %1 letters!</source>
++        <translation type="vanished">用户名长度需要小于%1个字符!</translation>
++    </message>
++    <message>
++        <source>The user name can only be composed of letters, numbers and underline!</source>
++        <translation type="vanished">用户名只能由字母、数字以及下划线组成!</translation>
++    </message>
++    <message>
++        <source>The username is configured, please change the username</source>
++        <translation type="vanished">用户配置已存在,请更换用户名</translation>
++    </message>
++</context>
++<context>
++    <name>CreateUserNew</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="49"/>
++        <source>CreateUserNew</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="55"/>
++        <source>UserName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="65"/>
++        <source>NickName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="71"/>
++        <source>HostName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="80"/>
++        <source>Pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="88"/>
++        <source>SurePwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="96"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="99"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="102"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="105"/>
++        <source>Required</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="109"/>
++        <source>verification</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="182"/>
++        <source>Select Type</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="191"/>
++        <source>Administrator</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="194"/>
++        <source>Users can make any changes they need</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="196"/>
++        <source>Standard User</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="199"/>
++        <source>Users cannot change system settings</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="276"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="279"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="355"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="581"/>
++        <source>Inconsistency with pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="494"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="647"/>
++        <source>NickName&apos;s length must between 1~%1 characters!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>The nick name cannot be empty</source>
++        <translation type="vanished">用户昵称不能为空</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
++        <source>nickName already in use.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>nickName length must less than %1 letters!</source>
++        <translation type="vanished">用户昵称长度必须小于%1!</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="642"/>
++        <source>Username&apos;s length must be between 1 and %1 characters!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="652"/>
++        <source>new pwd cannot be empty!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="657"/>
++        <source>sure pwd cannot be empty!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Name already in use.</source>
++        <translation type="vanished">该用户名已存在。</translation>
++    </message>
++    <message>
++        <source>Nickname cannot same with username</source>
++        <translation type="vanished">用户昵称和用户名不能相同</translation>
++    </message>
++    <message>
++        <source>The user name cannot be empty</source>
++        <translation type="vanished">用户名不能为空</translation>
++    </message>
++    <message>
++        <source>Must be begin with lower letters!</source>
++        <translation type="vanished">用户名必须以小写字母开始!</translation>
++    </message>
++    <message>
++        <source>Can not contain capital letters!</source>
++        <translation type="vanished">用户名不能包含大写字母!</translation>
++    </message>
++    <message>
++        <source>Name already in use, change another one.</source>
++        <translation type="vanished">该用户名已存在,请更改。</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="526"/>
++        <source>Name corresponds to group already exists.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Name length must less than %1 letters!</source>
++        <translation type="vanished">用户名长度必须小于%1!</translation>
++    </message>
++    <message>
++        <source>Can only contain letters,digits,underline!</source>
++        <translation type="vanished">用户名仅能包含字母,数字及下划线</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="522"/>
++        <source>Username&apos;s folder exists, change another one</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="551"/>
++        <source>Contains illegal characters!</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>CustomGlobalTheme</name>
++    <message>
++        <location filename="../../../plugins/personalized/theme/globaltheme/customglobaltheme.cpp" line="34"/>
++        <source>custom</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>CustomLineEdit</name>
++    <message>
++        <source>New Shortcut...</source>
++        <translation type="vanished">新快捷键...</translation>
++    </message>
++</context>
++<context>
++    <name>DataFormat</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">更改时间</translation>
++    </message>
++    <message>
++        <source>change format of data</source>
++        <translation type="vanished">更改数据格式</translation>
++    </message>
++    <message>
++        <source>calendar</source>
++        <translation type="vanished">日历</translation>
++    </message>
++    <message>
++        <source>first day</source>
++        <translation type="vanished">一周第一天</translation>
++    </message>
++    <message>
++        <source>date</source>
++        <translation type="vanished">日期</translation>
++    </message>
++    <message>
++        <source>time</source>
++        <translation type="vanished">时间</translation>
++    </message>
++    <message>
++        <source>cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++    <message>
++        <source>first day of week</source>
++        <translation type="vanished">一周的第一天</translation>
++    </message>
++    <message>
++        <source>lunar</source>
++        <translation type="vanished">农历</translation>
++    </message>
++    <message>
++        <source>solar calendar</source>
++        <translation type="vanished">公历</translation>
++    </message>
++    <message>
++        <source>monday</source>
++        <translation type="vanished">星期一</translation>
++    </message>
++    <message>
++        <source>sunday</source>
++        <translation type="vanished">星期日</translation>
++    </message>
++</context>
++<context>
++    <name>DateTime</name>
++    <message>
++        <source>DateTime</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>current date</source>
++        <translation type="vanished">当前时间</translation>
++    </message>
++    <message>
++        <source>Change timezone</source>
++        <translation type="vanished">修改时区</translation>
++        <extra-contents_path>/Date/Change time zone</extra-contents_path>
++    </message>
++    <message>
++        <source>timezone</source>
++        <translation type="vanished">时区</translation>
++    </message>
++    <message>
++        <source>Sync system time</source>
++        <translation type="vanished">同步系统时间</translation>
++    </message>
++    <message>
++        <source>Sync from network successful</source>
++        <translation type="vanished">时间同步成功</translation>
++    </message>
++    <message>
++        <source>Sync from network failed</source>
++        <translation type="vanished">时间同步失败</translation>
++    </message>
++    <message>
++        <source>Change time</source>
++        <translation type="vanished">手动更改时间</translation>
++    </message>
++    <message>
++        <source>Change time zone</source>
++        <translation type="vanished">更改时区</translation>
++    </message>
++    <message>
++        <source>Sync complete</source>
++        <translation type="vanished">同步完成</translation>
++    </message>
++    <message>
++        <source>datetime</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>Datetime</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>Dat</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="28"/>
++        <source>Date</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Current Date</source>
++        <translation type="vanished">当前时间</translation>
++        <extra-contents_path>/Date/Current Date</extra-contents_path>
++    </message>
++    <message>
++        <source>Other Timezone</source>
++        <translation type="vanished">其他时区时间</translation>
++        <extra-contents_path>/Date/Other Timezone</extra-contents_path>
++    </message>
++    <message>
++        <source>24-hour clock</source>
++        <translation type="vanished">24小时制</translation>
++        <extra-contents_path>/Date/24-hour clock</extra-contents_path>
++    </message>
++    <message>
++        <source>Sync from network</source>
++        <translation type="obsolete">同步时间</translation>
++    </message>
++    <message>
++        <source>Add time zones to display the time, up to 5 can be added</source>
++        <translation type="vanished">添加时区以显示时间,最多可以添加5个</translation>
++    </message>
++    <message>
++        <source>Add time zones to display the time,only 5 can be added</source>
++        <translation type="vanished">添加时区,最多添加5个</translation>
++    </message>
++    <message>
++        <source>Sync Server</source>
++        <translation type="vanished">同步服务器</translation>
++        <extra-contents_path>/Date/Sync Server</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="341"/>
++        <source>Add Timezone</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source>Manual Time</source>
++        <translation type="vanished">手动设置时间</translation>
++        <extra-contents_path>/Date/Manual Time</extra-contents_path>
++    </message>
++    <message>
++        <source>Sync Time</source>
++        <translation type="vanished">自动同步时间</translation>
++        <extra-contents_path>/Date/Sync Time</extra-contents_path>
++    </message>
++    <message>
++        <source>Auto Sync Time</source>
++        <translation type="vanished">自动同步时间</translation>
++        <extra-contents_path>/Date/Auto Sync Time</extra-contents_path>
++    </message>
++    <message>
++        <source>Time Server</source>
++        <translation type="vanished">服务器</translation>
++    </message>
++    <message>
++        <source>Network</source>
++        <translation type="obsolete">网络</translation>
++        <extra-contents_path>/Date/Network</extra-contents_path>
++    </message>
++    <message>
++        <source>Set Time</source>
++        <translation type="vanished">设置时间</translation>
++        <extra-contents_path>/Date/Set Time</extra-contents_path>
++    </message>
++    <message>
++        <source>Set Date Manually</source>
++        <translation type="vanished">手动设置日期</translation>
++        <extra-contents_path>/Date/Set Date Manually</extra-contents_path>
++    </message>
++    <message>
++        <source>Default</source>
++        <translation type="vanished">系统默认</translation>
++    </message>
++    <message>
++        <source>Customize</source>
++        <translation type="vanished">自定义</translation>
++    </message>
++    <message>
++        <source>Server Address</source>
++        <translation type="vanished">服务器地址</translation>
++    </message>
++    <message>
++        <source>Required</source>
++        <translation type="vanished">必需</translation>
++    </message>
++    <message>
++        <source>Save</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="201"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="343"/>
++        <source>Change Timezone</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Sync failed</source>
++        <translation type="vanished">同步失败</translation>
++    </message>
++    <message>
++        <source>AM </source>
++        <translation type="vanished">上午</translation>
++    </message>
++    <message>
++        <source>PM </source>
++        <translation type="vanished">下午</translation>
++    </message>
++    <message>
++        <source>Sync network time</source>
++        <translation type="vanished">同步网络时间</translation>
++    </message>
++    <message>
++        <source>change time</source>
++        <translation type="vanished">更改时间</translation>
++    </message>
++</context>
++<context>
++    <name>DatetimeUi</name>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="53"/>
++        <source>Sync Server</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Sync Server</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="75"/>
++        <source>Current Date</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Current Date</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="105"/>
++        <source>Timezone</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Timezone</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="111"/>
++        <source>Set Time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Set Time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
++        <source>Manual Time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Manual Time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
++        <source>Sync Time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Sync Time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="127"/>
++        <source>Set Date Manually</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Set Date Manually</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="162"/>
++        <source>Server Address</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
++        <source>Required</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="165"/>
++        <source>Save</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="169"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="313"/>
++        <source>Customize</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="197"/>
++        <source>Other Timezone</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Other Timezone</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="269"/>
++        <source>MMMM d, yy ddd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
++        <source>MMMM dd, yyyy ddd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="302"/>
++        <source>Sync failed</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="312"/>
++        <source>Default</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>DefaultApp</name>
++    <message>
++        <source>defaultapp</source>
++        <translation type="vanished">默认应用</translation>
++    </message>
++    <message>
++        <source>Defaultapp</source>
++        <translation type="vanished">默认应用</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultapp.cpp" line="47"/>
++        <source>Default App</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultapp.cpp" line="172"/>
++        <source>No program available</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultapp.cpp" line="173"/>
++        <source>Choose default app</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Reset default apps to system recommended apps</source>
++        <translation type="vanished">将默认应用重置为系统推荐应用</translation>
++    </message>
++    <message>
++        <source>Reset</source>
++        <translation type="vanished">重置</translation>
++    </message>
++    <message>
++        <source>Browser</source>
++        <translation type="vanished">浏览器</translation>
++    </message>
++    <message>
++        <source>Mail</source>
++        <translation type="vanished">电子邮件</translation>
++    </message>
++    <message>
++        <source>Image Viewer</source>
++        <translation type="vanished">图像查看器</translation>
++    </message>
++    <message>
++        <source>Audio Player</source>
++        <translation type="vanished">音频播放器</translation>
++    </message>
++    <message>
++        <source>Video Player</source>
++        <translation type="vanished">视频播放器</translation>
++    </message>
++    <message>
++        <source>Text Editor</source>
++        <translation type="vanished">文档编辑器</translation>
++    </message>
++</context>
++<context>
++    <name>DefaultAppUi</name>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="17"/>
++        <source>DefaultAppWindow</source>
++        <comment>Select Default Application</comment>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Select Default Application</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="21"/>
++        <source>Browser</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Browser</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="23"/>
++        <source>Mail</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Mail</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="25"/>
++        <source>Image Viewer</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Image Viewer</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="27"/>
++        <source>Audio Player</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Audio Player</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="29"/>
++        <source>Video Player</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Video Player</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="31"/>
++        <source>Text Editor</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Text Editor</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="34"/>
++        <source>Reset default apps to system recommended apps</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="35"/>
++        <source>Reset</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>DefaultAppWindow</name>
++    <message>
++        <source>Select Default Application</source>
++        <translation type="vanished">默认应用</translation>
++    </message>
++    <message>
++        <source>Browser</source>
++        <translation type="vanished">浏览器</translation>
++    </message>
++    <message>
++        <source>Mail</source>
++        <translation type="vanished">电子邮件</translation>
++    </message>
++    <message>
++        <source>Image Viewer</source>
++        <translation type="vanished">图像查看器</translation>
++    </message>
++    <message>
++        <source>Audio Player</source>
++        <translation type="vanished">音频播放器</translation>
++    </message>
++    <message>
++        <source>Video Player</source>
++        <translation type="vanished">视频播放器</translation>
++    </message>
++    <message>
++        <source>Text Editor</source>
++        <translation type="vanished">文档编辑器</translation>
++    </message>
++    <message>
++        <source>Reset to default</source>
++        <translation type="vanished">恢复默认设置</translation>
++    </message>
++</context>
++<context>
++    <name>DefineGroupItem</name>
++    <message>
++        <source>Edit</source>
++        <translation type="vanished">编辑</translation>
++    </message>
++    <message>
++        <source>Del</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++</context>
++<context>
++    <name>DefineGroupItemIntel</name>
++    <message>
++        <source>Edit</source>
++        <translation type="vanished">编辑</translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++</context>
++<context>
++    <name>DefineShortcutItem</name>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++</context>
++<context>
++    <name>DelGroupDialog</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">删除用户组</translation>
++    </message>
++    <message>
++        <source>Are you sure to delete this group,
++which will make some file components
++in the file system invalid!</source>
++        <translation type="vanished">确定删除此用户组? 这将使得文件系统\n中的某些文件组件ID无效!</translation>
++    </message>
++    <message>
++        <source>Are you sure to delete the group:   </source>
++        <translation type="vanished">您确定要删除该组吗:</translation>
++    </message>
++    <message>
++        <source>which will make some file components in the file system invalid!</source>
++        <translation type="vanished">这将使文件系统中的某些文件组件无效!</translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>RemoveFile</source>
++        <translation type="vanished">删除文件</translation>
++    </message>
++    <message>
++        <source>Remind</source>
++        <translation type="vanished">提醒</translation>
++    </message>
++    <message>
++        <source>Are you sure to delete &quot;%1&quot; group,
++which will make some file components
++in the file system invalid!</source>
++        <translation type="vanished">确定删除&quot;%1&quot;组,这将使得文件系统
++中的某些文件组件ID无效!</translation>
++    </message>
++    <message>
++        <source>Delete user group</source>
++        <translation type="vanished">删除用户组</translation>
++    </message>
++    <message>
++        <source>Are you sure to delete the group, which will make some file components in the file system invalid!</source>
++        <translation type="vanished">确定删除该用户组,这将使得文件系统中的某些文件组件ID无效!</translation>
++    </message>
++</context>
++<context>
++    <name>DelGroupIntelDialog</name>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>RemoveFile</source>
++        <translation type="vanished">删除文件</translation>
++    </message>
++    <message>
++        <source>Remind</source>
++        <translation type="vanished">提醒</translation>
++    </message>
++</context>
++<context>
++    <name>DelUserDialog</name>
++    <message>
++        <source>Delete the user, belonging to the user&apos;s desktop,
++documents, favorites, music, pictures and video
++folder will be deleted!</source>
++        <translation type="vanished">删除用户,用户所属的桌面、文档、收藏夹、音乐、图片和视频文件夹中的内容将全部被删除!</translation>
++    </message>
++    <message>
++        <source>keep the user&apos;s data, like desktop,documents, favorites, music, pictures and so on</source>
++        <translation type="vanished">保留用户下所属的桌面、文件、收藏夹、音乐等文件</translation>
++    </message>
++    <message>
++        <source>delete whole data belong user</source>
++        <translation type="vanished">删除该用户所有文件</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source>KeepFile</source>
++        <translation type="vanished">保留文件</translation>
++    </message>
++    <message>
++        <source>RemoveFile</source>
++        <translation type="vanished">删除文件</translation>
++    </message>
++    <message>
++        <source>Delete the user &apos;</source>
++        <translation type="vanished">是否删除用户&apos;</translation>
++    </message>
++    <message>
++        <source>&apos;and:</source>
++        <translation type="vanished">&apos;同时:</translation>
++    </message>
++</context>
++<context>
++    <name>DelUserIntelDialog</name>
++    <message>
++        <source>   Delete</source>
++        <translation type="vanished">       删除用户</translation>
++    </message>
++    <message>
++        <source>Define</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Delete the user, belonging to the user&apos;s desktop documents, favorites, music, pictures and video folder will be deleted!</source>
++        <translation type="vanished">删除用户,用户所属的桌面、文档、收藏夹、音乐、图片和视频文件夹中的内容将全部被删除!</translation>
++    </message>
++</context>
++<context>
++    <name>DeleteUserExists</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="26"/>
++        <source>Delete User</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="39"/>
++        <source>Delete user &apos;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="40"/>
++        <source>&apos;? And:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="65"/>
++        <source>Keep desktop, files, favorites, music of the user</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Keep user&apos;s home folder</source>
++        <translation type="vanished">保留用户家目录</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="98"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
++        <source>Delete whole data belong user</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Desktop</name>
++    <message>
++        <source>Icon Show On Desktop</source>
++        <translation type="vanished">显示在桌面的图标</translation>
++    </message>
++    <message>
++        <source>Computerdesktop</source>
++        <translation type="vanished">计算机</translation>
++    </message>
++    <message>
++        <source>Trashdesktop</source>
++        <translation type="vanished">垃圾箱</translation>
++    </message>
++    <message>
++        <source>Homedesktop</source>
++        <translation type="vanished">家目录</translation>
++    </message>
++    <message>
++        <source>Volumedesktop</source>
++        <translation type="vanished">挂载卷</translation>
++    </message>
++    <message>
++        <source>Networkdesktop</source>
++        <translation type="vanished">网络</translation>
++    </message>
++    <message>
++        <source>Set Start Menu</source>
++        <translation type="vanished">设置开始菜单</translation>
++    </message>
++    <message>
++        <source>Always use the start menu in full screen</source>
++        <translation type="vanished">一直使用全屏&quot;开始&quot;菜单</translation>
++    </message>
++    <message>
++        <source>Icon Lock on Menu</source>
++        <translation type="vanished">锁定在开始菜单的图标</translation>
++    </message>
++    <message>
++        <source>Computermenu</source>
++        <translation type="vanished">计算机</translation>
++    </message>
++    <message>
++        <source>Trashmenu</source>
++        <translation type="vanished">回收站</translation>
++    </message>
++    <message>
++        <source>Filesystemmenu</source>
++        <translation type="vanished">个人</translation>
++    </message>
++    <message>
++        <source>Tray icon</source>
++        <translation type="vanished">显示在托盘上的图标</translation>
++    </message>
++    <message>
++        <source>Homemenu</source>
++        <translation type="vanished">家目录</translation>
++    </message>
++    <message>
++        <source>Settingmenu</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <source>Networkmenu</source>
++        <translation type="vanished">网络</translation>
++    </message>
++    <message>
++        <source>desktop</source>
++        <translation type="vanished">桌面</translation>
++    </message>
++    <message>
++        <source>Desktop</source>
++        <translation type="vanished">桌面</translation>
++    </message>
++</context>
++<context>
++    <name>DeviceInfoItem</name>
++    <message>
++        <source>Connect</source>
++        <translation type="vanished">连接</translation>
++    </message>
++    <message>
++        <source>Disconnect</source>
++        <translation type="vanished">断开</translation>
++    </message>
++    <message>
++        <source>Connecting</source>
++        <translation type="vanished">正在连接</translation>
++    </message>
++    <message>
++        <source>Disconnecting</source>
++        <translation type="vanished">正在断开</translation>
++    </message>
++    <message>
++        <source>Connected</source>
++        <translation type="vanished">已连接</translation>
++    </message>
++    <message>
++        <source>Ununited</source>
++        <translation type="vanished">已配对</translation>
++    </message>
++    <message>
++        <source>Connect fail</source>
++        <translation type="vanished">连接失败</translation>
++    </message>
++    <message>
++        <source>Send files</source>
++        <translation type="vanished">发送文件</translation>
++    </message>
++    <message>
++        <source>Remove</source>
++        <translation type="vanished">移除</translation>
++    </message>
++    <message>
++        <source>cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Sure to remove,</source>
++        <translation type="vanished">确定移除,</translation>
++    </message>
++    <message>
++        <source>After removal, the next connection requires matching PIN code!</source>
++        <translation type="vanished">移除后,下次连接需重新配对PIN码!</translation>
++    </message>
++    <message>
++        <source>Device connected</source>
++        <translation type="vanished">设备连接</translation>
++    </message>
++    <message>
++        <source>Device not connected</source>
++        <translation type="vanished">设备未连接</translation>
++    </message>
++</context>
++<context>
++    <name>DeviceType</name>
++    <message>
++        <source>FingerPrint</source>
++        <translation type="vanished">指纹</translation>
++    </message>
++    <message>
++        <source>FingerVein</source>
++        <translation type="vanished">指静脉</translation>
++    </message>
++    <message>
++        <source>Iris</source>
++        <translation type="vanished">虹膜</translation>
++    </message>
++    <message>
++        <source>Face</source>
++        <translation type="vanished">人脸</translation>
++    </message>
++    <message>
++        <source>VoicePrint</source>
++        <translation type="vanished">声纹</translation>
++    </message>
++</context>
++<context>
++    <name>Dialog_login_reg</name>
++    <message>
++        <source>Sign in</source>
++        <translation type="vanished">登录</translation>
++    </message>
++    <message>
++        <source>Sign up</source>
++        <translation type="vanished">注册云账户</translation>
++    </message>
++    <message>
++        <source>Login in progress</source>
++        <translation type="vanished">登录中</translation>
++    </message>
++    <message>
++        <source>Error code:</source>
++        <translation type="vanished">错误代码:</translation>
++    </message>
++    <message>
++        <source>!</source>
++        <translation type="vanished">!</translation>
++    </message>
++    <message>
++        <source>Internal error occurring!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>Failed to sign up!</source>
++        <translation type="vanished">注册失败!</translation>
++    </message>
++    <message>
++        <source>Failed attempt to return value!</source>
++        <translation type="vanished">登录返回值异常!</translation>
++    </message>
++    <message>
++        <source>Check your connection!</source>
++        <translation type="vanished">登录失败或网络异常!</translation>
++    </message>
++    <message>
++        <source>Failed to get by phone!</source>
++        <translation type="vanished">手机获取验证码失败!</translation>
++    </message>
++    <message>
++        <source>Failed to get by user!</source>
++        <translation type="vanished">用户名获取验证码失败!</translation>
++    </message>
++    <message>
++        <source>Failed to reset password!</source>
++        <translation type="vanished">重置密码失败!</translation>
++    </message>
++    <message>
++        <source>Phone binding falied!</source>
++        <translation type="vanished">手机绑定失败!</translation>
++    </message>
++    <message>
++        <source>Please check your information!</source>
++        <translation type="vanished">缺少必要信息!</translation>
++    </message>
++    <message>
++        <source>Please check your account!</source>
++        <translation type="vanished">账户或密码错误!</translation>
++    </message>
++    <message>
++        <source>Failed due to server error!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>User existing!</source>
++        <translation type="vanished">用户名已存在!</translation>
++    </message>
++    <message>
++        <source>Phone number already in used!</source>
++        <translation type="vanished">手机号码已被使用!</translation>
++    </message>
++    <message>
++        <source>Please check your format!</source>
++        <translation type="vanished">手机号码格式错误!</translation>
++    </message>
++    <message>
++        <source>Your are reach the limit!</source>
++        <translation type="vanished">该手机当日接收短信次数达到上限!</translation>
++    </message>
++    <message>
++        <source>Please check your phone number!</source>
++        <translation type="vanished">手机号码其他错误!</translation>
++    </message>
++    <message>
++        <source>Please check your code!</source>
++        <translation type="vanished">手机验证码错误!</translation>
++    </message>
++    <message>
++        <source>Account doesn&apos;t exist!</source>
++        <translation type="vanished">用户名不存在!</translation>
++    </message>
++    <message>
++        <source>User has bound the phone!</source>
++        <translation type="vanished">用户已经绑定手机号!</translation>
++    </message>
++    <message>
++        <source>Sending code error occurring!</source>
++        <translation type="vanished">发送验证码异常!</translation>
++    </message>
++    <message>
++        <source>Your code is wrong!</source>
++        <translation type="vanished">验证码错误!</translation>
++    </message>
++    <message>
++        <source>Binding Phone</source>
++        <translation type="vanished">绑定手机</translation>
++    </message>
++    <message>
++        <source>Bind now</source>
++        <translation type="vanished">绑定</translation>
++    </message>
++    <message>
++        <source>Resend ( %1 )</source>
++        <translation type="vanished">重新发送(%1)</translation>
++    </message>
++    <message>
++        <source>Get phone code</source>
++        <translation type="vanished">获取绑定手机验证码</translation>
++    </message>
++    <message>
++        <source>Send</source>
++        <translation type="vanished">发送验证码</translation>
++    </message>
++    <message>
++        <source>At least 6 bit, include letters and digt</source>
++        <translation type="obsolete">至少六位,包含大小写字母、数字</translation>
++    </message>
++    <message>
++        <source>Please check your password!</source>
++        <translation type="vanished">两次密码设置不一致!</translation>
++    </message>
++    <message>
++        <source>Sign in Cloud</source>
++        <translation type="vanished">登录云账户</translation>
++    </message>
++    <message>
++        <source>Forget</source>
++        <translation type="vanished">忘记密码</translation>
++    </message>
++    <message>
++        <source>Set</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <source>Back</source>
++        <translation type="vanished">返回登录</translation>
++    </message>
++    <message>
++        <source>Create Account</source>
++        <translation type="vanished">注册云账户</translation>
++    </message>
++    <message>
++        <source>Sign up now</source>
++        <translation type="vanished">立即注册</translation>
++    </message>
++</context>
++<context>
++    <name>DigitalAuthIntelDialog</name>
++    <message>
++        <source>Enter Old Password</source>
++        <translation type="vanished">请输入旧密码</translation>
++    </message>
++    <message>
++        <source>Forget Password?</source>
++        <translation type="vanished">忘记密码?</translation>
++    </message>
++    <message>
++        <source>Input New Password</source>
++        <translation type="vanished">设置新密码</translation>
++    </message>
++    <message>
++        <source>Input Password</source>
++        <translation type="vanished">输入密码</translation>
++    </message>
++    <message>
++        <source>The password input is error</source>
++        <translation type="vanished">密码输入错误</translation>
++    </message>
++    <message>
++        <source>Confirm New Password</source>
++        <translation type="vanished">确认新密码</translation>
++    </message>
++    <message>
++        <source>The password input is inconsistent</source>
++        <translation type="vanished">两次密码输入不一致,请重设</translation>
++    </message>
++    <message>
++        <source>New password can not be consistent of old password</source>
++        <translation type="vanished">新密码与旧密码不能一致</translation>
++    </message>
++    <message>
++        <source>Password Change Failed</source>
++        <translation type="vanished">修改密码失败</translation>
++    </message>
++</context>
++<context>
++    <name>DigitalPhoneIntelDialog</name>
++    <message>
++        <source>Please Enter Edu OS Password</source>
++        <translation type="vanished">请输入Edu OS密码</translation>
++    </message>
++    <message>
++        <source>The password input is error</source>
++        <translation type="vanished">密码输入错误</translation>
++    </message>
++</context>
++<context>
++    <name>DisplayPerformanceDialog</name>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="26"/>
++        <source>Dialog</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="214"/>
++        <source>Display Advanced Settings</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="297"/>
++        <source>Performance</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="376"/>
++        <source>Applicable to machine with discrete graphics, which can accelerate the rendering of 3D graphics.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="392"/>
++        <source>(Note: not support connect graphical with xmanager on windows.)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="462"/>
++        <source>Compatible</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="538"/>
++        <source>Applicable to machine with integrated graphics,  there is no 3D graphics acceleration. </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="554"/>
++        <source>(Note: need connect graphical with xmanager on windows, use this option.)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="624"/>
++        <source>Automatic</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="700"/>
++        <source>Auto select according to environment, delay the login time (about 0.5 sec).</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="721"/>
++        <source>Threshold:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="744"/>
++        <source>Apply</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="757"/>
++        <source>Reset</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="772"/>
++        <source>(Note: select this option to use 3D graphics acceleration and xmanager.)</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>DisplaySet</name>
++    <message>
++        <source>display</source>
++        <translation type="vanished">显示器</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/display.cpp" line="36"/>
++        <source>Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/display.cpp" line="38"/>
++        <source>Display</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>DisplayWindow</name>
++    <message>
++        <source>monitor</source>
++        <translation type="vanished">显示器</translation>
++    </message>
++    <message>
++        <source>set as home screen</source>
++        <translation type="vanished">设为主屏</translation>
++    </message>
++    <message>
++        <source>close monitor</source>
++        <translation type="vanished">关闭显示器</translation>
++    </message>
++    <message>
++        <source>unify output</source>
++        <translation type="vanished">统一输出</translation>
++    </message>
++    <message>
++        <source>open monitor</source>
++        <translation type="vanished">打开显示器</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/display.ui" line="14"/>
++        <source>Form</source>
++        <translation></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/display.ui" line="32"/>
++        <source>Display</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>as main</source>
++        <translation type="vanished">设为主屏</translation>
++    </message>
++    <message>
++        <source>screen zoom</source>
++        <translation type="vanished">缩放屏幕</translation>
++    </message>
++    <message>
++        <source>Advanced</source>
++        <translation type="vanished">高级显示</translation>
++    </message>
++    <message>
++        <source>screen brightness adjustment</source>
++        <translation type="vanished">调整屏幕亮度</translation>
++    </message>
++    <message>
++        <source>dark</source>
++        <translation type="vanished">暗</translation>
++    </message>
++    <message>
++        <source>bright</source>
++        <translation type="vanished">亮</translation>
++    </message>
++    <message>
++        <source>follow the sunrise and sunset(17:55-05:04)</source>
++        <translation type="vanished">跟随日落日出(17:55-05:04)</translation>
++    </message>
++    <message>
++        <source>custom time</source>
++        <translation type="vanished">自定义时间</translation>
++    </message>
++    <message>
++        <source>opening time</source>
++        <translation type="vanished">开启时间</translation>
++    </message>
++    <message>
++        <source>closing time</source>
++        <translation type="vanished">关闭时间</translation>
++    </message>
++    <message>
++        <source>color temperature</source>
++        <translation type="vanished">色温</translation>
++    </message>
++    <message>
++        <source>warm</source>
++        <translation type="vanished">暖</translation>
++    </message>
++    <message>
++        <source>cold</source>
++        <translation type="vanished">冷</translation>
++    </message>
++    <message>
++        <source>apply</source>
++        <translation type="vanished">应用</translation>
++    </message>
++    <message>
++        <source>Mirror Display</source>
++        <translation type="vanished">镜像模式</translation>
++    </message>
++</context>
++<context>
++    <name>DoubleClickTestLabel</name>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="60"/>
++        <source>double-click to test</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>EditGroupDialog</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">编辑用户组</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Edit User Group</source>
++        <translation type="vanished">编辑用户组</translation>
++    </message>
++    <message>
++        <source>Name</source>
++        <translation type="vanished">组名</translation>
++    </message>
++    <message>
++        <source>Id</source>
++        <translation type="vanished">组ID</translation>
++    </message>
++    <message>
++        <source>Members</source>
++        <translation type="vanished">组成员</translation>
++    </message>
++    <message>
++        <source>Tips</source>
++        <translation type="vanished">提示</translation>
++    </message>
++    <message>
++        <source>Invalid Id!</source>
++        <translation type="vanished">无效组ID!</translation>
++    </message>
++    <message>
++        <source>OK</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Edit user group</source>
++        <translation type="vanished">编辑用户组</translation>
++    </message>
++</context>
++<context>
++    <name>EditPassDialog</name>
++    <message>
++        <source>Edit Password</source>
++        <translation type="vanished">修改密码</translation>
++    </message>
++    <message>
++        <source>Your account here</source>
++        <translation type="vanished">请输入用户名</translation>
++    </message>
++    <message>
++        <source>Your password here</source>
++        <translation type="obsolete">输入密码</translation>
++    </message>
++    <message>
++        <source>Your new password here</source>
++        <translation type="vanished">新密码</translation>
++    </message>
++    <message>
++        <source>Your code here</source>
++        <translation type="vanished">输入验证码</translation>
++    </message>
++    <message>
++        <source>Your code</source>
++        <translation type="vanished">请输入验证码</translation>
++    </message>
++    <message>
++        <source>Get phone code</source>
++        <translation type="vanished">获取绑定手机验证码</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Confirm your new password</source>
++        <translation type="vanished">确认新密码</translation>
++    </message>
++    <message>
++        <source>At least 6 bit, include letters and digt</source>
++        <translation type="vanished">至少六位,包含大小写字母、数字</translation>
++    </message>
++    <message>
++        <source>Your password is valid!</source>
++        <translation type="vanished">您的密码是有效的!</translation>
++    </message>
++    <message>
++        <source>Please check your password!</source>
++        <translation type="vanished">两次密码设置不一致!</translation>
++    </message>
++    <message>
++        <source>Resend(</source>
++        <translation type="vanished">重新发送(</translation>
++    </message>
++    <message>
++        <source>)</source>
++        <translation type="vanished">)</translation>
++    </message>
++    <message>
++        <source>Send</source>
++        <translation type="vanished">发送验证码</translation>
++    </message>
++    <message>
++        <source>Success!</source>
++        <translation type="vanished">成功!</translation>
++    </message>
++    <message>
++        <source>Reback sign in</source>
++        <translation type="vanished">重新登录</translation>
++    </message>
++    <message>
++        <source>Error code:</source>
++        <translation type="vanished">错误代码:</translation>
++    </message>
++    <message>
++        <source>!</source>
++        <translation type="vanished">!</translation>
++    </message>
++    <message>
++        <source>Internal error occurring!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>Failed to sign up!</source>
++        <translation type="vanished">注册失败!</translation>
++    </message>
++    <message>
++        <source>Failed attempt to return value!</source>
++        <translation type="vanished">尝试获取返回值失败!</translation>
++    </message>
++    <message>
++        <source>Check your connection!</source>
++        <translation type="vanished">登录失败或网络异常!</translation>
++    </message>
++    <message>
++        <source>Failed to get by phone!</source>
++        <translation type="vanished">手机获取验证码失败!</translation>
++    </message>
++    <message>
++        <source>Failed to get by user!</source>
++        <translation type="vanished">用户名获取验证码失败!</translation>
++    </message>
++    <message>
++        <source>Failed to reset password!</source>
++        <translation type="vanished">重置密码失败!</translation>
++    </message>
++    <message>
++        <source>Please check your information!</source>
++        <translation type="vanished">缺少必要信息!</translation>
++    </message>
++    <message>
++        <source>Please check your account!</source>
++        <translation type="vanished">账户或密码错误!</translation>
++    </message>
++    <message>
++        <source>Failed due to server error!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>User existing!</source>
++        <translation type="vanished">用户名已存在!</translation>
++    </message>
++    <message>
++        <source>Phone number already in used!</source>
++        <translation type="vanished">手机号码已被使用!</translation>
++    </message>
++    <message>
++        <source>Please check your format!</source>
++        <translation type="vanished">手机号码格式错误!</translation>
++    </message>
++    <message>
++        <source>Your are reach the limit!</source>
++        <translation type="vanished">该手机当日接收短信次数达到上限!</translation>
++    </message>
++    <message>
++        <source>Please check your phone number!</source>
++        <translation type="vanished">手机号码其他错误!</translation>
++    </message>
++    <message>
++        <source>Please check your code!</source>
++        <translation type="vanished">手机验证码错误!</translation>
++    </message>
++    <message>
++        <source>Account doesn&apos;t exist!</source>
++        <translation type="vanished">用户名不存在!</translation>
++    </message>
++    <message>
++        <source>Sending code error occurring!</source>
++        <translation type="vanished">发送验证码异常!</translation>
++    </message>
++</context>
++<context>
++    <name>EditPushButton</name>
++    <message>
++        <source>Reset</source>
++        <translation type="vanished">重置密码</translation>
++    </message>
++</context>
++<context>
++    <name>ExperiencePlan</name>
++    <message>
++        <source>User Experience</source>
++        <translation type="vanished">用户体验</translation>
++    </message>
++    <message>
++        <source>Join in user Experience plan</source>
++        <translation type="vanished">加入用户体验计划</translation>
++    </message>
++    <message>
++        <source>User experience plan terms, see</source>
++        <translation type="vanished">用户体验计划条款,参见</translation>
++    </message>
++    <message>
++        <source>《User Experience plan》</source>
++        <translation type="vanished">《用户体验计划》</translation>
++    </message>
++    <message>
++        <source>experienceplan</source>
++        <translation type="vanished">体验计划</translation>
++    </message>
++    <message>
++        <source>Experienceplan</source>
++        <translation type="vanished">体验计划</translation>
++    </message>
++</context>
++<context>
++    <name>Fonts</name>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.ui" line="50"/>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="46"/>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="121"/>
++        <source>Fonts</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Fonts/Fonts</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.ui" line="264"/>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="125"/>
++        <source>Fonts select</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Fonts/Fonts select</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.ui" line="146"/>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="123"/>
++        <source>Font size</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Fonts/Font size</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.ui" line="370"/>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="127"/>
++        <source>Mono font</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Fonts/Mono font</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.ui" line="421"/>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="129"/>
++        <source>Reset to default</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Fonts/Reset to default</extra-contents_path>
++    </message>
++    <message>
++        <source>Gtk default font</source>
++        <translation type="vanished">通用字体</translation>
++    </message>
++    <message>
++        <source>Document font</source>
++        <translation type="vanished">文档字体</translation>
++    </message>
++    <message>
++        <source>Monospace font</source>
++        <translation type="vanished">等宽字体</translation>
++    </message>
++    <message>
++        <source>Advanced settings</source>
++        <translation type="vanished">高级设置</translation>
++    </message>
++    <message>
++        <source>Peony font</source>
++        <translation type="vanished">桌面字体</translation>
++    </message>
++    <message>
++        <source>titlebar font</source>
++        <translation type="vanished">标题字体</translation>
++    </message>
++    <message>
++        <source>Select text sample that looks clearest</source>
++        <translation type="vanished">选择看起来清晰的字体效果</translation>
++    </message>
++    <message>
++        <source>fonts</source>
++        <translation type="vanished">字体</translation>
++    </message>
++    <message>
++        <source>11</source>
++        <translation type="vanished">11</translation>
++    </message>
++    <message>
++        <source>12</source>
++        <translation type="vanished">12</translation>
++    </message>
++    <message>
++        <source>13</source>
++        <translation type="vanished">13</translation>
++    </message>
++    <message>
++        <source>14</source>
++        <translation type="vanished">14</translation>
++    </message>
++    <message>
++        <source>16</source>
++        <translation type="vanished">16</translation>
++    </message>
++    <message>
++        <source>Thanks For Using The ukcc</source>
++        <translation type="vanished">欢迎使用设置</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="142"/>
++        <source>Small</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="146"/>
++        <source>Large</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>FrameItem</name>
++    <message>
++        <source>Sync failed, please login out to retry!</source>
++        <translation type="vanished">同步失败,请检查网络或退出云账户重试!</translation>
++    </message>
++    <message>
++        <source>Change configuration file failed, please login out to retry!</source>
++        <translation type="vanished">配置文件更改失败,请检查网络或退出云账户重试!</translation>
++    </message>
++    <message>
++        <source>Configuration file not exist, please login out to retry!</source>
++        <translation type="vanished">配置文件不存在,请检查网络或退出云账户重试!</translation>
++    </message>
++    <message>
++        <source>Cloud verifyed file download failed, please login out to retry!</source>
++        <translation type="vanished">云校验失败,请检查网络或退出云账户重试!</translation>
++    </message>
++    <message>
++        <source>OSS access failed, please login out to retry!</source>
++        <translation type="vanished">文件存储访问失败,请检查网络或退出云账户重试!</translation>
++    </message>
++    <message>
++        <source>Sync failed, please retry or login out to get a better experience!</source>
++        <translation type="vanished">同步失败,建议重试或者重新登录来获取最佳体验!</translation>
++    </message>
++    <message>
++        <source>Change configuration file failed, please retry or login out to get a better experience!</source>
++        <translation type="vanished">配置文件设置失败,建议重试或者重新登录来获取最佳体验!</translation>
++    </message>
++    <message>
++        <source>Configuration file not exist, please retry or login out to get a better experience!</source>
++        <translation type="vanished">配置文件不存在,建议重试或者重新登录来获取最佳体验!</translation>
++    </message>
++    <message>
++        <source>Cloud verifyed file download failed, please retry or login out to get a better experience!</source>
++        <translation type="vanished">云端校验失败,建议重试或者重新登录来获取最佳体验!</translation>
++    </message>
++    <message>
++        <source>OSS access failed, please retry or login out to get a better experience!</source>
++        <translation type="vanished">文件存储访问失败,建议重试或者重新登录来获取最佳体验!</translation>
++    </message>
++    <message>
++        <source>Sync failed,please relogin!</source>
++        <translation type="vanished">同步失败,请重新登录!</translation>
++    </message>
++    <message>
++        <source>Change configuration file failed,please relogin!</source>
++        <translation type="vanished">修改配置文件失败,请重新登录!</translation>
++    </message>
++    <message>
++        <source>Configuration file not exist,please relogin!</source>
++        <translation type="vanished">配置文件不存在,请重试!</translation>
++    </message>
++    <message>
++        <source>Cloud verifyed file download failed,please relogin!</source>
++        <translation type="vanished">云文件验证失败,请重试!</translation>
++    </message>
++    <message>
++        <source>OSS access failed,please relogin!</source>
++        <translation type="vanished">连接失败,请重试或重新登录!</translation>
++    </message>
++</context>
++<context>
++    <name>Gesture</name>
++    <message>
++        <source>Gesture</source>
++        <translatorcomment>手势</translatorcomment>
++        <translation type="obsolete">手势</translation>
++    </message>
++</context>
++<context>
++    <name>GrubVerify</name>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="24"/>
++        <source>Grub verify</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="29"/>
++        <source>User:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="42"/>
++        <source>Pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="85"/>
++        <source>Sure Pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="138"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="142"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="197"/>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="235"/>
++        <source>Inconsistency with pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="225"/>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="303"/>
++        <source>pwd cannot be empty!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>sure pwd cannot be empty!</source>
++        <translation type="vanished">确认密码不能为空!</translation>
++    </message>
++</context>
++<context>
++    <name>HistoryUpdateListWig</name>
++    <message>
++        <source>Success</source>
++        <translation type="vanished">更新成功</translation>
++    </message>
++    <message>
++        <source>Failed</source>
++        <translation type="vanished">更新失败</translation>
++    </message>
++</context>
++<context>
++    <name>HostNameDialog</name>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="17"/>
++        <source>Set HostName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="47"/>
++        <source>HostName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="68"/>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="115"/>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="118"/>
++        <source>Must be 1-64 characters long</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="87"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="82"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="188"/>
++        <source>Hostname must start or end with a number and a letter</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="199"/>
++        <source>Hostname cannot have consecutive &apos; - &apos; and &apos; . &apos;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="206"/>
++        <source>Hostname cannot have consecutive &apos; . &apos;</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>InputPwdDialog</name>
++    <message>
++        <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="46"/>
++        <source>Set Password</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Password can not be blank</source>
++        <translation type="vanished">密码不能为空</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="79"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="29"/>
++        <source>Set</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="62"/>
++        <source>Must be 1-8 characters long</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="83"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>less than or equal to 8</source>
++        <translation type="vanished">密码长度需要小于等于8</translation>
++    </message>
++</context>
++<context>
++    <name>ItemList</name>
++    <message>
++        <source>Walpaper</source>
++        <translation type="vanished">桌面壁纸</translation>
++    </message>
++    <message>
++        <source>ScreenSaver</source>
++        <translation type="vanished">屏保</translation>
++    </message>
++    <message>
++        <source>Menu</source>
++        <translation type="vanished">开始菜单</translation>
++    </message>
++    <message>
++        <source>Quick Start</source>
++        <translation type="vanished">快速启动项</translation>
++    </message>
++    <message>
++        <source>Avatar</source>
++        <translation type="vanished">头像</translation>
++    </message>
++    <message>
++        <source>Tab</source>
++        <translation type="vanished">任务栏</translation>
++    </message>
++    <message>
++        <source>Font</source>
++        <translation type="vanished">字体</translation>
++    </message>
++    <message>
++        <source>Wallpaper</source>
++        <translation type="vanished">桌面背景</translation>
++    </message>
++    <message>
++        <source>Themes</source>
++        <translation type="vanished">主题</translation>
++    </message>
++    <message>
++        <source>Area</source>
++        <translation type="vanished">区域语言</translation>
++    </message>
++    <message>
++        <source>Date/Time</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>Default Open</source>
++        <translation type="vanished">默认打开方式</translation>
++    </message>
++    <message>
++        <source>Notice</source>
++        <translation type="vanished">侧边栏</translation>
++    </message>
++    <message>
++        <source>Option</source>
++        <translation type="vanished">登录选项</translation>
++    </message>
++    <message>
++        <source>Peony</source>
++        <translation type="vanished">文件管理器</translation>
++    </message>
++    <message>
++        <source>Weather</source>
++        <translation type="vanished">天气</translation>
++    </message>
++    <message>
++        <source>Media</source>
++        <translation type="vanished">影音</translation>
++    </message>
++    <message>
++        <source>Boot</source>
++        <translation type="vanished">开机启动项</translation>
++    </message>
++    <message>
++        <source>Power</source>
++        <translation type="vanished">电源</translation>
++    </message>
++    <message>
++        <source>Editor</source>
++        <translation type="vanished">文本编辑器</translation>
++    </message>
++    <message>
++        <source>Terminal</source>
++        <translation type="vanished">终端</translation>
++    </message>
++    <message>
++        <source>Mouse</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>TouchPad</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>KeyBoard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++    <message>
++        <source>ShortCut</source>
++        <translation type="vanished">快捷键</translation>
++    </message>
++</context>
++<context>
++    <name>KbPreviewFrame</name>
++    <message>
++        <source>Keyboard Preview</source>
++        <translation type="obsolete">布局预览</translation>
++    </message>
++    <message>
++        <source>No preview found</source>
++        <translation type="vanished">无预览</translation>
++    </message>
++    <message>
++        <source>Unable to open Preview !</source>
++        <translation type="vanished">无法打开预览!</translation>
++    </message>
++</context>
++<context>
++    <name>KbdLayoutManager</name>
++    <message>
++        <source>C</source>
++        <translation type="vanished">按国家</translation>
++    </message>
++    <message>
++        <source>L</source>
++        <translation type="vanished">按语言</translation>
++    </message>
++    <message>
++        <source>Variant</source>
++        <translation type="vanished">变体</translation>
++    </message>
++    <message>
++        <source>Add</source>
++        <translation type="vanished">添加</translation>
++    </message>
++    <message>
++        <source>Add Layout</source>
++        <translation type="vanished">添加布局</translation>
++    </message>
++    <message>
++        <source>Del</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source>Keyboard Preview</source>
++        <translation type="vanished">布局预览</translation>
++    </message>
++</context>
++<context>
++    <name>KeyValueConverter</name>
++    <message>
++        <source>system</source>
++        <translation type="vanished">系统</translation>
++    </message>
++    <message>
++        <source>devices</source>
++        <translation type="vanished">设备</translation>
++    </message>
++    <message>
++        <source>personalized</source>
++        <translation type="vanished">个性化</translation>
++    </message>
++    <message>
++        <source>network</source>
++        <translation type="vanished">网络</translation>
++    </message>
++    <message>
++        <source>account</source>
++        <translation type="vanished">账户</translation>
++    </message>
++    <message>
++        <source>datetime</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>update</source>
++        <translation type="vanished">更新和备份</translation>
++    </message>
++    <message>
++        <source>messages</source>
++        <translation type="vanished">通知关于</translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="46"/>
++        <source>System</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="49"/>
++        <source>Devices</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="55"/>
++        <source>Personalized</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="52"/>
++        <source>Network</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="58"/>
++        <source>Account</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="61"/>
++        <source>Datetime</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="64"/>
++        <source>Update</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="67"/>
++        <source>Security</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="70"/>
++        <source>Application</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="73"/>
++        <source>Investigation</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="76"/>
++        <source>Commoninfo</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Search</source>
++        <translation type="vanished">搜索</translation>
++    </message>
++    <message>
++        <source>Messages</source>
++        <translation type="vanished">通知关于</translation>
++    </message>
++</context>
++<context>
++    <name>KeyboardControl</name>
++    <message>
++        <source>Keys Settings</source>
++        <translation type="vanished">通用设置</translation>
++    </message>
++    <message>
++        <source>Enable repeat key</source>
++        <translation type="vanished">启用按键重复设置</translation>
++    </message>
++    <message>
++        <source>Delay</source>
++        <translation type="vanished">延迟</translation>
++    </message>
++    <message>
++        <source>Short</source>
++        <translation type="vanished">短</translation>
++    </message>
++    <message>
++        <source>Long</source>
++        <translation type="vanished">长</translation>
++    </message>
++    <message>
++        <source>Speed</source>
++        <translation type="vanished">速度</translation>
++    </message>
++    <message>
++        <source>Slow</source>
++        <translation type="vanished">慢</translation>
++    </message>
++    <message>
++        <source>Fast</source>
++        <translation type="vanished">快</translation>
++    </message>
++    <message>
++        <source>Input characters to test the repetition effect:</source>
++        <translation type="vanished">输入字符测试重复效果:</translation>
++    </message>
++    <message>
++        <source>Input Settings</source>
++        <translation type="vanished">输入法设置</translation>
++    </message>
++    <message>
++        <source>Input Set</source>
++        <translation type="vanished">输入法设置</translation>
++    </message>
++    <message>
++        <source>Input settings</source>
++        <translation type="vanished">输入法设置</translation>
++    </message>
++    <message>
++        <source>Input characters to test the repetition effect:</source>
++        <translation type="vanished">输入字符测试重复效果:</translation>
++    </message>
++    <message>
++        <source>Tip of keyboard</source>
++        <translation type="vanished">启用按键提示</translation>
++    </message>
++    <message>
++        <source>reset default layout</source>
++        <translation type="vanished">恢复默认布局</translation>
++    </message>
++    <message>
++        <source>Reset layout</source>
++        <translation type="vanished">重置布局</translation>
++    </message>
++    <message>
++        <source>Message of capslock</source>
++        <translation type="vanished">大写锁定提示</translation>
++    </message>
++    <message>
++        <source>Enable numlock</source>
++        <translation type="vanished">小键盘开启提示</translation>
++    </message>
++    <message>
++        <source>Keyboard Layout</source>
++        <translation type="vanished">键盘布局</translation>
++    </message>
++    <message>
++        <source>Keyboard layout</source>
++        <translation type="vanished">键盘布局</translation>
++    </message>
++    <message>
++        <source>Install layouts</source>
++        <translation type="vanished">安装其他布局</translation>
++    </message>
++    <message>
++        <source>keyboard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++    <message>
++        <source>Keyboard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++</context>
++<context>
++    <name>KeyboardMain</name>
++    <message>
++        <source>Key board settings</source>
++        <translation type="vanished">键盘设置</translation>
++    </message>
++    <message>
++        <source>Input method settings</source>
++        <translation type="vanished">输入法设置</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardmain.cpp" line="25"/>
++        <source>Keyboard</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Short</source>
++        <translation type="vanished">短</translation>
++    </message>
++    <message>
++        <source>Long</source>
++        <translation type="vanished">长</translation>
++    </message>
++    <message>
++        <source>Slow</source>
++        <translation type="vanished">慢</translation>
++    </message>
++    <message>
++        <source>Fast</source>
++        <translation type="vanished">快</translation>
++    </message>
++</context>
++<context>
++    <name>KeyboardPainter</name>
++    <message>
++        <source>Close</source>
++        <translation type="vanished">关闭</translation>
++    </message>
++    <message>
++        <source>Keyboard layout levels</source>
++        <translation type="vanished">键盘布局等级</translation>
++    </message>
++    <message>
++        <source>Level %1, %2</source>
++        <translation type="vanished">等级 %1 %2</translation>
++    </message>
++    <message>
++        <source>Keyboard Preview</source>
++        <translation type="vanished">布局预览</translation>
++    </message>
++</context>
++<context>
++    <name>KeyboardUi</name>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="24"/>
++        <source>Keyboard Settings</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Keyboard Settings</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="35"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
++        <source>Input Method</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Input Method</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="51"/>
++        <source>Virtual Keyboard</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Virtual Keyboard</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="106"/>
++        <source>Key repeat</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Key repeat</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="114"/>
++        <source>Delay</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Delay</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="117"/>
++        <source>Short</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="118"/>
++        <source>Long</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="130"/>
++        <source>Speed</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Speed</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="132"/>
++        <source>Slow</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="133"/>
++        <source>Fast</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="144"/>
++        <source>Input test</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Input test</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="152"/>
++        <source>Key tips</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Key tips</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="161"/>
++        <source>Input settings</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Input settings</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="168"/>
++        <source>Edit</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="175"/>
++        <source>Show icon on tray</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Show icon on tray</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="182"/>
++        <source>Show icon on desktop</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Show icon on desktop</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="189"/>
++        <source>Keyboard Size</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Keyboard Size</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="197"/>
++        <source>Text size</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Text size</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="199"/>
++        <source>Small</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="200"/>
++        <source>Medium</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="201"/>
++        <source>Large</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
++        <source>Animation</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Animation</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="214"/>
++        <source>Input sound effect</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Input sound effect</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>LanguageFrame</name>
++    <message>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="71"/>
++        <source>Delete</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="70"/>
++        <source>Input Settings</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>LayoutManager</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">更改时间</translation>
++    </message>
++    <message>
++        <source>Manager Keyboard Layout</source>
++        <translation type="vanished">管理键盘布局</translation>
++    </message>
++    <message>
++        <source>Language</source>
++        <translation type="vanished">语言</translation>
++    </message>
++    <message>
++        <source>Country</source>
++        <translation type="vanished">国家</translation>
++    </message>
++    <message>
++        <source>Variant</source>
++        <translation type="vanished">变体</translation>
++    </message>
++    <message>
++        <source>Layout installed</source>
++        <translation type="vanished">安装布局</translation>
++    </message>
++    <message>
++        <source>Preview</source>
++        <translation type="vanished">预览</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Install</source>
++        <translation type="vanished">安装</translation>
++    </message>
++</context>
++<context>
++    <name>LoginDialog</name>
++    <message>
++        <source>Forget</source>
++        <translation type="vanished">忘记密码</translation>
++    </message>
++    <message>
++        <source>Send</source>
++        <translation type="vanished">发送验证码</translation>
++    </message>
++    <message>
++        <source>User Sign in</source>
++        <translation type="vanished">帐号密码登录</translation>
++    </message>
++    <message>
++        <source>Quick Sign in</source>
++        <translation type="vanished">短信快捷登录</translation>
++    </message>
++    <message>
++        <source>Your account/phone here</source>
++        <translation type="vanished">请输入用户名/手机号码</translation>
++    </message>
++    <message>
++        <source>Your account here</source>
++        <translation type="vanished">请输入用户名</translation>
++    </message>
++    <message>
++        <source>Your phone number here</source>
++        <translation type="vanished">手机号码</translation>
++    </message>
++    <message>
++        <source>Your account/phone/email here</source>
++        <translation type="vanished">请输入用户名/手机号码/邮箱</translation>
++    </message>
++    <message>
++        <source>Your password here</source>
++        <translation type="vanished">输入密码</translation>
++    </message>
++    <message>
++        <source>Your code here</source>
++        <translation type="vanished">输入验证码</translation>
++    </message>
++</context>
++<context>
++    <name>MCodeWidget</name>
++    <message>
++        <source>SongTi</source>
++        <translation type="vanished">宋体</translation>
++    </message>
++</context>
++<context>
++    <name>MainDialog</name>
++    <message>
++        <source>Sign in</source>
++        <translation type="vanished">登录</translation>
++    </message>
++    <message>
++        <source>Sign up</source>
++        <translation type="vanished">注册云账户</translation>
++    </message>
++    <message>
++        <source>Login in progress</source>
++        <translation type="vanished">登录中</translation>
++    </message>
++    <message>
++        <source>Error code:</source>
++        <translation type="vanished">错误代码:</translation>
++    </message>
++    <message>
++        <source>!</source>
++        <translation type="vanished">!</translation>
++    </message>
++    <message>
++        <source>Internal error occurring!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>Internal error occurred!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>Failed to sign up!</source>
++        <translation type="vanished">注册失败!</translation>
++    </message>
++    <message>
++        <source>Failed attempt to return value!</source>
++        <translation type="vanished">返回值失败!</translation>
++    </message>
++    <message>
++        <source>Check your connection!</source>
++        <translation type="vanished">登录失败或网络异常!</translation>
++    </message>
++    <message>
++        <source>Failed to get by phone!</source>
++        <translation type="vanished">手机获取验证码失败!</translation>
++    </message>
++    <message>
++        <source>Failed to get by user!</source>
++        <translation type="vanished">用户名获取验证码失败!</translation>
++    </message>
++    <message>
++        <source>Failed to reset password!</source>
++        <translation type="vanished">重置密码失败!</translation>
++    </message>
++    <message>
++        <source>Timeout!</source>
++        <translation type="vanished">登录超时,请重新输入验证码登录!</translation>
++    </message>
++    <message>
++        <source>Phone binding falied!</source>
++        <translation type="vanished">手机绑定失败!</translation>
++    </message>
++    <message>
++        <source>Please check your information!</source>
++        <translation type="vanished">缺少必要信息!</translation>
++    </message>
++    <message>
++        <source>Please check your account!</source>
++        <translation type="vanished">账户或密码错误!</translation>
++    </message>
++    <message>
++        <source>Failed due to server error!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>User and passsword can&apos;t be empty!</source>
++        <translation type="vanished">用户以及密码不能为空!</translation>
++    </message>
++    <message>
++        <source>User existing!</source>
++        <translation type="vanished">用户名已存在!</translation>
++    </message>
++    <message>
++        <source>User doesn&apos;t exist!</source>
++        <translation type="vanished">用户不存在!</translation>
++    </message>
++    <message>
++        <source>Network can not reach!</source>
++        <translation type="vanished">网络不可达!</translation>
++    </message>
++    <message>
++        <source>Phone can&apos;t be empty!</source>
++        <translation type="vanished">手机号不能为空!</translation>
++    </message>
++    <message>
++        <source>Account or password error!</source>
++        <translation type="vanished">账户或密码错误!</translation>
++    </message>
++    <message>
++        <source>Phone number already in used!</source>
++        <translation type="vanished">手机号码已被使用!</translation>
++    </message>
++    <message>
++        <source>Please check your format!</source>
++        <translation type="vanished">手机号码格式错误!</translation>
++    </message>
++    <message>
++        <source>Your are reach the limit!</source>
++        <translation type="vanished">该手机当日接收短信次数达到上限!</translation>
++    </message>
++    <message>
++        <source>Please check your phone number!</source>
++        <translation type="vanished">手机号码其他错误!</translation>
++    </message>
++    <message>
++        <source>Please check your code!</source>
++        <translation type="vanished">手机验证码错误!</translation>
++    </message>
++    <message>
++        <source>Account doesn&apos;t exist!</source>
++        <translation type="vanished">用户名不存在!</translation>
++    </message>
++    <message>
++        <source>User has bound the phone!</source>
++        <translation type="vanished">用户已经绑定手机号!</translation>
++    </message>
++    <message>
++        <source>Sending code error occurred!</source>
++        <translation type="vanished">发送验证码异常!</translation>
++    </message>
++    <message>
++        <source>Phone code is expired!</source>
++        <translation type="vanished">验证码过期!</translation>
++    </message>
++    <message>
++        <source>Phone code error!</source>
++        <translation type="vanished">验证码错误!</translation>
++    </message>
++    <message>
++        <source>Code can not be empty!</source>
++        <translation type="vanished">图片验证码不能为空!</translation>
++    </message>
++    <message>
++        <source>MCode can not be empty!</source>
++        <translation type="vanished">手机验证码不能为空!</translation>
++    </message>
++    <message>
++        <source>Sending code error occurring!</source>
++        <translation type="vanished">发送验证码异常!</translation>
++    </message>
++    <message>
++        <source>Your code is wrong!</source>
++        <translation type="vanished">验证码错误!</translation>
++    </message>
++    <message>
++        <source>Please check your phone!</source>
++        <translation type="vanished">请检查您的手机号码格式!</translation>
++    </message>
++    <message>
++        <source>Please check your password!</source>
++        <translation type="vanished">两次密码设置不一致!</translation>
++    </message>
++    <message>
++        <source>At least 6 bit, include letters and digt</source>
++        <translation type="vanished">至少六位,包含大小写字母、数字</translation>
++    </message>
++    <message>
++        <source>Sign in Cloud</source>
++        <translation type="vanished">登录云账户</translation>
++    </message>
++    <message>
++        <source>Forget</source>
++        <translation type="vanished">忘记密码</translation>
++    </message>
++    <message>
++        <source>Set</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <source>Back</source>
++        <translation type="vanished">返回登录</translation>
++    </message>
++    <message>
++        <source>Create Account</source>
++        <translation type="vanished">注册云账户</translation>
++    </message>
++    <message>
++        <source>Sign up now</source>
++        <translation type="vanished">立即注册</translation>
++    </message>
++    <message>
++        <source>Please confirm your password!</source>
++        <translation type="vanished">两次密码输入不一致!</translation>
++    </message>
++    <message>
++        <source>Resend ( %1 )</source>
++        <translation type="vanished">重新发送(%1)</translation>
++    </message>
++    <message>
++        <source>Get</source>
++        <translation type="vanished">获取验证码</translation>
++    </message>
++    <message>
++        <source>Get phone code</source>
++        <translation type="vanished">获取绑定手机验证码</translation>
++    </message>
++    <message>
++        <source>Send</source>
++        <translation type="vanished">发送验证码</translation>
++    </message>
++    <message>
++        <source>Binding Phone</source>
++        <translation type="vanished">绑定手机</translation>
++    </message>
++    <message>
++        <source>Please make sure your password is safety!</source>
++        <translation type="vanished">请确保您的密码符合要求!</translation>
++    </message>
++    <message>
++        <source>Bind now</source>
++        <translation type="vanished">绑定</translation>
++    </message>
++</context>
++<context>
++    <name>MainWidget</name>
++    <message>
++        <source>Disconnected</source>
++        <translation type="vanished">未连接</translation>
++    </message>
++    <message>
++        <source>Your account:%1</source>
++        <translation type="vanished">您的云账户:%1</translation>
++    </message>
++    <message>
++        <source>Unauthorized device or OSS falied.
++Please retry for login!</source>
++        <translation type="vanished">OSS访问失败,请检查您的网络后再登录!</translation>
++    </message>
++    <message>
++        <source>Exit</source>
++        <translation type="vanished">退出登录</translation>
++    </message>
++    <message>
++        <source>Sync</source>
++        <translation type="vanished">同步中</translation>
++    </message>
++    <message>
++        <source>Sign in</source>
++        <translation type="vanished">登录</translation>
++        <extra-contents_path>/networkaccount/Sign in</extra-contents_path>
++    </message>
++    <message>
++        <source>Enable item sync</source>
++        <translation type="vanished">开启单项同步</translation>
++    </message>
++    <message>
++        <source>Logout failed,please check your connection</source>
++        <translation type="vanished">登录失败,请检查你的网络连接</translation>
++    </message>
++    <message>
++        <source>Stop sync</source>
++        <translation type="vanished">结束同步</translation>
++    </message>
++    <message>
++        <source>Sync your settings</source>
++        <translation type="vanished">同步您的设置</translation>
++    </message>
++    <message>
++        <source>Your account:%1</source>
++        <translation type="vanished">您的云账户:%1</translation>
++    </message>
++    <message>
++        <source>Auto sync</source>
++        <translation type="vanished">自动同步</translation>
++    </message>
++    <message>
++        <source>Waitting for sync!</source>
++        <translation type="vanished">等待同步!</translation>
++    </message>
++    <message>
++        <source>Synchronize your personalized settings and data</source>
++        <translation type="vanished">同步您账户的数据以及个性化设置</translation>
++    </message>
++    <message>
++        <source>This operation may cover your settings!</source>
++        <translation type="vanished">该操作可能覆盖您现有的设置!</translation>
++    </message>
++    <message>
++        <source>The latest time sync is: </source>
++        <translation type="vanished">上次同步时间为: </translation>
++    </message>
++    <message>
++        <source>Waiting for initialization...</source>
++        <translation type="vanished">等待云账户初始化...</translation>
++    </message>
++    <message>
++        <source>Network can not reach!</source>
++        <translation type="vanished">网络不可达!</translation>
++    </message>
++    <message>
++        <source>The Cloud Account Service version is out of date!</source>
++        <translation type="vanished">云账户服务版本已经过期,请升级!</translation>
++    </message>
++    <message>
++        <source>KylinID open error!</source>
++        <translation type="vanished">麒麟ID客户端打开失败!</translation>
++    </message>
++    <message>
++        <source>Unauthorized device or OSS falied.
++Please retry or relogin!</source>
++        <translation type="vanished">设备凭证已过期,请重新登录!</translation>
++    </message>
++    <message>
++        <source>Authorization failed!</source>
++        <translation type="vanished">认证失败,请重新登录!</translation>
++    </message>
++    <message>
++        <source>Kylin Cloud Account</source>
++        <translation type="vanished">云账户</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/networkaccount/mainwidget.cpp" line="708"/>
++        <source></source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Cloud ID desktop message</source>
++        <translation type="vanished">云账户消息</translation>
++    </message>
++    <message>
++        <source>Synchronize your computer&apos;s settings into your cloud account here.</source>
++        <translation type="vanished">将本机的设置同步至云账户,通过云账户随时随地开启个性设置!</translation>
++    </message>
++    <message>
++        <source>Media</source>
++        <translation type="vanished">影音</translation>
++    </message>
++    <message>
++        <source>Weather</source>
++        <translation type="vanished">天气</translation>
++    </message>
++    <message>
++        <source>Sync downloading,please wait!</source>
++        <translation type="vanished">同步下载中,请稍后......!</translation>
++    </message>
++    <message>
++        <source>Sync uploading,please wait!</source>
++        <translation type="vanished">同步上传中,请稍后......!</translation>
++    </message>
++    <message>
++        <source>Sync failed, please check your internet connection or login out to retry!</source>
++        <translation type="vanished">同步失败,请检查您的网络连接或者登出再重试一次!</translation>
++    </message>
++    <message>
++        <source>%1,</source>
++        <translation type="vanished">%1,</translation>
++    </message>
++    <message>
++        <source>Synchronized failed: %1 please retry or login out to get a better experience.</source>
++        <translation type="vanished">同步失败:%1 请重试或者重新登录来获取最佳体验!</translation>
++    </message>
++    <message>
++        <source>%1</source>
++        <translation type="vanished">%1</translation>
++    </message>
++    <message>
++        <source>Synchronized failed: %1, please retry or login out to get a better experience.</source>
++        <translation type="vanished">同步失败:%1,请重试或者重新登录来获取最佳体验!</translation>
++    </message>
++</context>
++<context>
++    <name>MainWindow</name>
++    <message>
++        <source>Search</source>
++        <translation type="vanished">搜索</translation>
++    </message>
++    <message>
++        <source>UKCC</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="443"/>
++        <location filename="../../mainwindow.cpp" line="461"/>
++        <location filename="../../mainwindow.cpp" line="596"/>
++        <location filename="../../mainwindow.cpp" line="954"/>
++        <source>Settings</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="481"/>
++        <source>Option</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="482"/>
++        <source>Minimize</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Maximize/Normal</source>
++        <translation type="vanished">最大化/正常</translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="154"/>
++        <source>Warnning</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="172"/>
++        <source>Restore</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="175"/>
++        <location filename="../../mainwindow.cpp" line="483"/>
++        <source>Maximize</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="455"/>
++        <source>Back home</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="484"/>
++        <source>Close</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="584"/>
++        <source>Help</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="586"/>
++        <source>About</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="588"/>
++        <source>Exit</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="597"/>
++        <source>Version: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="736"/>
++        <source>Specified</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>ukcc</source>
++        <translation type="vanished">控制面板</translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="1086"/>
++        <source>Warning</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="154"/>
++        <location filename="../../mainwindow.cpp" line="1086"/>
++        <source>This function has been controlled</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Home</source>
++        <translation type="vanished">首页</translation>
++    </message>
++</context>
++<context>
++    <name>MessageBox</name>
++    <message>
++        <source>Attention</source>
++        <translation type="vanished">提示</translation>
++    </message>
++    <message>
++        <source>It takes effect after logging off</source>
++        <translation type="vanished">注销后即可生效</translation>
++    </message>
++    <message>
++        <source>Logout Now</source>
++        <translation type="vanished">立即注销</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Reboot Now</source>
++        <translation type="vanished">立即重启</translation>
++    </message>
++    <message>
++        <source>This cleanup and restore need to be done after the system restarts, whether to restart and restore immediately?</source>
++        <translation type="vanished">此次清空并还原需要在系统重新启动后进行,是否立即重启并还原?</translation>
++    </message>
++    <message>
++        <source>System Backup Tips</source>
++        <translation type="vanished">系统还原提示</translation>
++    </message>
++</context>
++<context>
++    <name>MessageBoxDialog</name>
++    <message>
++        <source>Message</source>
++        <translation type="vanished">信息</translation>
++    </message>
++    <message>
++        <source>You do not have administrator rights!</source>
++        <translation type="vanished">您没有管理员权限!</translation>
++    </message>
++    <message>
++        <source> Factory Settings cannot be restored!</source>
++        <translation type="vanished">不能恢复出厂设置!</translation>
++    </message>
++    <message>
++        <source>OK</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>MessageBoxPower</name>
++    <message>
++        <source>System Recovery</source>
++        <translation type="vanished">系统还原</translation>
++    </message>
++    <message>
++        <source>The battery is low,please connect the power</source>
++        <translation type="vanished">电池电量较低,请连接电源后再试</translation>
++    </message>
++    <message>
++        <source>Keep the power connection, or the power is more than 25%.</source>
++        <translation type="vanished">系统还原需保持电源连接,或在电量不低于25%时进行。</translation>
++    </message>
++    <message>
++        <source>Remind in 30 minutes</source>
++        <translation type="vanished">30分钟后提醒我</translation>
++    </message>
++    <message>
++        <source>Got it</source>
++        <translation type="vanished">知道了</translation>
++    </message>
++</context>
++<context>
++    <name>MessageBoxPowerIntel</name>
++    <message>
++        <source>Nothing has been entered, re-enter</source>
++        <translation type="vanished">未输入任何内容,请重新输入</translation>
++    </message>
++    <message>
++        <source>Remind in 30 minutes</source>
++        <translation type="vanished">30分钟后提醒我</translation>
++    </message>
++    <message>
++        <source>Got it</source>
++        <translation type="vanished">知道了</translation>
++    </message>
++</context>
++<context>
++    <name>MobileHotspot</name>
++    <message>
++        <source>MobileHotspot</source>
++        <translation type="vanished">移动热点</translation>
++    </message>
++</context>
++<context>
++    <name>MobileHotspotWidget</name>
++    <message>
++        <source>ukui control center</source>
++        <translation type="vanished">控制面板</translation>
++    </message>
++    <message>
++        <source>ukui control center desktop message</source>
++        <translation type="vanished">控制面板桌面通知</translation>
++    </message>
++    <message>
++        <source>start to close hotspot</source>
++        <translation type="vanished">开始关闭热点</translation>
++    </message>
++    <message>
++        <source>hotpots name or device is invalid</source>
++        <translation type="vanished">热点名称或设备错误</translation>
++    </message>
++    <message>
++        <source>can not  create hotspot with password length less than eight!</source>
++        <translation type="vanished">不能创建密码长度小于八位的热点!</translation>
++    </message>
++    <message>
++        <source>start to open hotspot </source>
++        <translation type="vanished">开始创建热点</translation>
++    </message>
++    <message>
++        <source>Hotspot</source>
++        <translation type="vanished">移动热点</translation>
++    </message>
++    <message>
++        <source>Open</source>
++        <translation type="vanished">开启</translation>
++    </message>
++    <message>
++        <source>Wi-Fi Name</source>
++        <translation type="vanished">Wi-Fi名称</translation>
++    </message>
++    <message>
++        <source>Password</source>
++        <translation type="vanished">网络密码</translation>
++    </message>
++    <message>
++        <source>Frequency band</source>
++        <translation type="vanished">网络频带</translation>
++    </message>
++    <message>
++        <source>Net card</source>
++        <translation type="vanished">共享网卡端口</translation>
++    </message>
++    <message>
++        <source>hotspot already close</source>
++        <translation type="vanished">热点已关闭</translation>
++    </message>
++    <message>
++        <source>hotspot already open</source>
++        <translation type="vanished">热点已开启</translation>
++    </message>
++</context>
++<context>
++    <name>Mouse</name>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouse.cpp" line="5"/>
++        <source>Mouse</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>MouseControl</name>
++    <message>
++        <source>Mouse Key Settings</source>
++        <translation type="vanished">鼠标键设置</translation>
++    </message>
++    <message>
++        <source>Hand habit</source>
++        <translation type="vanished">惯用手</translation>
++    </message>
++    <message>
++        <source>Pointer Settings</source>
++        <translation type="vanished">指针设置</translation>
++    </message>
++    <message>
++        <source>Speed</source>
++        <translation type="vanished">速度</translation>
++    </message>
++    <message>
++        <source>Slow</source>
++        <translation type="vanished">慢</translation>
++    </message>
++    <message>
++        <source>mouse wheel speed</source>
++        <translation type="vanished">鼠标滚轮速度</translation>
++    </message>
++    <message>
++        <source>Fast</source>
++        <translation type="vanished">快</translation>
++    </message>
++    <message>
++        <source>Doubleclick  delay</source>
++        <translation type="vanished">鼠标双击间隔时长</translation>
++    </message>
++    <message>
++        <source>Short</source>
++        <translation type="vanished">短</translation>
++    </message>
++    <message>
++        <source>Long</source>
++        <translation type="vanished">长</translation>
++    </message>
++    <message>
++        <source>Acceleration</source>
++        <translation type="vanished">鼠标加速</translation>
++    </message>
++    <message>
++        <source>Cursor weight</source>
++        <translation type="vanished">光标粗细</translation>
++    </message>
++    <message>
++        <source>Sensitivity</source>
++        <translation type="vanished">敏感度</translation>
++    </message>
++    <message>
++        <source>Low</source>
++        <translation type="vanished">低</translation>
++    </message>
++    <message>
++        <source>High</source>
++        <translation type="vanished">高</translation>
++    </message>
++    <message>
++        <source>Visibility</source>
++        <translation type="vanished">按Ctrl键显示指针位置</translation>
++    </message>
++    <message>
++        <source>Pointer size</source>
++        <translation type="vanished">指针大小</translation>
++    </message>
++    <message>
++        <source>Cursor Settings</source>
++        <translation type="vanished">光标设置</translation>
++    </message>
++    <message>
++        <source> Cursor weight</source>
++        <translation type="obsolete">光标粗细</translation>
++    </message>
++    <message>
++        <source>Thin</source>
++        <translation type="vanished">细</translation>
++    </message>
++    <message>
++        <source>Coarse</source>
++        <translation type="vanished">粗</translation>
++    </message>
++    <message>
++        <source>Cursor speed</source>
++        <translation type="vanished">光标速度</translation>
++    </message>
++    <message>
++        <source>Enable flashing on text area</source>
++        <translation type="vanished">启用文本区域的光标闪烁</translation>
++    </message>
++    <message>
++        <source>mouse</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>Mouse</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>Lefthand</source>
++        <translation type="vanished">左手</translation>
++    </message>
++    <message>
++        <source>Righthand</source>
++        <translation type="vanished">右手</translation>
++    </message>
++    <message>
++        <source>Default(Recommended)</source>
++        <translation type="vanished">默认(推荐)</translation>
++    </message>
++    <message>
++        <source>Medium</source>
++        <translation type="vanished">中等</translation>
++    </message>
++    <message>
++        <source>Large</source>
++        <translation type="vanished">较大</translation>
++    </message>
++</context>
++<context>
++    <name>MouseUI</name>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="91"/>
++        <source>Mouse</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Mouse</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="113"/>
++        <source>Pointer</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Pointer</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="136"/>
++        <source>Cursor</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Cursor</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="161"/>
++        <source>Dominant hand</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Dominant hand</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="163"/>
++        <source>Left key</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="164"/>
++        <source>Right key</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="175"/>
++        <source>Scroll direction</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Scroll direction</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="177"/>
++        <source>Forward</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="178"/>
++        <source>Reverse</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="188"/>
++        <source>Wheel speed</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Wheel speed</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="190"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="224"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="314"/>
++        <source>Slow</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="191"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="225"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="315"/>
++        <source>Fast</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="204"/>
++        <source>Double-click interval time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Double-click interval time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="206"/>
++        <source>Short</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="207"/>
++        <source>Long</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="222"/>
++        <source>Pointer speed</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Pointer speed</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="238"/>
++        <source>Mouse acceleration</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Mouse acceleration</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="246"/>
++        <source>Show pointer position when pressing ctrl</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Show pointer position when pressing ctrl</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="255"/>
++        <source>Pointer size</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Pointer size</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="257"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="258"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="259"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="265"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="266"/>
++        <source>Small(recommend)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="271"/>
++        <source>Medium</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="272"/>
++        <source>Large</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="303"/>
++        <source>Blinking cursor in text area</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Blinking cursor in text area</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="312"/>
++        <source>Cursor speed</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Cursor speed</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>MyLabel</name>
++    <message>
++        <source>double-click to test</source>
++        <translation type="vanished">双击测试</translation>
++    </message>
++</context>
++<context>
++    <name>NetConnect</name>
++    <message>
++        <source>Netconnect Status</source>
++        <translation type="vanished">网络状态</translation>
++    </message>
++    <message>
++        <source>Waitting...</source>
++        <translation type="vanished">加载中...</translation>
++    </message>
++    <message>
++        <source>Available Network</source>
++        <translation type="vanished">可用网络</translation>
++    </message>
++    <message>
++        <source>Refresh</source>
++        <translation type="vanished">刷新</translation>
++    </message>
++    <message>
++        <source>open wifi</source>
++        <translation type="vanished">打开WLAN</translation>
++    </message>
++    <message>
++        <source>Wired Network</source>
++        <translation type="vanished">有线网络</translation>
++    </message>
++    <message>
++        <source>Advanced settings</source>
++        <translation type="vanished">高级设置</translation>
++    </message>
++    <message>
++        <source>Other Networks</source>
++        <translation type="vanished">其他网络</translation>
++    </message>
++    <message>
++        <source>open</source>
++        <translation type="vanished">开启</translation>
++    </message>
++    <message>
++        <source>Network settings</source>
++        <translation type="vanished">网络设置</translation>
++    </message>
++    <message>
++        <source>Change net settings</source>
++        <translation type="vanished">更改网络设置</translation>
++    </message>
++    <message>
++        <source>netconnect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>Netconnect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>Link</source>
++        <translation type="vanished">连接</translation>
++    </message>
++    <message>
++        <source>WiredConnect</source>
++        <translation type="vanished">有线网络</translation>
++    </message>
++    <message>
++        <source>card</source>
++        <translation type="vanished">网卡</translation>
++    </message>
++    <message>
++        <source>Add Wired Network</source>
++        <translation type="vanished">添加有线网络</translation>
++    </message>
++    <message>
++        <source>Connected</source>
++        <translation type="vanished">已连接</translation>
++    </message>
++    <message>
++        <source>No net</source>
++        <translation type="vanished">无连接</translation>
++    </message>
++    <message>
++        <source>Detail</source>
++        <translation type="vanished">网络详情</translation>
++    </message>
++    <message>
++        <source>None</source>
++        <translation type="vanished">无</translation>
++    </message>
++    <message>
++        <source>Refreshing...</source>
++        <translation type="vanished">刷新中...</translation>
++    </message>
++    <message>
++        <source>connected</source>
++        <translation type="vanished">已连接</translation>
++    </message>
++    <message>
++        <source>No network</source>
++        <translation type="vanished">无网络连接</translation>
++    </message>
++    <message>
++        <source>Connect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>Disconnect</source>
++        <translation type="vanished">未连接</translation>
++    </message>
++</context>
++<context>
++    <name>NetDetail</name>
++    <message>
++        <source>SSID:</source>
++        <translation type="vanished">SSID:</translation>
++    </message>
++    <message>
++        <source>Protocol</source>
++        <translation type="vanished">协议:</translation>
++    </message>
++    <message>
++        <source>Security Type:</source>
++        <translation type="vanished">安全类型:</translation>
++    </message>
++    <message>
++        <source>Hz:</source>
++        <translation type="vanished">网络频带:</translation>
++    </message>
++    <message>
++        <source>Chan:</source>
++        <translation type="vanished">网络通道:</translation>
++    </message>
++    <message>
++        <source>Link Speed(rx/tx)</source>
++        <translation type="vanished">链接速度(接收/传输):</translation>
++    </message>
++    <message>
++        <source>Link Speed(rx/tx):</source>
++        <translation type="vanished">链接速度(接收/传输):</translation>
++    </message>
++    <message>
++        <source>BandWidth:</source>
++        <translation type="vanished">带宽:</translation>
++    </message>
++    <message>
++        <source>IPV4:</source>
++        <translation type="vanished">IPV4:</translation>
++    </message>
++    <message>
++        <source>IPV4 Dns:</source>
++        <translation type="vanished">IPV4 Dns:</translation>
++    </message>
++    <message>
++        <source>IPV4 GateWay:</source>
++        <translation type="vanished">网关:</translation>
++    </message>
++    <message>
++        <source>IPV4 Prefix:</source>
++        <translation type="vanished">前缀:</translation>
++    </message>
++    <message>
++        <source>IPV6:</source>
++        <translation type="vanished">IPV6:</translation>
++    </message>
++    <message>
++        <source>IPV6 Prefix:</source>
++        <translation type="vanished">前缀:</translation>
++    </message>
++    <message>
++        <source>IPV6 GateWay:</source>
++        <translation type="vanished">网关:</translation>
++    </message>
++    <message>
++        <source>Mac:</source>
++        <translation type="vanished">物理地址:</translation>
++    </message>
++</context>
++<context>
++    <name>Notice</name>
++    <message>
++        <source>NotFaze Mode</source>
++        <translation type="vanished">勿扰模式</translation>
++    </message>
++    <message>
++        <source>(Notification banners, prompts will be hidden, and notification sounds will be muted)</source>
++        <translation type="vanished">(通知横幅、提示将会隐藏,通知声音将会静音)</translation>
++    </message>
++    <message>
++        <source>Automatically turn on</source>
++        <translation type="vanished">自动开启</translation>
++    </message>
++    <message>
++        <source>to</source>
++        <translation type="vanished">至</translation>
++    </message>
++    <message>
++        <source>Automatically turn on when multiple screens are connected</source>
++        <translation type="vanished">多屏连接时自动开启</translation>
++    </message>
++    <message>
++        <source>Automatically open in full screen mode</source>
++        <translation type="vanished">全屏模式下自动开启</translation>
++    </message>
++    <message>
++        <source>Allow automatic alarm reminders in Do Not Disturb mode</source>
++        <translation type="vanished">勿扰模式下允许闹钟提示</translation>
++    </message>
++    <message>
++        <source>Notice Settings</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <source>Set the type of notice in the operation center</source>
++        <translation type="vanished">设置在通知中心显示的通知信息</translation>
++    </message>
++    <message>
++        <source>Set notice type of operation center</source>
++        <translation type="vanished">设置在通知中心显示的通知信息</translation>
++    </message>
++    <message>
++        <source>Show new feature ater system upgrade</source>
++        <translation type="vanished">系统版本更新后显示新增内容</translation>
++    </message>
++    <message>
++        <source>Get notifications from the app</source>
++        <translation type="vanished">获取来自应用的通知</translation>
++    </message>
++    <message>
++        <source>Show notifications on the lock screen</source>
++        <translation type="vanished">在锁屏界面上显示通知</translation>
++    </message>
++    <message>
++        <source>Notice Origin</source>
++        <translation type="vanished">设置通知来源</translation>
++    </message>
++    <message>
++        <source>notice</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/notice.cpp" line="43"/>
++        <source>Notice</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>NoticeMenu</name>
++    <message>
++        <location filename="../../../plugins/system/notice/noticemenu.cpp" line="43"/>
++        <source>Beep sound when notified</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticemenu.cpp" line="49"/>
++        <source>Show message  on screenlock</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticemenu.cpp" line="55"/>
++        <source>Show noticfication  on screenlock</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticemenu.cpp" line="59"/>
++        <source>Notification Style</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticemenu.cpp" line="67"/>
++        <source>Banner: Appears in the upper right corner of the screen, and disappears automatically</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticemenu.cpp" line="72"/>
++        <source>Tip:It will be kept on the screen until it is closed</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticemenu.cpp" line="77"/>
++        <source>None:Notifications will not be displayed on the screen, but will go to the notification center</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>NoticeUi</name>
++    <message>
++        <location filename="../../../plugins/system/notice/noticeui.cpp" line="18"/>
++        <source>Notice Settings</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticeui.cpp" line="19"/>
++        <source>NotFaze Mode</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticeui.cpp" line="23"/>
++        <source>(Notification banners, prompts will be hidden, and notification sounds will be muted)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticeui.cpp" line="33"/>
++        <source>Get notifications from the app</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticeui.cpp" line="51"/>
++        <source>Automatically turn on</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticeui.cpp" line="70"/>
++        <source>to</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticeui.cpp" line="90"/>
++        <source>Automatically turn on when multiple screens are connected</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticeui.cpp" line="91"/>
++        <source>Automatically open in full screen mode</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/notice/noticeui.cpp" line="92"/>
++        <source>Allow automatic alarm reminders in Do Not Disturb mode</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>NumbersButtonIntel</name>
++    <message>
++        <source>clean</source>
++        <translation type="vanished">清空</translation>
++    </message>
++</context>
++<context>
++    <name>OutputConfig</name>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="84"/>
++        <source>resolution</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/resolution</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="110"/>
++        <source>orientation</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/orientation</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="123"/>
++        <source>arrow-up</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="124"/>
++        <source>90° arrow-right</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="126"/>
++        <source>arrow-down</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Information</source>
++        <translation type="vanished">信息</translation>
++    </message>
++    <message>
++        <source>Some applications need to be logouted to take effect</source>
++        <translation type="vanished">部分程序需要注销生效</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="125"/>
++        <source>90° arrow-left</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="137"/>
++        <source>auto rotation</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/auto rotation</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="188"/>
++        <source>frequency</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/frequency</extra-contents_path>
++    </message>
++    <message>
++        <source>refresh rate</source>
++        <translation type="vanished">刷新率</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="411"/>
++        <source>auto</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="222"/>
++        <source>screen zoom</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/screen zoom</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="577"/>
++        <source>%1 Hz</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>PassDialog</name>
++    <message>
++        <source>Get the phone binding code</source>
++        <translation type="vanished">获取绑定手机验证码</translation>
++    </message>
++    <message>
++        <source>Your account here</source>
++        <translation type="vanished">请输入用户名</translation>
++    </message>
++    <message>
++        <source>Your new password here</source>
++        <translation type="vanished">新密码</translation>
++    </message>
++    <message>
++        <source>Confirm your new password</source>
++        <translation type="vanished">确认新密码</translation>
++    </message>
++    <message>
++        <source>Your code here</source>
++        <translation type="vanished">输入验证码</translation>
++    </message>
++    <message>
++        <source>At least 6 bit, include letters and digt</source>
++        <translation type="vanished">至少六位,包含大小写字母、数字</translation>
++    </message>
++    <message>
++        <source>Your password is valid!</source>
++        <translation type="vanished">您的密码是有效的!</translation>
++    </message>
++</context>
++<context>
++    <name>PhoneAuthIntelDialog</name>
++    <message>
++        <source>Wechat Auth</source>
++        <translation type="vanished">微信验证</translation>
++    </message>
++    <message>
++        <source>Phone Auth</source>
++        <translation type="vanished">手机号验证</translation>
++    </message>
++    <message>
++        <source>Phone number</source>
++        <translation type="vanished">手机号</translation>
++    </message>
++    <message>
++        <source>SMS verification code</source>
++        <translation type="vanished">短信验证码</translation>
++    </message>
++    <message>
++        <source>GetCode</source>
++        <translation type="vanished">获取验证码</translation>
++    </message>
++    <message>
++        <source>Return</source>
++        <translation type="vanished">返回</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++    <message>
++        <source>Commit</source>
++        <translation type="vanished">提交</translation>
++    </message>
++    <message>
++        <source>confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++    <message>
++        <source>commit</source>
++        <translation type="vanished">提交</translation>
++    </message>
++    <message>
++        <source>Mobile number acquisition failed</source>
++        <translation type="vanished">手机号获取失败,请手动输入</translation>
++    </message>
++    <message>
++        <source>Recapture</source>
++        <translation type="vanished">重新获取</translation>
++    </message>
++    <message>
++        <source>Network connection failure, please check</source>
++        <translation type="vanished">网络连接故障,请重试</translation>
++    </message>
++    <message>
++        <source>Phone is lock,try again in an hour</source>
++        <translation type="vanished">手机号已被锁定,1小时之后再试</translation>
++    </message>
++    <message>
++        <source>Phone code is wrong</source>
++        <translation type="vanished">验证码错误,请重试</translation>
++    </message>
++    <message>
++        <source>Current login expired,using wechat code!</source>
++        <translation type="vanished">登录信息过期,请重新使用微信扫码登录</translation>
++    </message>
++    <message>
++        <source>Unknown error, please try again later</source>
++        <translation type="vanished">未知错误,请稍后重试</translation>
++    </message>
++    <message>
++        <source>Please use the correct wechat scan code</source>
++        <translation type="vanished">请使用正确的微信扫码</translation>
++    </message>
++</context>
++<context>
++    <name>Power</name>
++    <message>
++        <source>select power plan</source>
++        <translation type="vanished">电源计划</translation>
++    </message>
++    <message>
++        <source>Balance (suggest)</source>
++        <translation type="vanished">平衡(推荐)</translation>
++    </message>
++    <message>
++        <source>Saving</source>
++        <translation type="vanished">节能</translation>
++    </message>
++    <message>
++        <source>Minimize performance</source>
++        <translation type="vanished">尽可能降低计算机能耗</translation>
++    </message>
++    <message>
++        <source>Bala&amp;nce (suggest)</source>
++        <translation type="obsolete">
++</translation>
++    </message>
++    <message>
++        <source>Autobalance energy and performance with available hardware</source>
++        <translation type="vanished">利用可用的硬件自动平衡消耗与性能</translation>
++    </message>
++    <message>
++        <source>Custom</source>
++        <translation type="vanished">自定义</translation>
++    </message>
++    <message>
++        <source>Users develop personalized power plans</source>
++        <translation type="vanished">用户制定个性化电源计划</translation>
++    </message>
++    <message>
++        <source>Power supply</source>
++        <translation type="vanished">电源供给</translation>
++    </message>
++    <message>
++        <source>Battery powered</source>
++        <translation type="vanished">电池供给</translation>
++    </message>
++    <message>
++        <source>Change PC sleep time:</source>
++        <translation type="vanished">系统进入空闲状态并于此时间后睡眠:</translation>
++    </message>
++    <message>
++        <source>Change DP close time:</source>
++        <translation type="vanished">系统进入空闲状态并于此时间后关闭显示器:</translation>
++    </message>
++    <message>
++        <source>Change pc sleep time:</source>
++        <translation type="vanished">系统进入空闲状态并于此时间后挂起:</translation>
++    </message>
++    <message>
++        <source>Change dp close time:</source>
++        <translation type="vanished">系统进入空闲状态并于此时间后关闭显示器:</translation>
++    </message>
++    <message>
++        <source>When close lid:</source>
++        <translation type="vanished">关闭笔记本电脑上盖时:</translation>
++    </message>
++    <message>
++        <source>Screen darkens use battery:</source>
++        <translation type="vanished">无操作状态下于此时间后减小屏幕亮度:</translation>
++    </message>
++    <message>
++        <source>Power Other Settings</source>
++        <translation type="vanished">电源图标设置</translation>
++    </message>
++    <message>
++        <source>S3 to S4 when:</source>
++        <translation type="vanished">挂起此时间后转为睡眠:</translation>
++    </message>
++    <message>
++        <source>Power Icon Settings</source>
++        <translation type="vanished">电源图标设置</translation>
++    </message>
++    <message>
++        <source>Power icon:</source>
++        <translation type="vanished">电源图标:</translation>
++    </message>
++    <message>
++        <source>power</source>
++        <translation type="vanished">电源</translation>
++    </message>
++    <message>
++        <source>Power</source>
++        <translation type="vanished">电源</translation>
++    </message>
++    <message>
++        <source>Change PC sleep time after %1 min:</source>
++        <translation type="vanished">系统%1分钟后进入空闲状态并于此时间后挂起:</translation>
++    </message>
++    <message>
++        <source>Change DP close time after %1 min:</source>
++        <translation type="vanished">系统%1分钟后进入空闲状态并于此时间后关闭显示器:</translation>
++    </message>
++    <message>
++        <source>Enter idle state %1 min and sleep after %2 min :</source>
++        <translation type="vanished">系统%1分钟后进入空闲状态并于%2分钟后挂起:</translation>
++    </message>
++    <message>
++        <source>Enter idle state %1 min and close after %2 min :</source>
++        <translation type="vanished">系统%1分钟后进入空闲状态并于%2分钟后关闭显示器:</translation>
++    </message>
++    <message>
++        <source>never</source>
++        <translation type="vanished">从不</translation>
++    </message>
++    <message>
++        <source>10 min</source>
++        <translation type="vanished">10分钟</translation>
++    </message>
++    <message>
++        <source>30 min</source>
++        <translation type="vanished">30分钟</translation>
++    </message>
++    <message>
++        <source>60 min</source>
++        <translation type="vanished">60分钟</translation>
++    </message>
++    <message>
++        <source>120 min</source>
++        <translation type="vanished">120分钟</translation>
++    </message>
++    <message>
++        <source>300 min</source>
++        <translation type="vanished">300分钟</translation>
++    </message>
++    <message>
++        <source>20 min</source>
++        <translation type="vanished">20分钟</translation>
++    </message>
++    <message>
++        <source>1 min</source>
++        <translation type="vanished">1分钟</translation>
++    </message>
++    <message>
++        <source>5 min</source>
++        <translation type="vanished">5分钟</translation>
++    </message>
++    <message>
++        <source>Require password when sleep/hibernation</source>
++        <translation type="vanished">睡眠/休眠唤醒时需要密码</translation>
++    </message>
++    <message>
++        <source>Require password when sleep</source>
++        <translation type="vanished">睡眠后唤醒需要密码</translation>
++    </message>
++    <message>
++        <source>Password required when waking up the screen</source>
++        <translation type="vanished">唤醒屏幕时需要密码</translation>
++    </message>
++    <message>
++        <source>Press the power button</source>
++        <translation type="vanished">按电源键时执行</translation>
++    </message>
++    <message>
++        <source>Time to close display</source>
++        <translation type="vanished">此时间段后关闭显示器</translation>
++    </message>
++    <message>
++        <source>Time to sleep</source>
++        <translation type="vanished">此时间段后系统进入睡眠</translation>
++    </message>
++    <message>
++        <source>Notebook cover</source>
++        <translation type="vanished">笔记本合盖时执行</translation>
++    </message>
++    <message>
++        <source>Using power</source>
++        <translation type="vanished">使用电源时</translation>
++    </message>
++    <message>
++        <source>Using battery</source>
++        <translation type="vanished">使用电池时</translation>
++    </message>
++    <message>
++        <source> Time to darken</source>
++        <translation type="vanished">此时间段后降低屏幕亮度</translation>
++    </message>
++    <message>
++        <source>Battery level is lower than</source>
++        <translation type="vanished">电量低于</translation>
++    </message>
++    <message>
++        <source>Run</source>
++        <translation type="vanished">时执行</translation>
++    </message>
++    <message>
++        <source>Low battery notification</source>
++        <translation type="vanished">低电量时通知</translation>
++    </message>
++    <message>
++        <source>Automatically run saving mode when low battery</source>
++        <translation type="vanished">低电量时自动开启节能模式</translation>
++    </message>
++    <message>
++        <source>Automatically run saving mode when the low battery</source>
++        <translation type="vanished">低电量时自动开启节能模式</translation>
++    </message>
++    <message>
++        <source>Automatically run saving mode when using battery</source>
++        <translation type="vanished">使用电池时自动开启节能模式</translation>
++    </message>
++    <message>
++        <source>Display remaining charging time and usage time</source>
++        <translation type="vanished">显示剩余充电时间和剩余使用时间</translation>
++    </message>
++    <message>
++        <source>General</source>
++        <translation type="vanished">通用</translation>
++    </message>
++    <message>
++        <source>Select Powerplan</source>
++        <translation type="vanished">电源计划</translation>
++    </message>
++    <message>
++        <source>Battery saving plan</source>
++        <translation type="vanished">电池节能计划</translation>
++    </message>
++    <message>
++        <source>nothing</source>
++        <translation type="vanished">无操作</translation>
++    </message>
++    <message>
++        <source>blank</source>
++        <translation type="vanished">关闭显示器</translation>
++    </message>
++    <message>
++        <source>suspend</source>
++        <translation type="vanished">睡眠</translation>
++    </message>
++    <message>
++        <source>hibernate</source>
++        <translation type="vanished">休眠</translation>
++    </message>
++    <message>
++        <source>interactive</source>
++        <translation type="vanished">询问</translation>
++    </message>
++    <message>
++        <source>5min</source>
++        <translation type="vanished">5分钟</translation>
++    </message>
++    <message>
++        <source>Performance Model</source>
++        <translation type="vanished">性能模式</translation>
++    </message>
++    <message>
++        <source>20min</source>
++        <translation type="vanished">20分钟</translation>
++    </message>
++    <message>
++        <source>10minn</source>
++        <translation type="vanished">10分钟</translation>
++    </message>
++    <message>
++        <source>15min</source>
++        <translation type="vanished">15分钟</translation>
++    </message>
++    <message>
++        <source>30min</source>
++        <translation type="vanished">30分钟</translation>
++    </message>
++    <message>
++        <source>1h</source>
++        <translation type="vanished">1小时</translation>
++    </message>
++    <message>
++        <source>2h</source>
++        <translation type="vanished">2小时</translation>
++    </message>
++    <message>
++        <source>10min</source>
++        <translation type="vanished">10分钟</translation>
++    </message>
++    <message>
++        <source>3h</source>
++        <translation type="vanished">3小时</translation>
++    </message>
++    <message>
++        <source>Balance Model</source>
++        <translation type="vanished">平衡模式</translation>
++    </message>
++    <message>
++        <source>Save Model</source>
++        <translation type="vanished">节能模式</translation>
++    </message>
++    <message>
++        <source>1min</source>
++        <translation type="vanished">1分钟</translation>
++    </message>
++    <message>
++        <source>3min</source>
++        <translation type="vanished">3分钟</translation>
++    </message>
++    <message>
++        <source>shutdown</source>
++        <translation type="vanished">关机</translation>
++    </message>
++    <message>
++        <source>always</source>
++        <translation type="vanished">显示电源图标在托盘栏</translation>
++    </message>
++    <message>
++        <source>present</source>
++        <translation type="vanished">仅当存在电池时显示</translation>
++    </message>
++    <message>
++        <source>charge</source>
++        <translation type="vanished">仅当使用电池时显示</translation>
++    </message>
++    <message>
++        <source>Perform operations when battery is low:</source>
++        <translation type="vanished">低电量执行操作:</translation>
++    </message>
++    <message>
++        <source>General Settings</source>
++        <translation type="vanished">通用设置</translation>
++    </message>
++    <message>
++        <source>When the power button is pressed:</source>
++        <translation type="vanished">按电源键时执行:</translation>
++    </message>
++</context>
++<context>
++    <name>Printer</name>
++    <message>
++        <source>Add Printers And Scanners</source>
++        <translation type="vanished">添加打印机和扫描仪</translation>
++    </message>
++    <message>
++        <source>Add printers and scanners</source>
++        <translation type="vanished">添加打印机和扫描仪</translation>
++    </message>
++    <message>
++        <source>Attrs</source>
++        <translation type="vanished">属性</translation>
++    </message>
++    <message>
++        <source>Attributes</source>
++        <translation type="vanished">属性</translation>
++    </message>
++    <message>
++        <source>List Of Existing Printers</source>
++        <translation type="vanished">可用打印机列表</translation>
++    </message>
++    <message>
++        <source>printer</source>
++        <translation type="vanished">打印机</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/printer/printer.cpp" line="43"/>
++        <source>Printer</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/printer/printer.cpp" line="121"/>
++        <source>Printers</source>
++        <translatorcomment>打印机</translatorcomment>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Printers And Scanners</source>
++        <translation type="vanished">打印机和扫描仪</translation>
++    </message>
++    <message>
++        <source>Add</source>
++        <translation type="vanished">添加</translation>
++        <extra-contents_path>/Printer/Add</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>PrivacyDialog</name>
++    <message>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="11"/>
++        <source>Set</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="73"/>
++        <source>End User License Agreement and Privacy Policy Statement of openKylin</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="75"/>
++        <source>End User License Agreement and Privacy Policy Statement of Kylin</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
++        <source>Openkylin Community.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Dear users of Kylin operating system and relevant products, 
++         This agreement describes your rights, obligations and prerequisites for your use of this product. Please read the clauses of the Agreement and the supplementary license (hereinafter collectively referred to as “the Agreement”) and the privacy policy statement for Kylin operating system (hereinafter referred to as “the Statement”).
++        “This product” in the Agreement and the Statement refers to “Kylin operating system software product” developed, produced and released by Kylinsoft Co., Ltd. and used for handling the office work or building the information infrastructure for enterprises and governments. “We” refers to Kylinsoft Co., Ltd. “You” refers to the users who pay the license fee and use the Kylin operating system and relevant products.
++
++End User License Agreement of Kylin 
++Release date of the version: July 30, 2021
++Effective date of the version: July 30, 2021
++        The Agreement shall include the following content:
++        I.     User license 
++        II.    Java technology limitations
++        III.   Cookies and other technologies
++        IV.    Intellectual property clause
++        V.     Open source code
++        VI.   The third-party software/services
++        VII.  Escape clause
++        VIII. Integrity and severability of the Agreement
++        IX.    Applicable law and dispute settlement
++
++        I.      User license
++        According to the number of users who have paid for this product and the types of computer hardware, we shall grant the non-exclusive and non-transferable license to you, and shall only allow the licensed unit and the employees signing the labor contracts with the unit to use the attached software (hereinafter referred to as “the Software”) and documents as well as any error correction provided by Kylinsoft.
++        1.     User license for educational institutions
++        In the case of observing the clauses and conditions of the Agreement, if you are an educational institution, your institution shall be allowed to use the attached unmodified binary format software and only for internal use. “For internal use” here refers to that the licensed unit and the employees signing the labor contracts with the unit as well as the students enrolled by your institution can use this product.
++        2.     Use of the font software
++        Font software refers to the software pre-installed in the product and generating font styles. You cannot separate the font software from the Software and cannot modify the font software in an attempt to add any function that such font software, as a part of this product, does not have when it is delivered to you, or you cannot embed the font software in the files provided as a commercial product for any fee or other remuneration, or cannot use it in equipment where this product is not installed. If you use the font software for other commercial purposes such as external publicity, please contact and negotiate with the font copyright manufacture to obtain the permissions for your relevant acts.
++
++        II.    Java technology limitations
++        You cannot change the “Java Platform Interface” (referred to as “JPI”, that is, the classes in the “java” package or any sub-package of the “java” package), whether by creating additional classes in JPI or by other means to add or change the classes in JPI. If you create an additional class as well as one or multiple relevant APIs, and they (i) expand the functions of Java platform; And (ii) may be used by the third-party software developers to develop additional software that may call the above additional APIs, you must immediately publish the accurate description of such APIs widely for free use by all developers. You cannot create or authorize other licensees to create additional classes, interfaces or sub-packages marked as “java”, “javax” and “sun” in any way, or similar agreements specified by Sun in any naming agreements. See the appropriate version of the Java Runtime Environment Binary Code License (located at http://jdk.java.net at present) to understand the availability of runtime code jointly distributed with Java mini programs and applications.
++
++        III.   Cookies and other technologies
++        In order to help us better understand and serve the users, our website, online services and applications may use the “Cookie” technology. Such Cookies are used to store the network traffic entering and exiting the system and the traffic generated due to detection errors, so they must be set. We shall understand how you interact with our website and online services by using such Cookies.
++        If you want to disable the Cookie and use the Firefox browser, you may set it in Privacy and Security Center of Firefox. If your use other browsers, please consult the specific schemes from the relevant suppliers.
++        In accordance with Article 76, paragraph 5 of the Network Security Law of the People&apos;s Republic of China, personal information refers to all kinds of information recorded in electronic or other ways, which can identify the natural persons’ personal identity separately or combined with other information, including but not limited to the natural person’s name, date of birth, identity certificate number, personal biological identification information, address and telephone number, etc. If Cookies contain the above information, or the combined information of non-personal information and other personal information collected through Cookie, for the purpose of this privacy policy, we shall regard the combined information as personal privacy information, and shall provide the corresponding security protection measures for your personal information by referring to Kylin Privacy Policy Statement.
++
++        IV.   Intellectual property clause
++        1.    Trademarks and Logos
++        This product shall be protected by the copyright law, trademark law and other laws and international intellectual property conventions. Title to the product and all associated intellectual property rights are retained by us or its licensors. No right, title or interest in any trademark, service mark, logo or trade name of us or its licensors is granted under the Agreement. Any use of Kylinsoft marked by you shall be in favor of Kylinsoft, and without our consent, you shall not arbitrarily use any trademark or sign of Kylinsoft.
++        2.    Duplication, modification and distribution
++        If the Agreement remains valid for all duplicates, you may and must duplicate, modify and distribute software observing GNU GPL-GNU General Public License agreement among the Kylin operating system software products in accordance with GNU GPL-GNU General Public License, and must duplicate, modify and distribute other Kylin operating system software products not observing GNU GPL-GNU General Public License agreement in accordance with relevant laws and other license agreements, but no derivative release version based on the Kylin operating system software products can use any of our trademarks or any other signs without our written consent.
++        Special notes: Such duplication, modification and distribution shall not include any software, to which GNU GPL-GNU General Public License does not apply, in this product, such as the software store, input method software, font library software and third-party applications contained by the Kylin operating system software products. You shall not duplicate, modify (including decompilation or reverse engineering) or distribute the above software unless prohibited by applicable laws.
++
++        V.    Open source code
++        For any open source codes contained in this product, any clause of the Agreement shall not limit, constrain or otherwise influence any of your corresponding rights or obligations under any applicable open source code license or all kinds of conditions you shall observe.
++
++        VI.  The third-party software/services
++        The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer. This product may contain or be bundled with the third-party software/services to which the separate license agreements are attached. When you use any third-party software/services with separate license agreements, you shall be bound by such separate license agreements.
++        We shall not have any right to control the third-party software/services in these products and shall not expressly or implicitly ensure or guarantee the legality, accuracy, effectiveness or security of the acts of their providers or users.
++
++        VII. Escape clause
++        1.    Limited warranty
++        We guarantee to you that within ninety (90) days from the date when you purchase or obtain this product in other legal ways (subject to the date of the sales contract), the storage medium (if any) of this product shall not be involved in any defects in materials or technology when it is normally used. All compensation available to you and our entire liability under this limited warranty will be for us to choose to replace this product media or refund the fee paid for this product.
++        2.   Disclaimer
++        In addition to the above limited warranty, the Software is provided “as is” without any express or implied condition statement and warranty, including any implied warranty of merchantability, suitability for a particular purpose or non-infringement, except that this disclaimer is deemed to be legally invalid.
++        3.   Limitation of responsibility
++        To the extent permitted by law, under any circumstances, no matter what theory of liability is adopted, no matter how it is caused, for any loss of income, profit or data caused by or related to the use or inability to use the Software, or for special indirect consequential incidental or punitive damages, neither we nor its licensors shall be liable (even if we have been informed of the possibility of such damages). According to the Agreement, in any case, whether in contract tort (including negligence) or otherwise, our liability to you will not exceed the amount you pay for the Software. The above limitations will apply even if the above warranty fails of its essential purpose.
++
++        VIII.Integrity and severability of the Agreement
++        1.    The integrity of the Agreement
++        The Agreement is an entire agreement on the product use concluded by us with you. It shall replace all oral or written contact information, suggestions, representations and guarantees inconsistent with the Agreement previous or in the same period. During the period of the Agreement, in case of any conflict clauses or additional clauses in the relevant quotations, orders or receipts or in other correspondences regarding the content of the Agreement between the parties, the Agreement shall prevail. No modification of the Agreement will be binding, unless in writing and signed by an authorized representative of each party.
++        2.   Severability of the Agreement
++        If any provision of the Agreement is deemed to be unenforceable, the deletion of the corresponding provision will still be effective, unless the deletion will hinder the realization of the fundamental purpose of the parties (in which case, the Agreement will be terminated immediately).
++
++        IX.  Applicable law and dispute settlement
++        1.   Application of governing laws
++        Any dispute settlement (including but not limited to litigation and arbitration) related to the Agreement shall be governed by the laws of the People’s Republic of China. The legal rules of any other countries and regions shall not apply.
++        2.  Termination
++        If the Software becomes or, in the opinion of either party, may become the subject of any claim for intellectual property infringement, either party may terminate the Agreement immediately.
++        The Agreement is effective until termination. You may terminate the Agreement at any time, but you must destroy all originals and duplicates of the Software. The Agreement will terminate immediately without notice from us if you fail to comply with any provision of the Agreement. At the time of termination, you must destroy all originals and duplicates of such software, and shall be legally liable for not observing the Agreement.
++        The Agreement shall be in both Chinese and English, and in case of ambiguity between any content above, the Chinese version shall prevail.
++
++        Privacy Policy Statement of Kylin Operating System/n        Release date of the version: July 30, 2021
++        Effective date of the version: July 30, 2021
++
++        We attach great importance to personal information and privacy protection. In order to guarantee the legal, reasonable and appropriate collection, storage and use of your personal privacy information and the transmission and storage in the safe and controllable circumstances, we hereby formulate this Statement. We shall provide your personal information with corresponding security protection measures according to the legal requirements and mature security standards in the industry.
++
++        The Statement shall include the following content:
++        I.   Collection and use your personal information
++        II.  How to store and protect your personal information
++        III. How to manage your personal information
++        IV.  Privacy of the third-party software/services
++        V.   Minors’ use of the products
++        VI.  How to update this Statement
++        VII. How to contact us
++
++        I.     How to collect and use your personal information
++        1.    The collection of personal information
++        We shall collect the relevant information when you use this product mainly to provide you with higher-quality products, more usability and better services. Part of information collected shall be provided by you directly, and other information shall be collected by us through your interaction with the product as well as your use and experience of the product. We shall not actively collect and deal with your personal information unless we have obtained your express consent according to the applicable legal stipulations.
++        1)   The licensing mechanism for this product allows you to apply for the formal license of the product in accordance with the contract and relevant agreements after you send a machine code to the commercial personnel of Kylinsoft, and the machine code is generated through encryption and conversion according to the information of the computer used by you, such as network card, firmware and motherboard. This machine code shall not directly contain the specific information of the equipment, such as network card, firmware and motherboard, of the computer used by you.
++        2)   Server of the software store of this product shall connect it according to the CPU type information and IP address of the computer used by you; at the same time, we shall collect the relevant information of your use of the software store of this product, including but not limited to the time of opening the software store, interaction between the pages, search content and downloaded content. The relevant information collected is generally recorded in the log of server system of software store, and the specific storage position may change due to different service scenarios.
++        3)   Upgrading and updating of this product shall be connected according to the IP address of the computer used by you, so that you can upgrade and update the system;
++        4)   Your personal information, such as E-mail address, telephone number and name, shall be collected due to business contacts and technical services.
++        5)   The biological characteristic management tool support system components of this product shall use the biological characteristics for authentication, including fingerprint, finger vein, iris and voiceprint. The biological characteristic information input by you shall be stored in the local computer, and for such part of information, we shall only receive the verification results but shall not collect or upload it. If you do not need to use the biological characteristics for the system authentication, you may disable this function in the biological characteristic management tool.
++        6)   This product shall provide the recording function. When you use the recording function of this product, we shall only store the audio content when you use the recording in the local computer but shall not collect or upload the content.
++        7)   The service and support functions of this product shall collect the information provided by you for us, such as log, E-mail, telephone and name, so as to make it convenient to provide the technical services, and we shall properly keep your personal information.
++        8)   In the upgrading process of this product, if we need to collect additional personal information of yours, we shall timely update this part of content.
++        2.   Use of personal information
++        We shall strictly observe the stipulations of laws and regulations and agreements with you to use the information collected for the following purposes. In case of exceeding the scope of following purposes, we shall explain to you again and obtain your consent.
++        1)   The needs such as product licensing mechanism, use of software store, system updating and maintenance, biological identification and online services shall be involved;
++        2)   We shall utilize the relevant information to assist in promoting the product security, reliability and sustainable service;
++        3)   We shall directly utilize the information collected (such as the E-mail address and telephone provided by you) to communicate with you directly, for example, business contact, technical support or follow-up service visit;
++        4)   We shall utilize the data collected to improve the current usability of the product, promote the product’s user experience (such as the personalized recommendation of software store) and repair the product defects, etc.;
++        5)   We shall use the user behavior data collected for data analysis. For example, we shall use the information collected to analyze and form the urban thermodynamic chart or industrial insight report excluding any personal information. We may make the information excluding identity identification content upon the statistics and processing public and share it with our partners, to understand how the users use our services or make the public understand the overall use trend of our services;
++        6)   We may use your relevant information and provide you with the advertising more related to you on relevant websites and in applications andother channels;
++        7)   In order to follow the relevant requirements of relevant laws and regulations, departmental regulations and rules and governmental instructions.
++        3.   Information sharing and provision
++        We shall not share or transfer your personal information to any third party, except for the following circumstances:
++        1)   After obtaining your clear consent, we shall share your personal information with the third parities;
++        2)   In order to achieve the purpose of external processing, we may share your personal information with the related companies or other third-party partners (the third-party service providers, contractors, agents and application developers). We shall protect your information security by means like encryption and anonymization;
++        3)   We shall not publicly disclose the personal information collected. If we must disclose it publicly, we shall notify you of the purpose of such public disclosure, type of information disclosed and the sensitive information that may be involved, and obtain your consent;
++        4)   With the continuous development of our business, we may carry out the transactions, such as merger, acquisition and asset transfer, and we shall notify you of the relevant circumstances, and continue to protect or require the new controller to continue to protect your personal information according to laws and regulations and the standards no lower than that required by this Statement;
++        5)   If we use your personal information beyond the purpose claimed at the time of collection and the directly or reasonably associated scope, we shall notify you again and obtain your consent before using your personal information.
++        4.   Exceptions with authorized consent
++        1)   It is directly related to national security, national defense security and other national interests; 
++        2)   It is directly related to public safety, public health and public knowledge and other major public interests; 
++        3)   It is directly related to crime investigation, prosecution, judgment and execution of judgment; 
++        4)   It aims to safeguard the life, property and other major legal rights and interests of you or others but it is impossible to obtain your own consent; 
++        5)   The personal information collected is disclosed to the public by yourself; 
++        6)   Personal information collected from legally publicly disclosed information, such as legal news reports, government information disclosure and other channels; 
++        7)   It is necessary to sign and perform of the contract according to your requirement; 
++        8)   It is necessary to maintain the safe and stable operation of the provided products or services, including finding and handling any fault of products or services;
++        9)   It is necessary to carry out statistical or academic research for public interest, and when the results of academic research or description are provided, the personal information contained in the results is de-identified;
++        10) Other circumstances specified in the laws and regulations.
++
++        II.   How to store and protect personal information
++        1.   Information storage place
++        We shall store the personal information collected and generated in China within the territory of China in accordance with laws and regulations.
++        2.   Information storage duration 
++        Generally speaking, we shall retain your personal information for the time necessary to achieve the purpose or for the shortest term stipulated by laws and regulations. Information recorded in the log shall be kept for a specified period and be automatically deleted according to the configuration.
++        When operation of our product or services stops, we shall notify you in the forms such as notification and announcement, delete your personal information or conduct anonymization within a reasonable period and immediately stop the activities collecting the personal information.
++        3.   How to protect the information
++        We shall strive to provide guarantee for the users’ information security, to prevent the loss, improper use, unauthorized access or disclosure of the information.
++        We shall use the security protection measures within the reasonable security level to protect the information security. For example, we shall protect your system account and password by means like encryption.
++        We shall establish the special management systems, processes and organizations to protect the information security. For example, we shall strictly restrict the scope of personnel who access to the information, and require them to observe the confidentiality obligation.
++        4.   Emergency response plan
++        In case of security incidents, such as personal information disclosure, we shall start the emergency response plan according to law, to prevent the security incidents from spreading, and shall notify you of the situation of the security incidents, the possible influence of the incidents on you and the remedial measures we will take, in the form of pushing the notifications and announcements. We will also report the disposition of the personal information security events according to the laws, regulations and regulatory requirements.
++
++        III. How to manage your personal information
++        If you worry about the personal information disclosure caused by using this product, you may consider suspending or not using the relevant functions involving the personal information, such as the formal license of the product, application store, system updating and upgrading and biological identification, according to the personal and business needs. 
++        Please pay attention to the personal privacy protection at the time of using the third-party software/services in this product.
++
++        IV.  Privacy of the third-party software/services
++
++        The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer.
++        When you install or use the third-party software/services in this product, the privacy protection and legal responsibility of the third-party software/services shall be independently borne by the third-party software/services. Please carefully read and examine the privacy statement or clauses corresponding to the third-party software/services, and pay attention to the personal privacy protection.
++
++        V.   Minors’ use of the products
++        If you are a minor, you shall obtain your guardian’s consent on your use of this product and the relevant service clauses. Except for the information required by the product, we shall not deliberately require the minors to provide more data. With the guardians’ consent or authorization, the accounts created by the minors shall be deemed to be the same as any other accounts. We have formulated special information processing rules to protect the personal information security of minors using this product. The guardians shall also take the appropriate preventive measures to protect the minors and supervise their use of this product.
++
++        VI.  How to update this Statement
++        We may update this Statement at any time, and shall display the updated statement to you through the product installation process or the company’s website at the time of updating. After such updates take effect, if you use such services or any software permitted according to such clauses, you shall be deemed to agree on the new clauses. If you disagree on the new clauses, then you must stop using this product, and please close the accountcreated by you in this product; if you are a guardian, please help your minor child to close the account created by him/her in this product.
++
++        VII. How to contact us
++        If you have any question, or any complaints or opinions on this Statement, you may seek advice through our customer service hotline 400-089-1870, or the official website (www.kylinos.cn), or “service and support” application in this product. You may also contact us by E-mail (market@kylinos.cn). 
++        We shall timely and properly deal with them. Generally, a reply will be made within 15 working days.
++        The Statement shall take effect from the date of updating. The Statement shall be in Chinese and English at the same time and in case of any ambiguity of any clause above, the Chinese version shall prevail.
++        Last date of updating: November 1, 2021
++
++Address:
++        Building 3, Xin’an Entrepreneurship Plaza, Tanggu Marine Science and Technology Park, Binhai High-tech Zone, Tianjin (300450)
++        Silver Valley Tower, No. 9, North Forth Ring West Road, Haidian District, Beijing (100190)
++        Building T3, Fuxing World Financial Center, No. 303, Section 1 of Furong Middle Road, Kaifu District, Changsha City (410000)
++        Digital Entertainment Building, No. 1028, Panyu Road, Xuhui District, Shanghai (200030)
++Tel.:
++        Tianjin (022) 58955650      Beijing (010) 51659955
++        Changsha (0731) 88280170        Shanghai (021) 51098866
++Fax:
++        Tianjin (022) 58955651      Beijing (010) 62800607
++        Changsha (0731) 88280166        Shanghai (021) 51062866
++
++        Company website: www.kylinos.cn
++        E-mail: support@kylinos.cn</source>
++        <translation type="vanished">尊敬的银河麒麟操作系统及相关产品用户:
++        本协议介绍您的权利、义务以及您使用本产品的前提条件。请您仔细阅读本协议条款、补充许可条款(统称“协议”)及银河麒麟操作系统隐私政策声明(以下简称“声明”)。
++        本协议及声明中的“本产品”是指由麒麟软件有限公司开发并制作发行的用于办公或构建企业及政府的信息化基础设施——“银河麒麟操作系统软件产品”。“我们”是指麒麟软件有限公司。“您”是指支付授权费用并使用银河麒麟操作系统及相关产品的用户。
++
++银河麒麟最终用户使用许可协议
++版本发布日期:【2021】年【7】月【30】日
++版本生效日期:【2021】年【7】月【30】日
++
++        本协议将向您说明以下内容:
++        一、使用许可
++        二、Java技术限制
++        三、Cookie和其他技术
++        四、知识产权条款
++        五、开放源代码说明
++        六、第三方软件/服务说明
++        七、免责条款
++        八、协议完整性及可分割性说明
++        九、适用法律及争议解决
++
++        一、使用许可
++
++        按照已经为本产品支付费用的用户数目及计算机硬件类型,我们向您授予非排他、不可转让的许可,仅允许被授权人单位及与其签订劳动合同的员工使用由麒麟软件提供的随附软件和文档以及任何错误纠正。
++        1.教育机构使用许可
++        在遵守本协议的条款和条件的情况下,如果您是教育机构,允许贵机构仅在内部使用随附的未经修改的二进制格式的软件。此处的“在内部使用”是指被授权人单位及与其签订劳动合同的员工以及在贵机构入学的学生使用本产品。 
++        2.字型软件使用
++        字型软件指本产品中预装的和生成字体样式的软件。您不可从软件中分离字型软件,不可改动字型软件,以新增此等字型软件被作为本产品的一部分交付予您时所不具备的任何功能,不可将字型软件嵌入作为商业产品提供以换取收费或其他报酬的文件、不可脱离安装了本产品的机器使用。如将字型软件用于对外宣传等其他商业用途时,请您与字体版权厂商联系协商以获得对您相关行为的许可。
++
++        二、Java技术限制
++
++        您不可更改“Java平台界面”(简称“JPI”,即指明为“java”包或“java”包的任何子包中的类),无论通过在JPI中创建额外的类,还是通过其他方式导致对JPI中的类进行增添或更动,均为不可。如果您创建一个额外的类以及一个或多个相关的API,而它们(i)扩展Java平台的功能;并且(ii)可供第三方软件开发者用于开发可调用上述额外API的额外软件,则您必须迅即广泛公布对此种API的准确说明,以供所有开发者免费使用。您不可创建、或授权其他被许可人创建以任何方式标示为“java”、“javax”、“sun”的额外的类、界面、子包或Sun在任何命名约定中指明的类似约定。参见Java运行时环境二进制代码许可的适当版本(目前位于http://jdk.java.net),以了解可与Java小程序和应用程序共同分发的运行时代码的可供情况。
++
++        三、Cookie和其他技术
++
++        为帮助我们更好地了解并服务用户,我们的网站、在线服务和应用程序可能会使用“Cookie”技术。这些Cookie用于存储进出系统的网络流量以及因检测错误而生成的流量,因此必须设置。 我们通过使用这些Cookie来了解您与我们的网站和在线服务如何进行交互。 
++        如果您想禁用 Cookie 并且使用的是Firefox浏览器,可在Firefox的隐私与安全中心进行设置。如果您使用的是其他浏览器,请向相关供应商咨询具体方案。
++        依照《中华人民共和国网络安全法》第七十六条第五款,个人信息,是指以电子或者其他方式记录的能够单独或者与其他信息结合识别自然人个人身份的各种信息,包括但不限于自然人的姓名、出生日期、身份证件号码、个人生物识别信息、住址、电话号码等。如果Cookie中包含上述信息,或者存在通过Cookie收集的非个人信息与其他个人信息合并后的信息,出于本隐私政策的目的,我们会将合并后的信息视为个人隐私信息,将参照银河麒麟隐私政策声明,为您的个人信息提供相应的安全保护措施。
++
++        四、知识产权条款
++
++        1.商标和标识
++        本产品受到版权(著作权)法、商标法和其他法律及国际知识产权公约的保护。我们或其许可方保留对本产品的所有权及所有相关的知识产权。对于我们或其许可方的任何商标、服务标记、标识或商号的任何权利、所有权或利益,本协议均不作任何授权。您对麒麟软件标记的任何使用都应有利于麒麟软件,未经我们书面同意,不得擅自使用麒麟软件任何商标、标识。 
++        2.关于复制、修改及分发
++        如果在所有复制品中维持本协议书不变,您可以且必须根据《GNU GPL-GNU通用公共许可证》复制、修改及分发银河麒麟操作系统软件产品中遵守《GNU GPL-GNU通用公共许可证》协议的软件,其他不遵守《GNU GPL-GNU通用公共许可证》协议的银河麒麟操作系统软件产品必须根据相关法律、其他许可协议进行复制、修改及分发,但任何以银河麒麟操作系统软件产品为基础的衍生发行版未经我们的书面授权不能使用任何我们的商标或其他任何标志。
++        特别注意:该复制、修改及分发不包括本产品中包含的任何不适用《GNU GPL-GNU通用公共许可证》的软件,如银河麒麟操作系统软件产品中包含的软件商店、输入法软件、字库软件、第三方应用软件等。除非适用法律予以禁止,否则您不得对上述软件进行复制、修改(包括反编译或反向工程)、分发。
++
++        五、开放源代码说明
++
++        对于本产品中包含的任何开放源代码,本协议的任何条款均不得限制、约束或以其它方式影响任何适用开放源代码许可证赋予您的任何相应的权利或者义务或您应遵守的各种条件。
++
++        六、第三方软件/服务说明
++
++        本协议所指的第三方软件/服务是指由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。本产品可能包含或捆绑有第三方软件/服务,这些第三方软件/服务附带单独的许可协议,您使用附带单独许可协议的任何第三方软件/服务需受到该单独许可协议的约束。
++        我们不对本产品中的第三方软件/服务拥有任何控制权,也不对其提供方或用户行为的合法性、准确性、有效性、安全性进行任何明示或默示的保证或担保。
++
++        七、免责条款
++
++        1.有限担保
++        我们向您担保,自购买或其他合法取得本产品之日起九十(90)天内(以销售合同日期为准),本产品的存储介质(如果有)在正常使用的情况下无材料和工艺方面的缺陷。在本有限担保项下,您可获得的所有补偿及我们的全部责任为由我们选择更换本产品介质或退还本产品的购买费用。
++        2.免责声明
++        除上述有限担保外,本软件按“原样”提供,不提供任何明示或默示的条件、陈述及担保,包括对适销性、对特定用途的适用性或非侵权性的任何默示的担保,均不予负责,但本免责声明被认定为法律上无效的情况除外。
++        3.责任限制
++        在法律允许范围内,无论在何种情况下,无论采用何种有关责任的理论,无论因何种方式导致,对于因使用或无法使用本软件引起的或与之相关的任何收益损失、利润或数据损失,或者对于特殊的、间接的、后果性的、偶发的或惩罚性的损害赔偿,我们或其许可方均不承担任何责任(即使我们已被告知可能出现上述损害赔偿)。根据本协议,在任何情况下,无论是在合同、侵权行为(包括过失)方面,还是在其他方面,我们对您的责任将不超过您就本软件所支付的金额。即使上述担保未能达到其基本目的,上述限制仍然适用。
++
++        八、协议完整性及可分割性说明
++
++        1.协议完整性
++        本协议是我们就产品使用与您达成的完整协议。它取代此前或同期的所有和本协议不一致的口头或书面往来信息、建议、陈述和担保。在本协议期间,有关报价、订单、回执或各方之间就本协议内容进行的其他往来通信中的任何冲突条款或附加条款,均以本协议为准。对本协议的任何修改均无约束力,除非通过书面进行修改并由每一方的授权代表签字。
++        2.可分割性
++        如果本协议中有任何规定被认定为无法执行,则删除相应规定,本协议仍然有效,除非该删除会防碍各方根本目的的实现(在这种情况下,本协议将立即终止)。
++
++        九、适用法律及争议解决
++
++        1.管辖法律适用
++        与本协议相关的任何争议解决(包括但不限于诉讼、仲裁等)均受适用中华人民共和国法律管辖。选择其它任何国家和地区的法律规则不予适用。
++        2.终止
++        如果本软件成为或在任一方看来可能成为任何知识产权侵权索赔之标的,则任一方可立即终止本协议。
++        本协议在终止之前有效。您可以随时终止本协议,但必须同时销毁本软件的全部正本和副本。如果您未遵守本协议的任何规定,则本协议将不经我们发出通知立即终止。终止时,您必须销毁本软件的全部正本和副本,并且需承担因未遵守本协议而导致的法律责任。
++
++        本协议提供中英文两种版本,以上任何内容如有歧义,以中文版本为准。
++
++银河麒麟操作系统隐私政策声明
++版本发布日期:【2021】年【7】月【30】日
++版本生效日期:【2021】年【7】月【30】日
++
++        我们非常重视个人信息和隐私保护,为了保证合法、合理、适度的收集、存储、使用您的个人隐私信息,并在安全、可控的情况下进行传输、存储,我们制定了本声明。我们将会按照法律要求和业界成熟安全标准,为您的个人信息提供相应的安全保护措施。
++
++        本声明将向您说明以下内容:
++        一、关于收集和使用您的个人信息
++        二、如何存储和保护您的个人信息
++        三、如何管理您的个人信息
++        四、关于第三方软件/服务的隐私说明
++        五、关于未成年人使用产品
++        六、本声明如何更新
++        七、如何联系我们
++
++        一、如何收集和使用您的个人信息
++
++        1.收集个人信息的情况
++        我们在您使用本产品过程中收集相关的信息,主要为了向您提供更高质量、更易用的产品和更好的服务。收集的部分信息由您直接提供,其他信息则由我们通过您与产品的交互以及对产品的使用和体验收集而来。除非我们已根据适用的法律规定取得您的明示同意,我们不会主动收集并处理您的个人信息。
++        1)本产品授权许可机制,会根据您所使用计算机的网卡、固件和主板等信息通过加密机制和转换方法生成申请产品正式授权许可的机器码;您将该机器码发送给麒麟软件商务人员后,可根据合同及相关协议申请正式许可。该机器码不直接包含您所使用计算机的网卡、固件和主板等设备的具体信息。
++        2)本产品软件商店的服务器端,会根据您所使用计算机的CPU类型信息以及IP地址进行连接,同时我们会收集您使用本产品软件商店的相关信息,包括但不限于打开软件商店的时间、各页面之间的交互、搜索内容、下载的内容等,收集的相关信息一般记录在软件商店的服务端系统的日志中,具体存储位置可能因为不同的服务场景有所变动。
++        3)本产品的升级更新,会根据您所使用计算机的IP地址进行连接,以便实现您升级更新系统;
++        4)因业务往来及技术服务等向您收集电子邮箱、电话、姓名等个人信息。
++        5)本产品的生物特征管理工具支持系统组件使用生物特征进行认证,包括指纹、指静脉、虹膜、声纹等。您录入的生物特征信息将储存在本地计算机,这部分信息我们仅接收验证结果,不会收集和上传。如您不需要使用生物特征进行系统认证,可以在生物特征管理工具中关闭该功能。
++        6)本产品提供录音功能,您在使用本产品录音软件中,我们仅会将您使用录音时的音频内容存储在本地计算机中,不会进行收集和上传。
++        7)本产品的服务与支持功能会收集由您提供给我们的日志、电子邮箱、电话、姓名等信息,便于提供技术服务,我们将妥善保管您的个人信息。
++        8)本产品升级过程中,如需新增收集您的个人信息,我们将及时更新本部分内容。
++        2.使用个人信息的情况
++        我们严格遵守法律法规的规定及与您的约定,将收集的信息用于以下用途。若我们超出以下用途,我们将再次向您进行说明,并征得您的同意。
++        1)涉及产品许可机制、软件商店使用、系统更新维护、生物识别、在线服务等需要;
++        2)我们会利用相关信息协助提升产品的安全性、可靠性和可持续服务;
++        3)我们会利用收集的信息(例如您提供的电子邮件地址、电话等)直接与您沟通。例如,业务联系、技术支持或服务回访;
++        4)我们会利用收集的数据改进产品当前的易用性、提升产品用户体验(例如软件商店的个性化推荐)以及修复产品缺陷等;
++        5)我们会将所收集到的用户行为数据用于大数据分析。例如,我们将收集到的信息用于分析形成不包含任何个人信息的城市热力图或行业洞察报告。我们可能对外公开并与我们的合作伙伴分享经统计加工后不含身份识别内容的信息,用于了解用户如何使用我们服务或让公众了解我们服务的总体使用趋势;
++        6)我们可能使用您的相关信息,在相关网站、应用及其他渠道向您提供与您更加相关的广告;
++        7)为了遵从相关法律法规、部门规章、政府指令的相关要求。
++        3.信息的分享及对外提供
++        我们不会共享或转让您的个人信息至第三方,但以下情况除外:
++        1)获取您的明确同意后,我们会与第三方分享您的个人信息;
++        2)为实现外部处理的目的,我们可能与关联公司或其他第三方合作伙伴(第三方服务供应商、承包商、代理、应用开发者等)分享您的个人信息。我们将采用加密、匿名化处理等手段来保障您的信息安全;
++        3)我们不会对外公开披露所收集的个人信息,如必须公开披露时,我们会向您告知此次公开披露的目的、披露信息的类型及可能涉及的敏感信息,并征得您的同意;
++        4)随着我们业务的持续发展,我们有可能进行合并、收购、资产转让等交易,我们将告知相关情形,按照法律法规及不低于本声明所要求的标准继续保护或要求新的控制者继续保护您的个人信息;
++        5)如我们使用您的个人信息,超出了与收集时所声称的目的及具有直接或合理关联的范围,我们将在使用您的个人信息前,再次向您告知并征得您的同意。
++        4.征得授权同意的例外情况
++        1)与国家安全、国防安全等国家利益直接相关的;
++        2)与公共安全、公共卫生、公众知情等重大公共利益直接相关的;
++        3)与犯罪侦查、起诉、审判和判决执行等直接相关的;
++        4)出于维护您或其他个人的生命、财产等重大合法权益但又无法得到您本人同意的;
++        5)所收集的个人信息是您自行向社会公众公开的;
++        6)从合法公开披露的信息中收集的个人信息,如合法的新闻报道、政府信息公开等渠道;
++        7)根据您要求签订和履行合同所必需的;
++        8)用于维护所提供的产品或服务的安全稳定运行所必需的。如发现、处置产品或服务的故障;
++        9)出于公共利益开展统计或学术研究所必需,且其对外提供学术研究或描述的结果时,对结果中所包含的个人信息进行去标识化处理的;
++        10)法律法规规定的其他情形。
++
++        二、我们如何存储和保护您的个人信息
++
++        1.信息存储的地点
++        我们会按照法律法规规定,将在中国境内收集和产生的个人信息存储于中国境内。
++        2.信息存储的期限
++        一般而言,我们仅为实现目的所必需的时间或法律法规规定最短期限保留您的个人信息。记录在日志中的信息会按配置在一定期限保存及自动删除。
++        当我们的产品或服务发生停止运营的情形时,我们将以通知、公告等形式通知您,在合理的期限内删除您的个人信息或进行匿名化处理,并立即停止收集个人信息的活动。
++        3.我们如何保护这些信息
++        我们努力为用户的信息安全提供保障,以防止信息的丢失、不当使用、未经授权访问或披露。
++        我们将在合理的安全水平内使用安全保护措施以保障信息的安全。例如,我们会使用加密技术等手段来保护您的系统级账户密码。
++        我们建立专门的管理制度、流程和组织以保障信息的安全。例如,我们严格限制访问信息的人员范围,要求他们遵守保密义务。
++        4.应急预案
++        若发生个人信息泄露等安全事件,我们会依法启动应急预案,阻止安全事件扩大,并以推送通知、公告等形式告知您安全事件的情况、事件可能对您的影响以及我们将采取的补救措施。我们还将按照法律法规和监管部门要求,上报个人信息安全事件的处置情况。
++
++        三、如何管理您的个人信息
++
++        如果担心因使用本产品导致个人信息的泄露,您可根据个人及业务需要考虑暂停或不使用涉及个人信息的相关功能,如产品正式授权许可、应用商店、系统更新升级、生物识别等。
++在使用本产品之上的第三方软件/服务时,请注意个人隐私保护。
++
++        四、关于第三方软件/服务的隐私说明
++
++        本协议所指的第三方软件/服务是由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。
++        您在本产品之上安装或使用第三方软件/服务时,第三方软件/服务的隐私保护和法律责任由第三方软件/服务自行负责,请您仔细阅读和审查第三方软件/服务对应的隐私声明或条款,注意个人隐私保护。
++
++        五、关于未成年人使用产品
++
++        如果您是未成年人,则需要您的监护人同意您使用本产品并同意相关服务条款。除了提供产品所需要的信息外,我们不会刻意要求未成年人提供其他更多数据。在征得监护人同意或授权后,未成年人所创建的账户即被视为等同于其他任何账户。我们制定了专门的信息处理规则以保护使用本产品的未成年人的个人信息安全。监护人也应采取适当的预防措施保护未成年人,监督其对本产品的使用。
++
++        六、本声明如何更新
++
++        我们可能会随时更新本声明,并且会在变更时通过产品安装过程或公司网站向您展示变更后的声明。在这些变更生效后使用服务或根据这些条款授予许可的任何软件,即表示您同意新的条款。如果您不同意新的条款,则必须停止使用本产品,请关闭您在本产品之上创建的账户;如果您是监护人,请帮助您的未成年子女关闭他或她在本产品之上创建的账户。
++
++        七、如何联系我们
++
++        如您对本声明存在任何疑问,或任何相关的投诉、意见,可通过我们的客服热线400-089-1870、官方网站(www.kylinos.cn)或本产品中“服务与支持”应用进行咨询或反映。您也可以通过发送邮件至market@kylinos.cn与我们联系。
++        我们会及时、妥善处理您的问题。一般情况下,我们将在15个工作日内给予答复。
++        本声明自更新之日起生效,同时提供中英文两种版本,以上任何条款如有歧义,以中文版本为准。
++        最近更新日期:2021年11月1日
++
++地址:
++        天津市滨海高新区塘沽海洋科技园信安创业广场3号楼(300450)
++        北京市海淀区北四环西路9号银谷大厦(100190)
++        长沙市开福区芙蓉中路1段303号富兴世界金融中心T3栋(410000)
++        上海市徐汇区番禺路1028号数娱大厦(200030)
++电话:
++        天津(022)58955650    北京(010)51659955  
++        长沙(0731)88280170    上海(021)51098866
++传真:
++        天津(022)58955651    北京(010)62800607 
++        长沙(0731)88280166    上海(021)51062866
++公司网站:www.kylinos.cn
++电子邮件:support@kylinos.cn
++</translation>
++    </message>
++    <message>
++        <source>Dear users of Kylin operating system and relevant products,
++
++   Please read the clauses of the Agreement and the supplementary license (hereinafter collectively referred to as “the Agreement”) and the privacy policy statement for Kylin operating system (hereinafter referred to as “the Statement”). When you click the next step to confirm your complete understanding of the content, it shall indicate that you have accepted the clauses of the Agreement, and the Agreement shall take effect immediately and be legally binding on you and the Company.
++   “This product” in the Agreement and the Statement refers to “Kylin operating system software product” developed, produced and released by Kylinsoft Co., Ltd. and used for handling the office work or building the information infrastructure for enterprises and governments. “We” refers to Kylinsoft Co., Ltd. “You” refers to the users who pay the license fee and use the Kylin operating system and relevant products. 
++
++End User License Agreement of Kylin 
++Release date of the version: July 30, 2021
++Effective date of the version: July 30, 2021 
++
++The Agreement shall include the following content:
++I. 	User license 
++II. 	Java technology limitations
++III. 	Cookies and other technologies
++IV. 	Intellectual property clause
++V. 	Open source code
++VI. 	The third-party software/services
++VII. Escape clause
++VIII. Integrity and severability of the Agreement
++IX. 	Applicable law and dispute settlement
++
++   I. 	User license
++
++   According to the number of users who have paid for this product and the types of computer hardware, we shall grant the non-exclusive and non-transferable license to you, and shall only allow the licensed unit and the employees signing the labor contracts with the unit to use the attached software (hereinafter referred to as “the Software”) and documents as well as any error correction provided by Kylinsoft.
++   1.	User license for educational institutions
++   In the case of observing the clauses and conditions of the Agreement, if you are an educational institution, your institution shall be allowed to use the attached unmodified binary format software and only for internal use. “For internal use” here refers to that the licensed unit and the employees signing the labor contracts with the unit as well as the students enrolled by your institution can use this product. 
++   2.	Use of the font software
++   Font software refers to the software pre-installed in the product and generating font styles. You cannot separate the font software from the Software and cannot modify the font software in an attempt to add any function that such font software, as a part of this product, does not have when it is delivered to you, or you cannot embed the font software in the files provided as a commercial product for any fee or other remuneration, or cannot use it in equipment where this product is not installed. If you use the font software for other commercial purposes such as external publicity, please contact and negotiate with the font copyright manufacture to obtain the permissions for your relevant acts.
++
++   II. 	Java technology limitations 
++
++   You cannot change the “Java Platform Interface” (referred to as “JPI”, that is, the classes in the “java” package or any sub-package of the “java” package), whether by creating additional classes in JPI or by other means to add or change the classes in JPI. If you create an additional class as well as one or multiple relevant APIs, and they (i) expand the functions of Java platform; And (ii) may be used by the third-party software developers to develop additional software that may call the above additional APIs, you must immediately publish the accurate description of such APIs widely for free use by all developers. You cannot create or authorize other licensees to create additional classes, interfaces or sub-packages marked as “java”, “javax” and “sun” in any way, or similar agreements specified by Sun in any naming agreements. See the appropriate version of the Java Runtime Environment Binary Code License (located at http://jdk.java.net at present) to understand the availability of runtime code jointly distributed with Java mini programs and applications.
++
++   III. 	Cookies and other technologies
++
++   In order to help us better understand and serve the users, our website, online services and applications may use the “Cookie” technology. Such Cookies are used to store the network traffic entering and exiting the system and the traffic generated due to detection errors, so they must be set. We shall understand how you interact with our website and online services by using such Cookies.
++   If you want to disable the Cookie and use the Firefox browser, you may set it in Privacy and Security Center of Firefox. If your use other browsers, please consult the specific schemes from the relevant suppliers. 
++   In accordance with Article 76, paragraph 5 of the Network Security Law of the People&apos;s Republic of China, personal information refers to all kinds of information recorded in electronic or other ways, which can identify the natural persons’ personal identity separately or combined with other information, including but not limited to the natural person’s name, date of birth, identity certificate number, personal biological identification information, address and telephone number, etc. If Cookies contain the above information, or the combined information of non-personal information and other personal information collected through Cookie, for the purpose of this privacy policy, we shall regard the combined information as personal privacy information, and shall provide the corresponding security protection measures for your personal information by referring to Kylin Privacy Policy Statement.
++
++   IV. 	Intellectual property clause
++
++   1.	Trademarks and Logos
++   This product shall be protected by the copyright law, trademark law and other laws and international intellectual property conventions. Title to the product and all associated intellectual property rights are retained by us or its licensors. No right, title or interest in any trademark, service mark, logo or trade name of us or its licensors is granted under the Agreement. Any use of Kylinsoft marked by you shall be in favor of Kylinsoft, and without our consent, you shall not arbitrarily use any trademark or sign of Kylinsoft.
++  2.	Duplication, modification and distribution
++   If the Agreement remains valid for all duplicates, you may and must duplicate, modify and distribute software observing GNU GPL-GNU General Public License agreement among the Kylin operating system software products in accordance with GNU GPL-GNU General Public License, and must duplicate, modify and distribute other Kylin operating system software products not observing GNU GPL-GNU General Public License agreement in accordance with relevant laws and other license agreements, but no derivative release version based on the Kylin operating system software products can use any of our trademarks or any other signs without our written consent.
++   Special notes: Such duplication, modification and distribution shall not include any software, to which GNU GPL-GNU General Public License does not apply, in this product, such as the software store, input method software, font library software and third-party applications contained by the Kylin operating system software products. You shall not duplicate, modify (including decompilation or reverse engineering) or distribute the above software unless prohibited by applicable laws. 
++
++   V. 	Open source code
++
++   For any open source codes contained in this product, any clause of the Agreement shall not limit, constrain or otherwise influence any of your corresponding rights or obligations under any applicable open source code license or all kinds of conditions you shall observe.
++
++   VI.  The third-party software/services
++
++   The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer. This product may contain or be bundled with the third-party software/services to which the separate license agreements are attached. When you use any third-party software/services with separate license agreements, you shall be bound by such separate license agreements.
++   We shall not have any right to control the third-party software/services in these products and shall not expressly or implicitly ensure or guarantee the legality, accuracy, effectiveness or security of the acts of their providers or users.
++
++   VII. 	Escape clause
++
++   1.	Limited warranty
++    We guarantee to you that within ninety (90) days from the date when you purchase or obtain this product in other legal ways (subject to the date of the sales contract), the storage medium (if any) of this product shall not be involved in any defects in materials or technology when it is normally used. All compensation available to you and our entire liability under this limited warranty will be for us to choose to replace this product media or refund the fee paid for this product.
++   2.	Disclaimer
++   In addition to the above limited warranty, the Software is provided “as is” without any express or implied condition statement and warranty, including any implied warranty of merchantability, suitability for a particular purpose or non-infringement, except that this disclaimer is deemed to be legally invalid.
++   3.	Limitation of responsibility
++   To the extent permitted by law, under any circumstances, no matter what theory of liability is adopted, no matter how it is caused, for any loss of income, profit or data caused by or related to the use or inability to use the Software, or for special indirect consequential incidental or punitive damages, neither we nor its licensors shall be liable (even if we have been informed of the possibility of such damages). According to the Agreement, in any case, whether in contract tort (including negligence) or otherwise, our liability to you will not exceed the amount you pay for the Software. The above limitations will apply even if the above warranty fails of its essential purpose.
++
++   VIII. 	Integrity and severability of the Agreement
++
++   1.	The integrity of the Agreement
++  The Agreement is an entire agreement on the product use concluded by us with you. It shall replace all oral or written contact information, suggestions, representations and guarantees inconsistent with the Agreement previous or in the same period. During the period of the Agreement, in case of any conflict clauses or additional clauses in the relevant quotations, orders or receipts or in other correspondences regarding the content of the Agreement between the parties, the Agreement shall prevail. No modification of the Agreement will be binding, unless in writing and signed by an authorized representative of each party.
++   2.	Severability of the Agreement
++   If any provision of the Agreement is deemed to be unenforceable, the deletion of the corresponding provision will still be effective, unless the deletion will hinder the realization of the fundamental purpose of the parties (in which case, the Agreement will be terminated immediately).
++
++   IX. 	Applicable law and dispute settlement
++
++   1.	Application of governing laws
++   Any dispute settlement (including but not limited to litigation and arbitration) related to the Agreement shall be governed by the laws of the People’s Republic of China. The legal rules of any other countries and regions shall not apply.
++   2.	Termination
++   If the Software becomes or, in the opinion of either party, may become the subject of any claim for intellectual property infringement, either party may terminate the Agreement immediately.
++   The Agreement is effective until termination. You may terminate the Agreement at any time, but you must destroy all originals and duplicates of the Software. The Agreement will terminate immediately without notice from us if you fail to comply with any provision of the Agreement. At the time of termination, you must destroy all originals and duplicates of such software, and shall be legally liable for not observing the Agreement.
++
++   The Agreement shall be in both Chinese and English, and in case of ambiguity between any content above, the Chinese version shall prevail.
++
++Privacy Policy Statement of Kylin Operating System
++Release date of the version: July 30, 2021
++Effective date of the version: July 30, 2021
++
++We attach great importance to personal information and privacy protection. In order to guarantee the legal, reasonable and appropriate collection, storage and use of your personal privacy information and the transmission and storage in the safe and controllable circumstances, we hereby formulate this Statement. We shall provide your personal information with corresponding security protection measures according to the legal requirements and mature security standards in the industry.
++   The Statement shall include the following content:
++    I. 	Collection and use your personal information
++   II. 	How to store and protect your personal information
++   III. 	How to manage your personal information
++   IV. 	Privacy of the third-party software/services
++   V. 	Minors’ use of the products
++   VI. 	How to update this Statement
++   VII. How to contact us
++
++    I. 	How to collect and use your personal information
++
++   1.	The collection of personal information
++   We shall collect the relevant information when you use this product mainly to provide you with higher-quality products, more usability and better services. Part of information collected shall be provided by you directly, and other information shall be collected by us through your interaction with the product as well as your use and experience of the product. We shall not actively collect and deal with your personal information unless we have obtained your express consent according to the applicable legal stipulations.
++   1)	The licensing mechanism for this product allows you to apply for the formal license of the product in accordance with the contract and relevant agreements after you send a machine code to the commercial personnel of Kylinsoft, and the machine code is generated through encryption and conversion according to the information of the computer used by you, such as network card, firmware and motherboard. This machine code shall not directly contain the specific information of the equipment, such as network card, firmware and motherboard, of the computer used by you.
++   2)	Server of the software store of this product shall connect it according to the CPU type information and IP address of the computer used by you; at the same time, we shall collect the relevant information of your use of the software store of this product, including but not limited to the time of opening the software store, interaction between the pages, search content and downloaded content. The relevant information collected is generally recorded in the log of server system of software store, and the specific storage position may change due to different service scenarios.
++   3)	Upgrading and updating of this product shall be connected according to the IP address of the computer used by you, so that you can upgrade and update the system;
++   4)	Your personal information, such as E-mail address, telephone number and name, shall be collected due to business contacts and technical services.
++   5)	The biological characteristic management tool support system components of this product shall use the biological characteristics for authentication, including fingerprint, finger vein, iris and voiceprint. The biological characteristic information input by you shall be stored in the local computer, and for such part of information, we shall only receive the verification results but shall not collect or upload it. If you do not need to use the biological characteristics for the system authentication, you may disable this function in the biological characteristic management tool.
++   6)	This product shall provide the recording function. When you use the recording function of this product, we shall only store the audio content when you use the recording in the local computer but shall not collect or upload the content.
++   7)	The service and support functions of this product shall collect the information provided by you for us, such as log, E-mail, telephone and name, so as to make it convenient to provide the technical services, and we shall properly keep your personal information.
++   8)	In the upgrading process of this product, if we need to collect additional personal information of yours, we shall timely update this part of content.
++
++  2.	Use of personal information
++   We shall strictly observe the stipulations of laws and regulations and agreements with you to use the information collected for the following purposes. In case of exceeding the scope of following purposes, we shall explain to you again and obtain your consent.
++   1)	The needs such as product licensing mechanism, use of software store, system updating and maintenance, biological identification and online services shall be involved;
++   2)	We shall utilize the relevant information to assist in promoting the product security, reliability and sustainable service;
++   3)	We shall directly utilize the information collected (such as the E-mail address and telephone provided by you) to communicate with you directly, for example, business contact, technical support or follow-up service visit;
++   4)	We shall utilize the data collected to improve the current usability of the product, promote the product’s user experience (such as the personalized recommendation of software store) and repair the product defects, etc.;
++   5)	We shall use the user behavior data collected for data analysis. For example, we shall use the information collected to analyze and form the urban thermodynamic chart or industrial insight report excluding any personal information. We may make the information excluding identity identification content upon the statistics and processing public and share it with our partners, to understand how the users use our services or make the public understand the overall use trend of our services;
++   6)	We may use your relevant information and provide you with the advertising more related to you on relevant websites and in applications and other channels;
++   7)	In order to follow the relevant requirements of relevant laws and regulations, departmental regulations and rules and governmental instructions.
++
++   3.	Information sharing and provision
++   We shall not share or transfer your personal information to any third party, except for the following circumstances:
++   1)	After obtaining your clear consent, we shall share your personal information with the third parities;
++   2)	In order to achieve the purpose of external processing, we may share your personal information with the related companies or other third-party partners (the third-party service providers, contractors, agents and application developers). We shall protect your information security by means like encryption and anonymization;
++    3)	We shall not publicly disclose the personal information collected. If we must disclose it publicly, we shall notify you of the purpose of such public disclosure, type of information disclosed and the sensitive information that may be involved, and obtain your consent;
++   4)	With the continuous development of our business, we may carry out the transactions, such as merger, acquisition and asset transfer, and we shall notify you of the relevant circumstances, and continue to protect or require the new controller to continue to protect your personal information according to laws and regulations and the standards no lower than that required by this Statement;
++    5)	If we use your personal information beyond the purpose claimed at the time of collection and the directly or reasonably associated scope, we shall notify you again and obtain your consent before using your personal information.
++
++   4.	Exceptions with authorized consent
++   1)	It is directly related to national security, national defense security and other national interests;
++   2)	It is directly related to public safety, public health and public knowledge and other major public interests;
++   3)	It is directly related to crime investigation, prosecution, judgment and execution of judgment;
++   4)	It aims to safeguard the life, property and other major legal rights and interests of you or others but it is impossible to obtain your own consent;
++   5)	The personal information collected is disclosed to the public by yourself;
++   6)	Personal information collected from legally publicly disclosed information, such as legal news reports, government information disclosure and other channels;
++   7)	It is necessary to sign and perform of the contract according to your requirement;
++   8)	It is necessary to maintain the safe and stable operation of the provided products or services, including finding and handling any fault of products or services;
++   9)	It is necessary to carry out statistical or academic research for public interest, and when the results of academic research or description are provided, the personal information contained in the results is de-identified;
++   10)	Other circumstances specified in the laws and regulations.
++
++   II. 	How to store and protect personal information
++
++   1.	Information storage place
++   We shall store the personal information collected and generated in China within the territory of China in accordance with laws and regulations.
++   2.	Information storage duration
++  Generally speaking, we shall retain your personal information for the time necessary to achieve the purpose or for the shortest term stipulated by laws and regulations. Information recorded in the log shall be kept for a specified period and be automatically deleted according to the configuration.
++   When operation of our product or services stops, we shall notify you in the forms such as notification and announcement, delete your personal information or conduct anonymization within a reasonable period and immediately stop the activities collecting the personal information.
++   3.	How to protect the information
++   We shall strive to provide guarantee for the users’ information security, to prevent the loss, improper use, unauthorized access or disclosure of the information.
++   We shall use the security protection measures within the reasonable security level to protect the information security. For example, we shall protect your system account and password by means like encryption.
++   We shall establish the special management systems, processes and organizations to protect the information security. For example, we shall strictly restrict the scope of personnel who access to the information, and require them to observe the confidentiality obligation.
++   4.	Emergency response plan
++    In case of security incidents, such as personal information disclosure, we shall start the emergency response plan according to law, to prevent the security incidents from spreading, and shall notify you of the situation of the security incidents, the possible influence of the incidents on you and the remedial measures we will take, in the form of pushing the notifications and announcements. We will also report the disposition of the personal information security events according to the laws, regulations and regulatory requirements.
++
++   III. 	How to manage your personal information
++
++   If you worry about the personal information disclosure caused by using this product, you may consider suspending or not using the relevant functions involving the personal information, such as the formal license of the product, application store, system updating and upgrading and biological identification, according to the personal and business needs.
++   Please pay attention to the personal privacy protection at the time of using the third-party software/services in this product.
++
++   IV. 	Privacy of the third-party software/services
++
++   The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer.
++   When you install or use the third-party software/services in this product, the privacy protection and legal responsibility of the third-party software/services shall be independently borne by the third-party software/services. Please carefully read and examine the privacy statement or clauses corresponding to the third-party software/services, and pay attention to the personal privacy protection.
++
++   V. 	Minors’ use of the products
++
++   If you are a minor, you shall obtain your guardian’s consent on your use of this product and the relevant service clauses. Except for the information required by the product, we shall not deliberately require the minors to provide more data. With the guardians’ consent or authorization, the accounts created by the minors shall be deemed to be the same as any other accounts. We have formulated special information processing rules to protect the personal information security of minors using this product. The guardians shall also take the appropriate preventive measures to protect the minors and supervise their use of this product.
++
++   VI. 	How to update this Statement
++
++   We may update this Statement at any time, and shall display the updated statement to you through the product installation process or the company’s website at the time of updating. After such updates take effect, if you use such services or any software permitted according to such clauses, you shall be deemed to agree on the new clauses. If you disagree on the new clauses, then you must stop using this product, and please close the account created by you in this product; if you are a  guardian, please help your minor child to close the account created by him/her in this product.
++
++   VII. 	How to contact us
++
++  If you have any question, or any complaints or opinions on this Statement, you may seek advice through our customer service hotline 400-089-1870, or the official website (www.kylinos.cn), or “service and support” application in this product. You may also contact us by E-mail (market@kylinos.cn).
++   We shall timely and properly deal with them. Generally, a reply will be made within 15 working days.
++   The Statement shall take effect from the date of updating. The Statement shall be in Chinese and English at the same time and in case of any ambiguity of any clause above, the Chinese version shall prevail.
++   Last date of updating: November 1, 2021
++
++Address: Building 3, Xin’an Entrepreneurship Plaza, Tanggu Marine Science and Technology Park, Binhai High-tech Zone, Tianjin (300450)
++             Silver Valley Tower, No. 9, North Forth Ring West Road, Haidian District, Beijing (100190)
++             Building T3, Fuxing World Financial Center, No. 303, Section 1 of Furong Middle Road, Kaifu District, Changsha City (410000)
++             Digital Entertainment Building, No. 1028, Panyu Road, Xuhui District, Shanghai (200030)
++Tel.: Tianjin (022) 58955650       Beijing (010) 51659955
++             Changsha (0731) 88280170    Shanghai (021) 51098866
++Fax: Tianjin (022) 58955651       Beijing (010) 62800607
++             Changsha (0731) 88280166    Shanghai (021) 51062866
++
++Company website: www.kylinos.cn
++E-mail: support@kylinos.cn</source>
++        <translation type="vanished">尊敬的银河麒麟操作系统及相关产品用户:
++   请您仔细阅读本协议条款、补充许可条款(统称“协议”)及银河麒麟操作系统隐私政策声明(以下简称“声明”)。当您确认了解并点击下一步时,即表明您已接受本协议的条款,本协议将立即生效,对您和本公司双方具有法律约束力。
++   本协议及声明中的“本产品”是指由麒麟软件有限公司开发并制作发行的用于办公或构建企业及政府的信息化基础设施——“银河麒麟操作系统软件产品”。“我们”是指麒麟软件有限公司。“您”是指支付授权费用并使用银河麒麟操作系统及相关产品的用户。
++
++银河麒麟最终用户使用许可协议
++版本发布日期:【2021】年【7】月【30】日
++版本生效日期:【2021】年【7】月【30】日
++
++本协议将向您说明以下内容:
++一、使用许可
++二、Java技术限制
++三、Cookie和其他技术
++四、知识产权条款
++五、开放源代码说明
++六、第三方软件/服务说明
++七、免责条款
++八、协议完整性及可分割性说明
++九、适用法律及争议解决
++一、使用许可
++
++    按照已经为本产品支付费用的用户数目及计算机硬件类型,我们向您授予非排他、不可转让的许可,仅允许被授权人单位及与其签订劳动合同的员工使用由麒麟软件提供的随附软件和文档以及任何错误纠正。
++   1.教育机构使用许可
++    在遵守本协议的条款和条件的情况下,如果您是教育机构,允许贵机构仅在内部使用随附的未经修改的二进制格式的软件。此处的“在内部使用”是指被授权人单位及与其签订劳动合同的员工以及在贵机构入学的学生使用本产品。 
++   2.字型软件使用
++   字型软件指本产品中预装的和生成字体样式的软件。您不可从软件中分离字型软件,不可改动字型软件,以新增此等字型软件被作为本产品的一部分交付予您时所不具备的任何功能,不可将字型软件嵌入作为商业产品提供以换取收费或其他报酬的文件、不可脱离安装了本产品的机器使用。如将字型软件用于对外宣传等其他商业用途时,请您与字体版权厂商联系协商以获得对您相关行为的许可。
++
++二、Java技术限制
++
++   您不可更改“Java平台界面”(简称“JPI”,即指明为“java”包或“java”包的任何子包中的类),无论通过在JPI中创建额外的类,还是通过其他方式导致对JPI中的类进行增添或更动,均为不可。如果您创建一个额外的类以及一个或多个相关的API,而它们(i)扩展Java平台的功能;并且(ii)可供第三方软件开发者用于开发可调用上述额外API的额外软件,则您必须迅即广泛公布对此种API的准确说明,以供所有开发者免费使用。您不可创建、或授权其他被许可人创建以任何方式标示为“java”、“javax”、“sun”的额外的类、界面、子包或Sun在任何命名约定中指明的类似约定。参见Java运行时环境二进制代码许可的适当版本(目前位于http://jdk.java.net),以了解可与Java小程序和应用程序共同分发的运行时代码的可供情况。
++
++三、Cookie和其他技术
++
++   为帮助我们更好地了解并服务用户,我们的网站、在线服务和应用程序可能会使用“Cookie”技术。这些Cookie用于存储进出系统的网络流量以及因检测错误而生成的流量,因此必须设置。 我们通过使用这些Cookie来了解您与我们的网站和在线服务如何进行交互。 
++   如果您想禁用 Cookie 并且使用的是Firefox浏览器,可在Firefox的隐私与安全中心进行设置。如果您使用的是其他浏览器,请向相关供应商咨询具体方案。
++依照《中华人民共和国网络安全法》第七十六条第五款,个人信息,是指以电子或者其他方式记录的能够单独或者与其他信息结合识别自然人个人身份的各种信息,包括但不限于自然人的姓名、出生日期、身份证件号码、个人生物识别信息、住址、电话号码等。如果Cookie中包含上述信息,或者存在通过Cookie收集的非个人信息与其他个人信息合并后的信息,出于本隐私政策的目的,我们会将合并后的信息视为个人隐私信息,将参照银河麒麟隐私政策声明,为您的个人信息提供相应的安全保护措施。
++
++四、知识产权条款
++
++   1.商标和标识
++    本产品受到版权(著作权)法、商标法和其他法律及国际知识产权公约的保护。我们或其许可方保留对本产品的所有权及所有相关的知识产权。对于我们或其许可方的任何商标、服务标记、标识或商号的任何权利、所有权或利益,本协议均不作任何授权。您对麒麟软件标记的任何使用都应有利于麒麟软件,未经我们书面同意,不得擅自使用麒麟软件任何商标、标识。 
++   2.关于复制、修改及分发
++   如果在所有复制品中维持本协议书不变,您可以且必须根据《GNU GPL-GNU通用公共许可证》复制、修改及分发银河麒麟操作系统软件产品中遵守《GNU GPL-GNU通用公共许可证》协议的软件,其他不遵守《GNU GPL-GNU通用公共许可证》协议的银河麒麟操作系统软件产品必须根据相关法律、其他许可协议进行复制、修改及分发,但任何以银河麒麟操作系统软件产品为基础的衍生发行版未经我们的书面授权不能使用任何我们的商标或其他任何标志。
++   特别注意:该复制、修改及分发不包括本产品中包含的任何不适用《GNU GPL-GNU通用公共许可证》的软件,如银河麒麟操作系统软件产品中包含的软件商店、输入法软件、字库软件、第三方应用软件等。除非适用法律予以禁止,否则您不得对上述软件进行复制、修改(包括反编译或反向工程)、分发。
++
++五、开放源代码说明
++
++   对于本产品中包含的任何开放源代码,本协议的任何条款均不得限制、约束或以其它方式影响任何适用开放源代码许可证赋予您的任何相应的权利或者义务或您应遵守的各种条件。
++
++六、第三方软件/服务说明
++
++   本协议所指的第三方软件/服务是指由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。本产品可能包含或捆绑有第三方软件/服务,这些第三方软件/服务附带单独的许可协议,您使用附带单独许可协议的任何第三方软件/服务需受到该单独许可协议的约束。
++我们不对本产品中的第三方软件/服务拥有任何控制权,也不对其提供方或用户行为的合法性、准确性、有效性、安全性进行任何明示或默示的保证或担保。
++
++七、免责条款
++
++   1.有限担保
++    我们向您担保,自购买或其他合法取得本产品之日起九十(90)天内(以销售合同日期为准),本产品的存储介质(如果有)在正常使用的情况下无材料和工艺方面的缺陷。在本有限担保项下,您可获得的所有补偿及我们的全部责任为由我们选择更换本产品介质或退还本产品的购买费用。
++    2.免责声明
++    除上述有限担保外,本软件按“原样”提供,不提供任何明示或默示的条件、陈述及担保,包括对适销性、对特定用途的适用性或非侵权性的任何默示的担保,均不予负责,但本免责声明被认定为法律上无效的情况除外。
++    3.责任限制
++    在法律允许范围内,无论在何种情况下,无论采用何种有关责任的理论,无论因何种方式导致,对于因使用或无法使用本软件引起的或与之相关的任何收益损失、利润或数据损失,或者对于特殊的、间接的、后果性的、偶发的或惩罚性的损害赔偿,我们或其许可方均不承担任何责任(即使我们已被告知可能出现上述损害赔偿)。根据本协议,在任何情况下,无论是在合同、侵权行为(包括过失)方面,还是在其他方面,我们对您的责任将不超过您就本软件所支付的金额。即使上述担保未能达到其基本目的,上述限制仍然适用。
++
++八、协议完整性及可分割性说明
++
++1.协议完整性
++    本协议是我们就产品使用与您达成的完整协议。它取代此前或同期的所有和本协议不一致的口头或书面往来信息、建议、陈述和担保。在本协议期间,有关报价、订单、回执或各方之间就本协议内容进行的其他往来通信中的任何冲突条款或附加条款,均以本协议为准。对本协议的任何修改均无约束力,除非通过书面进行修改并由每一方的授权代表签字。
++2.可分割性
++如果本协议中有任何规定被认定为无法执行,则删除相应规定,本协议仍然有效,除非该删除会防碍各方根本目的的实现(在这种情况下,本协议将立即终止)。
++
++九、适用法律及争议解决
++
++1.管辖法律适用
++    与本协议相关的任何争议解决(包括但不限于诉讼、仲裁等)均受适用中华人民共和国法律管辖。选择其它任何国家和地区的法律规则不予适用。
++2.终止
++如果本软件成为或在任一方看来可能成为任何知识产权侵权索赔之标的,则任一方可立即终止本协议。
++    本协议在终止之前有效。您可以随时终止本协议,但必须同时销毁本软件的全部正本和副本。如果您未遵守本协议的任何规定,则本协议将不经我们发出通知立即终止。终止时,您必须销毁本软件的全部正本和副本,并且需承担因未遵守本协议而导致的法律责任。
++
++本协议提供中英文两种版本,以上任何内容如有歧义,以中文版本为准。
++
++
++银河麒麟操作系统隐私政策声明
++版本发布日期:【2021】年【7】月【30】日
++版本生效日期:【2021】年【7】月【30】日
++
++   我们非常重视个人信息和隐私保护,为了保证合法、合理、适度的收集、存储、使用您的个人隐私信息,并在安全、可控的情况下进行传输、存储,我们制定了本声明。我们将会按照法律要求和业界成熟安全标准,为您的个人信息提供相应的安全保护措施。
++
++本声明将向您说明以下内容:
++一、关于收集和使用您的个人信息
++二、如何存储和保护您的个人信息
++三、如何管理您的个人信息
++四、关于第三方软件/服务的隐私说明
++五、关于未成年人使用产品
++六、本声明如何更新
++七、如何联系我们
++
++一、如何收集和使用您的个人信息
++
++    1.收集个人信息的情况
++   我们在您使用本产品过程中收集相关的信息,主要为了向您提供更高质量、更易用的产品和更好的服务。收集的部分信息由您直接提供,其他信息则由我们通过您与产品的交互以及对产品的使用和体验收集而来。除非我们已根据适用的法律规定取得您的明示同意,我们不会主动收集并处理您的个人信息。
++   1)本产品授权许可机制,会根据您所使用计算机的网卡、固件和主板等信息通过加密机制和转换方法生成申请产品正式授权许可的机器码;您将该机器码发送给麒麟软件商务人员后,可根据合同及相关协议申请正式许可。该机器码不直接包含您所使用计算机的网卡、固件和主板等设备的具体信息。
++   2)本产品软件商店的服务器端,会根据您所使用计算机的CPU类型信息以及IP地址进行连接,同时我们会收集您使用本产品软件商店的相关信息,包括但不限于打开软件商店的时间、各页面之间的交互、搜索内容、下载的内容等,收集的相关信息一般记录在软件商店的服务端系统的日志中,具体存储位置可能因为不同的服务场景有所变动。
++   3)本产品的升级更新,会根据您所使用计算机的IP地址进行连接,以便实现您升级更新系统;
++   4)因业务往来及技术服务等向您收集电子邮箱、电话、姓名等个人信息。
++   5)本产品的生物特征管理工具支持系统组件使用生物特征进行认证,包括指纹、指静脉、虹膜、声纹等。您录入的生物特征信息将储存在本地计算机,这部分信息我们仅接收验证结果,不会收集和上传。如您不需要使用生物特征进行系统认证,可以在生物特征管理工具中关闭该功能。
++   6)本产品提供录音功能,您在使用本产品录音软件中,我们仅会将您使用录音时的音频内容存储在本地计算机中,不会进行收集和上传。
++   7)本产品的服务与支持功能会收集由您提供给我们的日志、电子邮箱、电话、姓名等信息,便于提供技术服务,我们将妥善保管您的个人信息。
++   8)本产品升级过程中,如需新增收集您的个人信息,我们将及时更新本部分内容。
++   2.使用个人信息的情况
++   我们严格遵守法律法规的规定及与您的约定,将收集的信息用于以下用途。若我们超出以下用途,我们将再次向您进行说明,并征得您的同意。
++   1)涉及产品许可机制、软件商店使用、系统更新维护、生物识别、在线服务等需要;
++   2)我们会利用相关信息协助提升产品的安全性、可靠性和可持续服务;
++   3)我们会利用收集的信息(例如您提供的电子邮件地址、电话等)直接与您沟通。例如,业务联系、技术支持或服务回访;
++   4)我们会利用收集的数据改进产品当前的易用性、提升产品用户体验(例如软件商店的个性化推荐)以及修复产品缺陷等;
++   5)我们会将所收集到的用户行为数据用于大数据分析。例如,我们将收集到的信息用于分析形成不包含任何个人信息的城市热力图或行业洞察报告。我们可能对外公开并与我们的合作伙伴分享经统计加工后不含身份识别内容的信息,用于了解用户如何使用我们服务或让公众了解我们服务的总体使用趋势;
++
++   6)我们可能使用您的相关信息,在相关网站、应用及其他渠道向您提供与您更加相关的广告;
++   7)为了遵从相关法律法规、部门规章、政府指令的相关要求。
++   3.信息的分享及对外提供
++   我们不会共享或转让您的个人信息至第三方,但以下情况除外:
++   1)获取您的明确同意后,我们会与第三方分享您的个人信息;
++   2)为实现外部处理的目的,我们可能与关联公司或其他第三方合作伙伴(第三方服务供应商、承包商、代理、应用开发者等)分享您的个人信息。我们将采用加密、匿名化处理等手段来保障您的信息安全;
++   3)我们不会对外公开披露所收集的个人信息,如必须公开披露时,我们会向您告知此次公开披露的目的、披露信息的类型及可能涉及的敏感信息,并征得您的同意;
++   4)随着我们业务的持续发展,我们有可能进行合并、收购、资产转让等交易,我们将告知相关情形,按照法律法规及不低于本声明所要求的标准继续保护或要求新的控制者继续保护您的个人信息;
++   5)如我们使用您的个人信息,超出了与收集时所声称的目的及具有直接或合理关联的范围,我们将在使用您的个人信息前,再次向您告知并征得您的同意。
++   4.征得授权同意的例外情况
++   1)与国家安全、国防安全等国家利益直接相关的;
++   2)与公共安全、公共卫生、公众知情等重大公共利益直接相关的;
++   3)与犯罪侦查、起诉、审判和判决执行等直接相关的;
++   4)出于维护您或其他个人的生命、财产等重大合法权益但又无法得到您本人同意的;
++   5)所收集的个人信息是您自行向社会公众公开的;
++   6)从合法公开披露的信息中收集的个人信息,如合法的新闻报道、政府信息公开等渠道;
++   7)根据您要求签订和履行合同所必需的;
++   8)用于维护所提供的产品或服务的安全稳定运行所必需的。如发现、处置产品或服务的故障;
++   9)出于公共利益开展统计或学术研究所必需,且其对外提供学术研究或描述的结果时,对结果中所包含的个人信息进行去标识化处理的;
++   10)法律法规规定的其他情形。
++
++二、我们如何存储和保护您的个人信息
++
++   1.信息存储的地点
++   我们会按照法律法规规定,将在中国境内收集和产生的个人信息存储于中国境内。
++   2.信息存储的期限
++   一般而言,我们仅为实现目的所必需的时间或法律法规规定最短期限保留您的个人信息。记录在日志中的信息会按配置在一定期限保存及自动删除。
++   当我们的产品或服务发生停止运营的情形时,我们将以通知、公告等形式通知您,在合理的期限内删除您的个人信息或进行匿名化处理,并立即停止收集个人信息的活动。
++   3.我们如何保护这些信息
++   我们努力为用户的信息安全提供保障,以防止信息的丢失、不当使用、未经授权访问或披露。
++   我们将在合理的安全水平内使用安全保护措施以保障信息的安全。例如,我们会使用加密技术等手段来保护您的系统级账户密码。
++   我们建立专门的管理制度、流程和组织以保障信息的安全。例如,我们严格限制访问信息的人员范围,要求他们遵守保密义务。
++   4.应急预案
++   若发生个人信息泄露等安全事件,我们会依法启动应急预案,阻止安全事件扩大,并以推送通知、公告等形式告知您安全事件的情况、事件可能对您的影响以及我们将采取的补救措施。我们还将按照法律法规和监管部门要求,上报个人信息安全事件的处置情况。
++
++三、如何管理您的个人信息
++
++   如果担心因使用本产品导致个人信息的泄露,您可根据个人及业务需要考虑暂停或不使用涉及个人信息的相关功能,如产品正式授权许可、应用商店、系统更新升级、生物识别等。
++在使用本产品之上的第三方软件/服务时,请注意个人隐私保护。
++
++四、关于第三方软件/服务的隐私说明
++
++   本协议所指的第三方软件/服务是由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。
++您在本产品之上安装或使用第三方软件/服务时,第三方软件/服务的隐私保护和法律责任由第三方软件/服务自行负责,请您仔细阅读和审查第三方软件/服务对应的隐私声明或条款,注意个人隐私保护。
++
++五、关于未成年人使用产品
++
++   如果您是未成年人,则需要您的监护人同意您使用本产品并同意相关服务条款。除了提供产品所需要的信息外,我们不会刻意要求未成年人提供其他更多数据。在征得监护人同意或授权后,未成年人所创建的账户即被视为等同于其他任何账户。我们制定了专门的信息处理规则以保护使用本产品的未成年人的个人信息安全。监护人也应采取适当的预防措施保护未成年人,监督其对本产品的使用。
++
++六、本声明如何更新
++
++   我们可能会随时更新本声明,并且会在变更时通过产品安装过程或公司网站向您展示变更后的声明。在这些变更生效后使用服务或根据这些条款授予许可的任何软件,即表示您同意新的条款。如果您不同意新的条款,则必须停止使用本产品,请关闭您在本产品之上创建的账户;如果您是监护人,请帮助您的未成年子女关闭他或她在本产品之上创建的账户。
++
++七、如何联系我们
++
++   如您对本声明存在任何疑问,或任何相关的投诉、意见,可通过我们的客服热线400-089-1870、官方网站(www.kylinos.cn)或本产品中“服务与支持”应用进行咨询或反映。您也可以通过发送邮件至market@kylinos.cn与我们联系。
++   我们会及时、妥善处理您的问题。一般情况下,我们将在15个工作日内给予答复。
++   本声明自更新之日起生效,同时提供中英文两种版本,以上任何条款如有歧义,以中文版本为准。
++   最近更新日期:2021年11月1日
++
++地址:天津市滨海高新区塘沽海洋科技园信安创业广场3号楼(300450)
++北京市海淀区北四环西路9号银谷大厦(100190)
++长沙市开福区芙蓉中路1段303号富兴世界金融中心T3栋(410000)
++上海市徐汇区番禺路1028号数娱大厦(200030)
++电话:天津(022)58955650  北京(010)51659955  
++长沙(0731)88280170 上海(021)51098866</translation>
++    </message>
++    <message>
++        <source>Dear users of Kylin operating system and relevant products,
++
++   Please read the clauses of the Agreement and the supplementary license (hereinafter collectively referred to as “the Agreement”) and the privacy policy statement for Kylin operating system (hereinafter referred to as “the Statement”). When you click the next step to confirm your complete understanding of the content, it shall indicate that you have accepted the clauses of the Agreement, and the Agreement shall take effect immediately and be legally binding on you and the Company.
++   “This product” in the Agreement and the Statement refers to “Kylin operating system software product” developed, produced and released by Kylinsoft Co., Ltd. and used for handling the office work or building the information infrastructure for enterprises and governments. “We” refers to Kylinsoft Co., Ltd. “You” refers to the users who pay the license fee and use the Kylin operating system and relevant products. 
++
++End User License Agreement of Kylin 
++Release date of the version: July 30, 2021
++Effective date of the version: July 30, 2021 
++
++The Agreement shall include the following content:
++I. 	User license 
++II. 	Java technology limitations
++III. 	Cookies and other technologies
++IV. 	Intellectual property clause
++V. 	Open source code
++VI. 	The third-party software/services
++VII. Escape clause
++VIII. Integrity and severability of the Agreement
++IX. 	Applicable law and dispute settlement
++
++   I. 	User license
++
++   According to the number of users who have paid for this product and the types of computer hardware, we shall grant the non-exclusive and non-transferable license to you, and shall only allow the licensed unit and the employees signing the labor contracts with the unit to use the attached software (hereinafter referred to as “the Software”) and documents as well as any error correction provided by Kylinsoft.
++   1.	User license for educational institutions
++   In the case of observing the clauses and conditions of the Agreement, if you are an educational institution, your institution shall be allowed to use the attached unmodified binary format software and only for internal use. “For internal use” here refers to that the licensed unit and the employees signing the labor contracts with the unit as well as the students enrolled by your institution can use this product. 
++   2.	Use of the font software
++   Font software refers to the software pre-installed in the product and generating font styles. You cannot separate the font software from the Software and cannot modify the font software in an attempt to add any function that such font software, as a part of this product, does not have when it is delivered to you, or you cannot embed the font software in the files provided as a commercial product for any fee or other remuneration, or cannot use it in equipment where this product is not installed. If you use the font software for other commercial purposes such as external publicity, please contact and negotiate with the font copyright manufacture to obtain the permissions for your relevant acts.
++
++   II. 	Java technology limitations 
++
++   You cannot change the “Java Platform Interface” (referred to as “JPI”, that is, the classes in the “java” package or any sub-package of the “java” package), whether by creating additional classes in JPI or by other means to add or change the classes in JPI. If you create an additional class as well as one or multiple relevant APIs, and they (i) expand the functions of Java platform; And (ii) may be used by the third-party software developers to develop additional software that may call the above additional APIs, you must immediately publish the accurate description of such APIs widely for free use by all developers. You cannot create or authorize other licensees to create additional classes, interfaces or sub-packages marked as “java”, “javax” and “sun” in any way, or similar agreements specified by Sun in any naming agreements. See the appropriate version of the Java Runtime Environment Binary Code License (located at http://jdk.java.net at present) to understand the availability of runtime code jointly distributed with Java mini programs and applications.
++
++   III. 	Cookies and other technologies
++
++   In order to help us better understand and serve the users, our website, online services and applications may use the “Cookie” technology. Such Cookies are used to store the network traffic entering and exiting the system and the traffic generated due to detection errors, so they must be set. We shall understand how you interact with our website and online services by using such Cookies.
++   If you want to disable the Cookie and use the Firefox browser, you may set it in Privacy and Security Center of Firefox. If your use other browsers, please consult the specific schemes from the relevant suppliers. 
++   In accordance with Article 76, paragraph 5 of the Network Security Law of the People&apos;s Republic of China, personal information refers to all kinds of information recorded in electronic or other ways, which can identify the natural persons’ personal identity separately or combined with other information, including but not limited to the natural person’s name, date of birth, identity certificate number, personal biological identification information, address and telephone number, etc. If Cookies contain the above information, or the combined information of non-personal information and other personal information collected through Cookie, for the purpose of this privacy policy, we shall regard the combined information as personal privacy information, and shall provide the corresponding security protection measures for your personal information by referring to Kylin Privacy Policy Statement.
++
++   IV. 	Intellectual property clause
++
++   1.	Trademarks and Logos
++   This product shall be protected by the copyright law, trademark law and other laws and international intellectual property conventions. Title to the product and all associated intellectual property rights are retained by us or its licensors. No right, title or interest in any trademark, service mark, logo or trade name of us or its licensors is granted under the Agreement. Any use of Kylinsoft marked by you shall be in favor of Kylinsoft, and without our consent, you shall not arbitrarily use any trademark or sign of Kylinsoft.
++  2.	Duplication, modification and distribution
++   If the Agreement remains valid for all duplicates, you may and must duplicate, modify and distribute software observing GNU GPL-GNU General Public License agreement among the Kylin operating system software products in accordance with GNU GPL-GNU General Public License, and must duplicate, modify and distribute other Kylin operating system software products not observing GNU GPL-GNU General Public License agreement in accordance with relevant laws and other license agreements, but no derivative release version based on the Kylin operating system software products can use any of our trademarks or any other signs without our written consent.
++   Special notes: Such duplication, modification and distribution shall not include any software, to which GNU GPL-GNU General Public License does not apply, in this product, such as the software store, input method software, font library software and third-party applications contained by the Kylin operating system software products. You shall not duplicate, modify (including decompilation or reverse engineering) or distribute the above software unless prohibited by applicable laws. 
++
++   V. 	Open source code
++
++   For any open source codes contained in this product, any clause of the Agreement shall not limit, constrain or otherwise influence any of your corresponding rights or obligations under any applicable open source code license or all kinds of conditions you shall observe.
++
++   VI.  The third-party software/services
++
++   The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer. This product may contain or be bundled with the third-party software/services to which the separate license agreements are attached. When you use any third-party software/services with separate license agreements, you shall be bound by such separate license agreements.
++   We shall not have any right to control the third-party software/services in these products and shall not expressly or implicitly ensure or guarantee the legality, accuracy, effectiveness or security of the acts of their providers or users.
++
++   VII. 	Escape clause
++
++   1.	Limited warranty
++    We guarantee to you that within ninety (90) days from the date when you purchase or obtain this product in other legal ways (subject to the date of the sales contract), the storage medium (if any) of this product shall not be involved in any defects in materials or technology when it is normally used. All compensation available to you and our entire liability under this limited warranty will be for us to choose to replace this product media or refund the fee paid for this product.
++   2.	Disclaimer
++   In addition to the above limited warranty, the Software is provided “as is” without any express or implied condition statement and warranty, including any implied warranty of merchantability, suitability for a particular purpose or non-infringement, except that this disclaimer is deemed to be legally invalid.
++   3.	Limitation of responsibility
++   To the extent permitted by law, under any circumstances, no matter what theory of liability is adopted, no matter how it is caused, for any loss of income, profit or data caused by or related to the use or inability to use the Software, or for special indirect consequential incidental or punitive damages, neither we nor its licensors shall be liable (even if we have been informed of the possibility of such damages). According to the Agreement, in any case, whether in contract tort (including negligence) or otherwise, our liability to you will not exceed the amount you pay for the Software. The above limitations will apply even if the above warranty fails of its essential purpose.
++
++   VIII. 	Integrity and severability of the Agreement
++
++   1.	The integrity of the Agreement
++  The Agreement is an entire agreement on the product use concluded by us with you. It shall replace all oral or written contact information, suggestions, representations and guarantees inconsistent with the Agreement previous or in the same period. During the period of the Agreement, in case of any conflict clauses or additional clauses in the relevant quotations, orders or receipts or in other correspondences regarding the content of the Agreement between the parties, the Agreement shall prevail. No modification of the Agreement will be binding, unless in writing and signed by an authorized representative of each party.
++   2.	Severability of the Agreement
++   If any provision of the Agreement is deemed to be unenforceable, the deletion of the corresponding provision will still be effective, unless the deletion will hinder the realization of the fundamental purpose of the parties (in which case, the Agreement will be terminated immediately).
++
++   IX. 	Applicable law and dispute settlement
++
++   1.	Application of governing laws
++   Any dispute settlement (including but not limited to litigation and arbitration) related to the Agreement shall be governed by the laws of the People’s Republic of China. The legal rules of any other countries and regions shall not apply.
++   2.	Termination
++   If the Software becomes or, in the opinion of either party, may become the subject of any claim for intellectual property infringement, either party may terminate the Agreement immediately.
++   The Agreement is effective until termination. You may terminate the Agreement at any time, but you must destroy all originals and duplicates of the Software. The Agreement will terminate immediately without notice from us if you fail to comply with any provision of the Agreement. At the time of termination, you must destroy all originals and duplicates of such software, and shall be legally liable for not observing the Agreement.
++
++   The Agreement shall be in both Chinese and English, and in case of ambiguity between any content above, the Chinese version shall prevail.
++
++Privacy Policy Statement of Kylin Operating System
++Release date of the version: July 30, 2021
++Effective date of the version: July 30, 2021
++
++We attach great importance to personal information and privacy protection. In order to guarantee the legal, reasonable and appropriate collection, storage and use of your personal privacy information and the transmission and storage in the safe and controllable circumstances, we hereby formulate this Statement. We shall provide your personal information with corresponding security protection measures according to the legal requirements and mature security standards in the industry.
++   The Statement shall include the following content:
++    I. 	Collection and use your personal information
++   II. 	How to store and protect your personal information
++   III. 	How to manage your personal information
++   IV. 	Privacy of the third-party software/services
++   V. 	Minors’ use of the products
++   VI. 	How to update this Statement
++   VII. How to contact us
++
++    I. 	How to collect and use your personal information
++
++   1.	The collection of personal information
++   We shall collect the relevant information when you use this product mainly to provide you with higher-quality products, more usability and better services. Part of information collected shall be provided by you directly, and other information shall be collected by us through your interaction with the product as well as your use and experience of the product. We shall not actively collect and deal with your personal information unless we have obtained your express consent according to the applicable legal stipulations.
++   1)	The licensing mechanism for this product allows you to apply for the formal license of the product in accordance with the contract and relevant agreements after you send a machine code to the commercial personnel of Kylinsoft, and the machine code is generated through encryption and conversion according to the information of the computer used by you, such as network card, firmware and motherboard. This machine code shall not directly contain the specific information of the equipment, such as network card, firmware and motherboard, of the computer used by you.
++   2)	Server of the software store of this product shall connect it according to the CPU type information and IP address of the computer used by you; at the same time, we shall collect the relevant information of your use of the software store of this product, including but not limited to the time of opening the software store, interaction between the pages, search content and downloaded content. The relevant information collected is generally recorded in the log of server system of software store, and the specific storage position may change due to different service scenarios.
++   3)	Upgrading and updating of this product shall be connected according to the IP address of the computer used by you, so that you can upgrade and update the system;
++   4)	Your personal information, such as E-mail address, telephone number and name, shall be collected due to business contacts and technical services.
++   5)	The biological characteristic management tool support system components of this product shall use the biological characteristics for authentication, including fingerprint, finger vein, iris and voiceprint. The biological characteristic information input by you shall be stored in the local computer, and for such part of information, we shall only receive the verification results but shall not collect or upload it. If you do not need to use the biological characteristics for the system authentication, you may disable this function in the biological characteristic management tool.
++   6)	This product shall provide the recording function. When you use the recording function of this product, we shall only store the audio content when you use the recording in the local computer but shall not collect or upload the content.
++   7)	The service and support functions of this product shall collect the information provided by you for us, such as log, E-mail, telephone and name, so as to make it convenient to provide the technical services, and we shall properly keep your personal information.
++   8)	In the upgrading process of this product, if we need to collect additional personal information of yours, we shall timely update this part of content.
++
++  2.	Use of personal information
++   We shall strictly observe the stipulations of laws and regulations and agreements with you to use the information collected for the following purposes. In case of exceeding the scope of following purposes, we shall explain to you again and obtain your consent.
++   1)	The needs such as product licensing mechanism, use of software store, system updating and maintenance, biological identification and online services shall be involved;
++   2)	We shall utilize the relevant information to assist in promoting the product security, reliability and sustainable service;
++   3)	We shall directly utilize the information collected (such as the E-mail address and telephone provided by you) to communicate with you directly, for example, business contact, technical support or follow-up service visit;
++   4)	We shall utilize the data collected to improve the current usability of the product, promote the product’s user experience (such as the personalized recommendation of software store) and repair the product defects, etc.;
++   5)	We shall use the user behavior data collected for data analysis. For example, we shall use the information collected to analyze and form the urban thermodynamic chart or industrial insight report excluding any personal information. We may make the information excluding identity identification content upon the statistics and processing public and share it with our partners, to understand how the users use our services or make the public understand the overall use trend of our services;
++   6)	We may use your relevant information and provide you with the advertising more related to you on relevant websites and in applications and other channels;
++   7)	In order to follow the relevant requirements of relevant laws and regulations, departmental regulations and rules and governmental instructions.
++
++   3.	Information sharing and provision
++   We shall not share or transfer your personal information to any third party, except for the following circumstances:
++   1)	After obtaining your clear consent, we shall share your personal information with the third parities;
++   2)	In order to achieve the purpose of external processing, we may share your personal information with the related companies or other third-party partners (the third-party service providers, contractors, agents and application developers). We shall protect your information security by means like encryption and anonymization;
++    3)	We shall not publicly disclose the personal information collected. If we must disclose it publicly, we shall notify you of the purpose of such public disclosure, type of information disclosed and the sensitive information that may be involved, and obtain your consent;
++   4)	With the continuous development of our business, we may carry out the transactions, such as merger, acquisition and asset transfer, and we shall notify you of the relevant circumstances, and continue to protect or require the new controller to continue to protect your personal information according to laws and regulations and the standards no lower than that required by this Statement;
++    5)	If we use your personal information beyond the purpose claimed at the time of collection and the directly or reasonably associated scope, we shall notify you again and obtain your consent before using your personal information.
++
++   4.	Exceptions with authorized consent
++   1)	It is directly related to national security, national defense security and other national interests;
++   2)	It is directly related to public safety, public health and public knowledge and other major public interests;
++   3)	It is directly related to crime investigation, prosecution, judgment and execution of judgment;
++   4)	It aims to safeguard the life, property and other major legal rights and interests of you or others but it is impossible to obtain your own consent;
++   5)	The personal information collected is disclosed to the public by yourself;
++   6)	Personal information collected from legally publicly disclosed information, such as legal news reports, government information disclosure and other channels;
++   7)	It is necessary to sign and perform of the contract according to your requirement;
++   8)	It is necessary to maintain the safe and stable operation of the provided products or services, including finding and handling any fault of products or services;
++   9)	It is necessary to carry out statistical or academic research for public interest, and when the results of academic research or description are provided, the personal information contained in the results is de-identified;
++   10)	Other circumstances specified in the laws and regulations.
++
++   II. 	How to store and protect personal information
++
++   1.	Information storage place
++   We shall store the personal information collected and generated in China within the territory of China in accordance with laws and regulations.
++   2.	Information storage duration
++  Generally speaking, we shall retain your personal information for the time necessary to achieve the purpose or for the shortest term stipulated by laws and regulations. Information recorded in the log shall be kept for a specified period and be automatically deleted according to the configuration.
++   When operation of our product or services stops, we shall notify you in the forms such as notification and announcement, delete your personal information or conduct anonymization within a reasonable period and immediately stop the activities collecting the personal information.
++   3.	How to protect the information
++   We shall strive to provide guarantee for the users’ information security, to prevent the loss, improper use, unauthorized access or disclosure of the information.
++   We shall use the security protection measures within the reasonable security level to protect the information security. For example, we shall protect your system account and password by means like encryption.
++   We shall establish the special management systems, processes and organizations to protect the information security. For example, we shall strictly restrict the scope of personnel who access to the information, and require them to observe the confidentiality obligation.
++   4.	Emergency response plan
++    In case of security incidents, such as personal information disclosure, we shall start the emergency response plan according to law, to prevent the security incidents from spreading, and shall notify you of the situation of the security incidents, the possible influence of the incidents on you and the remedial measures we will take, in the form of pushing the notifications and announcements. We will also report the disposition of the personal information security events according to the laws, regulations and regulatory requirements.
++
++   III. 	How to manage your personal information
++
++   If you worry about the personal information disclosure caused by using this product, you may consider suspending or not using the relevant functions involving the personal information, such as the formal license of the product, application store, system updating and upgrading and biological identification, according to the personal and business needs.
++   Please pay attention to the personal privacy protection at the time of using the third-party software/services in this product.
++
++   IV. 	Privacy of the third-party software/services
++
++   The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer.
++   When you install or use the third-party software/services in this product, the privacy protection and legal responsibility of the third-party software/services shall be independently borne by the third-party software/services. Please carefully read and examine the privacy statement or clauses corresponding to the third-party software/services, and pay attention to the personal privacy protection.
++
++   V. 	Minors’ use of the products
++
++   If you are a minor, you shall obtain your guardian’s consent on your use of this product and the relevant service clauses. Except for the information required by the product, we shall not deliberately require the minors to provide more data. With the guardians’ consent or authorization, the accounts created by the minors shall be deemed to be the same as any other accounts. We have formulated special information processing rules to protect the personal information security of minors using this product. The guardians shall also take the appropriate preventive measures to protect the minors and supervise their use of this product.
++
++   VI. 	How to update this Statement
++
++   We may update this Statement at any time, and shall display the updated statement to you through the product installation process or the company’s website at the time of updating. After such updates take effect, if you use such services or any software permitted according to such clauses, you shall be deemed to agree on the new clauses. If you disagree on the new clauses, then you must stop using this product, and please close the account created by you in this product; if you are a parent or guardian, please help your minor child to close the account created by him/her in this product.
++
++   VII. 	How to contact us
++
++  If you have any question, or any complaints or opinions on this Statement, you may seek advice through our customer service hotline 400-089-1870, or the official website (www.kylinos.cn), or “service and support” application in this product. You may also contact us by E-mail (market@kylinos.cn).
++   We shall timely and properly deal with them. Generally, a reply will be made within 15 working days.
++   The Statement shall take effect from the date of updating. The Statement shall be in Chinese and English at the same time and in case of any ambiguity of any clause above, the Chinese version shall prevail.
++   Last date of updating: November 1, 2021
++
++Address: Building 3, Xin’an Entrepreneurship Plaza, Tanggu Marine Science and Technology Park, Binhai High-tech Zone, Tianjin (300450)
++             Silver Valley Tower, No. 9, North Forth Ring West Road, Haidian District, Beijing (100190)
++             Building T3, Fuxing World Financial Center, No. 303, Section 1 of Furong Middle Road, Kaifu District, Changsha City (410000)
++             Digital Entertainment Building, No. 1028, Panyu Road, Xuhui District, Shanghai (200030)
++Tel.: Tianjin (022) 58955650       Beijing (010) 51659955
++             Changsha (0731) 88280170    Shanghai (021) 51098866
++Fax: Tianjin (022) 58955651       Beijing (010) 62800607
++             Changsha (0731) 88280166    Shanghai (021) 51062866
++
++Company website: www.kylinos.cn
++E-mail: support@kylinos.cn</source>
++        <translation type="vanished">尊敬的银河麒麟操作系统及相关产品用户:
++   请您仔细阅读本协议条款、补充许可条款(统称“协议”)及银河麒麟操作系统隐私政策声明(以下简称“声明”)。当您确认了解并点击下一步时,即表明您已接受本协议的条款,本协议将立即生效,对您和本公司双方具有法律约束力。
++   本协议及声明中的“本产品”是指由麒麟软件有限公司开发并制作发行的用于办公或构建企业及政府的信息化基础设施——“银河麒麟操作系统软件产品”。“我们”是指麒麟软件有限公司。“您”是指支付授权费用并使用银河麒麟操作系统及相关产品的用户。
++
++银河麒麟最终用户使用许可协议
++版本发布日期:【2021】年【7】月【30】日
++版本生效日期:【2021】年【7】月【30】日
++
++本协议将向您说明以下内容:
++一、使用许可
++二、Java技术限制
++三、Cookie和其他技术
++四、知识产权条款
++五、开放源代码说明
++六、第三方软件/服务说明
++七、免责条款
++八、协议完整性及可分割性说明
++九、适用法律及争议解决
++一、使用许可
++
++    按照已经为本产品支付费用的用户数目及计算机硬件类型,我们向您授予非排他、不可转让的许可,仅允许被授权人单位及与其签订劳动合同的员工使用由麒麟软件提供的随附软件和文档以及任何错误纠正。
++   1.教育机构使用许可
++    在遵守本协议的条款和条件的情况下,如果您是教育机构,允许贵机构仅在内部使用随附的未经修改的二进制格式的软件。此处的“在内部使用”是指被授权人单位及与其签订劳动合同的员工以及在贵机构入学的学生使用本产品。 
++   2.字型软件使用
++   字型软件指本产品中预装的和生成字体样式的软件。您不可从软件中分离字型软件,不可改动字型软件,以新增此等字型软件被作为本产品的一部分交付予您时所不具备的任何功能,不可将字型软件嵌入作为商业产品提供以换取收费或其他报酬的文件、不可脱离安装了本产品的机器使用。如将字型软件用于对外宣传等其他商业用途时,请您与字体版权厂商联系协商以获得对您相关行为的许可。
++
++二、Java技术限制
++
++   您不可更改“Java平台界面”(简称“JPI”,即指明为“java”包或“java”包的任何子包中的类),无论通过在JPI中创建额外的类,还是通过其他方式导致对JPI中的类进行增添或更动,均为不可。如果您创建一个额外的类以及一个或多个相关的API,而它们(i)扩展Java平台的功能;并且(ii)可供第三方软件开发者用于开发可调用上述额外API的额外软件,则您必须迅即广泛公布对此种API的准确说明,以供所有开发者免费使用。您不可创建、或授权其他被许可人创建以任何方式标示为“java”、“javax”、“sun”的额外的类、界面、子包或Sun在任何命名约定中指明的类似约定。参见Java运行时环境二进制代码许可的适当版本(目前位于http://jdk.java.net),以了解可与Java小程序和应用程序共同分发的运行时代码的可供情况。
++
++三、Cookie和其他技术
++
++   为帮助我们更好地了解并服务用户,我们的网站、在线服务和应用程序可能会使用“Cookie”技术。这些Cookie用于存储进出系统的网络流量以及因检测错误而生成的流量,因此必须设置。 我们通过使用这些Cookie来了解您与我们的网站和在线服务如何进行交互。 
++   如果您想禁用 Cookie 并且使用的是Firefox浏览器,可在Firefox的隐私与安全中心进行设置。如果您使用的是其他浏览器,请向相关供应商咨询具体方案。
++依照《中华人民共和国网络安全法》第七十六条第五款,个人信息,是指以电子或者其他方式记录的能够单独或者与其他信息结合识别自然人个人身份的各种信息,包括但不限于自然人的姓名、出生日期、身份证件号码、个人生物识别信息、住址、电话号码等。如果Cookie中包含上述信息,或者存在通过Cookie收集的非个人信息与其他个人信息合并后的信息,出于本隐私政策的目的,我们会将合并后的信息视为个人隐私信息,将参照银河麒麟隐私政策声明,为您的个人信息提供相应的安全保护措施。
++
++四、知识产权条款
++
++   1.商标和标识
++    本产品受到版权(著作权)法、商标法和其他法律及国际知识产权公约的保护。我们或其许可方保留对本产品的所有权及所有相关的知识产权。对于我们或其许可方的任何商标、服务标记、标识或商号的任何权利、所有权或利益,本协议均不作任何授权。您对麒麟软件标记的任何使用都应有利于麒麟软件,未经我们书面同意,不得擅自使用麒麟软件任何商标、标识。 
++   2.关于复制、修改及分发
++   如果在所有复制品中维持本协议书不变,您可以且必须根据《GNU GPL-GNU通用公共许可证》复制、修改及分发银河麒麟操作系统软件产品中遵守《GNU GPL-GNU通用公共许可证》协议的软件,其他不遵守《GNU GPL-GNU通用公共许可证》协议的银河麒麟操作系统软件产品必须根据相关法律、其他许可协议进行复制、修改及分发,但任何以银河麒麟操作系统软件产品为基础的衍生发行版未经我们的书面授权不能使用任何我们的商标或其他任何标志。
++   特别注意:该复制、修改及分发不包括本产品中包含的任何不适用《GNU GPL-GNU通用公共许可证》的软件,如银河麒麟操作系统软件产品中包含的软件商店、输入法软件、字库软件、第三方应用软件等。除非适用法律予以禁止,否则您不得对上述软件进行复制、修改(包括反编译或反向工程)、分发。
++
++五、开放源代码说明
++
++   对于本产品中包含的任何开放源代码,本协议的任何条款均不得限制、约束或以其它方式影响任何适用开放源代码许可证赋予您的任何相应的权利或者义务或您应遵守的各种条件。
++
++六、第三方软件/服务说明
++
++   本协议所指的第三方软件/服务是指由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。本产品可能包含或捆绑有第三方软件/服务,这些第三方软件/服务附带单独的许可协议,您使用附带单独许可协议的任何第三方软件/服务需受到该单独许可协议的约束。
++我们不对本产品中的第三方软件/服务拥有任何控制权,也不对其提供方或用户行为的合法性、准确性、有效性、安全性进行任何明示或默示的保证或担保。
++
++七、免责条款
++
++   1.有限担保
++    我们向您担保,自购买或其他合法取得本产品之日起九十(90)天内(以销售合同日期为准),本产品的存储介质(如果有)在正常使用的情况下无材料和工艺方面的缺陷。在本有限担保项下,您可获得的所有补偿及我们的全部责任为由我们选择更换本产品介质或退还本产品的购买费用。
++    2.免责声明
++    除上述有限担保外,本软件按“原样”提供,不提供任何明示或默示的条件、陈述及担保,包括对适销性、对特定用途的适用性或非侵权性的任何默示的担保,均不予负责,但本免责声明被认定为法律上无效的情况除外。
++    3.责任限制
++    在法律允许范围内,无论在何种情况下,无论采用何种有关责任的理论,无论因何种方式导致,对于因使用或无法使用本软件引起的或与之相关的任何收益损失、利润或数据损失,或者对于特殊的、间接的、后果性的、偶发的或惩罚性的损害赔偿,我们或其许可方均不承担任何责任(即使我们已被告知可能出现上述损害赔偿)。根据本协议,在任何情况下,无论是在合同、侵权行为(包括过失)方面,还是在其他方面,我们对您的责任将不超过您就本软件所支付的金额。即使上述担保未能达到其基本目的,上述限制仍然适用。
++
++八、协议完整性及可分割性说明
++
++1.协议完整性
++    本协议是我们就产品使用与您达成的完整协议。它取代此前或同期的所有和本协议不一致的口头或书面往来信息、建议、陈述和担保。在本协议期间,有关报价、订单、回执或各方之间就本协议内容进行的其他往来通信中的任何冲突条款或附加条款,均以本协议为准。对本协议的任何修改均无约束力,除非通过书面进行修改并由每一方的授权代表签字。
++2.可分割性
++如果本协议中有任何规定被认定为无法执行,则删除相应规定,本协议仍然有效,除非该删除会防碍各方根本目的的实现(在这种情况下,本协议将立即终止)。
++
++九、适用法律及争议解决
++
++1.管辖法律适用
++    与本协议相关的任何争议解决(包括但不限于诉讼、仲裁等)均受适用中华人民共和国法律管辖。选择其它任何国家和地区的法律规则不予适用。
++2.终止
++如果本软件成为或在任一方看来可能成为任何知识产权侵权索赔之标的,则任一方可立即终止本协议。
++    本协议在终止之前有效。您可以随时终止本协议,但必须同时销毁本软件的全部正本和副本。如果您未遵守本协议的任何规定,则本协议将不经我们发出通知立即终止。终止时,您必须销毁本软件的全部正本和副本,并且需承担因未遵守本协议而导致的法律责任。
++
++本协议提供中英文两种版本,以上任何内容如有歧义,以中文版本为准。
++
++
++银河麒麟操作系统隐私政策声明
++版本发布日期:【2021】年【7】月【30】日
++版本生效日期:【2021】年【7】月【30】日
++
++   我们非常重视个人信息和隐私保护,为了保证合法、合理、适度的收集、存储、使用您的个人隐私信息,并在安全、可控的情况下进行传输、存储,我们制定了本声明。我们将会按照法律要求和业界成熟安全标准,为您的个人信息提供相应的安全保护措施。
++
++本声明将向您说明以下内容:
++一、关于收集和使用您的个人信息
++二、如何存储和保护您的个人信息
++三、如何管理您的个人信息
++四、关于第三方软件/服务的隐私说明
++五、关于未成年人使用产品
++六、本声明如何更新
++七、如何联系我们
++
++一、如何收集和使用您的个人信息
++
++    1.收集个人信息的情况
++   我们在您使用本产品过程中收集相关的信息,主要为了向您提供更高质量、更易用的产品和更好的服务。收集的部分信息由您直接提供,其他信息则由我们通过您与产品的交互以及对产品的使用和体验收集而来。除非我们已根据适用的法律规定取得您的明示同意,我们不会主动收集并处理您的个人信息。
++   1)本产品授权许可机制,会根据您所使用计算机的网卡、固件和主板等信息通过加密机制和转换方法生成申请产品正式授权许可的机器码;您将该机器码发送给麒麟软件商务人员后,可根据合同及相关协议申请正式许可。该机器码不直接包含您所使用计算机的网卡、固件和主板等设备的具体信息。
++   2)本产品软件商店的服务器端,会根据您所使用计算机的CPU类型信息以及IP地址进行连接,同时我们会收集您使用本产品软件商店的相关信息,包括但不限于打开软件商店的时间、各页面之间的交互、搜索内容、下载的内容等,收集的相关信息一般记录在软件商店的服务端系统的日志中,具体存储位置可能因为不同的服务场景有所变动。
++   3)本产品的升级更新,会根据您所使用计算机的IP地址进行连接,以便实现您升级更新系统;
++   4)因业务往来及技术服务等向您收集电子邮箱、电话、姓名等个人信息。
++   5)本产品的生物特征管理工具支持系统组件使用生物特征进行认证,包括指纹、指静脉、虹膜、声纹等。您录入的生物特征信息将储存在本地计算机,这部分信息我们仅接收验证结果,不会收集和上传。如您不需要使用生物特征进行系统认证,可以在生物特征管理工具中关闭该功能。
++   6)本产品提供录音功能,您在使用本产品录音软件中,我们仅会将您使用录音时的音频内容存储在本地计算机中,不会进行收集和上传。
++   7)本产品的服务与支持功能会收集由您提供给我们的日志、电子邮箱、电话、姓名等信息,便于提供技术服务,我们将妥善保管您的个人信息。
++   8)本产品升级过程中,如需新增收集您的个人信息,我们将及时更新本部分内容。
++   2.使用个人信息的情况
++   我们严格遵守法律法规的规定及与您的约定,将收集的信息用于以下用途。若我们超出以下用途,我们将再次向您进行说明,并征得您的同意。
++   1)涉及产品许可机制、软件商店使用、系统更新维护、生物识别、在线服务等需要;
++   2)我们会利用相关信息协助提升产品的安全性、可靠性和可持续服务;
++   3)我们会利用收集的信息(例如您提供的电子邮件地址、电话等)直接与您沟通。例如,业务联系、技术支持或服务回访;
++   4)我们会利用收集的数据改进产品当前的易用性、提升产品用户体验(例如软件商店的个性化推荐)以及修复产品缺陷等;
++   5)我们会将所收集到的用户行为数据用于大数据分析。例如,我们将收集到的信息用于分析形成不包含任何个人信息的城市热力图或行业洞察报告。我们可能对外公开并与我们的合作伙伴分享经统计加工后不含身份识别内容的信息,用于了解用户如何使用我们服务或让公众了解我们服务的总体使用趋势;
++
++   6)我们可能使用您的相关信息,在相关网站、应用及其他渠道向您提供与您更加相关的广告;
++   7)为了遵从相关法律法规、部门规章、政府指令的相关要求。
++   3.信息的分享及对外提供
++   我们不会共享或转让您的个人信息至第三方,但以下情况除外:
++   1)获取您的明确同意后,我们会与第三方分享您的个人信息;
++   2)为实现外部处理的目的,我们可能与关联公司或其他第三方合作伙伴(第三方服务供应商、承包商、代理、应用开发者等)分享您的个人信息。我们将采用加密、匿名化处理等手段来保障您的信息安全;
++   3)我们不会对外公开披露所收集的个人信息,如必须公开披露时,我们会向您告知此次公开披露的目的、披露信息的类型及可能涉及的敏感信息,并征得您的同意;
++   4)随着我们业务的持续发展,我们有可能进行合并、收购、资产转让等交易,我们将告知相关情形,按照法律法规及不低于本声明所要求的标准继续保护或要求新的控制者继续保护您的个人信息;
++   5)如我们使用您的个人信息,超出了与收集时所声称的目的及具有直接或合理关联的范围,我们将在使用您的个人信息前,再次向您告知并征得您的同意。
++   4.征得授权同意的例外情况
++   1)与国家安全、国防安全等国家利益直接相关的;
++   2)与公共安全、公共卫生、公众知情等重大公共利益直接相关的;
++   3)与犯罪侦查、起诉、审判和判决执行等直接相关的;
++   4)出于维护您或其他个人的生命、财产等重大合法权益但又无法得到您本人同意的;
++   5)所收集的个人信息是您自行向社会公众公开的;
++   6)从合法公开披露的信息中收集的个人信息,如合法的新闻报道、政府信息公开等渠道;
++   7)根据您要求签订和履行合同所必需的;
++   8)用于维护所提供的产品或服务的安全稳定运行所必需的。如发现、处置产品或服务的故障;
++   9)出于公共利益开展统计或学术研究所必需,且其对外提供学术研究或描述的结果时,对结果中所包含的个人信息进行去标识化处理的;
++   10)法律法规规定的其他情形。
++
++二、我们如何存储和保护您的个人信息
++
++   1.信息存储的地点
++   我们会按照法律法规规定,将在中国境内收集和产生的个人信息存储于中国境内。
++   2.信息存储的期限
++   一般而言,我们仅为实现目的所必需的时间或法律法规规定最短期限保留您的个人信息。记录在日志中的信息会按配置在一定期限保存及自动删除。
++   当我们的产品或服务发生停止运营的情形时,我们将以通知、公告等形式通知您,在合理的期限内删除您的个人信息或进行匿名化处理,并立即停止收集个人信息的活动。
++   3.我们如何保护这些信息
++   我们努力为用户的信息安全提供保障,以防止信息的丢失、不当使用、未经授权访问或披露。
++   我们将在合理的安全水平内使用安全保护措施以保障信息的安全。例如,我们会使用加密技术等手段来保护您的系统级账户密码。
++   我们建立专门的管理制度、流程和组织以保障信息的安全。例如,我们严格限制访问信息的人员范围,要求他们遵守保密义务。
++   4.应急预案
++   若发生个人信息泄露等安全事件,我们会依法启动应急预案,阻止安全事件扩大,并以推送通知、公告等形式告知您安全事件的情况、事件可能对您的影响以及我们将采取的补救措施。我们还将按照法律法规和监管部门要求,上报个人信息安全事件的处置情况。
++
++三、如何管理您的个人信息
++
++   如果担心因使用本产品导致个人信息的泄露,您可根据个人及业务需要考虑暂停或不使用涉及个人信息的相关功能,如产品正式授权许可、应用商店、系统更新升级、生物识别等。
++在使用本产品之上的第三方软件/服务时,请注意个人隐私保护。
++
++四、关于第三方软件/服务的隐私说明
++
++   本协议所指的第三方软件/服务是由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。
++您在本产品之上安装或使用第三方软件/服务时,第三方软件/服务的隐私保护和法律责任由第三方软件/服务自行负责,请您仔细阅读和审查第三方软件/服务对应的隐私声明或条款,注意个人隐私保护。
++
++五、关于未成年人使用产品
++
++   如果您是未成年人,则需要您的监护人同意您使用本产品并同意相关服务条款。除了提供产品所需要的信息外,我们不会刻意要求未成年人提供其他更多数据。在征得监护人同意或授权后,未成年人所创建的账户即被视为等同于其他任何账户。我们制定了专门的信息处理规则以保护使用本产品的未成年人的个人信息安全。监护人也应采取适当的预防措施保护未成年人,监督其对本产品的使用。
++
++六、本声明如何更新
++
++   我们可能会随时更新本声明,并且会在变更时通过产品安装过程或公司网站向您展示变更后的声明。在这些变更生效后使用服务或根据这些条款授予许可的任何软件,即表示您同意新的条款。如果您不同意新的条款,则必须停止使用本产品,请关闭您在本产品之上创建的账户;如果您是家长或监护人,请帮助您的未成年子女关闭他或她在本产品之上创建的账户。
++
++七、如何联系我们
++
++   如您对本声明存在任何疑问,或任何相关的投诉、意见,可通过我们的客服热线400-089-1870、官方网站(www.kylinos.cn)或本产品中“服务与支持”应用进行咨询或反映。您也可以通过发送邮件至market@kylinos.cn与我们联系。
++   我们会及时、妥善处理您的问题。一般情况下,我们将在15个工作日内给予答复。
++   本声明自更新之日起生效,同时提供中英文两种版本,以上任何条款如有歧义,以中文版本为准。
++   最近更新日期:2021年11月1日
++
++地址:天津市滨海高新区塘沽海洋科技园信安创业广场3号楼(300450)
++北京市海淀区北四环西路9号银谷大厦(100190)
++长沙市开福区芙蓉中路1段303号富兴世界金融中心T3栋(410000)
++上海市徐汇区番禺路1028号数娱大厦(200030)
++电话:天津(022)58955650  北京(010)51659955  
++长沙(0731)88280170 上海(021)51098866</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="83"/>
++        <source>Kylinsoft Co., Ltd.</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Projection</name>
++    <message>
++        <source>Projection</source>
++        <translation type="vanished">投屏</translation>
++    </message>
++    <message>
++        <source>Open Projection</source>
++        <translation type="vanished">开启投屏</translation>
++    </message>
++    <message>
++        <source>Projection Name</source>
++        <translation type="vanished">投屏端名称</translation>
++    </message>
++    <message>
++        <source>Add Bluetooths</source>
++        <translation type="vanished">添加蓝牙</translation>
++    </message>
++</context>
++<context>
++    <name>Proxy</name>
++    <message>
++        <source>Auto Proxy</source>
++        <translation type="vanished">自动代理</translation>
++        <extra-contents_path>/Proxy/Auto Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>Auto proxy</source>
++        <translation type="vanished">开启自动代理</translation>
++    </message>
++    <message>
++        <source>Auto url</source>
++        <translation type="vanished">配置URL</translation>
++        <extra-contents_path>/Proxy/Auto url</extra-contents_path>
++    </message>
++    <message>
++        <source>Manual Proxy</source>
++        <translation type="vanished">手动代理</translation>
++        <extra-contents_path>/Proxy/Manual Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>Manual proxy</source>
++        <translation type="vanished">开启手动代理</translation>
++    </message>
++    <message>
++        <source>Http Proxy</source>
++        <translation type="vanished">HTTP代理</translation>
++        <extra-contents_path>/Proxy/Http Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>Port</source>
++        <translation type="vanished">端口</translation>
++    </message>
++    <message>
++        <source>Cetification</source>
++        <translation type="vanished">认证</translation>
++    </message>
++    <message>
++        <source>System Proxy</source>
++        <translation type="vanished">系统代理</translation>
++    </message>
++    <message>
++        <source>Https Proxy</source>
++        <translation type="vanished">HTTPS代理</translation>
++        <extra-contents_path>/Proxy/Https Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>Ftp Proxy</source>
++        <translation type="vanished">FTP代理</translation>
++        <extra-contents_path>/Proxy/Ftp Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>Socks Proxy</source>
++        <translation type="vanished">SOCKS代理</translation>
++        <extra-contents_path>/Proxy/Socks Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>List of ignored hosts. more than one entry, please separate with english semicolon(;)</source>
++        <translation type="vanished">忽略的主机列表,请使用英文分号(;)</translation>
++    </message>
++    <message>
++        <source>Enable Authentication</source>
++        <translation type="vanished">启用认证</translation>
++    </message>
++    <message>
++        <source>User Name</source>
++        <translation type="vanished">用户名</translation>
++    </message>
++    <message>
++        <source>Password</source>
++        <translation type="vanished">密码</translation>
++    </message>
++    <message>
++        <source>Apt Proxy</source>
++        <translation type="vanished">APT代理</translation>
++        <extra-contents_path>/Proxy/Apt Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>Open</source>
++        <translation type="vanished">开启</translation>
++    </message>
++    <message>
++        <source>Server Address : </source>
++        <translation type="vanished">服务器地址:</translation>
++    </message>
++    <message>
++        <source>Port : </source>
++        <translation type="vanished">端口:</translation>
++    </message>
++    <message>
++        <source>Edit</source>
++        <translation type="vanished">编辑</translation>
++    </message>
++    <message>
++        <source>The apt proxy  has been turned off and needs to be restarted to take effect</source>
++        <translation type="vanished">apt代理功能已关闭 需重启后生效</translation>
++    </message>
++    <message>
++        <source>The system needs to be restarted to set the Apt proxy, whether to reboot</source>
++        <translation type="vanished">设置APT代理需要重启系统后生效,是否重启系统</translation>
++    </message>
++    <message>
++        <source>Reboot Now</source>
++        <translation type="vanished">立即重启</translation>
++    </message>
++    <message>
++        <source>Start using</source>
++        <translation type="vanished">启用</translation>
++    </message>
++    <message>
++        <source>Proxy mode</source>
++        <translation type="vanished">代理类型</translation>
++    </message>
++    <message>
++        <source>Auto</source>
++        <translation type="vanished">自动</translation>
++    </message>
++    <message>
++        <source>Manual</source>
++        <translation type="vanished">手动</translation>
++    </message>
++    <message>
++        <source>Reboot Later</source>
++        <translation type="vanished">稍后重启</translation>
++    </message>
++    <message>
++        <source>proxy</source>
++        <translation type="vanished">代理</translation>
++    </message>
++    <message>
++        <source>Proxy</source>
++        <translation type="vanished">代理</translation>
++    </message>
++</context>
++<context>
++    <name>QObject</name>
++    <message>
++        <source>display</source>
++        <translation type="vanished">显示器</translation>
++    </message>
++    <message>
++        <source>defaultapp</source>
++        <translation type="vanished">默认应用</translation>
++    </message>
++    <message>
++        <source>power</source>
++        <translation type="vanished">电源</translation>
++    </message>
++    <message>
++        <source>autoboot</source>
++        <translation type="vanished">开机启动</translation>
++    </message>
++    <message>
++        <source>printer</source>
++        <translation type="vanished">打印机</translation>
++    </message>
++    <message>
++        <source>mousecontrol</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>mouse</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>touchpad</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>keyboard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++    <message>
++        <source>shortcut</source>
++        <translation type="vanished">快捷键</translation>
++    </message>
++    <message>
++        <source>audio</source>
++        <translation type="vanished">声音</translation>
++    </message>
++    <message>
++        <source>background</source>
++        <translation type="vanished">背景</translation>
++    </message>
++    <message>
++        <source>screenlock</source>
++        <translation type="vanished">锁屏</translation>
++    </message>
++    <message>
++        <source>fonts</source>
++        <translation type="vanished">字体</translation>
++    </message>
++    <message>
++        <source>Screensaver</source>
++        <translation type="vanished">屏保</translation>
++    </message>
++    <message>
++        <source>desktop</source>
++        <translation type="vanished">桌面</translation>
++    </message>
++    <message>
++        <source>netconnect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>vpn</source>
++        <translation type="vanished">VPN</translation>
++    </message>
++    <message>
++        <source>proxy</source>
++        <translation type="vanished">代理</translation>
++    </message>
++    <message>
++        <source>userinfo</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>datetime</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>area</source>
++        <translation type="vanished">区域语言</translation>
++    </message>
++    <message>
++        <source>update</source>
++        <translation type="vanished">更新和备份</translation>
++    </message>
++    <message>
++        <source>backup</source>
++        <translation type="vanished">备份</translation>
++    </message>
++    <message>
++        <source>notice</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <source>about</source>
++        <translation type="vanished">关于</translation>
++    </message>
++    <message>
++        <source>experienceplan</source>
++        <translation type="vanished">体验计划</translation>
++    </message>
++    <message>
++        <source>theme</source>
++        <translation type="vanished">主题</translation>
++    </message>
++    <message>
++        <source>ukui-control-center had already running!</source>
++        <translation type="vanished">控制面板已经在运行!</translation>
++    </message>
++    <message>
++        <source>basicIcon</source>
++        <translation type="vanished">基础</translation>
++    </message>
++    <message>
++        <source>classicalIcon</source>
++        <translation type="vanished">经典</translation>
++    </message>
++    <message>
++        <source>defaultIcon</source>
++        <translation type="vanished">默认</translation>
++    </message>
++    <message>
++        <source>blue-crystal</source>
++        <translation type="vanished">蓝水晶</translation>
++    </message>
++    <message>
++        <source>dark-sense</source>
++        <translation type="vanished">深色质感</translation>
++    </message>
++    <message>
++        <source>DMZ-Black</source>
++        <translation type="vanished">DMZ-黑</translation>
++    </message>
++    <message>
++        <source>DMZ-White</source>
++        <translation type="vanished">DMZ-白</translation>
++    </message>
++    <message>
++        <source>basic</source>
++        <translation type="vanished">基础</translation>
++    </message>
++    <message>
++        <source>classical</source>
++        <translation type="vanished">经典</translation>
++    </message>
++    <message>
++        <source>default</source>
++        <translation type="vanished">默认</translation>
++    </message>
++    <message>
++        <source>fashion</source>
++        <translation type="vanished">时尚</translation>
++    </message>
++    <message>
++        <source>hp</source>
++        <translation type="vanished">惠普</translation>
++    </message>
++    <message>
++        <source>ukui</source>
++        <translation type="vanished">基础</translation>
++    </message>
++    <message>
++        <source>lightseeking</source>
++        <translation type="vanished">寻光</translation>
++    </message>
++    <message>
++        <source>HeYin</source>
++        <translation type="vanished">和印</translation>
++    </message>
++    <message>
++        <source>found</source>
++        <translation type="vanished">寻光</translation>
++    </message>
++    <message>
++        <source>heyin</source>
++        <translation type="vanished">和印</translation>
++    </message>
++    <message>
++        <source>Unknown</source>
++        <translation type="vanished">未知</translation>
++    </message>
++    <message>
++        <source>Custom Shortcut</source>
++        <translation type="vanished">自定义快捷键</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcut.cpp" line="186"/>
++        <source>Customize Shortcut</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="463"/>
++        <source>Edit Shortcut</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Update Shortcut</source>
++        <translation type="vanished">更新快捷键</translation>
++    </message>
++    <message>
++        <source>Add Shortcut</source>
++        <translation type="vanished">添加快捷键</translation>
++    </message>
++    <message>
++        <source>Display</source>
++        <translation type="vanished">显示器</translation>
++    </message>
++    <message>
++        <source>Defaultapp</source>
++        <translation type="vanished">默认应用</translation>
++    </message>
++    <message>
++        <source>Power</source>
++        <translation type="vanished">电源</translation>
++    </message>
++    <message>
++        <source>Autoboot</source>
++        <translation type="vanished">开机启动</translation>
++    </message>
++    <message>
++        <source>TouchScreen</source>
++        <translation type="vanished">触摸屏</translation>
++    </message>
++    <message>
++        <source>User Info Intel</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>Biometrics</source>
++        <translation type="vanished">生物特征与密码</translation>
++    </message>
++    <message>
++        <source>Default App</source>
++        <translation type="vanished">默认应用</translation>
++    </message>
++    <message>
++        <source>Auto Boot</source>
++        <translation type="vanished">开机启动</translation>
++    </message>
++    <message>
++        <source>Printer</source>
++        <translation type="vanished">打印机</translation>
++    </message>
++    <message>
++        <source>Projection</source>
++        <translation type="vanished">投屏</translation>
++    </message>
++    <message>
++        <source>System Recovery</source>
++        <translation type="vanished">系统还原</translation>
++    </message>
++    <message>
++        <source>Mouse</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>Touchpad</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>Gesture</source>
++        <translatorcomment>手势</translatorcomment>
++        <translation type="obsolete">手势</translation>
++    </message>
++    <message>
++        <source>Keyboard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++    <message>
++        <source>Shortcut</source>
++        <translation type="vanished">快捷键</translation>
++    </message>
++    <message>
++        <source>Audio</source>
++        <translation type="vanished">声音</translation>
++    </message>
++    <message>
++        <source>Bluetooth</source>
++        <translation type="vanished">蓝牙</translation>
++    </message>
++    <message>
++        <source>Background</source>
++        <translation type="vanished">背景</translation>
++    </message>
++    <message>
++        <source>Theme</source>
++        <translation type="vanished">主题</translation>
++    </message>
++    <message>
++        <source>WiredConnect</source>
++        <translation type="vanished">有线网络</translation>
++    </message>
++    <message>
++        <source>WlanConnect</source>
++        <translation type="vanished">无线局域网</translation>
++    </message>
++    <message>
++        <source>MobileHotspot</source>
++        <translation type="vanished">移动热点</translation>
++    </message>
++    <message>
++        <source>Screenlock</source>
++        <translation type="vanished">锁屏</translation>
++    </message>
++    <message>
++        <source>Fonts</source>
++        <translation type="vanished">字体</translation>
++    </message>
++    <message>
++        <source>Desktop</source>
++        <translation type="vanished">桌面</translation>
++    </message>
++    <message>
++        <source>Connect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>Vino</source>
++        <translation type="vanished">远程桌面</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="75"/>
++        <source>User Info</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Date</source>
++        <translation type="vanished">时间和日期</translation>
++    </message>
++    <message>
++        <source>Dat</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>Security Center</source>
++        <translation type="vanished">安全中心</translation>
++    </message>
++    <message>
++        <source>Netconnect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>Vpn</source>
++        <translation type="vanished">VPN</translation>
++    </message>
++    <message>
++        <source>Proxy</source>
++        <translation type="vanished">代理</translation>
++    </message>
++    <message>
++        <source>Userinfo</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>Cloud Account</source>
++        <translation type="vanished">云账户</translation>
++    </message>
++    <message>
++        <source>Datetime</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>Area</source>
++        <translation type="vanished">区域语言</translation>
++    </message>
++    <message>
++        <source>SecurityCenter</source>
++        <translation type="vanished">安全中心</translation>
++    </message>
++    <message>
++        <source>Update</source>
++        <translation type="vanished">安全与更新</translation>
++    </message>
++    <message>
++        <source>Backup</source>
++        <translation type="vanished">备份</translation>
++    </message>
++    <message>
++        <source>Upgrade</source>
++        <translation type="vanished">更新</translation>
++    </message>
++    <message>
++        <source>Notice</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <source>Search</source>
++        <translation type="vanished">搜索</translation>
++    </message>
++    <message>
++        <source>About</source>
++        <translation type="vanished">关于</translation>
++    </message>
++    <message>
++        <source>Experienceplan</source>
++        <translation type="vanished">体验计划</translation>
++    </message>
++    <message>
++        <source>Never</source>
++        <translation type="vanished">从不</translation>
++    </message>
++    <message>
++        <source>10min</source>
++        <translation type="vanished">10min</translation>
++    </message>
++    <message>
++        <source>20min</source>
++        <translation type="vanished">20min</translation>
++    </message>
++    <message>
++        <source>40min</source>
++        <translation type="vanished">40min</translation>
++    </message>
++    <message>
++        <source>80min</source>
++        <translation type="vanished">80min</translation>
++    </message>
++    <message>
++        <source>interactive</source>
++        <translation type="vanished">询问</translation>
++    </message>
++    <message>
++        <source>suspend</source>
++        <translation type="vanished">睡眠</translation>
++    </message>
++    <message>
++        <source>hibernate</source>
++        <translation type="vanished">休眠</translation>
++    </message>
++    <message>
++        <source>shutdown</source>
++        <translation type="vanished">关机</translation>
++    </message>
++    <message>
++        <source>nothing</source>
++        <translation type="vanished">无操作</translation>
++    </message>
++    <message>
++        <source>blank</source>
++        <translation type="vanished">关闭显示器</translation>
++    </message>
++    <message>
++        <source>Year</source>
++        <translation type="vanished">年</translation>
++    </message>
++    <message>
++        <source>Jan</source>
++        <translation type="vanished">一月</translation>
++    </message>
++    <message>
++        <source>Feb</source>
++        <translation type="vanished">二月</translation>
++    </message>
++    <message>
++        <source>Mar</source>
++        <translation type="vanished">三月</translation>
++    </message>
++    <message>
++        <source>Apr</source>
++        <translation type="vanished">四月</translation>
++    </message>
++    <message>
++        <source>May</source>
++        <translation type="vanished">五月</translation>
++    </message>
++    <message>
++        <source>January</source>
++        <translation type="vanished">一月</translation>
++    </message>
++    <message>
++        <source>February</source>
++        <translation type="vanished">二月</translation>
++    </message>
++    <message>
++        <source>March</source>
++        <translation type="vanished">三月</translation>
++    </message>
++    <message>
++        <source>April</source>
++        <translation type="vanished">四月</translation>
++    </message>
++    <message>
++        <source>June</source>
++        <translation type="vanished">六月</translation>
++    </message>
++    <message>
++        <source>July</source>
++        <translation type="vanished">七月</translation>
++    </message>
++    <message>
++        <source>August</source>
++        <translation type="vanished">八月</translation>
++    </message>
++    <message>
++        <source>September</source>
++        <translation type="vanished">九月</translation>
++    </message>
++    <message>
++        <source>October</source>
++        <translation type="vanished">十月</translation>
++    </message>
++    <message>
++        <source>Novermber</source>
++        <translation type="vanished">十一月</translation>
++    </message>
++    <message>
++        <source>December</source>
++        <translation type="vanished">十二月</translation>
++    </message>
++    <message>
++        <source>Jun</source>
++        <translation type="vanished">六月</translation>
++    </message>
++    <message>
++        <source>Jul</source>
++        <translation type="vanished">七月</translation>
++    </message>
++    <message>
++        <source>Aug</source>
++        <translation type="vanished">八月</translation>
++    </message>
++    <message>
++        <source>Sep</source>
++        <translation type="vanished">九月</translation>
++    </message>
++    <message>
++        <source>Oct</source>
++        <translation type="vanished">十月</translation>
++    </message>
++    <message>
++        <source>Nov</source>
++        <translation type="vanished">十一月</translation>
++    </message>
++    <message>
++        <source>Dec</source>
++        <translation type="vanished">十二月</translation>
++    </message>
++    <message>
++        <source>Day</source>
++        <translation type="vanished">日</translation>
++    </message>
++    <message>
++        <location filename="../../main.cpp" line="100"/>
++        <source>ukui-control-center is disabled!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../main.cpp" line="128"/>
++        <source>ukui-control-center</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../main.cpp" line="89"/>
++        <source>ukui-control-center is already running!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Pwd input error, re-enter!</source>
++        <translation type="vanished">密码输入错误,重新输入!</translation>
++    </message>
++    <message>
++        <source>Go to monitor settings page</source>
++        <translation type="vanished">管理和配置显示和监视器</translation>
++    </message>
++    <message>
++        <source>Go to defaultapp settings page</source>
++        <translation type="vanished">选择默认应用</translation>
++    </message>
++    <message>
++        <source>Go to printer settings page</source>
++        <translation type="vanished">打印机管理</translation>
++    </message>
++    <message>
++        <source>Go to projection settings page</source>
++        <translation type="vanished">投屏设置</translation>
++    </message>
++    <message>
++        <source>Go to mouse settings page</source>
++        <translation type="vanished">配置鼠标选项</translation>
++    </message>
++    <message>
++        <source>Go to touchpad settings page</source>
++        <translation type="vanished">触控板管理</translation>
++    </message>
++    <message>
++        <source>Go to keyboard settings page</source>
++        <translation type="vanished">键盘设置</translation>
++    </message>
++    <message>
++        <source>Go to shortcut settings page</source>
++        <translation type="vanished">配置快捷键</translation>
++    </message>
++    <message>
++        <source>Go to bluetooth settings page</source>
++        <translation type="vanished">蓝牙设置</translation>
++    </message>
++    <message>
++        <source>Go to background settings page</source>
++        <translation type="vanished">配置桌面壁纸</translation>
++    </message>
++    <message>
++        <source>Go to theme settings page</source>
++        <translation type="vanished">配置主题</translation>
++    </message>
++    <message>
++        <source>Go to screenlock settings page</source>
++        <translation type="vanished">锁屏设置</translation>
++    </message>
++    <message>
++        <source>Go to screensaver settings page</source>
++        <translation type="vanished">屏保设置</translation>
++    </message>
++    <message>
++        <source>Go to fonts settings page</source>
++        <translation type="vanished">配置用户字体</translation>
++    </message>
++    <message>
++        <source>Go to netconnect settings page</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>Go to proxy settings page</source>
++        <translation type="vanished">代理设置</translation>
++    </message>
++    <message>
++        <source>Go to mobilehotspot settings page</source>
++        <translation type="vanished">移动热点</translation>
++    </message>
++    <message>
++        <source>Go to userinfo settings page</source>
++        <translation type="vanished">管理用户信息</translation>
++    </message>
++    <message>
++        <source>Go to cloudaccount settings page</source>
++        <translation type="vanished">配置您的网络账户</translation>
++    </message>
++    <message>
++        <source>Go to area settings page</source>
++        <translation type="vanished">区域语言</translation>
++    </message>
++    <message>
++        <source>Go to update settings page</source>
++        <translation type="vanished">更新管理</translation>
++    </message>
++    <message>
++        <source>Go to backup settings page</source>
++        <translation type="vanished">备份管理</translation>
++    </message>
++    <message>
++        <source>Go to upgrade settings page</source>
++        <translation type="vanished">更新设置</translation>
++    </message>
++    <message>
++        <source>Go to about settings page</source>
++        <translation type="vanished">此系统的信息</translation>
++    </message>
++    <message>
++        <source>Go to search settings page</source>
++        <translation type="vanished">搜索</translation>
++    </message>
++    <message>
++        <source>Go to power settings page</source>
++        <translation type="vanished">配置电源管理</translation>
++    </message>
++    <message>
++        <source>Go to datetime settings page</source>
++        <translation type="vanished">管理日期和时间</translation>
++    </message>
++    <message>
++        <source>Go to desktop settings page</source>
++        <translation type="vanished">配置托盘,开始菜单图标</translation>
++    </message>
++    <message>
++        <source>Go to audio settings page</source>
++        <translation type="vanished">音量设置</translation>
++    </message>
++    <message>
++        <source>Go to notice settings page</source>
++        <translation type="vanished">通知管理模块</translation>
++    </message>
++    <message>
++        <source>Go to vpn settings page</source>
++        <translation type="vanished">VPN模块</translation>
++    </message>
++    <message>
++        <source>Go to autoboot settings page</source>
++        <translation type="vanished">自动启动的应用程序</translation>
++    </message>
++    <message>
++        <source>Connection failed, attempting reconnect</source>
++        <translation type="vanished">连接失败,尝试重新连接</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1221"/>
++        <source>min length %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1231"/>
++        <source>min digit num %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1240"/>
++        <source>min upper num %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1249"/>
++        <source>min lower num %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1258"/>
++        <source>min other num %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1268"/>
++        <source>min char class %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1277"/>
++        <source>max repeat %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1286"/>
++        <source>max class repeat %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1295"/>
++        <source>max sequence %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>system upgrade new backup</source>
++        <translation type="vanished">系统升级新建备份</translation>
++    </message>
++    <message>
++        <source>system upgrade increment backup</source>
++        <translation type="vanished">系统升级增量备份</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="373"/>
++        <source>Programs are not allowed to be added.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>简体中文</source>
++        <translation type="vanished">简体中文</translation>
++    </message>
++    <message>
++        <source>English</source>
++        <translation type="vanished">英语</translation>
++    </message>
++    <message>
++        <source>བོད་ཡིག</source>
++        <translation type="vanished">藏语</translation>
++    </message>
++</context>
++<context>
++    <name>RegDialog</name>
++    <message>
++        <source>Get</source>
++        <translation type="vanished">获取验证码</translation>
++    </message>
++    <message>
++        <source>Your password here</source>
++        <translation type="vanished">输入密码</translation>
++    </message>
++    <message>
++        <source>Your account here</source>
++        <translation type="vanished">请输入用户名</translation>
++    </message>
++    <message>
++        <source>Confirm your password</source>
++        <translation type="vanished">确认密码</translation>
++    </message>
++    <message>
++        <source>Your code here</source>
++        <translation type="vanished">输入验证码</translation>
++    </message>
++    <message>
++        <source>This operation is permanent</source>
++        <translation type="vanished">设置后不可更改,最高30位</translation>
++    </message>
++    <message>
++        <source>At least 6 bit, include letters and digt</source>
++        <translation type="vanished">至少六位,包含大小写字母、数字</translation>
++    </message>
++    <message>
++        <source>Your password is valid!</source>
++        <translation type="vanished">您的密码是有效的!</translation>
++    </message>
++</context>
++<context>
++    <name>ResolutionSlider</name>
++    <message>
++        <source>(recommend)</source>
++        <translation type="vanished">(推荐)</translation>
++    </message>
++    <message>
++        <source>No available resolutions</source>
++        <translation type="vanished">没有合适的分辨率</translation>
++    </message>
++</context>
++<context>
++    <name>Screenlock</name>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="32"/>
++        <source>Screenlock</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Screenlock Interface</source>
++        <translation type="vanished">锁屏界面</translation>
++        <extra-contents_path>/Screenlock/Screenlock Interface</extra-contents_path>
++    </message>
++    <message>
++        <source>Show message on lock screen</source>
++        <translation type="vanished">锁屏时显示消息</translation>
++    </message>
++    <message>
++        <source>Related Settings</source>
++        <translation type="vanished">相关设置</translation>
++    </message>
++    <message>
++        <source>Screenlock Set</source>
++        <translation type="vanished">锁屏设置</translation>
++    </message>
++    <message>
++        <source>Lock screen when screensaver boot</source>
++        <translation type="vanished">激活屏保时锁定屏幕</translation>
++    </message>
++    <message>
++        <source>Lock screen delay</source>
++        <translation type="vanished">此时间段后锁屏</translation>
++    </message>
++    <message>
++        <source>Min</source>
++        <translation type="vanished">分钟</translation>
++    </message>
++    <message>
++        <source>Select screenlock background</source>
++        <translation type="vanished">选择锁屏背景</translation>
++    </message>
++    <message>
++        <source>Browser online wp</source>
++        <translation type="vanished">浏览线上壁纸</translation>
++    </message>
++    <message>
++        <source>Browser local wp</source>
++        <translation type="vanished">浏览本地壁纸</translation>
++    </message>
++    <message>
++        <source>Show picture of screenlock on screenlogin</source>
++        <translation type="vanished">显示锁屏壁纸在登录界面</translation>
++        <extra-contents_path>/Screenlock/Show picture of screenlock on screenlogin</extra-contents_path>
++    </message>
++    <message>
++        <source>Enabel screenlock</source>
++        <translation type="vanished">开启锁屏</translation>
++    </message>
++    <message>
++        <source>Open</source>
++        <translation type="obsolete">浏览</translation>
++    </message>
++    <message>
++        <source>screenlock</source>
++        <translation type="vanished">锁屏</translation>
++    </message>
++    <message>
++        <source>picture</source>
++        <translation type="obsolete">图片</translation>
++    </message>
++    <message>
++        <source>Never</source>
++        <translation type="vanished">从不</translation>
++    </message>
++    <message>
++        <source>1m</source>
++        <translation type="vanished">1m</translation>
++    </message>
++    <message>
++        <source>5m</source>
++        <translation type="vanished">5m</translation>
++    </message>
++    <message>
++        <source>10m</source>
++        <translation type="vanished">10m</translation>
++    </message>
++    <message>
++        <source>30m</source>
++        <translation type="vanished">30m</translation>
++    </message>
++    <message>
++        <source>45m</source>
++        <translation type="vanished">45m</translation>
++    </message>
++    <message>
++        <source>1h</source>
++        <translation type="vanished">1h</translation>
++    </message>
++    <message>
++        <source>1.5h</source>
++        <translation type="vanished">1.5h</translation>
++    </message>
++    <message>
++        <source>3h</source>
++        <translation type="vanished">3h</translation>
++    </message>
++    <message>
++        <source>2h</source>
++        <translation type="vanished">2h</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="172"/>
++        <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>allFiles(*.*)</source>
++        <translation type="vanished">所有文件(*.*)</translation>
++    </message>
++    <message>
++        <source>1min</source>
++        <translation type="vanished">1分钟</translation>
++    </message>
++    <message>
++        <source>5min</source>
++        <translation type="vanished">5分钟</translation>
++    </message>
++    <message>
++        <source>10min</source>
++        <translation type="vanished">10分钟</translation>
++    </message>
++    <message>
++        <source>30min</source>
++        <translation type="vanished">30分钟</translation>
++    </message>
++    <message>
++        <source>45min</source>
++        <translation type="vanished">45分钟</translation>
++    </message>
++    <message>
++        <source>1hour</source>
++        <translation type="vanished">1小时</translation>
++    </message>
++    <message>
++        <source>2hour</source>
++        <translation type="vanished">2小时</translation>
++    </message>
++    <message>
++        <source>3hour</source>
++        <translation type="vanished">3小时</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="213"/>
++        <source>select custom wallpaper file</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="214"/>
++        <source>Select</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="215"/>
++        <source>Position: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="216"/>
++        <source>FileName: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="217"/>
++        <source>FileType: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="218"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Monitor Off</source>
++        <translation type="vanished">关闭显示器</translation>
++    </message>
++    <message>
++        <source>Screensaver</source>
++        <translation type="vanished">屏幕保护</translation>
++    </message>
++    <message>
++        <source>Set</source>
++        <translation type="vanished">去设置</translation>
++    </message>
++</context>
++<context>
++    <name>ScreenlockUi</name>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="41"/>
++        <source>Show picture of screenlock on screenlogin</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Show picture of screenlock on screenlogin</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="43"/>
++        <source>Leave lock (System will be locked when the paired phone gone)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="44"/>
++        <source>Specified device</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
++        <source>No paired phone. Please turn to &apos;Bluetooth&apos; to pair.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="65"/>
++        <source>Screenlock</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Screenlock</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="95"/>
++        <source>Local Pictures</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Local Pictures</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="97"/>
++        <source>Online Pictures</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Online Pictures</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="99"/>
++        <source>Reset To Default</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Reset To Default</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="111"/>
++        <source>Bluetooth</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="116"/>
++        <source>No bluetooth adapter detected, can not use Leave Lock.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="134"/>
++        <source>Monitor Off</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="135"/>
++        <source>Screensaver</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="137"/>
++        <source>Related Settings</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="143"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="144"/>
++        <source>Set</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="159"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="526"/>
++        <source>Please select device</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Screensaver</name>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="37"/>
++        <source>Screensaver</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Idle time</source>
++        <translation type="vanished">此时间段后开启屏保</translation>
++        <extra-contents_path>/Screensaver/Idle time</extra-contents_path>
++    </message>
++    <message>
++        <source>Lock screen when activating screensaver</source>
++        <translation type="vanished">激活屏保时锁住屏幕</translation>
++    </message>
++    <message>
++        <source>Enable screensaver</source>
++        <translation type="vanished">开启屏保</translation>
++    </message>
++    <message>
++        <source>Screensaver program</source>
++        <translation type="vanished">屏幕保护程序</translation>
++        <extra-contents_path>/Screensaver/Screensaver program</extra-contents_path>
++    </message>
++    <message>
++        <source>idle time</source>
++        <translation type="vanished">等待时间</translation>
++    </message>
++    <message>
++        <source>Min</source>
++        <translation type="vanished">分钟</translation>
++    </message>
++    <message>
++        <source>Lock screen when screensaver boot</source>
++        <translation type="vanished">激活屏保时锁定屏幕</translation>
++    </message>
++    <message>
++        <source>screensaver</source>
++        <translation type="vanished">屏保</translation>
++    </message>
++    <message>
++        <source>Default_ukui</source>
++        <translation type="vanished">默认屏保</translation>
++    </message>
++    <message>
++        <source>View</source>
++        <translation type="vanished">预览</translation>
++    </message>
++    <message>
++        <source>Text(up to 30 characters):</source>
++        <translation type="vanished">屏保文本(最多30个字):</translation>
++    </message>
++    <message>
++        <source>Show rest time</source>
++        <translation type="vanished">显示休息时间</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="174"/>
++        <source>UKUI</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Blank_Only</source>
++        <translation type="vanished">黑屏</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="174"/>
++        <source>Customize</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
++        <source>5min</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
++        <source>10min</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
++        <source>15min</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
++        <source>30min</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
++        <source>1hour</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Screensaver source</source>
++        <translation type="vanished">屏保来源</translation>
++    </message>
++    <message>
++        <source>Select</source>
++        <translation type="vanished">选择</translation>
++    </message>
++    <message>
++        <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</source>
++        <translation type="vanished">壁纸文件(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</translation>
++    </message>
++    <message>
++        <source>select custom screensaver dir</source>
++        <translation type="vanished">选择自定义屏保路径</translation>
++    </message>
++    <message>
++        <source>Position: </source>
++        <translation type="vanished">位置:</translation>
++    </message>
++    <message>
++        <source>FileName: </source>
++        <translation type="vanished">文件名:</translation>
++    </message>
++    <message>
++        <source>FileType: </source>
++        <translation type="vanished">文件类型:</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Switching time</source>
++        <translation type="vanished">切换频率</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="168"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
++        <source>1min</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Ordinal</source>
++        <translation type="vanished">按顺序</translation>
++    </message>
++    <message>
++        <source>Random switching</source>
++        <translation type="vanished">随机切换</translation>
++    </message>
++    <message>
++        <source>Display text</source>
++        <translation type="vanished">显示文本</translation>
++    </message>
++    <message>
++        <source>Enter text, up to 30 characters</source>
++        <translation type="vanished">输入文本,最多30个字符</translation>
++    </message>
++    <message>
++        <source>Text position</source>
++        <translation type="vanished">文本位置</translation>
++    </message>
++    <message>
++        <source>Centered</source>
++        <translation type="vanished">居中</translation>
++    </message>
++    <message>
++        <source>Randow(Bubble text)</source>
++        <translation type="vanished">随机(气泡文本)</translation>
++    </message>
++    <message>
++        <source>1m</source>
++        <translation type="vanished">1m</translation>
++    </message>
++    <message>
++        <source>5m</source>
++        <translation type="vanished">5m</translation>
++    </message>
++    <message>
++        <source>10m</source>
++        <translation type="vanished">10m</translation>
++    </message>
++    <message>
++        <source>30m</source>
++        <translation type="vanished">30m</translation>
++    </message>
++    <message>
++        <source>45m</source>
++        <translation type="vanished">45m</translation>
++    </message>
++    <message>
++        <source>1h</source>
++        <translation type="vanished">1h</translation>
++    </message>
++    <message>
++        <source>1.5h</source>
++        <translation type="vanished">1.5h</translation>
++    </message>
++    <message>
++        <source>3h</source>
++        <translation type="vanished">3h</translation>
++    </message>
++    <message>
++        <source>Random</source>
++        <translation type="vanished">随机</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
++        <source>Never</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>ScreensaverUi</name>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="40"/>
++        <source>Screensaver</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Screensaver</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="53"/>
++        <source>Idle time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screensaver/Idle time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="55"/>
++        <source>Screensaver program</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screensaver/Screensaver program</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="86"/>
++        <source>Screensaver source</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="91"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="449"/>
++        <source>Select</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="112"/>
++        <source>Ordinal</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="113"/>
++        <source>Random</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="119"/>
++        <source>Random switching</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="138"/>
++        <source>Switching time</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="157"/>
++        <source>Text(up to 30 characters):</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="179"/>
++        <source>Text position</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="187"/>
++        <source>Centered</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="188"/>
++        <source>Randow(Bubble text)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="209"/>
++        <source>Show rest time</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="218"/>
++        <source>Lock screen when screensaver boot</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="407"/>
++        <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="448"/>
++        <source>select custom screensaver dir</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="450"/>
++        <source>Position: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="451"/>
++        <source>FileName: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="452"/>
++        <source>FileType: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="453"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Search</name>
++    <message>
++        <source>Search</source>
++        <translation type="vanished">搜索</translation>
++    </message>
++    <message>
++        <source>Create Index</source>
++        <translation type="vanished">创建索引</translation>
++    </message>
++    <message>
++        <source>Create index</source>
++        <translation type="vanished">创建索引</translation>
++    </message>
++    <message>
++        <source>Creating index can help you getting results quickly.</source>
++        <translation type="vanished">创建索引可以帮助您快速获取搜索结果</translation>
++    </message>
++    <message>
++        <source>Web Engine</source>
++        <translation type="vanished">搜索引擎</translation>
++    </message>
++    <message>
++        <source>Default web searching engine</source>
++        <translation type="vanished">默认互联网搜索引擎</translation>
++    </message>
++    <message>
++        <source>baidu</source>
++        <translation type="vanished">百度</translation>
++    </message>
++    <message>
++        <source>sougou</source>
++        <translation type="vanished">搜狗</translation>
++    </message>
++    <message>
++        <source>360</source>
++        <translation type="vanished">360</translation>
++    </message>
++    <message>
++        <source>Block Folders</source>
++        <translation type="vanished">屏蔽文件夹</translation>
++    </message>
++    <message>
++        <source>Following folders will not be searched. You can set it by adding and removing folders.</source>
++        <translation type="vanished">搜索将不再查看以下文件夹,通过添加和删除可以设置文件索引位置。</translation>
++    </message>
++    <message>
++        <source>Choose folder</source>
++        <translation type="vanished">选择要屏蔽的文件夹</translation>
++    </message>
++    <message>
++        <source>delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source>Directories</source>
++        <translation type="vanished">文件夹</translation>
++    </message>
++    <message>
++        <source>select blocked folder</source>
++        <translation type="vanished">选择要屏蔽的文件夹</translation>
++    </message>
++    <message>
++        <source>Select</source>
++        <translation type="vanished">选择</translation>
++    </message>
++    <message>
++        <source>Position: </source>
++        <translation type="vanished">位置: </translation>
++    </message>
++    <message>
++        <source>FileName: </source>
++        <translation type="vanished">文件名: </translation>
++    </message>
++    <message>
++        <source>FileType: </source>
++        <translation type="vanished">文件类型: </translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Warning</source>
++        <translation type="vanished">警告</translation>
++    </message>
++    <message>
++        <source>Add blocked folder failed, choosen path is empty!</source>
++        <translation type="vanished">添加文件夹失败,路径为空!</translation>
++    </message>
++    <message>
++        <source>Add blocked folder failed, it is not in home path!</source>
++        <translation type="vanished">添加文件夹失败,请选择用户目录下的文件夹!</translation>
++    </message>
++    <message>
++        <source>Add blocked folder failed, its parent dir is exist!</source>
++        <translation type="vanished">添加文件夹失败,父文件夹已被屏蔽!</translation>
++    </message>
++    <message>
++        <source>Add blocked folder failed, it has been already blocked!</source>
++        <translation type="vanished">添加文件夹失败,该文件夹已被屏蔽!</translation>
++    </message>
++</context>
++<context>
++    <name>SearchWidget</name>
++    <message>
++        <source>Touchpad</source>
++        <translation type="obsolete">触控板</translation>
++    </message>
++    <message>
++        <location filename="../../searchwidget.cpp" line="80"/>
++        <location filename="../../searchwidget.cpp" line="81"/>
++        <location filename="../../searchwidget.cpp" line="88"/>
++        <location filename="../../searchwidget.cpp" line="90"/>
++        <location filename="../../searchwidget.cpp" line="95"/>
++        <source>No search results</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>SecurityCenter</name>
++    <message>
++        <source>SecurityCenter</source>
++        <translation type="vanished">安全中心</translation>
++    </message>
++    <message>
++        <source>Computer Security Overview</source>
++        <translation type="vanished">安全功能概览</translation>
++    </message>
++    <message>
++        <source>Understand current computer security situation and take measures</source>
++        <translation type="vanished">保障系统安全性,并采取有效措施</translation>
++    </message>
++    <message>
++        <source>Summarize</source>
++        <translation type="vanished">概述</translation>
++    </message>
++    <message>
++        <source>Recognize the current security of the system, and can take the necessary settings</source>
++        <translation type="vanished">了解系统当前安全性,并可采取必要的设置操作</translation>
++    </message>
++    <message>
++        <source>Run Security Center</source>
++        <translation type="vanished">打开安全中心</translation>
++    </message>
++    <message>
++        <source>Security Center</source>
++        <translation type="vanished">安全中心</translation>
++    </message>
++    <message>
++        <source>Virus Protection</source>
++        <translation type="vanished">病毒防护</translation>
++    </message>
++    <message>
++        <source>Protect system from threats</source>
++        <translation type="vanished">实时防护,帮助系统免受威胁</translation>
++    </message>
++    <message>
++        <source>Network Protection</source>
++        <translation type="vanished">网络保护</translation>
++    </message>
++    <message>
++        <source>Setup app that can access web</source>
++        <translation type="vanished">设置可访问网络的应用</translation>
++    </message>
++    <message>
++        <source>App Execution Control</source>
++        <translation type="vanished">应用执行控制</translation>
++    </message>
++    <message>
++        <source>App install and exe protection</source>
++        <translation type="vanished">应用程序安装和执行保护</translation>
++    </message>
++    <message>
++        <source>Account Security</source>
++        <translation type="vanished">账户安全</translation>
++    </message>
++    <message>
++        <source>Protect account and login security</source>
++        <translation type="vanished">提供账户相关的安全保障</translation>
++    </message>
++    <message>
++        <source>Safety check-up</source>
++        <translation type="vanished">安全体检</translation>
++    </message>
++    <message>
++        <source>Detect abnormal configuration</source>
++        <translation type="vanished">检查修复系统漏洞和异常配置</translation>
++    </message>
++    <message>
++        <source>Virus defense</source>
++        <translation type="vanished">病毒防护</translation>
++    </message>
++    <message>
++        <source>Real time protection from virus threat</source>
++        <translation type="vanished">保护系统免受恶意程序攻击</translation>
++    </message>
++    <message>
++        <source>App protection</source>
++        <translation type="vanished">应用控制与保护</translation>
++    </message>
++    <message>
++        <source>App install</source>
++        <translation type="vanished">提供应用程序安装,运行防护</translation>
++    </message>
++    <message>
++        <source>Net protection</source>
++        <translation type="vanished">网络保护</translation>
++    </message>
++    <message>
++        <source>Secure Config</source>
++        <translation type="vanished">系统安全配置</translation>
++    </message>
++    <message>
++        <source>Simple Config</source>
++        <translation type="vanished">启用系统安全功能的相关配置</translation>
++    </message>
++    <message>
++        <source>Network protection</source>
++        <translation type="vanished">网络保护</translation>
++    </message>
++    <message>
++        <source>Manage and control network</source>
++        <translation type="vanished">提供应用联网行为的管控</translation>
++    </message>
++    <message>
++        <source>Secure mode configuration</source>
++        <translatorcomment>启用系统安全功能配置</translatorcomment>
++        <translation type="vanished">安全模式配置</translation>
++    </message>
++    <message>
++        <source>Simple configuraion</source>
++        <translation type="vanished">启用系统安全功能简易配置</translation>
++    </message>
++</context>
++<context>
++    <name>ShareMain</name>
++    <message>
++        <source>Warning</source>
++        <translation type="vanished">警告</translation>
++    </message>
++    <message>
++        <source>please select an output</source>
++        <translation type="vanished">请选择一个输出设备</translation>
++    </message>
++    <message>
++        <source>Input Password</source>
++        <translation type="vanished">输入密码</translation>
++    </message>
++    <message>
++        <source>Password</source>
++        <translation type="vanished">密码</translation>
++    </message>
++    <message>
++        <source>Share</source>
++        <translation type="vanished">共享</translation>
++    </message>
++    <message>
++        <source>Output</source>
++        <translation type="vanished">输出</translation>
++    </message>
++    <message>
++        <source>Input</source>
++        <translation type="vanished">输入</translation>
++    </message>
++    <message>
++        <source>Point</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>Keyboard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++    <message>
++        <source>Clipboard</source>
++        <translation type="vanished">剪切板</translation>
++    </message>
++    <message>
++        <source>Close</source>
++        <translation type="vanished">关闭</translation>
++    </message>
++    <message>
++        <source>ViewOnly</source>
++        <translation type="vanished">仅查看</translation>
++    </message>
++    <message>
++        <source>Client Setting</source>
++        <translation type="vanished">客户端配置</translation>
++    </message>
++    <message>
++        <source>Client Number</source>
++        <translation type="vanished">客户端数量</translation>
++    </message>
++    <message>
++        <source>Client IP:</source>
++        <translation type="vanished">客户端IP地址:</translation>
++    </message>
++    <message>
++        <source>Remote Desktop</source>
++        <translation type="vanished">远程桌面</translation>
++    </message>
++    <message>
++        <source>Allow others to view your desktop</source>
++        <translation type="vanished">允许其他人远程连接您的桌面</translation>
++    </message>
++    <message>
++        <source>Allow connection to control screen</source>
++        <translation type="vanished">允许其他人远程连接您的桌面并控制您的屏幕</translation>
++        <extra-contents_path>/Vino/Allow connection to control screen</extra-contents_path>
++    </message>
++    <message>
++        <source>Security</source>
++        <translation type="vanished">安全</translation>
++    </message>
++    <message>
++        <source>You must confirm every visit for this machine</source>
++        <translation type="vanished">您必须为本机机器确认每次访问</translation>
++        <extra-contents_path>/Vino/You must confirm every visit for this machine</extra-contents_path>
++    </message>
++    <message>
++        <source>Require user to enter this password: </source>
++        <translation type="vanished">要求用户输入此密码: </translation>
++    </message>
++    <message>
++        <source>Password can not be blank</source>
++        <translation type="vanished">密码不能为空</translation>
++    </message>
++    <message>
++        <source>Password length must be less than or equal to 8</source>
++        <translation type="vanished">密码长度需小于等于8</translation>
++    </message>
++    <message>
++        <source>Password length is greater than 8</source>
++        <translation type="vanished">密码长度大于8</translation>
++    </message>
++</context>
++<context>
++    <name>Shortcut</name>
++    <message>
++        <source>System Shortcut</source>
++        <translation type="vanished">系统快捷键</translation>
++        <extra-contents_path>/Shortcut/System Shortcut</extra-contents_path>
++    </message>
++    <message>
++        <source>Show all shortcut</source>
++        <translation type="vanished">显示全部快捷键</translation>
++    </message>
++    <message>
++        <source>Custom Shortcut</source>
++        <translation type="vanished">自定义快捷键</translation>
++    </message>
++    <message>
++        <source>Customize Shortcut</source>
++        <translation type="vanished">自定义快捷键</translation>
++        <extra-contents_path>/Shortcut/Customize Shortcut</extra-contents_path>
++    </message>
++    <message>
++        <source>Add custom shortcut</source>
++        <translation type="vanished">添加自定义快捷键</translation>
++    </message>
++    <message>
++        <source>Add</source>
++        <translation type="vanished">添加</translation>
++        <extra-contents_path>/Shortcut/Add</extra-contents_path>
++    </message>
++    <message>
++        <source>Edit</source>
++        <translation type="vanished">编辑</translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source> or </source>
++        <translation type="vanished"> 或 </translation>
++    </message>
++    <message>
++        <source>disable</source>
++        <translation type="vanished">无效</translation>
++    </message>
++    <message>
++        <source>Reset default</source>
++        <translation type="vanished">恢复默认快捷键</translation>
++    </message>
++    <message>
++        <source>shortcut</source>
++        <translation type="vanished">快捷键</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcut.cpp" line="38"/>
++        <source>Shortcut</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Desktop</source>
++        <translation type="vanished">桌面</translation>
++    </message>
++    <message>
++        <source>System</source>
++        <translation type="vanished">系统</translation>
++    </message>
++</context>
++<context>
++    <name>ShortcutInterface</name>
++    <message>
++        <source> or </source>
++        <translation type="vanished"> 或 </translation>
++    </message>
++</context>
++<context>
++    <name>ShortcutUi</name>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="33"/>
++        <source>System Shortcut</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Shortcut/System Shortcut</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="46"/>
++        <source>Customize Shortcut</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Shortcut/Customize Shortcut</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="77"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="81"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="98"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="102"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="171"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="260"/>
++        <source>Null</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="221"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="353"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="222"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="354"/>
++        <source>Use</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="223"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="355"/>
++        <source>Shortcut key conflict, use it?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="224"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="356"/>
++        <source>%1 occuied, using this combination will invalidate %2</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="247"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="386"/>
++        <source>Shortcut &quot;%1&quot; occuied, please change the key combination</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="438"/>
++        <source>Edit</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="439"/>
++        <source>Delete</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="598"/>
++        <source> or </source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>ShowAllShortcut</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="obsolete">更改时间</translation>
++    </message>
++    <message>
++        <source>System Shortcuts</source>
++        <translation type="vanished">快捷键</translation>
++    </message>
++    <message>
++        <source>Show all shortcut</source>
++        <translation type="vanished">显示全部快捷键</translation>
++    </message>
++    <message>
++        <source>Desktop</source>
++        <translation type="vanished">桌面</translation>
++    </message>
++</context>
++<context>
++    <name>SpliceDialog</name>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.ui" line="26"/>
++        <source>Dialog</source>
++        <translation></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="11"/>
++        <source>Splice Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.ui" line="260"/>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="12"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.ui" line="279"/>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="13"/>
++        <source>Ok</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.ui" line="118"/>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="16"/>
++        <source>Splicing Method</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="91"/>
++        <source>row</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="91"/>
++        <source>rows</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="92"/>
++        <source>column</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="92"/>
++        <source>columns</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="93"/>
++        <source>%1 %2, %3 %4</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="130"/>
++        <source>Row %1, Column %2</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="143"/>
++        <source>Select screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>StatusDialog</name>
++    <message>
++        <location filename="../../../plugins/system/about/statusdialog.cpp" line="10"/>
++        <source>About</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/statusdialog.cpp" line="59"/>
++        <source>Activation Code</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>SuccessDiaolog</name>
++    <message>
++        <source>Reback sign in</source>
++        <translation type="vanished">重新登录</translation>
++    </message>
++    <message>
++        <source>Sign up success!</source>
++        <translation type="vanished">注册账号成功!</translation>
++    </message>
++    <message>
++        <source>Reset success!</source>
++        <translation type="vanished">重置密码成功!</translation>
++    </message>
++    <message>
++        <source>Sign in success!</source>
++        <translation type="vanished">登录帐号成功!</translation>
++    </message>
++    <message>
++        <source>Binding phone success!</source>
++        <translation type="vanished">绑定手机!</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>SyncDialog</name>
++    <message>
++        <source>Sync</source>
++        <translation type="vanished">同步</translation>
++    </message>
++    <message>
++        <source>Do not</source>
++        <translation type="vanished">放弃</translation>
++    </message>
++    <message>
++        <source>Last sync at %1</source>
++        <translation type="vanished">上次同步于%1</translation>
++    </message>
++    <message>
++        <source>Sync now?</source>
++        <translation type="vanished">选择以下同步覆盖,继续?</translation>
++    </message>
++    <message>
++        <source>Wallpaper</source>
++        <translation type="vanished">桌面壁纸</translation>
++    </message>
++    <message>
++        <source>ScreenSaver</source>
++        <translation type="vanished">屏保</translation>
++    </message>
++    <message>
++        <source>Font</source>
++        <translation type="vanished">字体</translation>
++    </message>
++    <message>
++        <source>Avatar</source>
++        <translation type="vanished">头像</translation>
++    </message>
++    <message>
++        <source>Menu</source>
++        <translation type="vanished">开始菜单</translation>
++    </message>
++    <message>
++        <source>Tab</source>
++        <translation type="vanished">任务栏</translation>
++    </message>
++    <message>
++        <source>Quick Start</source>
++        <translation type="vanished">快速启动项</translation>
++    </message>
++    <message>
++        <source>Themes</source>
++        <translation type="vanished">主题</translation>
++    </message>
++    <message>
++        <source>Mouse</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>TouchPad</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>KeyBoard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++    <message>
++        <source>ShortCut</source>
++        <translation type="vanished">快捷键</translation>
++    </message>
++    <message>
++        <source>Area</source>
++        <translation type="vanished">区域语言</translation>
++    </message>
++    <message>
++        <source>Date/Time</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>Default Open</source>
++        <translation type="vanished">默认打开方式</translation>
++    </message>
++    <message>
++        <source>Notice</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <source>Option</source>
++        <translation type="vanished">登录选项</translation>
++    </message>
++    <message>
++        <source>Peony</source>
++        <translation type="vanished">文件管理器</translation>
++    </message>
++    <message>
++        <source>Boot</source>
++        <translation type="vanished">开机启动项</translation>
++    </message>
++    <message>
++        <source>Power</source>
++        <translation type="vanished">电源</translation>
++    </message>
++    <message>
++        <source>Editor</source>
++        <translation type="vanished">文本编辑器</translation>
++    </message>
++    <message>
++        <source>Terminal</source>
++        <translation type="vanished">终端</translation>
++    </message>
++    <message>
++        <source>Weather</source>
++        <translation type="vanished">天气</translation>
++    </message>
++    <message>
++        <source>Media</source>
++        <translation type="vanished">影音</translation>
++    </message>
++</context>
++<context>
++    <name>TabWid</name>
++    <message>
++        <source>Check Update</source>
++        <translation type="vanished">检查更新</translation>
++    </message>
++    <message>
++        <source>initializing</source>
++        <translation type="vanished">初始化中</translation>
++    </message>
++    <message>
++        <source>Service connection abnormal,please retest!</source>
++        <translation type="vanished">服务连接异常,请重新检测!</translation>
++    </message>
++    <message>
++        <source>Prompt information</source>
++        <translation type="vanished">提示信息</translation>
++    </message>
++    <message>
++        <source>Update now</source>
++        <translation type="vanished">立即更新</translation>
++    </message>
++    <message>
++        <source>Cancel update</source>
++        <translation type="vanished">取消更新</translation>
++    </message>
++    <message>
++        <source>No,I Don&apos;t Backup</source>
++        <translation type="vanished">否,我不备份</translation>
++    </message>
++    <message>
++        <source>Being updated...</source>
++        <translation type="vanished">正在更新...</translation>
++    </message>
++    <message>
++        <source>UpdateAll</source>
++        <translation type="vanished">全部更新</translation>
++    </message>
++    <message>
++        <source>The backup restore partition could not be found. The system will not be backed up in this update!</source>
++        <translation type="vanished">未能找到备份还原分区,本次更新不会备份系统!</translation>
++    </message>
++    <message>
++        <source>Kylin backup restore tool is doing other operations, please update later.</source>
++        <translation type="vanished">麒麟备份还原工具正在进行其他操作,请稍后更新</translation>
++    </message>
++    <message>
++        <source>The source manager configuration file is abnormal, the system temporarily unable to update!</source>
++        <translation type="vanished">源管理器配置文件异常,暂时无法更新!</translation>
++    </message>
++    <message>
++        <source>Backup already, no need to backup again.</source>
++        <translation type="vanished">已备份,无需再次备份</translation>
++    </message>
++    <message>
++        <source>Kylin backup restore tool does not exist, this update will not backup the system!</source>
++        <translation type="vanished">麒麟备份还原工具不存在,本次更新不会备份系统</translation>
++    </message>
++    <message>
++        <source>Backup complete.</source>
++        <translation type="vanished">备份完成</translation>
++    </message>
++    <message>
++        <source>In backup:</source>
++        <translation type="vanished">备份中:</translation>
++    </message>
++    <message>
++        <source>Start backup,getting progress</source>
++        <translation type="vanished">开始备份,正在获取进度</translation>
++    </message>
++    <message>
++        <source>Ready to install</source>
++        <translation type="vanished">准备安装</translation>
++    </message>
++    <message>
++        <source>The battery is below 50% and the update cannot be downloaded</source>
++        <translation type="vanished">电池电量低于 50%,无法下载更新</translation>
++    </message>
++    <message>
++        <source>OK</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Please back up the system before all updates to avoid unnecessary losses</source>
++        <translation type="vanished">请在所有更新前备份系统,以免造成不必要的损失</translation>
++    </message>
++    <message>
++        <source>Only Update</source>
++        <translation type="vanished">仅更新</translation>
++    </message>
++    <message>
++        <source>Back And Update</source>
++        <translation type="vanished">备份并更新</translation>
++    </message>
++    <message>
++        <source>Failed to write configuration file, this update will not back up the system!</source>
++        <translation type="vanished">写入配置文件失败,本次更新不会备份系统!</translation>
++    </message>
++    <message>
++        <source>Insufficient backup space, this update will not backup your system!</source>
++        <translation type="vanished">备份空间不足,本次更新不会备份系统!</translation>
++    </message>
++    <message>
++        <source>Kylin backup restore tool could not find the UUID, this update will not backup the system!</source>
++        <translation type="vanished">麒麟备份还原工具无法找到UUID,本次更新不会备份系统</translation>
++    </message>
++    <message>
++        <source>Backup interrupted, stop updating!</source>
++        <translation type="vanished">备份过程被中断,停止更新!</translation>
++    </message>
++    <message>
++        <source>Failed to connect to software warehouse!</source>
++        <translation type="vanished">连接软件仓库失败</translation>
++    </message>
++    <message>
++        <source>Downloading and installing updates...</source>
++        <translation type="vanished">正在下载并安装更新...</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>System is backing up...</source>
++        <translation type="vanished">系统正在备份中...</translation>
++    </message>
++    <message>
++        <source>Backup finished!</source>
++        <translation type="vanished">备份完成!</translation>
++    </message>
++    <message>
++        <source>Kylin backup restore tool exception:</source>
++        <translation type="vanished">麒麟备份还原工具异常:</translation>
++    </message>
++    <message>
++        <source>There will be no backup in this update!</source>
++        <translation type="vanished">本次更新不会备份系统!</translation>
++    </message>
++    <message>
++        <source>Getting update list</source>
++        <translation type="vanished">正在获取更新列表</translation>
++    </message>
++    <message>
++        <source>Software source update failed: </source>
++        <translation type="vanished">软件源更新失败:</translation>
++    </message>
++    <message>
++        <source>Update software source :</source>
++        <translation type="vanished">更新软件源进度:</translation>
++    </message>
++    <message>
++        <source>Reconnect times:</source>
++        <translation type="vanished">重连次数:</translation>
++    </message>
++    <message>
++        <source>Update</source>
++        <translation type="vanished">更新</translation>
++    </message>
++    <message>
++        <source>View history</source>
++        <translation type="vanished">查看更新历史</translation>
++    </message>
++    <message>
++        <source>Update Settings</source>
++        <translation type="vanished">更新设置</translation>
++    </message>
++    <message>
++        <source>Allowed to renewable notice</source>
++        <translation type="vanished">允许通知可更新的应用</translation>
++    </message>
++    <message>
++        <source>Backup current system before updates all</source>
++        <translation type="vanished">全部更新前备份系统</translation>
++    </message>
++    <message>
++        <source>Your system is the latest!</source>
++        <translation type="vanished">您的系统已是最新!</translation>
++    </message>
++    <message>
++        <source>Updatable app detected on your system!</source>
++        <translation type="vanished">检测到你的系统有可更新的应用!</translation>
++    </message>
++    <message>
++        <source>Automatically download and install updates</source>
++        <translation type="vanished">自动下载和安装更新</translation>
++    </message>
++    <message>
++        <source>After it is turned on, the system will automatically download and install updates when there is an available network and available backup and restore partitions.</source>
++        <translation type="vanished">开启后,当有可用网络和可用备份和恢复分区时,系统会自动下载和安装更新</translation>
++    </message>
++    <message>
++        <source>Last refresh:</source>
++        <translation type="vanished">上次更新:</translation>
++    </message>
++    <message>
++        <source>Last Checked:</source>
++        <translation type="vanished">上次检测:</translation>
++    </message>
++    <message>
++        <source>trying to reconnect </source>
++        <translation type="vanished">重新尝试连接</translation>
++    </message>
++    <message>
++        <source> times</source>
++        <translation type="vanished">次数</translation>
++    </message>
++    <message>
++        <source>Updating the software source</source>
++        <translation type="vanished">正在更新软件源</translation>
++    </message>
++    <message>
++        <source>This update will not backup the current system, do you want to continue the update?</source>
++        <translation type="vanished">本次更新不会备份当前系统,是否继续更新?</translation>
++    </message>
++    <message>
++        <source>Yes, keep updating</source>
++        <translation type="vanished">是,继续更新</translation>
++    </message>
++    <message>
++        <source>No, backup now</source>
++        <translation type="vanished">否,立即备份</translation>
++    </message>
++    <message>
++        <source>Not updated</source>
++        <translation type="vanished">暂不更新</translation>
++    </message>
++    <message>
++        <source>Part of the update failed!</source>
++        <translation type="vanished">部分更新失败!</translation>
++    </message>
++    <message>
++        <source>An important update is in progress, please wait.</source>
++        <translation type="vanished">正在进行一项重要更新,请等待。</translation>
++    </message>
++    <message>
++        <source>The backup restore partition is abnormal. You may not have a backup restore partition.For more details,see /var/log/backup.log</source>
++        <translation type="vanished">备份还原分区异常,您可能没有备份还原分区。更多详细信息,可以参看/var/log/backup.log</translation>
++    </message>
++    <message>
++        <source>Other err! please refers /var/log/backup.txt!</source>
++        <translation type="vanished">其他错误!请查看/var/log/backup.txt</translation>
++    </message>
++    <message>
++        <source>Calculating Capacity...</source>
++        <translation type="vanished">计算系统空间大小</translation>
++    </message>
++    <message>
++        <source>Update software source progress:</source>
++        <translation type="vanished">更新软件源进度:</translation>
++    </message>
++    <message>
++        <source>Reconnect times</source>
++        <translation type="vanished">重连次数</translation>
++    </message>
++    <message>
++        <source>Allows notifications to be updatable for applications.</source>
++        <translation type="vanished">允许通知可更新的应用</translation>
++    </message>
++    <message>
++        <source>Backup the current system as a rollback version before all updates</source>
++        <translation type="vanished">全部更新前备份当前系统为可回退的版本</translation>
++    </message>
++</context>
++<context>
++    <name>Theme</name>
++    <message>
++        <source>Theme Mode</source>
++        <translation type="vanished">主题模式</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="111"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="534"/>
++        <source>Theme</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
++        <source>Default</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
++        <source>Light</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
++        <source>Dark</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="190"/>
++        <source>Auto</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="423"/>
++        <source>Corlor</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Corlor</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="608"/>
++        <source>Other</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Other</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="613"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
++        <source>Set</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="611"/>
++        <source>Wallpaper</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Wallpaper</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="224"/>
++        <source>Corner</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Corner</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
++        <source>Right angle</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
++        <source>Small</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="232"/>
++        <source>Big</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="615"/>
++        <source>Beep</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Beep</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="968"/>
++        <source>Blue-Crystal</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="970"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1054"/>
++        <source>Light-Seeking</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="972"/>
++        <source>DMZ-Black</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="974"/>
++        <source>DMZ-White</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="976"/>
++        <source>Dark-Sense</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1050"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1054"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1060"/>
++        <source>basic</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1052"/>
++        <source>Classic</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Origins-Tracing</source>
++        <translation type="vanished">溯源</translation>
++    </message>
++    <message>
++        <source>fashion</source>
++        <translation type="vanished">时尚</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1058"/>
++        <source>hp</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1060"/>
++        <source>ukui</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1056"/>
++        <source>HeYin</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1052"/>
++        <source>classic</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1062"/>
++        <source>daybreakBlue</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1064"/>
++        <source>jamPurple</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1066"/>
++        <source>magenta</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1068"/>
++        <source>sunRed</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1070"/>
++        <source>sunsetOrange</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1072"/>
++        <source>dustGold</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1074"/>
++        <source>polarGreen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>default</source>
++        <translation type="vanished">默认</translation>
++    </message>
++    <message>
++        <source>Middle</source>
++        <translation type="vanished">中</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="248"/>
++        <source>Window Theme</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Window Theme</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="250"/>
++        <source>Icon theme</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Icon theme</extra-contents_path>
++    </message>
++    <message>
++        <source>Control theme</source>
++        <translation type="vanished">控件主题</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="253"/>
++        <source>Cursor theme</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Cursor theme</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="215"/>
++        <source>Effect setting</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Effect setting</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="222"/>
++        <source>Transparency</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Transparency</extra-contents_path>
++    </message>
++    <message>
++        <source>Transparent effects</source>
++        <translation type="vanished">透明特效</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="220"/>
++        <source>Performance mode</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Performance mode</extra-contents_path>
++    </message>
++    <message>
++        <source>Transparent</source>
++        <translation type="vanished">透明特效</translation>
++    </message>
++    <message>
++        <source>Low</source>
++        <translation type="vanished">低</translation>
++    </message>
++    <message>
++        <source>High</source>
++        <translation type="vanished">高</translation>
++    </message>
++    <message>
++        <source>Reset to default</source>
++        <translation type="vanished">恢复默认</translation>
++    </message>
++    <message>
++        <source>theme</source>
++        <translation type="vanished">主题</translation>
++    </message>
++</context>
++<context>
++    <name>TimeBtn</name>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="106"/>
++        <source>Tomorrow</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="108"/>
++        <source>Yesterday</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="110"/>
++        <source>Today</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="128"/>
++        <source>%1 hours earlier than local</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="130"/>
++        <source>%1 hours later than local</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>TimeZoneChooser</name>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="35"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="37"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Change time zone</source>
++        <translation type="vanished">更改时区</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="33"/>
++        <source>Search Timezone</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Input what you are looking for</source>
++        <translation type="vanished">搜索时区</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="64"/>
++        <source>To select a time zone, please click where near you on the map and select a city from the nearest city</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>change timezone</source>
++        <translation type="vanished">修改系统时区</translation>
++    </message>
++    <message>
++        <source>change zonne</source>
++        <translation type="vanished">更改时区</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="40"/>
++        <source>Change Timezone</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>TouchScreen</name>
++    <message>
++        <source>TouchScreen</source>
++        <translation type="vanished">触摸屏</translation>
++    </message>
++    <message>
++        <source>monitor</source>
++        <translation type="vanished">显示器</translation>
++    </message>
++    <message>
++        <source>touch id</source>
++        <translation type="vanished">触摸屏标识</translation>
++    </message>
++    <message>
++        <source>map</source>
++        <translation type="vanished">触摸映射</translation>
++    </message>
++    <message>
++        <source>calibration</source>
++        <translation type="vanished">触摸校准</translation>
++    </message>
++    <message>
++        <source>No touch screen found</source>
++        <translation type="vanished">未发现触摸屏设备</translation>
++    </message>
++    <message>
++        <source>input device</source>
++        <translation type="vanished">触摸设备</translation>
++    </message>
++</context>
++<context>
++    <name>Touchpad</name>
++    <message>
++        <source>Touchpad Settings</source>
++        <translation type="vanished">触控板设置</translation>
++    </message>
++    <message>
++        <source>Enabled touchpad</source>
++        <translation type="vanished">启用触控板</translation>
++    </message>
++    <message>
++        <source>Disable touchpad while typing</source>
++        <translation type="vanished">打字时禁用触控板</translation>
++    </message>
++    <message>
++        <source>Enable mouse clicks with touchpad</source>
++        <translation type="vanished">启用触控板的鼠标点击</translation>
++    </message>
++    <message>
++        <source> Mouse to disable  touchpad</source>
++        <translation type="vanished">连接鼠标或无线触控板时禁用内置触摸版</translation>
++    </message>
++    <message>
++        <source>Scrolling</source>
++        <translation type="vanished">滚动</translation>
++    </message>
++    <message>
++        <source>No touchpad found</source>
++        <translation type="vanished">未发现触控板设备</translation>
++    </message>
++    <message>
++        <source>touchpad</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>Touchpad</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>Disable rolling</source>
++        <translation type="vanished">禁用滚动</translation>
++    </message>
++    <message>
++        <source>Edge scrolling</source>
++        <translation type="vanished">边界滚动</translation>
++    </message>
++    <message>
++        <source>Two-finger scrolling</source>
++        <translation type="vanished">双指滚动</translation>
++    </message>
++    <message>
++        <source>Vertical edge scrolling</source>
++        <translation type="vanished">垂直边界滚动</translation>
++    </message>
++    <message>
++        <source>Horizontal edge scrolling</source>
++        <translation type="vanished">水平边界滚动</translation>
++    </message>
++    <message>
++        <source>Vertical two-finger scrolling</source>
++        <translation type="vanished">垂直双指滚动</translation>
++    </message>
++    <message>
++        <source>Horizontal two-finger scrolling</source>
++        <translation type="vanished">水平双指滚动</translation>
++    </message>
++</context>
++<context>
++    <name>TouchpadUI</name>
++    <message>
++        <source>Touchpad Setting</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>No touchpad found</source>
++        <translation type="vanished">未发现触控板设备</translation>
++    </message>
++    <message>
++        <source>Slow</source>
++        <translation type="vanished">慢</translation>
++    </message>
++    <message>
++        <source>Fast</source>
++        <translation type="vanished">快</translation>
++    </message>
++    <message>
++        <source>Disable scrolling</source>
++        <translation type="vanished">禁止滚动</translation>
++    </message>
++    <message>
++        <source>Edge scrolling</source>
++        <translation type="vanished">边界滚动</translation>
++    </message>
++    <message>
++        <source>Two-finger scrolling in the middle area</source>
++        <translation type="vanished">中间区域滚动</translation>
++    </message>
++</context>
++<context>
++    <name>TrialDialog</name>
++    <message>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="12"/>
++        <source>Set</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="37"/>
++        <source>Yinhe Kylin OS(Trail Version) Disclaimer</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="46"/>
++        <source>Dear customer:
++       Thank you for trying Yinhe Kylin OS(trail version)! This version is free for users who only try out, no commercial purpose is permitted. The trail period lasts one year and it starts from the ex-warehouse time of the OS. No after-sales service is provided during the trail stage. If any security problems occurred when user put important files or do any commercial usage in system, all consequences are taken by users. Kylin software Co., Ltd. take no legal risk in trail version.
++       During trail stage,if you want any technology surpport or activate the system, please buy“Yinhe Kylin Operating System”official version or authorization by contacting 400-089-1870.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Dear customer:
++    Thank you for trying Yinhe Kylin OS(trail version)! This version is free for users who only try out, no commercial purpose is permitted. The trail period lasts one year and it starts from the ex-warehouse time of the OS. No after-sales service is provided during the trail stage. If any security problems occurred when user put important files or do any commercial usage in system, all consequences are taken by users. Kylin software Co., Ltd. take no legal risk in trail version.
++    During trail stage,if you want any technology surpport or activate the system, please buy“Yinhe Kylin Operating System”official version or authorization by contacting 400-089-1870.</source>
++        <translation type="vanished">尊敬的客户:
++    您好!随机安装的“银河麒麟操作系统(试用版)”是针对该版本对应的行业客户的免费试用版本,用于整机的试用、测试和评估,不能用于其他任何商业用途。此试用版本以软件出库时间计时,试用时间为一年。试用期间不提供相关正版软件的售后服务,如果客户在试用版本上自行存放重要文件及私自进行商业用途,由此产生的任何安全问题及结果一概由用户自己承担,麒麟软件有限公司不承担任何法律风险。
++    在试用过程中,如希望激活或者得到专业的技术服务支持,请您购买“银河麒麟操作系统”正式版本或授权,联系方式如下:400-089-1870。</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="60"/>
++        <source>Kylin software Co., Ltd.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>www.Kylinos.cn</source>
++        <translation type="vanished">www.kylinos.cn</translation>
++    </message>
++</context>
++<context>
++    <name>UkccAbout</name>
++    <message>
++        <location filename="../../ukccabout.cpp" line="34"/>
++        <location filename="../../ukccabout.cpp" line="61"/>
++        <source>Settings</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>UKCC</source>
++        <translation type="vanished">控制面板</translation>
++    </message>
++    <message>
++        <location filename="../../ukccabout.cpp" line="66"/>
++        <source>Version: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../ukccabout.cpp" line="76"/>
++        <source>Service and Support:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Developer</source>
++        <translation type="vanished">开发者:</translation>
++    </message>
++    <message>
++        <source>Vesion</source>
++        <translation type="vanished">版本</translation>
++    </message>
++    <message>
++        <source>The control panel provides a friendly graphical user interface to manage common configuration items of the operating system. System configuration provides system, equipment, personalization, network, account, time and date, account, time and date, update, notification and operation module operations. </source>
++        <translation type="vanished">“设置”提供了一个友好的用户图形界面,以及易于操作的功能模块划分,比如:系统、设备、主题、时间日期、语言、更新和安全等模块。您可以更改系统设置来自定系统。</translation>
++    </message>
++</context>
++<context>
++    <name>UkmediaApplicationWidget</name>
++    <message>
++        <source>Application Volume</source>
++        <translation type="obsolete">应用音量</translation>
++    </message>
++    <message>
++        <source>No application is currently playing or recording audio</source>
++        <translation type="obsolete">当前没有应用程序正在播放或录制音频</translation>
++    </message>
++</context>
++<context>
++    <name>UkmediaInputWidget</name>
++    <message>
++        <source>Input</source>
++        <translation type="vanished">输入</translation>
++    </message>
++    <message>
++        <source>Input Device</source>
++        <translation type="vanished">选择输入设备</translation>
++    </message>
++    <message>
++        <source>Input Device:</source>
++        <translation type="vanished">选择输入设备</translation>
++    </message>
++    <message>
++        <source>Volume</source>
++        <translation type="vanished">音量</translation>
++    </message>
++    <message>
++        <source>Input Level</source>
++        <translation type="vanished">输入反馈</translation>
++    </message>
++    <message>
++        <source>Low</source>
++        <translation type="vanished">低</translation>
++    </message>
++    <message>
++        <source>High</source>
++        <translation type="vanished">高</translation>
++    </message>
++    <message>
++        <source>Select input device</source>
++        <translation type="vanished">选择输入设备</translation>
++    </message>
++    <message>
++        <source>Input device</source>
++        <translation type="vanished">选择输入设备</translation>
++    </message>
++    <message>
++        <source>volume</source>
++        <translation type="vanished">音量大小</translation>
++    </message>
++    <message>
++        <source>Input level</source>
++        <translation type="vanished">输入等级</translation>
++    </message>
++    <message>
++        <source>low</source>
++        <translation type="vanished">低</translation>
++    </message>
++    <message>
++        <source>high</source>
++        <translation type="vanished">高</translation>
++    </message>
++    <message>
++        <source>Connector</source>
++        <translation type="vanished">连接器</translation>
++    </message>
++</context>
++<context>
++    <name>UkmediaMainWidget</name>
++    <message>
++        <source>sound error</source>
++        <translation type="vanished">声音错误</translation>
++    </message>
++    <message>
++        <source>load sound failed</source>
++        <translation type="vanished">加载声音失败</translation>
++    </message>
++    <message>
++        <source>None</source>
++        <translation type="obsolete">无</translation>
++    </message>
++</context>
++<context>
++    <name>UkmediaOutputWidget</name>
++    <message>
++        <source>Output</source>
++        <translation type="vanished">输出</translation>
++    </message>
++    <message>
++        <source>Output Device</source>
++        <translation type="vanished">选择输出设备</translation>
++    </message>
++    <message>
++        <source>Output Device:</source>
++        <translation type="vanished">选择输出设备</translation>
++    </message>
++    <message>
++        <source>Master Volume</source>
++        <translation type="vanished">音量</translation>
++    </message>
++    <message>
++        <source>Balance</source>
++        <translation type="vanished">声道平衡</translation>
++    </message>
++    <message>
++        <source>Right</source>
++        <translation type="vanished">右</translation>
++    </message>
++    <message>
++        <source>Profile</source>
++        <translation type="vanished">配置</translation>
++    </message>
++    <message>
++        <source>Card</source>
++        <translation type="vanished">声卡</translation>
++    </message>
++    <message>
++        <source>Select output device</source>
++        <translation type="vanished">选择输出设备</translation>
++    </message>
++    <message>
++        <source>Output device</source>
++        <translation type="vanished">选择输出设备</translation>
++    </message>
++    <message>
++        <source>Master volume</source>
++        <translation type="vanished">主音量大小</translation>
++    </message>
++    <message>
++        <source>Channel balance</source>
++        <translation type="vanished">声道平衡</translation>
++    </message>
++    <message>
++        <source>Left</source>
++        <translation type="vanished">左</translation>
++    </message>
++    <message>
++        <source>right</source>
++        <translation type="vanished">右</translation>
++    </message>
++    <message>
++        <source>Connector</source>
++        <translation type="vanished">连接器</translation>
++    </message>
++</context>
++<context>
++    <name>UkmediaSoundEffectsWidget</name>
++    <message>
++        <source>System sound</source>
++        <translation type="vanished">系统音效</translation>
++    </message>
++    <message>
++        <source>Sound theme</source>
++        <translation type="vanished">音效主题</translation>
++    </message>
++    <message>
++        <source>Prompt voice</source>
++        <translation type="vanished">通知音</translation>
++    </message>
++    <message>
++        <source>Boot music</source>
++        <translation type="vanished">开关机音乐</translation>
++    </message>
++    <message>
++        <source>System sound theme</source>
++        <translation type="vanished">系统音效</translation>
++    </message>
++    <message>
++        <source>prompt voice</source>
++        <translation type="vanished">通知音</translation>
++    </message>
++    <message>
++        <source>Shutdown</source>
++        <translation type="obsolete">关机</translation>
++    </message>
++    <message>
++        <source>Lagout</source>
++        <translation type="vanished">注销</translation>
++    </message>
++    <message>
++        <source>System Sound</source>
++        <translation type="vanished">系统音效</translation>
++    </message>
++    <message>
++        <source>Sound Theme</source>
++        <translation type="vanished">音效主题</translation>
++    </message>
++    <message>
++        <source>Alert Sound</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <source>Alert Volume</source>
++        <translation type="vanished">提示音大小</translation>
++    </message>
++    <message>
++        <source>Logout Music</source>
++        <translation type="vanished">注销</translation>
++    </message>
++    <message>
++        <source>Boot Music</source>
++        <translation type="vanished">开关机音乐</translation>
++    </message>
++    <message>
++        <source>Beep Switch</source>
++        <translation type="vanished">提示音</translation>
++    </message>
++    <message>
++        <source>Poweroff Music</source>
++        <translation type="vanished">关机</translation>
++    </message>
++    <message>
++        <source>Startup Music</source>
++        <translation type="vanished">开机</translation>
++    </message>
++    <message>
++        <source>Wakeup Music</source>
++        <translation type="vanished">唤醒</translation>
++    </message>
++    <message>
++        <source>Sleep Music</source>
++        <translation type="vanished">睡眠</translation>
++    </message>
++    <message>
++        <source>Window Closed</source>
++        <translation type="vanished">窗口关闭</translation>
++    </message>
++    <message>
++        <source>Volume Change</source>
++        <translation type="vanished">音量调节</translation>
++    </message>
++    <message>
++        <source>Setting Menu</source>
++        <translation type="vanished">设置菜单</translation>
++    </message>
++</context>
++<context>
++    <name>UnifiedOutputConfig</name>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="91"/>
++        <source>resolution</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="118"/>
++        <source>orientation</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="122"/>
++        <source>arrow-up</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="123"/>
++        <source>90° arrow-right</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="125"/>
++        <source>arrow-down</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="124"/>
++        <source>90° arrow-left</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="148"/>
++        <source>auto rotation</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/auto rotation</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="200"/>
++        <source>frequency</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="243"/>
++        <source>screen zoom</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/screen zoom</extra-contents_path>
++    </message>
++    <message>
++        <source>refresh rate</source>
++        <translation type="vanished">刷新率</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="406"/>
++        <source>auto</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Update</name>
++    <message>
++        <source>Update</source>
++        <translation type="vanished">更新</translation>
++    </message>
++    <message>
++        <source>System Update</source>
++        <translation type="vanished">系统更新</translation>
++        <extra-contents_path>/Update/System Update</extra-contents_path>
++    </message>
++    <message>
++        <source>Last check time:</source>
++        <translation type="vanished">上次检查时间:</translation>
++    </message>
++    <message>
++        <source>Check for updates</source>
++        <translation type="vanished">检查更新</translation>
++    </message>
++</context>
++<context>
++    <name>UpdateDbus</name>
++    <message>
++        <source>ukui-control-center</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <source>Settings</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <source>System-Upgrade</source>
++        <translation type="vanished">系统更新</translation>
++    </message>
++    <message>
++        <source>ukui-control-center-update</source>
++        <translation type="vanished">控制面板-更新提示</translation>
++    </message>
++</context>
++<context>
++    <name>UpdateLog</name>
++    <message>
++        <source>Update log</source>
++        <translation type="vanished">更新日志</translation>
++    </message>
++</context>
++<context>
++    <name>UpdateSource</name>
++    <message>
++        <source>Connection failed, please reconnect!</source>
++        <translation type="vanished">连接失败,请重新连接!</translation>
++    </message>
++</context>
++<context>
++    <name>Upgrade</name>
++    <message>
++        <source>Upgrade</source>
++        <translation type="vanished">更新</translation>
++    </message>
++</context>
++<context>
++    <name>UserInfo</name>
++    <message>
++        <source>userinfo</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>Userinfo</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>User Info</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>standard user</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>administrator</source>
++        <translation type="vanished">管理员用户</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1088"/>
++        <source>root</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1056"/>
++        <source>Hint</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Modify the account type need to logout to take effect, whether to logout?</source>
++        <translation type="vanished">更改账户类型需要注销后生效,是否注销?</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="956"/>
++        <source>The account type of “%1” has been modified, will take effect after logout, whether to logout?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="957"/>
++        <source>logout later</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="958"/>
++        <source>logout now</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1057"/>
++        <source>The system only allows one user to log in automatically.After it is turned on, the automatic login of other users will be turned off.Is it turned on?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1060"/>
++        <source>Trun on</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1061"/>
++        <source>Close on</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Add biometric feature</source>
++        <translation type="vanished">添加生物密码</translation>
++    </message>
++    <message>
++        <source>Rename</source>
++        <translation type="vanished">重命名</translation>
++    </message>
++    <message>
++        <source>Verify</source>
++        <translation type="vanished">验证</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1084"/>
++        <source>Standard</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1086"/>
++        <source>Admin</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Del</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="161"/>
++        <source>CurrentUser</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/CurrentUser</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="167"/>
++        <source>OthersUser</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/OthersUser</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="169"/>
++        <source>Add</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/Add</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="309"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="197"/>
++        <source>Password</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/Password</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="209"/>
++        <source>Groups</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/Groups</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="261"/>
++        <source>AutoLoginOnBoot</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/AutoLoginOnBoot</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="256"/>
++        <source>LoginWithoutPwd</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/LoginWithoutPwd</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="570"/>
++        <source>Warning</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="570"/>
++        <source>The user is logged in, please delete the user after logging out</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="41"/>
++        <source>Current User</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Change pwd</source>
++        <translation type="vanished">更改密码</translation>
++    </message>
++    <message>
++        <source>Change type</source>
++        <translation type="vanished">更改类型</translation>
++    </message>
++    <message>
++        <source>Change valid</source>
++        <translation type="vanished">密码时效</translation>
++        <extra-contents_path>/userinfo/Change valid</extra-contents_path>
++    </message>
++    <message>
++        <source>User group</source>
++        <translation type="vanished">用户组</translation>
++    </message>
++    <message>
++        <source>Change vaild</source>
++        <translation type="vanished">密码时效</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="331"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="203"/>
++        <source>Type</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/Type</extra-contents_path>
++    </message>
++    <message>
++        <source>Valid</source>
++        <translation type="vanished">密码时效</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="353"/>
++        <source>Group</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="422"/>
++        <source>Login no passwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="500"/>
++        <source>Automatic login at boot</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Currently in Live mode, please create a new user and log out</source>
++        <translation type="vanished">当前处于试用模式,请创建一个新用户并注销生效</translation>
++    </message>
++    <message>
++        <source>Biometric Password</source>
++        <translation type="vanished">生物密码</translation>
++    </message>
++    <message>
++        <source>advanced settings </source>
++        <translation type="vanished">高级设置</translation>
++    </message>
++    <message>
++        <source>enable biometrics </source>
++        <translation type="vanished">打开生物特征</translation>
++    </message>
++    <message>
++        <source>types of biometric password </source>
++        <translation type="vanished">生物密码类型</translation>
++    </message>
++    <message>
++        <source>biometric device </source>
++        <translation type="vanished">生物设备</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="568"/>
++        <source>Other Users</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Add new user</source>
++        <translation type="vanished">添加新用户</translation>
++    </message>
++</context>
++<context>
++    <name>UserInfoIntel</name>
++    <message>
++        <source>Current User</source>
++        <translation type="vanished">当前用户</translation>
++        <extra-contents_path>/UserinfoIntel/Current User</extra-contents_path>
++    </message>
++    <message>
++        <source>Change phone</source>
++        <translation type="vanished">更换手机号</translation>
++    </message>
++    <message>
++        <source>Change pwd</source>
++        <translation type="vanished">修改密码</translation>
++        <extra-contents_path>/UserinfoIntel/Change pwd</extra-contents_path>
++    </message>
++    <message>
++        <source>User group</source>
++        <translation type="vanished">用户组</translation>
++    </message>
++    <message>
++        <source>Del user</source>
++        <translation type="vanished">删除用户</translation>
++    </message>
++    <message>
++        <source>Other Users</source>
++        <translation type="vanished">其他用户</translation>
++        <extra-contents_path>/UserinfoIntel/Other Users</extra-contents_path>
++    </message>
++    <message>
++        <source>User Info Intel</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>Change Tel</source>
++        <translation type="vanished">更换手机号</translation>
++        <extra-contents_path>/UserinfoIntel/Change Tel</extra-contents_path>
++    </message>
++    <message>
++        <source>Delete user</source>
++        <translation type="vanished">删除用户</translation>
++        <extra-contents_path>/UserinfoIntel/Delete user</extra-contents_path>
++    </message>
++    <message>
++        <source>Change user name</source>
++        <translation type="vanished">更换用户名称</translation>
++        <extra-contents_path>/UserinfoIntel/Change user name</extra-contents_path>
++    </message>
++    <message>
++        <source>standard user</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>administrator</source>
++        <translation type="vanished">管理员用户</translation>
++    </message>
++    <message>
++        <source>root</source>
++        <translation type="vanished">Root</translation>
++    </message>
++    <message>
++        <source>Add new user</source>
++        <translation type="vanished">添加新用户</translation>
++    </message>
++    <message>
++        <source>set pwd</source>
++        <translation type="vanished">设置密码</translation>
++    </message>
++    <message>
++        <source>Change</source>
++        <translation type="vanished">更换</translation>
++    </message>
++</context>
++<context>
++    <name>UtilsForUserinfo</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="32"/>
++        <source>Password</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="36"/>
++        <source>Type</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="40"/>
++        <source>Delete</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="205"/>
++        <source>Standard</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="207"/>
++        <source>Admin</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Vino</name>
++    <message>
++        <location filename="../../../plugins/system/vino/vino.cpp" line="28"/>
++        <source>Vino</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>VinoUi</name>
++    <message>
++        <location filename="../../../plugins/system/vino/vinoui.cpp" line="15"/>
++        <source>Remote Desktop</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Allow others to view your desktop</source>
++        <translation type="vanished">允许其他人远程连接您的桌面</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/vinoui.cpp" line="17"/>
++        <source>Connect to your desktop remotely</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/vinoui.cpp" line="20"/>
++        <source>Allow others to connect to your desktop remotely using RDP</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/Allow others to connect to your desktop remotely using RDP</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/vinoui.cpp" line="23"/>
++        <source>Allow others to connect to your desktop remotely using VNC</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/Allow others to connect to your desktop remotely using VNC</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/vinoui.cpp" line="26"/>
++        <source>Allow connection to control screen</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/Allow connection to control screen</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/vinoui.cpp" line="28"/>
++        <source>You must confirm every visit for this machine</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/You must confirm every visit for this machine</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/vinoui.cpp" line="30"/>
++        <source>Require user to enter this password: </source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/Require user to enter this password:</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/vinoui.cpp" line="39"/>
++        <source>Edit</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Vpn</name>
++    <message>
++        <source>Add Vpn Connect</source>
++        <translation type="vanished">添加VPN连接</translation>
++    </message>
++    <message>
++        <source>Add vpn connect</source>
++        <translation type="vanished">添加VPN连接</translation>
++        <extra-contents_path>/Vpn/Add vpn connect</extra-contents_path>
++    </message>
++    <message>
++        <source>vpn</source>
++        <translation type="vanished">VPN</translation>
++    </message>
++    <message>
++        <source>Vpn</source>
++        <translation type="vanished">VPN</translation>
++    </message>
++    <message>
++        <source>Add a vpn connection</source>
++        <translation type="vanished">添加vpn连接</translation>
++        <extra-contents_path>/Vpn/Add a vpn connection</extra-contents_path>
++    </message>
++    <message>
++        <source>VPN</source>
++        <translation type="vanished">VPN</translation>
++    </message>
++</context>
++<context>
++    <name>Wallpaper</name>
++    <message>
++        <source>Mode</source>
++        <translation type="vanished">显示方式</translation>
++    </message>
++    <message>
++        <source>Select from</source>
++        <translation type="vanished">选择背景形式</translation>
++    </message>
++    <message>
++        <source>Picture options</source>
++        <translation type="vanished">图片放置方式</translation>
++    </message>
++    <message>
++        <source>Reset to default</source>
++        <translation type="vanished">恢复默认设置</translation>
++    </message>
++    <message>
++        <source>Browser online wp</source>
++        <translation type="vanished">浏览线上壁纸</translation>
++    </message>
++    <message>
++        <source>Restore default wp</source>
++        <translation type="vanished">恢复默认壁纸</translation>
++    </message>
++    <message>
++        <source>Ok</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Add</source>
++        <translation type="obsolete">添加</translation>
++    </message>
++    <message>
++        <source>background</source>
++        <translation type="vanished">背景</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="31"/>
++        <source>Background</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="156"/>
++        <source>picture</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="153"/>
++        <source>color</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Add custom shortcut</source>
++        <translation type="obsolete">添加自定义快捷键</translation>
++    </message>
++    <message>
++        <source>Custom color</source>
++        <translation type="vanished">自定义颜色</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="167"/>
++        <source>wallpaper</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="169"/>
++        <source>centered</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="165"/>
++        <source>scaled</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="171"/>
++        <source>stretched</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="173"/>
++        <source>zoom</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="175"/>
++        <source>spanned</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="219"/>
++        <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>allFiles(*.*)</source>
++        <translation type="vanished">所有文件(*.*)</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="259"/>
++        <source>select custom wallpaper file</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="260"/>
++        <source>Select</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="261"/>
++        <source>Position: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="262"/>
++        <source>FileName: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="263"/>
++        <source>FileType: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="264"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>WallpaperUi</name>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="28"/>
++        <source>Background</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Wallpaper/Background</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="30"/>
++        <source>Type</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Wallpaper/Type</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="66"/>
++        <source>Desktop Background</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Wallpaper/Desktop Background</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="93"/>
++        <source>Local Pictures</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Wallpaper/Local Pictures</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="95"/>
++        <source>Online Pictures</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Wallpaper/Online Pictures</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="97"/>
++        <source>Reset To Default</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Wallpaper/Reset To Default</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>Widget</name>
++    <message>
++        <source>screen zoom </source>
++        <translation type="vanished">屏幕缩放 </translation>
++    </message>
++    <message>
++        <source>unify output</source>
++        <translation type="vanished">统一输出</translation>
++    </message>
++    <message>
++        <source>night mode</source>
++        <translation type="vanished">色温</translation>
++        <extra-contents_path>/display/night mode</extra-contents_path>
++    </message>
++    <message>
++        <source>Some applications need to be logouted to take effect</source>
++        <translation type="vanished">部分程序需要注销生效</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="266"/>
++        <source>Night Mode</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/Night Mode</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="277"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1986"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2012"/>
++        <source>Open</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="277"/>
++        <source>When turned on, it will reduce the blue light of the screen.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="282"/>
++        <source>Color Temperature And Eye Care</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/Color Temperature And Eye Care</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="290"/>
++        <source>Time</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="300"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2072"/>
++        <source>Custom Time</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="311"/>
++        <source>to</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="284"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="329"/>
++        <source>Color Temperature</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/Color Temperature</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="271"/>
++        <source>When turned on, it can reduce blue light to prevent eye, the screen will turn yellow.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Night Mode And Eye Care</source>
++        <translation type="obsolete">色温与护眼</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="331"/>
++        <source>Warmer</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="332"/>
++        <source>Colder</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="610"/>
++        <source>Multi-screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="615"/>
++        <source>First Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="619"/>
++        <source>Clone Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="621"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2638"/>
++        <source>Splice Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1985"/>
++        <source>Turning on &apos;Eye Protection Mode&apos; will turn off &apos;Color Temperature&apos;. Continue turning it on?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1987"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2013"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2011"/>
++        <source>Turning on &apos;Color Temperature&apos; will turn off &apos;Eye Protection Mode&apos;. Continue turning it on?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2744"/>
++        <source>Auto Brightness</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/Auto Brightness</extra-contents_path>
++    </message>
++    <message>
++        <source>Adjust screen brightness by ambient</source>
++        <translation type="vanished">通过感应周围环境亮度,自动调整屏幕亮度</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="792"/>
++        <source>scale</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="797"/>
++        <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after 14 seconds&lt;/font&gt;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="808"/>
++        <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after %2 seconds&lt;/font&gt;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1022"/>
++        <source>The zoom has been modified, it will take effect after you log off</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1041"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1051"/>
++        <source>(Effective after logout)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2701"/>
++        <source>Splicing Method</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2704"/>
++        <source>Change</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2773"/>
++        <source>as main</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2794"/>
++        <source>open monitor</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after 14 seconds&lt;/font&gt;</source>
++        <translation type="vanished">屏幕%1已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在14秒后自动保存。&lt;/font&gt;</translation>
++    </message>
++    <message>
++        <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after %2 seconds&lt;/font&gt;</source>
++        <translation type="vanished">屏幕%1已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在%2秒后自动保存。&lt;/font&gt;</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2252"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2258"/>
++        <source>Follow the sunrise and sunset</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="618"/>
++        <source>Extend Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="271"/>
++        <source>Eye Protection Mode</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/Eye protection mode</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="616"/>
++        <source>Vice Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2772"/>
++        <source>monitor</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Information</source>
++        <translation type="vanished">信息</translation>
++    </message>
++    <message>
++        <source>Theme follow night mode</source>
++        <translation type="vanished">主题跟随夜间模式变化</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="783"/>
++        <source>resolution</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="786"/>
++        <source>orientation</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="789"/>
++        <source>frequency</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Hint</source>
++        <translation type="vanished">提示</translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++the settings will be saved after 14 seconds</source>
++        <translation type="vanished">是否保留当前修改的配置?将在14秒后自动保存配置</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="777"/>
++        <source>Save</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="776"/>
++        <source>Not Save</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++the settings will be saved after %1 seconds</source>
++        <translation type="vanished">是否保留当前修改的配置?将在%1秒后自动保存配置</translation>
++    </message>
++    <message>
++        <source>The zoom function needs to log out to take effect</source>
++        <translation type="vanished">修改系统缩放后需要注销生效,是否注销?</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1023"/>
++        <source>Log out now</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1024"/>
++        <source>Later</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2072"/>
++        <source>All Day</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Follow the sunrise and sunset(17:55-06:23)</source>
++        <translation type="vanished">跟随日出日落(17:55-06:23)</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2283"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2289"/>
++        <source>Brightness</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/Brightness</extra-contents_path>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++the settings will be saved after 9 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与 显卡兼容性问题,有可能显示不正常。系统将在9秒后保存配置</translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++The settings will be saved after 9 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与 显卡兼容性问题,有可能显示不正常。系统将在9秒后保存配置</translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++If something goes wrong, the settings will be restored after 10 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在10秒后还原设置</translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++If something goes wrong, the settings will be restored after 9 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在9秒后还原设置</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2781"/>
++        <source>screen zoom</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Mirror Display</source>
++        <translation type="vanished">镜像模式</translation>
++        <extra-contents_path>/display/unify output</extra-contents_path>
++    </message>
++    <message>
++        <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after 29 seconds&lt;/font&gt;</source>
++        <translation type="vanished">屏幕%1已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在29秒后自动保存。&lt;/font&gt; </translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++the settings will be saved after 29 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与 显卡兼容性问题,有可能显示不正常。系统将在29秒后保存配置</translation>
++    </message>
++    <message>
++        <source>Save Config</source>
++        <translation type="vanished">保存</translation>
++    </message>
++    <message>
++        <source>Restore Config</source>
++        <translation type="vanished">恢复</translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display 
++the settings will be saved after %1 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与 显卡兼容性问题,有可能显示不正常。系统将在%1秒后保存配置 </translation>
++    </message>
++    <message>
++        <source>Warnning</source>
++        <translation type="vanished">警告</translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++If something goes wrong, the settings will be restored after %1 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在%1秒后还原设置</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1488"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1788"/>
++        <source>please insure at least one output!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1488"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1495"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1788"/>
++        <source>Warning</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>The screen resolution has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after 14 seconds&lt;/font&gt;</source>
++        <translation type="vanished">屏幕分辨率已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在14秒后自动保存。&lt;/font&gt;</translation>
++    </message>
++    <message>
++        <source>The screen resolution has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after %1 seconds&lt;/font&gt;</source>
++        <translation type="vanished">屏幕分辨率已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在%1秒后自动保存。&lt;/font&gt;</translation>
++    </message>
++    <message>
++        <source>Open time should be earlier than close time!</source>
++        <translation type="vanished">开启时间必须大于关闭时间!</translation>
++    </message>
++    <message>
++        <source>Morning time should be earlier than evening time!</source>
++        <translation type="vanished">早晨时刻应早于晚上的时刻!</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1496"/>
++        <source>Sorry, your configuration could not be applied.
++Common reasons are that the overall screen size is too big, or you enabled more displays than supported by your GPU.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>@title:window</source>
++        <comment>Unsupported Configuration</comment>
++        <translation type="vanished">窗口</translation>
++    </message>
++    <message>
++        <source>Some applications need to be restarted to take effect</source>
++        <translation type="vanished">缩放配置需要注销后生效</translation>
++    </message>
++    <message>
++        <source>touch id</source>
++        <translation type="obsolete">触摸屏标识</translation>
++    </message>
++    <message>
++        <source>%1</source>
++        <translation type="vanished">%1</translation>
++    </message>
++</context>
++<context>
++    <name>WlanConnect</name>
++    <message>
++        <source>WlanConnect</source>
++        <translation type="vanished">无线局域网</translation>
++    </message>
++    <message>
++        <source>WLAN</source>
++        <translation type="vanished">无线局域网</translation>
++    </message>
++    <message>
++        <source>open</source>
++        <translation type="vanished">开启</translation>
++    </message>
++    <message>
++        <source>Advanced settings</source>
++        <translation type="vanished">高级设置</translation>
++    </message>
++    <message>
++        <source>Other Networks</source>
++        <translation type="vanished">其他网络</translation>
++    </message>
++    <message>
++        <source>Network settings</source>
++        <translation type="vanished">网络设置</translation>
++    </message>
++    <message>
++        <source>Connected</source>
++        <translation type="vanished">已连接</translation>
++    </message>
++    <message>
++        <source>Detail</source>
++        <translation type="vanished">网络详情</translation>
++    </message>
++    <message>
++        <source>Connect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>card</source>
++        <translation type="vanished">网卡</translation>
++    </message>
++    <message>
++        <source>connected</source>
++        <translation type="vanished">已连接</translation>
++    </message>
++</context>
++<context>
++    <name>addShortcutDialog</name>
++    <message>
++        <source>Shortcut name</source>
++        <translation type="vanished">快捷键名称</translation>
++    </message>
++    <message>
++        <source>Shortcut exec</source>
++        <translation type="vanished">快捷键程序</translation>
++    </message>
++    <message>
++        <source>Exec</source>
++        <translation type="vanished">程序</translation>
++    </message>
++    <message>
++        <source>Open</source>
++        <translation type="vanished">选择</translation>
++    </message>
++    <message>
++        <source>Name</source>
++        <translation type="vanished">名称</translation>
++    </message>
++    <message>
++        <source>Key</source>
++        <translation type="vanished">按键</translation>
++    </message>
++    <message>
++        <source>Invalid executable, please re-enter</source>
++        <translation type="vanished">无效的可执行程序,请重新选择</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Save</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Add custom shortcut</source>
++        <translation type="vanished">添加自定义快捷键</translation>
++    </message>
++    <message>
++        <source>shortcut conflict</source>
++        <translation type="vanished">快捷键冲突</translation>
++    </message>
++    <message>
++        <source>invaild shortcut</source>
++        <translation type="vanished">无效快捷键</translation>
++    </message>
++    <message>
++        <source>repeated naming</source>
++        <translation type="vanished">快捷键名称重复</translation>
++    </message>
++    <message>
++        <source>Add shortcut</source>
++        <translation type="vanished">添加快捷键</translation>
++    </message>
++    <message>
++        <source>Add Shortcut</source>
++        <translation type="vanished">添加快捷键</translation>
++    </message>
++    <message>
++        <source>Please enter a shortcut</source>
++        <translation type="vanished">请输入快捷键</translation>
++    </message>
++    <message>
++        <source>Desktop files(*.desktop)</source>
++        <translation type="vanished">桌面文件(*.desktop)</translation>
++    </message>
++    <message>
++        <source>select desktop</source>
++        <translation type="vanished">选择桌面</translation>
++    </message>
++    <message>
++        <source>Invalid application</source>
++        <translation type="vanished">此应用不可用</translation>
++    </message>
++    <message>
++        <source>Shortcut conflict</source>
++        <translation type="vanished">此快捷键组合已被占用</translation>
++    </message>
++    <message>
++        <source>Invalid shortcut</source>
++        <translation type="vanished">此快捷键组合不可用</translation>
++    </message>
++    <message>
++        <source>Name repetition</source>
++        <translation type="vanished">此快捷键名称重复</translation>
++    </message>
++    <message>
++        <source>Unknown error</source>
++        <translation type="vanished">未知错误</translation>
++    </message>
++    <message>
++        <source>Shortcut cannot be empty</source>
++        <translation type="vanished">快捷键不能为空</translation>
++    </message>
++    <message>
++        <source>Name cannot be empty</source>
++        <translation type="vanished">名称不能为空</translation>
++    </message>
++</context>
++<context>
++    <name>area_code_lineedit</name>
++    <message>
++        <source>Sign up by Phone</source>
++        <translation type="vanished">请输入手机号码</translation>
++    </message>
++</context>
++<context>
++    <name>changeUserGroup</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="33"/>
++        <source>user group</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="122"/>
++        <source>Group:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="135"/>
++        <source>GID:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="149"/>
++        <source>GNum:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="193"/>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="610"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="196"/>
++        <source>Save</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="611"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="565"/>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="573"/>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="649"/>
++        <source>Tips</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="565"/>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="649"/>
++        <source>Invalid Id!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="568"/>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="576"/>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="652"/>
++        <source>OK</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="573"/>
++        <source>Invalid Group Name!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="608"/>
++        <source>Whether delete the group: “%1” ?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="609"/>
++        <source>which will make some file components in the file system invalid!</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>changtimedialog</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">更改时间</translation>
++    </message>
++    <message>
++        <source>current date</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>time</source>
++        <translation type="vanished">时间</translation>
++    </message>
++    <message>
++        <source>year</source>
++        <translation type="vanished">年份</translation>
++    </message>
++    <message>
++        <source>month</source>
++        <translation type="vanished">月份</translation>
++    </message>
++    <message>
++        <source>day</source>
++        <translation type="vanished">号</translation>
++    </message>
++    <message>
++        <source>cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++</context>
++<context>
++    <name>config_list_widget</name>
++    <message>
++        <source>wallpaper</source>
++        <translation type="vanished">平铺</translation>
++    </message>
++    <message>
++        <source>Sync your settings</source>
++        <translation type="vanished">同步您的设置</translation>
++    </message>
++    <message>
++        <source>Your account:%1</source>
++        <translation type="vanished">您的云账户:%1</translation>
++    </message>
++    <message>
++        <source>Exit</source>
++        <translation type="vanished">退出登录</translation>
++    </message>
++    <message>
++        <source>Sync</source>
++        <translation type="vanished">同步中</translation>
++    </message>
++    <message>
++        <source>Sign in</source>
++        <translation type="vanished">登录</translation>
++    </message>
++    <message>
++        <source>Stop sync</source>
++        <translation type="vanished">结束同步</translation>
++    </message>
++    <message>
++        <source>Auto sync</source>
++        <translation type="vanished">自动同步</translation>
++    </message>
++    <message>
++        <source>Synchronize your personalized settings and data</source>
++        <translation type="vanished">同步您账户的数据以及个性化设置</translation>
++    </message>
++    <message>
++        <source>Login Cloud to get a better experience</source>
++        <translation type="vanished">同步您账户的数据以及个性化设置</translation>
++    </message>
++    <message>
++        <source>Sign in/Sign up</source>
++        <translation type="vanished">登录/注册</translation>
++    </message>
++    <message>
++        <source>You must sign in when you attempt to sync your settings.</source>
++        <translation type="vanished">如需同步设置,请先登录您的云账户。</translation>
++    </message>
++    <message>
++        <source>Your account:%1</source>
++        <translation type="vanished">您的云账户:%1</translation>
++    </message>
++    <message>
++        <source>Disconnected</source>
++        <translation type="vanished">未连接</translation>
++    </message>
++</context>
++<context>
++    <name>item_list</name>
++    <message>
++        <source>Menu</source>
++        <translation type="vanished">开始菜单</translation>
++    </message>
++    <message>
++        <source>Quick Start</source>
++        <translation type="vanished">快速启动项</translation>
++    </message>
++    <message>
++        <source>Tab</source>
++        <translation type="vanished">任务栏</translation>
++    </message>
++    <message>
++        <source>ScreenSaver</source>
++        <translation type="vanished">屏保</translation>
++    </message>
++    <message>
++        <source>User Profile</source>
++        <translation type="vanished">用户头像</translation>
++    </message>
++    <message>
++        <source>Weather</source>
++        <translation type="vanished">天气</translation>
++    </message>
++    <message>
++        <source>Media</source>
++        <translation type="vanished">影音</translation>
++    </message>
++    <message>
++        <source>Walpaper</source>
++        <translation type="vanished">桌面壁纸</translation>
++    </message>
++</context>
++<context>
++    <name>ksc_main_page_widget</name>
++    <message>
++        <source>Run Security Center</source>
++        <translation type="obsolete">打开安全中心</translation>
++    </message>
++</context>
++<context>
++    <name>ksc_module_func_widget</name>
++    <message>
++        <source>Network Protection</source>
++        <translation type="obsolete">网络保护</translation>
++    </message>
++</context>
++<context>
++    <name>m_updatelog</name>
++    <message>
++        <source>No content.</source>
++        <translation type="vanished">暂无内容.</translation>
++    </message>
++    <message>
++        <source>Search content</source>
++        <translation type="vanished">搜索内容</translation>
++    </message>
++    <message>
++        <source>History Log</source>
++        <translation type="vanished">历史更新</translation>
++    </message>
++    <message>
++        <source>Update Details</source>
++        <translation type="vanished">更新详情</translation>
++    </message>
++</context>
++<context>
++    <name>mcode_widget</name>
++    <message>
++        <source>SongTi</source>
++        <translation type="vanished">宋体</translation>
++    </message>
++</context>
++<context>
++    <name>networkaccount</name>
++    <message>
++        <source>Cloud Account</source>
++        <translation type="vanished">云账户</translation>
++    </message>
++</context>
++<context>
++    <name>ql_pushbutton_edit</name>
++    <message>
++        <source>Reset</source>
++        <translation type="vanished">重置密码</translation>
++    </message>
++</context>
++<context>
++    <name>ukFileDialog</name>
++    <message>
++        <source>Programs are not allowed to be added</source>
++        <translation type="vanished">该程序不允许添加。</translation>
++    </message>
++    <message>
++        <source>Programs are not allowed to be added.</source>
++        <translation type="vanished">该程序不允许添加。</translation>
++    </message>
++</context>
++</TS>
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0133-165-fix-sonar-security.patch ukui-control-center-4.10.0.0/debian/patches/0133-165-fix-sonar-security.patch
--- ukui-control-center-4.10.0.0/debian/patches/0133-165-fix-sonar-security.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0133-165-fix-sonar-security.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,39214 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Mon, 17 Feb 2025 07:10:50 +0000
+Subject: =?utf-8?q?!165_fix=28sonar=29=3A_security_Merge_pull_request_!165_?=
+ =?utf-8?q?from_=E4=BD=95=E6=80=9D=E8=83=9C/nile-0213?=
+
+---
+ changeOtherUserPwd/changeOtherUserPwd.pro          |     7 +-
+ changeOtherUserPwd/main.cpp                        |    61 +-
+ changeOtherUserPwd/run-passwd2.cpp                 |   712 -
+ changeOtherUserPwd/run-passwd2.h                   |    35 -
+ changeUserPwd/changeUserPwd.pro                    |     7 +-
+ changeUserPwd/main.cpp                             |    84 +-
+ changeUserPwd/run-passwd.cpp                       |   808 --
+ changeUserPwd/run-passwd.h                         |    34 -
+ checkUserPwdWithPAM/checkUserPwd/auth-pam.cpp      |     6 +-
+ checkUserPwdWithPAM/childCheckPwdWithPAM/main.cpp  |     8 +-
+ plugins/account/userinfo/kylin-chkname.cpp         |     6 +-
+ plugins/account/userinfo_intel/auth-pam.cpp        |   337 -
+ plugins/account/userinfo_intel/auth-pam.h          |    59 -
+ plugins/account/userinfo_intel/auth.h              |    62 -
+ .../userinfo_intel/changefaceinteldialog.cpp       |   471 -
+ .../account/userinfo_intel/changefaceinteldialog.h |   101 -
+ .../userinfo_intel/changefaceinteldialog.ui        |   531 -
+ .../userinfo_intel/changegroupinteldialog.cpp      |   223 -
+ .../userinfo_intel/changegroupinteldialog.h        |    74 -
+ .../userinfo_intel/changegroupinteldialog.ui       |   237 -
+ plugins/account/userinfo_intel/changepasswd.cpp    |   126 -
+ plugins/account/userinfo_intel/changepasswd.h      |    50 -
+ .../userinfo_intel/changephoneinteldialog.cpp      |   485 -
+ .../userinfo_intel/changephoneinteldialog.h        |    80 -
+ .../userinfo_intel/changephoneinteldialog.ui       |   600 -
+ .../userinfo_intel/changepininteldialog.cpp        |   125 -
+ .../account/userinfo_intel/changepininteldialog.h  |    57 -
+ .../account/userinfo_intel/changepininteldialog.ui |   105 -
+ plugins/account/userinfo_intel/changepwd.qrc       |     5 -
+ .../userinfo_intel/changepwdinteldialog.cpp        |   582 -
+ .../account/userinfo_intel/changepwdinteldialog.h  |   110 -
+ .../account/userinfo_intel/changepwdinteldialog.ui |   661 -
+ .../userinfo_intel/changetypeinteldialog.cpp       |   168 -
+ .../account/userinfo_intel/changetypeinteldialog.h |    62 -
+ .../userinfo_intel/changetypeinteldialog.ui        |   672 -
+ .../userinfo_intel/changevalidinteldialog.cpp      |   306 -
+ .../userinfo_intel/changevalidinteldialog.h        |    72 -
+ .../userinfo_intel/changevalidinteldialog.ui       |   520 -
+ .../userinfo_intel/creategroupinteldialog.cpp      |   168 -
+ .../userinfo_intel/creategroupinteldialog.h        |    59 -
+ .../userinfo_intel/creategroupinteldialog.ui       |   380 -
+ .../userinfo_intel/createuserinteldialog.cpp       |   567 -
+ .../account/userinfo_intel/createuserinteldialog.h |   109 -
+ .../userinfo_intel/createuserinteldialog.ui        |   778 --
+ .../userinfo_intel/definegroupitemintel.cpp        |   139 -
+ .../account/userinfo_intel/definegroupitemintel.h  |    74 -
+ .../account/userinfo_intel/delgroupinteldialog.cpp |    41 -
+ .../account/userinfo_intel/delgroupinteldialog.h   |    47 -
+ .../account/userinfo_intel/delgroupinteldialog.ui  |   154 -
+ .../account/userinfo_intel/deluserinteldialog.cpp  |   156 -
+ .../account/userinfo_intel/deluserinteldialog.h    |    66 -
+ .../account/userinfo_intel/deluserinteldialog.ui   |   259 -
+ .../userinfo_intel/digitalauthinteldialog.cpp      |   421 -
+ .../userinfo_intel/digitalauthinteldialog.h        |    98 -
+ .../userinfo_intel/digitalphoneinteldialog.cpp     |   268 -
+ .../userinfo_intel/digitalphoneinteldialog.h       |    95 -
+ .../account/userinfo_intel/elipsemaskwidget.cpp    |    60 -
+ plugins/account/userinfo_intel/elipsemaskwidget.h  |    48 -
+ .../userinfo_intel/messageboxpowerintel.cpp        |   208 -
+ .../account/userinfo_intel/messageboxpowerintel.h  |    61 -
+ .../account/userinfo_intel/numbersbuttonintel.cpp  |   131 -
+ .../account/userinfo_intel/numbersbuttonintel.h    |    34 -
+ plugins/account/userinfo_intel/passwdcheckutil.cpp |    47 -
+ plugins/account/userinfo_intel/passwdcheckutil.h   |    35 -
+ plugins/account/userinfo_intel/passwordbar.cpp     |   118 -
+ plugins/account/userinfo_intel/passwordbar.h       |    42 -
+ .../userinfo_intel/phoneauthinteldialog.cpp        |   702 -
+ .../account/userinfo_intel/phoneauthinteldialog.h  |    80 -
+ .../userinfo_intel/phoneauthinteldialog.qss        |    33 -
+ plugins/account/userinfo_intel/picturetowhite.cpp  |    74 -
+ plugins/account/userinfo_intel/picturetowhite.h    |    52 -
+ .../userinfo_intel/qtdbus/systemdbusdispatcher.cpp |    68 -
+ .../userinfo_intel/qtdbus/systemdbusdispatcher.h   |    56 -
+ .../userinfo_intel/qtdbus/userdispatcher.cpp       |   116 -
+ .../account/userinfo_intel/qtdbus/userdispatcher.h |    70 -
+ plugins/account/userinfo_intel/res/img.qrc         |     3 -
+ plugins/account/userinfo_intel/userinfo_intel.cpp  |  1358 --
+ plugins/account/userinfo_intel/userinfo_intel.h    |   276 -
+ plugins/account/userinfo_intel/userinfo_intel.pro  |   110 -
+ plugins/account/userinfo_intel/userinfo_intel.ui   |   728 -
+ plugins/devices/keyboard/kbdlayoutmanager.cpp      |   367 -
+ plugins/devices/keyboard/kbdlayoutmanager.h        |    82 -
+ plugins/devices/keyboard/kbdlayoutmanager.ui       |   298 -
+ plugins/devices/keyboard/keyboardcontrol.cpp       |    70 -
+ plugins/devices/keyboard/keyboardcontrol.h         |    55 -
+ plugins/devices/keyboard/keyboardlayout.cpp        |   111 -
+ plugins/devices/keyboard/keyboardlayout.h          |    55 -
+ plugins/devices/keyboard/layoutmanager.ui          |   480 -
+ .../org.ukui.control-center.keybinding.gschema.xml |    19 -
+ plugins/devices/keyboard/preview/config-keyboard.h |     9 -
+ .../devices/keyboard/preview/config-workspace.h    |   166 -
+ plugins/devices/keyboard/preview/debug.cpp         |    11 -
+ plugins/devices/keyboard/preview/debug.h           |    11 -
+ .../keyboard/preview/geometry_components.cpp       |   245 -
+ .../devices/keyboard/preview/geometry_components.h |   362 -
+ .../devices/keyboard/preview/geometry_parser.cpp   |   593 -
+ plugins/devices/keyboard/preview/geometry_parser.h |   161 -
+ .../devices/keyboard/preview/kbpreviewframe.cpp    |   374 -
+ plugins/devices/keyboard/preview/kbpreviewframe.h  |    95 -
+ plugins/devices/keyboard/preview/keyaliases.cpp    |   128 -
+ plugins/devices/keyboard/preview/keyaliases.h      |    36 -
+ .../devices/keyboard/preview/keyboard_config.cpp   |   208 -
+ plugins/devices/keyboard/preview/keyboard_config.h |    91 -
+ .../devices/keyboard/preview/keyboardlayout.cpp    |   133 -
+ plugins/devices/keyboard/preview/keyboardlayout.h  |   115 -
+ .../devices/keyboard/preview/keyboardpainter.cpp   |   103 -
+ plugins/devices/keyboard/preview/keyboardpainter.h |    51 -
+ plugins/devices/keyboard/preview/keysym2ucs.cpp    |   901 --
+ plugins/devices/keyboard/preview/keysym2ucs.h      |    27 -
+ plugins/devices/keyboard/preview/keysymhelper.cpp  |    84 -
+ plugins/devices/keyboard/preview/keysymhelper.h    |    41 -
+ plugins/devices/keyboard/preview/symbol_parser.cpp |   288 -
+ plugins/devices/keyboard/preview/symbol_parser.h   |    93 -
+ plugins/devices/keyboard/preview/x11_helper.cpp    |   453 -
+ plugins/devices/keyboard/preview/x11_helper.h      |   260 -
+ plugins/devices/keyboard/preview/xkb_rules.cpp     |   497 -
+ plugins/devices/keyboard/preview/xkb_rules.h       |   142 -
+ plugins/devices/keyboard/tastenbrett.cpp           |    63 -
+ plugins/devices/keyboard/tastenbrett.h             |    32 -
+ shell/res/i18n/vi.ts                               | 13822 +++++++++++++++++++
+ 120 files changed, 13843 insertions(+), 24327 deletions(-)
+ delete mode 100644 changeOtherUserPwd/run-passwd2.cpp
+ delete mode 100644 changeOtherUserPwd/run-passwd2.h
+ delete mode 100644 changeUserPwd/run-passwd.cpp
+ delete mode 100644 changeUserPwd/run-passwd.h
+ delete mode 100644 plugins/account/userinfo_intel/auth-pam.cpp
+ delete mode 100644 plugins/account/userinfo_intel/auth-pam.h
+ delete mode 100644 plugins/account/userinfo_intel/auth.h
+ delete mode 100644 plugins/account/userinfo_intel/changefaceinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/changefaceinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/changefaceinteldialog.ui
+ delete mode 100644 plugins/account/userinfo_intel/changegroupinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/changegroupinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/changegroupinteldialog.ui
+ delete mode 100644 plugins/account/userinfo_intel/changepasswd.cpp
+ delete mode 100644 plugins/account/userinfo_intel/changepasswd.h
+ delete mode 100644 plugins/account/userinfo_intel/changephoneinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/changephoneinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/changephoneinteldialog.ui
+ delete mode 100644 plugins/account/userinfo_intel/changepininteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/changepininteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/changepininteldialog.ui
+ delete mode 100644 plugins/account/userinfo_intel/changepwd.qrc
+ delete mode 100644 plugins/account/userinfo_intel/changepwdinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/changepwdinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/changepwdinteldialog.ui
+ delete mode 100644 plugins/account/userinfo_intel/changetypeinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/changetypeinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/changetypeinteldialog.ui
+ delete mode 100644 plugins/account/userinfo_intel/changevalidinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/changevalidinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/changevalidinteldialog.ui
+ delete mode 100644 plugins/account/userinfo_intel/creategroupinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/creategroupinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/creategroupinteldialog.ui
+ delete mode 100644 plugins/account/userinfo_intel/createuserinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/createuserinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/createuserinteldialog.ui
+ delete mode 100644 plugins/account/userinfo_intel/definegroupitemintel.cpp
+ delete mode 100644 plugins/account/userinfo_intel/definegroupitemintel.h
+ delete mode 100644 plugins/account/userinfo_intel/delgroupinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/delgroupinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/delgroupinteldialog.ui
+ delete mode 100644 plugins/account/userinfo_intel/deluserinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/deluserinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/deluserinteldialog.ui
+ delete mode 100644 plugins/account/userinfo_intel/digitalauthinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/digitalauthinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/digitalphoneinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/digitalphoneinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/elipsemaskwidget.cpp
+ delete mode 100644 plugins/account/userinfo_intel/elipsemaskwidget.h
+ delete mode 100644 plugins/account/userinfo_intel/messageboxpowerintel.cpp
+ delete mode 100644 plugins/account/userinfo_intel/messageboxpowerintel.h
+ delete mode 100644 plugins/account/userinfo_intel/numbersbuttonintel.cpp
+ delete mode 100644 plugins/account/userinfo_intel/numbersbuttonintel.h
+ delete mode 100644 plugins/account/userinfo_intel/passwdcheckutil.cpp
+ delete mode 100644 plugins/account/userinfo_intel/passwdcheckutil.h
+ delete mode 100644 plugins/account/userinfo_intel/passwordbar.cpp
+ delete mode 100644 plugins/account/userinfo_intel/passwordbar.h
+ delete mode 100644 plugins/account/userinfo_intel/phoneauthinteldialog.cpp
+ delete mode 100644 plugins/account/userinfo_intel/phoneauthinteldialog.h
+ delete mode 100644 plugins/account/userinfo_intel/phoneauthinteldialog.qss
+ delete mode 100644 plugins/account/userinfo_intel/picturetowhite.cpp
+ delete mode 100644 plugins/account/userinfo_intel/picturetowhite.h
+ delete mode 100644 plugins/account/userinfo_intel/qtdbus/systemdbusdispatcher.cpp
+ delete mode 100644 plugins/account/userinfo_intel/qtdbus/systemdbusdispatcher.h
+ delete mode 100644 plugins/account/userinfo_intel/qtdbus/userdispatcher.cpp
+ delete mode 100644 plugins/account/userinfo_intel/qtdbus/userdispatcher.h
+ delete mode 100644 plugins/account/userinfo_intel/res/img.qrc
+ delete mode 100644 plugins/account/userinfo_intel/userinfo_intel.cpp
+ delete mode 100644 plugins/account/userinfo_intel/userinfo_intel.h
+ delete mode 100644 plugins/account/userinfo_intel/userinfo_intel.pro
+ delete mode 100644 plugins/account/userinfo_intel/userinfo_intel.ui
+ delete mode 100644 plugins/devices/keyboard/kbdlayoutmanager.cpp
+ delete mode 100644 plugins/devices/keyboard/kbdlayoutmanager.h
+ delete mode 100644 plugins/devices/keyboard/kbdlayoutmanager.ui
+ delete mode 100644 plugins/devices/keyboard/keyboardcontrol.cpp
+ delete mode 100644 plugins/devices/keyboard/keyboardcontrol.h
+ delete mode 100644 plugins/devices/keyboard/keyboardlayout.cpp
+ delete mode 100644 plugins/devices/keyboard/keyboardlayout.h
+ delete mode 100644 plugins/devices/keyboard/layoutmanager.ui
+ delete mode 100644 plugins/devices/keyboard/org.ukui.control-center.keybinding.gschema.xml
+ delete mode 100644 plugins/devices/keyboard/preview/config-keyboard.h
+ delete mode 100644 plugins/devices/keyboard/preview/config-workspace.h
+ delete mode 100644 plugins/devices/keyboard/preview/debug.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/debug.h
+ delete mode 100644 plugins/devices/keyboard/preview/geometry_components.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/geometry_components.h
+ delete mode 100644 plugins/devices/keyboard/preview/geometry_parser.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/geometry_parser.h
+ delete mode 100644 plugins/devices/keyboard/preview/kbpreviewframe.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/kbpreviewframe.h
+ delete mode 100644 plugins/devices/keyboard/preview/keyaliases.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/keyaliases.h
+ delete mode 100644 plugins/devices/keyboard/preview/keyboard_config.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/keyboard_config.h
+ delete mode 100644 plugins/devices/keyboard/preview/keyboardlayout.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/keyboardlayout.h
+ delete mode 100644 plugins/devices/keyboard/preview/keyboardpainter.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/keyboardpainter.h
+ delete mode 100644 plugins/devices/keyboard/preview/keysym2ucs.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/keysym2ucs.h
+ delete mode 100644 plugins/devices/keyboard/preview/keysymhelper.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/keysymhelper.h
+ delete mode 100644 plugins/devices/keyboard/preview/symbol_parser.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/symbol_parser.h
+ delete mode 100644 plugins/devices/keyboard/preview/x11_helper.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/x11_helper.h
+ delete mode 100644 plugins/devices/keyboard/preview/xkb_rules.cpp
+ delete mode 100644 plugins/devices/keyboard/preview/xkb_rules.h
+ delete mode 100644 plugins/devices/keyboard/tastenbrett.cpp
+ delete mode 100644 plugins/devices/keyboard/tastenbrett.h
+ create mode 100644 shell/res/i18n/vi.ts
+
+diff --git a/changeOtherUserPwd/changeOtherUserPwd.pro b/changeOtherUserPwd/changeOtherUserPwd.pro
+index f0e3f54..da33e59 100644
+--- a/changeOtherUserPwd/changeOtherUserPwd.pro
++++ b/changeOtherUserPwd/changeOtherUserPwd.pro
+@@ -32,9 +32,4 @@ INSTALLS += \
+     target \
+ 
+ 
+-SOURCES += \
+-        main.cpp \
+-        run-passwd2.cpp
+-
+-HEADERS += \
+-    run-passwd2.h
++SOURCES += main.cpp
+diff --git a/changeOtherUserPwd/main.cpp b/changeOtherUserPwd/main.cpp
+index 869d82a..7eaec11 100644
+--- a/changeOtherUserPwd/main.cpp
++++ b/changeOtherUserPwd/main.cpp
+@@ -1,4 +1,5 @@
+ /*change otheruser password on pam*/
++#include <QCoreApplication>
+ #include <stdio.h>
+ #include <security/pam_appl.h>
+ #include <security/pam_misc.h>
+@@ -83,7 +84,7 @@ static int ni_conv (int num_msg, const struct pam_message **msg, struct pam_resp
+ failed_conversation:
+     for (count=0; count < num_msg; count++) {
+         if (NULL != responses[count].resp) {
+-            memset (responses[count].resp, 0, strlen (responses[count].resp));
++            memset (responses[count].resp, 0, strnlen(responses[count].resp, sizeof(responses[count].resp)));
+             free (responses[count].resp);
+             responses[count].resp = NULL;
+         }
+@@ -142,61 +143,3 @@ int main(int argc, char *argv[])
+ }
+ 
+ /*end pam*/
+-
+-#include <QCoreApplication>
+-
+-#include <glib.h>
+-#include "run-passwd2.h"
+-
+-PasswdHandler *passwd_handler = NULL;
+-
+-static void auth_cb (PasswdHandler *passwd_handler, GError *error, gpointer user_data);
+-static void chpasswd_cb (PasswdHandler *passwd_handler, GError *error, gpointer user_data);
+-
+-//int main(int argc, char *argv[])
+-//{
+-
+-//    if (argc != 3)
+-//    {
+-//        return -1;
+-//    }
+-
+-//    QCoreApplication a(argc, argv);
+-
+-//    passwd_handler = passwd_init();
+-
+-//    passwd_change_password(passwd_handler, argv[1], argv[2], chpasswd_cb, NULL);
+-
+-//    return a.exec();
+-//}
+-
+-static void
+-auth_cb (PasswdHandler *passwd_handler, GError *error, gpointer user_data)
+-{
+-
+-}
+-
+-/**
+- * @brief chpasswd_cb
+- * @param passwd_handler
+- * @param error
+- * @param user_data
+- */
+-static void
+-chpasswd_cb (PasswdHandler *passwd_handler,
+-             GError        *error,
+-             gpointer       user_data)
+-{
+-
+-
+-    if (!error) {
+-
+-        qApp->exit(0);
+-    } else {
+-
+-        passwd_destroy (passwd_handler);
+-
+-        qApp->exit(1);
+-    }
+-
+-}
+diff --git a/changeOtherUserPwd/run-passwd2.cpp b/changeOtherUserPwd/run-passwd2.cpp
+deleted file mode 100644
+index 29c1901..0000000
+--- a/changeOtherUserPwd/run-passwd2.cpp
++++ /dev/null
+@@ -1,712 +0,0 @@
+-
+-
+-/* qt会将glib里的signals成员识别为宏,所以取消该宏
+- * 后面如果用到signals时,使用Q_SIGNALS代替即可
+- **/
+-#ifdef signals
+-#undef signals
+-#endif
+-
+-#include <glib.h>
+-#include <gio/gio.h>
+-
+-#include <unistd.h>
+-#include <string.h>
+-#include <errno.h>
+-#include <sys/wait.h>
+-
+-#include "run-passwd2.h"
+-
+-/* Buffer size for backend output */
+-#define BUFSIZE 64
+-
+-/* Passwd states */
+-//后端passwd的状态,NONE应该是passwd还没有启动,ERROR表示报错但还没退出
+-typedef enum {
+-        PASSWD_STATE_NONE,              /* Passwd is not asking for anything */
+-        PASSWD_STATE_AUTH,              /* Passwd is asking for our current password */
+-        PASSWD_STATE_NEW,               /* Passwd is asking for our new password */
+-        PASSWD_STATE_RETYPE,            /* Passwd is asking for our retyped new password */
+-        PASSWD_STATE_ERR                /* Passwd reported an error but has not yet exited */
+-} PasswdState;
+-
+-struct PasswdHandler {
+-//        GtkBuilder  *ui;
+-
+-        const char *current_password;
+-        const char *new_password;
+-        const char *retyped_password;
+-
+-        /* Communication with the passwd program */
+-        GPid backend_pid;
+-
+-        GIOChannel *backend_stdin;
+-        GIOChannel *backend_stdout;
+-
+-        GQueue *backend_stdin_queue;            /* Write queue to backend_stdin */
+-
+-        /* GMainLoop IDs */
+-        guint backend_child_watch_id;           /* g_child_watch_add (PID) */
+-        guint backend_stdout_watch_id;          /* g_io_add_watch (stdout) */
+-
+-        /* State of the passwd program */
+-        PasswdState backend_state;
+-        gboolean    changing_password;
+-
+-        PasswdCallback auth_cb;
+-        gpointer       auth_cb_data;
+-
+-        PasswdCallback chpasswd_cb;
+-        gpointer       chpasswd_cb_data;
+-};
+-
+-//GQuark是一个guint32
+-static GQuark
+-passwd_error_quark (void)
+-{
+-    static GQuark q = 0;
+-
+-    //返回错误的标识码
+-    if (q == 0) {
+-        q = g_quark_from_static_string("passwd_error");
+-    }
+-
+-    return q;
+-}
+-
+-/* Error handling */
+-#define PASSWD_ERROR (passwd_error_quark ())
+-
+-static void stop_passwd (PasswdHandler *passwd_handler);
+-
+-static void free_passwd_resources (PasswdHandler *passwd_handler);
+-
+-static gboolean io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *passwd_handler);
+-
+-
+-static void free_passwd_resources (PasswdHandler *passwd_handler)
+-{
+-    GError  *error = NULL;
+-
+-    /* Remove the child watcher */
+-    if (passwd_handler->backend_child_watch_id != 0) {
+-
+-        g_source_remove (passwd_handler->backend_child_watch_id);
+-
+-        passwd_handler->backend_child_watch_id = 0;
+-    }
+-
+-
+-    /* Close IO channels (internal file descriptors are automatically closed) */
+-    if (passwd_handler->backend_stdin != NULL) {
+-
+-        if (g_io_channel_shutdown (passwd_handler->backend_stdin, TRUE, &error) != G_IO_STATUS_NORMAL) {
+-            g_warning ("Could not shutdown backend_stdin IO channel: %s", error->message);
+-            g_error_free (error);
+-            error = NULL;
+-        }
+-
+-        g_io_channel_unref (passwd_handler->backend_stdin);
+-        passwd_handler->backend_stdin = NULL;
+-    }
+-
+-    if (passwd_handler->backend_stdout != NULL) {
+-
+-        if (g_io_channel_shutdown (passwd_handler->backend_stdout, TRUE, &error) != G_IO_STATUS_NORMAL) {
+-            g_warning ("Could not shutdown backend_stdout IO channel: %s", error->message);
+-            g_error_free (error);
+-            error = NULL;
+-        }
+-
+-        g_io_channel_unref (passwd_handler->backend_stdout);
+-
+-        passwd_handler->backend_stdout = NULL;
+-    }
+-
+-    /* Remove IO watcher */
+-    if (passwd_handler->backend_stdout_watch_id != 0) {
+-
+-        g_source_remove (passwd_handler->backend_stdout_watch_id);
+-
+-        passwd_handler->backend_stdout_watch_id = 0;
+-    }
+-
+-    /* Close PID */
+-    //因为flag为G_SPAWN_DO_NOT_REAP_CHILD,所以child不会自动的被reap掉,需要在子进程上free
+-    if (passwd_handler->backend_pid != -1) {
+-
+-        g_spawn_close_pid (passwd_handler->backend_pid);
+-
+-        passwd_handler->backend_pid = -1;
+-    }
+-
+-    /* Clear backend state */
+-    passwd_handler->backend_state = PASSWD_STATE_NONE;
+-}
+-
+-static void authenticate (PasswdHandler *passwd_handler)
+-{
+-        gchar   *s;
+-
+-        s = g_strdup_printf ("%s\n", passwd_handler->current_password);
+-        g_queue_push_tail (passwd_handler->backend_stdin_queue, s);
+-}
+-
+-static void io_queue_pop (GQueue *queue, GIOChannel *channel)
+-{
+-    gchar   *buf;
+-    gsize   bytes_written;
+-    GError  *error = NULL;
+-
+-    buf = (gchar *)g_queue_pop_head (queue);
+-
+-    if (buf != NULL) {
+-        //将队列中的首元素写入到channel中
+-        if (g_io_channel_write_chars (channel, buf, -1, &bytes_written, &error) != G_IO_STATUS_NORMAL) {
+-            g_warning ("Could not write queue element \"%s\" to channel: %s", buf, error->message);
+-            g_error_free (error);
+-        }
+-
+-        /* Ensure passwords are cleared from memory */
+-        //清除内存中的passwords
+-        memset (buf, 0, strlen (buf));
+-        g_free (buf);
+-    }
+-
+-}
+-
+-static gboolean is_string_complete (gchar *str, ...)
+-{
+-    va_list ap;
+-    gchar   *arg;
+-
+-    if (strlen (str) == 0) {
+-        return FALSE;
+-    }
+-
+-    va_start (ap, str);
+-
+-    while ((arg = va_arg (ap, char *)) != NULL) {
+-        if (g_strrstr (str, arg) != NULL) {
+-            va_end (ap);
+-            return TRUE;
+-        }
+-    }
+-
+-    va_end (ap);
+-
+-    return FALSE;
+-}
+-
+-static gboolean io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *passwd_handler)
+-{
+-    static GString *str = NULL;     /* Persistent buffer */
+-
+-    gchar           buf[BUFSIZE];           /* Temporary buffer */
+-    gsize           bytes_read;
+-    GError          *gio_error = NULL;      /* Error returned by functions */
+-    GError          *error = NULL;          /* Error sent to callbacks */
+-
+-    //GtkBuilder      *dialog;
+-
+-    gboolean        reinit = FALSE;
+-
+-    /* Initialize buffer */
+-    if (str == NULL) {
+-        str = g_string_new ("");
+-    }
+-
+-    //dialog = passwd_handler->ui;
+-    //buf将保存从channel中读取到的数据,bytes_read表示从buf中读取的数据长度
+-    if (g_io_channel_read_chars (source, buf, BUFSIZE, &bytes_read, &gio_error)
+-            != G_IO_STATUS_NORMAL) {
+-        g_warning ("IO Channel read error: %s", gio_error->message);
+-        g_error_free (gio_error);
+-
+-        return TRUE;
+-    }
+-
+-    //		g_warning("----------bytes_read=%d",bytes_read);
+-    //		g_warning("----------io_watch_buf=%s-------",buf);
+-
+-    str = g_string_append_len (str, buf, bytes_read);
+-
+-    /* In which state is the backend? */
+-    switch (passwd_handler->backend_state) {
+-    case PASSWD_STATE_AUTH:
+-        /* Passwd is asking for our current password */
+-
+-        if (is_string_complete (str->str, "assword: ", "failure", "wrong", "error", NULL)) {
+-
+-            if (g_strrstr (str->str, "assword: ") != NULL) {
+-                /* Authentication successful */
+-
+-                passwd_handler->backend_state = PASSWD_STATE_NEW;
+-
+-                /* Trigger callback to update authentication status */
+-                if (passwd_handler->auth_cb)
+-                    passwd_handler->auth_cb (passwd_handler,
+-                                             NULL,
+-                                             passwd_handler->auth_cb_data);
+-
+-            } else {
+-                /* Authentication failed */
+-
+-                error = g_error_new_literal (PASSWD_ERROR, PASSWD_ERROR_AUTH_FAILED,
+-                                             "Authentication failure!");
+-
+-                passwd_handler->changing_password = FALSE;
+-
+-                /* This error can happen both while authenticating or while changing password:
+-                                         * if chpasswd_cb is set, this means we're already changing password */
+-                if (passwd_handler->chpasswd_cb)
+-                    passwd_handler->chpasswd_cb (passwd_handler,
+-                                                 error,
+-                                                 passwd_handler->auth_cb_data);
+-                else if (passwd_handler->auth_cb)
+-                    passwd_handler->auth_cb (passwd_handler,
+-                                             error,
+-                                             passwd_handler->auth_cb_data);
+-
+-                g_error_free (error);
+-            }
+-
+-            reinit = TRUE;
+-        }
+-        break;
+-    case PASSWD_STATE_NEW:
+-        /* Passwd is asking for our new password */
+-
+-        if (is_string_complete (str->str, "assword: ", NULL)) {
+-            /* Advance to next state */
+-            passwd_handler->backend_state = PASSWD_STATE_RETYPE;
+-
+-            /* Pop retyped password from queue and into IO channel */
+-            io_queue_pop (passwd_handler->backend_stdin_queue, passwd_handler->backend_stdin);
+-
+-            reinit = TRUE;
+-        }
+-        break;
+-    case PASSWD_STATE_RETYPE:
+-        /* Passwd is asking for our retyped new password */
+-
+-        //                        if (is_string_complete (str->str,
+-        //                                                "successfully",
+-        //                                                "short",
+-        //                                                "longer",
+-        //                                                "palindrome",
+-        //                                                "dictionary",
+-        //                                                "simple",
+-        //                                                "simplistic",
+-        //                                                "similar",
+-        //                                                "different",
+-        //                                                "case",
+-        //                                                "wrapped",
+-        //                                                "recovered",
+-        //                                                "recent",
+-        //                                                "unchanged",
+-        //                                                "match",
+-        //                                                "1 numeric or special",
+-        //                                                "failure",
+-        //                                                "length",
+-        //                                                NULL)) {
+-        if (TRUE){
+-
+-            if (g_strrstr (str->str, "successfully") != NULL) {
+-                /* Hooray! */
+-
+-                /* Trigger callback to update status */
+-                if (passwd_handler->chpasswd_cb)
+-                    passwd_handler->chpasswd_cb (passwd_handler,
+-                                                 NULL,
+-                                                 passwd_handler->chpasswd_cb_data);
+-            }
+-            else {
+-                /* Ohnoes! */
+-
+-                if (g_strrstr (str->str, "recovered") != NULL) {
+-                    /* What does this indicate?
+-                                                 * "Authentication information cannot be recovered?" from libpam? */
+-                    error = g_error_new_literal (PASSWD_ERROR, PASSWD_ERROR_UNKNOWN,
+-                                                 str->str);
+-                } else if (g_strrstr (str->str, "short") != NULL ||
+-                           g_strrstr (str->str, "longer") != NULL) {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_REJECTED,
+-                                         "New password length is too short!");
+-                } else if (g_strrstr (str->str, "palindrome") != NULL ||
+-                           g_strrstr (str->str, "simple") != NULL ||
+-                           g_strrstr (str->str, "simplistic") != NULL ||
+-                           g_strrstr (str->str, "dictionary") != NULL) {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_REJECTED,
+-                                         "The new password is too simple!");
+-                } else if (g_strrstr (str->str, "similar") != NULL ||
+-                           g_strrstr (str->str, "different") != NULL ||
+-                           g_strrstr (str->str, "case") != NULL ||
+-                           g_strrstr (str->str, "wrapped") != NULL) {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_REJECTED,
+-                                         "The new password is too similar to the old one!");
+-                } else if (g_strrstr (str->str, "1 numeric or special") != NULL) {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_REJECTED,
+-                                         "The new password must contain numbers or special characters!");
+-                } else if (g_strrstr (str->str, "unchanged") != NULL ||
+-                           g_strrstr (str->str, "match") != NULL) {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_REJECTED,
+-                                         "The new password is the same as the old one!");
+-                } else if (g_strrstr (str->str, "recent") != NULL) {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_REJECTED,
+-                                         "The new password has been used recently!");
+-                } else if (g_strrstr (str->str, "failure") != NULL) {
+-                    /* Authentication failure */
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_AUTH_FAILED,
+-                                         "Your password has been changed after you verify!");
+-                }
+-                else {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_UNKNOWN,
+-                                         "Unknown error");
+-                }
+-
+-                /* At this point, passwd might have exited, in which case
+-                                         * child_watch_cb should clean up for us and remove this watcher.
+-                                         * On some error conditions though, passwd just re-prompts us
+-                                         * for our new password. */
+-                passwd_handler->backend_state = PASSWD_STATE_ERR;
+-
+-                passwd_handler->changing_password = FALSE;
+-
+-                /* Trigger callback to update status */
+-                if (passwd_handler->chpasswd_cb)
+-                    passwd_handler->chpasswd_cb (passwd_handler,
+-                                                 error,
+-                                                 passwd_handler->chpasswd_cb_data);
+-
+-                g_error_free (error);
+-
+-            }
+-
+-            reinit = TRUE;
+-
+-            /* child_watch_cb should clean up for us now */
+-        }
+-        break;
+-    case PASSWD_STATE_NONE:
+-        /* Passwd is not asking for anything yet */
+-        if (is_string_complete (str->str, "assword: ", NULL)) {
+-
+-            /* If the user does not have a password set,
+-                                 * passwd will immediately ask for the new password,
+-                                 * so skip the AUTH phase */
+-            if (is_string_complete (str->str, "new", "New", NULL)) {
+-                gchar *pw;
+-
+-                passwd_handler->backend_state = PASSWD_STATE_NEW;
+-
+-                /* since passwd didn't ask for our old password
+-                                         * in this case, simply remove it from the queue */
+-                pw = (gchar *)g_queue_pop_head (passwd_handler->backend_stdin_queue);
+-                g_free (pw);
+-
+-                /* Pop the IO queue, i.e. send new password */
+-                io_queue_pop (passwd_handler->backend_stdin_queue, passwd_handler->backend_stdin);
+-            } else {
+-
+-                passwd_handler->backend_state = PASSWD_STATE_AUTH;
+-
+-                /* Pop the IO queue, i.e. send current password */
+-                io_queue_pop (passwd_handler->backend_stdin_queue, passwd_handler->backend_stdin);
+-            }
+-
+-            reinit = TRUE;
+-        }
+-        break;
+-    default:
+-        /* Passwd has returned an error */
+-        reinit = TRUE;
+-        break;
+-    }
+-
+-    if (reinit) {
+-        g_string_free (str, TRUE);
+-        str = NULL;
+-    }
+-
+-    /* Continue calling us */
+-    return TRUE;
+-}
+-
+-/* Child watcher */
+-static void child_watch_cb (GPid pid, gint status, PasswdHandler *passwd_handler)
+-{
+-    //子进程正常结束为非0
+-    if (WIFEXITED (status)) {
+-        //取得子进程正常退出时返回的结束代码
+-        if (WEXITSTATUS (status) >= 255) {
+-            g_warning ("Child exited unexpectedly");
+-        }
+-    }
+-
+-    free_passwd_resources (passwd_handler);
+-}
+-
+-static void stop_passwd (PasswdHandler *passwd_handler)
+-{
+-    /* This is the standard way of returning from the dialog with passwd.
+-     * If we return this way we can safely kill passwd as it has completed
+-     * its task.
+-     */
+-
+-    if (passwd_handler->backend_pid != -1) {
+-        kill (passwd_handler->backend_pid, 9);
+-    }
+-
+-    /* We must run free_passwd_resources here and not let our child
+-     * watcher do it, since it will access invalid memory after the
+-     * dialog has been closed and cleaned up.
+-     *
+-     * If we had more than a single thread we'd need to remove
+-     * the child watch before trying to kill the child.
+-     */
+-    free_passwd_resources (passwd_handler);
+-}
+-
+-static gboolean spawn_passwd (PasswdHandler *passwd_handler, const char * user_name, GError **error)
+-{
+-    gchar   *argv[3];
+-    gchar   *envp[1];
+-    gint    my_stdin, my_stdout, my_stderr;
+-
+-    argv[0] = "/usr/bin/passwd";    /* Is it safe to rely on a hard-coded path? */
+-    argv[1] = g_strdup_printf ("%s", user_name);
+-    argv[2] = NULL;
+-
+-//    g_warning("spawn_passwd: %s %s", argv[0], argv[1]);
+-
+-    envp[0] = NULL;                 /* If we pass an empty array as the environment,
+-                                         * will the childs environment be empty, and the
+-                                         * locales set to the C default? From the manual:
+-                                         * "If envp is NULL, the child inherits its
+-                                         * parent'senvironment."
+-                                         * If I'm wrong here, we somehow have to set
+-                                         * the locales here.
+-                                         */
+-
+-    //创建一个管道,进行通信,子进程执行passwd命令
+-    if (!g_spawn_async_with_pipes (NULL,                            /* Working directory */
+-                                   argv,                            /* Argument vector */
+-                                   envp,                            /* Environment */
+-                                   G_SPAWN_DO_NOT_REAP_CHILD,       /* Flags */
+-                                   NULL,                            /* Child setup (在子进程调用exec()之前,该函数会被调用)*/
+-                                   NULL,                            /* Data to child setup */
+-                                   &passwd_handler->backend_pid,    /* PID */
+-                                   &my_stdin,                       /* Stdin */
+-                                   &my_stdout,                      /* Stdout */
+-                                   &my_stderr,                      /* Stderr */
+-                                   error)) {                        /* GError */
+-
+-        /* An error occured */
+-        free_passwd_resources (passwd_handler);
+-
+-        return FALSE;
+-    }
+-
+-    /* 2>&1 */
+-    //复制文件描述符,也就是将stderr重定向到stdout
+-    if (dup2 (my_stderr, my_stdout) == -1) {
+-        /* Failed! */
+-        g_set_error_literal (error,
+-                             PASSWD_ERROR,
+-                             PASSWD_ERROR_BACKEND,
+-                             strerror (errno));
+-
+-        /* Clean up */
+-        stop_passwd (passwd_handler);
+-
+-        return FALSE;
+-    }
+-
+-    /* Open IO Channels */
+-    //指定一个文件描述符,创建一个IO Channel,默认使用UTF-8编码格式
+-    passwd_handler->backend_stdin = g_io_channel_unix_new (my_stdin);
+-    passwd_handler->backend_stdout = g_io_channel_unix_new (my_stdout);
+-
+-    /* Set raw encoding */
+-    /* Set nonblocking mode */
+-    //设置通道的编码方式为NULL,设置为非阻塞的方式
+-    if (g_io_channel_set_encoding (passwd_handler->backend_stdin, NULL, error) != G_IO_STATUS_NORMAL ||
+-            g_io_channel_set_encoding (passwd_handler->backend_stdout, NULL, error) != G_IO_STATUS_NORMAL ||
+-            g_io_channel_set_flags (passwd_handler->backend_stdin, G_IO_FLAG_NONBLOCK, error) != G_IO_STATUS_NORMAL ||
+-            g_io_channel_set_flags (passwd_handler->backend_stdout, G_IO_FLAG_NONBLOCK, error) != G_IO_STATUS_NORMAL ) {
+-
+-        /* Clean up */
+-        stop_passwd (passwd_handler);
+-        return FALSE;
+-    }
+-
+-    /* Turn off buffering */
+-    //只有通道的编码方式为NULL,才能设置缓冲状态为FASLE,其他任何编码,通道必须被缓冲,这里是为了清掉上次的密码
+-    g_io_channel_set_buffered (passwd_handler->backend_stdin, FALSE);
+-    g_io_channel_set_buffered (passwd_handler->backend_stdout, FALSE);
+-
+-    /* Add IO Channel watcher */
+-    //当IO通道的状态为G_IO_IN(从IO通道读数据时)或者G_IO_PRI(读紧急数据时)时,调用io_watch_stdout
+-    passwd_handler->backend_stdout_watch_id = g_io_add_watch (passwd_handler->backend_stdout,
+-                                                              G_IO_IN /*| G_IO_PRI*/,
+-                                                              (GIOFunc) io_watch_stdout, passwd_handler);
+-
+-    /* Add child watcher */
+-    //在指定pid的进程退出时,调用child_watch_cb(),进行错误检查,以及资源回收
+-    passwd_handler->backend_child_watch_id = g_child_watch_add (passwd_handler->backend_pid, (GChildWatchFunc) child_watch_cb, passwd_handler);
+-
+-    /* Success! */
+-
+-    return TRUE;
+-}
+-
+-static void update_password (PasswdHandler *passwd_handler)
+-{
+-        gchar   *s;
+-
+-        s = g_strdup_printf ("%s\n", passwd_handler->new_password);
+-
+-        g_queue_push_tail (passwd_handler->backend_stdin_queue, s);
+-        /* We need to allocate new space because io_queue_pop() g_free()s
+-         * every element of the queue after it's done */
+-        g_queue_push_tail (passwd_handler->backend_stdin_queue, g_strdup (s));
+-}
+-
+-gboolean passwd_change_password (PasswdHandler *passwd_handler, const char *user_name,
+-                        const char    *new_password,
+-                        PasswdCallback cb,
+-                        const gpointer user_data)
+-{
+-    GError *error = NULL;
+-
+-    passwd_handler->changing_password = TRUE;
+-
+-    passwd_handler->new_password = new_password;
+-    passwd_handler->chpasswd_cb = cb;
+-    passwd_handler->chpasswd_cb_data = user_data;
+-
+-    /* Stop passwd if an error occured and it is still running */
+-    if (passwd_handler->backend_state == PASSWD_STATE_ERR) {
+-
+-        /* Stop passwd, free resources */
+-        stop_passwd (passwd_handler);
+-    }
+-
+-    /* Check that the backend is still running, or that an error
+-         * has occured but it has not yet exited */
+-
+-    g_warning("passwd pid is: %d", passwd_handler->backend_pid);
+-    if (passwd_handler->backend_pid == -1) {
+-        /* If it is not, re-run authentication */
+-
+-        /* Spawn backend */
+-        stop_passwd (passwd_handler);
+-
+-        if (!spawn_passwd (passwd_handler, user_name, &error)) {
+-            g_error_free (error);
+-
+-            return FALSE;
+-        }
+-
+-        g_warning("------------1----------------------");
+-
+-        /* Add current and new passwords to queue */
+-        //将当前的密码和新密码入队,新密码会入队两次
+-        authenticate (passwd_handler);
+-        update_password (passwd_handler);
+-    } else {
+-        g_warning("-----2-----------");
+-        /* Only add new passwords to queue */
+-        update_password (passwd_handler);
+-    }
+-
+-    /* Pop new password through the backend. If user has no password, popping the queue
+-           would output current password, while 'passwd' is waiting for the new one. So wait
+-           for io_watch_stdout() to remove current password from the queue, and output
+-           the new one for us.*/
+-    //如果密码为空,将新进队列的密码,作为current_passwd弹出
+-    if (passwd_handler->current_password)
+-    {
+-        io_queue_pop (passwd_handler->backend_stdin_queue, passwd_handler->backend_stdin);
+-    }
+-
+-    /* Our IO watcher should now handle the rest */
+-
+-    return TRUE;
+-}
+-
+-//void passwd_authenticate (PasswdHandler *passwd_handler,
+-//                     const char    *current_password,
+-//                     PasswdCallback cb,
+-//                     const gpointer user_data)
+-//{
+-//        GError *error = NULL;
+-
+-//        /* Don't stop if we've already started chaging password */
+-//        if (passwd_handler->changing_password)
+-//                return;
+-
+-//        /* Clear data from possible previous attempts to change password */
+-//        passwd_handler->new_password = NULL;
+-//        passwd_handler->chpasswd_cb = NULL;
+-//        passwd_handler->chpasswd_cb_data = NULL;
+-//        g_queue_foreach (passwd_handler->backend_stdin_queue, (GFunc) g_free, NULL);
+-//        g_queue_clear (passwd_handler->backend_stdin_queue);
+-
+-//        passwd_handler->current_password = current_password;
+-//        passwd_handler->auth_cb = cb;
+-//        passwd_handler->auth_cb_data = user_data;
+-
+-//        /* Spawn backend */
+-//        //重新启动后台passwd
+-//        stop_passwd (passwd_handler);
+-
+-//        if (!spawn_passwd (passwd_handler, &error)) {
+-//                g_warning ("%s", error->message);
+-//                g_error_free (error);
+-//                return;
+-//        }
+-
+-//        //将current passwd从尾部插入队列
+-//        authenticate (passwd_handler);
+-
+-//        /* Our IO watcher should now handle the rest */
+-//}
+-
+-
+-PasswdHandler * passwd_init ()
+-{
+-    PasswdHandler *passwd_handler;
+-
+-    passwd_handler = g_new0 (PasswdHandler, 1);
+-
+-    /* Initialize backend_pid. -1 means the backend is not running */
+-    //-1代表后台还没启动
+-    passwd_handler->backend_pid = -1;
+-
+-    /* Initialize IO Channels */
+-    passwd_handler->backend_stdin = NULL;
+-    passwd_handler->backend_stdout = NULL;
+-
+-    /* Initialize write queue */
+-    passwd_handler->backend_stdin_queue = g_queue_new ();
+-
+-    /* Initialize watchers */
+-    passwd_handler->backend_child_watch_id = 0;
+-    passwd_handler->backend_stdout_watch_id = 0;
+-
+-    /* Initialize backend state */
+-    passwd_handler->backend_state = PASSWD_STATE_NONE;
+-    passwd_handler->changing_password = FALSE;
+-
+-    return passwd_handler;
+-}
+-
+-
+-void passwd_destroy (PasswdHandler *passwd_handler)
+-{
+-    g_queue_free (passwd_handler->backend_stdin_queue);
+-    stop_passwd (passwd_handler);
+-    g_free (passwd_handler);
+-}
+diff --git a/changeOtherUserPwd/run-passwd2.h b/changeOtherUserPwd/run-passwd2.h
+deleted file mode 100644
+index c333762..0000000
+--- a/changeOtherUserPwd/run-passwd2.h
++++ /dev/null
+@@ -1,35 +0,0 @@
+-#ifndef RUNPASSWD_H
+-#define RUNPASSWD_H
+-
+-
+-struct PasswdHandler;
+-
+-typedef struct PasswdHandler PasswdHandler;
+-
+-typedef void (*PasswdCallback) (PasswdHandler * passwd_handler, GError * error, const gpointer user_data);
+-
+-/* Error codes */
+-typedef enum {
+-    PASSWD_ERROR_REJECTED,		/* New password is not secure enough */
+-    PASSWD_ERROR_AUTH_FAILED,	/* Wrong old password, or PAM failure */
+-    PASSWD_ERROR_REAUTH_FAILED,	/* Password has changed since first authentication */
+-    PASSWD_ERROR_BACKEND,		/* Backend error */
+-    PASSWD_ERROR_UNKNOWN		/* General error */
+-} PasswdError;
+-
+-PasswdHandler *passwd_init                ();
+-
+-void           passwd_destroy             (PasswdHandler *passwd_handler);
+-
+-void           passwd_authenticate        (PasswdHandler *passwd_handler,
+-                                           const char    *current_password,
+-                                           PasswdCallback cb,
+-                                           gpointer       user_data);
+-
+-gboolean       passwd_change_password     (PasswdHandler *passwd_handler,
+-                                           const char    *user_name,
+-                                           const char    *new_password,
+-                                           PasswdCallback cb,
+-                                           const gpointer user_data);
+-
+-#endif // RUNPASSWD_H
+diff --git a/changeUserPwd/changeUserPwd.pro b/changeUserPwd/changeUserPwd.pro
+index 7d80db4..e5d50a6 100644
+--- a/changeUserPwd/changeUserPwd.pro
++++ b/changeUserPwd/changeUserPwd.pro
+@@ -32,9 +32,4 @@ INSTALLS += \
+     target \
+ 
+ 
+-SOURCES += \
+-        main.cpp \
+-        run-passwd.cpp
+-
+-HEADERS += \
+-    run-passwd.h
++SOURCES += main.cpp
+diff --git a/changeUserPwd/main.cpp b/changeUserPwd/main.cpp
+index 6602a1d..487a80d 100644
+--- a/changeUserPwd/main.cpp
++++ b/changeUserPwd/main.cpp
+@@ -1,7 +1,5 @@
+ #include <QCoreApplication>
+-
+ #include <glib.h>
+-#include "run-passwd.h"
+ 
+ /*using pam change password*/
+ #include <stdio.h>
+@@ -94,7 +92,7 @@ static int changeCurrent_conv (int num_msg, const struct pam_message **msg, stru
+ failed_conversation:
+     for (count=0; count < num_msg; count++) {
+         if (NULL != responses[count].resp) {
+-            memset (responses[count].resp, 0, strlen (responses[count].resp));
++            memset (responses[count].resp, 0, strnlen(responses[count].resp, sizeof(responses[count].resp)));
+             free (responses[count].resp);
+             responses[count].resp = NULL;
+         }
+@@ -106,6 +104,7 @@ failed_conversation:
+     return PAM_CONV_ERR;
+ }
+ 
++
+ int main(int argc, char *argv[])
+ {
+     struct pam_conv conv;
+@@ -152,82 +151,3 @@ int main(int argc, char *argv[])
+ }
+ 
+ /*end pam*/
+-
+-
+-PasswdHandler *passwd_handler = NULL;
+-
+-static void auth_cb (PasswdHandler *passwd_handler, GError *error, gpointer user_data);
+-static void chpasswd_cb (PasswdHandler *passwd_handler, GError *error, gpointer user_data);
+-
+-//int main(int argc, char *argv[])
+-//{
+-
+-//    if (argc != 3)
+-//    {
+-//        return -1;
+-//    }
+-
+-//    QCoreApplication a(argc, argv);
+-
+-//    passwd_handler = passwd_init ();
+-
+-//    passwd_authenticate (passwd_handler, argv[1], auth_cb, argv[2]);
+-
+-//    return a.exec();
+-//}
+-
+-static void
+-auth_cb (PasswdHandler *passwd_handler,
+-         GError        *error,
+-         gpointer       user_data)
+-{
+-    char *secondary_text;
+-    char * pwd = (char*) user_data;
+-
+-    if (error){
+-        secondary_text = error->message;
+-        char ** lines = g_strsplit(secondary_text, "\n", -1);
+-        printf("%s\n", lines[0]);
+-        qApp->exit(1);
+-    } else {
+-        passwd_change_password (passwd_handler, pwd, chpasswd_cb, NULL);
+-    }
+-
+-}
+-
+-/**
+- * @brief chpasswd_cb
+- * @param passwd_handler
+- * @param error
+- * @param user_data
+- */
+-static void
+-chpasswd_cb (PasswdHandler *passwd_handler,
+-             GError        *error,
+-             gpointer       user_data)
+-{
+-//    char *primary_text;
+-    char *secondary_text;
+-
+-    if (!error) {
+-        //finish_password_change (TRUE);
+-//        primary_text = "Success";
+-        secondary_text = "";
+-
+-        printf("%s\n", secondary_text);
+-
+-        qApp->exit(0);
+-    } else {
+-//        primary_text = "Failed";
+-        secondary_text = error->message;
+-
+-        char ** lines = g_strsplit(secondary_text, "\n", -1);
+-
+-        printf("%s\n", lines[0]);
+-
+-        passwd_destroy (passwd_handler);
+-
+-        qApp->exit(1);
+-    }
+-
+-}
+diff --git a/changeUserPwd/run-passwd.cpp b/changeUserPwd/run-passwd.cpp
+deleted file mode 100644
+index 6b74b43..0000000
+--- a/changeUserPwd/run-passwd.cpp
++++ /dev/null
+@@ -1,808 +0,0 @@
+-
+-
+-/* qt会将glib里的signals成员识别为宏,所以取消该宏
+- * 后面如果用到signals时,使用Q_SIGNALS代替即可
+- **/
+-#ifdef signals
+-#undef signals
+-#endif
+-
+-#include <glib.h>
+-#include <gio/gio.h>
+-
+-#include <unistd.h>
+-#include <string.h>
+-#include <errno.h>
+-#include <sys/wait.h>
+-#include <stdio.h>
+-
+-#include "run-passwd.h"
+-
+-
+-/* Buffer size for backend output */
+-#define BUFSIZE 1024
+-
+-/* Passwd states */
+-//后端passwd的状态,NONE应该是passwd还没有启动,ERROR表示报错但还没退出
+-typedef enum {
+-        PASSWD_STATE_NONE,              /* Passwd is not asking for anything */
+-        PASSWD_STATE_AUTH,              /* Passwd is asking for our current password */
+-        PASSWD_STATE_NEW,               /* Passwd is asking for our new password */
+-        PASSWD_STATE_RETYPE,            /* Passwd is asking for our retyped new password */
+-        PASSWD_STATE_ERR                /* Passwd reported an error but has not yet exited */
+-} PasswdState;
+-
+-struct PasswdHandler {
+-//        GtkBuilder  *ui;
+-
+-        const char *current_password;
+-        const char *new_password;
+-        const char *retyped_password;
+-
+-        /* Communication with the passwd program */
+-        GPid backend_pid;
+-
+-        GIOChannel *backend_stdin;
+-        GIOChannel *backend_stdout;
+-        GIOChannel *backend_stderr;
+-
+-        GQueue *backend_stdin_queue;            /* Write queue to backend_stdin */
+-
+-        /* GMainLoop IDs */
+-        guint backend_child_watch_id;           /* g_child_watch_add (PID) */
+-        guint backend_stdout_watch_id;          /* g_io_add_watch (stdout) */
+-
+-
+-        /* State of the passwd program */
+-        PasswdState backend_state;
+-        gboolean    changing_password;
+-
+-        PasswdCallback auth_cb;
+-        gpointer       auth_cb_data;
+-
+-        PasswdCallback chpasswd_cb;
+-        gpointer       chpasswd_cb_data;
+-};
+-
+-//GQuark是一个guint32
+-static GQuark
+-passwd_error_quark (void)
+-{
+-    static GQuark q = 0;
+-
+-    //返回错误的标识码
+-    if (q == 0) {
+-        q = g_quark_from_static_string("passwd_error");
+-    }
+-
+-    return q;
+-}
+-
+-/* Error handling */
+-#define PASSWD_ERROR (passwd_error_quark ())
+-
+-static void stop_passwd (PasswdHandler *passwd_handler);
+-
+-static void free_passwd_resources (PasswdHandler *passwd_handler);
+-
+-static gboolean io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *passwd_handler);
+-
+-static gboolean io_watch_stdout2 (GIOChannel *source, GIOCondition condition, PasswdHandler *passwd_handler);
+-static void free_passwd_resources (PasswdHandler *passwd_handler)
+-{
+-    GError  *error = NULL;
+-
+-    /* Remove the child watcher */
+-    if (passwd_handler->backend_child_watch_id != 0) {
+-
+-        g_source_remove (passwd_handler->backend_child_watch_id);
+-
+-        passwd_handler->backend_child_watch_id = 0;
+-    }
+-
+-
+-    /* Close IO channels (internal file descriptors are automatically closed) */
+-    if (passwd_handler->backend_stdin != NULL) {
+-
+-        if (g_io_channel_shutdown (passwd_handler->backend_stdin, TRUE, &error) != G_IO_STATUS_NORMAL) {
+-            g_warning ("Could not shutdown backend_stdin IO channel: %s", error->message);
+-            g_error_free (error);
+-            error = NULL;
+-        }
+-
+-        g_io_channel_unref (passwd_handler->backend_stdin);
+-        passwd_handler->backend_stdin = NULL;
+-    }
+-
+-    if (passwd_handler->backend_stdout != NULL) {
+-
+-        if (g_io_channel_shutdown (passwd_handler->backend_stdout, TRUE, &error) != G_IO_STATUS_NORMAL) {
+-            g_warning ("Could not shutdown backend_stdout IO channel: %s", error->message);
+-            g_error_free (error);
+-            error = NULL;
+-        }
+-
+-        g_io_channel_unref (passwd_handler->backend_stdout);
+-
+-        passwd_handler->backend_stdout = NULL;
+-    }
+-
+-    /* Remove IO watcher */
+-    if (passwd_handler->backend_stdout_watch_id != 0) {
+-
+-        g_source_remove (passwd_handler->backend_stdout_watch_id);
+-
+-        passwd_handler->backend_stdout_watch_id = 0;
+-    }
+-
+-    /* Close PID */
+-    //因为flag为G_SPAWN_DO_NOT_REAP_CHILD,所以child不会自动的被reap掉,需要在子进程上free
+-    if (passwd_handler->backend_pid != -1) {
+-
+-        g_spawn_close_pid (passwd_handler->backend_pid);
+-
+-        passwd_handler->backend_pid = -1;
+-    }
+-
+-    /* Clear backend state */
+-    passwd_handler->backend_state = PASSWD_STATE_NONE;
+-}
+-
+-static void authenticate (PasswdHandler *passwd_handler)
+-{
+-        gchar   *s;
+-
+-        s = g_strdup_printf ("%s\n", passwd_handler->current_password);
+-        g_queue_push_tail (passwd_handler->backend_stdin_queue, s);
+-}
+-
+-static void io_queue_pop (GQueue *queue, GIOChannel *channel)
+-{
+-    gchar   *buf;
+-    gsize   bytes_written;
+-    GError  *error = NULL;
+-
+-    buf = (gchar *)g_queue_pop_head (queue);
+-
+-    if (buf != NULL) {
+-        //将队列中的首元素写入到channel中
+-        if (g_io_channel_write_chars (channel, buf, -1, &bytes_written, &error) != G_IO_STATUS_NORMAL) {
+-            g_warning ("Could not write queue element \"%s\" to channel: %s", buf, error->message);
+-            g_error_free (error);
+-        }
+-
+-        /* Ensure passwords are cleared from memory */
+-        //清除内存中的passwords
+-        memset (buf, 0, strlen (buf));
+-        g_free (buf);
+-    }
+-
+-}
+-
+-static gboolean is_string_complete (gchar *str, ...)
+-{
+-    va_list ap;
+-    gchar   *arg;
+-
+-    if (strlen (str) == 0) {
+-        return FALSE;
+-    }
+-
+-    va_start (ap, str);
+-
+-    while ((arg = va_arg (ap, char *)) != NULL) {
+-        if (g_strrstr (str, arg) != NULL) {
+-            va_end (ap);
+-            return TRUE;
+-        }
+-    }
+-
+-    va_end (ap);
+-
+-    return FALSE;
+-}
+-
+-int isDomainUser(const char* username)
+-{
+-    FILE *fp;
+-    fp=fopen("/etc/passwd","r");
+-    if(fp == NULL)
+-    {
+-        return 1;
+-    }
+-    char buf[1024], name[128];
+-    while(!feof(fp))
+-    {
+-        if(fgets(buf,sizeof (buf),fp) == NULL)
+-        {
+-            break;
+-        }
+-        sscanf(buf,"%[^:]",name);
+-        if(strcmp(name,username) == 0)
+-        {
+-            fclose(fp);
+-            return 0;
+-        }
+-    }
+-    fclose(fp);
+-    return 1;
+-}
+-
+-
+-static gboolean io_watch_stdout (GIOChannel *source, GIOCondition condition, PasswdHandler *passwd_handler)
+-{
+-    static GString *str = NULL;     /* Persistent buffer */
+-
+-    gchar           buf[BUFSIZE];           /* Temporary buffer */
+-    gsize           bytes_read;
+-    GError          *gio_error = NULL;      /* Error returned by functions */
+-    GError          *error = NULL;          /* Error sent to callbacks */
+-
+-    //GtkBuilder      *dialog;
+-
+-    gboolean        reinit = FALSE;
+-
+-    /* Initialize buffer */
+-    if (str == NULL) {
+-        str = g_string_new ("");
+-    }
+-
+-    //dialog = passwd_handler->ui;
+-    //buf将保存从channel中读取到的数据,bytes_read表示从buf中读取的数据长度
+-    if (g_io_channel_read_chars (source, buf, BUFSIZE, &bytes_read, &gio_error)
+-            != G_IO_STATUS_NORMAL) {
+-        g_warning ("IO Channel read error: %s", gio_error->message);
+-        g_error_free (gio_error);
+-
+-        return TRUE;
+-    }
+-
+-    str = g_string_append_len (str, buf, bytes_read);
+-
+-    g_warning("----io_watch_stdout DEBUG#msg: %s\n", str->str);
+-    g_warning("----io_watch_stdout DEBUG#0msg: %d\n", passwd_handler->backend_state);
+-
+-    /* In which state is the backend? */
+-    switch (passwd_handler->backend_state) {
+-    case PASSWD_STATE_AUTH:
+-        /* Passwd is asking for our current password */
+-        if (is_string_complete (str->str, "assword: ", "failure", "wrong", "error", "failed", NULL)) {
+-
+-            if (g_strrstr (str->str, "New password: ") != NULL || g_strrstr (str->str, "New Password: ") != NULL) {
+-                /* Authentication successful */
+-
+-                passwd_handler->backend_state = PASSWD_STATE_NEW;
+-
+-                /* Trigger callback to update authentication status */
+-                if (passwd_handler->auth_cb)
+-                    passwd_handler->auth_cb (passwd_handler,
+-                                             NULL,
+-                                             passwd_handler->auth_cb_data);
+-
+-            } else {
+-                /* Authentication failed */
+-
+-                // 域用户出错只关注服务器消息(stdout),sdterr消息不关注
+-                if (isDomainUser(g_get_user_name())) {
+-                    break;
+-                }
+-
+-                error = g_error_new_literal (PASSWD_ERROR, PASSWD_ERROR_AUTH_FAILED,
+-                                             "Authentication token manipulation error!");
+-
+-                g_warning ("Change password failed: %s", error->message);
+-                passwd_handler->changing_password = FALSE;
+-
+-                /* This error can happen both while authenticating or while changing password:
+-                                         * if chpasswd_cb is set, this means we're already changing password */
+-                if (passwd_handler->chpasswd_cb)
+-                    passwd_handler->chpasswd_cb (passwd_handler,
+-                                                 error,
+-                                                 passwd_handler->auth_cb_data);
+-                else if (passwd_handler->auth_cb)
+-                    passwd_handler->auth_cb (passwd_handler,
+-                                             error,
+-                                             passwd_handler->auth_cb_data);
+-
+-                g_error_free (error);
+-            }
+-
+-            reinit = TRUE;
+-        }
+-        break;
+-    case PASSWD_STATE_NEW:
+-        /* Passwd is asking for our new password */
+-        if (is_string_complete (str->str, "assword: ", NULL)) {
+-            /* Advance to next state */
+-            passwd_handler->backend_state = PASSWD_STATE_RETYPE;
+-
+-            /* Pop retyped password from queue and into IO channel */
+-            io_queue_pop (passwd_handler->backend_stdin_queue, passwd_handler->backend_stdin);
+-
+-            reinit = TRUE;
+-        }
+-        break;
+-    case PASSWD_STATE_RETYPE:
+-        /* Passwd is asking for our retyped new password */
+-
+-        //                        if (is_string_complete (str->str,
+-        //                                                "successfully",
+-        //                                                "short",
+-        //                                                "longer",
+-        //                                                "palindrome",
+-        //                                                "dictionary",
+-        //                                                "simple",
+-        //                                                "simplistic",
+-        //                                                "similar",
+-        //                                                "different",
+-        //                                                "case",
+-        //                                                "wrapped",
+-        //                                                "recovered",
+-        //                                                "recent",
+-        //                                                "unchanged",
+-        //                                                "match",
+-        //                                                "1 numeric or special",
+-        //                                                "failure",
+-        //                                                "length",
+-        //                                                NULL)) {
+-        if (TRUE){
+-
+-            if (g_strrstr (str->str, "successfully") != NULL) {
+-                /* Hooray! */
+-
+-                /* Trigger callback to update status */
+-                if (passwd_handler->chpasswd_cb)
+-                    passwd_handler->chpasswd_cb (passwd_handler,
+-                                                 NULL,
+-                                                 passwd_handler->chpasswd_cb_data);
+-            } else {
+-                /* Ohnoes! */
+-
+-                // 域用户出错只关注服务器消息(stdout),sdterr消息不关注
+-                if (isDomainUser(g_get_user_name())) {
+-                    break;
+-                }
+-
+-                if (g_strrstr (str->str, "recovered") != NULL) {
+-                    /* What does this indicate?
+-                                                 * "Authentication information cannot be recovered?" from libpam? */
+-                    error = g_error_new_literal (PASSWD_ERROR, PASSWD_ERROR_UNKNOWN,
+-                                                 str->str);
+-                }/* else if (g_strrstr (str->str, "short") != NULL ||
+-                           g_strrstr (str->str, "longer") != NULL) {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_REJECTED,
+-                                         "New password length is too short!");
+-                } else if (g_strrstr (str->str, "palindrome") != NULL ||
+-                           g_strrstr (str->str, "simple") != NULL ||
+-                           g_strrstr (str->str, "simplistic") != NULL ||
+-                           g_strrstr (str->str, "dictionary") != NULL) {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_REJECTED,
+-                                         "The new password is too simple!");
+-                } else if (g_strrstr (str->str, "similar") != NULL ||
+-                           g_strrstr (str->str, "different") != NULL ||
+-                           g_strrstr (str->str, "case") != NULL ||
+-                           g_strrstr (str->str, "wrapped") != NULL) {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_REJECTED,
+-                                         "The new password is too similar to the old one!");
+-                } else if (g_strrstr (str->str, "1 numeric or special") != NULL) {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_REJECTED,
+-                                         "The new password must contain numbers or special characters!");
+-                } else if (g_strrstr (str->str, "unchanged") != NULL ||
+-                           g_strrstr (str->str, "match") != NULL) {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_REJECTED,
+-                                         "The new password is the same as the old one!");
+-                } else if (g_strrstr (str->str, "recent") != NULL) {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_REJECTED,
+-                                         "The new password has been used recently!");
+-                } else if (g_strrstr (str->str, "failure") != NULL) {
+-                    //Authentication failure
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_AUTH_FAILED,
+-                                         "Your password has been changed after you verify!");
+-                } */else {
+-                    error = g_error_new (PASSWD_ERROR, PASSWD_ERROR_UNKNOWN,
+-                                         str->str);
+-                }
+-
+-                /* At this point, passwd might have exited, in which case
+-                                         * child_watch_cb should clean up for us and remove this watcher.
+-                                         * On some error conditions though, passwd just re-prompts us
+-                                         * for our new password. */
+-                passwd_handler->backend_state = PASSWD_STATE_ERR;
+-
+-                passwd_handler->changing_password = FALSE;
+-
+-                /* Trigger callback to update status */
+-                if (passwd_handler->chpasswd_cb)
+-                    passwd_handler->chpasswd_cb (passwd_handler,
+-                                                 error,
+-                                                 passwd_handler->chpasswd_cb_data);
+-
+-                g_error_free (error);
+-
+-            }
+-
+-            reinit = TRUE;
+-
+-            /* child_watch_cb should clean up for us now */
+-        }
+-        break;
+-    case PASSWD_STATE_NONE:
+-        /* Passwd is not asking for anything yet */
+-        if (is_string_complete (str->str, "assword: ", NULL)) {
+-
+-            /* If the user does not have a password set,
+-                                 * passwd will immediately ask for the new password,
+-                                 * so skip the AUTH phase */
+-            if (is_string_complete (str->str, "new", "New", NULL)) {
+-                gchar *pw;
+-
+-                passwd_handler->backend_state = PASSWD_STATE_NEW;
+-
+-                /* since passwd didn't ask for our old password
+-                                         * in this case, simply remove it from the queue */
+-                pw = (gchar *)g_queue_pop_head (passwd_handler->backend_stdin_queue);
+-                g_free (pw);
+-
+-                /* Pop the IO queue, i.e. send new password */
+-                io_queue_pop (passwd_handler->backend_stdin_queue, passwd_handler->backend_stdin);
+-            } else {
+-
+-                passwd_handler->backend_state = PASSWD_STATE_AUTH;
+-
+-                /* Pop the IO queue, i.e. send current password */
+-                io_queue_pop (passwd_handler->backend_stdin_queue, passwd_handler->backend_stdin);
+-            }
+-
+-            reinit = TRUE;
+-        }
+-        break;
+-    default:
+-        /* Passwd has returned an error */
+-        reinit = TRUE;
+-        break;
+-    }
+-
+-    if (reinit) {
+-        g_string_free (str, TRUE);
+-        str = NULL;
+-    }
+-
+-    /* Continue calling us */
+-    return TRUE;
+-}
+-
+-static gboolean io_watch_stdout2 (GIOChannel *source, GIOCondition condition, PasswdHandler *passwd_handler)
+-{
+-    g_warning("----io_watch_stdout2 revieve server message");
+-    static GString *str = NULL;     /* Persistent buffer */
+-
+-    gchar           buf[BUFSIZE];           /* Temporary buffer */
+-    gsize           bytes_read;
+-    GError          *gio_error = NULL;      /* Error returned by functions */
+-    GError          *error = NULL;          /* Error sent to callbacks */
+-
+-    //GtkBuilder      *dialog;
+-
+-    gboolean        reinit = FALSE;
+-
+-    /* Initialize buffer */
+-    if (str == NULL) {
+-        str = g_string_new ("");
+-    }
+-
+-    //dialog = passwd_handler->ui;
+-    //buf将保存从channel中读取到的数据,bytes_read表示从buf中读取的数据长度
+-    if (g_io_channel_read_chars (source, buf, BUFSIZE, &bytes_read, &gio_error)
+-            != G_IO_STATUS_NORMAL) {
+-        g_warning ("IO Channel read error: %s", gio_error->message);
+-        g_error_free (gio_error);
+-
+-        return TRUE;
+-    }
+-
+-    str = g_string_append_len (str, buf, bytes_read);
+-
+-    g_warning("----io_watch_stdout2 DEBUG#msg2: %s\n", str->str);
+-
+-    if (is_string_complete (str->str, "Server message", "System is offline", NULL)) {
+-        error = g_error_new_literal (PASSWD_ERROR, PASSWD_ERROR_UNKNOWN,
+-                                     str->str);
+-
+-        g_warning ("Change password failed: %s", error->message);
+-        passwd_handler->changing_password = FALSE;
+-
+-        /* This error can happen both while authenticating or while changing password:
+-                                 * if chpasswd_cb is set, this means we're already changing password */
+-        if (passwd_handler->chpasswd_cb)
+-            passwd_handler->chpasswd_cb (passwd_handler,
+-                                         error,
+-                                         passwd_handler->auth_cb_data);
+-        else if (passwd_handler->auth_cb)
+-            passwd_handler->auth_cb (passwd_handler,
+-                                     error,
+-                                     passwd_handler->auth_cb_data);
+-
+-        g_error_free (error);
+-    }
+-
+-    return TRUE;
+-}
+-
+-/* Child watcher */
+-static void child_watch_cb (GPid pid, gint status, PasswdHandler *passwd_handler)
+-{
+-    //子进程正常结束为非0
+-    if (WIFEXITED (status)) {
+-        //取得子进程正常退出时返回的结束代码
+-        if (WEXITSTATUS (status) >= 255) {
+-            g_warning ("Child exited unexpectedly");
+-        }
+-    }
+-
+-    free_passwd_resources (passwd_handler);
+-}
+-
+-static void stop_passwd (PasswdHandler *passwd_handler)
+-{
+-    /* This is the standard way of returning from the dialog with passwd.
+-     * If we return this way we can safely kill passwd as it has completed
+-     * its task.
+-     */
+-
+-    if (passwd_handler->backend_pid != -1) {
+-        kill (passwd_handler->backend_pid, 9);
+-    }
+-
+-    /* We must run free_passwd_resources here and not let our child
+-     * watcher do it, since it will access invalid memory after the
+-     * dialog has been closed and cleaned up.
+-     *
+-     * If we had more than a single thread we'd need to remove
+-     * the child watch before trying to kill the child.
+-     */
+-    free_passwd_resources (passwd_handler);
+-}
+-
+-static gboolean spawn_passwd (PasswdHandler *passwd_handler, GError **error)
+-{
+-    gchar   *argv[2];
+-    gchar   *envp[1];
+-    gint    my_stdin, my_stdout, my_stderr;
+-
+-    argv[0] = "/usr/bin/passwd";    /* Is it safe to rely on a hard-coded path? */
+-    argv[1] = NULL;
+-
+-    envp[0] = NULL;                 /* If we pass an empty array as the environment,
+-                                         * will the childs environment be empty, and the
+-                                         * locales set to the C default? From the manual:
+-                                         * "If envp is NULL, the child inherits its
+-                                         * parent'senvironment."
+-                                         * If I'm wrong here, we somehow have to set
+-                                         * the locales here.
+-                                         */
+-
+-    //创建一个管道,进行通信,子进程执行passwd命令
+-    if (!g_spawn_async_with_pipes (NULL,                            /* Working directory */
+-                                   argv,                            /* Argument vector */
+-                                   envp,                            /* Environment */
+-                                   G_SPAWN_DO_NOT_REAP_CHILD,       /* Flags */
+-                                   NULL,                            /* Child setup (在子进程调用exec()之前,该函数会被调用)*/
+-                                   NULL,                            /* Data to child setup */
+-                                   &passwd_handler->backend_pid,    /* PID */
+-                                   &my_stdin,                       /* Stdin */
+-                                   &my_stdout,                      /* Stdout */
+-                                   &my_stderr,                      /* Stderr */
+-                                   error)) {                        /* GError */
+-
+-        /* An error occured */
+-        free_passwd_resources (passwd_handler);
+-
+-        return FALSE;
+-    }
+-
+-    /* 2>&1 */
+-    //复制文件描述符,也就是将stderr重定向到stdout
+-//    if (dup2 (my_stderr, my_stdout) == -1) {
+-//        /* Failed! */
+-//        g_set_error_literal (error,
+-//                             PASSWD_ERROR,
+-//                             PASSWD_ERROR_BACKEND,
+-//                             strerror (errno));
+-
+-//        /* Clean up */
+-//        stop_passwd (passwd_handler);
+-
+-//        return FALSE;
+-//    }
+-
+-    /* Open IO Channels */
+-    //指定一个文件描述符,创建一个IO Channel,默认使用UTF-8编码格式
+-    passwd_handler->backend_stdin = g_io_channel_unix_new (my_stdin);
+-    passwd_handler->backend_stdout = g_io_channel_unix_new (my_stdout);
+-    passwd_handler->backend_stderr = g_io_channel_unix_new(my_stderr);
+-
+-    /* Set raw encoding */
+-    /* Set nonblocking mode */
+-    //设置通道的编码方式为NULL,设置为非阻塞的方式
+-    if (g_io_channel_set_encoding (passwd_handler->backend_stdin, NULL, error) != G_IO_STATUS_NORMAL ||
+-            g_io_channel_set_encoding (passwd_handler->backend_stdout, NULL, error) != G_IO_STATUS_NORMAL ||
+-            g_io_channel_set_encoding (passwd_handler->backend_stderr, NULL, error) != G_IO_STATUS_NORMAL ||
+-            g_io_channel_set_flags (passwd_handler->backend_stdin, G_IO_FLAG_NONBLOCK, error) != G_IO_STATUS_NORMAL ||
+-            g_io_channel_set_flags (passwd_handler->backend_stdout, G_IO_FLAG_NONBLOCK, error) != G_IO_STATUS_NORMAL ||
+-            g_io_channel_set_flags (passwd_handler->backend_stderr, G_IO_FLAG_NONBLOCK, error) != G_IO_STATUS_NORMAL ) {
+-
+-        /* Clean up */
+-        stop_passwd (passwd_handler);
+-        return FALSE;
+-    }
+-
+-    /* Turn off buffering */
+-    //只有通道的编码方式为NULL,才能设置缓冲状态为FASLE,其他任何编码,通道必须被缓冲,这里是为了清掉上次的密码
+-    g_io_channel_set_buffered (passwd_handler->backend_stdin, FALSE);
+-    g_io_channel_set_buffered (passwd_handler->backend_stdout, FALSE);
+-    g_io_channel_set_buffered (passwd_handler->backend_stderr, FALSE);
+-
+-    /* Add IO Channel watcher */
+-    passwd_handler->backend_stdout_watch_id = g_io_add_watch (passwd_handler->backend_stdout,
+-                                                              G_IO_IN,
+-                                                              (GIOFunc) io_watch_stdout2, passwd_handler);
+-
+-    //当IO通道的状态为G_IO_IN(从IO通道读数据时)或者G_IO_PRI(读紧急数据时)时,调用io_watch_stdout
+-    passwd_handler->backend_stdout_watch_id = g_io_add_watch (passwd_handler->backend_stderr,
+-                                                              G_IO_IN /*| G_IO_PRI*/ ,
+-                                                              (GIOFunc) io_watch_stdout, passwd_handler);
+-
+-
+-    /* Add child watcher */
+-    //在指定pid的进程退出时,调用child_watch_cb(),进行错误检查,以及资源回收
+-    passwd_handler->backend_child_watch_id = g_child_watch_add (passwd_handler->backend_pid, (GChildWatchFunc) child_watch_cb, passwd_handler);
+-
+-    /* Success! */
+-
+-    return TRUE;
+-}
+-
+-static void update_password (PasswdHandler *passwd_handler)
+-{
+-        gchar   *s;
+-
+-        s = g_strdup_printf ("%s\n", passwd_handler->new_password);
+-
+-        g_queue_push_tail (passwd_handler->backend_stdin_queue, s);
+-        /* We need to allocate new space because io_queue_pop() g_free()s
+-         * every element of the queue after it's done */
+-        g_queue_push_tail (passwd_handler->backend_stdin_queue, g_strdup (s));
+-}
+-
+-gboolean passwd_change_password (PasswdHandler *passwd_handler,
+-                        const char    *new_password,
+-                        PasswdCallback cb,
+-                        const gpointer user_data)
+-{
+-    GError *error = NULL;
+-
+-    passwd_handler->changing_password = TRUE;
+-
+-    passwd_handler->new_password = new_password;
+-    passwd_handler->chpasswd_cb = cb;
+-    passwd_handler->chpasswd_cb_data = user_data;
+-
+-    /* Stop passwd if an error occured and it is still running */
+-    if (passwd_handler->backend_state == PASSWD_STATE_ERR) {
+-
+-        /* Stop passwd, free resources */
+-        stop_passwd (passwd_handler);
+-    }
+-
+-    /* Check that the backend is still running, or that an error
+-         * has occured but it has not yet exited */
+-    if (passwd_handler->backend_pid == -1) {
+-        /* If it is not, re-run authentication */
+-
+-        /* Spawn backend */
+-        stop_passwd (passwd_handler);
+-
+-        if (!spawn_passwd (passwd_handler, &error)) {
+-            g_error_free (error);
+-
+-            return FALSE;
+-        }
+-
+-        /* Add current and new passwords to queue */
+-        //将当前的密码和新密码入队,新密码会入队两次
+-        authenticate (passwd_handler);
+-        update_password (passwd_handler);
+-    } else {
+-        /* Only add new passwords to queue */
+-        update_password (passwd_handler);
+-    }
+-
+-    /* Pop new password through the backend. If user has no password, popping the queue
+-           would output current password, while 'passwd' is waiting for the new one. So wait
+-           for io_watch_stdout() to remove current password from the queue, and output
+-           the new one for us.*/
+-    //如果密码为空,将新进队列的密码,作为current_passwd弹出
+-    if (passwd_handler->current_password)
+-    {
+-        io_queue_pop (passwd_handler->backend_stdin_queue, passwd_handler->backend_stdin);
+-    }
+-
+-    /* Our IO watcher should now handle the rest */
+-
+-    return TRUE;
+-}
+-
+-void passwd_authenticate (PasswdHandler *passwd_handler,
+-                     const char    *current_password,
+-                     PasswdCallback cb,
+-                     const gpointer user_data)
+-{
+-        GError *error = NULL;
+-
+-        /* Don't stop if we've already started chaging password */
+-        if (passwd_handler->changing_password)
+-                return;
+-
+-        /* Clear data from possible previous attempts to change password */
+-        passwd_handler->new_password = NULL;
+-        passwd_handler->chpasswd_cb = NULL;
+-        passwd_handler->chpasswd_cb_data = NULL;
+-        g_queue_foreach (passwd_handler->backend_stdin_queue, (GFunc) g_free, NULL);
+-        g_queue_clear (passwd_handler->backend_stdin_queue);
+-
+-        passwd_handler->current_password = current_password;
+-        passwd_handler->auth_cb = cb;
+-        passwd_handler->auth_cb_data = user_data;
+-
+-        /* Spawn backend */
+-        //重新启动后台passwd
+-        stop_passwd (passwd_handler);
+-
+-        if (!spawn_passwd (passwd_handler, &error)) {
+-                g_warning ("%s", error->message);
+-                g_error_free (error);
+-                return;
+-        }
+-
+-        //将current passwd从尾部插入队列
+-        authenticate (passwd_handler);
+-
+-        /* Our IO watcher should now handle the rest */
+-}
+-
+-
+-PasswdHandler * passwd_init ()
+-{
+-    PasswdHandler *passwd_handler;
+-
+-    passwd_handler = g_new0 (PasswdHandler, 1);
+-
+-    /* Initialize backend_pid. -1 means the backend is not running */
+-    //-1代表后台还没启动
+-    passwd_handler->backend_pid = -1;
+-
+-    /* Initialize IO Channels */
+-    passwd_handler->backend_stdin = NULL;
+-    passwd_handler->backend_stdout = NULL;
+-
+-    /* Initialize write queue */
+-    passwd_handler->backend_stdin_queue = g_queue_new ();
+-
+-    /* Initialize watchers */
+-    passwd_handler->backend_child_watch_id = 0;
+-    passwd_handler->backend_stdout_watch_id = 0;
+-
+-    /* Initialize backend state */
+-    passwd_handler->backend_state = PASSWD_STATE_NONE;
+-    passwd_handler->changing_password = FALSE;
+-
+-    return passwd_handler;
+-}
+-
+-
+-void passwd_destroy (PasswdHandler *passwd_handler)
+-{
+-    g_queue_free (passwd_handler->backend_stdin_queue);
+-    stop_passwd (passwd_handler);
+-    g_free (passwd_handler);
+-}
+diff --git a/changeUserPwd/run-passwd.h b/changeUserPwd/run-passwd.h
+deleted file mode 100644
+index 513d05b..0000000
+--- a/changeUserPwd/run-passwd.h
++++ /dev/null
+@@ -1,34 +0,0 @@
+-#ifndef RUNPASSWD_H
+-#define RUNPASSWD_H
+-
+-
+-struct PasswdHandler;
+-
+-typedef struct PasswdHandler PasswdHandler;
+-
+-typedef void (*PasswdCallback) (PasswdHandler * passwd_handler, GError * error, const gpointer user_data);
+-
+-/* Error codes */
+-typedef enum {
+-    PASSWD_ERROR_REJECTED,		/* New password is not secure enough */
+-    PASSWD_ERROR_AUTH_FAILED,	/* Wrong old password, or PAM failure */
+-    PASSWD_ERROR_REAUTH_FAILED,	/* Password has changed since first authentication */
+-    PASSWD_ERROR_BACKEND,		/* Backend error */
+-    PASSWD_ERROR_UNKNOWN		/* General error */
+-} PasswdError;
+-
+-PasswdHandler *passwd_init                ();
+-
+-void           passwd_destroy             (PasswdHandler *passwd_handler);
+-
+-void           passwd_authenticate        (PasswdHandler *passwd_handler,
+-                                           const char    *current_password,
+-                                           PasswdCallback cb,
+-                                           gpointer       user_data);
+-
+-gboolean       passwd_change_password     (PasswdHandler *passwd_handler,
+-                                           const char    *new_password,
+-                                           PasswdCallback cb,
+-                                           const gpointer user_data);
+-
+-#endif // RUNPASSWD_H
+diff --git a/checkUserPwdWithPAM/checkUserPwd/auth-pam.cpp b/checkUserPwdWithPAM/checkUserPwd/auth-pam.cpp
+index 7a2059d..c044ca8 100644
+--- a/checkUserPwdWithPAM/checkUserPwd/auth-pam.cpp
++++ b/checkUserPwdWithPAM/checkUserPwd/auth-pam.cpp
+@@ -224,7 +224,7 @@ writeData(int fd, const void *buf, ssize_t count)
+ static void
+ writeString(int fd, const char *data)
+ {
+-    int length = data ? strlen(data) : -1;
++    int length = data ? strnlen(data, sizeof(data)) : -1;
+     writeData(fd, &length, sizeof(length));
+     if(data)
+         writeData(fd, data, sizeof(char) * length);
+@@ -277,6 +277,10 @@ void AuthPAM::_authenticate(const char *userName)
+ 
+     authRet = pam_authenticate(pamh, 0);
+ 
++    if (pam_acct_mgmt(pamh, 0) != PAM_SUCCESS) {
++        printf("pam_acct_mgmt failed\n");
++    }
++
+     ret = pam_get_item(pamh, PAM_USER, (const void **)&newUser);
+     if(ret != PAM_SUCCESS)
+     {
+diff --git a/checkUserPwdWithPAM/childCheckPwdWithPAM/main.cpp b/checkUserPwdWithPAM/childCheckPwdWithPAM/main.cpp
+index ed9d883..e8b3646 100644
+--- a/checkUserPwdWithPAM/childCheckPwdWithPAM/main.cpp
++++ b/checkUserPwdWithPAM/childCheckPwdWithPAM/main.cpp
+@@ -43,7 +43,7 @@ writeData(int fd, const void *buf, ssize_t count)
+ static void
+ writeString(int fd, const char *data)
+ {
+-    int length = data ? strlen(data) : -1;
++    int length = data ? strnlen(data, sizeof(data)) : -1;
+     writeData(fd, &length, sizeof(length));
+     if(data)
+         writeData(fd, data, sizeof(char) * length);
+@@ -124,12 +124,18 @@ _authenticate(const char *userName)
+ 
+     authRet = pam_authenticate(pamh, 0);
+ 
++    if (pam_acct_mgmt(pamh, 0) != PAM_SUCCESS) {
++        printf("pam_acct_mgmt failed\n");
++    }
++
+     ret = pam_get_item(pamh, PAM_USER, (const void **)&newUser);
+     if(ret != PAM_SUCCESS)
+     {
+         pam_end(pamh, 0);
+         printf("failed to get username\n");
+     }
++
++
+     free(newUser);
+     newUser = NULL;
+ //    fprintf(stderr, "authentication result: %d\n", authRet);
+diff --git a/plugins/account/userinfo/kylin-chkname.cpp b/plugins/account/userinfo/kylin-chkname.cpp
+index 59477a7..85861ed 100644
+--- a/plugins/account/userinfo/kylin-chkname.cpp
++++ b/plugins/account/userinfo/kylin-chkname.cpp
+@@ -26,9 +26,9 @@ static int reserve_check(const char *name)
+     }
+ 
+     while (fgets(buf, USERNAME_MAXLEN+2, fp) != NULL) {
+-        if (!strlen(buf) || !strncmp(buf, "#", 1))
++        if (!strnlen(buf, sizeof(buf)) || !strncmp(buf, "#", 1))
+            continue;
+-        buf[strlen(buf) - 1] = '\0';
++        buf[strnlen(buf, sizeof(buf)) - 1] = '\0';
+         if (!strcmp(name, buf)) {
+             find = 1;
+             break;
+@@ -54,7 +54,7 @@ int  kylin_username_check(const char *name, int reserve)
+     if (name == NULL)
+         return NAME_ERROR;
+ 
+-    if (strlen(name) == 0 || strlen(name) > USERNAME_MAXLEN)
++    if (strnlen(name, sizeof(name)) == 0 || strnlen(name, sizeof(name)) > USERNAME_MAXLEN)
+         return LENGTH_ERROR;
+ 
+     if (reserve && reserve_check(name)) {
+diff --git a/plugins/account/userinfo_intel/auth-pam.cpp b/plugins/account/userinfo_intel/auth-pam.cpp
+deleted file mode 100644
+index 495710c..0000000
+--- a/plugins/account/userinfo_intel/auth-pam.cpp
++++ /dev/null
+@@ -1,337 +0,0 @@
+-/*
+- * Copyright (C) 2018 Tianjin KYLIN Information Technology 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, 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 <http://www.gnu.org/licenses/>.
+- *
+-**/
+-#include "auth-pam.h"
+-
+-#include <QDebug>
+-
+-#include <unistd.h>
+-#include <wait.h>
+-#include <sys/prctl.h>
+-#define PAM_SERVICE_NAME "ukui-screensaver-qt"
+-
+-//通信管道的文件描述符
+-int toParent[2], toChild[2];
+-
+-static void writeData(int fd, const void *buf, ssize_t count);
+-static void writeString(int fd, const char *data);
+-static int readData(int fd, void *buf, size_t count);
+-static char * readString(int fd);
+-static int pam_conversation(int msgLength, const struct pam_message **msg,
+-                PAM_RESPONSE **resp, void *appData);
+-static void sigchld_handler(int signo);
+-
+-AuthPAM::AuthPAM(QObject *parent)
+-    : Auth(parent),
+-      pid(0),
+-      nPrompts(0),
+-      _isAuthenticated(false),
+-      _isAuthenticating(false)
+-{
+-    signal(SIGCHLD, sigchld_handler);
+-}
+-
+-void AuthPAM::authenticate(const QString &userName)
+-{
+-    stopAuth();
+-
+-    if(pipe(toParent) || pipe(toChild))
+-        qDebug()<< "create pipe failed: " << strerror(errno);
+-    if((pid = fork()) < 0)
+-    {
+-        qDebug() << "fork error: " << strerror(errno);
+-    }
+-    else if(pid == 0)
+-    {
+-	prctl(PR_SET_PDEATHSIG, SIGHUP);
+-        close(toParent[0]);
+-        close(toChild[1]);
+-       _authenticate(userName.toLocal8Bit().data());
+-    }
+-    else
+-    {
+-        close(toParent[1]);
+-        close(toChild[0]);
+-        _isAuthenticating = true;
+-        notifier = new QSocketNotifier(toParent[0], QSocketNotifier::Read);
+-        connect(notifier, &QSocketNotifier::activated, this, &AuthPAM::onSockRead);
+-    }
+-}
+-
+-void AuthPAM::stopAuth()
+-{
+-    if(pid != 0)
+-    {
+-        messageList.clear();
+-        responseList.clear();
+-        _isAuthenticating = false;
+-        _isAuthenticated = false;
+-        nPrompts = 0;
+-
+-        ::kill(pid, SIGKILL);
+-
+-        close(toParent[0]);
+-        close(toChild[1]);
+-        if(notifier){
+-            notifier->deleteLater();
+-            notifier = nullptr;
+-        }
+-        pid = 0;
+-    }
+-}
+-
+-void AuthPAM::respond(const QString &response)
+-{
+-    nPrompts--;
+-    responseList.push_back(response);
+-
+-//    for(auto msg : messageList)
+-//        qDebug() << msg.msg;
+-//    qDebug() << responseList;
+-    qDebug() << nPrompts;
+-
+-    if(nPrompts == 0)
+-    {
+-        //发送响应到子进程
+-        int j = 0;
+-        PAM_RESPONSE *resp = (PAM_RESPONSE*)calloc(messageList.size(), sizeof(PAM_RESPONSE));
+-        //响应的数量和消息的数量一致,如果消息类型不是PROMPT,则响应是空的
+-        for(int i = 0; i < messageList.size(); i++)
+-        {
+-            struct pam_message message = messageList[i];
+-            PAM_RESPONSE *r = &resp[i];
+-            if(message.msg_style == PAM_PROMPT_ECHO_OFF
+-                    || message.msg_style == PAM_PROMPT_ECHO_ON)
+-            {
+-                int respLength = responseList[j].length() + 1;
+-                r->resp = (char *)malloc(sizeof(char) * respLength);
+-                memcpy(r->resp, responseList[j].toLocal8Bit().data(), respLength);
+-                j++;
+-            }
+-        }
+-         _respond(resp);
+-         free(resp);
+-         messageList.clear();
+-         responseList.clear();
+-    }
+-}
+-
+-bool AuthPAM::isAuthenticated()
+-{
+-    return _isAuthenticated;
+-}
+-
+-bool AuthPAM::isAuthenticating()
+-{
+-    return _isAuthenticating;
+-}
+-
+-
+-void AuthPAM::onSockRead()
+-{
+-//    qDebug() << "has message";
+-    int msgLength;
+-    int authComplete;
+-    readData(toParent[0], &authComplete, sizeof(authComplete));
+-
+-    if(authComplete)
+-    {
+-        int authRet;
+-        if(readData(toParent[0], (void*)&authRet, sizeof(authRet)) <= 0)
+-            qDebug() << "get authentication result failed: " << strerror(errno);
+-        qDebug() << "result: " << authRet;
+-        _isAuthenticated = (authRet == PAM_SUCCESS);
+-        _isAuthenticating = false;
+-        if(notifier){
+-            notifier->deleteLater();
+-            notifier = nullptr;
+-        }
+-        Q_EMIT authenticateComplete();
+-
+-    }
+-    else
+-    {
+-        readData(toParent[0], &msgLength, sizeof(msgLength));
+-//        qDebug() << "message length: " << msgLength;
+-
+-        for(int i = 0; i < msgLength; i++)
+-        {
+-            //读取message
+-            struct pam_message message;
+-            readData(toParent[0], &message.msg_style, sizeof(message.msg_style));
+-            message.msg = readString(toParent[0]);
+-
+-            qDebug() << message.msg;
+-
+-            messageList.push_back(message);
+-
+-            switch (message.msg_style)
+-            {
+-            case PAM_PROMPT_ECHO_OFF:
+-                nPrompts++;
+-                Q_EMIT showPrompt(message.msg, Auth::PromptTypeSecret);
+-                break;
+-            case PAM_PROMPT_ECHO_ON:
+-                nPrompts++;
+-                Q_EMIT showPrompt(message.msg, Auth::PromptTypeQuestion);
+-                break;
+-            case PAM_ERROR_MSG:
+-                Q_EMIT showMessage(message.msg, Auth::MessageTypeInfo);
+-                break;
+-            case PAM_TEXT_INFO:
+-                Q_EMIT showMessage(message.msg, Auth::MessageTypeError);
+-                break;
+-            }
+-        }
+-
+-        if(nPrompts == 0)
+-        {
+-            //不需要响应,发送一个空的
+-            PAM_RESPONSE *response = (PAM_RESPONSE*)calloc(messageList.size(), sizeof(PAM_RESPONSE));
+-            _respond(response);
+-            free(response);
+-            messageList.clear();
+-        }
+-    }
+-}
+-
+-static void
+-writeData(int fd, const void *buf, ssize_t count)
+-{
+-    if(write(fd, buf, count) != count)
+-        qDebug() << "write to parent failed: " << strerror(errno);
+-}
+-
+-static void
+-writeString(int fd, const char *data)
+-{
+-    int length = data ? strlen(data) : -1;
+-    writeData(fd, &length, sizeof(length));
+-    if(data)
+-        writeData(fd, data, sizeof(char) * length);
+-}
+-
+-static int
+-readData(int fd, void *buf, size_t count)
+-{
+-    ssize_t nRead = read(fd, buf, count);
+-    if(nRead < 0)
+-        qDebug() << "read data failed: " << strerror(errno);
+-    return nRead;
+-}
+-
+-static char *
+-readString(int fd)
+-{
+-    int length;
+-
+-    if(readData(fd, &length, sizeof(length)) <= 0)
+-        return NULL;
+-    if(length <= 0)
+-        return NULL;
+-
+-    char *value = (char *)malloc(sizeof(char) * (length + 1));
+-    readData(fd, value, length);
+-    value[length] = '\0';
+-
+-    return value;
+-}
+-
+-void AuthPAM::_authenticate(const char *userName)
+-{
+-    qDebug() << "authenticate " << userName;
+-
+-    pam_handle_t *pamh = NULL;
+-    char *newUser;
+-    int ret;
+-    int authRet;
+-    struct pam_conv conv;
+-
+-    conv.conv = pam_conversation;
+-    conv.appdata_ptr = NULL;
+-
+-    ret = pam_start(PAM_SERVICE_NAME, userName, &conv, &pamh);
+-    if(ret != PAM_SUCCESS)
+-    {
+-        qDebug() << "failed to start PAM: " << pam_strerror(NULL, ret);
+-    }
+-
+-    authRet = pam_authenticate(pamh, 0);
+-
+-    ret = pam_get_item(pamh, PAM_USER, (const void **)&newUser);
+-    if(ret != PAM_SUCCESS)
+-    {
+-        pam_end(pamh, 0);
+-        qDebug() << "failed to get username";
+-    }
+-    free(newUser);
+-    fprintf(stderr, "authentication result: %d\n", authRet);
+-
+-    // 发送认证结果
+-    int authComplete = 1;
+-    writeData(toParent[1], (const void*)&authComplete, sizeof(authComplete));
+-    writeData(toParent[1], (const void *)&authRet, sizeof(authRet));
+-    qDebug() << "--- 认证完成";
+-    _exit(EXIT_SUCCESS);
+-}
+-
+-void AuthPAM::_respond(const PAM_RESPONSE *response)
+-{
+-    for(int i = 0; i < messageList.size(); i++)
+-    {
+-        const PAM_RESPONSE *resp = &response[i];
+-        writeData(toChild[1], (const void *)&resp->resp_retcode,
+-                sizeof(resp->resp_retcode));
+-        writeString(toChild[1], resp->resp);
+-    }
+-}
+-
+-
+-static int
+-pam_conversation(int msgLength, const struct pam_message **msg,
+-                PAM_RESPONSE **resp, void */*appData*/)
+-{
+-    PAM_RESPONSE *response = (PAM_RESPONSE*)calloc(msgLength,sizeof(PAM_RESPONSE));
+-
+-    int authComplete = 0;
+-    writeData(toParent[1], (const void*)&authComplete, sizeof(authComplete));
+-    writeData(toParent[1], (const void*)&msgLength, sizeof(msgLength));
+-    //发送pam消息
+-    for(int i = 0; i < msgLength; i++)
+-    {
+-        const struct pam_message *m = msg[i];
+-        writeData(toParent[1], (const void *)&m->msg_style, sizeof(m->msg_style));
+-        writeString(toParent[1], m->msg);
+-    }
+-    //读取响应
+-    for(int i = 0; i < msgLength; i++)
+-    {
+-        PAM_RESPONSE *r = &response[i];
+-        readData(toChild[0], &r->resp_retcode, sizeof(r->resp_retcode));
+-        r->resp = readString(toChild[0]);
+-    }
+-    *resp = response;
+-    return PAM_SUCCESS;
+-}
+-
+-void sigchld_handler(int signo)
+-{
+-    if(signo == SIGCHLD)
+-    {
+-        ::waitpid(-1, NULL, WNOHANG);
+-    }
+-}
+diff --git a/plugins/account/userinfo_intel/auth-pam.h b/plugins/account/userinfo_intel/auth-pam.h
+deleted file mode 100644
+index 3fba36c..0000000
+--- a/plugins/account/userinfo_intel/auth-pam.h
++++ /dev/null
+@@ -1,59 +0,0 @@
+-/*
+- * Copyright (C) 2018 Tianjin KYLIN Information Technology 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, 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 <http://www.gnu.org/licenses/>.
+- *
+-**/
+-#ifndef AUTHPAM_H
+-#define AUTHPAM_H
+-#include "auth.h"
+-#include <QSocketNotifier>
+-#include <QList>
+-
+-#include <security/pam_appl.h>
+-
+-typedef struct pam_message PAM_MESSAGE;
+-typedef struct pam_response PAM_RESPONSE;
+-
+-class AuthPAM : public Auth
+-{
+-    Q_OBJECT
+-public:
+-    AuthPAM(QObject *parent = nullptr);
+-
+-    void authenticate(const QString &userName);
+-    void stopAuth();
+-    void respond(const QString &response);
+-    bool isAuthenticated();
+-    bool isAuthenticating();
+-
+-private:
+-    void _authenticate(const char *userName);
+-    void _respond(const struct pam_response *response);
+-
+-private Q_SLOTS:
+-    void onSockRead();
+-
+-private:
+-    QString userName;
+-    pid_t pid;
+-    QSocketNotifier *notifier;
+-    int nPrompts;
+-    QStringList responseList;
+-    QList<PAM_MESSAGE> messageList;
+-    bool _isAuthenticated;  //认证结果
+-    bool _isAuthenticating;
+-};
+-
+-#endif // AUTHPAM_H
+diff --git a/plugins/account/userinfo_intel/auth.h b/plugins/account/userinfo_intel/auth.h
+deleted file mode 100644
+index b2f8193..0000000
+--- a/plugins/account/userinfo_intel/auth.h
++++ /dev/null
+@@ -1,62 +0,0 @@
+-/*
+- * Copyright (C) 2018 Tianjin KYLIN Information Technology 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, 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 <http://www.gnu.org/licenses/>.
+- *
+-**/
+-#ifndef AUTH_H
+-#define AUTH_H
+-
+-#ifndef QT_NO_KEYWORDS
+-#define QT_NO_KEYWORDS
+-#endif
+-
+-#include <QObject>
+-
+-class Auth : public QObject
+-{
+-    Q_OBJECT
+-
+-    Q_ENUMS(PromptType MessageType)
+-public:
+-    explicit Auth(QObject *parent = nullptr)
+-        : QObject(parent)
+-    {
+-
+-    }
+-
+-    enum PromptType {
+-        PromptTypeQuestion,
+-        PromptTypeSecret
+-    };
+-    enum MessageType {
+-        MessageTypeInfo,
+-        MessageTypeError
+-    };
+-
+-
+-Q_SIGNALS:
+-    void showPrompt(const QString &prompt, Auth::PromptType type);
+-    void showMessage(const QString &message, Auth::MessageType type);
+-    void authenticateComplete();
+-
+-public:
+-    virtual void authenticate(const QString &userName) = 0;
+-    virtual void stopAuth() = 0;
+-    virtual void respond(const QString &response) = 0;
+-    virtual bool isAuthenticating() = 0;
+-    virtual bool isAuthenticated() = 0;
+-};
+-
+-#endif // AUTH_H
+diff --git a/plugins/account/userinfo_intel/changefaceinteldialog.cpp b/plugins/account/userinfo_intel/changefaceinteldialog.cpp
+deleted file mode 100644
+index 1bf77c8..0000000
+--- a/plugins/account/userinfo_intel/changefaceinteldialog.cpp
++++ /dev/null
+@@ -1,471 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "changefaceinteldialog.h"
+-#include "ui_changefaceinteldialog.h"
+-
+-#include "flowlayout.h"
+-#include "elipsemaskwidget.h"
+-
+-#include <QDebug>
+-#include <QMessageBox>
+-#include <QFile>
+-
+-#define FACEPATH "/usr/share/ukui/faces/"
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-ChangeFaceIntelDialog::ChangeFaceIntelDialog(QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::ChangeFaceIntelDialog)
+-{
+-    ui->setupUi(this);
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    //~ contents_path /UserinfoIntel/Change User Face
+-    ui->titleLabel->setText(tr("Change User Face"));
+-
+-    ui->titleLabel->setStyleSheet("QLabel{font-size: 18px; color: palette(windowText);}");
+-    m_closeBtn = new QPushButton(this);
+-    m_closeBtn->setProperty("useIconHighlightEffect", true);
+-    m_closeBtn->setProperty("iconHighlightEffectMode", 1);
+-    m_closeBtn->setFlat(true);
+-    m_closeBtn->setIcon(QIcon(":/img/plugins/userinfo_intel/close.svg"));
+-    m_closeBtn->setFixedSize(36, 36);
+-    m_closeBtn->setAutoDefault(false);
+-    ui->horizontalLayout_2->addWidget(m_closeBtn);
+-
+-//    //分割线,其颜色应由主题控制,此处设置样式仅为预览布局效果
+-//    ui->line_1->setStyleSheet(".QWidget{background: rgba(66,77,89,1); ipacity: 0.1;}");
+-//    ui->line_2->setStyleSheet(".QWidget{background: rgba(66,77,89,1); ipacity: 0.1;}");
+-
+-//    ui->frame->setStyleSheet("QFrame{background: #ffffff; border: none; border-radius: 6px;}");
+-//    ui->closeBtn->setStyleSheet("QPushButton{background: #ffffff; border: none;}");
+-
+-    ui->historyFacesWidget->setContentsMargins(2,0,0,0);
+-
+-    historyFacesFlowLayout = new FlowLayout(ui->historyFacesWidget);
+-    ui->historyFacesWidget->setLayout(historyFacesFlowLayout);
+-
+-    const QByteArray id_1(UKUI_QT_STYLE);
+-    if (QGSettings::isSchemaInstalled(id_1)) {
+-        m_style = new QGSettings(id_1);
+-        QString themeName = m_style->get(UKUI_STYLE_KEY).toString();
+-        if( themeName == "ukui-light" || themeName == "ukui-default" | themeName == "ukui" )
+-            m_isNightMode = false;
+-        else
+-            m_isNightMode = true;
+-        qDebug() << "m_isNightMode = " << m_isNightMode;
+-        connect(m_style, &QGSettings::changed, this, &ChangeFaceIntelDialog::getThemeStyle);
+-    }
+-
+-    btnsGroup = new QButtonGroup;
+-//    ElipseMaskWidget * cfMaskWidget = new ElipseMaskWidget(ui->faceLabel);
+-////    cfMaskWidget->setBgColor("#F4F4F4");
+-//    cfMaskWidget->setGeometry(0, 0, ui->faceLabel->width(), ui->faceLabel->height());
+-
+-    loadSystemFaces();
+-
+-    connect(m_closeBtn, &QPushButton::clicked, [=]{
+-        close();
+-    });
+-    connect(ui->cancelBtn, &QPushButton::clicked, [=]{
+-        close();
+-    });
+-//    connect(ui->customfaceBtn, &QPushButton::clicked, [=]{
+-//        showLocalFaceDialog();
+-//    });
+-}
+-
+-ChangeFaceIntelDialog::~ChangeFaceIntelDialog()
+-{
+-    delete ui;
+-}
+-
+-void ChangeFaceIntelDialog::getThemeStyle(QString key)
+-{
+-    if(key == "styleName") {
+-        QString themeName = m_style->get(UKUI_STYLE_KEY).toString();
+-        if( themeName == "ukui-light" || themeName == "ukui-default" | themeName == "ukui" )
+-            m_isNightMode = false;
+-        else
+-            m_isNightMode = true;
+-        qDebug() << "m_isNightMode = " << m_isNightMode;
+-        update();
+-    }
+-}
+-
+-void ChangeFaceIntelDialog::loadSystemFaces(){
+-
+-    ui->facesWidget->setContentsMargins(0,4,0,0);
+-
+-    FlowLayout * facesFlowLayout = new FlowLayout(ui->facesWidget);
+-    ui->facesWidget->setLayout(facesFlowLayout);
+-
+-    //遍历头像目录
+-    QStringList facesList;
+-    QDir facesDir = QDir(FACEPATH);
+-    foreach (QString filename, facesDir.entryList(QDir::Files)){
+-//        facesList.append(FACEPATH + filename);
+-        QString fullface = QString("%1%2").arg(FACEPATH).arg(filename);
+-
+-        if (fullface.endsWith("commercial.png") || fullface.endsWith("community.png"))
+-            continue;
+-
+-        QPushButton * button = new QPushButton;
+-        button->setStyleSheet("background-color:transparent");
+-        button->setCheckable(true);
+-        button->setAttribute(Qt::WA_DeleteOnClose);
+-        button->setFixedSize(QSize(56, 56));
+-//        button->setStyleSheet("QPushButton{border: none;}");
+-        button->setAutoDefault(false);
+-        btnsGroup->addButton(button);
+-
+-        QHBoxLayout * mainHorLayout = new QHBoxLayout(button);
+-        mainHorLayout->setSpacing(0);
+-        mainHorLayout->setMargin(0);
+-        QLabel * iconLabel = new QLabel(button);
+-        iconLabel->setScaledContents(true);
+-        iconLabel->setPixmap(QPixmap(fullface));
+-
+-        mainHorLayout->addWidget(iconLabel);
+-
+-        button->setLayout(mainHorLayout);
+-
+-        connect(button, &QPushButton::clicked, [=]{
+-            //show dialog更新头像
+-            setFace(fullface);
+-            confirmFile = fullface;
+-            ui->confirmBtn->setStyleSheet("background-color:#2FB3EB");
+-//            emit face_file_send(fullface, m_username);
+-        });
+-        connect(ui->confirmBtn, &QPushButton::clicked, [=]{
+-//            qDebug()<<confirmFile;
+-            if (confirmFile != "") {
+-                emit face_file_send(confirmFile, m_username);
+-                this->close();
+-            }
+-        });
+-
+-        facesFlowLayout->addWidget(button);
+-    }
+-}
+-
+-void ChangeFaceIntelDialog::loadHistoryFaces(){
+-    if (historyFacesFlowLayout->layout() != NULL) {
+-        QLayoutItem* item;
+-        while ((item = historyFacesFlowLayout->layout()->takeAt( 0 )) != NULL )
+-        {
+-            delete item->widget();
+-            delete item;
+-        }
+-//        delete ui->availableLayout->layout();
+-    }
+-    //给每个历史头像创建组件
+-    for(int i = historyCount; i > 0; i--){
+-        QString historyface = QString("%1/%2.face").arg(historyFacesPath).arg(i);
+-//        qDebug()<<"load:"<<historyface;
+-        QPushButton * button = new QPushButton;
+-        button->setAttribute(Qt::WA_DeleteOnClose);
+-        button->setFixedSize(QSize(56, 56));
+-//        button->setStyleSheet("QPushButton{border: none;}");
+-
+-        QHBoxLayout * mainHorLayout = new QHBoxLayout(button);
+-        mainHorLayout->setSpacing(0);
+-        mainHorLayout->setMargin(0);
+-        QLabel * iconLabel = new QLabel(button);
+-        iconLabel->setScaledContents(true);
+-//        iconLabel->setPixmap(QPixmap(historyface));
+-        button->setStyleSheet(QString("QPushButton{border-radius: 4px; border-image:url(%1);}").arg(historyface));
+-//        ElipseMaskWidget * cpMaskWidget = new ElipseMaskWidget(button);
+-//        cpMaskWidget->setGeometry(0, 0, 56, 56);
+-        QPushButton * delBtn = new QPushButton;
+-        delBtn->setFixedSize(16,16);
+-        //delBtn->setIcon(QIcon(":/img/plugins/userinfo_intel/delete.png"));
+-        QHBoxLayout * delBtnLayout = new QHBoxLayout(iconLabel);
+-        delBtnLayout->setSpacing(0);
+-
+-        QHBoxLayout * delBtnHorLayout = new QHBoxLayout(button);
+-        delBtnHorLayout->setSpacing(0);
+-        delBtnHorLayout->setMargin(0);
+-        QLabel * delBtnLabel = new QLabel(delBtn);
+-        delBtnLabel->setScaledContents(true);
+-        delBtnLabel->setPixmap(QPixmap(":/img/plugins/userinfo_intel/delete.png"));
+-
+-        delBtnLayout->addStretch();
+-        delBtnLayout->addWidget(delBtn);
+-        delBtnLayout->setContentsMargins(0,0,0,50);
+-
+-        mainHorLayout->addWidget(iconLabel);
+-        iconLabel->setLayout(delBtnLayout);
+-        delBtn->hide();
+-        connect(delBtn, &QPushButton::clicked, this, [=]{
+-            sysinterface = new QDBusInterface("com.control.center.qt.systemdbus",
+-                                             "/",
+-                                             "com.control.center.interface",
+-                                             QDBusConnection::systemBus());
+-
+-            if (!sysinterface->isValid()){
+-                qCritical() << "Create Client Interface Failed When Copy Face File: " << QDBusConnection::systemBus().lastError();
+-                return;
+-            }
+-            QString cmd = QString("rm %1/%2.face").arg(historyFacesPath).arg(i);
+-            historyCount--;
+-            sysinterface->call("systemRun", QVariant(cmd));
+-            for(int j = i + 1; j <= 4; j++){
+-                qDebug()<<j<<" to "<<j-1;
+-                cmd = QString("mv %1/%2.face %1/%3.face").arg(historyFacesPath).arg(j).arg(j-1);
+-                sysinterface->call("systemRun", QVariant(cmd));
+-            }
+-            loadHistoryFaces();
+-
+-            old_delBtn = nullptr;
+-        });
+-        if (m_isNightMode) {
+-            ui->confirmBtn->setStyleSheet("background-color:#404040");
+-        } else {
+-            ui->confirmBtn->setStyleSheet("background-color:#DDDDDD");
+-        }
+-        button->setLayout(mainHorLayout);
+-        historyFacesFlowLayout->addWidget(button);
+-        connect(button, &QPushButton::clicked, this, [=]{
+-            setFace(historyface);
+-            confirmFile = historyface;
+-
+-            delBtn->show();
+-            ui->confirmBtn->setStyleSheet("background-color:#2FB3EB");
+-            if (old_delBtn != nullptr && old_delBtn != delBtn) {
+-                old_delBtn->hide();
+-                old_delBtn = delBtn;
+-            }
+-
+-            if (old_delBtn == nullptr) {
+-                old_delBtn = delBtn;
+-            }
+-
+-        });
+-    }
+-
+-    //添加本地头像按钮
+-    QPushButton * addBtn = new QPushButton;
+-    addBtn->setAttribute(Qt::WA_DeleteOnClose);
+-    addBtn->setFixedSize(QSize(56, 56));
+-    QPixmap addpix;
+-    if (m_isNightMode) {
+-        addpix = ImageUtil::loadSvg("://img/titlebar/add.svg", "white", 16);
+-    } else {
+-        addpix = ImageUtil::loadSvg("://img/titlebar/add.svg", "black", 16);
+-    }
+-
+-    QIcon ButtonIcon(addpix);
+-    addBtn->setIcon(QIcon(ButtonIcon));
+-    addBtn->setAutoDefault(false);
+-    historyFacesFlowLayout->addWidget(addBtn);
+-    connect(addBtn, &QPushButton::clicked, this, [=]{
+-        showLocalFaceDialog();
+-        old_delBtn = nullptr;
+-    });
+-}
+-
+-void ChangeFaceIntelDialog::setFace(QString iconfile){
+-    QPixmap rect = pixmapAdjustLabel(iconfile);
+-    ui->faceLabel->setPixmap(PixmapToRound(rect, ui->faceLabel->width()/2));
+-}
+-
+-QPixmap ChangeFaceIntelDialog::pixmapAdjustLabel(QString iconfile)
+-{
+-    //设置用户头像
+-    QPixmap iconcop = QPixmap(iconfile);
+-    if (iconcop.width() > iconcop.height()) {
+-        QPixmap iconPixmap = iconcop.copy((iconcop.width() - iconcop.height())/2, 0, iconcop.height(), iconcop.height());
+-        // 根据label高度等比例缩放图片
+-        QPixmap rectPixmap = iconPixmap.scaledToHeight(ui->faceLabel->height());
+-        return rectPixmap;
+-    } else {
+-        QPixmap iconPixmap = iconcop.copy(0, (iconcop.height() - iconcop.width())/2, iconcop.width(), iconcop.width());
+-        // 根据label宽度等比例缩放图片
+-        QPixmap rectPixmap = iconPixmap.scaledToWidth(ui->faceLabel->width());
+-        return rectPixmap;
+-    }
+-}
+-
+-void ChangeFaceIntelDialog::setRealname(QString realname){
+-    QFontMetrics fontMetrics1(ui->usernameLabel->font());
+-    QString formatRealName = fontMetrics1.elidedText(realname, Qt::ElideRight, 230);
+-    ui->usernameLabel->setText(formatRealName);
+-}
+-
+-void ChangeFaceIntelDialog::setUsername(QString username){
+-    m_username = username;
+-}
+-
+-void ChangeFaceIntelDialog::setAccountType(QString atype){
+-    ui->typeLabel->setText(atype);
+-}
+-
+-void ChangeFaceIntelDialog::setHistoryFacesPath(QString path){
+-    historyFacesPath = path;
+-    QDir historyFacesDir;
+-    historyFacesDir.setPath(historyFacesPath);
+-    if (historyFacesDir.exists("4.face")){
+-        qDebug()<<"4 hisotry faces";
+-        historyCount = 4;
+-    } else if(historyFacesDir.exists("3.face")) {
+-        qDebug()<<"3 hisotry faces";
+-        historyCount = 3;
+-    } else if(historyFacesDir.exists("2.face")) {
+-        qDebug()<<"2 hisotry faces";
+-        historyCount = 2;
+-    } else if(historyFacesDir.exists("1.face")) {
+-        qDebug()<<"1 hisotry faces";
+-        historyCount = 1;
+-    } else {
+-        qDebug()<<"0 hisotry faces";
+-        historyCount = 0;
+-    }
+-    loadHistoryFaces();
+-}
+-
+-void ChangeFaceIntelDialog::showLocalFaceDialog(){
+-    QString filters = "Face files(*.png *.jpg *.svg)";
+-    QFileDialog fd;
+-    fd.setDirectory(QString(const_cast<char *>(g_get_user_special_dir(G_USER_DIRECTORY_PICTURES))));
+-    fd.setAcceptMode(QFileDialog::AcceptOpen);
+-    fd.setViewMode(QFileDialog::List);
+-    fd.setNameFilter(filters);
+-    fd.setFileMode(QFileDialog::ExistingFile);
+-    fd.setWindowTitle(tr("select custom face file"));
+-    fd.setLabelText(QFileDialog::Accept, tr("Select"));
+-    fd.setLabelText(QFileDialog::LookIn, tr("Position: "));
+-    fd.setLabelText(QFileDialog::FileName, tr("FileName: "));
+-    fd.setLabelText(QFileDialog::FileType, tr("FileType: "));
+-    fd.setLabelText(QFileDialog::Reject, tr("Cancel"));
+-
+-    if (fd.exec() != QDialog::Accepted)
+-        return;
+-
+-    QString selectedfile;
+-    selectedfile = fd.selectedFiles().first();;
+-//    QString fileurl = fd.selectedUrls().first().toEncoded();
+-//    QString filepath = fileurl.right(fileurl.length() - 7);
+-
+-    QFile pic(selectedfile);
+-    int size = pic.size();
+-
+-    if (size >= 2097152) {
+-        QMessageBox::warning(this, tr("Warning"), tr("The avatar is larger than 2M, please choose again"));
+-        return;
+-    }
+-
+-    setFace(selectedfile);
+-    confirmFile = selectedfile;
+-    //emit face_file_send(selectedfile, m_username);
+-
+-    //添加本地头像后,将此头像copy到历史头像文件夹,再自动刷新历史头像列表
+-    sysinterface = new QDBusInterface("com.control.center.qt.systemdbus",
+-                                     "/",
+-                                     "com.control.center.interface",
+-                                     QDBusConnection::systemBus());
+-
+-    if (!sysinterface->isValid()){
+-        qCritical() << "Create Client Interface Failed When Copy Face File: " << QDBusConnection::systemBus().lastError();
+-        return;
+-    }
+-
+-    if(historyCount < 4){
+-        historyCount ++;
+-    } else {
+-        //删除最早添加的1.face文件,把2、3、4重命名为1、2、3,
+-        QString cmd = QString("rm %1/1.face").arg(historyFacesPath);
+-        sysinterface->call("systemRun", QVariant(cmd));
+-        cmd = QString("mv %1/2.face %1/1.face").arg(historyFacesPath);
+-        sysinterface->call("systemRun", QVariant(cmd));
+-        cmd = QString("mv %1/3.face %1/2.face").arg(historyFacesPath);
+-        sysinterface->call("systemRun", QVariant(cmd));
+-        cmd = QString("mv %1/4.face %1/3.face").arg(historyFacesPath);
+-        sysinterface->call("systemRun", QVariant(cmd));
+-    }
+-//    QString cp_cmd = QString("cp %1 %2/%3.face").arg(selectedfile).arg(historyFacesPath).arg(historyCount);
+-//    qDebug()<<cp_cmd;
+-//    qDebug()<<QVariant(cp_cmd);
+-//    sysinterface->call("systemRun", QVariant(cp_cmd));
+-    //由于systemRun方法传输的指令不支持中文路径,换用QFile的copy方法执行文件拷贝
+-    QFile *cp_file = new QFile();
+-    cp_file->copy(selectedfile, QString("%2/%3.face").arg(historyFacesPath).arg(historyCount));
+-    loadHistoryFaces();
+-}
+-
+-QPixmap ChangeFaceIntelDialog::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 ChangeFaceIntelDialog::paintEvent(QPaintEvent *event) {
+-    Q_UNUSED(event)
+-
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 16, 16);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 16, false, false);
+-
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-    p.restore();
+-}
+diff --git a/plugins/account/userinfo_intel/changefaceinteldialog.h b/plugins/account/userinfo_intel/changefaceinteldialog.h
+deleted file mode 100644
+index d4e73c6..0000000
+--- a/plugins/account/userinfo_intel/changefaceinteldialog.h
++++ /dev/null
+@@ -1,101 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef CHANGEFACEINTELDIALOG_H
+-#define CHANGEFACEINTELDIALOG_H
+-
+-#include <QDialog>
+-#include <QObject>
+-#include <QDir>
+-#include <QListWidgetItem>
+-#include <QFileDialog>
+-#include <QPainter>
+-#include <QPainterPath>
+-#include <QDBusInterface>
+-#include <QDBusReply>
+-#include "flowlayout.h"
+-#include <QButtonGroup>
+-#include <QGSettings/QGSettings>
+-#include "imageutil.h"
+-
+-#define UKUI_QT_STYLE                      "org.ukui.style"
+-#define UKUI_STYLE_KEY                     "style-name"
+-
+-/* qt会将glib里的signals成员识别为宏,所以取消该宏
+- * 后面如果用到signals时,使用Q_SIGNALS代替即可
+- **/
+-#ifdef signals
+-#undef signals
+-#endif
+-
+-extern "C" {
+-#include <glib.h>
+-#include <gio/gio.h>
+-}
+-
+-namespace Ui {
+-class ChangeFaceIntelDialog;
+-}
+-
+-class ChangeFaceIntelDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit ChangeFaceIntelDialog(QWidget *parent = 0);
+-    ~ChangeFaceIntelDialog();
+-
+-    void setFace(QString iconfile);
+-    void setUsername(QString username);
+-    void setRealname(QString realname);
+-    void setAccountType(QString atype);
+-    void setHistoryFacesPath(QString path);
+-
+-    void loadSystemFaces();
+-
+-    void showLocalFaceDialog();
+-
+-    QMap<QString, QListWidgetItem *> delitemMap;
+-
+-    QString confirmFile;
+-    void loadHistoryFaces();
+-    QString historyFacesPath;
+-    QDBusInterface * sysinterface;
+-    int historyCount;
+-    FlowLayout * historyFacesFlowLayout;
+-
+-protected:
+-    void paintEvent(QPaintEvent *);
+-
+-private:
+-    Ui::ChangeFaceIntelDialog *ui;
+-    QString m_username;
+-    QPixmap PixmapToRound(const QPixmap &src, int radius);
+-    QButtonGroup *btnsGroup;
+-    QPushButton *old_delBtn = nullptr;
+-    QPixmap pixmapAdjustLabel(QString iconfile);
+-    QPushButton *m_closeBtn;
+-    bool m_isNightMode;
+-    QGSettings *m_style = nullptr;
+-    void getThemeStyle(QString key);
+-Q_SIGNALS:
+-    void face_file_send(QString file, QString username);
+-};
+-
+-#endif // CHANGEFACEINTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/changefaceinteldialog.ui b/plugins/account/userinfo_intel/changefaceinteldialog.ui
+deleted file mode 100644
+index 8a749a1..0000000
+--- a/plugins/account/userinfo_intel/changefaceinteldialog.ui
++++ /dev/null
+@@ -1,531 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>ChangeFaceIntelDialog</class>
+- <widget class="QDialog" name="ChangeFaceIntelDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>380</width>
+-    <height>530</height>
+-   </rect>
+-  </property>
+-  <property name="sizePolicy">
+-   <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-    <horstretch>0</horstretch>
+-    <verstretch>0</verstretch>
+-   </sizepolicy>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>380</width>
+-    <height>530</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>380</width>
+-    <height>530</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string notr="true">Change Face</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_2">
+-   <item>
+-    <widget class="QFrame" name="frame">
+-     <property name="sizePolicy">
+-      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-       <horstretch>0</horstretch>
+-       <verstretch>0</verstretch>
+-      </sizepolicy>
+-     </property>
+-     <property name="minimumSize">
+-      <size>
+-       <width>0</width>
+-       <height>48</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>16777215</width>
+-       <height>48</height>
+-      </size>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::StyledPanel</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <layout class="QHBoxLayout" name="horizontalLayout_2">
+-      <property name="leftMargin">
+-       <number>9</number>
+-      </property>
+-      <property name="rightMargin">
+-       <number>9</number>
+-      </property>
+-      <item>
+-       <widget class="QLabel" name="titleLabel">
+-        <property name="minimumSize">
+-         <size>
+-          <width>0</width>
+-          <height>24</height>
+-         </size>
+-        </property>
+-        <property name="maximumSize">
+-         <size>
+-          <width>16777215</width>
+-          <height>24</height>
+-         </size>
+-        </property>
+-        <property name="font">
+-         <font>
+-          <pointsize>13</pointsize>
+-         </font>
+-        </property>
+-        <property name="text">
+-         <string>Change User Face</string>
+-        </property>
+-       </widget>
+-      </item>
+-      <item>
+-       <spacer name="horizontalSpacer">
+-        <property name="orientation">
+-         <enum>Qt::Horizontal</enum>
+-        </property>
+-        <property name="sizeHint" stdset="0">
+-         <size>
+-          <width>193</width>
+-          <height>13</height>
+-         </size>
+-        </property>
+-       </spacer>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <widget class="QFrame" name="frame">
+-     <property name="minimumSize">
+-      <size>
+-       <width>362</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>362</width>
+-       <height>16777215</height>
+-      </size>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::NoFrame</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_6">
+-      <property name="spacing">
+-       <number>0</number>
+-      </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>
+-       <layout class="QVBoxLayout" name="verticalLayout_5">
+-        <property name="spacing">
+-         <number>0</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>0</number>
+-        </property>
+-        <item>
+-         <layout class="QVBoxLayout" name="verticalLayout_7">
+-          <property name="spacing">
+-           <number>0</number>
+-          </property>
+-          <property name="leftMargin">
+-           <number>15</number>
+-          </property>
+-          <property name="topMargin">
+-           <number>0</number>
+-          </property>
+-          <property name="rightMargin">
+-           <number>16</number>
+-          </property>
+-          <property name="bottomMargin">
+-           <number>15</number>
+-          </property>
+-          <item>
+-           <spacer name="verticalSpacer_2">
+-            <property name="orientation">
+-             <enum>Qt::Vertical</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>20</width>
+-              <height>40</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-          <item>
+-           <layout class="QHBoxLayout" name="horizontalLayout_3">
+-            <property name="spacing">
+-             <number>16</number>
+-            </property>
+-            <property name="leftMargin">
+-             <number>8</number>
+-            </property>
+-            <item>
+-             <widget class="QLabel" name="faceLabel">
+-              <property name="minimumSize">
+-               <size>
+-                <width>56</width>
+-                <height>56</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>56</width>
+-                <height>56</height>
+-               </size>
+-              </property>
+-              <property name="text">
+-               <string/>
+-              </property>
+-              <property name="scaledContents">
+-               <bool>true</bool>
+-              </property>
+-             </widget>
+-            </item>
+-            <item>
+-             <layout class="QVBoxLayout" name="verticalLayout_8">
+-              <property name="spacing">
+-               <number>2</number>
+-              </property>
+-              <item>
+-               <widget class="QLabel" name="usernameLabel">
+-                <property name="text">
+-                 <string/>
+-                </property>
+-               </widget>
+-              </item>
+-              <item>
+-               <widget class="QLabel" name="typeLabel">
+-                <property name="text">
+-                 <string/>
+-                </property>
+-               </widget>
+-              </item>
+-             </layout>
+-            </item>
+-           </layout>
+-          </item>
+-          <item>
+-           <spacer name="verticalSpacer_3">
+-            <property name="orientation">
+-             <enum>Qt::Vertical</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>20</width>
+-              <height>24</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-          <item>
+-           <layout class="QHBoxLayout" name="horizontalLayout">
+-            <property name="spacing">
+-             <number>0</number>
+-            </property>
+-            <property name="leftMargin">
+-             <number>8</number>
+-            </property>
+-            <property name="topMargin">
+-             <number>0</number>
+-            </property>
+-            <item>
+-             <widget class="QLabel" name="label">
+-              <property name="sizePolicy">
+-               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                <horstretch>0</horstretch>
+-                <verstretch>0</verstretch>
+-               </sizepolicy>
+-              </property>
+-              <property name="minimumSize">
+-               <size>
+-                <width>64</width>
+-                <height>18</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>64</width>
+-                <height>18</height>
+-               </size>
+-              </property>
+-              <property name="text">
+-               <string>History</string>
+-              </property>
+-             </widget>
+-            </item>
+-            <item>
+-             <widget class="Line" name="line_2">
+-              <property name="minimumSize">
+-               <size>
+-                <width>0</width>
+-                <height>1</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>16777215</width>
+-                <height>1</height>
+-               </size>
+-              </property>
+-              <property name="orientation">
+-               <enum>Qt::Horizontal</enum>
+-              </property>
+-             </widget>
+-            </item>
+-           </layout>
+-          </item>
+-          <item>
+-           <spacer name="verticalSpacer">
+-            <property name="orientation">
+-             <enum>Qt::Vertical</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>20</width>
+-              <height>8</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-          <item>
+-           <widget class="QWidget" name="historyFacesWidget" native="true">
+-            <property name="sizePolicy">
+-             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-              <horstretch>0</horstretch>
+-              <verstretch>0</verstretch>
+-             </sizepolicy>
+-            </property>
+-            <property name="minimumSize">
+-             <size>
+-              <width>330</width>
+-              <height>70</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>330</width>
+-              <height>70</height>
+-             </size>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <spacer name="verticalSpacer_4">
+-            <property name="orientation">
+-             <enum>Qt::Vertical</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>20</width>
+-              <height>16</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-          <item>
+-           <layout class="QHBoxLayout" name="horizontalLayout_5">
+-            <property name="spacing">
+-             <number>0</number>
+-            </property>
+-            <property name="leftMargin">
+-             <number>8</number>
+-            </property>
+-            <property name="rightMargin">
+-             <number>0</number>
+-            </property>
+-            <property name="bottomMargin">
+-             <number>0</number>
+-            </property>
+-            <item>
+-             <widget class="QLabel" name="label_2">
+-              <property name="sizePolicy">
+-               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                <horstretch>0</horstretch>
+-                <verstretch>0</verstretch>
+-               </sizepolicy>
+-              </property>
+-              <property name="minimumSize">
+-               <size>
+-                <width>64</width>
+-                <height>18</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>64</width>
+-                <height>18</height>
+-               </size>
+-              </property>
+-              <property name="text">
+-               <string>System</string>
+-              </property>
+-             </widget>
+-            </item>
+-            <item>
+-             <widget class="Line" name="line">
+-              <property name="sizePolicy">
+-               <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+-                <horstretch>0</horstretch>
+-                <verstretch>1</verstretch>
+-               </sizepolicy>
+-              </property>
+-              <property name="minimumSize">
+-               <size>
+-                <width>0</width>
+-                <height>1</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>16777215</width>
+-                <height>1</height>
+-               </size>
+-              </property>
+-              <property name="orientation">
+-               <enum>Qt::Horizontal</enum>
+-              </property>
+-             </widget>
+-            </item>
+-           </layout>
+-          </item>
+-          <item>
+-           <widget class="QWidget" name="facesWidget" native="true">
+-            <property name="sizePolicy">
+-             <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+-              <horstretch>0</horstretch>
+-              <verstretch>0</verstretch>
+-             </sizepolicy>
+-            </property>
+-            <property name="minimumSize">
+-             <size>
+-              <width>330</width>
+-              <height>136</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>330</width>
+-              <height>136</height>
+-             </size>
+-            </property>
+-            <property name="layoutDirection">
+-             <enum>Qt::LeftToRight</enum>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <layout class="QHBoxLayout" name="horizontalLayout_6">
+-            <property name="spacing">
+-             <number>0</number>
+-            </property>
+-            <property name="leftMargin">
+-             <number>9</number>
+-            </property>
+-            <property name="topMargin">
+-             <number>40</number>
+-            </property>
+-            <property name="rightMargin">
+-             <number>0</number>
+-            </property>
+-            <property name="bottomMargin">
+-             <number>9</number>
+-            </property>
+-            <item>
+-             <widget class="QPushButton" name="cancelBtn">
+-              <property name="minimumSize">
+-               <size>
+-                <width>144</width>
+-                <height>48</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>144</width>
+-                <height>48</height>
+-               </size>
+-              </property>
+-              <property name="text">
+-               <string>Cancel</string>
+-              </property>
+-              <property name="autoDefault">
+-               <bool>false</bool>
+-              </property>
+-             </widget>
+-            </item>
+-            <item>
+-             <spacer name="horizontalSpacer_3">
+-              <property name="orientation">
+-               <enum>Qt::Horizontal</enum>
+-              </property>
+-              <property name="sizeHint" stdset="0">
+-               <size>
+-                <width>24</width>
+-                <height>20</height>
+-               </size>
+-              </property>
+-             </spacer>
+-            </item>
+-            <item>
+-             <widget class="QPushButton" name="confirmBtn">
+-              <property name="minimumSize">
+-               <size>
+-                <width>144</width>
+-                <height>48</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>144</width>
+-                <height>48</height>
+-               </size>
+-              </property>
+-              <property name="text">
+-               <string>Confirm</string>
+-              </property>
+-              <property name="autoDefault">
+-               <bool>false</bool>
+-              </property>
+-             </widget>
+-            </item>
+-           </layout>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-  </layout>
+- </widget>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/account/userinfo_intel/changegroupinteldialog.cpp b/plugins/account/userinfo_intel/changegroupinteldialog.cpp
+deleted file mode 100644
+index 4446fc9..0000000
+--- a/plugins/account/userinfo_intel/changegroupinteldialog.cpp
++++ /dev/null
+@@ -1,223 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2020 KYLINOS Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-#include "changegroupinteldialog.h"
+-#include "ui_changegroupinteldialog.h"
+-#include "definegroupitemintel.h"
+-#include "imageutil.h"
+-//#include "group_manager_client.h"
+-#include "creategroupinteldialog.h"
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-ChangeGroupIntelDialog::ChangeGroupIntelDialog(QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::ChangeGroupIntelDialog)
+-{
+-    ui->setupUi(this);
+-    setupInit();
+-    signalsBind();
+-}
+-
+-ChangeGroupIntelDialog::~ChangeGroupIntelDialog()
+-{
+-    delete ui;
+-}
+-
+-void ChangeGroupIntelDialog::showCreateGroupDialog()
+-{
+-    CreateGroupIntelDialog *dialog = new CreateGroupIntelDialog;
+-    dialog->exec();
+-
+-}
+-
+-void ChangeGroupIntelDialog::loadGroupInfo()
+-{
+-//    group_manager_client demo;
+-//    demo.value = demo.get_group_info();
+-//    qDebug() << "load group info" << demo.value->at(0)->groupname << demo.value->at(0)->groupid;
+-    //设置ListWidget是否可以自动排序,默认是false
+-    //list_widget->setSortingEnabled(true);
+-}
+-
+-void ChangeGroupIntelDialog::setupInit()
+-{
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    initNewGroupBtn();
+-
+-    loadGroupInfo();
+-
+-    ui->closeBtn->setIcon(QIcon("://img/titlebar/close.svg"));
+-
+-    ui->titleLabel->setStyleSheet("QLabel{font-size: 18px; color: palette(windowText);}");
+-    //ui->titleLabel_2->setStyleSheet("QLabel{font-size: 18px; color: palette(windowText);}");
+-    ui->closeBtn->setProperty("useIconHighlightEffect", true);
+-    ui->closeBtn->setProperty("iconHighlightEffectMode", 1);
+-    ui->closeBtn->setFlat(true);
+-
+-    ui->closeBtn->setStyleSheet("QPushButton:hover:!pressed#closeBtn{background: #FA6056; border-radius: 4px;}"
+-                                "QPushButton:hover:pressed#closeBtn{background: #E54A50; border-radius: 4px;}");
+-
+-
+-    ui->listWidget->setFocusPolicy(Qt::NoFocus);
+-    ui->listWidget->setSelectionMode(QAbstractItemView::NoSelection);
+-    ui->listWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+-    ui->listWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+-    ui->listWidget->setSpacing(1);
+-
+-    DefineGroupItemIntel * singleWidget = new DefineGroupItemIntel("aaa");
+-    singleWidget->setDeleteable(true);
+-    singleWidget->setUpdateable(true);
+-    singleWidget->setEditable(true);
+-    singleWidget->setFrameShape(QFrame::Shape::Box);
+-    singleWidget->setProperty("userData", true);
+-
+-    QListWidgetItem * item = new QListWidgetItem(ui->listWidget);
+-    item->setSizeHint(QSize(ui->listWidget->width() - 5, 50));
+-    item->setData(Qt::UserRole, "");
+-    ui->listWidget->setItemWidget(item, singleWidget);
+-}
+-
+-void ChangeGroupIntelDialog::signalsBind()
+-{
+-    connect(ui->closeBtn, &QPushButton::clicked, [=]{
+-        close();
+-    });
+-}
+-
+-void ChangeGroupIntelDialog::initNewGroupBtn()
+-{
+-    addWgt = new HoverWidget("");
+-    addWgt->setObjectName("addwgt");
+-    addWgt->setMinimumSize(QSize(454, 50));
+-    addWgt->setMaximumSize(QSize(454, 50));
+-    addWgt->setStyleSheet("HoverWidget#addwgt{background: palette(base); border-radius: 4px;}HoverWidget:hover:!pressed#addwgt{background: #2FB3E8; border-radius: 4px;}");
+-
+-    QHBoxLayout *addLyt = new QHBoxLayout;
+-
+-    QLabel * iconLabel = new QLabel();
+-    QLabel * textLabel = new QLabel(tr("Add user group"));
+-    QPixmap pixgray = ImageUtil::loadSvg(":/img/titlebar/add.svg", "black", 12);
+-    iconLabel->setPixmap(pixgray);
+-    addLyt->addWidget(iconLabel);
+-    addLyt->addWidget(textLabel);
+-    addLyt->addStretch();
+-    addWgt->setLayout(addLyt);
+-
+-    // 悬浮改变Widget状态
+-    connect(addWgt, &HoverWidget::enterWidget, this, [=](QString mname){
+-        QPixmap pixgray = ImageUtil::loadSvg(":/img/titlebar/add.svg", "white", 12);
+-        iconLabel->setPixmap(pixgray);
+-        textLabel->setStyleSheet("color: palette(base);");
+-
+-    });
+-    // 还原状态
+-    connect(addWgt, &HoverWidget::leaveWidget, this, [=](QString mname){
+-        QPixmap pixgray = ImageUtil::loadSvg(":/img/titlebar/add.svg", "black", 12);
+-        iconLabel->setPixmap(pixgray);
+-        textLabel->setStyleSheet("color: palette(windowText);");
+-    });
+-
+-    connect(addWgt, &HoverWidget::widgetClicked, this, [=](QString mname){
+-        showCreateGroupDialog();
+-    });
+-    ui->addLyt->addWidget(addWgt);
+-}
+-
+-void ChangeGroupIntelDialog::initGeneralItemsStyle(){
+-    initItemsStyle(ui->listWidget);
+-}
+-
+-void ChangeGroupIntelDialog::initItemsStyle(QListWidget *listWidget){
+-    int total = listWidget->count();
+-    for (int row = 0; row < total; row++){
+-        QString style;
+-        QString subStyle;
+-        if (1 == total){ //总数为1
+-            style = "QWidget{background: #F4F4F4; border: none; border-radius: 6px;}";
+-            subStyle = "background: #F4F4F4; border: none; border-radius: 4px;";
+-        } else if (0 == row && (row % 2 == 0)){ //首位
+-            style = "QWidget{background: #F4F4F4; border: none; border-top-left-radius: 6px; border-top-right-radius: 6px;}";
+-            subStyle = "background: #F4F4F4; border: none; border-radius: 4px;";
+-        } else if (total - 1 == row){ //末位
+-            if (0 == row % 2){
+-                style = "QWidget{background: #F4F4F4; border: none; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px;}";
+-                subStyle = "background: #F4F4F4; border: none; border-radius: 4px;";
+-            } else {
+-                style = "QWidget{background: #EEEEEE; border: none; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px;}";
+-                subStyle = "background: #EEEEEE; border: none; border-radius: 4px;";
+-            }
+-        } else if (row % 2 == 0){
+-            style = "QWidget{background: #F4F4F4; border: none;}";
+-            subStyle = "background: #F4F4F4; border: none; border-radius: 4px;";
+-        } else if (row % 2 != 0){
+-            style = "QWidget{background: #EEEEEE; border: none;}";
+-            subStyle = "background: #EEEEEE; border: none; border-radius: 4px;";
+-        }
+-
+-        QWidget * widget = listWidget->itemWidget(listWidget->item(row));
+-        DefineGroupItemIntel * pShortcutItem = dynamic_cast<DefineGroupItemIntel *>(widget);
+-//        pShortcutItem->widgetComponent()->setStyleSheet(style);
+-//        pShortcutItem->btnComponent()->setStyleSheet(subStyle);
+-    }
+-}
+-
+-void ChangeGroupIntelDialog::paintEvent(QPaintEvent * event){
+-    Q_UNUSED(event)
+-
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 6, 6);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 10, false, false);
+-
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-    p.restore();
+-}
+diff --git a/plugins/account/userinfo_intel/changegroupinteldialog.h b/plugins/account/userinfo_intel/changegroupinteldialog.h
+deleted file mode 100644
+index 933ce68..0000000
+--- a/plugins/account/userinfo_intel/changegroupinteldialog.h
++++ /dev/null
+@@ -1,74 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2020 KYLINOS Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-#ifndef CHANGEGROUPINTELDIALOG_H
+-#define CHANGEGROUPINTELDIALOG_H
+-
+-#include <QDialog>
+-#include <QPainter>
+-#include <QPainterPath>
+-#include <QListWidget>
+-#include <QDebug>
+-
+-#include "hoverwidget.h"
+-
+-//struct custom_struct
+-//{
+-//    QString groupname;
+-//    QString passphrase;
+-//    QString groupid;
+-//    QString usergroup;
+-//};
+-
+-namespace Ui {
+-class ChangeGroupIntelDialog;
+-}
+-
+-class ChangeGroupIntelDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit ChangeGroupIntelDialog(QWidget *parent = nullptr);
+-    ~ChangeGroupIntelDialog();
+-
+-public:
+-    void initGeneralItemsStyle();
+-    void initItemsStyle(QListWidget * listWidget);
+-    void initNewGroupBtn();
+-    void loadGroupInfo();
+-    void showCreateGroupDialog();
+-
+-protected:
+-    void paintEvent(QPaintEvent * event);
+-
+-private:
+-    Ui::ChangeGroupIntelDialog *ui;
+-
+-    HoverWidget *addWgt;
+-    //QList<custom_struct *>  *value;
+-
+-    void setupInit();
+-    void signalsBind();
+-
+-
+-};
+-
+-#endif // CHANGEGROUPINTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/changegroupinteldialog.ui b/plugins/account/userinfo_intel/changegroupinteldialog.ui
+deleted file mode 100644
+index 6af4554..0000000
+--- a/plugins/account/userinfo_intel/changegroupinteldialog.ui
++++ /dev/null
+@@ -1,237 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>ChangeGroupIntelDialog</class>
+- <widget class="QDialog" name="ChangeGroupIntelDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>540</width>
+-    <height>645</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>540</width>
+-    <height>645</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>540</width>
+-    <height>645</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Dialog</string>
+-  </property>
+-  <widget class="QFrame" name="frame">
+-   <property name="geometry">
+-    <rect>
+-     <x>0</x>
+-     <y>1</y>
+-     <width>541</width>
+-     <height>641</height>
+-    </rect>
+-   </property>
+-   <property name="frameShape">
+-    <enum>QFrame::StyledPanel</enum>
+-   </property>
+-   <property name="frameShadow">
+-    <enum>QFrame::Raised</enum>
+-   </property>
+-   <widget class="QWidget" name="layoutWidget">
+-    <property name="geometry">
+-     <rect>
+-      <x>1</x>
+-      <y>10</y>
+-      <width>541</width>
+-      <height>632</height>
+-     </rect>
+-    </property>
+-    <layout class="QVBoxLayout" name="verticalLayout_3">
+-     <property name="leftMargin">
+-      <number>32</number>
+-     </property>
+-     <property name="rightMargin">
+-      <number>15</number>
+-     </property>
+-     <property name="bottomMargin">
+-      <number>49</number>
+-     </property>
+-     <item>
+-      <layout class="QHBoxLayout" name="horizontalLayout">
+-       <item>
+-        <spacer name="horizontalSpacer">
+-         <property name="orientation">
+-          <enum>Qt::Horizontal</enum>
+-         </property>
+-         <property name="sizeHint" stdset="0">
+-          <size>
+-           <width>40</width>
+-           <height>20</height>
+-          </size>
+-         </property>
+-        </spacer>
+-       </item>
+-       <item>
+-        <widget class="QPushButton" name="closeBtn">
+-         <property name="minimumSize">
+-          <size>
+-           <width>32</width>
+-           <height>32</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>32</width>
+-           <height>32</height>
+-          </size>
+-         </property>
+-         <property name="text">
+-          <string/>
+-         </property>
+-        </widget>
+-       </item>
+-      </layout>
+-     </item>
+-     <item>
+-      <layout class="QVBoxLayout" name="verticalLayout_2">
+-       <property name="rightMargin">
+-        <number>33</number>
+-       </property>
+-       <item>
+-        <layout class="QVBoxLayout" name="verticalLayout">
+-         <property name="spacing">
+-          <number>24</number>
+-         </property>
+-         <item>
+-          <layout class="QHBoxLayout" name="horizontalLayout_3">
+-           <item>
+-            <widget class="QLabel" name="titleLabel">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="text">
+-              <string>User Group Settings</string>
+-             </property>
+-            </widget>
+-           </item>
+-           <item>
+-            <spacer name="horizontalSpacer_2">
+-             <property name="orientation">
+-              <enum>Qt::Horizontal</enum>
+-             </property>
+-             <property name="sizeHint" stdset="0">
+-              <size>
+-               <width>40</width>
+-               <height>20</height>
+-              </size>
+-             </property>
+-            </spacer>
+-           </item>
+-          </layout>
+-         </item>
+-         <item>
+-          <layout class="QHBoxLayout" name="horizontalLayout_4">
+-           <item>
+-            <widget class="QLabel" name="titleLabel_2">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="text">
+-              <string>User groups available in the system</string>
+-             </property>
+-            </widget>
+-           </item>
+-           <item>
+-            <spacer name="horizontalSpacer_3">
+-             <property name="orientation">
+-              <enum>Qt::Horizontal</enum>
+-             </property>
+-             <property name="sizeHint" stdset="0">
+-              <size>
+-               <width>40</width>
+-               <height>20</height>
+-              </size>
+-             </property>
+-            </spacer>
+-           </item>
+-          </layout>
+-         </item>
+-        </layout>
+-       </item>
+-       <item>
+-        <widget class="QListWidget" name="listWidget">
+-         <property name="minimumSize">
+-          <size>
+-           <width>455</width>
+-           <height>400</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>455</width>
+-           <height>400</height>
+-          </size>
+-         </property>
+-        </widget>
+-       </item>
+-       <item>
+-        <widget class="QWidget" name="addUserWidget" native="true">
+-         <property name="minimumSize">
+-          <size>
+-           <width>454</width>
+-           <height>50</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>454</width>
+-           <height>50</height>
+-          </size>
+-         </property>
+-         <layout class="QHBoxLayout" name="horizontalLayout_5">
+-          <property name="spacing">
+-           <number>0</number>
+-          </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>
+-           <layout class="QHBoxLayout" name="addLyt">
+-            <property name="spacing">
+-             <number>8</number>
+-            </property>
+-            <property name="leftMargin">
+-             <number>0</number>
+-            </property>
+-           </layout>
+-          </item>
+-         </layout>
+-        </widget>
+-       </item>
+-      </layout>
+-     </item>
+-    </layout>
+-   </widget>
+-  </widget>
+- </widget>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/account/userinfo_intel/changepasswd.cpp b/plugins/account/userinfo_intel/changepasswd.cpp
+deleted file mode 100644
+index 6fffc52..0000000
+--- a/plugins/account/userinfo_intel/changepasswd.cpp
++++ /dev/null
+@@ -1,126 +0,0 @@
+-#include "changepasswd.h"
+-#include <QLabel>
+-#include <QPushButton>
+-#include <QHBoxLayout>
+-#include <QVBoxLayout>
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-changepasswd::changepasswd(QString username,QWidget *parent) : QDialog(parent)
+-{
+-    this->resize(360, 576);
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    initUI(username);
+-    setQSS();
+-
+-    connect(m_pdigitalAuthWidget, &DigitalAuthDialog::forgetpassword, [=](){
+-        m_pStackedWidget->setCurrentIndex(1);
+-    });
+-    connect(m_pPhoneAuthWidget, &PhoneAuthDialog::returnSignal, [=](){
+-        m_pStackedWidget->setCurrentIndex(0);
+-    });
+-    connect(m_pPhoneAuthWidget, &PhoneAuthDialog::confirmSignal, [=](){
+-        m_pdigitalAuthWidget->gotonext();
+-        m_pStackedWidget->setCurrentIndex(0);
+-    });
+-    connect(m_pdigitalAuthWidget, &DigitalAuthDialog::ended, [=](){
+-        emit changepwd();
+-        close();
+-    });
+-}
+-
+-void changepasswd::initUI(QString username){
+-    QWidget * titleWidget = new QWidget(this);
+-    titleWidget->resize(360, 47);
+-//    titleWidget->move(0, 0);
+-
+-    title_label = new QLabel(this);
+-    title_label->setText(tr("Change Password"));
+-    title_label->setObjectName("titleLabel");
+-    closeBtn = new QPushButton(this);
+-    closeBtn->setProperty("useIconHighlightEffect", true);
+-    closeBtn->setProperty("iconHighlightEffectMode", 1);
+-    closeBtn->setFlat(true);
+-    closeBtn->setIcon(QIcon(":/img/plugins/userinfo/close.svg"));
+-    connect(closeBtn, &QPushButton::clicked, [=]{
+-        close();
+-    });
+-    const QByteArray id_1(UKUI_QT_STYLE);
+-    if (QGSettings::isSchemaInstalled(id_1)) {
+-        m_style =new QGSettings(id_1);
+-        connect(m_style, &QGSettings::changed, this, &changepasswd::setpwdstyle);
+-    }
+-    QHBoxLayout *hlayout = new QHBoxLayout(titleWidget);
+-//    hlayout->setContentsMargins(0,0,0,0);
+-    hlayout->addWidget(title_label);
+-    hlayout->addStretch();
+-    hlayout->addWidget(closeBtn);
+-
+-    m_pdigitalAuthWidget = new DigitalAuthDialog(username);
+-    m_pPhoneAuthWidget = new PhoneAuthDialog(username);
+-    m_pStackedWidget = new QStackedWidget(this);
+-    m_pStackedWidget->addWidget(m_pdigitalAuthWidget);
+-    m_pStackedWidget->addWidget(m_pPhoneAuthWidget);
+-
+-    QVBoxLayout *mainLayout = new QVBoxLayout(this);
+-    mainLayout->addWidget(titleWidget);
+-    mainLayout->addWidget(m_pStackedWidget);
+-}
+-
+-void changepasswd::setQSS(){
+-}
+-void changepasswd::setpwdstyle(QString key)
+-{
+-    if(key == "styleName") {
+-        update();
+-    }
+-}
+-void changepasswd::paintEvent(QPaintEvent *event)
+-{
+-    Q_UNUSED(event)
+-
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 16, 16);
+-//    rectPath.addRoundedRect(this->rect(), 16, 16);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 16, false, false);
+-
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-    p.restore();
+-}
+-
+-changepasswd::~changepasswd(){
+-  delete m_style;
+-}
+diff --git a/plugins/account/userinfo_intel/changepasswd.h b/plugins/account/userinfo_intel/changepasswd.h
+deleted file mode 100644
+index 4497315..0000000
+--- a/plugins/account/userinfo_intel/changepasswd.h
++++ /dev/null
+@@ -1,50 +0,0 @@
+-#ifndef CHANGEPASSWD_H
+-#define CHANGEPASSWD_H
+-
+-#include <QWidget>
+-#include <QDialog>
+-#include <QDebug>
+-#include <QStackedWidget>
+-#include <QPainter>
+-#include <QPainterPath>
+-#include "QGSettings/QGSettings"
+-#include "digitalauthdialog.h"
+-#include "phoneauthdialog.h"
+-#include "changepwddialog.h"
+-#define UKUI_QT_STYLE                      "org.ukui.style"
+-#define UKUI_STYLE_KEY                     "style-name"
+-
+-class QLabel;
+-class QPushButton;
+-
+-
+-class changepasswd : public QDialog
+-{
+-    Q_OBJECT
+-public:
+-    explicit changepasswd(QString username, QWidget *parent = nullptr);
+-    ~changepasswd();
+-
+-    void initUI(QString username);
+-    void setQSS();
+-
+-Q_SIGNALS:
+-    void newpdSignal();
+-    void changepwd();
+-
+-protected:
+-    void paintEvent(QPaintEvent *event) override;
+-
+-private:
+-    QLabel *title_label;
+-    QPushButton *closeBtn;
+-    QStackedWidget  *m_pStackedWidget;
+-    DigitalAuthDialog *m_pdigitalAuthWidget;
+-    PhoneAuthDialog *m_pPhoneAuthWidget;
+-    ChangePwdDialog *m_pChangePwdDialog;
+-    QGSettings  *m_style = nullptr;
+-private slots:
+-    void setpwdstyle(QString key);
+-};
+-
+-#endif // CHANGEPASSWD_H
+diff --git a/plugins/account/userinfo_intel/changephoneinteldialog.cpp b/plugins/account/userinfo_intel/changephoneinteldialog.cpp
+deleted file mode 100644
+index 1ec0b04..0000000
+--- a/plugins/account/userinfo_intel/changephoneinteldialog.cpp
++++ /dev/null
+@@ -1,485 +0,0 @@
+-#include "changephoneinteldialog.h"
+-#include "ui_changephoneinteldialog.h"
+-
+-#include <QLabel>
+-#include <QPushButton>
+-#include <QHBoxLayout>
+-#include <QVBoxLayout>
+-#include <QAction>
+-#include <QDebug>
+-
+-#define KYLIN_WIFI_GSETTING_VALUE "org.kylinnm.settings"
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-ChangePhoneIntelDialog::ChangePhoneIntelDialog(QString username, QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::ChangePhoneIntelDialog),
+-    m_interface1(NULL),
+-    m_interface2(NULL),
+-    m_isNightMode(NULL)
+-{
+-    ui->setupUi(this);
+-    qDebug() << "test3" << username;
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    initDbus();
+-    initUI(username);
+-    initConnect();
+-}
+-
+-void ChangePhoneIntelDialog::initDbus(){
+-    m_interface1 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                      "/cn/kylinos/SSOBackend",
+-                                                      "cn.kylinos.SSOBackend.eduplatform",
+-                                                      QDBusConnection::systemBus());
+-    m_interface2 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                      "/cn/kylinos/SSOBackend",
+-                                                      "cn.kylinos.SSOBackend.accounts",
+-                                                      QDBusConnection::systemBus());
+-    const QByteArray id(KYLIN_WIFI_GSETTING_VALUE);
+-    if (QGSettings::isSchemaInstalled(id)){
+-        m_wifi = new QGSettings(id);
+-    }
+-}
+-
+-void ChangePhoneIntelDialog::initUI(QString username){
+-    m_username = username;
+-    QFont ft, ft1;
+-    ft.setPointSize(16);
+-    ft1.setPointSize(10);
+-    ui->title_label->setText(tr("Change Phone"));
+-    ui->title_label->setObjectName("titleLabel");
+-    ui->title_label->setFont(ft);
+-    QPalette pa;
+-    pa.setColor(QPalette::WindowText,Qt::red);
+-    ui->label_3->setPalette(pa);
+-    ui->label_3->setFont(ft1);
+-    ui->label_3->hide();
+-    closeBtn = new QPushButton(this);
+-    closeBtn->setFixedSize(36, 36);
+-    closeBtn->setProperty("useIconHighlightEffect", true);
+-    closeBtn->setProperty("iconHighlightEffectMode", 1);
+-    closeBtn->setFlat(true);
+-    closeBtn->setIcon(QIcon(":/img/plugins/userinfo_intel/close.svg"));
+-    closeBtn->setAutoDefault(false);
+-    ui->horizontalLayout->addWidget(closeBtn);
+-    ui->phoneNumLine->setStyleSheet("QLineEdit{background-color: #F6F6F6; border: 0px;"
+-                                    "border-radius:8px;"
+-                                    "}");
+-    ui->verifyCodeLine->setStyleSheet("QLineEdit{background-color: #F6F6F6; border: 0px}");
+-    connect(closeBtn, &QPushButton::clicked, [=]{
+-        close();
+-    });
+-    const QByteArray id_1(UKUI_QT_STYLE);
+-    if (QGSettings::isSchemaInstalled(id_1)) {
+-        m_style = new QGSettings(id_1);
+-        QString themeName = m_style->get(UKUI_STYLE_KEY).toString();
+-        if( themeName == "ukui-light" || themeName == "ukui-default" | themeName == "ukui" )
+-            m_isNightMode = false;
+-        else
+-            m_isNightMode = true;
+-        qDebug() << "m_isNightMode = " << m_isNightMode;
+-        connect(m_style, &QGSettings::changed, this, &ChangePhoneIntelDialog::setphonestyle);
+-    }
+-
+-    phonePicture = new QAction(this);
+-    smsPicture = new QAction(this);
+-    phonePicture->setIcon(QIcon(":/img/plugins/userinfo_intel/phonenum.svg"));
+-    smsPicture->setIcon(QIcon(":/img/plugins/userinfo_intel/smscode.svg"));
+-    ui->phoneNumLine->setPlaceholderText(tr("Phone number"));
+-    ui->verifyCodeLine->setPlaceholderText(tr("SMS verification code"));
+-    ui->phoneNumLine->addAction(phonePicture, QLineEdit::LeadingPosition);
+-    ui->verifyCodeLine->addAction(smsPicture, QLineEdit::LeadingPosition);
+-
+-    /*
+-     * 输入手机号界面
+-    */
+-    QRegExp regx_DeviceID1("^[0-9]{1,11}$");
+-    QRegExp regx_DeviceID2("^[0-9]{1,6}$");
+-    QValidator *validator_DeviceID1 = new QRegExpValidator(regx_DeviceID1, ui->phoneNumLine);
+-    QValidator *validator_DeviceID2 = new QRegExpValidator(regx_DeviceID2, ui->verifyCodeLine);
+-    ui->phoneNumLine->setTextMargins(10, 0, 0, 0);
+-    ui->verifyCodeLine->setTextMargins(10, 0, 0, 0);
+-    ui->phoneNumLine->setValidator(validator_DeviceID1);
+-    ui->verifyCodeLine->setValidator(validator_DeviceID2);
+-
+-
+-    QDBusMessage result1 = m_interface1->call("CheckPhoneNumBind", m_username);
+-    QList<QVariant> outArgs1 = result1.arguments();
+-    int status1 = outArgs1.at(0).value<int>();
+-    if (status1 == 1) {
+-        oldphonestatus = true;
+-        QDBusMessage result2 = m_interface2->call("GetAccountBasicInfo", m_username);
+-        if (QDBusMessage::ErrorMessage == result2.type()) {
+-            qDebug() << "result2.type() = " << result2.type();
+-            qDebug() << "QDBusMessage::ErrorMessage = " << QDBusMessage::ErrorMessage;
+-            qDebug()<<"error";
+-            oldphone = "error";
+-        } else {
+-            QList<QVariant> outArgs2 = result2.arguments();
+-            oldphone = outArgs2.at(5).value<QString>();
+-        }
+-        ui->m_pTitle->setText(tr("Please input old phone number"));
+-        ui->submitButton->setText(tr("Next"));
+-    } else {
+-        oldphonestatus =false;      // 该微信号没有绑定手机号
+-        ui->m_pTitle->setText(tr("Please enter new mobile number"));
+-        ui->submitButton->setText(tr("Submit"));
+-    }
+-    phonechangestatus = false;
+-    phonestatus = false;
+-    codestatus = false;
+-    phoneNumChangeSuccess = false;
+-    ui->submitButton->setEnabled(false);
+-    //ui->getVerifyCode->setEnabled(false);
+-
+-    /*
+-     * 修改成功界面
+-    */
+-    QFont ft2;
+-    ft2.setPointSize(18);
+-    ui->label->setFont(ft);
+-    ui->label->setProperty("class", "titleLB");
+-    ui->label->setText(tr("changed success"));
+-    ui->label_2->setText(tr("You have successfully modified your phone"));
+-    ui->successicon->setPixmap(QPixmap(":/img/plugins/userinfo_intel/successed.png"));
+-}
+-
+-void ChangePhoneIntelDialog::initConnect(){
+-    connect(ui->getVerifyCode, SIGNAL(clicked(bool)), this, SLOT(slotGetVerifyCode(bool)));
+-    if (oldphonestatus) {
+-        QString m_clonephone = oldphone.mid(0,3)+"****"+oldphone.mid(7,4);
+-        ui->phoneNumLine->setText(m_clonephone);
+-        ui->phoneNumLine->setReadOnly(true);
+-        phonestatus = true;
+-    } else {
+-        phonestatus = false;
+-    }
+-    connect(ui->phoneNumLine, &QLineEdit::textChanged, this, [=](){
+-        ui->label_3->hide();
+-        if (ui->phoneNumLine->text().count() == 11) {
+-            ui->getVerifyCode->setEnabled(true);
+-            phonestatus = true;
+-        } else {
+-            ui->getVerifyCode->setEnabled(false);
+-            phonestatus = false;
+-        }
+-        if (phonestatus && codestatus) {
+-            ui->submitButton->setEnabled(true);
+-        } else {
+-            ui->submitButton->setEnabled(false);
+-        }
+-    });
+-
+-    connect(ui->verifyCodeLine, &QLineEdit::textChanged, this, [=](){
+-        if (ui->verifyCodeLine->text().count() == 6) {
+-            codestatus =true;
+-        } else {
+-            ui->submitButton->setEnabled(false);
+-            codestatus =false;
+-        }
+-        if (phonestatus && codestatus) {
+-            ui->submitButton->setEnabled(true);
+-        } else {
+-            ui->submitButton->setEnabled(false);
+-        }
+-    });
+-
+-    connect(ui->submitButton, &QPushButton::clicked, this, &ChangePhoneIntelDialog::slotSubmitClicked);
+-}
+-
+-void ChangePhoneIntelDialog::slotGetVerifyCode(bool clicked){
+-    Q_UNUSED(clicked);
+-    start_timer = new QTimer();
+-    countdown = 60;
+-    QString s = tr("Recapture");
+-    QString s1 = QString::number(countdown);
+-    QString s2 = "("+s1+")";
+-    QString s3 = s+s2;
+-    QDBusMessage result;
+-    if (phonechangestatus || !oldphonestatus) {
+-        result = m_interface1->call("GetVerifyCode",ui->phoneNumLine->text());
+-    } else {
+-        result = m_interface1->call("GetVerifyCode",oldphone);
+-    }
+-    ui->label_3->hide();
+-    QList<QVariant> outArgs = result.arguments();
+-    int codestatus = outArgs.at(0).value<int>();
+-    if (codestatus == 6 || codestatus == 28) {
+-        ui->label_3->setText(tr("Network connection failure, please check"));
+-        if(!(ui->label_3->isVisible())){
+-           ui->label_3->show();
+-        }
+-        return;
+-    }
+-    ui->getVerifyCode->setEnabled(false);
+-    ui->getVerifyCode->setText(s3);
+-    start_timer->start(1000);
+-    connect(start_timer,&QTimer::timeout,this,[=](){
+-       QString s = tr("Recapture");
+-       if (countdown > 0){
+-           countdown--;
+-           qDebug() << countdown;
+-           QString s1 = QString::number(countdown);
+-           QString s2 = "("+s1+")";
+-           QString s3 = s+s2;
+-           qDebug() << s3;
+-           ui->getVerifyCode->setText(s3);
+-       } else {
+-           ui->getVerifyCode->setText(tr("GetCode"));
+-           ui->getVerifyCode->setEnabled(true);
+-           start_timer->stop();
+-       }
+-    });
+-}
+-
+-void ChangePhoneIntelDialog::slotSubmitClicked(bool clicked){
+-    Q_UNUSED(clicked)
+-    if ( phoneNumChangeSuccess == true ){
+-        close();
+-    }
+-    if (oldphonestatus == true) {           // 微信已经绑定过手机号
+-        if (phonechangestatus == false) {
+-            QDBusMessage result3 = m_interface1->call("ApplyChangeInfoToken",m_username, oldphone, ui->verifyCodeLine->text());
+-            QList<QVariant> outArgs3 = result3.arguments();
+-            temptoken = outArgs3.at(0).value<QString>();
+-            int status = outArgs3.at(1).value<int>();
+-            if (status == 0) {
+-                ui->label_3->hide();
+-                ui->m_pTitle->setText(tr("Please enter new mobile number"));
+-                ui->submitButton->setText(tr("Submit"));
+-                if (start_timer->isActive()){
+-                    start_timer->stop();
+-                }
+-                ui->getVerifyCode->setText(tr("GetCode"));
+-                oldcode = ui->verifyCodeLine->text();
+-                qDebug() << oldcode;
+-                ui->phoneNumLine->setReadOnly(false);
+-                ui->phoneNumLine->clear();
+-                ui->verifyCodeLine->clear();
+-                phonechangestatus = true;
+-            } else if (status == 9014) {
+-                ui->label_3->setText(tr("Phone is lock,try again in an hour"));
+-                ui->label_3->show();
+-            }  else if (status == 9000) {
+-                ui->label_3->setText(tr("Phone code is wrong"));
+-                ui->label_3->show();
+-                ui->verifyCodeLine->clear();
+-            } else if (status == 6 || status == 28) {
+-                ui->label_3->setText(tr("Network connection failure, please check"));
+-                ui->label_3->show();
+-            } else if (status == 2300) {
+-                ui->label_3->setText(tr("Current login expired,using wechat code!"));
+-                ui->label_3->show();
+-            } else {
+-                ui->label_3->setText(tr("Unknown error, please try again later"));
+-                ui->verifyCodeLine->clear();
+-                ui->label_3->show();
+-            }
+-
+-        } else {
+-            if (oldphone == ui->phoneNumLine->text()) {
+-                ui->label_3->setText(tr("Phone can not same"));
+-                ui->label_3->show();
+-            } else {
+-                QDBusMessage result3 = m_interface1->call("ReBindPhone", m_username, ui->phoneNumLine->text(),ui->verifyCodeLine->text(),temptoken);
+-                QList<QVariant> outArgs3 = result3.arguments();
+-                int status = outArgs3.at(0).value<int>();
+-                if (status == 0) {
+-                    phoneNumChangeSuccess = true;
+-                    ui->label_3->hide();
+-                    ui->submitButton->setText(tr("finished"));
+-                    ui->m_pStackedWidget->setCurrentIndex(1);
+-                } else if (status == 9014) {
+-                    ui->label_3->setText(tr("Phone is lock,try again in an hour"));
+-                    ui->label_3->show();
+-                }  else if (status == 9000) {
+-                    ui->label_3->setText(tr("Phone code is wrong"));
+-                    ui->label_3->show();
+-                    ui->verifyCodeLine->clear();
+-                } else if (status == 9009) {
+-                    ui->label_3->setText(tr("Phone number already in used!"));
+-                    ui->label_3->show();
+-                } else if (status == 6 || status == 28) {
+-                    ui->label_3->setText(tr("Network connection failure, please check"));
+-                    ui->label_3->show();
+-                } else {
+-                    ui->label_3->setText(tr("Unknown error, please try again later"));
+-                    ui->verifyCodeLine->clear();
+-                    ui->label_3->show();
+-                }
+-            }
+-        }
+-    } else {                // 微信没有绑定手机号,直接绑定即可
+-        QDBusMessage result4 = m_interface1->call("BindPhoneNum", m_username, ui->phoneNumLine->text(), ui->verifyCodeLine->text());
+-        QList<QVariant> outArgs4 = result4.arguments();
+-        int status = outArgs4.at(0).value<int>();
+-        if (status == 0) {
+-            phoneNumChangeSuccess = true;
+-            ui->submitButton->setText(tr("finished"));
+-            ui->label_3->setText(tr("You have successfully modified your phone"));
+-            ui->m_pStackedWidget->setCurrentIndex(1);
+-        } else if (status == 9014) {
+-            ui->label_3->setText(tr("Phone is lock,try again in an hour"));
+-            ui->label_3->show();
+-        } else if (status == 9000) {
+-            ui->label_3->setText(tr("Phone code is wrong"));
+-            ui->label_3->show();
+-            ui->verifyCodeLine->clear();
+-        } else if (status == 9009) {
+-            ui->label_3->setText(tr("Phone number already in used!"));
+-            ui->label_3->show();
+-        } else {
+-            ui->label_3->setText(tr("Unknown error, please try again later"));
+-            ui->label_3->show();
+-            ui->verifyCodeLine->clear();
+-        }
+-    }
+-}
+-
+-void ChangePhoneIntelDialog::setphonestyle(QString key)
+-{
+-    if(key == "styleName") {
+-        QString themeName = m_style->get(UKUI_STYLE_KEY).toString();
+-        if( themeName == "ukui-light" || themeName == "ukui-default" | themeName == "ukui" )
+-            m_isNightMode = false;
+-        else
+-            m_isNightMode = true;
+-        qDebug() << "m_isNightMode = " << m_isNightMode;
+-        update();
+-    }
+-}
+-void ChangePhoneIntelDialog::paintEvent(QPaintEvent *event)
+-{
+-    Q_UNUSED(event)
+-
+-    /*
+-     * 由于设置了窗口透明,所以对QLineEdit的背景设置会因为border没有设置而不生效
+-     * 圆角设置只有在paintEvent里才可以生效
+-    */
+-    if(!m_isNightMode){
+-        ui->phoneNumLine->setStyleSheet("QLineEdit{background-color: #F6F6F6; border: 0px;"
+-                                        "border-top-left-radius:8px;"
+-                                        "border-top-right-radius:8px;"
+-                                        "}");
+-        ui->verifyCodeLine->setStyleSheet("QLineEdit{background-color: #F6F6F6; border: 0px;"
+-                                          "border-bottom-left-radius:8px"
+-                                          "}");
+-        if (ui->getVerifyCode->isEnabled()) {
+-            ui->getVerifyCode->setStyleSheet("QPushButton{background-color:#F6F6F6;"
+-                                             "selection-background-color:#F6F6F6;"
+-                                             "border-bottom-right-radius:8px;"
+-                                             "color:#2FB3EB"
+-                                              "}");
+-        } else {
+-            ui->getVerifyCode->setStyleSheet("QPushButton{background-color:#F6F6F6;"
+-                                             "selection-background-color:#F6F6F6;"
+-                                             "border-bottom-right-radius:8px;"
+-                                             "color:#DDDDDD"
+-                                              "}");
+-        }
+-        ui->submitButton->setStyleSheet("QPushButton{border-radius:8px;background-color:#DDDDDD;}"
+-                                        "QPushButton:hover{border-radius:8px;background-color:#2FB3EB;}"
+-                                        "QPushButton:clicked{border-radius:8px;background-color:#2FB3EB;}");
+-    }
+-    else{
+-        ui->phoneNumLine->setStyleSheet("QLineEdit{background-color: #030303; border: 0px;"
+-                                        "border-top-left-radius:8px;"
+-                                        "border-top-right-radius:8px;"
+-                                        "}");
+-        ui->verifyCodeLine->setStyleSheet("QLineEdit{background-color: #030303; border: 0px;"
+-                                          "border-bottom-left-radius:8px"
+-                                          "}");
+-        if (ui->getVerifyCode->isEnabled()) {
+-            ui->getVerifyCode->setStyleSheet("QPushButton{background-color:#030303;"
+-                                             "selection-background-color:#030303;"
+-                                             "border-bottom-right-radius:8px;"
+-                                             "color:#2FB3EB"
+-                                              "}");
+-        } else {
+-            ui->getVerifyCode->setStyleSheet("QPushButton{background-color:#030303;"
+-                                             "selection-background-color:#030303;"
+-                                             "border-bottom-right-radius:8px;"
+-                                             "color:#DDDDDD"
+-                                              "}");
+-        }
+-        ui->submitButton->setStyleSheet("QPushButton{border-radius:8px;background-color:#31373F;}"
+-                                        "QPushButton:hover{border-radius:8px;background-color:#2FB3EB;}"
+-                                        "QPushButton:clicked{border-radius:8px;background-color:#2FB3EB;}");
+-    }
+-
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 16, 16);
+-//    rectPath.addRoundedRect(this->rect(), 16, 16);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 16, false, false);
+-
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-    p.restore();
+-    /*
+-
+-    int width = this->width();
+-    int height = this->height();
+-
+-    QPainter painter(this);
+-    painter.setRenderHint(QPainter::Antialiasing);
+-    painter.setPen(Qt::NoPen);
+-    QString s = m_style->get(UKUI_STYLE_KEY).toString();
+-    if (s=="ukui-dark" || s == "ukui-black") {
+-        QColor m_bgColor("grey");
+-        m_bgColor.setAlpha(255);
+-        painter.setBrush(m_bgColor);
+-        painter.drawRoundRect(0, 0, width, height, 5*height/width, 5);
+-    } else {
+-        QColor m_bgColor("#FFFFFF");
+-        m_bgColor.setAlpha(255);
+-        painter.setBrush(m_bgColor);
+-        painter.drawRoundRect(0, 0, width, height, 5*height/width, 5);
+-    }
+-    */
+-}
+-
+-ChangePhoneIntelDialog::~ChangePhoneIntelDialog(){
+-    qDebug() << "调用析构函数";
+-    delete m_style;
+-    if(m_interface1){
+-        delete m_interface1;
+-        m_interface1 = NULL;
+-    }
+-    if(m_interface2){
+-        delete m_interface2;
+-        m_interface2 = NULL;
+-    }
+-}
+diff --git a/plugins/account/userinfo_intel/changephoneinteldialog.h b/plugins/account/userinfo_intel/changephoneinteldialog.h
+deleted file mode 100644
+index e69d971..0000000
+--- a/plugins/account/userinfo_intel/changephoneinteldialog.h
++++ /dev/null
+@@ -1,80 +0,0 @@
+-#ifndef CHANGEPHONEINTELDIALOG_H
+-#define CHANGEPHONEINTELDIALOG_H
+-
+-#include <QWidget>
+-#include <QDialog>
+-#include <QStackedWidget>
+-#include <QPainterPath>
+-#include "QGSettings/QGSettings"
+-#include "digitalauthinteldialog.h"
+-#include "phoneauthinteldialog.h"
+-#include "digitalphoneinteldialog.h"
+-#define UKUI_QT_STYLE                      "org.ukui.style"
+-#define UKUI_STYLE_KEY                     "style-name"
+-
+-
+-class QLabel;
+-class QPushButton;
+-
+-namespace Ui {
+-class ChangePhoneIntelDialog;
+-}
+-
+-
+-class ChangePhoneIntelDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit ChangePhoneIntelDialog(QString username, QWidget *parent = nullptr);
+-    ~ChangePhoneIntelDialog();
+-
+-    void initUI(QString username);
+-    void initDbus();
+-    void initConnect();
+-
+-protected:
+-    void paintEvent(QPaintEvent *event) override;
+-
+-private:
+-    Ui::ChangePhoneIntelDialog *ui;
+-
+-    int countdown;
+-    QLabel *title_label;
+-    QLabel * getVerifiedCodeLabel;
+-    QPushButton *closeBtn;
+-    QStackedWidget  *m_pStackedWidget;
+-    DigitalAuthIntelDialog *m_pdigitalAuthWidget;
+-    PhoneAuthIntelDialog *m_pPhoneAuthWidget;
+-    DigitalPhoneIntelDialog *m_pdigitalPhoneWidget;
+-    QGSettings  *m_style = nullptr;
+-
+-    QAction *phonePicture;
+-    QAction *smsPicture;
+-
+-    QDBusInterface *m_interface1;
+-    QDBusInterface *m_interface2;
+-
+-    QTimer *start_timer;
+-
+-    QGSettings *m_wifi;
+-
+-    bool m_isNightMode;
+-    bool oldphonestatus;
+-    bool phonechangestatus;
+-    bool phonestatus;
+-    bool codestatus;
+-    bool phoneNumChangeSuccess;
+-    QString oldphone;
+-    QString oldcode;
+-    QString m_username;
+-    QString temptoken;
+-
+-private slots:
+-    void setphonestyle(QString key);
+-    void slotGetVerifyCode(bool clicked);
+-    void slotSubmitClicked(bool clicked);
+-
+-};
+-
+-#endif // CHANGEPHONEDIALOD_H
+diff --git a/plugins/account/userinfo_intel/changephoneinteldialog.ui b/plugins/account/userinfo_intel/changephoneinteldialog.ui
+deleted file mode 100644
+index 5b9ffbd..0000000
+--- a/plugins/account/userinfo_intel/changephoneinteldialog.ui
++++ /dev/null
+@@ -1,600 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>ChangePhoneIntelDialog</class>
+- <widget class="QDialog" name="ChangePhoneIntelDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>380</width>
+-    <height>596</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>380</width>
+-    <height>596</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>380</width>
+-    <height>596</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Dialog</string>
+-  </property>
+-  <property name="layoutDirection">
+-   <enum>Qt::LeftToRight</enum>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_5">
+-   <property name="spacing">
+-    <number>0</number>
+-   </property>
+-   <property name="leftMargin">
+-    <number>10</number>
+-   </property>
+-   <property name="topMargin">
+-    <number>10</number>
+-   </property>
+-   <property name="rightMargin">
+-    <number>10</number>
+-   </property>
+-   <property name="bottomMargin">
+-    <number>10</number>
+-   </property>
+-   <item>
+-    <widget class="QWidget" name="widget" native="true">
+-     <property name="minimumSize">
+-      <size>
+-       <width>360</width>
+-       <height>47</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>360</width>
+-       <height>47</height>
+-      </size>
+-     </property>
+-     <layout class="QHBoxLayout" name="horizontalLayout">
+-      <property name="leftMargin">
+-       <number>9</number>
+-      </property>
+-      <property name="rightMargin">
+-       <number>9</number>
+-      </property>
+-      <item>
+-       <widget class="QLabel" name="title_label">
+-        <property name="font">
+-         <font>
+-          <family>Noto Sans CJK SC</family>
+-          <pointsize>12</pointsize>
+-         </font>
+-        </property>
+-        <property name="text">
+-         <string>changephone</string>
+-        </property>
+-       </widget>
+-      </item>
+-      <item>
+-       <spacer name="horizontalSpacer">
+-        <property name="orientation">
+-         <enum>Qt::Horizontal</enum>
+-        </property>
+-        <property name="sizeHint" stdset="0">
+-         <size>
+-          <width>205</width>
+-          <height>20</height>
+-         </size>
+-        </property>
+-       </spacer>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <widget class="QStackedWidget" name="m_pStackedWidget">
+-     <property name="minimumSize">
+-      <size>
+-       <width>360</width>
+-       <height>430</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>360</width>
+-       <height>430</height>
+-      </size>
+-     </property>
+-     <property name="currentIndex">
+-      <number>0</number>
+-     </property>
+-     <widget class="QWidget" name="page">
+-      <layout class="QVBoxLayout" name="verticalLayout">
+-       <property name="spacing">
+-        <number>0</number>
+-       </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>
+-        <widget class="QWidget" name="widget_2" native="true">
+-         <property name="minimumSize">
+-          <size>
+-           <width>360</width>
+-           <height>89</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>360</width>
+-           <height>89</height>
+-          </size>
+-         </property>
+-         <property name="styleSheet">
+-          <string notr="true"/>
+-         </property>
+-         <layout class="QVBoxLayout" name="verticalLayout_2">
+-          <property name="spacing">
+-           <number>6</number>
+-          </property>
+-          <property name="leftMargin">
+-           <number>0</number>
+-          </property>
+-          <property name="topMargin">
+-           <number>18</number>
+-          </property>
+-          <property name="rightMargin">
+-           <number>0</number>
+-          </property>
+-          <property name="bottomMargin">
+-           <number>0</number>
+-          </property>
+-          <item>
+-           <layout class="QHBoxLayout" name="horizontalLayout_2">
+-            <item>
+-             <spacer name="horizontalSpacer_2">
+-              <property name="orientation">
+-               <enum>Qt::Horizontal</enum>
+-              </property>
+-              <property name="sizeHint" stdset="0">
+-               <size>
+-                <width>40</width>
+-                <height>20</height>
+-               </size>
+-              </property>
+-             </spacer>
+-            </item>
+-            <item>
+-             <widget class="QLabel" name="m_pTitle">
+-              <property name="font">
+-               <font>
+-                <pointsize>16</pointsize>
+-               </font>
+-              </property>
+-              <property name="styleSheet">
+-               <string notr="true"/>
+-              </property>
+-              <property name="text">
+-               <string>Please input old phone num</string>
+-              </property>
+-             </widget>
+-            </item>
+-            <item>
+-             <spacer name="horizontalSpacer_3">
+-              <property name="orientation">
+-               <enum>Qt::Horizontal</enum>
+-              </property>
+-              <property name="sizeHint" stdset="0">
+-               <size>
+-                <width>40</width>
+-                <height>20</height>
+-               </size>
+-              </property>
+-             </spacer>
+-            </item>
+-           </layout>
+-          </item>
+-          <item>
+-           <layout class="QHBoxLayout" name="horizontalLayout_3">
+-            <item>
+-             <spacer name="horizontalSpacer_4">
+-              <property name="orientation">
+-               <enum>Qt::Horizontal</enum>
+-              </property>
+-              <property name="sizeHint" stdset="0">
+-               <size>
+-                <width>40</width>
+-                <height>20</height>
+-               </size>
+-              </property>
+-             </spacer>
+-            </item>
+-            <item>
+-             <widget class="QLabel" name="label_3">
+-              <property name="minimumSize">
+-               <size>
+-                <width>0</width>
+-                <height>0</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>16777215</width>
+-                <height>16777215</height>
+-               </size>
+-              </property>
+-              <property name="styleSheet">
+-               <string notr="true"/>
+-              </property>
+-              <property name="text">
+-               <string>TextLabel</string>
+-              </property>
+-             </widget>
+-            </item>
+-            <item>
+-             <spacer name="horizontalSpacer_5">
+-              <property name="orientation">
+-               <enum>Qt::Horizontal</enum>
+-              </property>
+-              <property name="sizeHint" stdset="0">
+-               <size>
+-                <width>40</width>
+-                <height>20</height>
+-               </size>
+-              </property>
+-             </spacer>
+-            </item>
+-           </layout>
+-          </item>
+-          <item>
+-           <spacer name="verticalSpacer_2">
+-            <property name="orientation">
+-             <enum>Qt::Vertical</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>20</width>
+-              <height>18</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-         </layout>
+-        </widget>
+-       </item>
+-       <item>
+-        <widget class="QWidget" name="widget_3" native="true">
+-         <property name="minimumSize">
+-          <size>
+-           <width>360</width>
+-           <height>129</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>360</width>
+-           <height>129</height>
+-          </size>
+-         </property>
+-         <layout class="QVBoxLayout" name="verticalLayout_3">
+-          <property name="spacing">
+-           <number>0</number>
+-          </property>
+-          <property name="leftMargin">
+-           <number>24</number>
+-          </property>
+-          <property name="topMargin">
+-           <number>0</number>
+-          </property>
+-          <property name="rightMargin">
+-           <number>24</number>
+-          </property>
+-          <property name="bottomMargin">
+-           <number>0</number>
+-          </property>
+-          <item>
+-           <widget class="QLineEdit" name="phoneNumLine">
+-            <property name="minimumSize">
+-             <size>
+-              <width>312</width>
+-              <height>64</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>312</width>
+-              <height>64</height>
+-             </size>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <layout class="QHBoxLayout" name="horizontalLayout_5">
+-            <property name="spacing">
+-             <number>0</number>
+-            </property>
+-            <item>
+-             <widget class="QLineEdit" name="verifyCodeLine">
+-              <property name="minimumSize">
+-               <size>
+-                <width>184</width>
+-                <height>64</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>184</width>
+-                <height>64</height>
+-               </size>
+-              </property>
+-             </widget>
+-            </item>
+-            <item>
+-             <widget class="QPushButton" name="getVerifyCode">
+-              <property name="minimumSize">
+-               <size>
+-                <width>128</width>
+-                <height>64</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>128</width>
+-                <height>64</height>
+-               </size>
+-              </property>
+-              <property name="layoutDirection">
+-               <enum>Qt::LeftToRight</enum>
+-              </property>
+-              <property name="styleSheet">
+-               <string notr="true">background-color:transparent;
+-selection-background-color: transparent;</string>
+-              </property>
+-              <property name="text">
+-               <string>GetVerifyCode</string>
+-              </property>
+-              <property name="autoDefault">
+-               <bool>false</bool>
+-              </property>
+-              <property name="default">
+-               <bool>false</bool>
+-              </property>
+-             </widget>
+-            </item>
+-           </layout>
+-          </item>
+-         </layout>
+-        </widget>
+-       </item>
+-       <item>
+-        <spacer name="verticalSpacer">
+-         <property name="orientation">
+-          <enum>Qt::Vertical</enum>
+-         </property>
+-         <property name="sizeHint" stdset="0">
+-          <size>
+-           <width>20</width>
+-           <height>212</height>
+-          </size>
+-         </property>
+-        </spacer>
+-       </item>
+-      </layout>
+-     </widget>
+-     <widget class="QWidget" name="page_2">
+-      <layout class="QVBoxLayout" name="verticalLayout_6">
+-       <property name="spacing">
+-        <number>0</number>
+-       </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="verticalSpacer_3">
+-         <property name="orientation">
+-          <enum>Qt::Vertical</enum>
+-         </property>
+-         <property name="sizeHint" stdset="0">
+-          <size>
+-           <width>20</width>
+-           <height>52</height>
+-          </size>
+-         </property>
+-        </spacer>
+-       </item>
+-       <item>
+-        <widget class="QLabel" name="label">
+-         <property name="text">
+-          <string>TextLabel</string>
+-         </property>
+-         <property name="alignment">
+-          <set>Qt::AlignCenter</set>
+-         </property>
+-        </widget>
+-       </item>
+-       <item>
+-        <spacer name="verticalSpacer_4">
+-         <property name="orientation">
+-          <enum>Qt::Vertical</enum>
+-         </property>
+-         <property name="sizeHint" stdset="0">
+-          <size>
+-           <width>20</width>
+-           <height>54</height>
+-          </size>
+-         </property>
+-        </spacer>
+-       </item>
+-       <item>
+-        <widget class="QLabel" name="label_2">
+-         <property name="text">
+-          <string>TextLabel</string>
+-         </property>
+-         <property name="alignment">
+-          <set>Qt::AlignCenter</set>
+-         </property>
+-        </widget>
+-       </item>
+-       <item>
+-        <spacer name="verticalSpacer_5">
+-         <property name="orientation">
+-          <enum>Qt::Vertical</enum>
+-         </property>
+-         <property name="sizeHint" stdset="0">
+-          <size>
+-           <width>20</width>
+-           <height>52</height>
+-          </size>
+-         </property>
+-        </spacer>
+-       </item>
+-       <item>
+-        <layout class="QHBoxLayout" name="horizontalLayout_4">
+-         <item>
+-          <spacer name="horizontalSpacer_6">
+-           <property name="orientation">
+-            <enum>Qt::Horizontal</enum>
+-           </property>
+-           <property name="sizeHint" stdset="0">
+-            <size>
+-             <width>40</width>
+-             <height>20</height>
+-            </size>
+-           </property>
+-          </spacer>
+-         </item>
+-         <item>
+-          <widget class="QLabel" name="successicon">
+-           <property name="minimumSize">
+-            <size>
+-             <width>222</width>
+-             <height>159</height>
+-            </size>
+-           </property>
+-           <property name="maximumSize">
+-            <size>
+-             <width>222</width>
+-             <height>159</height>
+-            </size>
+-           </property>
+-           <property name="layoutDirection">
+-            <enum>Qt::LeftToRight</enum>
+-           </property>
+-           <property name="text">
+-            <string/>
+-           </property>
+-           <property name="alignment">
+-            <set>Qt::AlignCenter</set>
+-           </property>
+-          </widget>
+-         </item>
+-         <item>
+-          <spacer name="horizontalSpacer_7">
+-           <property name="orientation">
+-            <enum>Qt::Horizontal</enum>
+-           </property>
+-           <property name="sizeHint" stdset="0">
+-            <size>
+-             <width>40</width>
+-             <height>20</height>
+-            </size>
+-           </property>
+-          </spacer>
+-         </item>
+-        </layout>
+-       </item>
+-       <item>
+-        <spacer name="verticalSpacer_6">
+-         <property name="orientation">
+-          <enum>Qt::Vertical</enum>
+-         </property>
+-         <property name="sizeHint" stdset="0">
+-          <size>
+-           <width>20</width>
+-           <height>53</height>
+-          </size>
+-         </property>
+-        </spacer>
+-       </item>
+-      </layout>
+-     </widget>
+-    </widget>
+-   </item>
+-   <item>
+-    <widget class="QWidget" name="widget_4" native="true">
+-     <property name="minimumSize">
+-      <size>
+-       <width>360</width>
+-       <height>96</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>360</width>
+-       <height>96</height>
+-      </size>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_4">
+-      <property name="leftMargin">
+-       <number>24</number>
+-      </property>
+-      <property name="topMargin">
+-       <number>24</number>
+-      </property>
+-      <property name="rightMargin">
+-       <number>24</number>
+-      </property>
+-      <property name="bottomMargin">
+-       <number>24</number>
+-      </property>
+-      <item>
+-       <widget class="QPushButton" name="submitButton">
+-        <property name="minimumSize">
+-         <size>
+-          <width>312</width>
+-          <height>48</height>
+-         </size>
+-        </property>
+-        <property name="maximumSize">
+-         <size>
+-          <width>312</width>
+-          <height>48</height>
+-         </size>
+-        </property>
+-        <property name="text">
+-         <string>submit</string>
+-        </property>
+-        <property name="autoDefault">
+-         <bool>false</bool>
+-        </property>
+-       </widget>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-  </layout>
+- </widget>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/account/userinfo_intel/changepininteldialog.cpp b/plugins/account/userinfo_intel/changepininteldialog.cpp
+deleted file mode 100644
+index 07e6bce..0000000
+--- a/plugins/account/userinfo_intel/changepininteldialog.cpp
++++ /dev/null
+@@ -1,125 +0,0 @@
+-#include "changepininteldialog.h"
+-#include "ui_changepininteldialog.h"
+-#include <QDebug>
+-
+-#define INPUT_OLD_PWD 1
+-#define INPUT_NEW_PWD 2
+-#define REPEAT_NEW_PWD 3
+-
+-int ChangePinIntelDialog::m_isThemeChanged = 0;
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-ChangePinIntelDialog::ChangePinIntelDialog(QString username, QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::ChangePinIntelDialog)
+-{
+-    ui->setupUi(this);
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    closeBtn = new QPushButton(this);
+-    closeBtn->setFixedSize(36, 36);
+-    ui->horizontalLayout->addWidget(closeBtn);
+-    closeBtn->setProperty("useIconHighlightEffect", true);
+-    closeBtn->setProperty("iconHighlightEffectMode", 1);
+-    closeBtn->setFlat(true);
+-    closeBtn->setIcon(QIcon(":/img/plugins/userinfo_intel/close.svg"));
+-    closeBtn->setAutoDefault(false);
+-    connect(closeBtn, &QPushButton::clicked, [=]{
+-        close();
+-    });
+-
+-    m_pdigitalAuthWidget = new DigitalAuthIntelDialog(username);
+-    m_pPhoneAuthWidget = new PhoneAuthIntelDialog(username);
+-    ui->stackedWidget->addWidget(m_pdigitalAuthWidget);
+-    ui->stackedWidget->addWidget(m_pPhoneAuthWidget);
+-    ui->stackedWidget->setCurrentIndex(0);
+-
+-
+-    connect(m_pdigitalAuthWidget, &DigitalAuthIntelDialog::forgetpassword, [=](){
+-        ui->stackedWidget->setCurrentIndex(1);
+-    });
+-    connect(m_pPhoneAuthWidget, &PhoneAuthIntelDialog::returnSignal, [=](){
+-        ui->stackedWidget->setCurrentIndex(0);
+-    });
+-    connect(m_pPhoneAuthWidget, &PhoneAuthIntelDialog::confirmSignal, [=](){
+-        m_pdigitalAuthWidget->gotonext();
+-        ui->stackedWidget->setCurrentIndex(0);
+-    });
+-    connect(m_pdigitalAuthWidget, &DigitalAuthIntelDialog::ended, [=](){
+-        emit changepwd();
+-        close();
+-    });
+-    connect(this, &ChangePinIntelDialog::EmitThemeChanged, m_pPhoneAuthWidget, &PhoneAuthIntelDialog::themeChanged);
+-
+-    const QByteArray id_1(UKUI_QT_STYLE);
+-    if (QGSettings::isSchemaInstalled(id_1)) {
+-        m_style =new QGSettings(id_1);
+-        connect(m_style, &QGSettings::changed, this, &ChangePinIntelDialog::setpwdstyle);
+-    }
+-    setpwdstyle("styleName");
+-}
+-
+-ChangePinIntelDialog::~ChangePinIntelDialog()
+-{
+-    delete ui;
+-    delete m_style;
+-}
+-
+-void ChangePinIntelDialog::paintEvent(QPaintEvent *event) {
+-    Q_UNUSED(event)
+-
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 16, 16);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 16, false, false);
+-
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-    p.restore();
+-
+-}
+-
+-void ChangePinIntelDialog::setpwdstyle(QString key){
+-    if(key == "styleName") {
+-        QString currentTheme = m_style->get(UKUI_STYLE_KEY).toString();
+-        if(currentTheme == "ukui-default" || currentTheme == "ukui-white"
+-                || currentTheme == "ukui-light" || currentTheme == "ukui"){
+-            ChangePinIntelDialog::m_isThemeChanged = 0;
+-        }else if(currentTheme == "ukui-dark" || currentTheme == "ukui-black"){
+-            ChangePinIntelDialog::m_isThemeChanged = 1;
+-        }
+-        emit EmitThemeChanged(ChangePinIntelDialog::m_isThemeChanged);
+-        update();
+-    }
+-}
+diff --git a/plugins/account/userinfo_intel/changepininteldialog.h b/plugins/account/userinfo_intel/changepininteldialog.h
+deleted file mode 100644
+index 4ea090e..0000000
+--- a/plugins/account/userinfo_intel/changepininteldialog.h
++++ /dev/null
+@@ -1,57 +0,0 @@
+-#ifndef CHANGEPININTELDIALOG_H
+-#define CHANGEPININTELDIALOG_H
+-
+-#include <QDialog>
+-#include <QWidget>
+-#include <QPaintEvent>
+-#include <QPainter>
+-#include <QPainterPath>
+-#include <QMouseEvent>
+-#include <QSharedPointer>
+-#include <QVBoxLayout>
+-#include <QFrame>
+-#include <QHBoxLayout>
+-#include <QString>
+-#include <QGSettings/QGSettings>
+-#include "digitalauthinteldialog.h"
+-#include "phoneauthinteldialog.h"
+-#include "changepwdinteldialog.h"
+-#define UKUI_QT_STYLE                      "org.ukui.style"
+-#define UKUI_STYLE_KEY                     "style-name"
+-
+-class QLabel;
+-class QPushButton;
+-
+-namespace Ui {
+-class ChangePinIntelDialog;
+-}
+-
+-class ChangePinIntelDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit ChangePinIntelDialog(QString username, QWidget *parent = nullptr);
+-    ~ChangePinIntelDialog();
+-    static int m_isThemeChanged;                                    //主题
+-
+-protected:
+-    void paintEvent(QPaintEvent *);
+-
+-private:
+-    Ui::ChangePinIntelDialog *ui;
+-    QPushButton *closeBtn;
+-    DigitalAuthIntelDialog *m_pdigitalAuthWidget;
+-    PhoneAuthIntelDialog *m_pPhoneAuthWidget;
+-    ChangePwdIntelDialog *m_pChangePwdDialog;
+-    QGSettings  *m_style = nullptr;
+-
+-Q_SIGNALS:
+-    void EmitThemeChanged(int theme);
+-    void changepwd();
+-
+-private slots:
+-    void setpwdstyle(QString key);
+-};
+-
+-#endif // CHANGEPININTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/changepininteldialog.ui b/plugins/account/userinfo_intel/changepininteldialog.ui
+deleted file mode 100644
+index 14b2c1a..0000000
+--- a/plugins/account/userinfo_intel/changepininteldialog.ui
++++ /dev/null
+@@ -1,105 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>ChangePinIntelDialog</class>
+- <widget class="QDialog" name="ChangePinIntelDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>380</width>
+-    <height>596</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>380</width>
+-    <height>596</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>380</width>
+-    <height>596</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Dialog</string>
+-  </property>
+-  <property name="layoutDirection">
+-   <enum>Qt::LeftToRight</enum>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout">
+-   <property name="leftMargin">
+-    <number>10</number>
+-   </property>
+-   <property name="topMargin">
+-    <number>10</number>
+-   </property>
+-   <property name="rightMargin">
+-    <number>10</number>
+-   </property>
+-   <property name="bottomMargin">
+-    <number>10</number>
+-   </property>
+-   <item>
+-    <widget class="QFrame" name="frame">
+-     <property name="minimumSize">
+-      <size>
+-       <width>360</width>
+-       <height>47</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>360</width>
+-       <height>47</height>
+-      </size>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::StyledPanel</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <layout class="QHBoxLayout" name="horizontalLayout">
+-      <property name="topMargin">
+-       <number>0</number>
+-      </property>
+-      <property name="bottomMargin">
+-       <number>0</number>
+-      </property>
+-      <item>
+-       <widget class="QLabel" name="titleLabel">
+-        <property name="text">
+-         <string>Change Password</string>
+-        </property>
+-       </widget>
+-      </item>
+-      <item>
+-       <spacer name="horizontalSpacer">
+-        <property name="orientation">
+-         <enum>Qt::Horizontal</enum>
+-        </property>
+-        <property name="sizeHint" stdset="0">
+-         <size>
+-          <width>205</width>
+-          <height>20</height>
+-         </size>
+-        </property>
+-       </spacer>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <widget class="QStackedWidget" name="stackedWidget">
+-     <property name="currentIndex">
+-      <number>-1</number>
+-     </property>
+-    </widget>
+-   </item>
+-  </layout>
+- </widget>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/account/userinfo_intel/changepwd.qrc b/plugins/account/userinfo_intel/changepwd.qrc
+deleted file mode 100644
+index 5667106..0000000
+--- a/plugins/account/userinfo_intel/changepwd.qrc
++++ /dev/null
+@@ -1,5 +0,0 @@
+-<RCC>
+-    <qresource prefix="/">
+-        <file>phoneauthinteldialog.qss</file>
+-    </qresource>
+-</RCC>
+diff --git a/plugins/account/userinfo_intel/changepwdinteldialog.cpp b/plugins/account/userinfo_intel/changepwdinteldialog.cpp
+deleted file mode 100644
+index 3223909..0000000
+--- a/plugins/account/userinfo_intel/changepwdinteldialog.cpp
++++ /dev/null
+@@ -1,582 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "changepwdinteldialog.h"
+-#include "ui_changepwdinteldialog.h"
+-#include "userinfo_intel.h"
+-
+-#include "elipsemaskwidget.h"
+-#include "passwdcheckutil.h"
+-
+-#include <QStyledItemDelegate>
+-#include <QGraphicsDropShadowEffect>
+-
+-#include <QDebug>
+-
+-#define PWD_LOW_LENGTH 6
+-#define PWD_HIGH_LENGTH 20
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-ChangePwdIntelDialog::ChangePwdIntelDialog(QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::ChangePwdIntelDialog)
+-{
+-    ui->setupUi(this);
+-
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    ui->oldPwdLineEdit->hide();
+-    ui->pwdFrame->show();
+-
+-//    ui->frame->setStyleSheet(".QFrame{background:rgba(255,255,255,1); border:1px solid rgba(201,201,201,1); border-radius:16px;}");
+-//    QGraphicsDropShadowEffect *frame_shadow = new QGraphicsDropShadowEffect(this);
+-//    frame_shadow->setYOffset(0);
+-//    frame_shadow->setColor("rgba(47,56,64,0.15)");
+-//    frame_shadow->setBlurRadius(16);
+-//    ui->frame->setGraphicsEffect(frame_shadow);
+-
+-//    顶边栏样式,此控件样式应由主题控制
+-//    ui->topWidget->setStyleSheet(".QWidget{background:rgba(246,246,246,1);}");
+-
+-//    ui->titleLabel->setStyleSheet("QLabel{font-size: 14px; color: palette(windowText);}");
+-//    ui->label_5->setStyleSheet("QLabel{font-size: 16px; color: palette(windowText);}");
+-//    ui->pwdLabel->setStyleSheet("QLabel{font-size: 16px; color: palette(windowText);}");
+-//    ui->pwdsureLabel->setStyleSheet("QLabel{font-size: 16px; color: palette(windowText);}");
+-//    ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius:12px;background:rgba(245,245,245,1);}");
+-//    ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius:12px;background:rgba(245,245,245,1);}");
+-//    ui->pwdFrame->setStyleSheet("QFrame{border: 0px; border-radius:12px;background:rgba(235,235,235,1);}");
+-//    ui->cancelPushBtn->setStyleSheet(ui->cancelPushBtn->styleSheet().append(QString("border-radius:12px;")));
+-//    ui->confirmPushBtn->setStyleSheet("QPushButton{border-radius:12px;}");
+-
+-    ui->closeBtn->setProperty("useIconHighlightEffect", true);
+-    ui->closeBtn->setProperty("iconHighlightEffectMode", 1);
+-    ui->closeBtn->setFlat(true);
+-    ui->closeBtn->setStyleSheet("QPushButton:hover:!pressed#closeBtn{background: #FA6056; border-radius: 4px;}"
+-                                "QPushButton:hover:pressed#closeBtn{background: #E54A50; border-radius: 4px;}");
+-
+-    ui->pwdFrame->setFrameShape(QFrame::Shape::Box);
+-
+-    ui->closeBtn->setIcon(QIcon("://img/titlebar/close.svg"));
+-
+-    ui->oldPwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                      "background: palett(base);}");
+-    ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                      "background: palett(base);}");
+-    ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                      "background: palett(base);}");
+-    ui->oldPwdLineEdit->installEventFilter(this);
+-    ui->pwdLineEdit->installEventFilter(this);
+-    ui->pwdsureLineEdit->installEventFilter(this);
+-
+-    isOldPwdVisibel = false;
+-    isNewPwdVisibel = false;
+-    isSurePwdVisibel = false;
+-
+-    cmd = new QProcess(this);
+-    cmd->setProgram("passwd");
+-//    cmd->start();
+-
+-    initPwdChecked();
+-    setupComponent();
+-    setupConnect();
+-}
+-
+-ChangePwdIntelDialog::~ChangePwdIntelDialog()
+-{
+-    delete ui;
+-    if (cmd->state() == QProcess::Running) {
+-        cmd->terminate();
+-        cmd->waitForFinished();
+-    }
+-}
+-
+-bool ChangePwdIntelDialog::eventFilter(QObject *w, QEvent *e) {
+-    if(w == ui->oldPwdLineEdit) {
+-        if(e->type() == QEvent::MouseButtonPress) {
+-            ui->oldPwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);"
+-                                              "border: 2px solid #2FB3E8;}");
+-            ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);}");
+-            ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);}");
+-        }
+-    }
+-    if(w == ui->pwdLineEdit) {
+-        if(e->type() == QEvent::MouseButtonPress) {
+-            ui->oldPwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);}");
+-            ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);"
+-                                              "border: 2px solid #2FB3E8;}");
+-            ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);}");
+-        }
+-    }
+-    if(w == ui->pwdsureLineEdit) {
+-        if(e->type() == QEvent::MouseButtonPress) {
+-            ui->oldPwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);}");
+-            ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);}");
+-            ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);"
+-                                              "border: 2px solid #2FB3E8;}");
+-        }
+-    }
+-    return QWidget::eventFilter(w,e);
+-}
+-
+-void ChangePwdIntelDialog::initPwdChecked(){
+-#ifdef ENABLEPQ
+-    int ret;
+-    void *auxerror;
+-    char buf[255];
+-
+-    settings = pwquality_default_settings();
+-    if (settings == NULL) {
+-        enablePwdQuality = false;
+-        qDebug() << "init pwquality settings failed";
+-    } else {
+-        enablePwdQuality = true;
+-    }
+-
+-    ret = pwquality_read_config(settings, PWCONF, &auxerror);
+-    if (ret != 0){
+-        enablePwdQuality = false;
+-        qDebug() << "Reading pwquality configuration file failed: " << pwquality_strerror(buf, sizeof(buf), ret, auxerror);
+-    } else {
+-        enablePwdQuality = true;
+-    }
+-
+-    if (PasswdCheckUtil::getCurrentPamState())
+-        enablePwdQuality = true;
+-    else
+-        enablePwdQuality = false;
+-
+-#else
+-    enablePwdQuality = false;
+-#endif
+-}
+-
+-void ChangePwdIntelDialog::setupComponent(){
+-
+-    ElipseMaskWidget * cpMaskWidget = new ElipseMaskWidget(ui->faceLabel);
+-    cpMaskWidget->setGeometry(0, 0, ui->faceLabel->width(), ui->faceLabel->height());
+-
+-    ui->pwdtypeComboBox->setText(tr("General Pwd"));
+-
+-    ui->oldPwdLineEdit->setEchoMode(QLineEdit::Password);
+-    ui->pwdLineEdit->setEchoMode(QLineEdit::Password);
+-    ui->pwdsureLineEdit->setEchoMode(QLineEdit::Password);
+-
+-    QPalette pa;
+-    pa.setColor(QPalette::WindowText,Qt::red);
+-    ui->tipLabel->setPalette(pa);
+-    ui->tipLabel_2->setPalette(pa);
+-    ui->tipLabel_3->setPalette(pa);
+-
+-    ui->oldPwdLineEdit->setPlaceholderText(tr("Old Password"));
+-    ui->pwdLineEdit->setPlaceholderText(tr("New Password"));
+-    ui->pwdsureLineEdit->setPlaceholderText(tr("New Password Identify"));
+-
+-    ui->oldPwdLineEdit->setTextMargins(16,0,32,0);
+-    ui->pwdLineEdit->setTextMargins(16,0,32,0);
+-    ui->pwdsureLineEdit->setTextMargins(16,0,32,0);
+-    oldPwdLineEditHLayout = new QHBoxLayout();
+-    pwdLineEditHLayout = new QHBoxLayout();
+-    pwdsureLineEditHLayout = new QHBoxLayout();
+-
+-    showOldPwdBtn = new QPushButton();
+-    showOldPwdBtn->setFixedSize(QSize(16, 16));
+-
+-    oldPwdLineEditHLayout->addStretch();
+-    oldPwdLineEditHLayout->addWidget(showOldPwdBtn);
+-    oldPwdLineEditHLayout->setContentsMargins(0,0,16,0);
+-    ui->oldPwdLineEdit->setLayout(oldPwdLineEditHLayout);
+-
+-    showPwdBtn = new QPushButton();
+-    showPwdBtn->setFixedSize(QSize(16, 16));
+-
+-    pwdLineEditHLayout->addStretch();
+-    pwdLineEditHLayout->addWidget(showPwdBtn);
+-    pwdLineEditHLayout->setContentsMargins(0,0,16,0);
+-    ui->pwdLineEdit->setLayout(pwdLineEditHLayout);
+-
+-    showSurePwdBtn = new QPushButton();
+-    showSurePwdBtn->setFixedSize(QSize(16, 16));
+-
+-    pwdsureLineEditHLayout->addStretch();
+-    pwdsureLineEditHLayout->addWidget(showSurePwdBtn);
+-    pwdsureLineEditHLayout->setContentsMargins(0,0,16,0);
+-    ui->pwdsureLineEdit->setLayout(pwdsureLineEditHLayout);
+-
+-    showOldPwdBtn->setCursor(QCursor(Qt::ArrowCursor));
+-    showPwdBtn->setCursor(QCursor(Qt::ArrowCursor));
+-    showSurePwdBtn->setCursor(QCursor(Qt::ArrowCursor));
+-
+-//    showOldPwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}"
+-//                              "QPushButton:pressed{border-image: url(:/img/plugins/userinfo_intel/pwdUnscramble.png);}");
+-//    showPwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}"
+-//                              "QPushButton:pressed{border-image: url(:/img/plugins/userinfo_intel/pwdUnscramble.png);}");
+-//    showSurePwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}"
+-//                              "QPushButton:pressed{border-image: url(:/img/plugins/userinfo_intel/pwdUnscramble.png);}");
+-    showOldPwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}");
+-    showPwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}");
+-    showSurePwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}");
+-    connect(showOldPwdBtn, &QPushButton::clicked, this, [=]{
+-        if(isOldPwdVisibel){
+-            ui->oldPwdLineEdit->setEchoMode(QLineEdit::Password);
+-            isOldPwdVisibel = false;
+-            showOldPwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}");
+-
+-        } else {
+-            ui->oldPwdLineEdit->setEchoMode(QLineEdit::Normal);
+-            isOldPwdVisibel = true;
+-            showOldPwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdUnscramble.png);}");
+-        }
+-        ui->oldPwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);"
+-                                          "border: 2px solid #2FB3E8;}");
+-        ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);}");
+-        ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);}");
+-        ui->oldPwdLineEdit->setFocus();
+-    });
+-//    connect(showOldPwdBtn, &QPushButton::released, this, [=]{
+-//        ui->oldPwdLineEdit->setEchoMode(QLineEdit::Password);
+-//        ui->oldPwdLineEdit->setFocus();
+-//    });
+-    connect(showPwdBtn, &QPushButton::clicked, this, [=]{
+-        if(isNewPwdVisibel){
+-            ui->pwdLineEdit->setEchoMode(QLineEdit::Password);
+-            isNewPwdVisibel = false;
+-            showPwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}");
+-
+-        } else {
+-            ui->pwdLineEdit->setEchoMode(QLineEdit::Normal);
+-            isNewPwdVisibel = true;
+-            showPwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdUnscramble.png);}");
+-        }
+-        ui->oldPwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);}");
+-        ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);"
+-                                          "border: 2px solid #2FB3E8;}");
+-        ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);}");
+-        ui->pwdLineEdit->setFocus();
+-    });
+-//    connect(showPwdBtn, &QPushButton::released, this, [=]{
+-//        ui->pwdLineEdit->setEchoMode(QLineEdit::Password);
+-//        ui->pwdLineEdit->setFocus();
+-//    });
+-    connect(showSurePwdBtn, &QPushButton::clicked, this, [=]{
+-        if(isSurePwdVisibel){
+-            ui->pwdsureLineEdit->setEchoMode(QLineEdit::Password);
+-            isSurePwdVisibel = false;
+-            showSurePwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}");
+-
+-        } else {
+-            ui->pwdsureLineEdit->setEchoMode(QLineEdit::Normal);
+-            isSurePwdVisibel = true;
+-            showSurePwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdUnscramble.png);}");
+-        }
+-        ui->oldPwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);}");
+-        ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);}");
+-        ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);"
+-                                          "border: 2px solid #2FB3E8;}");
+-        ui->pwdsureLineEdit->setFocus();
+-    });
+-//    connect(showSurePwdBtn, &QPushButton::released, this, [=]{
+-//        ui->pwdsureLineEdit->setEchoMode(QLineEdit::Password);
+-//        ui->pwdsureLineEdit->setFocus();
+-//    });
+-    refreshConfirmBtnStatus();
+-}
+-
+-void ChangePwdIntelDialog::setupConnect(){
+-    connect(ui->closeBtn, &QPushButton::clicked, [=]{
+-        if (cmd->state() == QProcess::Running) {
+-            cmd->kill();
+-            cmd->waitForFinished();
+-        }
+-        close();
+-    });
+-
+-    connect(ui->oldPwdLineEdit, &QLineEdit::textChanged, [=](QString text){
+-        if(!text.isEmpty() && text == ui->pwdLineEdit->text()){
+-            ui->tipLabel_3->setText(tr("Please set different pwd!"));
+-        } else {
+-            ui->tipLabel_3->setText("");
+-        }
+-        refreshConfirmBtnStatus();
+-    });
+-    connect(ui->pwdLineEdit, &QLineEdit::textChanged, [=](QString text){
+-        pwdLegalityCheck(text);
+-        if(!text.isEmpty() && text == ui->oldPwdLineEdit->text()){
+-            ui->tipLabel_3->setText(tr("Please set different pwd!"));
+-        } else {
+-            ui->tipLabel_3->setText("");
+-        }
+-        refreshConfirmBtnStatus();
+-    });
+-    connect(ui->pwdsureLineEdit, &QLineEdit::textChanged, [=](QString text){
+-        if (!text.isEmpty() && text != ui->pwdLineEdit->text()){
+-            pwdSureTip = tr("Inconsistency with pwd");
+-        } else {
+-            pwdSureTip = "";
+-        }
+-
+-        ui->tipLabel->setText(pwdSureTip);
+-        if (pwdSureTip.isEmpty()){
+-            pwdTip.isEmpty() ? ui->tipLabel->setText(nameTip) : ui->tipLabel->setText(pwdTip);
+-        }
+-
+-        refreshConfirmBtnStatus();
+-    });
+-
+-    connect(ui->cancelPushBtn, &QPushButton::clicked, [=]{
+-        if (cmd->state() == QProcess::Running) {
+-            cmd->kill();
+-            cmd->waitForFinished();
+-        }
+-        reject();
+-    });
+-    connect(ui->confirmPushBtn, &QPushButton::clicked, [=]{
+-        if(ui->oldPwdLineEdit->isVisible()){
+-            process = 0;
+-            cmd->start();
+-            cmd->waitForStarted();
+-            //验证当前密码
+-//            if(ui->oldPwdLineEdit->text() == ""){
+-//                ui->tipLabel_3->setText(tr("Old pwd can not be void!"));
+-//            } else {
+-//                ui->tipLabel_3->setText(tr("Old pwd is wrong!"));
+-//            }
+-            cmd->write(ui->oldPwdLineEdit->text().toLocal8Bit() + '\n');
+-//            cmd->waitForStarted();
+-            cmd->write(ui->pwdLineEdit->text().toLocal8Bit() + '\n');
+-//            cmd->waitForStarted();
+-            cmd->write(ui->pwdsureLineEdit->text().toLocal8Bit() + '\n');
+-            //新旧密码相似度过高时,输入不匹配的密码来使cmd结束
+-            cmd->write("a\n");
+-            cmd->write("b\n");
+-            ui->confirmPushBtn->setEnabled(false);
+-        } else {
+-            this->accept();
+-            emit passwd_send(ui->pwdLineEdit->text(), ui->usernameLabel->text());
+-        }
+-//        emit passwd_send(ui->pwdLineEdit->text(), ui->usernameLabel->text());
+-    });
+-
+-    connect(cmd, &QProcess::started, this, &ChangePwdIntelDialog::on_started);
+-    connect(cmd, &QProcess::bytesWritten, this, &ChangePwdIntelDialog::on_byteWritten);
+-    //一次输入结束后,重新拉起cmd process
+-    connect(cmd, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
+-            [=](int exitCode, QProcess::ExitStatus exitStatus){
+-//                Q_UNUSED(exitCode);
+-//                Q_UNUSED(exitStatus);
+-                qDebug()<<"exitCode: "<<exitCode;
+-                qDebug()<<"cmd->Finished !";
+-                ui->confirmPushBtn->setEnabled(true);
+-                if(exitStatus == QProcess::NormalExit){
+-                    if(exitCode == 0){
+-                        //密码修改成功
+-    //                    int ret1 = QMessageBox::warning(this, tr("Warning"),tr("change pwd successfully!"), QMessageBox::Abort);
+-                        this->close();
+-                    } else {
+-                        //密码验证失败时,process为3,密码相似度过高时,process为4,密码修改成功时,process为5
+-                        if(process == 3) {
+-                            ui->tipLabel_3->setText(tr("Old pwd is wrong!"));
+-                        } else if (process == 4) {
+-                            ui->tipLabel_2->setText(tr("New pwd is too similar with old pwd!"));
+-                        }
+-                    }
+-                } else {
+-                    //exitstatus == crashed or others
+-                    ui->tipLabel_3->setText(tr("Check old pwd failed because of unknown reason!"));
+-                }
+-            });
+-    connect(cmd, &QProcess::readyReadStandardOutput, this, &ChangePwdIntelDialog::on_readyReadStandardOutput);
+-    connect(cmd, &QProcess::readyReadStandardError, this, &ChangePwdIntelDialog::on_readyReadStandardError);
+-}
+-
+-void ChangePwdIntelDialog::on_readyReadStandardOutput(){
+-    process ++;
+-//    qDebug()<<"Process: "<<process;
+-    QString outStr = QString::fromLocal8Bit(cmd->readAllStandardOutput());
+-    qDebug()<<outStr;
+-}
+-
+-void ChangePwdIntelDialog::on_readyReadStandardError(){
+-    process ++;
+-//    qDebug()<<"Process: "<<process;
+-    QString outStr = QString::fromLocal8Bit(cmd->readAllStandardError());
+-    qDebug()<<outStr;
+-}
+-
+-void ChangePwdIntelDialog::on_started()
+-{
+-    qDebug()<<"cmd->Started !";
+-}
+-
+-void ChangePwdIntelDialog::on_byteWritten()
+-{
+-    qDebug()<<"cmd->Written !";
+-}
+-
+-void ChangePwdIntelDialog::setFace(QString iconfile){
+-    ui->faceLabel->setPixmap(QPixmap(iconfile).scaled(QSize(80, 80)));
+-}
+-
+-void ChangePwdIntelDialog::setUsername(QString username){
+-    ui->usernameLabel->setText(username);
+-    //修改本用户密码时,显示验证当前密码输入框
+-    if (username == QString(g_get_user_name())){
+-        ui->oldPwdLineEdit->show();
+-        ui->pwdFrame->hide();
+-    }
+-}
+-
+-//void ChangePwdIntelDialog::setPwdType(QString type){
+-//    ui->pwdtypeComboBox->setCurrentText(type);
+-//}
+-
+-void ChangePwdIntelDialog::setAccountType(QString aType){
+-    ui->aTypeLabel->setText(aType);
+-}
+-
+-void ChangePwdIntelDialog::paintEvent(QPaintEvent *event) {
+-    Q_UNUSED(event)
+-
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 6, 6);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 10, false, false);
+-
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-    p.restore();
+-
+-}
+-
+-void ChangePwdIntelDialog::pwdLegalityCheck(QString pwd){
+-    if (enablePwdQuality){
+-#ifdef ENABLEPQ
+-        void * auxerror;
+-        int ret;
+-        const char * msg;
+-        char buf[256];
+-
+-        QByteArray ba = pwd.toLatin1();
+-
+-        ret = pwquality_check(settings, ba.data(), NULL, NULL, &auxerror);
+-        if (ret < 0 && pwd.length() > 0){
+-            msg = pwquality_strerror(buf, sizeof(buf), ret, auxerror);
+-            pwdTip = QString(msg);
+-        } else {
+-            pwdTip = "";
+-        }
+-#endif
+-
+-    } else { //系统未开启pwdquality模块
+-        if (pwd.length() < PWD_LOW_LENGTH) {
+-            if (pwd.length() == 0) pwdTip_2 = "";
+-            else pwdTip_2 = tr("Password length needs to more than %1 character!").arg(PWD_LOW_LENGTH - 1);
+-        } else if (pwd.length() > PWD_HIGH_LENGTH) {
+-            pwdTip_2 = tr("Password length needs to less than %1 character!").arg(PWD_HIGH_LENGTH + 1);
+-        } else {
+-            //密码不能只由数字组成
+-            const char *s = pwd.toUtf8().data();
+-            while (*s && *s >= '0' && *s <= '9') {
+-                s++;
+-            }
+-            if (!bool(*s)) {
+-                pwdTip_2 = tr("Password cannot be made up entirely by Numbers!");
+-            } else {
+-                pwdTip_2 = "";
+-            }
+-        }
+-    };
+-    ui->tipLabel_2->setText(pwdTip_2);
+-
+-    //防止先输入确认密码,再输入密码后pwdsuretipLabel无法刷新
+-    if (!ui->pwdsureLineEdit->text().isEmpty()){
+-        if (ui->pwdLineEdit->text() == ui->pwdsureLineEdit->text()) {
+-            pwdSureTip = "";
+-        } else {
+-            pwdSureTip = tr("Inconsistency with pwd");
+-        }
+-    }
+-
+-    ui->tipLabel->setText(pwdTip);
+-    if (pwdTip.isEmpty()){
+-        pwdSureTip.isEmpty() ? ui->tipLabel->setText(nameTip) : ui->tipLabel->setText(pwdSureTip);
+-    }
+-
+-    refreshConfirmBtnStatus();
+-}
+-
+-
+-void ChangePwdIntelDialog::refreshConfirmBtnStatus(){
+-    if (!ui->tipLabel->text().isEmpty() || \
+-            ui->pwdLineEdit->text().isEmpty() || ui->pwdLineEdit->text() == tr("New Password") || \
+-            ui->pwdsureLineEdit->text().isEmpty() || ui->pwdsureLineEdit->text() == tr("New Password Identify") ||
+-            !nameTip.isEmpty() || !pwdTip.isEmpty() || !pwdSureTip.isEmpty() || !pwdTip_2.isEmpty() || \
+-            !ui->tipLabel_3->text().isEmpty())
+-        ui->confirmPushBtn->setEnabled(false);
+-    else
+-        ui->confirmPushBtn->setEnabled(true);
+-}
+diff --git a/plugins/account/userinfo_intel/changepwdinteldialog.h b/plugins/account/userinfo_intel/changepwdinteldialog.h
+deleted file mode 100644
+index 5d9eff8..0000000
+--- a/plugins/account/userinfo_intel/changepwdinteldialog.h
++++ /dev/null
+@@ -1,110 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef CHANGEPWDINTELDIALOG_H
+-#define CHANGEPWDINTELDIALOG_H
+-
+-#include <QDialog>
+-#include <QPainter>
+-#include <QPainterPath>
+-#include <QHBoxLayout>
+-#include <QPushButton>
+-#include <QProcess>
+-
+-#ifdef ENABLEPQ
+-extern "C" {
+-
+-#include <pwquality.h>
+-
+-}
+-
+-#define PWCONF "/etc/security/pwquality.conf"
+-#define RFLAG 0x1
+-#define CFLAG 0x2
+-
+-#endif
+-
+-namespace Ui {
+-class ChangePwdIntelDialog;
+-}
+-
+-class ChangePwdIntelDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit ChangePwdIntelDialog(QWidget *parent = 0);
+-    ~ChangePwdIntelDialog();
+-
+-public:
+-    void initPwdChecked();
+-    void setupComponent();
+-    void setupConnect();
+-
+-    void refreshConfirmBtnStatus();
+-
+-    void setFace(QString iconfile);
+-    void setUsername(QString username);
+-    void setPwdType(QString type);
+-    void setAccountType(QString text);
+-
+-protected:
+-    void paintEvent(QPaintEvent *);
+-    bool eventFilter(QObject *w,QEvent *e);
+-
+-private slots:
+-    void pwdLegalityCheck(QString pwd);
+-    //标准输出
+-    void on_readyReadStandardOutput();
+-    //标准错误输出
+-    void on_readyReadStandardError();
+-    //QProcess程序启动输出展示
+-    void on_started();
+-    //QProcess程序写入展示
+-    void on_byteWritten();
+-private:
+-    Ui::ChangePwdIntelDialog *ui;
+-    QString nameTip;
+-    QString pwdTip;
+-    QString pwdTip_2;
+-    QString pwdSureTip;
+-    QHBoxLayout * oldPwdLineEditHLayout;
+-    QHBoxLayout * pwdLineEditHLayout;
+-    QHBoxLayout * pwdsureLineEditHLayout;
+-    QPushButton * showOldPwdBtn;
+-    QPushButton * showPwdBtn;
+-    QPushButton * showSurePwdBtn;
+-
+-    bool enablePwdQuality;
+-    bool isOldPwdVisibel;
+-    bool isNewPwdVisibel;
+-    bool isSurePwdVisibel;
+-
+-    QProcess *cmd;
+-    int process;
+-
+-#ifdef ENABLEPQ
+-    pwquality_settings_t *settings;
+-#endif
+-
+-Q_SIGNALS:
+-    void passwd_send(QString pwd, QString username);
+-};
+-
+-#endif // CHANGEPWDINTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/changepwdinteldialog.ui b/plugins/account/userinfo_intel/changepwdinteldialog.ui
+deleted file mode 100644
+index 102f815..0000000
+--- a/plugins/account/userinfo_intel/changepwdinteldialog.ui
++++ /dev/null
+@@ -1,661 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>ChangePwdIntelDialog</class>
+- <widget class="QDialog" name="ChangePwdIntelDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>378</width>
+-    <height>490</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>378</width>
+-    <height>490</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>378</width>
+-    <height>490</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string notr="true">Change Pwd</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_2">
+-   <property name="spacing">
+-    <number>0</number>
+-   </property>
+-   <property name="leftMargin">
+-    <number>0</number>
+-   </property>
+-   <property name="topMargin">
+-    <number>0</number>
+-   </property>
+-   <property name="rightMargin">
+-    <number>9</number>
+-   </property>
+-   <property name="bottomMargin">
+-    <number>0</number>
+-   </property>
+-   <item>
+-    <widget class="QFrame" name="frame">
+-     <property name="minimumSize">
+-      <size>
+-       <width>0</width>
+-       <height>80</height>
+-      </size>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::NoFrame</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout">
+-      <property name="spacing">
+-       <number>0</number>
+-      </property>
+-      <property name="topMargin">
+-       <number>9</number>
+-      </property>
+-      <property name="rightMargin">
+-       <number>0</number>
+-      </property>
+-      <item>
+-       <widget class="QFrame" name="topFrame">
+-        <property name="sizePolicy">
+-         <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-          <horstretch>0</horstretch>
+-          <verstretch>0</verstretch>
+-         </sizepolicy>
+-        </property>
+-        <property name="minimumSize">
+-         <size>
+-          <width>0</width>
+-          <height>48</height>
+-         </size>
+-        </property>
+-        <property name="maximumSize">
+-         <size>
+-          <width>16777215</width>
+-          <height>48</height>
+-         </size>
+-        </property>
+-        <property name="frameShape">
+-         <enum>QFrame::NoFrame</enum>
+-        </property>
+-        <layout class="QHBoxLayout" name="horizontalLayout_9">
+-         <property name="leftMargin">
+-          <number>24</number>
+-         </property>
+-         <property name="topMargin">
+-          <number>12</number>
+-         </property>
+-         <property name="rightMargin">
+-          <number>16</number>
+-         </property>
+-         <property name="bottomMargin">
+-          <number>12</number>
+-         </property>
+-         <item>
+-          <widget class="QLabel" name="titleLabel">
+-           <property name="sizePolicy">
+-            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-             <horstretch>0</horstretch>
+-             <verstretch>0</verstretch>
+-            </sizepolicy>
+-           </property>
+-           <property name="font">
+-            <font>
+-             <family>Noto Sans CJK SC</family>
+-             <pointsize>13</pointsize>
+-            </font>
+-           </property>
+-           <property name="text">
+-            <string>Change Pwd</string>
+-           </property>
+-          </widget>
+-         </item>
+-         <item>
+-          <spacer name="horizontalSpacer_4">
+-           <property name="orientation">
+-            <enum>Qt::Horizontal</enum>
+-           </property>
+-           <property name="sizeHint" stdset="0">
+-            <size>
+-             <width>216</width>
+-             <height>20</height>
+-            </size>
+-           </property>
+-          </spacer>
+-         </item>
+-         <item>
+-          <widget class="QPushButton" name="closeBtn">
+-           <property name="sizePolicy">
+-            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-             <horstretch>0</horstretch>
+-             <verstretch>0</verstretch>
+-            </sizepolicy>
+-           </property>
+-           <property name="minimumSize">
+-            <size>
+-             <width>24</width>
+-             <height>24</height>
+-            </size>
+-           </property>
+-           <property name="maximumSize">
+-            <size>
+-             <width>24</width>
+-             <height>24</height>
+-            </size>
+-           </property>
+-           <property name="layoutDirection">
+-            <enum>Qt::LeftToRight</enum>
+-           </property>
+-           <property name="text">
+-            <string/>
+-           </property>
+-          </widget>
+-         </item>
+-        </layout>
+-        <zorder>horizontalSpacer_4</zorder>
+-        <zorder>titleLabel</zorder>
+-        <zorder>closeBtn</zorder>
+-       </widget>
+-      </item>
+-      <item>
+-       <widget class="QFrame" name="frame_2">
+-        <property name="frameShape">
+-         <enum>QFrame::Box</enum>
+-        </property>
+-        <property name="frameShadow">
+-         <enum>QFrame::Raised</enum>
+-        </property>
+-        <property name="lineWidth">
+-         <number>0</number>
+-        </property>
+-        <layout class="QVBoxLayout" name="verticalLayout_3">
+-         <property name="spacing">
+-          <number>0</number>
+-         </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>
+-          <layout class="QVBoxLayout" name="verticalLayout_4">
+-           <property name="spacing">
+-            <number>0</number>
+-           </property>
+-           <property name="leftMargin">
+-            <number>24</number>
+-           </property>
+-           <property name="topMargin">
+-            <number>40</number>
+-           </property>
+-           <property name="rightMargin">
+-            <number>24</number>
+-           </property>
+-           <property name="bottomMargin">
+-            <number>24</number>
+-           </property>
+-           <item>
+-            <layout class="QHBoxLayout" name="horizontalLayout_4">
+-             <property name="spacing">
+-              <number>16</number>
+-             </property>
+-             <property name="leftMargin">
+-              <number>0</number>
+-             </property>
+-             <property name="rightMargin">
+-              <number>0</number>
+-             </property>
+-             <item>
+-              <widget class="QLabel" name="faceLabel">
+-               <property name="sizePolicy">
+-                <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                 <horstretch>0</horstretch>
+-                 <verstretch>0</verstretch>
+-                </sizepolicy>
+-               </property>
+-               <property name="minimumSize">
+-                <size>
+-                 <width>56</width>
+-                 <height>56</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>56</width>
+-                 <height>56</height>
+-                </size>
+-               </property>
+-               <property name="text">
+-                <string/>
+-               </property>
+-               <property name="scaledContents">
+-                <bool>true</bool>
+-               </property>
+-              </widget>
+-             </item>
+-             <item>
+-              <layout class="QVBoxLayout" name="verticalLayout_8">
+-               <property name="spacing">
+-                <number>0</number>
+-               </property>
+-               <item>
+-                <widget class="QLabel" name="usernameLabel">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                 <property name="text">
+-                  <string/>
+-                 </property>
+-                </widget>
+-               </item>
+-               <item>
+-                <widget class="QLabel" name="aTypeLabel">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                 <property name="text">
+-                  <string/>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-             <item>
+-              <spacer name="horizontalSpacer_6">
+-               <property name="orientation">
+-                <enum>Qt::Horizontal</enum>
+-               </property>
+-               <property name="sizeHint" stdset="0">
+-                <size>
+-                 <width>40</width>
+-                 <height>20</height>
+-                </size>
+-               </property>
+-              </spacer>
+-             </item>
+-            </layout>
+-           </item>
+-           <item>
+-            <spacer name="verticalSpacer_2">
+-             <property name="orientation">
+-              <enum>Qt::Vertical</enum>
+-             </property>
+-             <property name="sizeHint" stdset="0">
+-              <size>
+-               <width>20</width>
+-               <height>24</height>
+-              </size>
+-             </property>
+-            </spacer>
+-           </item>
+-           <item>
+-            <widget class="QWidget" name="widget" native="true">
+-             <layout class="QVBoxLayout" name="verticalLayout_11">
+-              <property name="spacing">
+-               <number>0</number>
+-              </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>
+-               <layout class="QVBoxLayout" name="verticalLayout_10">
+-                <property name="spacing">
+-                 <number>4</number>
+-                </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>
+-                 <layout class="QHBoxLayout" name="horizontalLayout_5">
+-                  <item>
+-                   <widget class="QFrame" name="pwdFrame">
+-                    <property name="minimumSize">
+-                     <size>
+-                      <width>0</width>
+-                      <height>48</height>
+-                     </size>
+-                    </property>
+-                    <property name="maximumSize">
+-                     <size>
+-                      <width>16777215</width>
+-                      <height>48</height>
+-                     </size>
+-                    </property>
+-                    <property name="frameShape">
+-                     <enum>QFrame::StyledPanel</enum>
+-                    </property>
+-                    <property name="frameShadow">
+-                     <enum>QFrame::Raised</enum>
+-                    </property>
+-                    <layout class="QHBoxLayout" name="horizontalLayout_8">
+-                     <property name="spacing">
+-                      <number>0</number>
+-                     </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>
+-                      <widget class="QLabel" name="pwdtypeComboBox">
+-                       <property name="sizePolicy">
+-                        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                         <horstretch>0</horstretch>
+-                         <verstretch>0</verstretch>
+-                        </sizepolicy>
+-                       </property>
+-                       <property name="text">
+-                        <string/>
+-                       </property>
+-                      </widget>
+-                     </item>
+-                    </layout>
+-                   </widget>
+-                  </item>
+-                 </layout>
+-                </item>
+-                <item>
+-                 <widget class="QLineEdit" name="oldPwdLineEdit">
+-                  <property name="minimumSize">
+-                   <size>
+-                    <width>0</width>
+-                    <height>48</height>
+-                   </size>
+-                  </property>
+-                  <property name="maximumSize">
+-                   <size>
+-                    <width>16777215</width>
+-                    <height>48</height>
+-                   </size>
+-                  </property>
+-                 </widget>
+-                </item>
+-                <item>
+-                 <widget class="QLabel" name="tipLabel_3">
+-                  <property name="sizePolicy">
+-                   <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-                    <horstretch>0</horstretch>
+-                    <verstretch>0</verstretch>
+-                   </sizepolicy>
+-                  </property>
+-                  <property name="minimumSize">
+-                   <size>
+-                    <width>0</width>
+-                    <height>16</height>
+-                   </size>
+-                  </property>
+-                  <property name="maximumSize">
+-                   <size>
+-                    <width>16777215</width>
+-                    <height>16</height>
+-                   </size>
+-                  </property>
+-                  <property name="font">
+-                   <font>
+-                    <pointsize>10</pointsize>
+-                   </font>
+-                  </property>
+-                  <property name="text">
+-                   <string/>
+-                  </property>
+-                 </widget>
+-                </item>
+-                <item>
+-                 <layout class="QHBoxLayout" name="horizontalLayout_6">
+-                  <item>
+-                   <widget class="QLineEdit" name="pwdLineEdit">
+-                    <property name="minimumSize">
+-                     <size>
+-                      <width>0</width>
+-                      <height>48</height>
+-                     </size>
+-                    </property>
+-                    <property name="maximumSize">
+-                     <size>
+-                      <width>16777215</width>
+-                      <height>48</height>
+-                     </size>
+-                    </property>
+-                   </widget>
+-                  </item>
+-                 </layout>
+-                </item>
+-                <item>
+-                 <widget class="QLabel" name="tipLabel_2">
+-                  <property name="sizePolicy">
+-                   <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-                    <horstretch>0</horstretch>
+-                    <verstretch>0</verstretch>
+-                   </sizepolicy>
+-                  </property>
+-                  <property name="minimumSize">
+-                   <size>
+-                    <width>0</width>
+-                    <height>16</height>
+-                   </size>
+-                  </property>
+-                  <property name="maximumSize">
+-                   <size>
+-                    <width>16777215</width>
+-                    <height>16</height>
+-                   </size>
+-                  </property>
+-                  <property name="font">
+-                   <font>
+-                    <pointsize>10</pointsize>
+-                   </font>
+-                  </property>
+-                  <property name="text">
+-                   <string/>
+-                  </property>
+-                 </widget>
+-                </item>
+-                <item>
+-                 <layout class="QHBoxLayout" name="horizontalLayout_7">
+-                  <item>
+-                   <widget class="QLineEdit" name="pwdsureLineEdit">
+-                    <property name="minimumSize">
+-                     <size>
+-                      <width>0</width>
+-                      <height>48</height>
+-                     </size>
+-                    </property>
+-                    <property name="maximumSize">
+-                     <size>
+-                      <width>16777215</width>
+-                      <height>48</height>
+-                     </size>
+-                    </property>
+-                   </widget>
+-                  </item>
+-                 </layout>
+-                </item>
+-                <item>
+-                 <widget class="QLabel" name="tipLabel">
+-                  <property name="sizePolicy">
+-                   <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-                    <horstretch>0</horstretch>
+-                    <verstretch>0</verstretch>
+-                   </sizepolicy>
+-                  </property>
+-                  <property name="minimumSize">
+-                   <size>
+-                    <width>0</width>
+-                    <height>16</height>
+-                   </size>
+-                  </property>
+-                  <property name="maximumSize">
+-                   <size>
+-                    <width>16777215</width>
+-                    <height>16</height>
+-                   </size>
+-                  </property>
+-                  <property name="font">
+-                   <font>
+-                    <pointsize>10</pointsize>
+-                   </font>
+-                  </property>
+-                  <property name="text">
+-                   <string/>
+-                  </property>
+-                 </widget>
+-                </item>
+-               </layout>
+-              </item>
+-             </layout>
+-            </widget>
+-           </item>
+-           <item>
+-            <spacer name="verticalSpacer">
+-             <property name="orientation">
+-              <enum>Qt::Vertical</enum>
+-             </property>
+-             <property name="sizeHint" stdset="0">
+-              <size>
+-               <width>20</width>
+-               <height>24</height>
+-              </size>
+-             </property>
+-            </spacer>
+-           </item>
+-           <item>
+-            <layout class="QHBoxLayout" name="horizontalLayout">
+-             <property name="spacing">
+-              <number>0</number>
+-             </property>
+-             <property name="sizeConstraint">
+-              <enum>QLayout::SetDefaultConstraint</enum>
+-             </property>
+-             <property name="topMargin">
+-              <number>0</number>
+-             </property>
+-             <property name="bottomMargin">
+-              <number>0</number>
+-             </property>
+-             <item>
+-              <widget class="QPushButton" name="cancelPushBtn">
+-               <property name="minimumSize">
+-                <size>
+-                 <width>144</width>
+-                 <height>48</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>144</width>
+-                 <height>48</height>
+-                </size>
+-               </property>
+-               <property name="font">
+-                <font>
+-                 <pointsize>12</pointsize>
+-                </font>
+-               </property>
+-               <property name="text">
+-                <string>Cancel</string>
+-               </property>
+-               <property name="flat">
+-                <bool>false</bool>
+-               </property>
+-              </widget>
+-             </item>
+-             <item>
+-              <spacer name="horizontalSpacer">
+-               <property name="orientation">
+-                <enum>Qt::Horizontal</enum>
+-               </property>
+-               <property name="sizeHint" stdset="0">
+-                <size>
+-                 <width>24</width>
+-                 <height>20</height>
+-                </size>
+-               </property>
+-              </spacer>
+-             </item>
+-             <item>
+-              <widget class="QPushButton" name="confirmPushBtn">
+-               <property name="minimumSize">
+-                <size>
+-                 <width>144</width>
+-                 <height>48</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>144</width>
+-                 <height>48</height>
+-                </size>
+-               </property>
+-               <property name="font">
+-                <font>
+-                 <pointsize>12</pointsize>
+-                </font>
+-               </property>
+-               <property name="text">
+-                <string>Confirm</string>
+-               </property>
+-              </widget>
+-             </item>
+-            </layout>
+-           </item>
+-          </layout>
+-         </item>
+-        </layout>
+-       </widget>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-  </layout>
+- </widget>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/account/userinfo_intel/changetypeinteldialog.cpp b/plugins/account/userinfo_intel/changetypeinteldialog.cpp
+deleted file mode 100644
+index cf1ad50..0000000
+--- a/plugins/account/userinfo_intel/changetypeinteldialog.cpp
++++ /dev/null
+@@ -1,168 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "changetypeinteldialog.h"
+-#include "ui_changetypeinteldialog.h"
+-
+-#include "elipsemaskwidget.h"
+-
+-#include <QDebug>
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-ChangeTypeIntelDialog::ChangeTypeIntelDialog(QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::ChangeTypeIntelDialog)
+-{
+-    ui->setupUi(this);
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    ui->titleLabel->setStyleSheet("QLabel{font-size: 18px; color: palette(windowText);}");
+-    ui->closeBtn->setProperty("useIconHighlightEffect", true);
+-    ui->closeBtn->setProperty("iconHighlightEffectMode", 1);
+-    ui->closeBtn->setFlat(true);
+-    ui->closeBtn->setStyleSheet("QPushButton:hover:!pressed#closeBtn{background: #FA6056; border-radius: 4px;}"
+-                                "QPushButton:hover:pressed#closeBtn{background: #E54A50; border-radius: 4px;}");
+-
+-//    ui->frame->setStyleSheet("QFrame{background: #ffffff; border: none; border-radius: 6px;}");
+-//    ui->closeBtn->setStyleSheet("QPushButton{background: #ffffff; border: none;}");
+-
+-
+-
+-    ui->closeBtn->setIcon(QIcon("://img/titlebar/close.svg"));
+-
+-
+-    setupComonpent();
+-
+-}
+-
+-ChangeTypeIntelDialog::~ChangeTypeIntelDialog()
+-{
+-    delete ui;
+-}
+-
+-void ChangeTypeIntelDialog::setupComonpent(){
+-
+-//    ElipseMaskWidget * ctMaskWidget = new ElipseMaskWidget(ui->faceLabel);
+-//    ctMaskWidget->setGeometry(0, 0, ui->faceLabel->width(), ui->faceLabel->height());
+-
+-    ui->buttonGroup->setId(ui->standardRadioButton, 0);
+-    ui->buttonGroup->setId(ui->adminRadioButton, 1);
+-
+-    //给选项卡加背景色,此部分样式应由主题控制,此处只为预览样式改进效果
+-    ui->widget->setStyleSheet(".QWidget{background: rgba(245,245,245,1); border-radius: 8px;}");
+-    ui->widget_2->setStyleSheet(".QWidget{background: rgba(245,245,245,1); border-radius: 8px;}");
+-
+-    ui->confirmPushBtn->setEnabled(false);
+-
+-    connect(ui->closeBtn, &QPushButton::clicked, [=]{
+-        close();
+-    });
+-    connect(ui->cancelPushBtn, &QPushButton::clicked, [=](bool checked){
+-        Q_UNUSED(checked)
+-        reject();
+-    });
+-    connect(ui->confirmPushBtn, &QPushButton::clicked, [=](bool checked){
+-        Q_UNUSED(checked)
+-        this->accept();
+-        emit type_send(ui->buttonGroup->checkedId(), ui->usernameLabel->text());
+-    });
+-}
+-
+-void ChangeTypeIntelDialog::setFace(QString faceFile){
+-    ui->faceLabel->setPixmap(QPixmap(faceFile));
+-}
+-
+-void ChangeTypeIntelDialog::setUsername(QString username){
+-    ui->usernameLabel->setText(username);
+-}
+-
+-void ChangeTypeIntelDialog::setCurrentAccountTypeLabel(QString atype){
+-    ui->typeLabel->setText(atype);
+-}
+-
+-void ChangeTypeIntelDialog::setCurrentAccountTypeBtn(int id){
+-    currenttype = id;
+-    if (id == 0)
+-        ui->standardRadioButton->setChecked(true);
+-    else
+-        ui->adminRadioButton->setChecked(true);
+-
+-#if QT_VERSION <= QT_VERSION_CHECK(5, 12, 0)
+-    connect(ui->buttonGroup, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), [=](int id){
+-#else
+-    connect(ui->buttonGroup, QOverload<int>::of(&QButtonGroup::buttonClicked), [=](int id){
+-#endif
+-        if (id != currenttype)
+-            ui->confirmPushBtn->setEnabled(true);
+-        else
+-            ui->confirmPushBtn->setEnabled(false);
+-    });
+-}
+-
+-void ChangeTypeIntelDialog::forbidenChange(int total){
+-    if (total <= 1 && currenttype == 1){
+-        ui->standardRadioButton->setEnabled(false);
+-    } else {
+-        ui->standardRadioButton->setEnabled(true);
+-    }
+-}
+-
+-void ChangeTypeIntelDialog::paintEvent(QPaintEvent *event) {
+-    Q_UNUSED(event);
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 6, 6);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 10, false, false);
+-
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-    p.restore();
+-}
+-
+diff --git a/plugins/account/userinfo_intel/changetypeinteldialog.h b/plugins/account/userinfo_intel/changetypeinteldialog.h
+deleted file mode 100644
+index e05dc13..0000000
+--- a/plugins/account/userinfo_intel/changetypeinteldialog.h
++++ /dev/null
+@@ -1,62 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef CHANGETYPEINTELDIALOG_H
+-#define CHANGETYPEINTELDIALOG_H
+-
+-#include <QDialog>
+-#include <QPainter>
+-#include <QPainterPath>
+-
+-namespace Ui {
+-class ChangeTypeIntelDialog;
+-}
+-
+-class ChangeTypeIntelDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit ChangeTypeIntelDialog(QWidget *parent = 0);
+-    ~ChangeTypeIntelDialog();
+-
+-public:
+-    void setupComonpent();
+-
+-    void setFace(QString faceFile);
+-    void setUsername(QString name);
+-    void setCurrentAccountTypeLabel(QString aType);
+-    void setCurrentAccountTypeBtn(int id);
+-
+-    void forbidenChange(int total);
+-
+-protected:
+-    void paintEvent(QPaintEvent *);
+-
+-private:
+-    Ui::ChangeTypeIntelDialog *ui;
+-
+-    int currenttype;
+-    bool currentloginstatus;
+-
+-Q_SIGNALS:
+-    void type_send(int type, QString username);
+-};
+-
+-#endif // CHANGETYPEINTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/changetypeinteldialog.ui b/plugins/account/userinfo_intel/changetypeinteldialog.ui
+deleted file mode 100644
+index 18d47f2..0000000
+--- a/plugins/account/userinfo_intel/changetypeinteldialog.ui
++++ /dev/null
+@@ -1,672 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>ChangeTypeIntelDialog</class>
+- <widget class="QDialog" name="ChangeTypeIntelDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>387</width>
+-    <height>500</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>387</width>
+-    <height>500</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>387</width>
+-    <height>500</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string notr="true">Change AccountType</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_2">
+-   <property name="spacing">
+-    <number>0</number>
+-   </property>
+-   <property name="leftMargin">
+-    <number>9</number>
+-   </property>
+-   <property name="topMargin">
+-    <number>9</number>
+-   </property>
+-   <property name="rightMargin">
+-    <number>9</number>
+-   </property>
+-   <property name="bottomMargin">
+-    <number>9</number>
+-   </property>
+-   <item>
+-    <widget class="QFrame" name="frame_3">
+-     <property name="sizePolicy">
+-      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-       <horstretch>0</horstretch>
+-       <verstretch>0</verstretch>
+-      </sizepolicy>
+-     </property>
+-     <property name="minimumSize">
+-      <size>
+-       <width>0</width>
+-       <height>48</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>16777215</width>
+-       <height>48</height>
+-      </size>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::Box</enum>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout">
+-      <property name="spacing">
+-       <number>0</number>
+-      </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>
+-       <layout class="QHBoxLayout" name="horizontalLayout_7">
+-        <property name="spacing">
+-         <number>0</number>
+-        </property>
+-        <property name="leftMargin">
+-         <number>24</number>
+-        </property>
+-        <property name="topMargin">
+-         <number>12</number>
+-        </property>
+-        <property name="rightMargin">
+-         <number>24</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>12</number>
+-        </property>
+-        <item>
+-         <widget class="QLabel" name="titleLabel">
+-          <property name="font">
+-           <font>
+-            <pointsize>13</pointsize>
+-           </font>
+-          </property>
+-          <property name="text">
+-           <string>Change Account Type</string>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <spacer name="horizontalSpacer_2">
+-          <property name="orientation">
+-           <enum>Qt::Horizontal</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>40</width>
+-            <height>20</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-        <item>
+-         <widget class="QPushButton" name="closeBtn">
+-          <property name="minimumSize">
+-           <size>
+-            <width>24</width>
+-            <height>24</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>24</width>
+-            <height>24</height>
+-           </size>
+-          </property>
+-          <property name="text">
+-           <string/>
+-          </property>
+-         </widget>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <widget class="QFrame" name="frame">
+-     <property name="minimumSize">
+-      <size>
+-       <width>369</width>
+-       <height>434</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>369</width>
+-       <height>434</height>
+-      </size>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::NoFrame</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_7">
+-      <property name="spacing">
+-       <number>0</number>
+-      </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>
+-       <layout class="QVBoxLayout" name="verticalLayout_6">
+-        <property name="spacing">
+-         <number>0</number>
+-        </property>
+-        <property name="leftMargin">
+-         <number>24</number>
+-        </property>
+-        <property name="topMargin">
+-         <number>0</number>
+-        </property>
+-        <property name="rightMargin">
+-         <number>24</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>24</number>
+-        </property>
+-        <item>
+-         <spacer name="verticalSpacer_4">
+-          <property name="orientation">
+-           <enum>Qt::Vertical</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>20</width>
+-            <height>40</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_6">
+-          <property name="spacing">
+-           <number>8</number>
+-          </property>
+-          <property name="rightMargin">
+-           <number>0</number>
+-          </property>
+-          <item>
+-           <widget class="QLabel" name="faceLabel">
+-            <property name="sizePolicy">
+-             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-              <horstretch>0</horstretch>
+-              <verstretch>0</verstretch>
+-             </sizepolicy>
+-            </property>
+-            <property name="minimumSize">
+-             <size>
+-              <width>56</width>
+-              <height>56</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>56</width>
+-              <height>56</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string/>
+-            </property>
+-            <property name="scaledContents">
+-             <bool>true</bool>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <layout class="QVBoxLayout" name="verticalLayout_9">
+-            <property name="spacing">
+-             <number>8</number>
+-            </property>
+-            <item>
+-             <widget class="QLabel" name="usernameLabel">
+-              <property name="sizePolicy">
+-               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                <horstretch>0</horstretch>
+-                <verstretch>0</verstretch>
+-               </sizepolicy>
+-              </property>
+-              <property name="text">
+-               <string/>
+-              </property>
+-             </widget>
+-            </item>
+-            <item>
+-             <widget class="QLabel" name="typeLabel">
+-              <property name="sizePolicy">
+-               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                <horstretch>0</horstretch>
+-                <verstretch>0</verstretch>
+-               </sizepolicy>
+-              </property>
+-              <property name="text">
+-               <string/>
+-              </property>
+-             </widget>
+-            </item>
+-           </layout>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer_3">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>40</width>
+-              <height>20</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-         </layout>
+-        </item>
+-        <item>
+-         <spacer name="verticalSpacer_5">
+-          <property name="orientation">
+-           <enum>Qt::Vertical</enum>
+-          </property>
+-          <property name="sizeType">
+-           <enum>QSizePolicy::Fixed</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>20</width>
+-            <height>24</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-        <item>
+-         <widget class="QWidget" name="widget" native="true">
+-          <property name="minimumSize">
+-           <size>
+-            <width>0</width>
+-            <height>88</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>88</height>
+-           </size>
+-          </property>
+-          <layout class="QHBoxLayout" name="horizontalLayout_2">
+-           <property name="spacing">
+-            <number>0</number>
+-           </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>
+-            <layout class="QHBoxLayout" name="horizontalLayout">
+-             <property name="spacing">
+-              <number>16</number>
+-             </property>
+-             <property name="leftMargin">
+-              <number>16</number>
+-             </property>
+-             <property name="rightMargin">
+-              <number>16</number>
+-             </property>
+-             <item>
+-              <widget class="QRadioButton" name="standardRadioButton">
+-               <property name="minimumSize">
+-                <size>
+-                 <width>16</width>
+-                 <height>0</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>16</width>
+-                 <height>16777215</height>
+-                </size>
+-               </property>
+-               <property name="text">
+-                <string/>
+-               </property>
+-               <attribute name="buttonGroup">
+-                <string notr="true">buttonGroup</string>
+-               </attribute>
+-              </widget>
+-             </item>
+-             <item>
+-              <layout class="QVBoxLayout" name="verticalLayout_3">
+-               <property name="spacing">
+-                <number>4</number>
+-               </property>
+-               <property name="leftMargin">
+-                <number>0</number>
+-               </property>
+-               <property name="topMargin">
+-                <number>8</number>
+-               </property>
+-               <property name="rightMargin">
+-                <number>0</number>
+-               </property>
+-               <property name="bottomMargin">
+-                <number>8</number>
+-               </property>
+-               <item>
+-                <widget class="QLabel" name="label">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                 <property name="font">
+-                  <font>
+-                   <pointsize>12</pointsize>
+-                  </font>
+-                 </property>
+-                 <property name="text">
+-                  <string>standard user</string>
+-                 </property>
+-                </widget>
+-               </item>
+-               <item>
+-                <widget class="QLabel" name="label_2">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                 <property name="text">
+-                  <string>Standard users can use most software, but cannot install software and change system settings</string>
+-                 </property>
+-                 <property name="wordWrap">
+-                  <bool>true</bool>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-            </layout>
+-           </item>
+-          </layout>
+-         </widget>
+-        </item>
+-        <item>
+-         <spacer name="verticalSpacer">
+-          <property name="orientation">
+-           <enum>Qt::Vertical</enum>
+-          </property>
+-          <property name="sizeType">
+-           <enum>QSizePolicy::Fixed</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>20</width>
+-            <height>8</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-        <item>
+-         <widget class="QWidget" name="widget_2" native="true">
+-          <property name="minimumSize">
+-           <size>
+-            <width>0</width>
+-            <height>88</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>88</height>
+-           </size>
+-          </property>
+-          <layout class="QHBoxLayout" name="horizontalLayout_10">
+-           <property name="spacing">
+-            <number>0</number>
+-           </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>
+-            <layout class="QHBoxLayout" name="horizontalLayout_9">
+-             <property name="spacing">
+-              <number>16</number>
+-             </property>
+-             <property name="leftMargin">
+-              <number>16</number>
+-             </property>
+-             <property name="rightMargin">
+-              <number>16</number>
+-             </property>
+-             <item>
+-              <widget class="QRadioButton" name="adminRadioButton">
+-               <property name="minimumSize">
+-                <size>
+-                 <width>16</width>
+-                 <height>0</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>16</width>
+-                 <height>16777215</height>
+-                </size>
+-               </property>
+-               <property name="text">
+-                <string/>
+-               </property>
+-               <attribute name="buttonGroup">
+-                <string notr="true">buttonGroup</string>
+-               </attribute>
+-              </widget>
+-             </item>
+-             <item>
+-              <layout class="QVBoxLayout" name="verticalLayout_10">
+-               <property name="spacing">
+-                <number>4</number>
+-               </property>
+-               <property name="topMargin">
+-                <number>8</number>
+-               </property>
+-               <property name="rightMargin">
+-                <number>0</number>
+-               </property>
+-               <property name="bottomMargin">
+-                <number>8</number>
+-               </property>
+-               <item>
+-                <widget class="QLabel" name="label_3">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                 <property name="font">
+-                  <font>
+-                   <pointsize>12</pointsize>
+-                  </font>
+-                 </property>
+-                 <property name="text">
+-                  <string>administrator</string>
+-                 </property>
+-                </widget>
+-               </item>
+-               <item>
+-                <widget class="QLabel" name="label_4">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                 <property name="text">
+-                  <string>Administrators can make any changes they need</string>
+-                 </property>
+-                 <property name="wordWrap">
+-                  <bool>true</bool>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-            </layout>
+-           </item>
+-          </layout>
+-         </widget>
+-        </item>
+-        <item>
+-         <widget class="QLabel" name="tipLabel">
+-          <property name="sizePolicy">
+-           <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-            <horstretch>0</horstretch>
+-            <verstretch>0</verstretch>
+-           </sizepolicy>
+-          </property>
+-          <property name="text">
+-           <string>Make sure that there is at least one administrator on the computer</string>
+-          </property>
+-          <property name="wordWrap">
+-           <bool>true</bool>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <spacer name="verticalSpacer_3">
+-          <property name="orientation">
+-           <enum>Qt::Vertical</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>20</width>
+-            <height>24</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_3">
+-          <property name="spacing">
+-           <number>0</number>
+-          </property>
+-          <item>
+-           <widget class="QPushButton" name="cancelPushBtn">
+-            <property name="minimumSize">
+-             <size>
+-              <width>144</width>
+-              <height>48</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>144</width>
+-              <height>48</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string>Cancel</string>
+-            </property>
+-            <property name="flat">
+-             <bool>false</bool>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>24</width>
+-              <height>20</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-          <item>
+-           <widget class="QPushButton" name="confirmPushBtn">
+-            <property name="minimumSize">
+-             <size>
+-              <width>144</width>
+-              <height>48</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>144</width>
+-              <height>48</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string>Confirm</string>
+-            </property>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-  </layout>
+- </widget>
+- <resources/>
+- <connections/>
+- <buttongroups>
+-  <buttongroup name="buttonGroup"/>
+- </buttongroups>
+-</ui>
+diff --git a/plugins/account/userinfo_intel/changevalidinteldialog.cpp b/plugins/account/userinfo_intel/changevalidinteldialog.cpp
+deleted file mode 100644
+index acb6324..0000000
+--- a/plugins/account/userinfo_intel/changevalidinteldialog.cpp
++++ /dev/null
+@@ -1,306 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "changevalidinteldialog.h"
+-#include "ui_changevalidinteldialog.h"
+-
+-#include <QProcess>
+-#include <QDBusInterface>
+-
+-#include <QDebug>
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-ChangeValidIntelDialog::ChangeValidIntelDialog(QString userName, QWidget *parent) :
+-    QDialog(parent),
+-    _name(userName),
+-    ui(new Ui::ChangeValidIntelDialog)
+-{
+-    ui->setupUi(this);
+-
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    ui->closeBtn->setIcon(QIcon("://img/titlebar/close.svg"));
+-
+-    ui->titleLabel->setStyleSheet("QLabel{font-size: 18px; color: palette(windowText);}");
+-    ui->closeBtn->setProperty("useIconHighlightEffect", true);
+-    ui->closeBtn->setProperty("iconHighlightEffectMode", 1);
+-    ui->closeBtn->setFlat(true);
+-
+-    ui->closeBtn->setStyleSheet("QPushButton:hover:!pressed#closeBtn{background: #FA6056; border-radius: 4px;}"
+-                                "QPushButton:hover:pressed#closeBtn{background: #E54A50; border-radius: 4px;}");
+-
+-    ui->monthCombox->setMaxVisibleItems(3);
+-    ui->yearCombox->setMaxVisibleItems(3);
+-    ui->dayCombox->setMaxVisibleItems(3);
+-
+-    ui->validFrame->setFrameShape(QFrame::Shape::Box);
+-
+-    _getCurrentPwdStatus();
+-
+-    setupCurrentValid();
+-    setupConnect();
+-    setupComponent();
+-
+-}
+-
+-ChangeValidIntelDialog::~ChangeValidIntelDialog()
+-{
+-    delete ui;
+-}
+-
+-void ChangeValidIntelDialog::setupConnect(){
+-    connect(ui->closeBtn, &QPushButton::clicked, [=]{
+-        close();
+-    });
+-    connect(ui->cancelBtn, &QPushButton::clicked, [=]{
+-        reject();
+-    });
+-
+-#if QT_VERSION <= QT_VERSION_CHECK(5, 12, 0)
+-    connect(ui->yearCombox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int index){
+-#else
+-    connect(ui->yearCombox, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int index){
+-#endif
+-        setupMonthCombo();
+-        setupDayCombo();
+-
+-    });
+-
+-#if QT_VERSION <= QT_VERSION_CHECK(5, 12, 0)
+-    connect(ui->monthCombox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int index){
+-#else
+-    connect(ui->monthCombox, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int index){
+-#endif
+-        setupDayCombo();
+-
+-    });
+-
+-    connect(ui->certainBtn, &QPushButton::clicked, [=]{
+-        int year = ui->yearCombox->currentData().toInt();
+-        QString cmd;
+-        if (year == 0){
+-            cmd = QString("chage -M %1 %2").arg(99999).arg(_name);
+-        } else {
+-            int month = ui->monthCombox->currentData().toInt();
+-            int day = ui->dayCombox->currentData().toInt();
+-
+-            QDate selected = QDate(year, month, day);
+-
+-            int setDays = lastChangeDate.daysTo(selected);
+-
+-            cmd = QString("chage -M %1 %2").arg(setDays).arg(_name);
+-
+-        }
+-
+-        QDBusInterface * tmpSysinterface = new QDBusInterface("com.control.center.qt.systemdbus",
+-                                                              "/",
+-                                                              "com.control.center.interface",
+-                                                              QDBusConnection::systemBus());
+-
+-        if (!tmpSysinterface->isValid()){
+-            qCritical() << "Create Client Interface Failed When execute chage: " << QDBusConnection::systemBus().lastError();
+-            return;
+-        }
+-        tmpSysinterface->call("systemRun", cmd);
+-        delete tmpSysinterface;
+-
+-        close();
+-    });
+-}
+-
+-void ChangeValidIntelDialog::setUserLogo(QString iconfile){
+-    ui->faceLabel->setPixmap(QPixmap(iconfile));
+-}
+-
+-void ChangeValidIntelDialog::setUserName(){
+-    ui->nameLabel->setText(_name);
+-}
+-
+-void ChangeValidIntelDialog::setUserType(QString atype){
+-    ui->typeLabel->setText(atype);
+-}
+-
+-void ChangeValidIntelDialog::_getCurrentPwdStatus(){
+-    //
+-    QString cmd = "passwd -S " + _name;
+-
+-    QProcess * process = new QProcess;
+-    process->start(cmd);
+-    process->waitForFinished();
+-
+-    QByteArray ba = process->readAllStandardOutput();
+-    QString valid = QString(ba.data()).simplified();
+-
+-    if (valid.startsWith(_name)){
+-        QStringList validList = valid.split(" ");
+-        QString lastChangeStr = validList.at(2);
+-        QStringList lastChangeList = lastChangeStr.split("/");
+-        lastChangeDate = QDate(QString(lastChangeList.at(2)).toInt(), QString(lastChangeList.at(0)).toInt(), QString(lastChangeList.at(1)).toInt());
+-        delayDays = QString(validList.at(4)).toInt();
+-    } else {
+-        delayDays = -1;
+-    }
+-}
+-
+-void ChangeValidIntelDialog::setupCurrentValid(){
+-    if (lastChangeDate.isValid() && delayDays >= 0){
+-        if (delayDays >= 10000){
+-            ui->validDateLabel->setText(QObject::tr("Never"));
+-        } else {
+-            QDate invalid = lastChangeDate.addDays(delayDays);
+-            ui->validDateLabel->setText(invalid.toString("yyyy-MM-dd"));
+-        }
+-    } else {
+-        ui->validDateLabel->setText(QObject::tr("Unknown"));
+-    }
+-}
+-
+-void ChangeValidIntelDialog::setupComponent(){
+-    //chage源码中超过10000天会显示从不,10000/365 = 27.3,为了方便显示,取整,界面显示26年
+-    if (lastChangeDate.isValid()){
+-        setupYearCombo();
+-
+-
+-        setupMonthCombo();
+-        ui->monthCombox->blockSignals(true);
+-        ui->monthCombox->setCurrentIndex(ui->monthCombox->findData(lastChangeDate.addDays(delayDays).month()));
+-        ui->monthCombox->blockSignals(false);
+-
+-        setupDayCombo();
+-        ui->dayCombox->blockSignals(true);
+-        ui->dayCombox->setCurrentIndex(ui->dayCombox->findData(lastChangeDate.addDays(delayDays).day()));
+-        ui->dayCombox->blockSignals(false);
+-    } else {
+-
+-    }
+-}
+-
+-void ChangeValidIntelDialog::setupYearCombo(){
+-    ui->yearCombox->blockSignals(true);
+-    ui->yearCombox->clear();
+-
+-    QDate begin = QDate::currentDate().addDays(1);
+-    QDate canSelect = lastChangeDate.addYears(26);
+-
+-    ui->yearCombox->addItem(QObject::tr("Never"), 0);
+-    for (int year = begin.year(); year <= canSelect.year(); year++){
+-        ui->yearCombox->addItem(QString::number(year)+QObject::tr("Year"), year);
+-    }
+-
+-    if (delayDays > 10000)
+-        ui->yearCombox->setCurrentIndex(0);
+-    else
+-        ui->yearCombox->setCurrentIndex(ui->yearCombox->findData(lastChangeDate.addDays(delayDays).year()));
+-
+-    ui->yearCombox->blockSignals(false);
+-}
+-
+-void ChangeValidIntelDialog::setupMonthCombo(){
+-    ui->monthCombox->blockSignals(true);
+-
+-    ui->monthCombox->clear();
+-
+-    int year = ui->yearCombox->currentData().toInt();
+-    if (year > 0){
+-        ui->monthCombox->addItem(QObject::tr("Jan"), 1);
+-        ui->monthCombox->addItem(QObject::tr("Feb"), 2);
+-        ui->monthCombox->addItem(QObject::tr("Mar"), 3);
+-        ui->monthCombox->addItem(QObject::tr("Apr"), 4);
+-        ui->monthCombox->addItem(QObject::tr("May"), 5);
+-        ui->monthCombox->addItem(QObject::tr("Jun"), 6);
+-        ui->monthCombox->addItem(QObject::tr("Jul"), 7);
+-        ui->monthCombox->addItem(QObject::tr("Aug"), 8);
+-        ui->monthCombox->addItem(QObject::tr("Sep"), 9);
+-        ui->monthCombox->addItem(QObject::tr("Oct"), 10);
+-        ui->monthCombox->addItem(QObject::tr("Nov"), 11);
+-        ui->monthCombox->addItem(QObject::tr("Dec"), 12);
+-    }
+-
+-
+-
+-    ui->monthCombox->blockSignals(false);
+-}
+-
+-void ChangeValidIntelDialog::setupDayCombo(){
+-    ui->dayCombox->blockSignals(true);
+-
+-    ui->dayCombox->clear();
+-
+-    int year = ui->yearCombox->currentData().toInt();
+-
+-    if (year > 0){
+-        int month = ui->monthCombox->currentData().toInt();
+-        if (month){
+-            QDate selected = QDate(year, month, 1);
+-            int days = selected.daysInMonth();
+-            for (int d = 1; d <= days; d++){
+-                ui->dayCombox->addItem(QString::number(d)+QObject::tr("Day"), d);
+-            }
+-        }
+-    } else {
+-
+-    }
+-
+-    ui->dayCombox->blockSignals(false);
+-}
+-
+-
+-void ChangeValidIntelDialog::paintEvent(QPaintEvent * event){
+-    Q_UNUSED(event)
+-
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 6, 6);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 10, false, false);
+-
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-    p.restore();
+-}
+diff --git a/plugins/account/userinfo_intel/changevalidinteldialog.h b/plugins/account/userinfo_intel/changevalidinteldialog.h
+deleted file mode 100644
+index ade9511..0000000
+--- a/plugins/account/userinfo_intel/changevalidinteldialog.h
++++ /dev/null
+@@ -1,72 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef CHANGEVALIDINTELDIALOG_H
+-#define CHANGEVALIDINTELDIALOG_H
+-
+-#include <QDialog>
+-
+-#include <QDate>
+-
+-#include <QPainter>
+-#include <QPainterPath>
+-
+-
+-namespace Ui {
+-class ChangeValidIntelDialog;
+-}
+-
+-class ChangeValidIntelDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit ChangeValidIntelDialog(QString userName, QWidget *parent = 0);
+-    ~ChangeValidIntelDialog();
+-
+-    void setupConnect();
+-
+-    void setUserName();
+-    void setUserLogo(QString face);
+-    void setUserType(QString atype);
+-
+-    void _getCurrentPwdStatus();
+-
+-    void setupCurrentValid();
+-    void setupComponent();
+-
+-    void setupYearCombo();
+-    void setupMonthCombo();
+-    void setupDayCombo();
+-
+-protected:
+-    void paintEvent(QPaintEvent *);
+-
+-private:
+-    Ui::ChangeValidIntelDialog *ui;
+-
+-private:
+-    QString _name;
+-
+-    QDate lastChangeDate;
+-
+-    int delayDays;
+-};
+-
+-#endif // CHANGEVALIDINTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/changevalidinteldialog.ui b/plugins/account/userinfo_intel/changevalidinteldialog.ui
+deleted file mode 100644
+index aabee4c..0000000
+--- a/plugins/account/userinfo_intel/changevalidinteldialog.ui
++++ /dev/null
+@@ -1,520 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>ChangeValidIntelDialog</class>
+- <widget class="QDialog" name="ChangeValidIntelDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>370</width>
+-    <height>410</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>370</width>
+-    <height>410</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>370</width>
+-    <height>410</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Dialog</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_2">
+-   <property name="spacing">
+-    <number>0</number>
+-   </property>
+-   <property name="leftMargin">
+-    <number>0</number>
+-   </property>
+-   <property name="topMargin">
+-    <number>13</number>
+-   </property>
+-   <property name="rightMargin">
+-    <number>13</number>
+-   </property>
+-   <property name="bottomMargin">
+-    <number>0</number>
+-   </property>
+-   <item>
+-    <widget class="QFrame" name="frame">
+-     <property name="frameShape">
+-      <enum>QFrame::NoFrame</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_3">
+-      <property name="spacing">
+-       <number>0</number>
+-      </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>
+-       <layout class="QVBoxLayout" name="verticalLayout">
+-        <property name="spacing">
+-         <number>0</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>0</number>
+-        </property>
+-        <item>
+-         <widget class="QFrame" name="closeFrame">
+-          <property name="minimumSize">
+-           <size>
+-            <width>0</width>
+-            <height>36</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>36</height>
+-           </size>
+-          </property>
+-          <property name="frameShape">
+-           <enum>QFrame::StyledPanel</enum>
+-          </property>
+-          <property name="frameShadow">
+-           <enum>QFrame::Raised</enum>
+-          </property>
+-          <layout class="QHBoxLayout" name="horizontalLayout_2">
+-           <property name="spacing">
+-            <number>0</number>
+-           </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>
+-            <layout class="QHBoxLayout" name="horizontalLayout">
+-             <property name="spacing">
+-              <number>0</number>
+-             </property>
+-             <item>
+-              <spacer name="horizontalSpacer">
+-               <property name="orientation">
+-                <enum>Qt::Horizontal</enum>
+-               </property>
+-               <property name="sizeHint" stdset="0">
+-                <size>
+-                 <width>40</width>
+-                 <height>20</height>
+-                </size>
+-               </property>
+-              </spacer>
+-             </item>
+-             <item>
+-              <widget class="QPushButton" name="closeBtn">
+-               <property name="minimumSize">
+-                <size>
+-                 <width>32</width>
+-                 <height>32</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>32</width>
+-                 <height>32</height>
+-                </size>
+-               </property>
+-               <property name="text">
+-                <string/>
+-               </property>
+-              </widget>
+-             </item>
+-            </layout>
+-           </item>
+-          </layout>
+-         </widget>
+-        </item>
+-        <item>
+-         <layout class="QVBoxLayout" name="verticalLayout_5">
+-          <property name="spacing">
+-           <number>18</number>
+-          </property>
+-          <property name="leftMargin">
+-           <number>32</number>
+-          </property>
+-          <property name="topMargin">
+-           <number>16</number>
+-          </property>
+-          <property name="rightMargin">
+-           <number>32</number>
+-          </property>
+-          <property name="bottomMargin">
+-           <number>48</number>
+-          </property>
+-          <item>
+-           <widget class="QLabel" name="titleLabel">
+-            <property name="sizePolicy">
+-             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-              <horstretch>0</horstretch>
+-              <verstretch>0</verstretch>
+-             </sizepolicy>
+-            </property>
+-            <property name="text">
+-             <string>Password Validity Setting</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="QFrame" name="infoFrame">
+-            <property name="minimumSize">
+-             <size>
+-              <width>0</width>
+-              <height>60</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>16777215</width>
+-              <height>60</height>
+-             </size>
+-            </property>
+-            <property name="frameShape">
+-             <enum>QFrame::StyledPanel</enum>
+-            </property>
+-            <property name="frameShadow">
+-             <enum>QFrame::Raised</enum>
+-            </property>
+-            <layout class="QHBoxLayout" name="horizontalLayout_4">
+-             <property name="spacing">
+-              <number>0</number>
+-             </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>
+-              <layout class="QHBoxLayout" name="horizontalLayout_3">
+-               <property name="spacing">
+-                <number>8</number>
+-               </property>
+-               <item>
+-                <widget class="QLabel" name="faceLabel">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>48</width>
+-                   <height>48</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>48</width>
+-                   <height>48</height>
+-                  </size>
+-                 </property>
+-                 <property name="text">
+-                  <string/>
+-                 </property>
+-                 <property name="scaledContents">
+-                  <bool>true</bool>
+-                 </property>
+-                </widget>
+-               </item>
+-               <item>
+-                <layout class="QVBoxLayout" name="verticalLayout_6">
+-                 <item>
+-                  <widget class="QLabel" name="nameLabel">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="text">
+-                    <string/>
+-                   </property>
+-                  </widget>
+-                 </item>
+-                 <item>
+-                  <widget class="QLabel" name="typeLabel">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="text">
+-                    <string/>
+-                   </property>
+-                  </widget>
+-                 </item>
+-                </layout>
+-               </item>
+-              </layout>
+-             </item>
+-             <item>
+-              <spacer name="horizontalSpacer_2">
+-               <property name="orientation">
+-                <enum>Qt::Horizontal</enum>
+-               </property>
+-               <property name="sizeHint" stdset="0">
+-                <size>
+-                 <width>40</width>
+-                 <height>20</height>
+-                </size>
+-               </property>
+-              </spacer>
+-             </item>
+-            </layout>
+-           </widget>
+-          </item>
+-          <item>
+-           <layout class="QHBoxLayout" name="horizontalLayout_8">
+-            <item>
+-             <widget class="QLabel" name="label">
+-              <property name="sizePolicy">
+-               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                <horstretch>0</horstretch>
+-                <verstretch>0</verstretch>
+-               </sizepolicy>
+-              </property>
+-              <property name="text">
+-               <string>Current passwd validity:</string>
+-              </property>
+-             </widget>
+-            </item>
+-            <item>
+-             <widget class="QLabel" name="validDateLabel">
+-              <property name="sizePolicy">
+-               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                <horstretch>0</horstretch>
+-                <verstretch>0</verstretch>
+-               </sizepolicy>
+-              </property>
+-              <property name="text">
+-               <string/>
+-              </property>
+-             </widget>
+-            </item>
+-            <item>
+-             <spacer name="horizontalSpacer_4">
+-              <property name="orientation">
+-               <enum>Qt::Horizontal</enum>
+-              </property>
+-              <property name="sizeHint" stdset="0">
+-               <size>
+-                <width>40</width>
+-                <height>20</height>
+-               </size>
+-              </property>
+-             </spacer>
+-            </item>
+-           </layout>
+-          </item>
+-          <item>
+-           <widget class="QFrame" name="adjustFrame">
+-            <property name="minimumSize">
+-             <size>
+-              <width>0</width>
+-              <height>80</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>16777215</width>
+-              <height>80</height>
+-             </size>
+-            </property>
+-            <property name="frameShape">
+-             <enum>QFrame::StyledPanel</enum>
+-            </property>
+-            <property name="frameShadow">
+-             <enum>QFrame::Raised</enum>
+-            </property>
+-            <layout class="QVBoxLayout" name="verticalLayout_8">
+-             <property name="spacing">
+-              <number>0</number>
+-             </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>
+-              <layout class="QVBoxLayout" name="verticalLayout_7">
+-               <property name="spacing">
+-                <number>8</number>
+-               </property>
+-               <item>
+-                <widget class="QLabel" name="label_5">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                 <property name="text">
+-                  <string>Adjust date to:</string>
+-                 </property>
+-                </widget>
+-               </item>
+-               <item>
+-                <widget class="QFrame" name="validFrame">
+-                 <property name="frameShape">
+-                  <enum>QFrame::StyledPanel</enum>
+-                 </property>
+-                 <property name="frameShadow">
+-                  <enum>QFrame::Raised</enum>
+-                 </property>
+-                 <layout class="QHBoxLayout" name="horizontalLayout_9">
+-                  <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>
+-                   <widget class="QComboBox" name="yearCombox"/>
+-                  </item>
+-                  <item>
+-                   <widget class="QComboBox" name="dayCombox"/>
+-                  </item>
+-                  <item>
+-                   <widget class="QComboBox" name="monthCombox"/>
+-                  </item>
+-                 </layout>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-            </layout>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="QFrame" name="btnFrame">
+-            <property name="minimumSize">
+-             <size>
+-              <width>0</width>
+-              <height>40</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>16777215</width>
+-              <height>40</height>
+-             </size>
+-            </property>
+-            <property name="frameShape">
+-             <enum>QFrame::StyledPanel</enum>
+-            </property>
+-            <property name="frameShadow">
+-             <enum>QFrame::Raised</enum>
+-            </property>
+-            <layout class="QHBoxLayout" name="horizontalLayout_7">
+-             <property name="spacing">
+-              <number>0</number>
+-             </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>
+-              <layout class="QHBoxLayout" name="horizontalLayout_6">
+-               <property name="spacing">
+-                <number>8</number>
+-               </property>
+-               <item>
+-                <spacer name="horizontalSpacer_3">
+-                 <property name="orientation">
+-                  <enum>Qt::Horizontal</enum>
+-                 </property>
+-                 <property name="sizeHint" stdset="0">
+-                  <size>
+-                   <width>40</width>
+-                   <height>20</height>
+-                  </size>
+-                 </property>
+-                </spacer>
+-               </item>
+-               <item>
+-                <widget class="QPushButton" name="cancelBtn">
+-                 <property name="text">
+-                  <string>Cancel</string>
+-                 </property>
+-                </widget>
+-               </item>
+-               <item>
+-                <widget class="QPushButton" name="certainBtn">
+-                 <property name="text">
+-                  <string>Certain</string>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-            </layout>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-  </layout>
+- </widget>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/account/userinfo_intel/creategroupinteldialog.cpp b/plugins/account/userinfo_intel/creategroupinteldialog.cpp
+deleted file mode 100644
+index 278f2c7..0000000
+--- a/plugins/account/userinfo_intel/creategroupinteldialog.cpp
++++ /dev/null
+@@ -1,168 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2020 KYLINOS Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-#include "creategroupinteldialog.h"
+-#include "ui_creategroupinteldialog.h"
+-#include "userinfo_intel.h"
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-CreateGroupIntelDialog::CreateGroupIntelDialog(QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::CreateGroupIntelDialog)
+-{
+-    ui->setupUi(this);
+-    setupInit();
+-    getUsersList();
+-    signalsBind();
+-}
+-
+-CreateGroupIntelDialog::~CreateGroupIntelDialog()
+-{
+-    delete ui;
+-}
+-
+-void CreateGroupIntelDialog::limitInput()
+-{
+-    QIntValidator *intValidator = new QIntValidator;
+-    //QRegExp rx("^[a-zA-z]+$");// 首字符为字母
+-    QRegExp rx("[a-zA-z]{40}");
+-    QRegExpValidator *regValidator = new QRegExpValidator(rx);
+-    //intValidator->setRange(0, 65535);
+-    intValidator->setBottom(0);
+-    // 整形输入限制
+-    ui->lineEdit_id->setValidator(intValidator);
+-    // 字母输入限制
+-    ui->lineEdit_name->setValidator(regValidator);
+-    // 字符长度限制
+-    //ui->lineEdit_name->setMaxLength(4);
+-}
+-
+-void CreateGroupIntelDialog::refreshCertainBtnStatus(){
+-    if (ui->lineEdit_name->text().isEmpty() ||
+-            ui->lineEdit_id->text().isEmpty())
+-        ui->certainBtn->setEnabled(false);
+-    else
+-        ui->certainBtn->setEnabled(true);
+-}
+-
+-void CreateGroupIntelDialog::getUsersList()
+-{
+-    UserInfoIntel * userinfo = new UserInfoIntel;
+-    QStringList usersList = userinfo->getUsersList();
+-    qDebug() << "CreateGroupIntelDialog::getUsersList" << usersList.at(0) << usersList.at(1);
+-    for(int i = 0; i < usersList.size(); i++){
+-        QListWidgetItem * item = new QListWidgetItem(ui->listWidget);
+-        item->setSizeHint(QSize(ui->listWidget->width(), 36));
+-        item->setData(Qt::UserRole, "");
+-        QCheckBox * box = new QCheckBox(usersList.at(i));
+-        ui->listWidget->addItem(item);
+-        ui->listWidget->setItemWidget(item, box);
+-    }
+-}
+-
+-void CreateGroupIntelDialog::signalsBind()
+-{
+-    connect(ui->closeBtn, &QPushButton::clicked, [=](bool checked){
+-        Q_UNUSED(checked)
+-        close();
+-    });
+-    connect(ui->cancelBtn,&QPushButton::clicked,[=](){
+-        close();
+-    });
+-    connect(ui->lineEdit_name,&QLineEdit::textChanged,[=](QString txt){
+-        refreshCertainBtnStatus();
+-    });
+-    connect(ui->lineEdit_id,&QLineEdit::textChanged,[=](QString txt){
+-        refreshCertainBtnStatus();
+-    });
+-}
+-
+-void CreateGroupIntelDialog::setupInit()
+-{
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    ui->titleLabel->setStyleSheet("QLabel{font-size: 18px; color: palette(windowText);}");
+-    ui->closeBtn->setProperty("useIconHighlightEffect", true);
+-    ui->closeBtn->setProperty("iconHighlightEffectMode", 1);
+-    ui->closeBtn->setFlat(true);
+-
+-    ui->closeBtn->setStyleSheet("QPushButton:hover:!pressed#closeBtn{background: #FA6056; border-radius: 4px;}"
+-                                "QPushButton:hover:pressed#closeBtn{background: #E54A50; border-radius: 4px;}");
+-    ui->closeBtn->setIcon(QIcon("://img/titlebar/close.svg"));
+-
+-    ui->listWidget->setFocusPolicy(Qt::NoFocus);
+-    ui->listWidget->setSelectionMode(QAbstractItemView::NoSelection);
+-    ui->listWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+-    ui->listWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+-//    ui->listWidget->setSpacing(5);
+-    ui->lineEdit_name->setStyleSheet("QLineEdit{background:#EEEEEE;}");
+-    ui->lineEdit_id->setStyleSheet("QLineEdit{background:#EEEEEE;}");
+-    ui->listWidget->setStyleSheet("QListWidget{background:#EEEEEE; border-radius: 4px;}"
+-                                  "QListWidget::Item:hover{background:#FFE1E1E1}"
+-                                  "QListWidget::Item{padding-left:20px;}");
+-
+-    // 设置确认按钮
+-    refreshCertainBtnStatus();
+-    // 限制组名输入规则
+-    limitInput();
+-    //
+-}
+-
+-void CreateGroupIntelDialog::paintEvent(QPaintEvent *event) {
+-    Q_UNUSED(event);
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 6, 6);
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 10, false, false);
+-
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-    p.restore();
+-
+-}
+diff --git a/plugins/account/userinfo_intel/creategroupinteldialog.h b/plugins/account/userinfo_intel/creategroupinteldialog.h
+deleted file mode 100644
+index 9952b8e..0000000
+--- a/plugins/account/userinfo_intel/creategroupinteldialog.h
++++ /dev/null
+@@ -1,59 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2020 KYLINOS Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-#ifndef CREATEGROUPINTELDIALOG_H
+-#define CREATEGROUPINTELDIALOG_H
+-
+-#include <QDialog>
+-#include <QPainter>
+-#include <QPainterPath>
+-#include <QCheckBox>
+-#include <QIntValidator>
+-#include <QRegExpValidator>
+-
+-class UserInfo;
+-namespace Ui {
+-class CreateGroupIntelDialog;
+-}
+-
+-class CreateGroupIntelDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit CreateGroupIntelDialog(QWidget *parent = nullptr);
+-    ~CreateGroupIntelDialog();
+-
+-public:
+-    void limitInput();
+-    void getUsersList();
+-    void refreshCertainBtnStatus();
+-
+-protected:
+-    void paintEvent(QPaintEvent *event);
+-
+-private:
+-    Ui::CreateGroupIntelDialog *ui;
+-
+-    void setupInit();
+-    void signalsBind();
+-};
+-
+-#endif // CREATEGROUPINTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/creategroupinteldialog.ui b/plugins/account/userinfo_intel/creategroupinteldialog.ui
+deleted file mode 100644
+index 3ab29e9..0000000
+--- a/plugins/account/userinfo_intel/creategroupinteldialog.ui
++++ /dev/null
+@@ -1,380 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>CreateGroupIntelDialog</class>
+- <widget class="QDialog" name="CreateGroupIntelDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>460</width>
+-    <height>530</height>
+-   </rect>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Dialog</string>
+-  </property>
+-  <widget class="QFrame" name="frame">
+-   <property name="geometry">
+-    <rect>
+-     <x>0</x>
+-     <y>0</y>
+-     <width>455</width>
+-     <height>529</height>
+-    </rect>
+-   </property>
+-   <property name="frameShape">
+-    <enum>QFrame::StyledPanel</enum>
+-   </property>
+-   <property name="frameShadow">
+-    <enum>QFrame::Raised</enum>
+-   </property>
+-   <widget class="QWidget" name="layoutWidget">
+-    <property name="geometry">
+-     <rect>
+-      <x>0</x>
+-      <y>0</y>
+-      <width>466</width>
+-      <height>562</height>
+-     </rect>
+-    </property>
+-    <layout class="QVBoxLayout" name="verticalLayout_4">
+-     <property name="spacing">
+-      <number>23</number>
+-     </property>
+-     <property name="topMargin">
+-      <number>8</number>
+-     </property>
+-     <property name="bottomMargin">
+-      <number>58</number>
+-     </property>
+-     <item>
+-      <layout class="QHBoxLayout" name="horizontalLayout_2">
+-       <property name="topMargin">
+-        <number>8</number>
+-       </property>
+-       <property name="rightMargin">
+-        <number>8</number>
+-       </property>
+-       <item>
+-        <spacer name="horizontalSpacer_2">
+-         <property name="orientation">
+-          <enum>Qt::Horizontal</enum>
+-         </property>
+-         <property name="sizeHint" stdset="0">
+-          <size>
+-           <width>40</width>
+-           <height>20</height>
+-          </size>
+-         </property>
+-        </spacer>
+-       </item>
+-       <item>
+-        <widget class="QPushButton" name="closeBtn">
+-         <property name="minimumSize">
+-          <size>
+-           <width>32</width>
+-           <height>32</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>32</width>
+-           <height>32</height>
+-          </size>
+-         </property>
+-         <property name="text">
+-          <string/>
+-         </property>
+-        </widget>
+-       </item>
+-      </layout>
+-     </item>
+-     <item>
+-      <layout class="QVBoxLayout" name="verticalLayout_3">
+-       <property name="spacing">
+-        <number>30</number>
+-       </property>
+-       <property name="leftMargin">
+-        <number>35</number>
+-       </property>
+-       <property name="rightMargin">
+-        <number>33</number>
+-       </property>
+-       <property name="bottomMargin">
+-        <number>0</number>
+-       </property>
+-       <item>
+-        <widget class="QLabel" name="titleLabel">
+-         <property name="sizePolicy">
+-          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-           <horstretch>0</horstretch>
+-           <verstretch>0</verstretch>
+-          </sizepolicy>
+-         </property>
+-         <property name="text">
+-          <string>Add New Group</string>
+-         </property>
+-        </widget>
+-       </item>
+-       <item>
+-        <layout class="QVBoxLayout" name="verticalLayout_2">
+-         <property name="spacing">
+-          <number>8</number>
+-         </property>
+-         <item>
+-          <layout class="QHBoxLayout" name="horizontalLayout_5">
+-           <item>
+-            <layout class="QHBoxLayout" name="horizontalLayout_3">
+-             <item>
+-              <spacer name="horizontalSpacer">
+-               <property name="orientation">
+-                <enum>Qt::Horizontal</enum>
+-               </property>
+-               <property name="sizeHint" stdset="0">
+-                <size>
+-                 <width>40</width>
+-                 <height>20</height>
+-                </size>
+-               </property>
+-              </spacer>
+-             </item>
+-             <item>
+-              <widget class="QLabel" name="label">
+-               <property name="text">
+-                <string>Group Name</string>
+-               </property>
+-              </widget>
+-             </item>
+-            </layout>
+-           </item>
+-           <item>
+-            <widget class="QLineEdit" name="lineEdit_name">
+-             <property name="minimumSize">
+-              <size>
+-               <width>256</width>
+-               <height>0</height>
+-              </size>
+-             </property>
+-            </widget>
+-           </item>
+-          </layout>
+-         </item>
+-         <item>
+-          <layout class="QHBoxLayout" name="horizontalLayout_8">
+-           <item>
+-            <layout class="QHBoxLayout" name="horizontalLayout">
+-             <item>
+-              <spacer name="horizontalSpacer_4">
+-               <property name="orientation">
+-                <enum>Qt::Horizontal</enum>
+-               </property>
+-               <property name="sizeHint" stdset="0">
+-                <size>
+-                 <width>40</width>
+-                 <height>20</height>
+-                </size>
+-               </property>
+-              </spacer>
+-             </item>
+-             <item>
+-              <widget class="QLabel" name="label_3">
+-               <property name="text">
+-                <string>Group Id</string>
+-               </property>
+-              </widget>
+-             </item>
+-            </layout>
+-           </item>
+-           <item>
+-            <widget class="QLineEdit" name="lineEdit_id">
+-             <property name="minimumSize">
+-              <size>
+-               <width>256</width>
+-               <height>0</height>
+-              </size>
+-             </property>
+-            </widget>
+-           </item>
+-          </layout>
+-         </item>
+-         <item>
+-          <layout class="QHBoxLayout" name="horizontalLayout_9">
+-           <item>
+-            <layout class="QVBoxLayout" name="verticalLayout">
+-             <item>
+-              <layout class="QHBoxLayout" name="horizontalLayout_4">
+-               <item>
+-                <spacer name="horizontalSpacer_5">
+-                 <property name="orientation">
+-                  <enum>Qt::Horizontal</enum>
+-                 </property>
+-                 <property name="sizeHint" stdset="0">
+-                  <size>
+-                   <width>40</width>
+-                   <height>20</height>
+-                  </size>
+-                 </property>
+-                </spacer>
+-               </item>
+-               <item>
+-                <widget class="QLabel" name="label_2">
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>0</width>
+-                   <height>32</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>16777215</width>
+-                   <height>32</height>
+-                  </size>
+-                 </property>
+-                 <property name="text">
+-                  <string>Group Members</string>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-             <item>
+-              <spacer name="verticalSpacer">
+-               <property name="orientation">
+-                <enum>Qt::Vertical</enum>
+-               </property>
+-               <property name="sizeHint" stdset="0">
+-                <size>
+-                 <width>20</width>
+-                 <height>40</height>
+-                </size>
+-               </property>
+-              </spacer>
+-             </item>
+-            </layout>
+-           </item>
+-           <item>
+-            <widget class="QListWidget" name="listWidget">
+-             <property name="minimumSize">
+-              <size>
+-               <width>256</width>
+-               <height>194</height>
+-              </size>
+-             </property>
+-             <property name="maximumSize">
+-              <size>
+-               <width>256</width>
+-               <height>194</height>
+-              </size>
+-             </property>
+-            </widget>
+-           </item>
+-          </layout>
+-         </item>
+-        </layout>
+-       </item>
+-       <item>
+-        <widget class="QFrame" name="btnFrame">
+-         <property name="minimumSize">
+-          <size>
+-           <width>0</width>
+-           <height>40</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>16777215</width>
+-           <height>40</height>
+-          </size>
+-         </property>
+-         <property name="frameShape">
+-          <enum>QFrame::StyledPanel</enum>
+-         </property>
+-         <property name="frameShadow">
+-          <enum>QFrame::Raised</enum>
+-         </property>
+-         <layout class="QHBoxLayout" name="horizontalLayout_7">
+-          <property name="spacing">
+-           <number>0</number>
+-          </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>
+-           <layout class="QHBoxLayout" name="horizontalLayout_6">
+-            <property name="spacing">
+-             <number>16</number>
+-            </property>
+-            <item>
+-             <spacer name="horizontalSpacer_3">
+-              <property name="orientation">
+-               <enum>Qt::Horizontal</enum>
+-              </property>
+-              <property name="sizeHint" stdset="0">
+-               <size>
+-                <width>40</width>
+-                <height>20</height>
+-               </size>
+-              </property>
+-             </spacer>
+-            </item>
+-            <item>
+-             <widget class="QPushButton" name="cancelBtn">
+-              <property name="minimumSize">
+-               <size>
+-                <width>100</width>
+-                <height>36</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>100</width>
+-                <height>36</height>
+-               </size>
+-              </property>
+-              <property name="text">
+-               <string>Cancel</string>
+-              </property>
+-             </widget>
+-            </item>
+-            <item>
+-             <widget class="QPushButton" name="certainBtn">
+-              <property name="minimumSize">
+-               <size>
+-                <width>100</width>
+-                <height>36</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>100</width>
+-                <height>36</height>
+-               </size>
+-              </property>
+-              <property name="text">
+-               <string>Certain</string>
+-              </property>
+-             </widget>
+-            </item>
+-           </layout>
+-          </item>
+-         </layout>
+-        </widget>
+-       </item>
+-      </layout>
+-     </item>
+-    </layout>
+-   </widget>
+-  </widget>
+- </widget>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/account/userinfo_intel/createuserinteldialog.cpp b/plugins/account/userinfo_intel/createuserinteldialog.cpp
+deleted file mode 100644
+index c91e765..0000000
+--- a/plugins/account/userinfo_intel/createuserinteldialog.cpp
++++ /dev/null
+@@ -1,567 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "createuserinteldialog.h"
+-#include "ui_createuserinteldialog.h"
+-
+-#include "passwdcheckutil.h"
+-
+-#include <QDebug>
+-#include <QDir>
+-
+-#define MOBILE 0
+-#define PC 1
+-#define PWD_LOW_LENGTH 6
+-#define PWD_HIGH_LENGTH 20
+-#define PIN_LENGTH 6
+-#define USER_LENGTH 32
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-CreateUserIntelDialog::CreateUserIntelDialog(QStringList userlist, QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::CreateUserIntelDialog),
+-    usersStringList(userlist)
+-{
+-//    installEventFilter(this);
+-    ui->setupUi(this);
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    ui->titleLabel->setStyleSheet("QLabel{font-size: 18px; color: palette(windowText);}");
+-    ui->closeBtn->setProperty("useIconHighlightEffect", true);
+-    ui->closeBtn->setProperty("iconHighlightEffectMode", 1);
+-    ui->closeBtn->setFlat(true);
+-
+-    ui->closeBtn->setStyleSheet("QPushButton:hover:!pressed#closeBtn{background: #FA6056; border-radius: 4px;}"
+-                                "QPushButton:hover:pressed#closeBtn{background: #E54A50; border-radius: 4px;}");
+-//    ui->tipLabel->setAlignment(Qt::AlignCenter);
+-
+-    ui->label_8->adjustSize();
+-    ui->label_8->setWordWrap(true);
+-
+-    ui->label_10->adjustSize();
+-    ui->label_10->setWordWrap(true);
+-
+-    ui->closeBtn->setIcon(QIcon("://img/titlebar/close.svg"));
+-
+-    initPwdChecked();
+-    setupComonpent();
+-    setupConnect();
+-}
+-
+-CreateUserIntelDialog::~CreateUserIntelDialog()
+-{
+-    delete ui;
+-//    delete process;
+-}
+-
+-void CreateUserIntelDialog::initPwdChecked(){
+-
+-#ifdef ENABLEPQ
+-    int ret;
+-    void *auxerror;
+-    char buf[255];
+-
+-    settings = pwquality_default_settings();
+-    if (settings == NULL) {
+-        enablePwdQuality = false;
+-        qDebug() << "init pwquality settings failed";
+-    } else {
+-        enablePwdQuality = true;
+-    }
+-
+-    ret = pwquality_read_config(settings, PWCONF, &auxerror);
+-    if (ret != 0){
+-        enablePwdQuality = false;
+-        qDebug() << "Reading pwquality configuration file failed: " << pwquality_strerror(buf, sizeof(buf), ret, auxerror);
+-    } else {
+-        enablePwdQuality = true;
+-    }
+-
+-    if (PasswdCheckUtil::getCurrentPamState()){
+-        enablePwdQuality = true;
+-    } else {
+-        enablePwdQuality = false;
+-    }
+-
+-#else
+-    enablePwdQuality = false;
+-#endif
+-
+-}
+-
+-void CreateUserIntelDialog::setupComonpent(){
+-    nameTip = "";
+-    pwdTip = "";
+-    pwdSureTip = "";
+-
+-    //给选项卡加背景色,此部分样式应由主题控制,此处只为预览样式改进效果
+-    ui->widget->setStyleSheet(".QWidget{background: rgba(245,245,245,1); border-radius: 8px;}");
+-    ui->widget_2->setStyleSheet(".QWidget{background: rgba(245,245,245,1); border-radius: 8px;}");
+-
+-    ui->pwdLineEdit->setEchoMode(QLineEdit::Password);
+-    ui->pwdsureLineEdit->setEchoMode(QLineEdit::Password);
+-//    ui->pinLineEdit->setEchoMode(QLineEdit::Password);
+-//    ui->pinsureLineEdit->setEchoMode(QLineEdit::Password);
+-
+-//    QString required = tr("(Required)");
+-//    QString optional = tr("(Optional)");
+-//    if (ostype == PC){
+-//        ui->pwdLabel->setText(required);
+-//        ui->pwdsurelabel->setText(required);
+-//        ui->pinLabel->setText(optional);
+-//        ui->pinsurelabel->setText(optional);
+-//    }
+-//    else{
+-//        ui->pwdLabel->setText(optional);
+-//        ui->pwdsurelabel->setText(optional);
+-//        ui->pinLabel->setText(required);
+-//        ui->pinsurelabel->setText(required);
+-//    }
+-
+-    ui->usernameLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                        "background: palett(base);}");
+-    ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                      "background: palett(base);}");
+-    ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                      "background: palett(base);}");
+-    ui->usernameLineEdit->installEventFilter(this);
+-    ui->pwdLineEdit->installEventFilter(this);
+-    ui->pwdsureLineEdit->installEventFilter(this);
+-
+-    ui->usernameLineEdit->setPlaceholderText(tr("UserName"));
+-    ui->pwdLineEdit->setPlaceholderText(tr("Password"));
+-    ui->pwdsureLineEdit->setPlaceholderText(tr("Password Identify"));
+-
+-    ui->usernameLineEdit->setTextMargins(16,0,32,0);
+-    ui->pwdLineEdit->setTextMargins(16,0,32,0);
+-    ui->pwdsureLineEdit->setTextMargins(16,0,32,0);
+-
+-    pwdLineEditHLayout = new QHBoxLayout();
+-    pwdsureLineEditHLayout = new QHBoxLayout();
+-
+-    showPwdBtn = new QPushButton();
+-    showPwdBtn->setFixedSize(QSize(16, 16));
+-
+-    pwdLineEditHLayout->addStretch();
+-    pwdLineEditHLayout->addWidget(showPwdBtn);
+-    pwdLineEditHLayout->setContentsMargins(0,0,16,0);
+-    ui->pwdLineEdit->setLayout(pwdLineEditHLayout);
+-
+-    showSurePwdBtn = new QPushButton();
+-    showSurePwdBtn->setFixedSize(QSize(16, 16));
+-
+-    pwdsureLineEditHLayout->addStretch();
+-    pwdsureLineEditHLayout->addWidget(showSurePwdBtn);
+-    pwdsureLineEditHLayout->setContentsMargins(0,0,16,0);
+-    ui->pwdsureLineEdit->setLayout(pwdsureLineEditHLayout);
+-
+-    showPwdBtn->setCursor(QCursor(Qt::ArrowCursor));
+-    showSurePwdBtn->setCursor(QCursor(Qt::ArrowCursor));
+-
+-    showPwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}");
+-    showSurePwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}");
+-
+-//    connect(showPwdBtn, &QPushButton::pressed, this, [=]{
+-//        ui->pwdLineEdit->setEchoMode(QLineEdit::Normal);
+-//    });
+-//    connect(showPwdBtn, &QPushButton::released, this, [=]{
+-//        ui->pwdLineEdit->setEchoMode(QLineEdit::Password);
+-//        ui->pwdLineEdit->setFocus();
+-//    });
+-//    connect(showSurePwdBtn, &QPushButton::pressed, this, [=]{
+-//        ui->pwdsureLineEdit->setEchoMode(QLineEdit::Normal);
+-//    });
+-//    connect(showSurePwdBtn, &QPushButton::released, this, [=]{
+-//        ui->pwdsureLineEdit->setEchoMode(QLineEdit::Password);
+-//        ui->pwdsureLineEdit->setFocus();
+-//    });
+-    connect(showPwdBtn, &QPushButton::clicked, this, [=]{
+-        if(isPwdVisibel){
+-            ui->pwdLineEdit->setEchoMode(QLineEdit::Password);
+-            isPwdVisibel = false;
+-            showPwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}");
+-
+-        } else {
+-            ui->pwdLineEdit->setEchoMode(QLineEdit::Normal);
+-            isPwdVisibel = true;
+-            showPwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdUnscramble.png);}");
+-        }
+-        ui->usernameLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);}");
+-        ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);"
+-                                          "border: 2px solid #2FB3E8;}");
+-        ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);}");
+-        ui->pwdLineEdit->setFocus();
+-    });
+-    connect(showSurePwdBtn, &QPushButton::clicked, this, [=]{
+-        if(isSurePwdVisibel){
+-            ui->pwdsureLineEdit->setEchoMode(QLineEdit::Password);
+-            isSurePwdVisibel = false;
+-            showSurePwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdEncrypted.png);}");
+-
+-        } else {
+-            ui->pwdsureLineEdit->setEchoMode(QLineEdit::Normal);
+-            isSurePwdVisibel = true;
+-            showSurePwdBtn->setStyleSheet("QPushButton{border-image: url(:/img/plugins/userinfo_intel/pwdUnscramble.png);}");
+-        }
+-        ui->usernameLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);}");
+-        ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);}");
+-        ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                          "background: palett(base);"
+-                                          "border: 2px solid #2FB3E8;}");
+-        ui->pwdsureLineEdit->setFocus();
+-    });
+-//    ui->pinLineEdit->setPlaceholderText(tr("PIN Code"));
+-//    ui->pinsureLineEdit->setPlaceholderText(tr("PIN Code Identify"));
+-
+-//    ui->pwdTypeComBox->addItem(tr("General Password"));
+-
+-//    //给radiobtn设置id,id即accoutnType,方便直接返回id值
+-    ui->buttonGroup->setId(ui->standardRadioBtn, 0);
+-    ui->buttonGroup->setId(ui->adminRadioBtn, 1);
+-
+-//    //默认标准用户
+-    ui->standardRadioBtn->setChecked(true);
+-
+-    //设置确定按钮
+-    refreshConfirmBtnStatus();
+-
+-//    confirm_btn_status_refresh();
+-}
+-
+-bool CreateUserIntelDialog::eventFilter(QObject *w, QEvent *e) {
+-    if(w == ui->usernameLineEdit) {
+-        if(e->type() == QEvent::MouseButtonPress) {
+-            ui->usernameLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);"
+-                                              "border: 2px solid #2FB3E8;}");
+-            ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);}");
+-            ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);}");
+-        }
+-    } else if(w == ui->pwdLineEdit) {
+-        if(e->type() == QEvent::MouseButtonPress) {
+-            ui->usernameLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);}");
+-            ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);"
+-                                              "border: 2px solid #2FB3E8;}");
+-            ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);}");
+-        }
+-    } else if(w == ui->pwdsureLineEdit) {
+-        if(e->type() == QEvent::MouseButtonPress) {
+-            ui->usernameLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);}");
+-            ui->pwdLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);}");
+-            ui->pwdsureLineEdit->setStyleSheet("QLineEdit{border-radius: 8px;"
+-                                              "background: palett(base);"
+-                                              "border: 2px solid #2FB3E8;}");
+-        }
+-    }
+-    return QWidget::eventFilter(w,e);
+-}
+-
+-void CreateUserIntelDialog::setupConnect(){
+-
+-    connect(ui->closeBtn, &QPushButton::clicked, [=](bool checked){
+-        Q_UNUSED(checked)
+-        close();
+-    });
+-
+-    connect(ui->usernameLineEdit, &QLineEdit::textChanged, [=](QString text){
+-        nameLegalityCheck(text);
+-    });
+-
+-    connect(ui->pwdLineEdit, &QLineEdit::textChanged, [=](QString text){
+-        pwdLegalityCheck(text);
+-    });
+-
+-    connect(ui->pwdsureLineEdit, &QLineEdit::textChanged, [=](QString text){
+-        if (!text.isEmpty() && text != ui->pwdLineEdit->text()){
+-            pwdSureTip = tr("Inconsistency with pwd");
+-        } else {
+-            pwdSureTip = "";
+-        }
+-
+-        ui->tipLabel->setText(pwdSureTip);
+-//        if (pwdSureTip.isEmpty()){
+-//            pwdTip.isEmpty() ? ui->tipLabel->setText(nameTip) : ui->tipLabel->setText(pwdTip);
+-//        }
+-
+-        refreshConfirmBtnStatus();
+-    });
+-
+-    //    connect(ui->confirmPushBtn, SIGNAL(clicked(bool)), this, SLOT(confirm_btn_clicked_slot()));
+-    //    connect(ui->usernameLineEdit, SIGNAL(textChanged(QString)), this, SLOT(name_legality_check_slot(QString)));
+-    //    connect(ui->pwdLineEdit, SIGNAL(textChanged(QString)), this, SLOT(pwd_legality_check_slot(QString)));
+-    //    connect(ui->pwdsureLineEdit, SIGNAL(textChanged(QString)), this, SLOT(pwdsure_legality_check_slot(QString)));
+-
+-    connect(ui->confirmBtn, &QPushButton::clicked, [=](bool checked){
+-        Q_UNUSED(checked)
+-        this->accept();
+-        QString uName, pwd, pin;
+-
+-        uName = ui->usernameLineEdit->text();
+-//        if (ui->pwdTypeComBox->currentIndex() == 0){
+-//            pwd = ui->pwdLineEdit->text();
+-//            pin = "";
+-//        } else {
+-//            pwd = "";
+-//            pin = ui->pwdLineEdit->text();
+-//        }
+-        pwd = ui->pwdLineEdit->text();
+-        pin = "";
+-
+-        emit newUserWillCreate(uName, pwd, pin, ui->buttonGroup->checkedId());
+-
+-    });
+-
+-    connect(ui->cancelBtn, &QPushButton::clicked, [=](bool checked){
+-        Q_UNUSED(checked)
+-        reject();
+-    });
+-}
+-
+-//void CreateUserIntelDialog::set_face_label(QString iconfile){
+-//    ui->faceLabel->setPixmap(QPixmap(iconfile).scaled(QSize(80, 80)));
+-//}
+-
+-//void CreateUserIntelDialog::tiplabel_status_refresh(){
+-//    if (ui->usernametipLabel->text().isEmpty())
+-//        ui->usernametipLabel->hide();
+-//    else
+-//        ui->usernametipLabel->show();
+-
+-//    if (ui->pwdtipLabel->text().isEmpty())
+-//        ui->pwdtipLabel->hide();
+-//    else
+-//        ui->pwdtipLabel->show();
+-
+-//    if (ui->pwdsuretipLabel->text().isEmpty())
+-//        ui->pwdsuretipLabel->hide();
+-//    else
+-//        ui->pwdsuretipLabel->show();
+-
+-//    if (ui->pintipLabel->text().isEmpty())
+-//        ui->pintipLabel->hide();
+-//    else
+-//        ui->pintipLabel->show();
+-
+-//    if (ui->pinsuretipLabel->text().isEmpty())
+-//        ui->pinsuretipLabel->hide();
+-//    else
+-//        ui->pinsuretipLabel->show();
+-//}
+-
+-void CreateUserIntelDialog::setRequireLabel(QString msg){
+-//    ui->requireLabel->setText(msg);
+-}
+-
+-void CreateUserIntelDialog::refreshConfirmBtnStatus(){
+-    if (ui->usernameLineEdit->text().isEmpty() ||
+-            ui->pwdLineEdit->text().isEmpty() ||
+-            ui->pwdsureLineEdit->text().isEmpty() ||
+-            !nameTip.isEmpty() || !pwdTip.isEmpty() || !pwdSureTip.isEmpty())
+-        ui->confirmBtn->setEnabled(false);
+-    else
+-        ui->confirmBtn->setEnabled(true);
+-}
+-
+-
+-void CreateUserIntelDialog::pwdLegalityCheck(QString pwd){
+-    if (enablePwdQuality){
+-#ifdef ENABLEPQ
+-        void * auxerror;
+-        int ret;
+-        const char * msg;
+-        char buf[256];
+-
+-        QByteArray ba = pwd.toLatin1();
+-
+-        ret = pwquality_check(settings, ba.data(), NULL, NULL, &auxerror);
+-        if (ret < 0 && pwd.length() > 0){
+-            msg = pwquality_strerror(buf, sizeof(buf), ret, auxerror);
+-            pwdTip = QString(msg);
+-        } else {
+-            pwdTip = "";
+-        }
+-#endif
+-    } else {
+-        if (pwd.length() < PWD_LOW_LENGTH) {
+-            pwdTip = tr("Password length needs to more than %1 character!").arg(PWD_LOW_LENGTH - 1);
+-        } else if (pwd.length() > PWD_HIGH_LENGTH) {
+-            pwdTip = tr("Password length needs to less than %1 character!").arg(PWD_HIGH_LENGTH + 1);
+-        } else {
+-            pwdTip = "";
+-        }
+-    }
+-
+-    //防止先输入确认密码,再输入密码后pwdsuretipLabel无法刷新
+-    if (!ui->pwdsureLineEdit->text().isEmpty()){
+-        if (ui->pwdLineEdit->text() == ui->pwdsureLineEdit->text()) {
+-            pwdSureTip = "";
+-        } else {
+-            pwdSureTip = tr("Inconsistency with pwd");
+-        }
+-    }
+-
+-    ui->tipLabel_2->setText(pwdTip);
+-//    if (pwdTip.isEmpty()){
+-//        pwdSureTip.isEmpty() ? ui->tipLabel->setText(nameTip) : ui->tipLabel->setText(pwdSureTip);
+-//    }
+-
+-    refreshConfirmBtnStatus();
+-}
+-
+-
+-void CreateUserIntelDialog::paintEvent(QPaintEvent *event) {
+-    Q_UNUSED(event);
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    QRect rect = this->rect();
+-    rect.setWidth(rect.width()-0);
+-    rect.setHeight(rect.height()-0);
+-    rectPath.addRoundedRect(rect,12,12);
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 10, false, false);
+-
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-    p.restore();
+-
+-}
+-
+-void CreateUserIntelDialog::keyPressEvent(QKeyEvent *event)
+-{
+-    if(event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return ) {
+-        if( ui->confirmBtn->isEnabled()) {
+-            ui->confirmBtn->click();
+-        }
+-        return;
+-    }
+-    QDialog::keyPressEvent(event);
+-}
+-
+-QStringList CreateUserIntelDialog::getHomeUser()
+-{
+-    QStringList homeList;
+-    QDir dir("/home");
+-    if (dir.exists())
+-    {
+-        homeList = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
+-    }
+-
+-    return homeList;
+-}
+-
+-bool CreateUserIntelDialog::nameTraverse(QString username){
+-    QString::const_iterator cit = NULL;
+-    for (cit = username.cbegin(); cit < username.cend(); cit++){
+-        QString str = *cit;
+-        if (str.contains(QRegExp("[a-z]"))){
+-        } else if (str.contains(QRegExp("[0-9]"))){
+-        } else if (str.contains("_")){
+-        } else{
+-            return false;
+-        }
+-    }
+-    return true;
+-}
+-
+-void CreateUserIntelDialog::nameLegalityCheck(QString username){
+-
+-    if (username.isEmpty())
+-        nameTip = tr("The user name cannot be empty");
+-    else if (username.startsWith("_") || username.left(1).contains((QRegExp("[0-9]")))){
+-        nameTip = tr("The first character must be lowercase letters!");
+-    }
+-    else if (username.contains(QRegExp("[A-Z]"))){
+-        nameTip = tr("User name can not contain capital letters!");
+-    }
+-    else if (nameTraverse(username))
+-        if (username.length() > 0 && username.length() < USER_LENGTH){
+-            /*
+-             * 此处代码需要优化
+-             */
+-//            back = false;
+-//            QString cmd = QString("getent group %1").arg(username);
+-//            process = new QProcess(this);
+-//            connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(name_conflict_group_slot()));
+-//            process->start(cmd);
+-
+-            if (usersStringList.contains(username)){
+-                nameTip = tr("The user name is already in use, please use a different one.");
+-            } else {
+-                nameTip = "";
+-            }
+-        } else {
+-            nameTip = tr("User name length need to less than %1 letters!").arg(USER_LENGTH);
+-    } else {
+-        nameTip = tr("The user name can only be composed of letters, numbers and underline!");
+-    }
+-
+-     QStringList homeDir = getHomeUser();
+-     if (homeDir.contains(username) && nameTip.isEmpty()) {
+-         nameTip = tr("The username is configured, please change the username");
+-     }
+-
+-    ui->tipLabel_3->setText(nameTip);
+-
+-//    if (nameTip.isEmpty()){
+-//        pwdTip.isEmpty() ? ui->tipLabel->setText(pwdSureTip) : ui->tipLabel->setText(pwdTip);
+-//    }
+-
+-    refreshConfirmBtnStatus();
+-}
+diff --git a/plugins/account/userinfo_intel/createuserinteldialog.h b/plugins/account/userinfo_intel/createuserinteldialog.h
+deleted file mode 100644
+index 2198370..0000000
+--- a/plugins/account/userinfo_intel/createuserinteldialog.h
++++ /dev/null
+@@ -1,109 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef CREATEUSERINTELDIALOG_H
+-#define CREATEUSERINTELDIALOG_H
+-
+-#include <QDialog>
+-#include <QProcess>
+-#include <QPainter>
+-#include <QPainterPath>
+-#include <QKeyEvent>
+-#include <QFile>
+-#include <QStyledItemDelegate>
+-#include <QHBoxLayout>
+-#include <QPushButton>
+-
+-#ifdef ENABLEPQ
+-extern "C" {
+-
+-#include <pwquality.h>
+-
+-}
+-#define PWCONF "/etc/security/pwquality.conf"
+-#define RFLAG 0x1
+-#define CFLAG 0x2
+-#endif
+-
+-namespace Ui {
+-class CreateUserIntelDialog;
+-}
+-
+-class CreateUserIntelDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit CreateUserIntelDialog(QStringList userlist, QWidget *parent = 0);
+-    ~CreateUserIntelDialog();
+-
+-public:
+-    void setupComonpent();
+-    void setupConnect();
+-    void setRequireLabel(QString msg);
+-
+-    void refreshConfirmBtnStatus();
+-
+-    void nameLegalityCheck(QString username);
+-    void pwdLegalityCheck(QString pwd);
+-    bool nameTraverse(QString username);
+-
+-    void initPwdChecked();
+-
+-    QHBoxLayout * pwdLineEditHLayout;
+-    QHBoxLayout * pwdsureLineEditHLayout;
+-    QPushButton * showPwdBtn;
+-    QPushButton * showSurePwdBtn;
+-
+-protected:
+-    void paintEvent(QPaintEvent *);
+-    void keyPressEvent(QKeyEvent *);
+-    bool eventFilter(QObject *w,QEvent *e);
+-
+-private:
+-    QStringList getHomeUser();
+-
+-private:
+-    Ui::CreateUserIntelDialog *ui;
+-
+-    bool back;
+-    bool isCreateUser = false;
+-    bool enablePwdQuality;
+-
+-    bool isPwdVisibel = false;
+-    bool isSurePwdVisibel = false;
+-
+-    QProcess * process;
+-
+-    QString nameTip;
+-    QString pwdTip;
+-    QString pwdSureTip;
+-
+-    QStringList usersStringList;
+-
+-#ifdef ENABLEPQ
+-    pwquality_settings_t *settings;
+-#endif
+-
+-Q_SIGNALS:
+-    void newUserWillCreate(QString username, QString pwd, QString pin, int atype);
+-
+-};
+-
+-#endif // CREATEUSERINTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/createuserinteldialog.ui b/plugins/account/userinfo_intel/createuserinteldialog.ui
+deleted file mode 100644
+index b0b0632..0000000
+--- a/plugins/account/userinfo_intel/createuserinteldialog.ui
++++ /dev/null
+@@ -1,778 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>CreateUserIntelDialog</class>
+- <widget class="QDialog" name="CreateUserIntelDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>360</width>
+-    <height>628</height>
+-   </rect>
+-  </property>
+-  <property name="sizePolicy">
+-   <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-    <horstretch>0</horstretch>
+-    <verstretch>0</verstretch>
+-   </sizepolicy>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>360</width>
+-    <height>628</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>360</width>
+-    <height>628</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string notr="true">Create User</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_2">
+-   <property name="spacing">
+-    <number>0</number>
+-   </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>
+-    <widget class="QFrame" name="frame_4">
+-     <property name="sizePolicy">
+-      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-       <horstretch>0</horstretch>
+-       <verstretch>0</verstretch>
+-      </sizepolicy>
+-     </property>
+-     <property name="minimumSize">
+-      <size>
+-       <width>360</width>
+-       <height>48</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>360</width>
+-       <height>48</height>
+-      </size>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::NoFrame</enum>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout">
+-      <property name="spacing">
+-       <number>0</number>
+-      </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>
+-       <layout class="QHBoxLayout" name="horizontalLayout_2">
+-        <property name="leftMargin">
+-         <number>24</number>
+-        </property>
+-        <property name="topMargin">
+-         <number>12</number>
+-        </property>
+-        <property name="rightMargin">
+-         <number>24</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>12</number>
+-        </property>
+-        <item>
+-         <widget class="QLabel" name="titleLabel">
+-          <property name="sizePolicy">
+-           <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-            <horstretch>0</horstretch>
+-            <verstretch>0</verstretch>
+-           </sizepolicy>
+-          </property>
+-          <property name="font">
+-           <font>
+-            <pointsize>13</pointsize>
+-           </font>
+-          </property>
+-          <property name="text">
+-           <string>Add New Account</string>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <spacer name="horizontalSpacer_2">
+-          <property name="orientation">
+-           <enum>Qt::Horizontal</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>40</width>
+-            <height>20</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-        <item>
+-         <widget class="QPushButton" name="closeBtn">
+-          <property name="minimumSize">
+-           <size>
+-            <width>24</width>
+-            <height>24</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>24</width>
+-            <height>24</height>
+-           </size>
+-          </property>
+-          <property name="text">
+-           <string/>
+-          </property>
+-         </widget>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <widget class="QFrame" name="frame">
+-     <property name="sizePolicy">
+-      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-       <horstretch>0</horstretch>
+-       <verstretch>0</verstretch>
+-      </sizepolicy>
+-     </property>
+-     <property name="minimumSize">
+-      <size>
+-       <width>360</width>
+-       <height>580</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>360</width>
+-       <height>580</height>
+-      </size>
+-     </property>
+-     <property name="frameShape">
+-      <enum>QFrame::Box</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_8">
+-      <property name="spacing">
+-       <number>0</number>
+-      </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>
+-       <layout class="QVBoxLayout" name="verticalLayout_7">
+-        <property name="spacing">
+-         <number>0</number>
+-        </property>
+-        <property name="leftMargin">
+-         <number>24</number>
+-        </property>
+-        <property name="topMargin">
+-         <number>0</number>
+-        </property>
+-        <property name="rightMargin">
+-         <number>24</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>24</number>
+-        </property>
+-        <item>
+-         <spacer name="verticalSpacer">
+-          <property name="orientation">
+-           <enum>Qt::Vertical</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>20</width>
+-            <height>40</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-        <item>
+-         <layout class="QVBoxLayout" name="verticalLayout_4">
+-          <property name="spacing">
+-           <number>24</number>
+-          </property>
+-          <item>
+-           <widget class="QWidget" name="widget_3" native="true">
+-            <property name="minimumSize">
+-             <size>
+-              <width>0</width>
+-              <height>0</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>16777215</width>
+-              <height>16777215</height>
+-             </size>
+-            </property>
+-            <layout class="QVBoxLayout" name="verticalLayout_10">
+-             <property name="spacing">
+-              <number>0</number>
+-             </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>
+-              <layout class="QHBoxLayout" name="horizontalLayout_5">
+-               <property name="spacing">
+-                <number>0</number>
+-               </property>
+-               <item>
+-                <widget class="QLineEdit" name="usernameLineEdit">
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>0</width>
+-                   <height>48</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>16777215</width>
+-                   <height>48</height>
+-                  </size>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-             <item>
+-              <widget class="QLabel" name="tipLabel_3">
+-               <property name="sizePolicy">
+-                <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-                 <horstretch>0</horstretch>
+-                 <verstretch>0</verstretch>
+-                </sizepolicy>
+-               </property>
+-               <property name="minimumSize">
+-                <size>
+-                 <width>0</width>
+-                 <height>24</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>16777215</width>
+-                 <height>24</height>
+-                </size>
+-               </property>
+-               <property name="font">
+-                <font>
+-                 <family>Noto Sans CJK SC</family>
+-                 <pointsize>12</pointsize>
+-                </font>
+-               </property>
+-               <property name="text">
+-                <string/>
+-               </property>
+-              </widget>
+-             </item>
+-             <item>
+-              <layout class="QHBoxLayout" name="horizontalLayout_12">
+-               <property name="spacing">
+-                <number>0</number>
+-               </property>
+-               <item>
+-                <widget class="QLineEdit" name="pwdLineEdit">
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>0</width>
+-                   <height>48</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>16777215</width>
+-                   <height>48</height>
+-                  </size>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-             <item>
+-              <widget class="QLabel" name="tipLabel_2">
+-               <property name="sizePolicy">
+-                <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-                 <horstretch>0</horstretch>
+-                 <verstretch>0</verstretch>
+-                </sizepolicy>
+-               </property>
+-               <property name="minimumSize">
+-                <size>
+-                 <width>0</width>
+-                 <height>24</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>16777215</width>
+-                 <height>24</height>
+-                </size>
+-               </property>
+-               <property name="font">
+-                <font>
+-                 <family>Noto Sans CJK SC</family>
+-                 <pointsize>12</pointsize>
+-                </font>
+-               </property>
+-               <property name="text">
+-                <string/>
+-               </property>
+-              </widget>
+-             </item>
+-             <item>
+-              <layout class="QHBoxLayout" name="horizontalLayout_13">
+-               <property name="spacing">
+-                <number>0</number>
+-               </property>
+-               <item>
+-                <widget class="QLineEdit" name="pwdsureLineEdit">
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>0</width>
+-                   <height>48</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>16777215</width>
+-                   <height>48</height>
+-                  </size>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-             <item>
+-              <layout class="QHBoxLayout" name="horizontalLayout">
+-               <property name="spacing">
+-                <number>0</number>
+-               </property>
+-               <property name="topMargin">
+-                <number>0</number>
+-               </property>
+-               <property name="bottomMargin">
+-                <number>16</number>
+-               </property>
+-               <item>
+-                <widget class="QLabel" name="tipLabel">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>0</width>
+-                   <height>24</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>16777215</width>
+-                   <height>24</height>
+-                  </size>
+-                 </property>
+-                 <property name="font">
+-                  <font>
+-                   <pointsize>10</pointsize>
+-                  </font>
+-                 </property>
+-                 <property name="text">
+-                  <string/>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-            </layout>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-        <item>
+-         <layout class="QVBoxLayout" name="verticalLayout_9">
+-          <property name="spacing">
+-           <number>8</number>
+-          </property>
+-          <item>
+-           <widget class="QLabel" name="label_6">
+-            <property name="sizePolicy">
+-             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-              <horstretch>0</horstretch>
+-              <verstretch>0</verstretch>
+-             </sizepolicy>
+-            </property>
+-            <property name="text">
+-             <string>Account Type</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="QWidget" name="widget" native="true">
+-            <property name="minimumSize">
+-             <size>
+-              <width>0</width>
+-              <height>90</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>16777215</width>
+-              <height>90</height>
+-             </size>
+-            </property>
+-            <layout class="QHBoxLayout" name="horizontalLayout_7">
+-             <property name="spacing">
+-              <number>0</number>
+-             </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>
+-              <layout class="QHBoxLayout" name="horizontalLayout_6">
+-               <property name="spacing">
+-                <number>16</number>
+-               </property>
+-               <property name="leftMargin">
+-                <number>16</number>
+-               </property>
+-               <property name="rightMargin">
+-                <number>16</number>
+-               </property>
+-               <item>
+-                <widget class="QRadioButton" name="standardRadioBtn">
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>20</width>
+-                   <height>0</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>20</width>
+-                   <height>16777215</height>
+-                  </size>
+-                 </property>
+-                 <property name="text">
+-                  <string/>
+-                 </property>
+-                 <attribute name="buttonGroup">
+-                  <string notr="true">buttonGroup</string>
+-                 </attribute>
+-                </widget>
+-               </item>
+-               <item>
+-                <layout class="QVBoxLayout" name="verticalLayout_5">
+-                 <property name="spacing">
+-                  <number>4</number>
+-                 </property>
+-                 <property name="topMargin">
+-                  <number>8</number>
+-                 </property>
+-                 <property name="bottomMargin">
+-                  <number>8</number>
+-                 </property>
+-                 <item>
+-                  <widget class="QLabel" name="label_7">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="font">
+-                    <font>
+-                     <pointsize>12</pointsize>
+-                    </font>
+-                   </property>
+-                   <property name="text">
+-                    <string>standard user</string>
+-                   </property>
+-                  </widget>
+-                 </item>
+-                 <item>
+-                  <widget class="QLabel" name="label_8">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="text">
+-                    <string>Standard users can use most software, but cannot install the software and 
+-change system settings</string>
+-                   </property>
+-                   <property name="wordWrap">
+-                    <bool>true</bool>
+-                   </property>
+-                  </widget>
+-                 </item>
+-                </layout>
+-               </item>
+-              </layout>
+-             </item>
+-            </layout>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="QWidget" name="widget_2" native="true">
+-            <property name="minimumSize">
+-             <size>
+-              <width>0</width>
+-              <height>90</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>16777215</width>
+-              <height>90</height>
+-             </size>
+-            </property>
+-            <layout class="QHBoxLayout" name="horizontalLayout_9">
+-             <property name="spacing">
+-              <number>0</number>
+-             </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>
+-              <layout class="QHBoxLayout" name="horizontalLayout_8">
+-               <property name="spacing">
+-                <number>16</number>
+-               </property>
+-               <property name="leftMargin">
+-                <number>16</number>
+-               </property>
+-               <property name="rightMargin">
+-                <number>16</number>
+-               </property>
+-               <item>
+-                <widget class="QRadioButton" name="adminRadioBtn">
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>20</width>
+-                   <height>0</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>20</width>
+-                   <height>16777215</height>
+-                  </size>
+-                 </property>
+-                 <property name="text">
+-                  <string/>
+-                 </property>
+-                 <attribute name="buttonGroup">
+-                  <string notr="true">buttonGroup</string>
+-                 </attribute>
+-                </widget>
+-               </item>
+-               <item>
+-                <layout class="QVBoxLayout" name="verticalLayout_6">
+-                 <property name="spacing">
+-                  <number>4</number>
+-                 </property>
+-                 <property name="topMargin">
+-                  <number>8</number>
+-                 </property>
+-                 <property name="bottomMargin">
+-                  <number>8</number>
+-                 </property>
+-                 <item>
+-                  <widget class="QLabel" name="label_9">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="font">
+-                    <font>
+-                     <pointsize>12</pointsize>
+-                    </font>
+-                   </property>
+-                   <property name="text">
+-                    <string>administrator</string>
+-                   </property>
+-                  </widget>
+-                 </item>
+-                 <item>
+-                  <widget class="QLabel" name="label_10">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="text">
+-                    <string>Administrators can make any changes they need</string>
+-                   </property>
+-                   <property name="wordWrap">
+-                    <bool>true</bool>
+-                   </property>
+-                  </widget>
+-                 </item>
+-                </layout>
+-               </item>
+-              </layout>
+-             </item>
+-            </layout>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-        <item>
+-         <spacer name="verticalSpacer_3">
+-          <property name="orientation">
+-           <enum>Qt::Vertical</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>20</width>
+-            <height>40</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_10">
+-          <property name="spacing">
+-           <number>16</number>
+-          </property>
+-          <item>
+-           <widget class="QPushButton" name="cancelBtn">
+-            <property name="minimumSize">
+-             <size>
+-              <width>144</width>
+-              <height>48</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>144</width>
+-              <height>48</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string>Cancel</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>40</width>
+-              <height>20</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-          <item>
+-           <widget class="QPushButton" name="confirmBtn">
+-            <property name="minimumSize">
+-             <size>
+-              <width>144</width>
+-              <height>48</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>144</width>
+-              <height>48</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string>Confirm</string>
+-            </property>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-  </layout>
+- </widget>
+- <resources/>
+- <connections/>
+- <buttongroups>
+-  <buttongroup name="buttonGroup"/>
+- </buttongroups>
+-</ui>
+diff --git a/plugins/account/userinfo_intel/definegroupitemintel.cpp b/plugins/account/userinfo_intel/definegroupitemintel.cpp
+deleted file mode 100644
+index b92c92c..0000000
+--- a/plugins/account/userinfo_intel/definegroupitemintel.cpp
++++ /dev/null
+@@ -1,139 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2020 KYLINOS Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-#include <QHBoxLayout>
+-#include <QLabel>
+-#include <QPushButton>
+-#include <QSizePolicy>
+-
+-#include "definegroupitemintel.h"
+-
+-DefineGroupItemIntel::DefineGroupItemIntel(QString groupName)
+-{
+-//    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    _deleteable = false;
+-    _updateable = false;
+-    _editable   = false;
+-
+-    QHBoxLayout * baseHorLayout = new QHBoxLayout(this);
+-    baseHorLayout->setSpacing(16);
+-    baseHorLayout->setMargin(0);
+-
+-    pWidget = new QWidget(this);
+-
+-    QHBoxLayout * mainHorLayout = new QHBoxLayout(pWidget);
+-    mainHorLayout->setSpacing(0);
+-    //mainHorLayout->setContentsMargins(16, 0, 16, 0);
+-
+-    pWidget->setLayout(mainHorLayout);
+-
+-    pLabel = new QLabel(pWidget);
+-    pLabel->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
+-    pLabel->setText(groupName);
+-
+-    pEditBtn = new QPushButton(this);
+-    pEditBtn->setText(tr("Edit"));
+-    pEditBtn->setFixedSize(60,36);
+-    pEditBtn->hide();
+-
+-    QSizePolicy btnSizePolicy = pEditBtn->sizePolicy();
+-    btnSizePolicy.setVerticalPolicy(QSizePolicy::Expanding);
+-    pEditBtn->setSizePolicy(btnSizePolicy);
+-
+-    pDelBtn = new QPushButton(this);
+-    pDelBtn->setText(tr("Delete"));
+-    pDelBtn->setFixedSize(60,36);
+-    pDelBtn->hide();
+-
+-    QSizePolicy btnSizePolicy2 = pDelBtn->sizePolicy();
+-    btnSizePolicy2.setVerticalPolicy(QSizePolicy::Expanding);
+-    pDelBtn->setSizePolicy(btnSizePolicy2);
+-
+-    QPalette palette = pEditBtn->palette();
+-    QColor ColorPlaceholderText(255,255,255,0);
+-    QBrush brush;
+-    brush.setColor(ColorPlaceholderText);
+-    palette.setBrush(QPalette::Button, Qt::white);
+-    //palette.setBrush(QPalette::ButtonText, brush);
+-    pEditBtn->setPalette(palette);
+-    pDelBtn->setPalette(palette);
+-
+-    mainHorLayout->addWidget(pLabel);
+-
+-    baseHorLayout->addWidget(pWidget);
+-    baseHorLayout->addWidget(pEditBtn);
+-    baseHorLayout->addWidget(pDelBtn);
+-    baseHorLayout->addSpacing(16);
+-
+-    setLayout(baseHorLayout);
+-}
+-
+-DefineGroupItemIntel::~DefineGroupItemIntel()
+-{
+-}
+-
+-QWidget * DefineGroupItemIntel::widgetComponent(){
+-    return pWidget;
+-}
+-
+-QLabel * DefineGroupItemIntel::labelComponent(){
+-    return pLabel;
+-}
+-
+-QPushButton * DefineGroupItemIntel::editBtnComponent(){
+-    return pEditBtn;
+-}
+-
+-QPushButton * DefineGroupItemIntel::delBtnComponent(){
+-    return pDelBtn;
+-}
+-
+-void DefineGroupItemIntel::setDeleteable(bool deleteable){
+-    _deleteable = deleteable;
+-}
+-
+-void DefineGroupItemIntel::setUpdateable(bool updateable){
+-    _updateable = updateable;
+-}
+-
+-void DefineGroupItemIntel::setEditable(bool editable){
+-    _editable = editable;
+-}
+-
+-void DefineGroupItemIntel::setShortcutName(QString newName){
+-    pLabel->setText(newName);
+-}
+-
+-void DefineGroupItemIntel::mousePressEvent(QMouseEvent *e){
+-    if (e->button() == Qt::LeftButton && _deleteable && _editable){
+-        pEditBtn->show();
+-        pDelBtn->show();
+-    }
+-
+-    QWidget::mousePressEvent(e);
+-}
+-
+-void DefineGroupItemIntel::mouseDoubleClickEvent(QMouseEvent *e){
+-    if (e->button() == Qt::LeftButton && _updateable){
+-        emit updateShortcutSignal();
+-    }
+-    QWidget::mouseDoubleClickEvent(e);
+-}
+diff --git a/plugins/account/userinfo_intel/definegroupitemintel.h b/plugins/account/userinfo_intel/definegroupitemintel.h
+deleted file mode 100644
+index 56e5e38..0000000
+--- a/plugins/account/userinfo_intel/definegroupitemintel.h
++++ /dev/null
+@@ -1,74 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2020 KYLINOS Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-#ifndef DEFINEGROUPITEMINTEL_H
+-#define DEFINEGROUPITEMINTEL_H
+-
+-#include <QWidget>
+-#include <QFrame>
+-#include <QMouseEvent>
+-
+-class QLabel;
+-class QPushButton;
+-
+-class DefineGroupItemIntel : public QFrame
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit DefineGroupItemIntel(QString groupName);
+-    ~DefineGroupItemIntel();
+-
+-public:
+-    QWidget * widgetComponent();
+-    QLabel * labelComponent();
+-    QPushButton * editBtnComponent();
+-    QPushButton * delBtnComponent();
+-
+-public:
+-    void setDeleteable(bool deleteable);
+-    void setUpdateable(bool updateable);
+-    void setEditable(bool editable);
+-
+-    void setShortcutName(QString newName);
+-    void setShortcutBinding(QString newBinding);
+-
+-protected:
+-    virtual void mousePressEvent(QMouseEvent * e);
+-    virtual void mouseDoubleClickEvent(QMouseEvent * e);
+-
+-
+-private:
+-    QWidget * pWidget;
+-    QLabel * pLabel;
+-    QPushButton * pEditBtn;
+-    QPushButton * pDelBtn;
+-
+-private:
+-    bool _deleteable;
+-    bool _editable;
+-    bool _updateable;
+-
+-Q_SIGNALS:
+-    void updateShortcutSignal();
+-
+-};
+-
+-#endif // DEFINEGROUPITEMINTEL_H
+diff --git a/plugins/account/userinfo_intel/delgroupinteldialog.cpp b/plugins/account/userinfo_intel/delgroupinteldialog.cpp
+deleted file mode 100644
+index 99b5dd5..0000000
+--- a/plugins/account/userinfo_intel/delgroupinteldialog.cpp
++++ /dev/null
+@@ -1,41 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2020 KYLINOS Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-#include "delgroupinteldialog.h"
+-#include "ui_delgroupinteldialog.h"
+-
+-DelGroupIntelDialog::DelGroupIntelDialog(QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::DelGroupIntelDialog)
+-{
+-    ui->setupUi(this);
+-    ui->labelPic->setPixmap(QPixmap("://img/plugins/desktop/notice.png"));
+-}
+-
+-DelGroupIntelDialog::~DelGroupIntelDialog()
+-{
+-    delete ui;
+-}
+-
+-void DelGroupIntelDialog::setNoticeText(QString txt)
+-{
+-    qDebug() << "setNoticeText" << txt;
+-}
+-
+diff --git a/plugins/account/userinfo_intel/delgroupinteldialog.h b/plugins/account/userinfo_intel/delgroupinteldialog.h
+deleted file mode 100644
+index 6fd3e6a..0000000
+--- a/plugins/account/userinfo_intel/delgroupinteldialog.h
++++ /dev/null
+@@ -1,47 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2020 KYLINOS Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-#ifndef DELGROUPINTELDIALOG_H
+-#define DELGROUPINTELDIALOG_H
+-
+-#include <QDialog>
+-#include <QPixmap>
+-#include <QDebug>
+-
+-namespace Ui {
+-class DelGroupIntelDialog;
+-}
+-
+-class DelGroupIntelDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit DelGroupIntelDialog(QWidget *parent = nullptr);
+-    ~DelGroupIntelDialog();
+-
+-public:
+-    void setNoticeText(QString txt);
+-
+-private:
+-    Ui::DelGroupIntelDialog *ui;
+-};
+-
+-#endif // DELGROUPINTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/delgroupinteldialog.ui b/plugins/account/userinfo_intel/delgroupinteldialog.ui
+deleted file mode 100644
+index c7efa35..0000000
+--- a/plugins/account/userinfo_intel/delgroupinteldialog.ui
++++ /dev/null
+@@ -1,154 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>DelGroupIntelDialog</class>
+- <widget class="QDialog" name="DelGroupIntelDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>363</width>
+-    <height>280</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>363</width>
+-    <height>280</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>363</width>
+-    <height>280</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Dialog</string>
+-  </property>
+-  <widget class="QLabel" name="label_2">
+-   <property name="geometry">
+-    <rect>
+-     <x>60</x>
+-     <y>70</y>
+-     <width>280</width>
+-     <height>39</height>
+-    </rect>
+-   </property>
+-   <property name="text">
+-    <string>TextLabel</string>
+-   </property>
+-  </widget>
+-  <widget class="QWidget" name="layoutWidget">
+-   <property name="geometry">
+-    <rect>
+-     <x>20</x>
+-     <y>180</y>
+-     <width>311</width>
+-     <height>38</height>
+-    </rect>
+-   </property>
+-   <layout class="QHBoxLayout" name="horizontalLayout_2">
+-    <property name="spacing">
+-     <number>12</number>
+-    </property>
+-    <item>
+-     <spacer name="horizontalSpacer">
+-      <property name="orientation">
+-       <enum>Qt::Horizontal</enum>
+-      </property>
+-      <property name="sizeHint" stdset="0">
+-       <size>
+-        <width>40</width>
+-        <height>20</height>
+-       </size>
+-      </property>
+-     </spacer>
+-    </item>
+-    <item>
+-     <widget class="QPushButton" name="cancelPushBtn">
+-      <property name="minimumSize">
+-       <size>
+-        <width>120</width>
+-        <height>36</height>
+-       </size>
+-      </property>
+-      <property name="maximumSize">
+-       <size>
+-        <width>120</width>
+-        <height>36</height>
+-       </size>
+-      </property>
+-      <property name="text">
+-       <string>Cancel</string>
+-      </property>
+-      <property name="flat">
+-       <bool>false</bool>
+-      </property>
+-     </widget>
+-    </item>
+-    <item>
+-     <widget class="QPushButton" name="removePushBtn">
+-      <property name="minimumSize">
+-       <size>
+-        <width>120</width>
+-        <height>36</height>
+-       </size>
+-      </property>
+-      <property name="maximumSize">
+-       <size>
+-        <width>120</width>
+-        <height>36</height>
+-       </size>
+-      </property>
+-      <property name="text">
+-       <string>RemoveFile</string>
+-      </property>
+-     </widget>
+-    </item>
+-   </layout>
+-  </widget>
+-  <widget class="QWidget" name="layoutWidget">
+-   <property name="geometry">
+-    <rect>
+-     <x>70</x>
+-     <y>30</y>
+-     <width>82</width>
+-     <height>32</height>
+-    </rect>
+-   </property>
+-   <layout class="QHBoxLayout" name="horizontalLayout">
+-    <property name="spacing">
+-     <number>10</number>
+-    </property>
+-    <item>
+-     <widget class="QLabel" name="labelPic">
+-      <property name="text">
+-       <string/>
+-      </property>
+-     </widget>
+-    </item>
+-    <item>
+-     <widget class="QLabel" name="label">
+-      <property name="minimumSize">
+-       <size>
+-        <width>0</width>
+-        <height>30</height>
+-       </size>
+-      </property>
+-      <property name="maximumSize">
+-       <size>
+-        <width>16777215</width>
+-        <height>18</height>
+-       </size>
+-      </property>
+-      <property name="text">
+-       <string>Remind</string>
+-      </property>
+-     </widget>
+-    </item>
+-   </layout>
+-  </widget>
+- </widget>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/account/userinfo_intel/deluserinteldialog.cpp b/plugins/account/userinfo_intel/deluserinteldialog.cpp
+deleted file mode 100644
+index 8dc3694..0000000
+--- a/plugins/account/userinfo_intel/deluserinteldialog.cpp
++++ /dev/null
+@@ -1,156 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "deluserinteldialog.h"
+-#include "ui_deluserinteldialog.h"
+-
+-#include <QDebug>
+-#include <QtGlobal>
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-DelUserIntelDialog::DelUserIntelDialog(QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::DelUserIntelDialog)
+-{
+-    ui->setupUi(this);
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-
+-    setupComonpent();
+-    setupConnect();
+-}
+-
+-DelUserIntelDialog::~DelUserIntelDialog()
+-{
+-    delete ui;
+-}
+-
+-void DelUserIntelDialog::setupComonpent(){
+-    closeBtn = new QPushButton(this);
+-    closeBtn->setFixedSize(36, 36);
+-    ui->horizontalLayout_4->addWidget(closeBtn);
+-    closeBtn->setFlat(true);
+-    closeBtn->setProperty("useIconHighlightEffect", true);
+-    closeBtn->setProperty("iconHighlightEffectMode", 1);
+-    closeBtn->setIcon(QIcon(":/img/plugins/userinfo_intel/close.svg"));
+-//    ui->closeBtn->setStyleSheet("QPushButton:hover:!pressed#closeBtn{background: #FA6056; border-radius: 4px;}"
+-//                                "QPushButton:hover:pressed#closeBtn{background: #E54A50; border-radius: 4px;}");
+-    ui->textEdit->setText(tr("Delete the user, belonging to the user's desktop documents, favorites, music, pictures and video folder will be deleted!"));
+-    ui->textEdit->setReadOnly(true);
+-//    ui->textEdit->adjustSize();
+-//    ui->label_2->setWordWrap(true);
+-//    faceLabel = new QLabel;
+-}
+-
+-void DelUserIntelDialog::setupConnect(){
+-
+-    connect(closeBtn, &QPushButton::clicked, [=](){
+-        close();
+-    });
+-    connect(ui->cancelPushBtn, SIGNAL(clicked()), this, SLOT(reject()));
+-
+-    QSignalMapper * differSignalMapper = new QSignalMapper();
+-    for (QAbstractButton * button : ui->buttonGroup->buttons()){
+-        connect(button, SIGNAL(clicked()), differSignalMapper, SLOT(map()));
+-        differSignalMapper->setMapping(button, button->text());
+-    }
+-
+-#if QT_VERSION <= QT_VERSION_CHECK(5,12,0)
+-    connect(differSignalMapper, static_cast<void(QSignalMapper::*)(const QString &)>(&QSignalMapper::mapped), [=](const QString key){
+-#else
+-    connect(differSignalMapper, QOverload<const QString &>::of(&QSignalMapper::mapped), [=](const QString key){
+-#endif
+-        this->accept();
+-        bool removefile;
+-        if (ui->removePushBtn->text() == key)
+-            removefile = true;
+-        else
+-            removefile = false;
+-        emit removefile_send(removefile, m_username);
+-    });
+-}
+-
+-void DelUserIntelDialog::setFace(QString iconfile){
+-
+-    ui->faceLabel->setPixmap(QPixmap(PixmapToRound(iconfile,28)));
+-}
+-
+-void DelUserIntelDialog::setUsername(QString username,QString realname){
+-    ui->usernameLabel->setText(realname);
+-    m_username = username;
+-}
+-
+-QPixmap DelUserIntelDialog::PixmapToRound(const QString &src, int radius)
+-{
+-    if (src == "") {
+-        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 DelUserIntelDialog::paintEvent(QPaintEvent *event) {
+-    Q_UNUSED(event);
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 16, 16);
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 10, false, false);
+-
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-    p.restore();
+-
+-}
+-
+-
+diff --git a/plugins/account/userinfo_intel/deluserinteldialog.h b/plugins/account/userinfo_intel/deluserinteldialog.h
+deleted file mode 100644
+index 55d7cee..0000000
+--- a/plugins/account/userinfo_intel/deluserinteldialog.h
++++ /dev/null
+@@ -1,66 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef DELUSERINTELDIALOG_H
+-#define DELUSERINTELDIALOG_H
+-
+-#include <QDialog>
+-#include <QSignalMapper>
+-#include <QAbstractButton>
+-#include <QPainter>
+-#include <QPainterPath>
+-#include <QHBoxLayout>
+-#include <QLabel>
+-
+-namespace Ui {
+-class DelUserIntelDialog;
+-}
+-
+-class DelUserIntelDialog : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit DelUserIntelDialog(QWidget *parent = 0);
+-    ~DelUserIntelDialog();
+-
+-public:
+-    void setupComonpent();
+-    void setupConnect();
+-
+-    void setFace(QString file);
+-    void setUsername(QString name,QString realname);
+-
+-protected:
+-    void paintEvent(QPaintEvent *);
+-
+-private:
+-    Ui::DelUserIntelDialog *ui;
+-    QHBoxLayout *m_namelayout;
+-    QLabel *usernameLabel;
+-    QString m_username;
+-    QPushButton * closeBtn;
+-    QPixmap PixmapToRound(const QString &src, int radius);
+-
+-
+-Q_SIGNALS:
+-    void removefile_send(bool removefile, QString username);
+-};
+-
+-#endif // DELUSERINTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/deluserinteldialog.ui b/plugins/account/userinfo_intel/deluserinteldialog.ui
+deleted file mode 100644
+index 5943ea9..0000000
+--- a/plugins/account/userinfo_intel/deluserinteldialog.ui
++++ /dev/null
+@@ -1,259 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>DelUserIntelDialog</class>
+- <widget class="QDialog" name="DelUserIntelDialog">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>380</width>
+-    <height>412</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>380</width>
+-    <height>412</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>502</width>
+-    <height>412</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string notr="true">Delete User</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_2">
+-   <property name="spacing">
+-    <number>10</number>
+-   </property>
+-   <property name="leftMargin">
+-    <number>10</number>
+-   </property>
+-   <property name="topMargin">
+-    <number>10</number>
+-   </property>
+-   <property name="rightMargin">
+-    <number>10</number>
+-   </property>
+-   <property name="bottomMargin">
+-    <number>10</number>
+-   </property>
+-   <item>
+-    <widget class="QFrame" name="frame">
+-     <property name="frameShape">
+-      <enum>QFrame::NoFrame</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_4">
+-      <property name="spacing">
+-       <number>0</number>
+-      </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>
+-       <layout class="QVBoxLayout" name="verticalLayout_3">
+-        <property name="spacing">
+-         <number>0</number>
+-        </property>
+-        <property name="topMargin">
+-         <number>0</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>0</number>
+-        </property>
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_4">
+-          <property name="topMargin">
+-           <number>0</number>
+-          </property>
+-          <property name="rightMargin">
+-           <number>8</number>
+-          </property>
+-          <item>
+-           <widget class="QLabel" name="label">
+-            <property name="text">
+-             <string>   Delete</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer_4">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>40</width>
+-              <height>47</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="verticalLayout_5">
+-     <property name="spacing">
+-      <number>12</number>
+-     </property>
+-     <property name="leftMargin">
+-      <number>24</number>
+-     </property>
+-     <property name="topMargin">
+-      <number>16</number>
+-     </property>
+-     <property name="rightMargin">
+-      <number>24</number>
+-     </property>
+-     <property name="bottomMargin">
+-      <number>24</number>
+-     </property>
+-     <item>
+-      <layout class="QHBoxLayout" name="horizontalLayout_7">
+-       <item>
+-        <widget class="QLabel" name="faceLabel">
+-         <property name="sizePolicy">
+-          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-           <horstretch>0</horstretch>
+-           <verstretch>0</verstretch>
+-          </sizepolicy>
+-         </property>
+-         <property name="minimumSize">
+-          <size>
+-           <width>56</width>
+-           <height>56</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>56</width>
+-           <height>56</height>
+-          </size>
+-         </property>
+-         <property name="text">
+-          <string/>
+-         </property>
+-         <property name="scaledContents">
+-          <bool>true</bool>
+-         </property>
+-        </widget>
+-       </item>
+-      </layout>
+-     </item>
+-     <item>
+-      <widget class="QLabel" name="usernameLabel">
+-       <property name="text">
+-        <string/>
+-       </property>
+-       <property name="alignment">
+-        <set>Qt::AlignCenter</set>
+-       </property>
+-      </widget>
+-     </item>
+-     <item>
+-      <layout class="QHBoxLayout" name="horizontalLayout_5">
+-       <property name="spacing">
+-        <number>16</number>
+-       </property>
+-       <property name="rightMargin">
+-        <number>0</number>
+-       </property>
+-       <item>
+-        <layout class="QVBoxLayout" name="verticalLayout_6" stretch="0">
+-         <property name="spacing">
+-          <number>0</number>
+-         </property>
+-         <property name="topMargin">
+-          <number>0</number>
+-         </property>
+-         <item>
+-          <widget class="QTextEdit" name="textEdit"/>
+-         </item>
+-        </layout>
+-       </item>
+-      </layout>
+-     </item>
+-     <item>
+-      <layout class="QHBoxLayout" name="horizontalLayout_2">
+-       <property name="spacing">
+-        <number>16</number>
+-       </property>
+-       <item>
+-        <widget class="QPushButton" name="removePushBtn">
+-         <property name="minimumSize">
+-          <size>
+-           <width>147</width>
+-           <height>48</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>147</width>
+-           <height>48</height>
+-          </size>
+-         </property>
+-         <property name="text">
+-          <string>Define</string>
+-         </property>
+-         <property name="autoDefault">
+-          <bool>false</bool>
+-         </property>
+-         <attribute name="buttonGroup">
+-          <string notr="true">buttonGroup</string>
+-         </attribute>
+-        </widget>
+-       </item>
+-       <item>
+-        <widget class="QPushButton" name="cancelPushBtn">
+-         <property name="minimumSize">
+-          <size>
+-           <width>147</width>
+-           <height>48</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>147</width>
+-           <height>48</height>
+-          </size>
+-         </property>
+-         <property name="text">
+-          <string>Cancel</string>
+-         </property>
+-         <property name="flat">
+-          <bool>false</bool>
+-         </property>
+-        </widget>
+-       </item>
+-      </layout>
+-     </item>
+-    </layout>
+-   </item>
+-  </layout>
+- </widget>
+- <resources/>
+- <connections/>
+- <buttongroups>
+-  <buttongroup name="buttonGroup"/>
+- </buttongroups>
+-</ui>
+diff --git a/plugins/account/userinfo_intel/digitalauthinteldialog.cpp b/plugins/account/userinfo_intel/digitalauthinteldialog.cpp
+deleted file mode 100644
+index 1b240ce..0000000
+--- a/plugins/account/userinfo_intel/digitalauthinteldialog.cpp
++++ /dev/null
+@@ -1,421 +0,0 @@
+-/*
+- * Copyright (C) 2018 Tianjin KYLIN Information Technology 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, 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 <http://www.gnu.org/licenses/>.
+- *
+- * Authors: ZHAI Kang-ning <zhaikangning@kylinos.cn>
+-**/
+-#include "digitalauthinteldialog.h"
+-#include <QDebug>
+-#include <cmath>
+-#include <QPushButton>
+-#include <QHBoxLayout>
+-#include <QVBoxLayout>
+-#include <QLabel>
+-#include <QEvent>
+-#include <QMessageBox>
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-DigitalAuthIntelDialog::DigitalAuthIntelDialog(QString username ,QWidget *parent) : QWidget(parent),
+-    m_bgColor("#FFFFFF")
+-{
+-    this->resize(360, 529);
+-    m_username = username;
+-
+-    initUI();
+-    setQSS();
+-    initConnect();
+-}
+-
+-DigitalAuthIntelDialog::~DigitalAuthIntelDialog()
+-{
+-
+-}
+-
+-void DigitalAuthIntelDialog::initUI(){
+-
+-    mainLayout = new QVBoxLayout(this);
+-    setLayout(mainLayout);
+-
+-    m_pTitle = new QLabel(tr("Enter Old Password"));
+-    m_pTitle->setProperty("class", "titleLB");
+-    mainLayout->addWidget(m_pTitle, 0, Qt::AlignHCenter);
+-    mainLayout->addSpacing(10);
+-
+-    m_pPasswordBar = new PasswordBar(this);
+-    m_pPasswordBar->setBallRadius(8);
+-    mainLayout->addWidget(m_pPasswordBar, 0, Qt::AlignHCenter);
+-
+-    m_pPromptMessage = new QLabel(this);
+-    m_pPromptMessageClone = new QLabel(this);
+-    m_pPromptMessage->setProperty("class", "promptMessageLabel");
+-    hidePromptMsg();
+-    mainLayout->addWidget(m_pPromptMessage, 0, Qt::AlignHCenter);
+-    mainLayout->addWidget(m_pPromptMessageClone, 0, Qt::AlignHCenter);
+-
+-    m_pNumbersBtn = new NumbersButtonIntel(this);
+-
+-    //mainLayout->addSpacing(20);
+-    mainLayout->addWidget(m_pNumbersBtn, 0, Qt::AlignHCenter);
+-
+-    m_curInputMode = InputMode::InputOldPwd;
+-
+-    label2 = new QLabel(this);
+-    label2 -> setText(tr("Forget Password?"));
+-//    label2->move(140, 528);
+-    label2->show();
+-    label2->installEventFilter(this);//安装事件过滤
+-    mainLayout->addSpacing(20);
+-    mainLayout->addStretch();
+-    mainLayout->addWidget(label2, 0, Qt::AlignHCenter);
+-    mainLayout->addStretch();
+-    m_interface1 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                      "/cn/kylinos/SSOBackend",
+-                                                      "cn.kylinos.SSOBackend.accounts",
+-                                                      QDBusConnection::systemBus());
+-    if (m_interface1->isValid()) {
+-        QDBusMessage result = m_interface1->call("GetAccountPincode",m_username);
+-        QList<QVariant> outArgs = result.arguments();
+-        delete m_interface1;
+-        pinstatus = outArgs.at(1).value<int>();
+-        if (pinstatus == 0) {
+-            QString oldpwd = outArgs.at(0).value<QString>();
+-            if (oldpwd == "") {
+-                m_curInputMode = InputMode::InputPwd;
+-                m_pTitle->setText(tr("Input New Password"));
+-                hidePromptMsg();
+-                m_pPasswordBar->setFillBall(0);
+-                m_oldPwd = "";
+-                m_curPwd = "";
+-                label2->hide();
+-                pinstatus = 1;
+-            }
+-        }
+-    } else {
+-        qCritical() << "Create DBus Interface Failed: " << QDBusConnection::systemBus().lastError();
+-    }
+-}
+-
+-void DigitalAuthIntelDialog::initConnect()
+-{
+-    connect(m_pNumbersBtn, &NumbersButtonIntel::numbersButtonPress, this, &DigitalAuthIntelDialog::onNumerPress);
+-}
+-
+-void DigitalAuthIntelDialog::setQSS()
+-{
+-    setStyleSheet(".promptMessageLabel{"
+-                  "border: 2px solid #FD625E;"
+-                  "border-radius: 8px;"
+-                  "font-size:14px;"
+-                  "font-family: NotoSansCJKsc-Regular, NotoSansCJKsc;"
+-                  "background: #FD625E"
+-                  "}");
+-}
+-
+-void DigitalAuthIntelDialog::showPromptMsg()
+-{
+-    m_pPromptMessage->show();
+-    m_pPromptMessageClone->hide();
+-}
+-
+-void DigitalAuthIntelDialog::hidePromptMsg()
+-{
+-    m_pPromptMessage->hide();
+-    m_pPromptMessageClone->show();
+-    m_pPromptMessageClone->setFixedHeight(m_pPromptMessage->height());
+-}
+-
+-void DigitalAuthIntelDialog::onReset()
+-{
+-    m_pTitle->setText(tr("Input Password"));
+-    m_pPasswordBar->setFillBall(0);
+-    m_curPwd = "";
+-    m_reInputPwd = "";
+-    m_curInputMode = InputMode::InputPwd;
+-}
+-
+-void DigitalAuthIntelDialog::gotonext()
+-{
+-    m_curInputMode = InputMode::InputPwd;
+-    m_pTitle->setText(tr("Input New Password"));
+-    hidePromptMsg();
+-    label2->hide();
+-    m_pPasswordBar->setFillBall(0);
+-    m_curPwd = "";
+-    m_interface1 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                      "/cn/kylinos/SSOBackend",
+-                                                      "cn.kylinos.SSOBackend.accounts",
+-                                                      QDBusConnection::systemBus());
+-    if (!m_interface1->isValid()) {
+-        qCritical() << "Create DBus Interface Failed: " << QDBusConnection::systemBus().lastError();
+-        return;
+-    }
+-    QDBusMessage result = m_interface1->call("GetAccountPincode",m_username);
+-
+-    QList<QVariant> outArgs = result.arguments();
+-    delete m_interface1;
+-    m_oldPwd = outArgs.at(0).value<QString>();
+-
+-}
+-
+-void DigitalAuthIntelDialog::onNumerPress(int btn_id)
+-{
+-    if (btn_id == 10)
+-    {
+-        if(InputMode::InputOldPwd == m_curInputMode && m_oldPwd.size())
+-            m_oldPwd = m_oldPwd.left(m_oldPwd.size() - 1);
+-        else if(InputMode::InputPwd == m_curInputMode && m_curPwd.size())
+-            m_curPwd = m_curPwd.left(m_curPwd.size() - 1);
+-        else if(InputMode::ReInputPwd == m_curInputMode && m_reInputPwd.size())
+-            m_reInputPwd = m_reInputPwd.left(m_reInputPwd.size() - 1);
+-        m_pPasswordBar->delFillBall();
+-    } else if (btn_id == 11){
+-        if(InputMode::InputOldPwd == m_curInputMode && m_oldPwd.size())
+-            m_oldPwd = "";
+-        else if(InputMode::InputPwd == m_curInputMode && m_curPwd.size())
+-            m_curPwd = "";
+-        else if(InputMode::ReInputPwd == m_curInputMode && m_reInputPwd.size())
+-            m_reInputPwd = "";
+-        m_pPasswordBar->setFillBall(0);
+-    } else {
+-        if(InputMode::InputOldPwd == m_curInputMode && m_oldPwd.size() < 6)
+-            m_oldPwd += QChar(btn_id + '0');
+-        else if(InputMode::InputPwd == m_curInputMode && m_curPwd.size() < 6)
+-            m_curPwd += QChar(btn_id + '0');
+-        else if(InputMode::ReInputPwd == m_curInputMode && m_reInputPwd.size() < 6)
+-            m_reInputPwd += QChar(btn_id + '0');
+-
+-        m_pPasswordBar->addFillBall();
+-        hidePromptMsg();
+-
+-        if (m_oldPwd.size() == 6 && InputMode::InputOldPwd == m_curInputMode) {
+-            m_interface1 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                              "/cn/kylinos/SSOBackend",
+-                                                              "cn.kylinos.SSOBackend.accounts",
+-                                                              QDBusConnection::systemBus());
+-            if (!m_interface1->isValid()) {
+-                qCritical() << "Create DBus Interface Failed: " << QDBusConnection::systemBus().lastError();
+-                return;
+-            }
+-            QDBusMessage result = m_interface1->call("GetAccountPincode",m_username);
+-
+-            QList<QVariant> outArgs = result.arguments();
+-            delete m_interface1;
+-            int status = outArgs.at(1).value<int>();
+-
+-            if (status == 0) {
+-                QString oldpwd = outArgs.at(0).value<QString>();
+-                if (oldpwd == m_oldPwd) {
+-                    qDebug() << "旧密码为:" << m_oldPwd;
+-                    m_curInputMode = InputMode::InputPwd;
+-                    m_pTitle->setText(tr("Input New Password"));
+-                    hidePromptMsg();
+-                    label2->hide();
+-                    m_pPasswordBar->setFillBall(0);
+-                    m_curPwd = "";
+-
+-                } else {
+-                    m_pPromptMessage->setText(tr("The password input is error"));
+-                    showPromptMsg();
+-                    m_pPasswordBar->setFillBall(0);
+-                    m_curPwd = "";
+-                    m_reInputPwd = "";
+-                    m_oldPwd ="";
+-
+-                }
+-
+-            }
+-
+-        } else if (m_curPwd.size() == 6 && InputMode::InputPwd == m_curInputMode) {
+-            qDebug() << "设置新密码为:" << m_curPwd;
+-            m_curInputMode = InputMode::ReInputPwd;
+-            m_pTitle->setText(tr("Confirm New Password"));
+-            hidePromptMsg();
+-            m_pPasswordBar->setFillBall(0);
+-            m_reInputPwd = "";
+-        } else if(m_reInputPwd.size() == 6 && InputMode::ReInputPwd == m_curInputMode) {
+-            if (m_curPwd != m_reInputPwd) {
+-                m_pPromptMessage->setText(tr("The password input is inconsistent"));
+-                showPromptMsg();
+-                m_curInputMode = InputMode::InputPwd;
+-                m_pTitle->setText(tr("Input New Password"));
+-                m_pPasswordBar->setFillBall(0);
+-                m_curPwd = "";
+-                m_reInputPwd = "";
+-            } else {
+-                // TODO 更改密码
+-                if (m_oldPwd == m_curPwd) {
+-                    m_pPromptMessage->setText(tr("New password can not be consistent of old password"));
+-                    showPromptMsg();
+-                    m_curInputMode = InputMode::InputPwd;
+-                    m_pTitle->setText(tr("Input New Password"));
+-                    m_pPasswordBar->setFillBall(0);
+-                    m_curPwd = "";
+-                    m_reInputPwd = "";
+-                } else {
+-                    if(pinstatus == 1) {
+-                        m_interface2 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                                          "/cn/kylinos/SSOBackend",
+-                                                                          "cn.kylinos.SSOBackend.accounts",
+-                                                                          QDBusConnection::systemBus());
+-                        QDBusMessage result = m_interface2->call("SetAccountPincode",m_username,m_curPwd);
+-
+-                        QList<QVariant> outArgs = result.arguments();
+-                        delete m_interface2;
+-                        qDebug()<<"outArgs=="<<outArgs;
+-                        int status = outArgs.at(0).toInt();
+-                        qDebug()<<"status=="<<status;
+-                        if (status == 0) {
+-                            hidePromptMsg();
+-                            emit ended();
+-                        } else {
+-                            m_pPromptMessage->setText(tr("Password Change Failed"));
+-                            showPromptMsg();
+-                            m_curInputMode = InputMode::InputOldPwd;
+-                            m_pTitle->setText(tr("Enter Old Password"));
+-                            m_pPasswordBar->setFillBall(0);
+-                            m_curPwd ="";
+-                            m_reInputPwd = "";
+-                            m_oldPwd ="";
+-                        }
+-                    } else {
+-                        m_interface2 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                                          "/cn/kylinos/SSOBackend",
+-                                                                          "cn.kylinos.SSOBackend.accounts",
+-                                                                          QDBusConnection::systemBus());
+-                        QDBusMessage result = m_interface2->call("ChangeAccountPincode",m_username,m_oldPwd,m_curPwd);
+-
+-                        QList<QVariant> outArgs = result.arguments();
+-                        delete m_interface2;
+-                        qDebug()<<"outArgs=="<<outArgs;
+-                        int status = outArgs.at(0).toInt();
+-                        qDebug()<<"status=="<<status;
+-                        if (status == 0) {
+-                            hidePromptMsg();
+-                            emit ended();
+-                        } else {
+-                            m_pPromptMessage->setText(tr("Password Change Failed"));
+-                            showPromptMsg();
+-                            m_curInputMode = InputMode::InputOldPwd;
+-                            m_pTitle->setText(tr("Enter Old Password"));
+-                            m_pPasswordBar->setFillBall(0);
+-                            m_curPwd ="";
+-                            m_reInputPwd = "";
+-                            m_oldPwd ="";
+-                        }
+-                    }
+-
+-                }
+-
+-            }
+-
+-        }
+-    }
+-}
+-
+-
+-bool DigitalAuthIntelDialog::eventFilter(QObject *obj, QEvent *event){
+-    if(obj == label2)//需要操作label
+-    {
+-        if(event->type() == QEvent::MouseButtonPress)//判断事件类型
+-        {
+-            QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
+-            if(mouseEvent->button() == Qt::LeftButton)
+-            {
+-                emit forgetpassword();
+-//                QMessageBox::information(NULL,QString::fromLocal8Bit("点击"),QString::fromLocal8Bit("牛逼吗?"),QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes);
+-                return true;
+-            }
+-            return false;
+-        }
+-        return false;
+-    }
+-    return DigitalAuthIntelDialog::eventFilter(obj, event);
+-}
+-
+-void DigitalAuthIntelDialog::showEvent(QShowEvent *event)
+-{
+-    Q_UNUSED(event);
+-    setFocus();
+-}
+-
+-void DigitalAuthIntelDialog::paintEvent(QPaintEvent *event)
+-{
+-    Q_UNUSED(event)
+-}
+-
+-void DigitalAuthIntelDialog::drawBg(QPainter *painter)
+-{
+-    painter->save();
+-
+-    int width = this->width();
+-    int height = this->height();
+-
+-    painter->setPen(Qt::NoPen);
+-    m_bgColor.setAlpha(255);
+-    painter->setBrush(m_bgColor);
+-    painter->drawRoundRect(0, 0, width, height, 5*height/width, 5);
+-
+-    painter->restore();
+-}
+-void DigitalAuthIntelDialog::keyPressEvent(QKeyEvent *ev)
+-{
+-    if (ev->key() == Qt::Key_0) {
+-        onNumerPress(0);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_1) {
+-        onNumerPress(1);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_2) {
+-        onNumerPress(2);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_3) {
+-        onNumerPress(3);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_4) {
+-        onNumerPress(4);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_5) {
+-        onNumerPress(5);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_6) {
+-        onNumerPress(6);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_7) {
+-        onNumerPress(7);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_8) {
+-        onNumerPress(8);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_9) {
+-        onNumerPress(9);
+-        return;
+-    }
+-    if (ev->key()== Qt::Key_Backspace){
+-        onNumerPress(10);
+-        return;
+-    }
+-
+-    QWidget::keyPressEvent(ev);
+-}
+diff --git a/plugins/account/userinfo_intel/digitalauthinteldialog.h b/plugins/account/userinfo_intel/digitalauthinteldialog.h
+deleted file mode 100644
+index 15eb91f..0000000
+--- a/plugins/account/userinfo_intel/digitalauthinteldialog.h
++++ /dev/null
+@@ -1,98 +0,0 @@
+-/*
+- * Copyright (C) 2018 Tianjin KYLIN Information Technology 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, 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 <http://www.gnu.org/licenses/>.
+- *
+- * Authors: ZHAI Kang-ning <zhaikangning@kylinos.cn>
+-**/
+-#ifndef DIGITALAUTHINTELDIALOG_H
+-#define DIGITALAUTHINTELDIALOG_H
+-
+-#include "passwordbar.h"
+-#include "numbersbuttonintel.h"
+-#include "qtdbus/systemdbusdispatcher.h"
+-#include "qtdbus/userdispatcher.h"
+-#include <QWidget>
+-#include <QPaintEvent>
+-#include <QPainter>
+-#include <QMouseEvent>
+-#include <QPushButton>
+-#include <QLabel>
+-#include <QList>
+-#include <QRect>
+-#include <QDBusInterface>
+-#include <QDBusReply>
+-
+-class Auth;
+-class QEvent;
+-class QVBoxLayout;
+-class QHBoxLayout;
+-
+-class DigitalAuthIntelDialog : public QWidget
+-{
+-    Q_OBJECT
+-public:
+-    explicit DigitalAuthIntelDialog(QString username,QWidget *parent = nullptr);
+-    ~DigitalAuthIntelDialog();
+-
+-    void initUI();
+-    void initConnect();
+-    void setQSS();
+-    void hidePromptMsg();
+-    void showPromptMsg();
+-    void gotonext();
+-protected:
+-    void showEvent(QShowEvent *event);
+-    bool eventFilter(QObject *obj, QEvent *event);
+-    void drawBg(QPainter *painter);
+-
+-protected:
+-    void paintEvent(QPaintEvent *event);
+-    virtual void keyPressEvent(QKeyEvent *ev);
+-Q_SIGNALS:
+-    void numberBtnPress(int btn_id);
+-    void forgetpassword();
+-    void ended();
+-public slots:
+-    void onReset();
+-private slots:
+-    void onNumerPress(int btn_id);
+-private:
+-    QLabel * label2;
+-    QColor m_bgColor;                   //背景色
+-
+-    QVBoxLayout *mainLayout;
+-    enum InputMode{
+-       InputOldPwd,
+-       InputPwd,
+-       ReInputPwd,
+-    };
+-    QLabel *m_pTitle;               // 标题
+-    NumbersButtonIntel *m_pNumbersBtn;
+-    PasswordBar *m_pPasswordBar;
+-    QLabel *m_pPromptMessage;
+-    QLabel *m_pPromptMessageClone; // 控制格式
+-
+-    InputMode m_curInputMode;
+-    QString m_oldPwd;   // 记录旧密码
+-    QString m_curPwd;   // 记录当前密码
+-    QString m_reInputPwd; // 记录再次输入的密码
+-    QString m_username;//用户名
+-
+-    QDBusInterface *m_interface1;
+-    QDBusInterface *m_interface2;
+-    int pinstatus;
+-};
+-
+-#endif // DIGITALAUTHINTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/digitalphoneinteldialog.cpp b/plugins/account/userinfo_intel/digitalphoneinteldialog.cpp
+deleted file mode 100644
+index e6313cb..0000000
+--- a/plugins/account/userinfo_intel/digitalphoneinteldialog.cpp
++++ /dev/null
+@@ -1,268 +0,0 @@
+-/*
+- * Copyright (C) 2018 Tianjin KYLIN Information Technology 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, 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 <http://www.gnu.org/licenses/>.
+- *
+- * Authors: ZHAI Kang-ning <zhaikangning@kylinos.cn>
+-**/
+-#include "digitalphoneinteldialog.h"
+-#include <QDebug>
+-#include <cmath>
+-#include <QPushButton>
+-#include <QHBoxLayout>
+-#include <QVBoxLayout>
+-#include <QLabel>
+-#include <QEvent>
+-#include <QMessageBox>
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-DigitalPhoneIntelDialog::DigitalPhoneIntelDialog(QString username ,QWidget *parent) : QWidget(parent),
+-    m_bgColor("#FFFFFF")
+-{
+-    this->resize(360, 529);
+-    m_username = username;
+-
+-    initUI();
+-    setQSS();
+-    initConnect();
+-}
+-
+-DigitalPhoneIntelDialog::~DigitalPhoneIntelDialog()
+-{
+-
+-}
+-
+-void DigitalPhoneIntelDialog::initUI(){
+-
+-    mainLayout = new QVBoxLayout(this);
+-    setLayout(mainLayout);
+-
+-    m_pTitle = new QLabel(tr("Please Enter Edu OS Password"));
+-    m_pTitle->setProperty("class", "titleLB");
+-    mainLayout->addWidget(m_pTitle, 0, Qt::AlignHCenter);
+-
+-    m_pPasswordBar = new PasswordBar(this);
+-    m_pPasswordBar->setBallRadius(8);
+-    mainLayout->addWidget(m_pPasswordBar, 0, Qt::AlignHCenter);
+-
+-    m_pPromptMessage = new QLabel(this);
+-    m_pPromptMessageClone = new QLabel(this);
+-    m_pPromptMessage->setProperty("class", "promptMessageLabel");
+-    hidePromptMsg();
+-    mainLayout->addWidget(m_pPromptMessage, 0, Qt::AlignHCenter);
+-    mainLayout->addWidget(m_pPromptMessageClone, 0, Qt::AlignHCenter);
+-
+-    m_pNumbersBtn = new NumbersButtonIntel(this);
+-
+-    //mainLayout->addSpacing(20);
+-    mainLayout->addWidget(m_pNumbersBtn, 0, Qt::AlignHCenter);
+-
+-    m_curInputMode = InputMode::InputOldPwd;
+-
+-
+-    label2 = new QLabel(this);
+-//    label2 -> setText(tr("<u>Forget Password?</u>"));
+-//    label2->move(140, 528);
+-    label2->show();
+-    label2->installEventFilter(this);//安装事件过滤
+-    mainLayout->addWidget(label2, 0, Qt::AlignHCenter);
+-    //label2->hide();
+-}
+-
+-void DigitalPhoneIntelDialog::initConnect()
+-{
+-    connect(m_pNumbersBtn, &NumbersButtonIntel::numbersButtonPress, this, &DigitalPhoneIntelDialog::onNumerPress);
+-}
+-
+-void DigitalPhoneIntelDialog::setQSS()
+-{
+-    setStyleSheet(".promptMessageLabel{"
+-                  "border: 2px solid #FD625E;"
+-                  "border-radius: 8px;"
+-                  "font-size:14px;"
+-                  "font-family: NotoSansCJKsc-Regular, NotoSansCJKsc;"
+-                  "background: #FD625E"
+-                  "}");
+-}
+-
+-void DigitalPhoneIntelDialog::showPromptMsg()
+-{
+-    m_pPromptMessage->show();
+-    m_pPromptMessageClone->hide();
+-}
+-
+-void DigitalPhoneIntelDialog::hidePromptMsg()
+-{
+-    m_pPromptMessage->hide();
+-    m_pPromptMessageClone->show();
+-    m_pPromptMessageClone->setFixedHeight(m_pPromptMessage->height());
+-}
+-
+-void DigitalPhoneIntelDialog::onReset()
+-{
+-    m_pTitle->setText("请输入密码");
+-    m_pPasswordBar->setFillBall(0);
+-    m_curPwd = "";
+-    m_reInputPwd = "";
+-    m_curInputMode = InputMode::InputPwd;
+-}
+-
+-void DigitalPhoneIntelDialog::onNumerPress(int btn_id)
+-{
+-    if(btn_id == 10)
+-    {
+-        if(InputMode::InputOldPwd == m_curInputMode && m_oldPwd.size())
+-            m_oldPwd = m_oldPwd.left(m_oldPwd.size() - 1);
+-        else if(InputMode::InputPwd == m_curInputMode && m_curPwd.size())
+-            m_curPwd = m_curPwd.left(m_curPwd.size() - 1);
+-        else if(InputMode::ReInputPwd == m_curInputMode && m_reInputPwd.size())
+-            m_reInputPwd = m_reInputPwd.left(m_reInputPwd.size() - 1);
+-
+-        m_pPasswordBar->delFillBall();
+-    }
+-    else
+-    {
+-        if(InputMode::InputOldPwd == m_curInputMode && m_oldPwd.size() < 6)
+-            m_oldPwd += QChar(btn_id + '0');
+-
+-        m_pPasswordBar->addFillBall();
+-
+-        if (m_oldPwd.size() == 6 && InputMode::InputOldPwd == m_curInputMode) {
+-            m_interface1 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                              "/cn/kylinos/SSOBackend",
+-                                                              "cn.kylinos.SSOBackend.accounts",
+-                                                              QDBusConnection::systemBus());
+-            QDBusMessage result = m_interface1->call("GetAccountPincode",m_username);
+-            delete m_interface1;
+-
+-            QList<QVariant> outArgs = result.arguments();
+-
+-            int status = outArgs.at(1).value<int>();
+-
+-            if (status == 0) {
+-                QString oldpwd = outArgs.at(0).value<QString>();
+-                if (oldpwd == m_oldPwd) {
+-                    qDebug() << "旧密码为:" << m_oldPwd;
+-                    hidePromptMsg();
+-                    m_pPasswordBar->setFillBall(0);
+-                    m_oldPwd = "";
+-                    emit phone();
+-                } else {
+-                    m_pPromptMessage->setText(tr("The password input is error"));
+-                    showPromptMsg();
+-                    m_pPasswordBar->setFillBall(0);
+-                    m_oldPwd = "";
+-                }
+-
+-            }
+-
+-        }
+-    }
+-}
+-
+-
+-bool DigitalPhoneIntelDialog::eventFilter(QObject *obj, QEvent *event){
+-    if(obj == label2)//需要操作label
+-    {
+-        if(event->type() == QEvent::MouseButtonPress)//判断事件类型
+-        {
+-            QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
+-            if(mouseEvent->button() == Qt::LeftButton)
+-            {
+-                emit forgetpassword();
+-//                QMessageBox::information(NULL,QString::fromLocal8Bit("点击"),QString::fromLocal8Bit("牛逼吗?"),QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes);
+-                return true;
+-            }
+-            return false;
+-        }
+-        return false;
+-    }
+-    return DigitalPhoneIntelDialog::eventFilter(obj, event);
+-}
+-
+-void DigitalPhoneIntelDialog::showEvent(QShowEvent *event)
+-{
+-    Q_UNUSED(event);
+-    setFocus();
+-}
+-
+-void DigitalPhoneIntelDialog::paintEvent(QPaintEvent *event)
+-{
+-    Q_UNUSED(event)
+-}
+-
+-void DigitalPhoneIntelDialog::drawBg(QPainter *painter)
+-{
+-    painter->save();
+-
+-    int width = this->width();
+-    int height = this->height();
+-
+-    painter->setPen(Qt::NoPen);
+-    m_bgColor.setAlpha(255);
+-    painter->setBrush(m_bgColor);
+-    painter->drawRoundRect(0, 0, width, height, 5*height/width, 5);
+-
+-    painter->restore();
+-}
+-void DigitalPhoneIntelDialog::keyPressEvent(QKeyEvent *ev)
+-{
+-    if (ev->key() == Qt::Key_0) {
+-        onNumerPress(0);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_1) {
+-        onNumerPress(1);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_2) {
+-        onNumerPress(2);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_3) {
+-        onNumerPress(3);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_4) {
+-        onNumerPress(4);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_5) {
+-        onNumerPress(5);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_6) {
+-        onNumerPress(6);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_7) {
+-        onNumerPress(7);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_8) {
+-        onNumerPress(8);
+-        return;
+-    }
+-    if (ev->key() == Qt::Key_9) {
+-        onNumerPress(9);
+-        return;
+-    }
+-    if (ev->key()== Qt::Key_Backspace){
+-        onNumerPress(10);
+-        return;
+-    }
+-
+-    QWidget::keyPressEvent(ev);
+-}
+diff --git a/plugins/account/userinfo_intel/digitalphoneinteldialog.h b/plugins/account/userinfo_intel/digitalphoneinteldialog.h
+deleted file mode 100644
+index 6fd2e5d..0000000
+--- a/plugins/account/userinfo_intel/digitalphoneinteldialog.h
++++ /dev/null
+@@ -1,95 +0,0 @@
+-/*
+- * Copyright (C) 2018 Tianjin KYLIN Information Technology 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, 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 <http://www.gnu.org/licenses/>.
+- *
+- * Authors: ZHAI Kang-ning <zhaikangning@kylinos.cn>
+-**/
+-#ifndef DIGITALPHONEINTELDIALOG_H
+-#define DIGITALPHONEINTELDIALOG_H
+-
+-#include "passwordbar.h"
+-#include "numbersbuttonintel.h"
+-#include "qtdbus/systemdbusdispatcher.h"
+-#include "qtdbus/userdispatcher.h"
+-#include <QWidget>
+-#include <QPaintEvent>
+-#include <QPainter>
+-#include <QMouseEvent>
+-#include <QPushButton>
+-#include <QLabel>
+-#include <QList>
+-#include <QRect>
+-#include <QDBusInterface>
+-#include <QDBusReply>
+-
+-class Auth;
+-class QEvent;
+-class QVBoxLayout;
+-class QHBoxLayout;
+-
+-class DigitalPhoneIntelDialog : public QWidget
+-{
+-    Q_OBJECT
+-public:
+-    explicit DigitalPhoneIntelDialog(QString username,QWidget *parent = nullptr);
+-    ~DigitalPhoneIntelDialog();
+-
+-    void initUI();
+-    void initConnect();
+-    void setQSS();
+-    void hidePromptMsg();
+-    void showPromptMsg();
+-protected:
+-    void showEvent(QShowEvent *event);
+-    bool eventFilter(QObject *obj, QEvent *event);
+-    void drawBg(QPainter *painter);
+-
+-protected:
+-    void paintEvent(QPaintEvent *event);
+-    virtual void keyPressEvent(QKeyEvent *ev);
+-Q_SIGNALS:
+-    void numberBtnPress(int btn_id);
+-    void forgetpassword();
+-    void phone();
+-public slots:
+-    void onReset();
+-private slots:
+-    void onNumerPress(int btn_id);
+-private:
+-    QLabel * label2;
+-    QColor m_bgColor;                   //背景色
+-
+-    QVBoxLayout *mainLayout;
+-    enum InputMode{
+-       InputOldPwd,
+-       InputPwd,
+-       ReInputPwd,
+-    };
+-    QLabel *m_pTitle;               // 标题
+-    NumbersButtonIntel *m_pNumbersBtn;
+-    PasswordBar *m_pPasswordBar;
+-    QLabel *m_pPromptMessage;
+-    QLabel *m_pPromptMessageClone; // 控制格式
+-
+-    InputMode m_curInputMode;
+-    QString m_oldPwd;   // 记录旧密码
+-    QString m_curPwd;   // 记录当前密码
+-    QString m_reInputPwd; // 记录再次输入的密码
+-    QString m_username;//用户名
+-
+-    QDBusInterface *m_interface1;
+-};
+-
+-#endif // DIGITALPHONEINTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/elipsemaskwidget.cpp b/plugins/account/userinfo_intel/elipsemaskwidget.cpp
+deleted file mode 100644
+index f3ca22f..0000000
+--- a/plugins/account/userinfo_intel/elipsemaskwidget.cpp
++++ /dev/null
+@@ -1,60 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "elipsemaskwidget.h"
+-
+-#include <QPainter>
+-#include <QPainterPath>
+-
+-ElipseMaskWidget::ElipseMaskWidget(QWidget *parent) :
+-    QWidget(parent)
+-{
+-    setAttribute(Qt::WA_DeleteOnClose);
+-    pWidth = parent->width();
+-    pHeigh = parent->height();
+-    pRadius = 6;
+-    pColor = QString("#ffffff");
+-    pBorder = 1;
+-}
+-
+-ElipseMaskWidget::~ElipseMaskWidget()
+-{
+-}
+-
+-void ElipseMaskWidget::setBgColor(QString color){
+-    pColor = color;
+-}
+-
+-void ElipseMaskWidget::paintEvent(QPaintEvent *e){
+-    Q_UNUSED(e)
+-
+-    QPainterPath cPath;
+-    cPath.addRect(0, 0, pWidth, pHeigh);
+-    cPath.addEllipse(0, 0, pWidth, pHeigh);
+-
+-    QPainter painter(this);
+-    painter.setRenderHint(QPainter:: Antialiasing, true);  //设置渲染,启动反锯齿
+-    painter.setPen(Qt::NoPen);
+-    painter.setBrush(palette().color(QPalette::Base));
+-    painter.setOpacity(1);
+-    painter.drawPath(cPath);
+-    painter.setBrush(palette().color(QPalette::Base));
+-//    painter.setOpacity(0.45);
+-    painter.drawPath(cPath);
+-}
+diff --git a/plugins/account/userinfo_intel/elipsemaskwidget.h b/plugins/account/userinfo_intel/elipsemaskwidget.h
+deleted file mode 100644
+index 0b9a87a..0000000
+--- a/plugins/account/userinfo_intel/elipsemaskwidget.h
++++ /dev/null
+@@ -1,48 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef ELIPSEMASKWIDGET_H
+-#define ELIPSEMASKWIDGET_H
+-
+-#include <QWidget>
+-
+-class ElipseMaskWidget : public QWidget
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit ElipseMaskWidget(QWidget *parent = nullptr);
+-    ~ElipseMaskWidget();
+-
+-public:
+-    void setBgColor(QString color);
+-
+-protected:
+-    void paintEvent(QPaintEvent *event);
+-
+-private:
+-    int pWidth;
+-    int pHeigh;
+-    int pRadius;
+-    int pBorder;
+-    QString pColor;
+-
+-};
+-
+-#endif // ELIPSEMASKWIDGET_H
+diff --git a/plugins/account/userinfo_intel/messageboxpowerintel.cpp b/plugins/account/userinfo_intel/messageboxpowerintel.cpp
+deleted file mode 100644
+index b7b7d60..0000000
+--- a/plugins/account/userinfo_intel/messageboxpowerintel.cpp
++++ /dev/null
+@@ -1,208 +0,0 @@
+-#include "messageboxpowerintel.h"
+-#include <QtDBus/QtDBus>
+-
+-
+-MessageBoxPowerIntel::MessageBoxPowerIntel(QWidget *parent)
+-    : QDialog(parent)
+-{
+-    //设置任务栏无显示
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
+-    QDesktopWidget *deskdop=QApplication::desktop();
+-    //this->move((deskdop->width()-this->width())/2, (deskdop->height()-this->height())/2);
+-    //this->move(this->geometry().center() - this->rect().center());
+-    this->setFixedSize(360,272);
+-    initUI();
+-    //QDBusConnection::systemBus().connect(QString(),QString("/"),"com.kylin.update.notification","DownloadFinish",this,SLOT(otaevent()));
+-}
+-
+-MessageBoxPowerIntel::~MessageBoxPowerIntel()
+-{
+-
+-}
+-void MessageBoxPowerIntel::initUI()
+-{
+-    m_pmainlayout = new QVBoxLayout();
+-    m_pfirstlayout = new QHBoxLayout();
+-    m_ptestlayout = new QVBoxLayout();
+-    buttonlayout = new QHBoxLayout();
+-    m_pcenterlayout = new QHBoxLayout();
+-
+-    topWidget = new QWidget();
+-    closeButton = new QPushButton();
+-    closeButton = new QPushButton(this);
+-    closeButton->setProperty("useIconHighlightEffect", true);
+-    closeButton->setProperty("iconHighlightEffectMode", 1);
+-    closeButton->setFlat(true);
+-    closeButton->setAutoDefault(false);
+-    closeButton->setIcon(QIcon(":/img/plugins/backup/window-close-symbolic.svg"));;
+-    connect(closeButton, &QPushButton::clicked, [=]{
+-        close();
+-    });
+-    contentWidget = new QWidget();
+-
+-    firstlabel = new QLabel();
+-
+-    //firstlabel->setText("系统更新已准备就绪,请重启安装最新版本");
+-    firstlabel->setText(tr("Nothing has been entered, re-enter"));
+-    firstlabel->setStyleSheet("width: 208px;"
+-                              "height: 24px;"
+-                              "font-size: 16px;"
+-                              "font-family: NotoSansCJKsc-Bold, NotoSansCJKsc;"
+-                              "font-weight: bold;"
+-                              "line-height: 24px;"
+-                             );
+-
+-    remindButton = new QPushButton();
+-    //remindButton->setText("30分钟后提醒我");
+-    remindButton->setText(tr("Remind in 30 minutes"));
+-    remindButton->setFixedSize(148,48);
+-    remindButton->setStyleSheet("background-color: rgb(255,255,255);color:black;border:1px solid grey;border-radius:10px;");
+-    //connect(remindButton,&QPushButton::clicked,this,&MessageBoxPowerIntel::remindslots);
+-
+-//    connect(remindButton, &QPushButton::clicked, this, [=]() {
+-//        hide();
+-//    });
+-
+-
+-    confirmButton = new QPushButton();
+-    //restartButton->setText("立即重启");
+-    confirmButton->setText(tr("Got it"));
+-    confirmButton->setFixedSize(148,48);
+-    confirmButton->setStyleSheet("background-color: rgb(85,173,222);color:white;border-radius: 8px;");
+-    connect(confirmButton,&QPushButton::clicked,this,&MessageBoxPowerIntel::restartslots);
+-    buttonWidget = new QWidget();
+-
+-    iconBigLabel = new QLabel();
+-    QImage *img2=new QImage; //新建一个image对象
+-    img2->load(":/img/plugins/userinfo_intel/warning.svg"); //将图像资源载入对象img,注意路径,可点进图片右键复制路径
+-    iconBigLabel->setPixmap(QPixmap::fromImage(*img2)); //将图片放入label,使用setPixmap,注意指针*img
+-    iconBigLabel->setFixedSize(64,64);
+-    leftIconWidget = new QWidget();
+-    centerWidget = new QWidget();
+-
+-
+-    //标题布局
+-    m_pfirstlayout->addStretch(1);
+-    m_pfirstlayout->addWidget(closeButton);
+-    topWidget->setLayout(m_pfirstlayout);
+-
+-
+-
+-    //按钮布局
+-    //buttonlayout->addWidget(remindButton);
+-    remindButton->hide();
+-    buttonlayout->addStretch();
+-    buttonlayout->addWidget(confirmButton);
+-    buttonlayout->addStretch();
+-    buttonWidget->setLayout(buttonlayout);
+-
+-
+-    //主体内容布局
+-    m_ptestlayout->addWidget(iconBigLabel,0,Qt::AlignHCenter);
+-    //m_ptestlayout->addItem(new QSpacerItem(360,16));
+-    m_ptestlayout->addWidget(firstlabel,0,Qt::AlignHCenter);
+-    m_ptestlayout->addStretch(2);
+-    m_ptestlayout->addWidget(buttonWidget);
+-    m_ptestlayout->addStretch(1);
+-    contentWidget->setLayout(m_ptestlayout);
+-
+-    //增加图标主体内容布局
+-    m_pcenterlayout->addWidget(contentWidget);
+-    centerWidget->setLayout(m_pcenterlayout);
+-
+-    //整体布局
+-
+-    m_pmainlayout->addWidget(topWidget);
+-    m_pmainlayout->addWidget(centerWidget);
+-    //centerWidget->setStyleSheet("background-color: rgb(85,173,222)");
+-
+-
+-    this->setLayout(m_pmainlayout);
+-}
+-
+-void MessageBoxPowerIntel::paintEvent(QPaintEvent *e)
+-{
+-//    QStyleOption opt;
+-//    opt.init(this);
+-//    QPainter p(this);
+-//    /* 获取当前剪贴板中字体的颜色,作为背景色;
+-//     * 白字体 --> 黑背景
+-//     * 黑字体 --> 白字体
+-//    */
+-//    p.setBrush(opt.palette.color(QPalette::Base));
+-//    p.setOpacity(1);
+-//    p.setPen(QPen(QColor(255,255,255)));
+-//    QPainterPath path;
+-//    opt.rect.adjust(0,0,0,0);
+-//    path.addRoundedRect(opt.rect,16,16);
+-//    p.setRenderHint(QPainter::Antialiasing);                        //反锯齿
+-//    p.drawRoundedRect(opt.rect,16,16);
+-//    setProperty("blurRegion",QRegion(path.toFillPolygon().toPolygon()));
+-//    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
+-//    QWidget::paintEvent(e);
+-
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 16, 16);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-    p.restore();
+-}
+-
+-void MessageBoxPowerIntel::remindslots()
+-{
+-
+-    //timer->start(1800*1000);
+-
+-}
+-void MessageBoxPowerIntel::restartslots()
+-{
+-    /*QDBusMessage msg = QDBusMessage::createMethodCall("org.gnome.SessionManager",
+-                                                    "/org/gnome/SessionManager",
+-                                                    "org.gnome.SessionManager",
+-                                                    "reboot");
+-    */
+-//    QDBusMessage msg = QDBusMessage::createMethodCall("org.freedesktop.login1",
+-//                                                    "/org/freedesktop/login1",
+-//                                                    "org.freedesktop.login1.Manager",
+-//                                                    "Reboot");
+-//    bool arg=1;
+-//    msg<<arg;
+-
+-//    QDBusMessage response = QDBusConnection::systemBus().call(msg);
+-    this->close();
+-
+-}
+-
+-void MessageBoxPowerIntel::otaevent()
+-{
+-
+-}
+-
+-void MessageBoxPowerIntel::timetask()
+-{
+-//    timer->stop();
+-//    otaevent();
+-    //QDBusMessage msg =QDBusMessage::createSignal("/", "com.kylin.update.notification", "DownloadFinish");
+-    //QDBusConnection::systemBus().send(msg);
+-}
+diff --git a/plugins/account/userinfo_intel/messageboxpowerintel.h b/plugins/account/userinfo_intel/messageboxpowerintel.h
+deleted file mode 100644
+index b70c844..0000000
+--- a/plugins/account/userinfo_intel/messageboxpowerintel.h
++++ /dev/null
+@@ -1,61 +0,0 @@
+-#ifndef WIDGET_H
+-#define WIDGET_H
+-
+-#include <QWidget>
+-#include <QApplication>
+-#include <QTranslator>
+-#include <QDesktopWidget>
+-#include <QPainter>
+-#include <QPainterPath>
+-#include <QStyleOption>
+-#include <QLabel>
+-#include <QVBoxLayout>
+-#include <QPushButton>
+-#include <QDebug>
+-#include <QDialog>
+-
+-class MessageBoxPowerIntel : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit MessageBoxPowerIntel(QWidget *parent = nullptr);
+-    ~MessageBoxPowerIntel();
+-    QHBoxLayout  *m_pfirstlayout    = nullptr;
+-    QVBoxLayout  *m_pmainlayout     = nullptr;
+-    QVBoxLayout  *m_ptestlayout     = nullptr;
+-    QHBoxLayout  *buttonlayout      = nullptr;
+-    QHBoxLayout  *m_pcenterlayout     = nullptr;
+-
+-    QWidget *topWidget;
+-    QWidget *contentWidget;
+-    QWidget *buttonWidget;
+-    QWidget *leftIconWidget;
+-    QWidget *centerWidget;
+-
+-
+-    QPushButton *closeButton;
+-
+-
+-
+-    QLabel *firstlabel;
+-
+-    QPushButton *remindButton;
+-    QPushButton *confirmButton;
+-
+-    QLabel *iconBigLabel;
+-
+-    QTimer *timer;
+-
+-    void initUI();
+-    void paintEvent(QPaintEvent *e);
+-
+-public Q_SLOTS:
+-    void otaevent();
+-    void timetask();
+-
+-protected slots:
+-    void remindslots();
+-    void restartslots();
+-};
+-#endif // WIDGET_H
+diff --git a/plugins/account/userinfo_intel/numbersbuttonintel.cpp b/plugins/account/userinfo_intel/numbersbuttonintel.cpp
+deleted file mode 100644
+index be0226c..0000000
+--- a/plugins/account/userinfo_intel/numbersbuttonintel.cpp
++++ /dev/null
+@@ -1,131 +0,0 @@
+-#include "numbersbuttonintel.h"
+-
+-#include <QGridLayout>
+-#include <QVariant>
+-
+-NumbersButtonIntel::NumbersButtonIntel(QWidget *parent):
+-    QWidget(parent)
+-{
+-    initUI();
+-    initConnect();
+-    const QByteArray id_1(UKUI_QT_STYLE);
+-    if (QGSettings::isSchemaInstalled(id_1)) {
+-        m_style = new QGSettings(id_1);
+-    }
+-    setQSS();
+-}
+-
+-NumbersButtonIntel::~NumbersButtonIntel()
+-{
+-    if (m_style != nullptr) {
+-        delete m_style;
+-    }
+-}
+-
+-void NumbersButtonIntel::initUI()
+-{
+-    QGridLayout* mainLayout = new QGridLayout(this);
+-    setLayout(mainLayout);
+-
+-    for(int i = 1;i <= 9;i++)
+-    {
+-        m_pNumerPressBT[i] = new QPushButton(this);
+-        m_pNumerPressBT[i]->setText(QString(QChar(i + '0')));
+-        m_pNumerPressBT[i]->setProperty("class", "numberPressBT");
+-        mainLayout->addWidget(m_pNumerPressBT[i], (i - 1) / 3, (i - 1) % 3);
+-    }
+-    m_pNumerPressBT[0] = new QPushButton(this);
+-    m_pNumerPressBT[0]->setText(QString(QChar('0')));
+-    m_pNumerPressBT[0]->setProperty("class", "numberPressBT");
+-    mainLayout->addWidget(m_pNumerPressBT[0], 3, 1);
+-
+-    m_pNumerPressBT[10] = new QPushButton(this);
+-    m_pPictureToWhite = new PictureToWhite();
+-    m_pNumerPressBT[10]->setIcon(QIcon(m_pPictureToWhite->drawSymbolicColoredPixmap(QPixmap(":/img/plugins/userinfo_intel/num-delete.svg").scaled(30,30))));
+-    m_pNumerPressBT[10]->setProperty("class", "numberPressBT");
+-    m_pNumerPressBT[11] = new QPushButton(this);
+-    m_pNumerPressBT[11]->setText(tr("clean"));
+-    m_pNumerPressBT[11]->setProperty("class", "numberPressCL");
+-    mainLayout->addWidget(m_pNumerPressBT[11], 3, 0);
+-    mainLayout->setSpacing(12);
+-    mainLayout->setVerticalSpacing(10);
+-    mainLayout->addWidget(m_pNumerPressBT[10], 3, 2);
+-}
+-
+-void NumbersButtonIntel::initConnect()
+-{
+-    connect(m_pNumerPressBT[0], &QPushButton::clicked, this, [=](){ emit numbersButtonPress(0); });
+-    connect(m_pNumerPressBT[1], &QPushButton::clicked, this, [=](){ emit numbersButtonPress(1); });
+-    connect(m_pNumerPressBT[2], &QPushButton::clicked, this, [=](){ emit numbersButtonPress(2); });
+-    connect(m_pNumerPressBT[3], &QPushButton::clicked, this, [=](){ emit numbersButtonPress(3); });
+-    connect(m_pNumerPressBT[4], &QPushButton::clicked, this, [=](){ emit numbersButtonPress(4); });
+-    connect(m_pNumerPressBT[5], &QPushButton::clicked, this, [=](){ emit numbersButtonPress(5); });
+-    connect(m_pNumerPressBT[6], &QPushButton::clicked, this, [=](){ emit numbersButtonPress(6); });
+-    connect(m_pNumerPressBT[7], &QPushButton::clicked, this, [=](){ emit numbersButtonPress(7); });
+-    connect(m_pNumerPressBT[8], &QPushButton::clicked, this, [=](){ emit numbersButtonPress(8); });
+-    connect(m_pNumerPressBT[9], &QPushButton::clicked, this, [=](){ emit numbersButtonPress(9); });
+-    connect(m_pNumerPressBT[10], &QPushButton::clicked, this, [=](){ emit numbersButtonPress(10); });
+-    connect(m_pNumerPressBT[11], &QPushButton::clicked, this, [=](){ emit numbersButtonPress(11); });
+-}
+-
+-void NumbersButtonIntel::setQSS()
+-{
+-    QString themeName = m_style->get(UKUI_STYLE_KEY).toString();
+-    if( themeName == "ukui-light" || themeName == "ukui-default" | themeName == "ukui" ) {
+-        setStyleSheet(".numberPressBT{"
+-                          "font-size:24px;"
+-                          "min-width:96px;"
+-                          "min-height:64px;"
+-                          "max-width:96px;"
+-                          "max-height:64px;"
+-                          "background:rgba(0, 0, 0, 0.05);"
+-                          "border-radius:16px;"
+-                          "}"
+-                          ".numberPressBT:hover{"
+-                          "background:rgba(0, 0, 0, 0.15)"
+-                          "}"
+-                       ".numberPressCL{"
+-                           "font-size:16px;"
+-                           "min-width:96px;"
+-                           "min-height:64px;"
+-                           "max-width:96px;"
+-                           "max-height:64px;"
+-                           "background:rgba(0, 0, 0, 0.05);"
+-                           "border-radius:16px;"
+-                           "}"
+-                           ".numberPressCL:hover{"
+-                           "background:rgba(0, 0, 0, 0.15)"
+-                           "}"
+-
+-                      );         // isNightMode=false
+-    } else {
+-        setStyleSheet(".numberPressBT{"
+-                          "font-size:24px;"
+-                          "min-width:96px;"
+-                          "min-height:64px;"
+-                          "max-width:96px;"
+-                          "max-height:64px;"
+-                          "background:rgba(58, 58, 61, 255);"
+-                          "border-radius:16px;"
+-                          "}"
+-                          ".numberPressBT:hover{"
+-                          "background:rgba(98, 98, 103, 255)"
+-                          "}"
+-                       ".numberPressCL{"
+-                           "font-size:16px;"
+-                           "min-width:96px;"
+-                           "min-height:64px;"
+-                           "max-width:96px;"
+-                           "max-height:64px;"
+-                           "background:rgba(58, 58, 61, 255);"
+-                           "border-radius:16px;"
+-                           "}"
+-                           ".numberPressCL:hover{"
+-                           "background:rgba(98, 98, 98, 255)"
+-                           "}"
+-
+-                      );   // isNightMode=true
+-    }
+-
+-}
+-
+diff --git a/plugins/account/userinfo_intel/numbersbuttonintel.h b/plugins/account/userinfo_intel/numbersbuttonintel.h
+deleted file mode 100644
+index 3bed004..0000000
+--- a/plugins/account/userinfo_intel/numbersbuttonintel.h
++++ /dev/null
+@@ -1,34 +0,0 @@
+-#ifndef NUMBERSBUTTONINTEL_H
+-#define NUMBERSBUTTONINTEL_H
+-
+-#include <QWidget>
+-#include <QPushButton>
+-#include <QGSettings/QGSettings>
+-#include "picturetowhite.h"
+-
+-#define UKUI_QT_STYLE                      "org.ukui.style"
+-#define UKUI_STYLE_KEY                     "style-name"
+-
+-class NumbersButtonIntel : public QWidget
+-{
+-    Q_OBJECT
+-
+-public:
+-    NumbersButtonIntel(QWidget *parent = nullptr);
+-    ~NumbersButtonIntel();
+-
+-Q_SIGNALS:
+-    void numbersButtonPress(int btn_id);
+-
+-private:
+-    void initUI();
+-    void initConnect();
+-    void setQSS();
+-
+-private:
+-    QPushButton *m_pNumerPressBT[12]; // 0~9 是数字按键 10是删除键 11是清空
+-    PictureToWhite *m_pPictureToWhite;
+-    QGSettings *m_style = nullptr;
+-};
+-
+-#endif // NUMBERSBUTTONINTEL_H
+diff --git a/plugins/account/userinfo_intel/passwdcheckutil.cpp b/plugins/account/userinfo_intel/passwdcheckutil.cpp
+deleted file mode 100644
+index 0efc2fd..0000000
+--- a/plugins/account/userinfo_intel/passwdcheckutil.cpp
++++ /dev/null
+@@ -1,47 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "passwdcheckutil.h"
+-
+-#include <QFile>
+-#include <QDebug>
+-
+-#define PAM_CONF_FILE "/etc/pam.d/common-password"
+-
+-PasswdCheckUtil::PasswdCheckUtil(QObject *parent) : QObject(parent)
+-{
+-
+-}
+-
+-bool PasswdCheckUtil::getCurrentPamState(){
+-    QFile * readFile = new QFile(PAM_CONF_FILE);
+-    if (!readFile->open(QIODevice::ReadOnly | QIODevice::Text)){
+-        readFile->close();
+-        qDebug() << QString("Open conf file %1 failed!").arg(PAM_CONF_FILE);
+-        return false;
+-    } else {
+-        QTextStream stream(readFile);
+-        while(!stream.atEnd()){
+-            QString line = stream.readLine();
+-            if (line.contains("pam_pwquality.so"))
+-                return true;
+-        }
+-        return false;
+-    }
+-}
+diff --git a/plugins/account/userinfo_intel/passwdcheckutil.h b/plugins/account/userinfo_intel/passwdcheckutil.h
+deleted file mode 100644
+index 0375fa2..0000000
+--- a/plugins/account/userinfo_intel/passwdcheckutil.h
++++ /dev/null
+@@ -1,35 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef PASSWDCHECKUTIL_H
+-#define PASSWDCHECKUTIL_H
+-
+-#include <QObject>
+-
+-class PasswdCheckUtil : public QObject
+-{
+-    Q_OBJECT
+-public:
+-    explicit PasswdCheckUtil(QObject *parent = nullptr);
+-
+-    static bool getCurrentPamState();
+-
+-};
+-
+-#endif // PASSWDCHECKUTIL_H
+diff --git a/plugins/account/userinfo_intel/passwordbar.cpp b/plugins/account/userinfo_intel/passwordbar.cpp
+deleted file mode 100644
+index 47fe260..0000000
+--- a/plugins/account/userinfo_intel/passwordbar.cpp
++++ /dev/null
+@@ -1,118 +0,0 @@
+-#include "passwordbar.h"
+-
+-#include <QPainter>
+-
+-PasswordBar::PasswordBar(QWidget *parent):
+-    QWidget(parent)
+-{
+-    initUI();
+-}
+-
+-PasswordBar::~PasswordBar()
+-{
+-    if (m_style != nullptr) {
+-        delete m_style;
+-    }
+-}
+-
+-void PasswordBar::initUI()
+-{
+-    m_bitLen = 6;               // 密码位数
+-    m_ballRadius = 8;
+-    m_fillBallCnt = 0;
+-    m_ballSpan = m_ballRadius << 1;     // 密码间的跨度
+-
+-    adjSize();
+-
+-    const QByteArray id_1(UKUI_QT_STYLE);
+-    if (QGSettings::isSchemaInstalled(id_1)) {
+-        m_style = new QGSettings(id_1);
+-    }
+-}
+-
+-void PasswordBar::setLength(int l)
+-{
+-    m_bitLen = l;
+-    adjSize();
+-}
+-
+-void PasswordBar::setBallRadius(int l)
+-{
+-    m_ballRadius = l;
+-    adjSize();
+-}
+-
+-void PasswordBar::setBallSpan(int l)
+-{
+-    m_ballSpan = l;
+-    adjSize();
+-}
+-
+-void PasswordBar::setFillBall(int l)
+-{
+-    m_fillBallCnt = l;
+-    repaint();
+-}
+-
+-int PasswordBar::getFillBall()
+-{
+-    return m_fillBallCnt;
+-}
+-
+-void PasswordBar::adjSize()
+-{
+-    int ballD = m_ballRadius << 1;
+-    setFixedHeight(ballD + 2);
+-    setFixedWidth(ballD * m_bitLen + 2 + m_ballSpan * (m_bitLen - 1));
+-    adjustSize();
+-    repaint();
+-}
+-
+-void PasswordBar::addFillBall()
+-{
+-    if(m_fillBallCnt == m_bitLen) return;
+-    ++m_fillBallCnt;
+-    repaint();
+-}
+-
+-void PasswordBar::delFillBall()
+-{
+-    if(!m_fillBallCnt) return;
+-    --m_fillBallCnt;
+-    repaint();
+-}
+-
+-QSize PasswordBar::sizeHint() const{
+-    return QSize(width(), height());
+-}
+-
+-void PasswordBar::paintEvent(QPaintEvent *event)
+-{
+-    Q_UNUSED(event);
+-    QPainter painter(this);
+-    painter.setPen(QColor(200, 200, 200, 255));
+-    painter.setRenderHint(QPainter::Antialiasing);
+-
+-    QColor ballColor;
+-    QString themeName = m_style->get(UKUI_STYLE_KEY).toString();
+-    if( themeName == "ukui-light" || themeName == "ukui-default" | themeName == "ukui" ) {
+-        ballColor = QColor(0,0,0,255);         // isNightMode=false
+-    } else {
+-        ballColor = QColor(255,255,255,255);   // isNightMode=true
+-    }
+-
+-    int beginx = 1;
+-    for(int i = 0;i < m_bitLen;i++)
+-    {
+-        if(i){
+-            beginx += m_ballSpan + m_ballRadius * 2;
+-        }
+-        if(i < m_fillBallCnt)
+-            painter.setBrush(ballColor);
+-        else
+-            painter.setBrush(QColor(255,255,255,0));
+-
+-        painter.drawEllipse(QPoint(beginx + m_ballRadius, m_ballRadius + 1), m_ballRadius, m_ballRadius);
+-        //painter.drawRoundedRect(rect(), m_ballRadius, m_ballRadius);
+-    }
+-}
+diff --git a/plugins/account/userinfo_intel/passwordbar.h b/plugins/account/userinfo_intel/passwordbar.h
+deleted file mode 100644
+index a52e571..0000000
+--- a/plugins/account/userinfo_intel/passwordbar.h
++++ /dev/null
+@@ -1,42 +0,0 @@
+-#ifndef PASSWORDBAR_H
+-#define PASSWORDBAR_H
+-
+-#include <QWidget>
+-#include <QLabel>
+-#include <QPushButton>
+-#include <QGSettings/QGSettings>
+-#include <QVariant>
+-
+-#define UKUI_QT_STYLE                      "org.ukui.style"
+-#define UKUI_STYLE_KEY                     "style-name"
+-
+-class PasswordBar : public QWidget
+-{
+-public:
+-    PasswordBar(QWidget *parent = nullptr);
+-    ~PasswordBar();
+-
+-    void setLength(int l);
+-    void setBallRadius(int l);
+-    void setBallSpan(int l);
+-    void addFillBall();
+-    void delFillBall();
+-    void setFillBall(int l);
+-    int getFillBall();
+-
+-private:
+-    void initUI();
+-    void adjSize();
+-
+-protected:
+-    void paintEvent(QPaintEvent *event);
+-    QSize sizeHint() const;
+-
+-private:
+-    int m_bitLen;
+-    int m_ballRadius;
+-    int m_fillBallCnt;
+-    int m_ballSpan;
+-    QGSettings *m_style = nullptr;
+-};
+-#endif // PASSWORDBAR_H
+diff --git a/plugins/account/userinfo_intel/phoneauthinteldialog.cpp b/plugins/account/userinfo_intel/phoneauthinteldialog.cpp
+deleted file mode 100644
+index 242419d..0000000
+--- a/plugins/account/userinfo_intel/phoneauthinteldialog.cpp
++++ /dev/null
+@@ -1,702 +0,0 @@
+-#include "phoneauthinteldialog.h"
+-#include <QPushButton>
+-#include <QLineEdit>
+-#include <QFrame>
+-#include <QHBoxLayout>
+-#include <QVBoxLayout>
+-#include <QLabel>
+-#include <QFile>
+-#include <QLatin1String>
+-#include <QString>
+-#include <QEventLoop>
+-#include <QAction>
+-#include <QStackedWidget>
+-
+-#include <QNetworkAccessManager>
+-#include <QNetworkReply>
+-#include <QNetworkRequest>
+-
+-#define KYLIN_WIFI_GSETTING_VALUE "org.kylinnm.settings"
+-
+-PhoneAuthIntelDialog::PhoneAuthIntelDialog(QString username,QWidget *parent) : QWidget(parent)
+-{
+-    this->resize(360, 529);
+-    m_username = username;
+-    initUI();
+-    setQSS();
+-}
+-
+-PhoneAuthIntelDialog::~PhoneAuthIntelDialog()
+-{
+-    if(m_interface3){
+-        delete m_interface3;
+-        m_interface3 = NULL;
+-    }
+-    if(m_interface4){
+-        delete m_interface4;
+-        m_interface4 = NULL;
+-    }
+-}
+-
+-void PhoneAuthIntelDialog::initUI(){
+-    wechatAuthBtn = new QPushButton(tr("Wechat Auth"));
+-    wechatAuthBtn->setFixedSize(156, 48);
+-    phoneAuthBtn = new QPushButton(tr("Phone Auth"));
+-    phoneAuthBtn->setFixedSize(156, 48);
+-    is_phoneVerifyChecked = true;
+-    stackWidget = new QStackedWidget(this);
+-
+-    const QByteArray id(KYLIN_WIFI_GSETTING_VALUE);
+-    if (QGSettings::isSchemaInstalled(id)){
+-        m_wifi = new QGSettings(id);
+-    }
+-
+-    wechatAuthBtn->setObjectName("wechatAuthBtn");
+-    phoneAuthBtn->setObjectName("phoneAuthBtn");
+-    QHBoxLayout * p_hLayout1 = new QHBoxLayout();
+-    p_hLayout1->setSpacing(0);
+-    p_hLayout1->addStretch();
+-    p_hLayout1->addWidget(wechatAuthBtn);
+-    p_hLayout1->addWidget(phoneAuthBtn);
+-    p_hLayout1->addStretch();
+-    is_phoneVerifyChecked = true;
+-    phoneAuthBtn->setStyleSheet("QPushButton, QPushButton:hover:!pressed, QPushButton:pressed{background: #2FB3E8; "
+-                                "border-top-right-radius: 8px; "
+-                                "border-bottom-right-radius: 8px; "
+-                                "font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc; font-weight: bold;color: white;}");
+-
+-    m_qr = new QLabel();
+-    phoneNumLine = new QLineEdit(this);
+-    phoneNumLine->setFixedSize(312, 64);
+-    phoneNumLine->setPlaceholderText(tr("Phone number"));
+-    phoneNumLine->setProperty("class", "PhoneLineEdit");
+-    verifyCodeLine = new QLineEdit(this);
+-    verifyCodeLine->setFixedSize(184, 64);
+-    verifyCodeLine->setPlaceholderText(tr("SMS verification code"));
+-    verifyCodeLine->setProperty("class", "PhoneLineEdit");
+-    QRegExp regx_DeviceID1("^[0-9]{1,11}$");
+-    QRegExp regx_DeviceID2("^[0-9]{1,6}$");
+-    QValidator *validator_DeviceID1 = new QRegExpValidator(regx_DeviceID1,phoneNumLine);
+-    QValidator *validator_DeviceID2 = new QRegExpValidator(regx_DeviceID2,verifyCodeLine);
+-    phoneNumLine->setValidator(validator_DeviceID1);
+-    verifyCodeLine->setValidator(validator_DeviceID2);
+-
+-    phonePicture = new QAction(this);
+-    smsPicture = new QAction(this);
+-    phonePicture->setIcon(QIcon(":/img/plugins/userinfo_intel/phonenum.svg"));
+-    smsPicture->setIcon(QIcon(":/img/plugins/userinfo_intel/smscode.svg"));
+-    phoneNumLine->addAction(phonePicture, QLineEdit::LeadingPosition);
+-    verifyCodeLine->addAction(smsPicture, QLineEdit::LeadingPosition);
+-    phoneNumLine->setTextMargins(10, 0, 0, 0);
+-    verifyCodeLine->setTextMargins(10, 0, 0, 0);
+-
+-
+-    QWidget *phoneWidget = new QWidget(stackWidget);
+-    phoneWidget->setFixedSize(312, 64);
+-    QHBoxLayout * p_hPhoneLayout = new QHBoxLayout(phoneWidget);
+-    p_hPhoneLayout->setContentsMargins(0, 0, 0, 0);
+-    p_hPhoneLayout->setSpacing(0);
+-    p_hPhoneLayout->addWidget(phoneNumLine);
+-    phoneWidget->setObjectName("phoneWidget");
+-
+-
+-    QWidget *codeWidget = new QWidget(stackWidget);
+-    codeWidget->setFixedSize(312, 64);
+-    getVerifyCodeBtn = new QPushButton(tr("GetCode"));
+-    getVerifyCodeBtn->setObjectName("getVerifyCodeBtn");
+-    getVerifyCodeBtn->setFixedSize(128, 64);
+-    QHBoxLayout * p_hCodeLayout = new QHBoxLayout(codeWidget);
+-    p_hCodeLayout->setContentsMargins(0, 0, 0, 0);
+-    p_hCodeLayout->setSpacing(0);
+-    p_hCodeLayout->addWidget(verifyCodeLine);
+-    p_hCodeLayout->addWidget(getVerifyCodeBtn);
+-    codeWidget->setObjectName("codeWidget");
+-
+-    returnButton = new QPushButton(tr("Return"));
+-    confirmButton = new QPushButton(tr("Commit"));
+-    returnButton->setProperty("class", "phoneBT");
+-    confirmButton->setProperty("class", "phoneBT");
+-    confirmButton->setDefault(false);
+-    confirmButton->setFlat(true);
+-    returnButton->setFlat(true);
+-    QHBoxLayout * p_hLayout = new QHBoxLayout();
+-    p_hLayout->setSpacing(20);
+-    p_hLayout->addStretch();
+-    p_hLayout->addWidget(returnButton);
+-    p_hLayout->addWidget(confirmButton);
+-    p_hLayout->addStretch();
+-
+-    QVBoxLayout *p_mainLayout = new QVBoxLayout();
+-
+-    p_mainLayout->setContentsMargins(5, 15, 5, 24);
+-    p_mainLayout->addLayout(p_hLayout1);
+-    p_mainLayout->setSpacing(0);
+-
+-    /*
+-     * 微信stackwidget
+-    */
+-    QWidget *phonestackWidget = new QWidget();
+-    QWidget *wechatstackWidget = new QWidget();
+-    stackWidget->addWidget(phonestackWidget);
+-    stackWidget->addWidget(wechatstackWidget);
+-    m_pQRPromptMessage = new QLabel();
+-    m_pQRPromptMessage->setProperty("class", "promptMessageLabel");
+-    QVBoxLayout * v_wechatLayout = new QVBoxLayout(wechatstackWidget);
+-    v_wechatLayout->addStretch();
+-    v_wechatLayout->addWidget(m_pQRPromptMessage, 0, Qt::AlignHCenter);
+-    v_wechatLayout->addWidget(m_qr, 0, Qt::AlignHCenter);
+-    v_wechatLayout->addStretch();
+-
+-    /*
+-     * 手机stackwidget
+-    */
+-    m_pPromptMessage = new QLabel();
+-    m_pPromptMessage->setProperty("class", "promptMessageLabel"); 
+-    QWidget * widget_1 = new QWidget(phonestackWidget);
+-    widget_1->setFixedSize(312, 40);
+-    QVBoxLayout *v_boxLayout1 = new QVBoxLayout(widget_1);
+-    v_boxLayout1->addWidget(m_pPromptMessage, 0, Qt::AlignHCenter);
+-    v_boxLayout1->addStretch();
+-    QVBoxLayout * v_phoneLayout = new QVBoxLayout(phonestackWidget);
+-    v_phoneLayout->setSpacing(0);
+-    v_phoneLayout->addWidget(widget_1, 0, Qt::AlignHCenter);
+-    v_phoneLayout->addWidget(phoneWidget, 0, Qt::AlignHCenter);
+-    v_phoneLayout->addWidget(codeWidget, 0, Qt::AlignHCenter);
+-    v_phoneLayout->addStretch();
+-    hidePromptMsg();
+-
+-    p_mainLayout->addWidget(stackWidget);
+-    p_mainLayout->addLayout(p_hLayout);
+-    m_interface3 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                      "/cn/kylinos/SSOBackend",
+-                                                      "cn.kylinos.SSOBackend.eduplatform",
+-                                                      QDBusConnection::systemBus());
+-    m_interface4 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                      "/cn/kylinos/SSOBackend",
+-                                                      "cn.kylinos.SSOBackend.accounts",
+-                                                      QDBusConnection::systemBus());
+-    if(!m_interface3->isValid())
+-        qDebug() << "connect to cn.kylinos.SSOBackend 3failed";
+-    if(!m_interface4->isValid())
+-        qDebug() << "connect to cn.kylinos.SSOBackend 4failed";
+-    connect(m_interface3, SIGNAL(QRStatusChange(QString, QString,int)), this, SLOT(QRStatusChangedSlots(QString, QString,int)));
+-    m_qrTimeout = new QTimer();
+-    connect(m_qrTimeout,&QTimer::timeout,this,[=](){
+-        if (qrstatus) {
+-            m_qrTimeout->stop();
+-            qDebug()<<"停止获取";
+-        } else {
+-            QPixmap qrcode;
+-            getQRCodeFromURL(qrcode);
+-            qrcode = beautifyQRCode(qrcode);
+-            m_qr->setPixmap(qrcode);
+-            m_qr->show();
+-        }
+-    });
+-
+-
+-    this->setLayout(p_mainLayout);
+-    connect(wechatAuthBtn, &QPushButton::clicked, this, [=](){
+-        confirmButton->setText(tr("confirm"));
+-        stackWidget->setCurrentIndex(1);
+-        is_phoneVerifyChecked = false;
+-        hideQRPromptMsg();
+-        QPixmap qrcode;
+-        getQRCodeFromURL(qrcode);
+-        qrcode = beautifyQRCode(qrcode);
+-        m_qr->setPixmap(qrcode);
+-        m_qr->show();
+-
+-        wechatAuthBtn->setStyleSheet("QPushButton, QPushButton:hover:!pressed, QPushButton:pressed{background: #2FB3E8; "
+-                                    "border-top-left-radius: 8px; "
+-                                    "border-bottom-left-radius: 8px; "
+-                                    "font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc; font-weight: bold;color: white;}");
+-        if(!is_nightTheme){
+-            phoneAuthBtn->setStyleSheet("QPushButton{background: #F6F6F6; border-top-right-radius: 8px; border-bottom-right-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Regular, NotoSansCJKsc;}"
+-                                         "QPushButton:hover:!pressed{background: #F6F6F6; border-top-right-radius: 8px; border-bottom-right-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc;font-weight: bold;color: #2FB3E8;}"
+-                                         "QPushButton:pressed{background: #2FB3E8; border-top-right-radius: 8px; border-bottom-right-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc; font-weight: bold;color: white;}");
+-        }
+-        else{
+-            phoneAuthBtn->setStyleSheet("QPushButton{background: #31373F; border-top-right-radius: 8px; border-bottom-right-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Regular, NotoSansCJKsc;}"
+-                                         "QPushButton:hover:!pressed{background: #31373F; border-top-right-radius: 8px; border-bottom-right-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc;font-weight: bold;color: #2FB3E8;}"
+-                                         "QPushButton:pressed{background: #2FB3E8; border-top-right-radius: 8px; border-bottom-right-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc; font-weight: bold;color: white;}");
+-        }
+-    });
+-    connect(phoneAuthBtn, &QPushButton::clicked, this, [=](){
+-        confirmButton->setText(tr("commit"));
+-        stackWidget->setCurrentIndex(0);
+-        is_phoneVerifyChecked = true;
+-        hidePromptMsg();
+-        phoneAuthBtn->setStyleSheet("QPushButton, QPushButton:hover:!pressed, QPushButton:pressed{background: #2FB3E8; "
+-                                    "border-top-right-radius: 8px; "
+-                                    "border-bottom-right-radius: 8px; "
+-                                    "font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc; font-weight: bold;color: white;}");
+-        if(!is_nightTheme){
+-            wechatAuthBtn->setStyleSheet("QPushButton{background: #F6F6F6; border-top-left-radius: 8px; border-bottom-left-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Regular, NotoSansCJKsc;}"
+-                                         "QPushButton:hover:!pressed{background: #F6F6F6; border-top-left-radius: 8px; border-bottom-left-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc;font-weight: bold;color: #2FB3E8;}"
+-                                         "QPushButton:pressed{background: #2FB3E8; border-top-left-radius: 8px; border-bottom-left-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc; font-weight: bold;color: white;}");
+-        }
+-        else{
+-            wechatAuthBtn->setStyleSheet("QPushButton{background: #31373F; border-top-left-radius: 8px; border-bottom-left-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Regular, NotoSansCJKsc;}"
+-                                         "QPushButton:hover:!pressed{background: #31373F; border-top-left-radius: 8px; border-bottom-left-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc;font-weight: bold;color: #2FB3E8;}"
+-                                         "QPushButton:pressed{background: #2FB3E8; border-top-left-radius: 8px; border-bottom-left-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc; font-weight: bold;color: white;}");
+-        }
+-    });
+-    connect(this, &PhoneAuthIntelDialog::getCodeChange, this, &PhoneAuthIntelDialog::getCodeChanged);
+-    QString m_clonephone;
+-    QDBusMessage result = m_interface4->call("GetAccountBasicInfo", m_username);
+-    if (QDBusMessage::ErrorMessage == result.type()) {
+-        qDebug() << "result.type() = " << result.type();
+-        qDebug() << "QDBusMessage::ErrorMessage = " << QDBusMessage::ErrorMessage;
+-        qDebug()<<"error";
+-        m_clonephone = "error";
+-    } else {
+-        QList<QVariant> outArgs2 = result.arguments();
+-        m_phone = outArgs2.at(5).value<QString>();
+-        m_clonephone = m_phone.mid(0,3)+"****"+m_phone.mid(7,4);
+-    }
+-    if (m_clonephone == "error") {
+-        QPalette pa;
+-        pa.setColor(QPalette::WindowText,Qt::red);
+-        m_pPromptMessage->setPalette(pa);
+-        m_pPromptMessage->setText(tr("Mobile number acquisition failed"));
+-        showPromptMsg();
+-        phonestatus = false;
+-        getVerifyCodeBtn->setEnabled(false);
+-        emit getCodeChange();
+-    } else {
+-        phoneNumLine->setText(m_clonephone);
+-        phoneNumLine->setReadOnly(true);
+-        phonestatus = true;
+-    }
+-    connect(phoneNumLine, &QLineEdit::textChanged, this, [=](){
+-        hidePromptMsg();
+-        if (phoneNumLine->text().count() == 11) {
+-            getVerifyCodeBtn->setEnabled(true);
+-            emit getCodeChange();
+-            phonestatus = true;
+-        } else {
+-            getVerifyCodeBtn->setEnabled(false);
+-            emit getCodeChange();
+-            phonestatus = false;
+-        }
+-        if (phonestatus && codestatus) {
+-            confirmButton->setEnabled(true);
+-        } else {
+-            confirmButton->setEnabled(false);
+-        }
+-    });
+-
+-    connect(getVerifyCodeBtn, &QPushButton::clicked, this, [=](bool checked){
+-        Q_UNUSED(checked);
+-        QTimer *start_timer = new QTimer();
+-        daojishi = 60;
+-        QString s = tr("Recapture");
+-        QString s1 = QString::number(daojishi);
+-        QString s2 = "("+s1+")";
+-        QString s3 = s+s2;
+-        m_interface1 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                          "/cn/kylinos/SSOBackend",
+-                                                          "cn.kylinos.SSOBackend.eduplatform",
+-                                                          QDBusConnection::systemBus());
+-        QDBusMessage result;
+-        if (m_clonephone == "error") {
+-            result = m_interface1->call("GetVerifyCode",phoneNumLine->text());
+-        } else {
+-            result = m_interface1->call("GetVerifyCode",m_phone);
+-        }
+-        hidePromptMsg();
+-
+-        QList<QVariant> outArgs = result.arguments();
+-        delete m_interface1;
+-        int codestatus = outArgs.at(0).value<int>();
+-        if (codestatus == 6 || codestatus == 28) {
+-            QPalette pa;
+-            pa.setColor(QPalette::WindowText,Qt::red);
+-            m_pPromptMessage->setPalette(pa);
+-            m_pPromptMessage->setText(tr("Network connection failure, please check"));
+-            showPromptMsg();
+-        }
+-        getVerifyCodeBtn->setEnabled(false);
+-        emit getCodeChange();
+-        getVerifyCodeBtn->setText(s3);
+-        start_timer->start(1000);
+-        connect(start_timer,&QTimer::timeout,this,[=](){
+-           QString s = tr("Recapture");
+-           if (daojishi > 0){
+-               daojishi--;
+-               QString s1 = QString::number(daojishi);
+-               QString s2 = "("+s1+")";
+-               QString s3 = s+s2;
+-               getVerifyCodeBtn->setText(s3);
+-           } else {
+-               getVerifyCodeBtn->setText(tr("GetCode"));
+-               getVerifyCodeBtn->setEnabled(true);
+-               emit getCodeChange();
+-               start_timer->stop();
+-           }
+-
+-        });
+-
+-    });
+-
+-    confirmButton->setEnabled(false);
+-    codestatus =false;
+-    connect(verifyCodeLine, &QLineEdit::textChanged, this, [=](){
+-        hidePromptMsg();
+-        if (verifyCodeLine->text().count() == 6) {
+-            codestatus =true;
+-        } else {
+-            confirmButton->setEnabled(false);
+-            codestatus =false;
+-        }
+-        if (phonestatus && codestatus) {
+-            confirmButton->setEnabled(true);
+-        } else {
+-            confirmButton->setEnabled(false);
+-        }
+-    });
+-
+-    connect(confirmButton, &QPushButton::clicked, this, [=](bool checked){
+-        Q_UNUSED(checked)
+-        m_interface2 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                          "/cn/kylinos/SSOBackend",
+-                                                          "cn.kylinos.SSOBackend.eduplatform",
+-                                                          QDBusConnection::systemBus());
+-        QDBusMessage result;
+-        if (m_clonephone == "error") {
+-            result = m_interface2->call("CheckUserByPhone",m_username,phoneNumLine->text(),verifyCodeLine->text());
+-        } else {
+-            result = m_interface2->call("CheckUserByPhone",m_username,m_phone,verifyCodeLine->text());
+-        }
+-        QList<QVariant> outArgs = result.arguments();
+-        delete m_interface2;
+-        int status = outArgs.at(0).value<int>();
+-        if (status == 0) {
+-            hidePromptMsg();
+-            emit confirmSignal();
+-        } else if (status == 9014) {
+-            QPalette pa;
+-            pa.setColor(QPalette::WindowText,Qt::red);
+-            m_pPromptMessage->setPalette(pa);
+-            m_pPromptMessage->setText(tr("Phone is lock,try again in an hour"));
+-            showPromptMsg();
+-        }  else if (status == 9000) {
+-            QPalette pa;
+-            pa.setColor(QPalette::WindowText,Qt::red);
+-            m_pPromptMessage->setPalette(pa);
+-            m_pPromptMessage->setText(tr("Phone code is wrong"));
+-            verifyCodeLine->clear();
+-            showPromptMsg();
+-        } else if (status == 6 || status == 28) {
+-            QPalette pa;
+-            pa.setColor(QPalette::WindowText,Qt::red);
+-            m_pPromptMessage->setPalette(pa);
+-            m_pPromptMessage->setText(tr("Network connection failure, please check"));
+-            showPromptMsg();
+-        } else if (status == 2300) {
+-            QPalette pa;
+-            pa.setColor(QPalette::WindowText,Qt::red);
+-            m_pPromptMessage->setPalette(pa);
+-            m_pPromptMessage->setText(tr("Current login expired,using wechat code!"));
+-            showPromptMsg();
+-        } else {
+-            QPalette pa;
+-            pa.setColor(QPalette::WindowText,Qt::red);
+-            m_pPromptMessage->setPalette(pa);
+-            m_pPromptMessage->setText(tr("Unknown error, please try again later"));
+-            verifyCodeLine->clear();
+-            showPromptMsg();
+-        }
+-
+-    });
+-    connect(returnButton, &QPushButton::clicked, [=](){
+-        hidePromptMsg();
+-        emit returnSignal();
+-    });
+-    wechatAuthBtn->setAutoDefault(false);
+-}
+-
+-void PhoneAuthIntelDialog::getCodeChanged()
+-{
+-    if (is_nightTheme) {
+-        if (getVerifyCodeBtn->isEnabled()) {
+-            qDebug()<<__FUNCTION__<<__LINE__;
+-            getVerifyCodeBtn->setStyleSheet("QPushButton{background-color:#030303;"
+-                                             "selection-background-color:#030303;"
+-                                             "border-bottom-right-radius:8px;"
+-                                             "color:#2FB3E8"
+-                                              "}");
+-        } else {
+-            getVerifyCodeBtn->setStyleSheet("QPushButton{background-color:#030303;"
+-                                             "selection-background-color:#030303;"
+-                                             "border-bottom-right-radius:8px;"
+-                                             "color:#DDDDDD"
+-                                              "}");
+-        }
+-    } else {
+-        if (getVerifyCodeBtn->isEnabled()) {
+-            getVerifyCodeBtn->setStyleSheet("QPushButton{background-color:#F6F6F6;"
+-                                             "selection-background-color:#F6F6F6;"
+-                                             "border-bottom-right-radius:8px;"
+-                                             "color:#2FB3E8"
+-                                              "}");
+-        } else {
+-            getVerifyCodeBtn->setStyleSheet("QPushButton{background-color:#F6F6F6;"
+-                                             "selection-background-color:#F6F6F6;"
+-                                             "border-bottom-right-radius:8px;"
+-                                             "color:#DDDDDD"
+-                                              "}");
+-        }
+-    }
+-}
+-
+-void PhoneAuthIntelDialog::themeChanged(const quint32 currentTheme){
+-    if(currentTheme == 0){
+-        is_nightTheme = false;
+-        confirmButton->setStyleSheet("QPushButton{background-color:#F6F6F6;}"
+-                                     "QPushButton:hover:!pressed{background: #F6F6F6;}"
+-                                     "QPushButton:pressed{background: #2FB3E8;}");
+-        returnButton->setStyleSheet("QPushButton{background-color:#F6F6F6;}"
+-                                    "QPushButton:hover:!pressed{background: #F6F6F6;}"
+-                                    "QPushButton:pressed{background: #2FB3E8;}");
+-        phoneNumLine->setStyleSheet("QLineEdit{background-color: #F6F6F6; border: 0px;"
+-                                        "border-top-left-radius:8px;"
+-                                        "border-top-right-radius:8px;"
+-                                        "}");
+-        verifyCodeLine->setStyleSheet("QLineEdit{background-color: #F6F6F6; border: 0px;"
+-                                          "border-bottom-left-radius:8px"
+-                                          "}");
+-        if (getVerifyCodeBtn->isEnabled()) {
+-            getVerifyCodeBtn->setStyleSheet("QPushButton{background-color:#F6F6F6;"
+-                                             "selection-background-color:#F6F6F6;"
+-                                             "border-bottom-right-radius:8px;"
+-                                             "color:#2FB3E8"
+-                                              "}");
+-        } else {
+-            getVerifyCodeBtn->setStyleSheet("QPushButton{background-color:#F6F6F6;"
+-                                             "selection-background-color:#F6F6F6;"
+-                                             "border-bottom-right-radius:8px;"
+-                                             "color:#DDDDDD"
+-                                              "}");
+-        }
+-        if(is_phoneVerifyChecked){
+-            wechatAuthBtn->setStyleSheet("QPushButton{background: #F6F6F6; border-top-left-radius: 8px; border-bottom-left-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Regular, NotoSansCJKsc;}"
+-                                         "QPushButton:hover:!pressed{background: #F6F6F6; border-top-left-radius: 8px; border-bottom-left-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc;font-weight: bold;color: #2FB3E8;}"
+-                                         "QPushButton:pressed{background: #2FB3E8; border-top-left-radius: 8px; border-bottom-left-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc; font-weight: bold;color: white;}");
+-        }
+-        else{
+-            phoneAuthBtn->setStyleSheet("QPushButton{background: #F6F6F6; border-top-right-radius: 8px; border-bottom-right-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Regular, NotoSansCJKsc;}"
+-                                         "QPushButton:hover:!pressed{background: #F6F6F6; border-top-right-radius: 8px; border-bottom-right-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc;font-weight: bold;color: #2FB3E8;}"
+-                                         "QPushButton:pressed{background: #2FB3E8; border-top-right-radius: 8px; border-bottom-right-radius: 8px;font-weight: bold;color: white;}");
+-        }
+-    }
+-    else{
+-        is_nightTheme = true;
+-        confirmButton->setStyleSheet("QPushButton{background-color:#31373F;}"
+-                                     "QPushButton:hover:!pressed{background: #31373F;}"
+-                                     "QPushButton:pressed{background: #2FB3E8;}"
+-                                     );
+-        returnButton->setStyleSheet("QPushButton{background-color:#31373F;}"
+-                                    "QPushButton:hover:!pressed{background: #31373F;}"
+-                                    "QPushButton:pressed{background: #2FB3E8;}"
+-                                    );
+-        phoneNumLine->setStyleSheet("QLineEdit{background-color: #030303; border: 0px;"
+-                                        "border-top-left-radius:8px;"
+-                                        "border-top-right-radius:8px;"
+-                                        "}");
+-        verifyCodeLine->setStyleSheet("QLineEdit{background-color: #030303; border: 0px;"
+-                                          "border-bottom-left-radius:8px"
+-                                          "}");
+-        if (getVerifyCodeBtn->isEnabled()) {
+-            getVerifyCodeBtn->setStyleSheet("QPushButton{background-color:#030303;"
+-                                             "selection-background-color:#030303;"
+-                                             "border-bottom-right-radius:8px;"
+-                                             "color:#2FB3E8"
+-                                              "}");
+-        } else {
+-            getVerifyCodeBtn->setStyleSheet("QPushButton{background-color:#030303;"
+-                                             "selection-background-color:#030303;"
+-                                             "border-bottom-right-radius:8px;"
+-                                             "color:#DDDDDD"
+-                                              "}");
+-        }
+-        if(is_phoneVerifyChecked){
+-            wechatAuthBtn->setStyleSheet("QPushButton, {background: #31373F; border-top-left-radius: 8px; border-bottom-left-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Regular, NotoSansCJKsc;}"
+-                                         "QPushButton:hover:!pressed{background: #31373F; border-top-left-radius: 8px; border-bottom-left-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc;font-weight: bold;color: #2FB3E8;}"
+-                                         "QPushButton:pressed{background: #2FB3E8; border-top-left-radius: 8px; border-bottom-left-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc; font-weight: bold;color: white;}");
+-        }
+-        else{
+-            phoneAuthBtn->setStyleSheet("QPushButton{background: #31373F; border-top-right-radius: 8px; border-bottom-right-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Regular, NotoSansCJKsc;}"
+-                                         "QPushButton:hover:!pressed{background: #31373F; border-top-right-radius: 8px; border-bottom-right-radius: 8px; font-size: 16px;font-family: NotoSansCJKsc-Bold, NotoSansCJKsc;font-weight: bold;color: #2FB3E8;}"
+-                                         "QPushButton:pressed{background: #2FB3E8; border-top-right-radius: 8px; border-bottom-right-radius: 8px;font-weight: bold;color: white;}");
+-        }
+-    }
+-}
+-
+-void PhoneAuthIntelDialog::showPromptMsg()
+-{
+-    m_pPromptMessage->show();
+-}
+-
+-void PhoneAuthIntelDialog::hidePromptMsg()
+-{
+-    m_pPromptMessage->hide();
+-}
+-void PhoneAuthIntelDialog::showQRPromptMsg()
+-{
+-    m_pQRPromptMessage->setVisible(true);
+-}
+-
+-void PhoneAuthIntelDialog::hideQRPromptMsg()
+-{
+-    m_pQRPromptMessage->setVisible(false);
+-}
+-void PhoneAuthIntelDialog::getQRCodeFromURL(QPixmap &qrcode)
+-{
+-    // 从网络上下载二维码   并加载到qrcode
+-    QDBusMessage result = m_interface3->call("CheckUserByQR");
+-    QList<QVariant> outArgs = result.arguments();
+-    int status = outArgs.at(1).value<int>();
+-    if (status == 6 || status == 28) {
+-        QPalette pa;
+-        pa.setColor(QPalette::WindowText,Qt::red);
+-        m_pQRPromptMessage->setPalette(pa);
+-        m_pQRPromptMessage->setText(tr("Network connection failure, please check"));
+-        showQRPromptMsg();
+-        qrstatus = false;
+-        qrcode = QPixmap(":/img/plugins/userinfo_intel/qring.png");
+-        if (!m_qrTimeout->isActive()) {
+-            m_qrTimeout->start(5000);
+-        }
+-        return;
+-    }
+-    if (QDBusMessage::ErrorMessage == result.type()) {
+-        qDebug()<<"error pix";
+-        qrstatus = false;
+-
+-        qrcode = QPixmap(":/img/plugins/userinfo_intel/qring.png");
+-        if (!m_qrTimeout->isActive()) {
+-            m_qrTimeout->start(5000);
+-        }
+-        return;
+-    } else {
+-        qrstatus = true;
+-    }
+-
+-
+-    const QString url = outArgs.at(0).value<QString>();
+-    QNetworkRequest request;
+-    QNetworkAccessManager networkManager;
+-    request.setUrl(url);
+-    QNetworkReply *reply = networkManager.get(request);
+-
+-    // 超时 \ 同步处理
+-    QEventLoop loop;
+-    QTimer timer;
+-    connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
+-    connect(&timer, &QTimer::timeout, &timer, &QTimer::stop);
+-    connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
+-    timer.start(3000);
+-    loop.exec();
+-
+-    if(!timer.isActive())
+-    {
+-        reply->abort();
+-        return;
+-    }
+-    timer.stop();
+-
+-    // 生成二维码
+-    if(reply->error() != QNetworkReply::NoError)
+-    {
+-        qDebug() << "info: [EduPlatformInterface][GetLoginQR]: Network error!";
+-        qrstatus = false;
+-        qrcode = QPixmap(":/img/plugins/userinfo_intel/qring.png");
+-        if (!m_qrTimeout->isActive()) {
+-            m_qrTimeout->start(5000);
+-        }
+-        return;
+-    } else {
+-        qrstatus = true;
+-        QByteArray bytes = reply->readAll();
+-        hideQRPromptMsg();
+-        qrcode.loadFromData(bytes);
+-        reply->deleteLater();
+-    }
+-}
+-QPixmap PhoneAuthIntelDialog::beautifyQRCode(QPixmap &pixImg)
+-{
+-    // 去除白边
+-    QImage img = pixImg.toImage();
+-    int rect_x, rect_y, rect_width, rect_height;
+-    for(int i = 0;i < img.size().width();i++)
+-    {
+-        bool isEnd = false;
+-        for(int j = 0;j < img.size().height();j++)
+-        {
+-            if(img.pixel(i, j) != qRgb(255, 255, 255))
+-            {
+-                rect_x = i - 1;
+-                rect_y = j - 1;
+-                rect_width = img.size().width() - 2 * rect_x;
+-                rect_height = img.size().height() - 2 * rect_y;
+-                isEnd = true;
+-                break;
+-            }
+-        }
+-        if(isEnd) break;
+-    }
+-    QPixmap dealImg = QPixmap::fromImage(img.copy(rect_x, rect_y, rect_width, rect_height)).scaledToWidth(150);
+-    img = dealImg.toImage();
+-
+-    dealImg = QPixmap::fromImage(img);
+-    return dealImg;
+-}
+-void PhoneAuthIntelDialog::QRStatusChangedSlots(QString name, QString passwd, int status){
+-    if (status == 4) {
+-       if (name == m_username) {
+-           emit confirmSignal();
+-       } else {
+-           QPalette pa;
+-           pa.setColor(QPalette::WindowText,Qt::red);
+-           m_pQRPromptMessage->setPalette(pa);
+-           m_pQRPromptMessage->setText(tr("Please use the correct wechat scan code"));
+-           showQRPromptMsg();
+-           QPixmap qrcode;
+-           getQRCodeFromURL(qrcode);
+-           qrcode = beautifyQRCode(qrcode);
+-           m_qr->setPixmap(qrcode);
+-       }
+-    }
+-    if (status == 5) {
+-
+-        QPixmap qrcode;
+-        getQRCodeFromURL(qrcode);
+-        qrcode = beautifyQRCode(qrcode);
+-        m_qr->setPixmap(qrcode);
+-    }
+-    if (status == 6) {
+-        QPalette pa;
+-        pa.setColor(QPalette::WindowText,Qt::red);
+-        m_pQRPromptMessage->setPalette(pa);
+-        m_pQRPromptMessage->setText(tr("Network connection failure, please check"));
+-        showQRPromptMsg();
+-        QPixmap qrcode;
+-        getQRCodeFromURL(qrcode);
+-        qrcode = beautifyQRCode(qrcode);
+-        m_qr->setPixmap(qrcode);
+-    }
+-}
+-void PhoneAuthIntelDialog::setQSS(){
+-    QFile qss(":/phoneauthinteldialog.qss");
+-    if(qss.open(QFile::ReadOnly))
+-    {
+-        qDebug("open success");
+-        QString style = QLatin1String(qss.readAll());
+-        this->setStyleSheet(style);
+-        qss.close();
+-    }
+-    else
+-       qDebug("Open failed");
+-}
+diff --git a/plugins/account/userinfo_intel/phoneauthinteldialog.h b/plugins/account/userinfo_intel/phoneauthinteldialog.h
+deleted file mode 100644
+index 558235d..0000000
+--- a/plugins/account/userinfo_intel/phoneauthinteldialog.h
++++ /dev/null
+@@ -1,80 +0,0 @@
+-#ifndef PHONEAUTHINTELDIALOG_H
+-#define PHONEAUTHINTELDIALOG_H
+-
+-#include <QWidget>
+-#include <QTimerEvent>
+-#include <QTimer>
+-#include <QDBusInterface>
+-#include <QDBusReply>
+-#include <QLabel>
+-#include <QRegExpValidator>
+-#include <QEventLoop>
+-#include <QGSettings/QGSettings>
+-#include <QTimer>
+-
+-class QAction;
+-class QLineEdit;
+-class QPushButton;
+-class QStackedWidget;
+-
+-class PhoneAuthIntelDialog : public QWidget
+-{
+-    Q_OBJECT
+-public:
+-    explicit PhoneAuthIntelDialog(QString username,QWidget *parent = nullptr);
+-    ~PhoneAuthIntelDialog();
+-    void initUI();
+-    void setQSS();
+-    void hidePromptMsg();
+-    void showPromptMsg();
+-    void hideQRPromptMsg();
+-    void showQRPromptMsg();
+-public slots:
+-    void QRStatusChangedSlots(QString name,QString passwd,int status);
+-    void themeChanged(const quint32 currentTheme);
+-    void getCodeChanged();
+-
+-Q_SIGNALS:
+-    void returnSignal();
+-    void confirmSignal();
+-    void getCodeChange();
+-private:
+-    int daojishi;
+-    QTimer *m_qrTimeout;
+-    QString m_username;
+-    QLabel *m_pPromptMessage;
+-    QLabel *m_pQRPromptMessage;
+-    QLabel *m_qr;
+-    QStackedWidget *stackWidget;
+-
+-    QAction *phonePicture;
+-    QAction *smsPicture;
+-
+-    QPushButton * wechatAuthBtn;
+-    QPushButton * phoneAuthBtn;
+-    QLineEdit *phoneNumLine;
+-    QLineEdit *verifyCodeLine;
+-    QPushButton * getVerifyCodeBtn;
+-
+-    QDBusInterface *m_interface1;
+-    QDBusInterface *m_interface2;
+-    QDBusInterface *m_interface3;
+-    QDBusInterface *m_interface4;
+-
+-    QString m_phone;
+-
+-    QGSettings *m_wifi;
+-    QPushButton *returnButton;
+-    QPushButton *confirmButton;
+-
+-    void getQRCodeFromURL(QPixmap &qrcode);
+-    QPixmap beautifyQRCode(QPixmap &);
+-
+-    bool phonestatus;
+-    bool codestatus;
+-    bool qrstatus = false;
+-    bool is_phoneVerifyChecked;
+-    bool is_nightTheme;
+-};
+-
+-#endif // PHONEAUTHINTELDIALOG_H
+diff --git a/plugins/account/userinfo_intel/phoneauthinteldialog.qss b/plugins/account/userinfo_intel/phoneauthinteldialog.qss
+deleted file mode 100644
+index 81f331f..0000000
+--- a/plugins/account/userinfo_intel/phoneauthinteldialog.qss
++++ /dev/null
+@@ -1,33 +0,0 @@
+-QWidget#codeWidget,QWidget#phoneWidget{
+-    width: 304px;
+-    height: 56px;
+-    background: rgba(0, 0, 0, 0.05);
+-    border-radius: 16px;
+-}
+-
+-QPushButton#getVerifyCodeBtn{
+-    background: rgba(0, 0, 0, 0);
+-    font-size: 16px;
+-    font-family: NotoSansCJKsc-Regular, NotoSansCJKsc;
+-    font-weight: 400;
+-    line-height: 24px;
+-}
+-
+-.PhoneLineEdit{
+-    background: rgba(0, 0, 0, 0);
+-    border: 0px;
+-}
+-
+-.phoneBT{
+-    width: 144px;
+-    height: 48px;
+-    border-radius: 8px;
+-    border: 0px solid #DDDDDD;
+-}
+-.phoneBT:hover{
+-    width: 144px;
+-    height: 48px;
+-    background: #2FB3E8;
+-    border-radius: 8px;
+-}
+-
+diff --git a/plugins/account/userinfo_intel/picturetowhite.cpp b/plugins/account/userinfo_intel/picturetowhite.cpp
+deleted file mode 100644
+index 1e304ce..0000000
+--- a/plugins/account/userinfo_intel/picturetowhite.cpp
++++ /dev/null
+@@ -1,74 +0,0 @@
+-/*
+-* Copyright (C) 2020 Tianjin KYLIN Information Technology 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, 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 <http://www.gnu.org/licenses/&gt;.
+-*
+-*/
+-#include "picturetowhite.h"
+-
+-PictureToWhite::PictureToWhite(QObject *parent) : QObject(parent)
+-{
+-    initGsettingValue();
+-}
+-
+-void PictureToWhite::initGsettingValue()
+-{
+-    const QByteArray id(ORG_UKUI_STYLE);
+-    QStringList stylelist;
+-    stylelist << STYLE_NAME_KEY_DARK << STYLE_NAME_KEY_LIGHT << STYLE_NAME_KEY_DEFAULT;
+-    if (QGSettings::isSchemaInstalled(id)) {
+-        m_pgsettings = new QGSettings(id);
+-        if (stylelist.contains(m_pgsettings->get(STYLE_NAME).toString()) && m_pgsettings->get(STYLE_NAME).toString() == STYLE_NAME_KEY_LIGHT)
+-            tray_icon_color = TRAY_ICON_COLOR_LOGHT;
+-        else
+-            tray_icon_color = TRAY_ICON_COLOR_DRAK;
+-    }
+-    connect(m_pgsettings, &QGSettings::changed, this, [=] (const QString &key) {
+-        if (key==STYLE_NAME) {
+-            if (stylelist.contains(m_pgsettings->get(STYLE_NAME).toString()) && m_pgsettings->get(STYLE_NAME).toString() == STYLE_NAME_KEY_LIGHT)
+-                tray_icon_color = TRAY_ICON_COLOR_LOGHT;
+-            else
+-                tray_icon_color = TRAY_ICON_COLOR_DRAK;
+-
+-        }
+-    });
+-}
+-
+-QPixmap PictureToWhite::drawSymbolicColoredPixmap(const QPixmap &source)
+-{
+-    QColor gray(128,128,128);
+-    QColor standard (31,32,34);
+-    QImage img = source.toImage();
+-    qDebug() << "tray_icon_color-->" << tray_icon_color;
+-    for (int x = 0; x < img.width(); x++) {
+-        for (int y = 0; y < img.height(); y++) {
+-            auto color = img.pixelColor(x, y);
+-            if (color.alpha() > 0) {
+-                if (qAbs(color.red()-gray.red()) < 255 && qAbs(color.green()-gray.green()) < 255 && qAbs(color.blue()-gray.blue()) < 255) {
+-                    color.setRed(tray_icon_color);
+-                    color.setGreen(tray_icon_color);
+-                    color.setBlue(tray_icon_color);
+-                    img.setPixelColor(x, y, color);
+-                } else if (qAbs(color.red()-standard.red()) < 255 && qAbs(color.green()-standard.green()) < 255 && qAbs(color.blue()-standard.blue()) < 255) {
+-                    color.setRed(tray_icon_color);
+-                    color.setGreen(tray_icon_color);
+-                    color.setBlue(tray_icon_color);
+-                    img.setPixelColor(x, y, color);
+-                } else
+-                    img.setPixelColor(x, y, color);
+-            }
+-        }
+-    }
+-    return QPixmap::fromImage(img);
+-}
+diff --git a/plugins/account/userinfo_intel/picturetowhite.h b/plugins/account/userinfo_intel/picturetowhite.h
+deleted file mode 100644
+index 24c1e14..0000000
+--- a/plugins/account/userinfo_intel/picturetowhite.h
++++ /dev/null
+@@ -1,52 +0,0 @@
+-/*
+-* Copyright (C) 2020 Tianjin KYLIN Information Technology 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, 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 <http://www.gnu.org/licenses/&gt;.
+-*
+-*/
+-#ifndef PICTURETOWHITE_H
+-#define PICTURETOWHITE_H
+-
+-#include <QObject>
+-#include <QGSettings/QGSettings>
+-#include <QString>
+-#include <QVariant>
+-#include <QPixmap>
+-#include <QDebug>
+-
+-#define ORG_UKUI_STYLE            "org.ukui.style"
+-#define STYLE_NAME                "styleName"
+-#define STYLE_NAME_KEY_DARK       "ukui-dark"
+-#define STYLE_NAME_KEY_DEFAULT    "ukui-default"
+-//#define STYLE_NAME_KEY_BLACK       "ukui-black"
+-#define STYLE_NAME_KEY_LIGHT       "ukui-light"
+-#define STYLE_NAME_KEY_WHITE       "ukui-white"
+-#define TRAY_ICON_COLOR_LOGHT      0
+-#define TRAY_ICON_COLOR_DRAK       255
+-
+-class PictureToWhite : public QObject
+-{
+-    Q_OBJECT
+-public:
+-    explicit PictureToWhite(QObject *parent = nullptr);
+-    void initGsettingValue();
+-    QPixmap drawSymbolicColoredPixmap(const QPixmap &source);
+-
+-public:
+-    QGSettings  *m_pgsettings;
+-    int         tray_icon_color;
+-
+-};
+-
+-#endif // PICTURETOWHITE_H
+diff --git a/plugins/account/userinfo_intel/qtdbus/systemdbusdispatcher.cpp b/plugins/account/userinfo_intel/qtdbus/systemdbusdispatcher.cpp
+deleted file mode 100644
+index 725dfe6..0000000
+--- a/plugins/account/userinfo_intel/qtdbus/systemdbusdispatcher.cpp
++++ /dev/null
+@@ -1,68 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "systemdbusdispatcher.h"
+-
+-#include <QDebug>
+-
+-SystemDbusDispatcher::SystemDbusDispatcher(QObject *parent) :
+-    QObject(parent)
+-{
+-    systemiface = new QDBusInterface("org.freedesktop.Accounts",
+-                                     "/org/freedesktop/Accounts",
+-                                     "org.freedesktop.Accounts",
+-                                     QDBusConnection::systemBus());
+-    connect(systemiface, SIGNAL(UserAdded(QDBusObjectPath)), this, SLOT(create_user_success(QDBusObjectPath)));
+-    connect(systemiface, SIGNAL(UserDeleted(QDBusObjectPath)), this, SLOT(delete_user_success(QDBusObjectPath)));
+-}
+-
+-SystemDbusDispatcher::~SystemDbusDispatcher()
+-{
+-    delete systemiface;
+-    systemiface = NULL;
+-}
+-
+-QStringList SystemDbusDispatcher::list_cached_users(){
+-    QStringList users;
+-    QDBusReply<QList<QDBusObjectPath> > reply = systemiface->call("ListCachedUsers");
+-    if (reply.isValid()){
+-        for (QDBusObjectPath op : reply.value())
+-            users << op.path();
+-    }
+-    return users;
+-}
+-
+-void SystemDbusDispatcher::create_user(QString name, QString fullname, int accounttype){
+-    QDBusReply<QDBusObjectPath> repley = systemiface->call("CreateUser", name, fullname, accounttype);
+-    if (!repley.isValid())
+-        qDebug() << "Create User Error" << repley.error().message();
+-//        QMessageBox::information(0, "Create User Error", repley.error().message());
+-}
+-
+-void SystemDbusDispatcher::delete_user(qint64 uid, bool removefile){
+-    systemiface->call("DeleteUser", uid, removefile);
+-}
+-
+-void SystemDbusDispatcher::create_user_success(QDBusObjectPath objpath){
+-    emit createuserdone(objpath.path());
+-}
+-
+-void SystemDbusDispatcher::delete_user_success(QDBusObjectPath objpath){
+-    emit deleteuserdone(objpath.path());
+-}
+diff --git a/plugins/account/userinfo_intel/qtdbus/systemdbusdispatcher.h b/plugins/account/userinfo_intel/qtdbus/systemdbusdispatcher.h
+deleted file mode 100644
+index c6ffd90..0000000
+--- a/plugins/account/userinfo_intel/qtdbus/systemdbusdispatcher.h
++++ /dev/null
+@@ -1,56 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef SYSTEMDBUSDISPATCHER_H
+-#define SYSTEMDBUSDISPATCHER_H
+-
+-#include <QObject>
+-#include <QDBusInterface>
+-#include <QDBusConnection>
+-#include <QDBusReply>
+-
+-#include<QMessageBox>
+-
+-class SystemDbusDispatcher : public QObject
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit SystemDbusDispatcher(QObject * parent = 0);
+-    ~SystemDbusDispatcher();
+-
+-    QStringList list_cached_users();
+-
+-    void create_user(QString name, QString fullname, int accounttype);
+-    void delete_user(qint64 uid, bool removefile);
+-
+-private:
+-    QDBusInterface * systemiface;
+-
+-private slots:
+-    void create_user_success(QDBusObjectPath objpath);
+-    void delete_user_success(QDBusObjectPath objpath);
+-
+-signals:
+-    void createuserdone(QString path);
+-    void deleteuserdone(QString path);
+-
+-};
+-
+-#endif // SYSTEMDBUSDISPATCHER_H
+diff --git a/plugins/account/userinfo_intel/qtdbus/userdispatcher.cpp b/plugins/account/userinfo_intel/qtdbus/userdispatcher.cpp
+deleted file mode 100644
+index 201db29..0000000
+--- a/plugins/account/userinfo_intel/qtdbus/userdispatcher.cpp
++++ /dev/null
+@@ -1,116 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "userdispatcher.h"
+-
+-#include <QDebug>
+-
+-UserDispatcher::UserDispatcher(QString objpath, QObject *parent) :
+-    QObject(parent)
+-{
+-    this->setParent(parent);
+-    useriface = new QDBusInterface("org.freedesktop.Accounts",
+-                                     objpath,
+-                                     "org.freedesktop.Accounts.User",
+-                                     QDBusConnection::systemBus());
+-    pUserInfo = (UserInfo *)QObject::parent();
+-
+-
+-    userPropert = new QDBusInterface("org.freedesktop.Accounts",
+-                                     objpath,
+-                                     "org.freedesktop.DBus.Properties",
+-                                     QDBusConnection::systemBus());
+-}
+-
+-UserDispatcher::~UserDispatcher()
+-{
+-    delete useriface;
+-    useriface = NULL;
+-}
+-
+-/*来自gtk控制面板的加密代码*/
+-QString UserDispatcher::make_crypted (const gchar *plain){
+-    GString *salt;
+-    gchar *result;
+-    GRand *rand;
+-    gint i;
+-
+-    rand = g_rand_new ();
+-    salt = g_string_sized_new (21);
+-
+-    gchar salt_char[] = "ABCDEFGHIJKLMNOPQRSTUVXYZ"
+-                   "abcdefghijklmnopqrstuvxyz"
+-                   "./0123456789";
+-
+-//    /* SHA 256 */
+-    g_string_append (salt, "$6$");
+-    for (i = 0; i < 16; i++) {
+-        g_string_append_c (salt, salt_char[g_rand_int_range(rand, 0, G_N_ELEMENTS (salt_char) )]);
+-    }
+-    g_string_append_c (salt, '$');
+-
+-    result = g_strdup ((const gchar *)crypt(plain, salt->str)); //运行后找不到crypt undefined symbol: crypt
+-
+-    g_string_free (salt, TRUE);
+-    g_rand_free (rand);
+-
+-    return QString(result);
+-
+-}
+-
+-QString UserDispatcher::change_user_pwd(QString pwd, QString hint){
+-       QByteArray ba = pwd.toLatin1();
+-       QString pwdencryption = make_crypted(ba.data());
+-
+-    QDBusReply<QString> reply = useriface->call("SetPassword", pwdencryption, hint);
+-//    if (reply.isValid())
+-//        qDebug() << reply.value();
+-//    else
+-//        qDebug() << reply.error().message();
+-    return "";
+-}
+-
+-void UserDispatcher::change_user_type(int atype){
+-    useriface->call("SetAccountType", QVariant(atype));
+-}
+-
+-void UserDispatcher::change_user_face(QString facefile){
+-    useriface->call("SetIconFile", QVariant(facefile));
+-}
+-
+-void UserDispatcher::change_user_autologin(QString username){
+-    QDBusInterface * tmpSysinterface = new QDBusInterface("com.control.center.qt.systemdbus",
+-                                                          "/",
+-                                                          "com.control.center.interface",
+-                                                          QDBusConnection::systemBus());
+-
+-    if (!tmpSysinterface->isValid()){
+-        qCritical() << "Create Client Interface Failed When : " << QDBusConnection::systemBus().lastError();
+-        return;
+-    }
+-    tmpSysinterface->call("setAutoLoginStatus", username);
+-
+-    delete tmpSysinterface;
+-}
+-
+-bool UserDispatcher::get_autoLogin_status() {
+-    QDBusReply<QVariant> reply = userPropert->call("Get", "org.freedesktop.Accounts.User", "AutomaticLogin");
+-//    qDebug()<<"the status is------>"<<reply.value().toBool()<<endl;
+-    return reply.value().toBool();
+-}
+diff --git a/plugins/account/userinfo_intel/qtdbus/userdispatcher.h b/plugins/account/userinfo_intel/qtdbus/userdispatcher.h
+deleted file mode 100644
+index 4c4cb8e..0000000
+--- a/plugins/account/userinfo_intel/qtdbus/userdispatcher.h
++++ /dev/null
+@@ -1,70 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef USERDISPATCHER_H
+-#define USERDISPATCHER_H
+-
+-#include <QObject>
+-#include <QDBusInterface>
+-#include <QDBusConnection>
+-#include <QDBusReply>
+-
+-#include <unistd.h>
+-
+-/* qt会将glib里的signals成员识别为宏,所以取消该宏
+- * 后面如果用到signals时,使用Q_SIGNALS代替即可
+- **/
+-#ifdef signals
+-#undef signals
+-#endif
+-
+-extern "C" {
+-#include <glib.h>
+-#include <glib/gstdio.h>
+-#include <gio/gio.h>
+-}
+-
+-class UserInfo;
+-
+-class UserDispatcher : public QObject
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit UserDispatcher(QString objpath, QObject *parent = 0);
+-    ~UserDispatcher();
+-
+-    QString change_user_pwd(QString pwd, QString hint);
+-    void change_user_type(int atype);
+-    void change_user_face(QString facefile);
+-    void change_user_autologin(QString username);
+-    bool get_autoLogin_status();
+-
+-private:
+-    QDBusInterface * useriface;
+-    QDBusInterface * userPropert;
+-
+-    UserInfo * pUserInfo;
+-
+-    /***加密,来自gtk控制面板***/
+-    QString make_crypted(const gchar * plain);
+-    /*****/
+-};
+-
+-#endif // USERDISPATCHER_H
+diff --git a/plugins/account/userinfo_intel/res/img.qrc b/plugins/account/userinfo_intel/res/img.qrc
+deleted file mode 100644
+index 4d8ed66..0000000
+--- a/plugins/account/userinfo_intel/res/img.qrc
++++ /dev/null
+@@ -1,3 +0,0 @@
+-<RCC>
+-    <qresource prefix="/"/>
+-</RCC>
+diff --git a/plugins/account/userinfo_intel/userinfo_intel.cpp b/plugins/account/userinfo_intel/userinfo_intel.cpp
+deleted file mode 100644
+index 08cf360..0000000
+--- a/plugins/account/userinfo_intel/userinfo_intel.cpp
++++ /dev/null
+@@ -1,1358 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "userinfo_intel.h"
+-#include "ui_userinfo_intel.h"
+-#include "changepininteldialog.h"
+-#include "changepwdinteldialog.h"
+-
+-#include <QDBusInterface>
+-#include <QDBusConnection>
+-#include <QDBusError>
+-#include <QDBusReply>
+-
+-#include <QDebug>
+-#include <QDir>
+-#include <QFrame>
+-#include <QTextCodec>
+-#include <QByteArray>
+-
+-#include "switchbutton.h"
+-#include "imageutil.h"
+-#include "elipsemaskwidget.h"
+-#include "passwdcheckutil.h"
+-
+-
+-/* qt会将glib里的signals成员识别为宏,所以取消该宏
+- * 后面如果用到signals时,使用Q_SIGNALS代替即可
+- **/
+-#ifdef signals
+-#undef signals
+-#endif
+-
+-extern "C" {
+-#include <glib.h>
+-#include <gio/gio.h>
+-}
+-
+-
+-#define DEFAULTFACE "/usr/share/ukui/faces/default.png"
+-#define ITEMHEIGH 72
+-
+-UserInfoIntel::UserInfoIntel() : mFirstLoad(true)
+-{
+-    pluginName = tr("User Info Intel");
+-    pluginType = ACCOUNT;
+-}
+-
+-UserInfoIntel::~UserInfoIntel()
+-{
+-    if (!mFirstLoad) {
+-        delete ui;
+-        delete autoSettings;
+-    }
+-}
+-
+-QString UserInfoIntel::plugini18nName(){
+-    return pluginName;
+-}
+-
+-int UserInfoIntel::pluginTypes(){
+-    return pluginType;
+-}
+-
+-QWidget *UserInfoIntel::pluginUi(){
+-    if (mFirstLoad) {
+-        mFirstLoad = false;
+-        ui = new Ui::UserInfoIntel;
+-        pluginWidget = new QWidget;
+-        pluginWidget->setAttribute(Qt::WA_StyledBackground,true);
+-        pluginWidget->setAttribute(Qt::WA_DeleteOnClose);
+-        ui->setupUi(pluginWidget);
+-        ui->titleLabel->setStyleSheet("QLabel{font-size: 14px; color: palette(windowText);}");
+-        //构建System dbus调度对象
+-        sysdispatcher = new SystemDbusDispatcher;
+-
+-        ui->changeGroupBtn->hide();
+-    //    ui->changeValidBtn->hide();
+-
+-        //获取系统全部用户信息,用户Uid大于等于1000的
+-        _acquireAllUsersInfo();
+-
+-        initSearchText();
+-        readCurrentPwdConf();
+-        initComponent();
+-        initAllUserStatus();
+-        //设置界面用户信息
+-        _refreshUserInfoUI();
+-
+-    //    pwdSignalMapper = new QSignalMapper(this);
+-    //    faceSignalMapper = new QSignalMapper(this);
+-    //    typeSignalMapper = new QSignalMapper(this);
+-    //    delSignalMapper = new QSignalMapper(this);
+-
+-    //    faceSize = QSize(64, 64);
+-    //    itemSize = QSize(230, 106); //?需要比btnsize大多少?否则显示不全
+-    //    btnSize = QSize(222, 92);
+-    //      showCreateUserDialog();
+-
+-    //    get_all_users();
+-    //    ui_component_init();
+-    //    ui_status_init();
+-    }
+-    return pluginWidget;
+-}
+-
+-const QString UserInfoIntel::name() const {
+-
+-    return QStringLiteral("UserinfoIntel");
+-}
+-
+-bool UserInfoIntel::isShowOnHomePage() const
+-{
+-    return UkccCommon::isTablet();
+-}
+-
+-QIcon UserInfoIntel::icon() const
+-{
+-    return QIcon::fromTheme("user-available-symbolic");
+-}
+-
+-bool UserInfoIntel::isEnable() const
+-{
+-    return UkccCommon::isTablet();
+-}
+-
+-void UserInfoIntel::initSearchText() {
+-    ui->changePhoneBtn->setIcon(QIcon(":/img/plugins/userinfo_intel/phone.svg"));
+-    //~ contents_path /UserinfoIntel/Current User
+-    ui->titleLabel->setText(tr("Current User"));
+-
+-    //~ contents_path /UserinfoIntel/Other Users
+-    ui->title2Label->setText(tr("Other Users"));
+-
+-    //~ contents_path /UserinfoIntel/Change Tel
+-    ui->changePhoneBtn->setText(tr("Change Tel"));
+-
+-    ui->changePwdBtn->setIcon(QIcon(":/img/plugins/userinfo_intel/password.svg"));
+-
+-    //~ contents_path /UserinfoIntel/Change pwd
+-    ui->changePwdBtn->setText(tr("Change pwd"));
+-
+-
+-    ui->delUserBtn->setIcon(QIcon(":/img/plugins/userinfo_intel/delete.svg"));
+-    m_pPictureToWhite = new PictureToWhite();
+-    ui->editBtn->setIcon(QIcon(m_pPictureToWhite->drawSymbolicColoredPixmap(QPixmap(":/img/plugins/userinfo_intel/settingedit.svg"))));
+-    ui->userNameLabel->setStyleSheet("background-color: transparent");
+-    const QByteArray id(ORG_UKUI_STYLE);
+-    if (QGSettings::isSchemaInstalled(id)) {
+-        m_pgsettings = new QGSettings(id);
+-        connect(m_pgsettings, &QGSettings::changed, this, [=] (const QString &key) {
+-            if (key==STYLE_NAME) {
+-                ui->editBtn->setIcon(QIcon(m_pPictureToWhite->drawSymbolicColoredPixmap(QPixmap(":/img/plugins/userinfo_intel/settingedit.svg"))));
+-            }
+-        });
+-    }
+-
+-
+-    //~ contents_path /UserinfoIntel/Delete user
+-    ui->delUserBtn->setText(tr("Delete user"));
+-
+-    //~ contents_path /UserinfoIntel/Change user name
+-    tr("Change user name");       // 用于添加搜索索引
+-
+-    ui->frame->hide();
+-    ui->frame_2->hide();
+-    ui->line_2->hide();
+-    ui->line_4->hide();
+-    ui->line->hide();
+-}
+-
+-QString UserInfoIntel::_accountTypeIntToString(int type){
+-//    qDebug()<<"allUserInfoMap.count()-------------"<<allUserInfoMap.count();
+-    QString atype;
+-    if (type == STANDARDUSER) {
+-        atype = tr("standard user"); 
+-    } else if (type == ADMINISTRATOR) {
+-        atype = tr("administrator");
+-        if (allUserInfoMap.count() != 1) {
+-            ui->line_3->hide();
+-            ui->delUserBtn->hide();
+-        } else {
+-            ui->title2Label->hide();
+-        }
+-    }
+-    else if (type == ROOT) {
+-        atype = tr("root");
+-    }
+-
+-    return atype;
+-}
+-
+-void UserInfoIntel::_acquireAllUsersInfo(){
+-    QStringList objectpaths = sysdispatcher->list_cached_users();
+-
+-    //初始化用户信息QMap
+-    allUserInfoMap.clear();
+-    //初始化管理员数目为0
+-    adminnum = 0;
+-
+-    for (QString objectpath : objectpaths){
+-        UserInfomation user;
+-        user = _acquireUserInfo(objectpath);
+-        allUserInfoMap.insert(user.username, user);
+-    }
+-
+-    if (allUserInfoMap.isEmpty()) {
+-        ui->currentUserFrame->setVisible(false);
+-    } else {
+-        ui->currentUserFrame->setVisible(true);
+-    }
+-}
+-
+-UserInfomation UserInfoIntel::_acquireUserInfo(QString objpath){
+-    UserInfomation user;
+-
+-    //默认值
+-    user.current = false;
+-    user.logined = false;
+-    user.autologin = false;
+-
+-    QDBusInterface * iproperty = new QDBusInterface("org.freedesktop.Accounts",
+-                                            objpath,
+-                                            "org.freedesktop.DBus.Properties",
+-                                            QDBusConnection::systemBus());
+-    QDBusReply<QMap<QString, QVariant> > reply = iproperty->call("GetAll", "org.freedesktop.Accounts.User");
+-    if (reply.isValid()){
+-        QMap<QString, QVariant> propertyMap;
+-        propertyMap = reply.value();
+-        user.username = propertyMap.find("UserName").value().toString();
+-        user.realname = propertyMap.find("RealName").value().toString();
+-        if (user.username == QString(g_get_user_name())){
+-            user.current = true;
+-            user.logined = true;
+-
+-            //获取当前用户免密登录属性
+-            QDBusInterface *tmpSysinterface = new QDBusInterface("com.control.center.qt.systemdbus",
+-                                             "/",
+-                                             "com.control.center.interface",
+-                                             QDBusConnection::systemBus());
+-            //获取免密登录状态
+-            QDBusReply<QString> noPwdres;
+-            noPwdres = tmpSysinterface ->call("getNoPwdLoginStatus");
+-            //const QString &tmp=noPwdres;
+-            if(!noPwdres.isValid()){
+-                qDebug()<<"获取tmpSysinterface状态不合法---->"<< noPwdres.error();
+-            }
+-            delete tmpSysinterface;
+-
+-            user.noPwdLogin = noPwdres.value().contains(user.username) ? true : false;
+-        }
+-        user.accounttype = propertyMap.find("AccountType").value().toInt();
+-        if (user.accounttype == ADMINISTRATOR)
+-            adminnum++;
+-        user.iconfile = propertyMap.find("IconFile").value().toString();
+-        user.passwdtype = propertyMap.find("PasswordMode").value().toInt();
+-        user.uid = propertyMap.find("Uid").value().toInt();
+-//        user.autologin = propertyMap.find("AutomaticLogin").value().toBool();
+-        user.autologin = this->getAutomaticLogin(user.username);
+-        user.objpath = objpath;
+-    }
+-    else
+-        qDebug() << "reply failed";
+-
+-    delete iproperty;
+-
+-    return user;
+-}
+-
+-void UserInfoIntel::readCurrentPwdConf(){
+-#ifdef ENABLEPQ
+-    int ret, status;
+-    void *auxerror;
+-    char buf[255];
+-
+-    pwdMsg = "";
+-
+-    pwdconf = pwquality_default_settings();
+-    if (pwdconf == NULL) {
+-        enablePwdQuality = false;
+-        qDebug() << "init pwquality settings failed";
+-    } else {
+-        enablePwdQuality = true;
+-    }
+-
+-    ret = pwquality_read_config(pwdconf, PWCONF, &auxerror);
+-    if (ret != 0){
+-        enablePwdQuality = false;
+-        qDebug() << "Reading pwquality configuration file failed: " << pwquality_strerror(buf, sizeof(buf), ret, auxerror);
+-    } else {
+-        enablePwdQuality = true;
+-    }
+-
+-    if (PasswdCheckUtil::getCurrentPamState()){
+-        enablePwdQuality = true;
+-    } else {
+-        enablePwdQuality = false;
+-    }
+-
+-    if (enablePwdQuality){
+-        int minLen;
+-        status = pwquality_get_int_value(pwdconf, PWQ_SETTING_MIN_LENGTH, &minLen);
+-        if (!status && minLen > 0){
+-            pwdOption.min_length = minLen;
+-            pwdMsg += QObject::tr("min length %1\n").arg(minLen);
+-
+-        } else {
+-            pwdMsg += "";
+-        }
+-
+-        int digCredit;
+-        status = pwquality_get_int_value(pwdconf, PWQ_SETTING_DIG_CREDIT, &digCredit);
+-        if (!status && digCredit > 0){
+-            pwdOption.dig_credit = digCredit;
+-            pwdMsg += QObject::tr("min digit num %1\n").arg(digCredit);
+-        } else {
+-            pwdMsg += "";
+-        }
+-
+-        int upCredit;
+-        status = pwquality_get_int_value(pwdconf, PWQ_SETTING_UP_CREDIT, &upCredit);
+-        if (!status && upCredit > 0){
+-            pwdOption.up_credit = upCredit;
+-            pwdMsg += QObject::tr("min upper num %1\n").arg(upCredit);
+-        } else {
+-            pwdMsg += "";
+-        }
+-
+-        int lowCredit;
+-        status = pwquality_get_int_value(pwdconf, PWQ_SETTING_LOW_CREDIT, &lowCredit);
+-        if (!status && lowCredit > 0){
+-            pwdOption.low_credit = lowCredit;
+-            pwdMsg += QObject::tr("min lower num %1\n").arg(lowCredit);
+-        } else {
+-            pwdMsg += "";
+-        }
+-
+-        int othCredit;
+-        status = pwquality_get_int_value(pwdconf, PWQ_SETTING_OTH_CREDIT, &othCredit);
+-        if (!status && othCredit > 0){
+-            pwdOption.oth_credit = othCredit;
+-            pwdMsg += QObject::tr("min other num %1\n").arg(othCredit);
+-        } else {
+-            pwdMsg += "";
+-        }
+-
+-
+-        int minClass;
+-        status = pwquality_get_int_value(pwdconf, PWQ_SETTING_MIN_CLASS, &minClass);
+-        if (!status && minClass > 0){
+-            pwdOption.min_class = minClass;
+-            pwdMsg += QObject::tr("min char class %1\n").arg(minClass);
+-        } else {
+-            pwdMsg += "";
+-        }
+-
+-        int maxRepeat;
+-        status = pwquality_get_int_value(pwdconf, PWQ_SETTING_MAX_REPEAT, &maxRepeat);
+-        if (!status && maxRepeat > 0){
+-            pwdOption.max_repeat = maxRepeat;
+-            pwdMsg += QObject::tr("max repeat %1\n").arg(maxRepeat);
+-        } else {
+-            pwdMsg += "";
+-        }
+-
+-        int maxClassRepeat;
+-        status = pwquality_get_int_value(pwdconf, PWQ_SETTING_MAX_CLASS_REPEAT, &maxClassRepeat);
+-        if (!status && maxClassRepeat > 0){
+-            pwdOption.max_class_repeat = maxClassRepeat;
+-            pwdMsg += QObject::tr("max class repeat %1\n").arg(maxClassRepeat);
+-        } else {
+-            pwdMsg += "";
+-        }
+-
+-        int maxSequence;
+-        status = pwquality_get_int_value(pwdconf, PWQ_SETTING_MAX_SEQUENCE, &maxSequence);
+-        if (!status && maxSequence > 0){
+-            pwdOption.max_class_repeat = maxSequence;
+-            pwdMsg += QObject::tr("max sequence %1\n").arg(maxSequence);
+-        } else {
+-            pwdMsg += "";
+-        }
+-    }
+-
+-    qDebug() << "pwquality:" << pwdOption.min_length << pwdOption.min_class << pwdOption.dig_credit << pwdOption.low_credit << pwdOption.up_credit;
+-    qDebug() << "pwquality msg:" << pwdMsg;
+-#endif
+-}
+-
+-void UserInfoIntel::initComponent(){
+-    //样式表
+-//    pluginWidget->setStyleSheet("background: #ffffff;");
+-
+-//    ui->currentUserWidget->setStyleSheet("QWidget{background: #F4F4F4; border-top-left-radius: 6px; border-top-right-radius: 6px;}");
+-//    ui->autoLoginWidget->setStyleSheet("QWidget{background: #F4F4F4; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px;}");
+-
+-//    QString btnQss = QString("QPushButton{background: #FFFFFF; border-radius: 4px;}");
+-//    ui->changePwdBtn->setStyleSheet(btnQss);
+-//    ui->changeTypeBtn->setStyleSheet(btnQss);
+-
+-//    ui->addUserWidget->setStyleSheet("QWidget{background: #F4F4F4; border-radius: 6px;}");
+-
+-//    QString filename = "/etc/lightdm/lightdm.conf";
+-//    autoSettings = new QSettings(filename, QSettings::IniFormat);
+-
+-    ui->listWidget->setStyleSheet("QListWidget::Item{background:palette(base);}");
+-
+-    addWgt = new HoverWidget("");
+-    addWgt->setObjectName("addwgt");
+-    addWgt->setMinimumSize(QSize(0, 64));
+-    addWgt->setMaximumSize(QSize(16777215, 64));
+-    addWgt->setStyleSheet("HoverWidget#addwgt{background: palette(base); border-radius: 4px;}HoverWidget:hover:!pressed#addwgt{background: #2FB3E8; border-radius: 4px;}");
+-
+-    QHBoxLayout *addLyt = new QHBoxLayout;
+-
+-    QLabel * iconLabel = new QLabel();
+-    QLabel * textLabel = new QLabel(tr("Add new user"));
+-    QPixmap pixgray = ImageUtil::loadSvg(":/img/titlebar/add.svg", "black", 12);
+-    iconLabel->setPixmap(pixgray);
+-    addLyt->addWidget(iconLabel);
+-    addLyt->addWidget(textLabel);
+-    addLyt->addStretch();
+-    addWgt->setLayout(addLyt);
+-
+-    // 悬浮改变Widget状态
+-    connect(addWgt, &HoverWidget::enterWidget, this, [=](QString mname){
+-        QPixmap pixgray = ImageUtil::loadSvg(":/img/titlebar/add.svg", "white", 12);
+-        iconLabel->setPixmap(pixgray);
+-        textLabel->setStyleSheet("color: palette(base);");
+-
+-    });
+-    // 还原状态
+-    connect(addWgt, &HoverWidget::leaveWidget, this, [=](QString mname){
+-        QPixmap pixgray = ImageUtil::loadSvg(":/img/titlebar/add.svg", "black", 12);
+-        iconLabel->setPixmap(pixgray);
+-        textLabel->setStyleSheet("color: palette(windowText);");
+-    });
+-
+-    ui->listWidget->setSpacing(0);
+-
+-    ElipseMaskWidget * mainElipseMaskWidget = new ElipseMaskWidget(ui->currentUserFaceLabel);
+-    mainElipseMaskWidget->setGeometry(0, 0, ui->currentUserFaceLabel->width(), ui->currentUserFaceLabel->height());
+-
+-    //设置添加用户的图标
+-//    ui->addBtn->setIcon(QIcon("://img/plugins/userinfo_intel/add.png"));
+-//    ui->addBtn->setIconSize(ui->addBtn->size());
+-//    ui->addBtn->setStyleSheet("QPushButton{background-color:transparent;}");
+-
+-    ui->currentUserFaceLabel->installEventFilter(this);
+-//    ui->addUserFrame->installEventFilter(this);
+-
+-    //修改当前用户绑定手机号的回调
+-    connect(ui->changePhoneBtn, &QPushButton::clicked, this, [=](bool checked){
+-        Q_UNUSED(checked)
+-        UserInfomation user = allUserInfoMap.value(g_get_user_name());
+-
+-        showChangePhoDialog(user.username);
+-    });
+-
+-    //修改当前用户密码的回调
+-    connect(ui->changePwdBtn, &QPushButton::clicked, this, [=](bool checked){
+-        Q_UNUSED(checked)
+-        UserInfomation user = allUserInfoMap.value(g_get_user_name());
+-        showChangePwdDialog(user.username);
+-    });
+-    //删除当前用户
+-    connect(ui->delUserBtn, &QPushButton::clicked, this, [=](bool checked){
+-
+-        UserInfomation user = allUserInfoMap.value(g_get_user_name());
+-        DelUserIntelDialog * dialog = new DelUserIntelDialog;
+-        dialog->setAttribute(Qt::WA_DeleteOnClose);
+-        dialog->setFace(user.iconfile);
+-        dialog->setUsername(user.username,user.realname);
+-
+-        connect(dialog, &DelUserIntelDialog::removefile_send, this, [=](bool removeFile, QString userName){
+-            qDebug()<<userName;
+-            QDBusInterface * m_interface = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                              "/cn/kylinos/SSOBackend",
+-                                                              "cn.kylinos.SSOBackend.accounts",
+-                                                              QDBusConnection::systemBus());
+-            QDBusReply<int> result = m_interface->call("DeleteAccount",user.username);
+-            isDelCurrentUser = true;
+-            if (result == 0) {
+-                delete m_interface;
+-                QDBusInterface *m_session = new QDBusInterface("org.freedesktop.login1",
+-                                                                "/org/freedesktop/login1/session/auto",
+-                                                                "org.freedesktop.login1.Session",
+-                                                                QDBusConnection::systemBus(),this);
+-                m_session->call("Terminate");
+-            } else {
+-                qDebug() << "--------error:" << result.error();
+-            }
+-        });
+-        dialog->exec();
+-        return;
+-    });
+-
+-//    //修改当前用户类型的回调
+-//    connect(ui->changeTypeBtn, &QPushButton::clicked, this, [=](bool checked){
+-//        Q_UNUSED(checked)
+-//        UserInfomation user = allUserInfoMap.value(g_get_user_name());
+-
+-//        showChangeTypeDialog(user.username);
+-//    });
+-
+-//    connect(ui->changeValidBtn, &QPushButton::clicked, this, [=](bool checked){
+-//        Q_UNUSED(checked)
+-//        UserInfomation user = allUserInfoMap.value(g_get_user_name());
+-
+-//        showChangeValidDialog(user.username);
+-
+-//    });
+-
+-    connect(ui->changeGroupBtn, &QPushButton::clicked, this, [=](bool checked){
+-        Q_UNUSED(checked)
+-        showChangeGroupDialog();
+-    });
+-
+-
+-    //修改当前用户自动登录
+-//    connect(autoLoginSwitchBtn, &SwitchButton::checkedChanged, [=](bool checked){
+-//        UserInfomation user = allUserInfoMap.value(g_get_user_name());
+-
+-
+-//        UserDispatcher * userdispatcher  = new UserDispatcher(user.objpath);
+-
+-
+-//        bool status = userdispatcher->get_autoLogin_status();
+-
+-//        bool status = this->getAutomaticLogin(user.username);
+-
+-
+-//        if ((checked != status)) {
+-//            if (checked) {
+-//                userdispatcher->change_user_autologin(user.username);
+-//            } else {
+-//                userdispatcher->change_user_autologin("");
+-//            }
+-//        }
+-
+-//        bool lstStatus = userdispatcher->get_autoLogin_status();
+-
+-//        bool lstStatus = this->getAutomaticLogin(user.username);
+-//        autoLoginSwitchBtn->setChecked(lstStatus);
+-//    });
+-
+-    //成功删除用户的回调
+-    connect(sysdispatcher, &SystemDbusDispatcher::deleteuserdone, this, [=](QString objPath){
+-        deleteUserDone(objPath);
+-    });
+-
+-    //新建用户的回调
+-//    connect(ui->addBtn, &QPushButton::clicked, this, [=](bool checked){
+-//        Q_UNUSED(checked)
+-//        showCreateUserDialog();
+-//    });
+-
+-    //成功新建用户的回调
+-    connect(sysdispatcher, &SystemDbusDispatcher::createuserdone, this, [=](QString objPath){
+-        createUserDone(objPath);
+-    });
+-}
+-
+-void UserInfoIntel::_resetListWidgetHeigh(){
+-    //设置其他用户控件的总高度
+-    if (!isDelCurrentUser) {
+-        ui->listWidget->setFixedHeight((allUserInfoMap.count() - 1) * (ITEMHEIGH + 2));
+-    }
+-  //  ui->listWidget->setFixedHeight((20) * (ITEMHEIGH + 2));
+-}
+-
+-void UserInfoIntel::initAllUserStatus(){
+-    _resetListWidgetHeigh();
+-
+-    //每次初始化用户状态清空其他用户QMap
+-    otherUserItemMap.clear();
+-
+-    QMap<QString, UserInfomation>::iterator it = allUserInfoMap.begin();
+-    for (; it != allUserInfoMap.end(); it++){
+-        UserInfomation user = it.value();
+-
+-        //当前用户
+-        if (user.username == QString(g_get_user_name())){
+-
+-        } else { //其他用户
+-            _buildWidgetForItem(user);
+-
+-        }
+-    }
+-}
+-
+-QPixmap UserInfoIntel::PixmapToRound(const QString &src, int radius)
+-{
+-    if (src == "") {
+-        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 UserInfoIntel::_refreshUserInfoUI(){
+-    QMap<QString, UserInfomation>::iterator it = allUserInfoMap.begin();
+-    for (; it != allUserInfoMap.end(); it++){
+-        UserInfomation user = it.value();
+-
+-        //用户头像为.face且.face文件不存在
+-        char * iconpath = user.iconfile.toLatin1().data();
+-        if (!g_file_test(iconpath, G_FILE_TEST_EXISTS)){
+-            user.iconfile = DEFAULTFACE;
+-            //更新用户数据
+-            allUserInfoMap.find(it.key()).value().iconfile = DEFAULTFACE;
+-        }
+-
+-        //当前用户
+-        if (user.username == QString(g_get_user_name())){
+-            //设置用户头像
+-            QPixmap iconcop = QPixmap(user.iconfile);
+-            if (iconcop.width() > iconcop.height()) {
+-                QPixmap iconPixmap = iconcop.copy((iconcop.width() - iconcop.height())/2, 0, iconcop.height(), iconcop.height());
+-                // 根据label高度等比例缩放图片
+-                ui->currentUserFaceLabel->setPixmap(iconPixmap.scaledToHeight(ui->currentUserFaceLabel->height()));
+-
+-                setChangeFaceShadow();
+-            } else {
+-                QPixmap iconPixmap = iconcop.copy(0, (iconcop.height() - iconcop.width())/2, iconcop.width(), iconcop.width());
+-                // 根据label宽度等比例缩放图片
+-                ui->currentUserFaceLabel->setPixmap(iconPixmap.scaledToWidth(ui->currentUserFaceLabel->width()));
+-
+-                setChangeFaceShadow();
+-            }
+-
+-            current_user = user;
+-
+-            QDir historyDir;
+-            historyDir.setPath(QString("/home/%1").arg(user.username));
+-            if(!historyDir.exists(QString("/home/%1/.historyfaces").arg(user.username))) {
+-                historyDir.mkpath(QString("/home/%1/.historyfaces").arg(user.username));
+-            } else {
+-//                qDebug()<<QString("/home/%1/.historyfaces/").arg(user.username)<<" Exist!";
+-            }
+-
+-            //设置用户名
+-
+-            ui->userNameLabel->setStyleSheet("QLineEdit{color: palette(windowText);}");
+-            QFontMetrics fontMetrics(ui->userNameLabel->font());
+-            int fontSize = fontMetrics.width(user.realname);
+-            m_userName = user.realname;
+-            if (fontSize > 180) {
+-                QString str = fontMetrics.elidedText(user.realname, Qt::ElideRight, 180);
+-                ui->userNameLabel->setFixedWidth(180);
+-                ui->userNameLabel->blockSignals(true);
+-                ui->userNameLabel->setText(str);
+-                ui->userNameLabel->blockSignals(false);
+-                ui->userNameLabel->setToolTip(user.realname);
+-            } else {
+-                ui->userNameLabel->setFixedWidth(fontSize+5);
+-                ui->userNameLabel->blockSignals(true);
+-                ui->userNameLabel->setText(user.realname);
+-                ui->userNameLabel->blockSignals(false);
+-            }
+-            ui->userNameLabel->setCursorPosition(0);
+-            ui->userNameLabel->setReadOnly(true);
+-            ui->userNameLabel->installEventFilter(this);
+-
+-            oldName = ui->userNameLabel->text();
+-            ui->userNameLabel->setMaxLength(32);
+-            connect(ui->userNameLabel,&QLineEdit::textChanged, [=](QString text){
+-                QFontMetrics fontMetrics(ui->userNameLabel->font());
+-                int fontSize = fontMetrics.width(text);
+-                if (fontSize > 180) {
+-                    ui->userNameLabel->setFixedWidth(180);
+-                } else {
+-                    ui->userNameLabel->setFixedWidth(fontSize+5);
+-                }
+-                m_userName = text;
+-                qDebug()<<"*********************SET NAME = "<<text;
+-            });
+-            connect(ui->editBtn,&QPushButton::clicked,[=](){
+-                UserInfomation curruser = allUserInfoMap.value(g_get_user_name());
+-                ui->userNameLabel->blockSignals(true);
+-                ui->userNameLabel->setText(curruser.realname);
+-                ui->userNameLabel->blockSignals(false);
+-                ui->userNameLabel->setReadOnly(false);
+-                ui->userNameLabel->selectAll();
+-                ui->userNameLabel->setFocus();
+-                ui->editBtn->hide();
+-            });
+-            my_name = user.username;
+-            //设置用户类型
+-            ui->userTypeLabel->setText(_accountTypeIntToString(user.accounttype));
+-            //设置登录状态
+-           // autoLoginSwitchBtn->setChecked(user.autologin);
+-            //设置免密登录状态
+-           // nopwdSwitchBtn->setChecked(user.noPwdLogin);
+-
+-        } else { //其他用户
+-            QListWidgetItem * item = otherUserItemMap.value(user.objpath); //是否需要判断??
+-
+-            QWidget * widget = ui->listWidget->itemWidget(item);
+-
+-            QLabel * faceLabel = widget->findChild<QLabel *>("faceLabel");
+-//            faceLabel->setIcon(QIcon(user.iconfile));
+-//            _buildWidgetForItem(user);
+-            if (faceLabel->layout() != NULL) {
+-                QLayoutItem* item;
+-                while ((item = faceLabel->layout()->takeAt( 0 )) != NULL )
+-                {
+-                    delete item->widget();
+-                    delete item;
+-                }
+-//                delete faceLabel->layout();
+-            }
+-            faceLabel->setScaledContents(true);
+-            faceLabel->setPixmap(PixmapToRound(user.iconfile, faceLabel->width()/2));
+-        }
+-    }
+-    QDBusInterface *m_interface1 = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                      "/cn/kylinos/SSOBackend",
+-                                                      "cn.kylinos.SSOBackend.eduplatform",
+-                                                      QDBusConnection::systemBus());
+-    if (m_interface1->isValid()) {
+-        QDBusMessage result = m_interface1->call("CheckPincodeSet",QString(g_get_user_name()));
+-        QList<QVariant> outArgs = result.arguments();
+-        delete m_interface1;
+-        int pinstatus = 0;
+-        pinstatus = outArgs.at(0).value<int>();
+-        if (pinstatus == 0) {
+-            ui->changePwdBtn->setText(tr("set pwd"));
+-        }
+-    }
+-
+-}
+-
+-void UserInfoIntel::setChangeFaceShadow()
+-{
+-    //在头像上添加更换字样及阴影
+-    QLabel *changeLabel = new QLabel(ui->currentUserFaceLabel);
+-    int changeLabelHeight = 26;
+-    changeLabel->setGeometry(0, ui->currentUserFaceLabel->height() - changeLabelHeight, ui->currentUserFaceLabel->width(), changeLabelHeight);
+-
+-    changeLabel->setStyleSheet("QLabel{color:white;font-size:12px;background-color:rgb(0,0,0,70);}");
+-    changeLabel->setText(tr("Change"));
+-    changeLabel->setAlignment(Qt::AlignCenter);
+-
+-    QLabel *eraseOutLabel = new QLabel(ui->currentUserFaceLabel);
+-    eraseOutLabel->setAttribute(Qt::WA_TranslucentBackground, true);
+-    eraseOutLabel->setGeometry(0, 0, ui->currentUserFaceLabel->width(), ui->currentUserFaceLabel->height());
+-
+-    ElipseMaskWidget *eraseOutElipseMaskWidget = new ElipseMaskWidget(eraseOutLabel);
+-    eraseOutElipseMaskWidget->setGeometry(0, 0, eraseOutLabel->width(), eraseOutLabel->height());
+-}
+-
+-void UserInfoIntel::_buildWidgetForItem(UserInfomation user){
+-    HoverWidget * baseWidget = new HoverWidget(user.username);
+-    baseWidget->setMinimumSize(0,64);
+-    baseWidget->setMaximumSize(16777215,64);
+-    baseWidget->setAttribute(Qt::WA_DeleteOnClose);
+-
+-    QHBoxLayout * baseVerLayout = new QHBoxLayout(baseWidget);
+-    baseVerLayout->setSpacing(0);
+-    baseVerLayout->setMargin(0);
+-
+-    QHBoxLayout * baseHorLayout = new QHBoxLayout();
+-    baseHorLayout->setSpacing(16);
+-    baseHorLayout->setMargin(0);
+-
+-    QFrame * widget = new QFrame(baseWidget);
+-    widget->setFrameShape(QFrame::Shape::Box);
+-    widget->setFixedHeight(64);
+-
+-    QHBoxLayout * mainHorLayout = new QHBoxLayout(widget);
+-    mainHorLayout->setSpacing(16);
+-    mainHorLayout->setContentsMargins(16, 0, 16, 0);
+-
+-    QLabel * faceLabel = new QLabel(widget);
+-    faceLabel->setObjectName("faceLabel");
+-    faceLabel->setFixedSize(40, 40);
+-
+-    QHBoxLayout * faceLabelHorLayout = new QHBoxLayout(faceLabel);
+-    faceLabelHorLayout->setSpacing(0);
+-    faceLabelHorLayout->setMargin(0);
+-    faceLabel->setLayout(faceLabelHorLayout);
+-
+-    ElipseMaskWidget * faceElipseMaskWidget = new ElipseMaskWidget(faceLabel);
+-    faceElipseMaskWidget->setGeometry(0, 0, faceLabel->width(), faceLabel->height());
+-
+-    QLabel * nameLabel = new QLabel(widget);
+-    QSizePolicy nameSizePolicy = nameLabel->sizePolicy();
+-    nameSizePolicy.setHorizontalPolicy(QSizePolicy::Fixed);
+-    nameSizePolicy.setVerticalPolicy(QSizePolicy::Fixed);
+-    nameLabel->setSizePolicy(nameSizePolicy);
+-    nameLabel->setText(user.realname);
+-
+-    QString btnQss = QString("QPushButton{background: #ffffff; border-radius: 4px;}");
+-
+-    QPushButton * typeBtn = new QPushButton(widget);
+-    typeBtn->setFixedSize(64, 64);
+-//    typeBtn->setText(tr("Change type"));
+-    typeBtn->setIcon(QIcon(":/img/plugins/userinfo_intel/type.svg"));
+-//    typeBtn->setStyleSheet(btnQss);
+-    connect(typeBtn, &QPushButton::clicked, this, [=](bool checked){
+-        Q_UNUSED(checked)
+-        showChangeTypeDialog(user.username);
+-    });
+-    typeBtn->hide();
+-
+-    QPushButton * pwdBtn = new QPushButton(widget);
+-    pwdBtn->setFixedSize(64, 64);
+-//    pwdBtn->setText(tr("Change pwd"));
+-    pwdBtn->setIcon(QIcon(":/img/plugins/userinfo_intel/password.svg"));
+-//    pwdBtn->setStyleSheet(btnQss);
+-    connect(pwdBtn, &QPushButton::clicked, this, [=](bool checked){
+-        Q_UNUSED(checked)        
+-        showChangePwdDialog(user.username);
+-
+-    });
+-    pwdBtn->hide();
+-
+-    QFrame * line = new QFrame;
+-    line->setFrameShape(QFrame::VLine);
+-    line->setFixedSize(4, 12);
+-
+-    mainHorLayout->addWidget(faceLabel);
+-    mainHorLayout->addWidget(nameLabel);
+-    mainHorLayout->addStretch();
+-//    mainHorLayout->addWidget(pwdBtn);
+-//    mainHorLayout->addWidget(typeBtn);
+-    mainHorLayout->addWidget(line);
+-    widget->setLayout(mainHorLayout);
+-
+-    QPushButton * delBtn = new QPushButton(baseWidget);
+-    delBtn->setFixedSize(64, 64);
+-//    delBtn->setText(tr("Delete"));
+-    delBtn->setIcon(QIcon(":/img/plugins/userinfo_intel/deluser.svg"));
+-//    delBtn->setStyleSheet("QPushButton{background: #FA6056; border-radius: 4px}");
+-    delBtn->hide();
+-    connect(delBtn, &QPushButton::clicked, this, [=](bool checked){
+-        Q_UNUSED(checked)
+-        showDeleteUserDialog(user.username);
+-    });
+-
+-    connect(baseWidget, &HoverWidget::enterWidget, this, [=](QString name){
+-        Q_UNUSED(name)
+-        //对普通用户,隐藏对其他用户进行操作的按钮
+-        if (current_user.accounttype != STANDARDUSER){
+-            line->hide();
+-            //typeBtn->show();
+-            //pwdBtn->show();
+-            delBtn->show();
+-        }
+-//        delBtn->show();
+-    });
+-    connect(baseWidget, &HoverWidget::leaveWidget, this, [=](QString name){
+-        Q_UNUSED(name)
+-        line->show();
+-        typeBtn->hide();
+-        pwdBtn->hide();
+-        delBtn->hide();
+-    });
+-
+-    baseHorLayout->addWidget(widget);
+-    baseHorLayout->addWidget(pwdBtn, Qt::AlignVCenter);
+-    baseHorLayout->addWidget(typeBtn, Qt::AlignVCenter);
+-    baseHorLayout->addWidget(delBtn, Qt::AlignVCenter);
+-//    baseHorLayout->addSpacing(4);
+-    baseHorLayout->setSpacing(8);
+-
+-
+-    baseVerLayout->addLayout(baseHorLayout);
+-//    baseVerLayout->addStretch();
+-
+-    baseWidget->setLayout(baseVerLayout);
+-
+-    QListWidgetItem * item = new QListWidgetItem(ui->listWidget);
+-//    item->setSizeHint(QSize(ui->listWidget->width() - 4, ITEMHEIGH));
+-    item->setSizeHint(QSize(QSizePolicy::Expanding, ITEMHEIGH));
+-    item->setData(Qt::UserRole, QVariant(user.objpath));
+-    ui->listWidget->setItemWidget(item, baseWidget);
+-
+-    otherUserItemMap.insert(user.objpath, item);
+-
+-}
+-
+-void UserInfoIntel::showCreateUserDialog(){
+-    //获取系统所有用户名列表,创建时判断重名
+-    QStringList usersStringList;
+-    for (QVariant tmp : allUserInfoMap.keys()){
+-        usersStringList << tmp.toString();
+-    }
+-
+-    CreateUserIntelDialog * dialog = new CreateUserIntelDialog(usersStringList);
+-    dialog->setRequireLabel(pwdMsg);
+-    connect(dialog, &CreateUserIntelDialog::newUserWillCreate, this, [=](QString uName, QString pwd, QString pin, int aType){
+-        createUser(uName, pwd, pin, aType);
+-    });
+-    dialog->exec();
+-}
+-
+-QStringList UserInfoIntel::getUsersList()
+-{
+-    QStringList usersStringList;
+-    for (QVariant tmp : allUserInfoMap.keys()){
+-        usersStringList << tmp.toString();
+-    }
+-    return usersStringList;
+-}
+-
+-void UserInfoIntel::createUser(QString username, QString pwd, QString pin, int atype){
+-    Q_UNUSED(pin);
+-    sysdispatcher->create_user(username, "", atype);
+-
+-    //使用全局变量传递新建用户密码
+-    _newUserPwd = pwd;
+-}
+-
+-void UserInfoIntel::createUserDone(QString objpath){
+-    UserDispatcher * userdispatcher  = new UserDispatcher(objpath);
+-    //设置默认头像
+-    userdispatcher->change_user_face(DEFAULTFACE);
+-    //设置默认密码
+-    userdispatcher->change_user_pwd(_newUserPwd, "");
+-
+-    //刷新全部用户信息
+-    _acquireAllUsersInfo();
+-    //重建其他用户ListWidget高度
+-    _resetListWidgetHeigh();
+-
+-    //获取新建用户信息
+-    UserInfomation user;
+-    user = _acquireUserInfo(objpath);
+-
+-    //构建Item
+-    _buildWidgetForItem(user);
+-    _refreshUserInfoUI();
+-}
+-
+-void UserInfoIntel::showDeleteUserDialog(QString username){
+-    UserInfomation user = (UserInfomation)(allUserInfoMap.find(username).value());
+-//    QDBusInterface * m_interface = new QDBusInterface("cn.kylinos.SSOBackend",
+-//                                                      "/cn/kylinos/SSOBackend",
+-//                                                      "cn.kylinos.SSOBackend.accounts",
+-//                                                      QDBusConnection::systemBus());
+-//    m_interface->call("DeleteAccount",user.username);
+-//    delete m_interface;
+-    DelUserIntelDialog * dialog = new DelUserIntelDialog;
+-    dialog->setAttribute(Qt::WA_DeleteOnClose);
+-    dialog->setFace(user.iconfile);
+-    dialog->setUsername(user.username,user.realname);
+-    connect(dialog, &DelUserIntelDialog::removefile_send, this, [=](bool removeFile, QString userName){
+-        qDebug()<<userName;
+-        deleteUser(removeFile, userName);
+-    });
+-    qDebug()<<"delete";
+-    dialog->exec();
+-}
+-
+-void UserInfoIntel::deleteUser(bool removefile, QString username){
+-    qDebug() << allUserInfoMap.keys() << username;
+-
+-    UserInfomation user = (UserInfomation)(allUserInfoMap.find(username).value());
+-
+-    //sysdispatcher->delete_user(user.uid, removefile);
+-    QDBusInterface * m_interface = new QDBusInterface("cn.kylinos.SSOBackend",
+-                                                      "/cn/kylinos/SSOBackend",
+-                                                      "cn.kylinos.SSOBackend.accounts",
+-                                                      QDBusConnection::systemBus());
+-
+-    QDBusReply<int> reply = m_interface->call("DeleteAccount",user.username);
+-    if (reply == 0) {
+-        // hidden the item when click delete user button
+-        QListWidgetItem *item =  otherUserItemMap.find(user.objpath).value();
+-        ui->listWidget->setItemHidden(item, true);
+-    } else {
+-        qDebug() << "***********error:" << reply.error();
+-        return;
+-    }
+-
+-    delete m_interface;
+-}
+-
+-void UserInfoIntel::delete_user_slot(bool removefile, QString username){
+-    UserInfomation user = (UserInfomation)(allUserInfoMap.find(username).value());
+-
+-    sysdispatcher->delete_user(user.uid, removefile);
+-}
+-
+-void UserInfoIntel::deleteUserDone(QString objpath){
+-    QListWidgetItem * item = otherUserItemMap.value(objpath);
+-
+-    //删除Item
+-    ui->listWidget->takeItem(ui->listWidget->row(item));
+-
+-    //更新其他用户QMap
+-    otherUserItemMap.remove(objpath);
+-
+-    //更新所有用户信息
+-    _acquireAllUsersInfo();
+-
+-    //重置其他用户ListWidget高度
+-    _resetListWidgetHeigh();
+-    if (allUserInfoMap.count() == 1 && !isDelCurrentUser) {
+-        ui->line_3->show();
+-        ui->delUserBtn->show();
+-        ui->title2Label->hide();
+-    }
+-}
+-
+-void UserInfoIntel::showChangeGroupDialog(){
+-    ChangeGroupIntelDialog * dialog = new ChangeGroupIntelDialog();
+-    dialog->exec();
+-}
+-
+-void UserInfoIntel::showChangeValidDialog(QString username){
+-    if (allUserInfoMap.keys().contains(username)){
+-        UserInfomation user = allUserInfoMap.value(username);
+-
+-        ChangeValidIntelDialog * dialog = new ChangeValidIntelDialog(user.username);
+-        dialog->setUserName();
+-        dialog->setUserLogo(user.iconfile);
+-        dialog->setUserType(_accountTypeIntToString(user.accounttype));
+-        dialog->exec();
+-
+-    } else {
+-        qDebug() << "User Data Error When Change User type";
+-    }
+-}
+-
+-
+-void UserInfoIntel::showChangeTypeDialog(QString username){
+-    if (allUserInfoMap.keys().contains(username)){
+-        UserInfomation user = allUserInfoMap.value(username);
+-
+-        ChangeTypeIntelDialog * dialog = new ChangeTypeIntelDialog;
+-        dialog->setFace(user.iconfile);
+-        dialog->setUsername(user.username);
+-        dialog->setCurrentAccountTypeLabel(_accountTypeIntToString(user.accounttype));
+-        dialog->setCurrentAccountTypeBtn(user.accounttype);
+-        dialog->forbidenChange(adminnum);
+-//        connect(dialog, SIGNAL(type_send(int,QString,bool)), this, SLOT(change_accounttype_slot(int,QString,bool)));
+-        connect(dialog, &ChangeTypeIntelDialog::type_send, this, [=](int atype, QString userName){
+-            changeUserType(atype, userName);
+-        });
+-        dialog->exec();
+-
+-    } else {
+-        qDebug() << "User Data Error When Change User type";
+-    }
+-}
+-
+-void UserInfoIntel::changeUserType(int atype, QString username){
+-    UserInfomation user = allUserInfoMap.value(username);
+-
+-    //构建dbus调度对象
+-    UserDispatcher * userdispatcher  = new UserDispatcher(user.objpath); //继承QObject不再删除
+-
+-    //更改用户类型
+-    userdispatcher->change_user_type(atype);
+-
+-    //重新获取全部用户QMap
+-    _acquireAllUsersInfo();
+-
+-    //更新界面显示
+-    _refreshUserInfoUI();
+-}
+-
+-
+-void UserInfoIntel::showChangeFaceDialog(QString username){
+-    UserInfomation user = (UserInfomation)(allUserInfoMap.find(username).value());
+-
+-    ChangeFaceIntelDialog * dialog = new ChangeFaceIntelDialog;
+-    dialog->setHistoryFacesPath(QString("/home/%1/.historyfaces").arg(user.username));
+-    dialog->setFace(user.iconfile);
+-    dialog->setUsername(user.username);
+-    dialog->setRealname(user.realname);
+-    dialog->setAccountType(_accountTypeIntToString(user.accounttype));
+-//    dialog->set_face_list_status(user.iconfile);
+-    connect(dialog, &ChangeFaceIntelDialog::face_file_send, [=](QString faceFile, QString userName){
+-        changeUserFace(faceFile, userName);
+-
+-    });
+-    dialog->exec();
+-    //ui->autoLoginFrame->hide();
+-}
+-
+-void UserInfoIntel::changeUserFace(QString facefile, QString username){
+-    UserInfomation user = (UserInfomation)(allUserInfoMap.find(username).value());
+-
+-    UserDispatcher * userdispatcher  = new UserDispatcher(user.objpath);
+-    userdispatcher->change_user_face(facefile);
+-//    userdispatcher->change_user_face(QString("/home/%1/.face").arg(user.username));
+-
+-    //拷贝设置的头像文件到~/.face
+-    sysinterface = new QDBusInterface("com.control.center.qt.systemdbus",
+-                                     "/",
+-                                     "com.control.center.interface",
+-                                     QDBusConnection::systemBus());
+-
+-    if (!sysinterface->isValid()) {
+-        qCritical() << "Create Client Interface Failed When Copy Face File: " << QDBusConnection::systemBus().lastError();
+-        return;
+-    }
+-
+-    QString cmd = QString("cp %1 /home/%2/.face").arg(facefile).arg(user.username);
+-
+-    QDBusReply<QString> reply =  sysinterface->call("systemRun", QVariant(cmd));
+-
+-    //重新获取全部用户QMap
+-    _acquireAllUsersInfo();
+-
+-    //更新界面显示
+-    _refreshUserInfoUI();
+-
+-    Q_UNUSED(reply)
+-}
+-
+-void UserInfoIntel::showChangePwdDialog(QString username){
+-    if (allUserInfoMap.keys().contains(username)){
+-        UserInfomation user = allUserInfoMap.value(username);
+-
+-        ChangePinIntelDialog * dialog = new ChangePinIntelDialog(user.username);
+-        connect(dialog, &ChangePinIntelDialog::changepwd, [=](){
+-            ui->changePwdBtn->setText(tr("Change pwd"));
+-        });
+-//        dialog->setFace(user.iconfile);
+-//        dialog->setUsername(user.username);
+-//        dialog->setAccountType(_accountTypeIntToString(user.accounttype));
+-//        connect(dialog, &ChangePwdIntelDialog::passwd_send, this, [=](QString pwd, QString userName){
+-//            changeUserPwd(pwd, userName);
+-//        });
+-        //修改PIN码弹窗(已实现PIN码验证,等待设置PIN码接口)
+-       //ChangePinIntelDialog * dialog = new ChangePinIntelDialog;
+-       //ChangePwdIntelDialog * dialog = new ChangePwdIntelDialog();
+-       dialog->exec();
+-
+-    } else {
+-        qDebug() << "User Info Data Error When Change User type";
+-    }
+-}
+-void UserInfoIntel::showChangePhoDialog(QString username){
+-    if (allUserInfoMap.keys().contains(username)){
+-        UserInfomation user = allUserInfoMap.value(username);
+-
+-        ChangePhoneIntelDialog * dialog = new ChangePhoneIntelDialog(user.username);
+-//        dialog->setFace(user.iconfile);
+-//        dialog->setUsername(user.username);
+-//        dialog->setAccountType(_accountTypeIntToString(user.accounttype));
+-//        connect(dialog, &ChangePwdIntelDialog::passwd_send, this, [=](QString pwd, QString userName){
+-//            changeUserPwd(pwd, userName);
+-//        });
+-        //修改PIN码弹窗(已实现PIN码验证,等待设置PIN码接口)
+-//        ChangePinIntelDialog * dialog = new ChangePinIntelDialog;
+-        dialog->exec();
+-
+-    } else {
+-        qDebug() << "User Info Data Error When Change User type";
+-    }
+-}
+-
+-
+-void UserInfoIntel::changeUserPwd(QString pwd, QString username){
+-    //上层已做判断,这里不去判断而直接获取
+-    UserInfomation user = allUserInfoMap.value(username);
+-
+-    UserDispatcher * userdispatcher  = new UserDispatcher(user.objpath); //继承QObject不再删除
+-    QString result = userdispatcher->change_user_pwd(pwd, "");
+-
+-    Q_UNUSED(result)
+-}
+-
+-
+-bool UserInfoIntel::eventFilter(QObject *watched, QEvent *event){
+-    if (watched == ui->currentUserFaceLabel){
+-        if (event->type() == QEvent::MouseButtonPress){
+-            QMouseEvent * mouseEvent = static_cast<QMouseEvent *>(event);
+-            if (mouseEvent->button() == Qt::LeftButton ){
+-                if(watched == ui->currentUserFaceLabel){
+-                    showChangeFaceDialog(my_name);
+-                }
+-                return true;
+-            } else {
+-                return false;
+-            }
+-        }
+-    }
+-    if (watched == ui->userNameLabel)
+-        {
+-            if (event->type() == QEvent::KeyPress)
+-            {
+-                QKeyEvent* keyevt = static_cast<QKeyEvent*>(event);
+-                if ((keyevt->key() == Qt::Key_Return) ||
+-                    (keyevt->key() == Qt::Key_Escape) ||
+-                    (keyevt->key() == Qt::Key_Enter))   // Qt::Key_Return是大键盘的回车键 Qt::Key_Enter是小键盘的回车键
+-                {
+-                    QString str_name =ui->userNameLabel->text().remove(QRegExp("\\s"));
+-                    qlonglong uid = getuid();
+-                    QDBusInterface user("org.freedesktop.Accounts",
+-                                        "/org/freedesktop/Accounts",
+-                                        "org.freedesktop.Accounts",
+-                                        QDBusConnection::systemBus());
+-                    QDBusMessage result = user.call("FindUserById", uid);
+-                    QString userpath = result.arguments().value(0).value<QDBusObjectPath>().path();
+-
+-                    QDBusInterface userreal("org.freedesktop.Accounts",
+-                                            userpath,
+-                                            "org.freedesktop.Accounts.User",
+-                                            QDBusConnection::systemBus());
+-
+-                    ui->userNameLabel->setCursorPosition(0);
+-                    if (str_name != NULL) {
+-                        userreal.call("SetRealName",m_userName);
+-                        allUserInfoMap.find(my_name).value().realname = m_userName;
+-                        QFontMetrics fontMetrics(ui->userNameLabel->font());
+-                        int fontSize = fontMetrics.width(ui->userNameLabel->text());
+-                        if (fontSize > 180) {
+-                            QString str = fontMetrics.elidedText(ui->userNameLabel->text(), Qt::ElideRight, 180);
+-                            ui->userNameLabel->setToolTip(m_userName);
+-                            ui->userNameLabel->blockSignals(true);
+-                            ui->userNameLabel->setText(str);
+-                            ui->userNameLabel->blockSignals(false);
+-                        } else {
+-                            ui->userNameLabel->blockSignals(true);
+-                            ui->userNameLabel->setText(ui->userNameLabel->text());
+-                            ui->userNameLabel->blockSignals(false);
+-                            ui->userNameLabel->setToolTip("");
+-                        }
+-                        ui->editBtn->show();
+-                        ui->userNameLabel->setReadOnly(true);
+-                        ui->userNameLabel->deselect();
+-                    } else {
+-                        qDebug()<<"回车";
+-                        enter = true;
+-                        MessageBoxPowerIntel *messageBoxpower = new MessageBoxPowerIntel();
+-                        messageBoxpower->exec();
+-                        QFontMetrics fontMetrics(ui->userNameLabel->font());
+-                        int fontSize = fontMetrics.width(userreal.property("RealName").toString());
+-                        if (fontSize > 180) {
+-                            QString str = fontMetrics.elidedText(userreal.property("RealName").toString(), Qt::ElideRight, 180);
+-                            ui->userNameLabel->setToolTip(userreal.property("RealName").toString());
+-                            ui->userNameLabel->blockSignals(true);
+-                            ui->userNameLabel->setText(str);
+-                            ui->userNameLabel->blockSignals(false);
+-                        } else {
+-                            ui->userNameLabel->blockSignals(true);
+-                            ui->userNameLabel->setText(userreal.property("RealName").toString());
+-                            ui->userNameLabel->blockSignals(false);
+-                            ui->userNameLabel->setToolTip("");
+-                        }
+-                        ui->editBtn->show();
+-                        ui->userNameLabel->setReadOnly(true);
+-                        ui->userNameLabel->deselect();
+-                    }
+-                }
+-            }
+-            else if (event->type() == QEvent::FocusOut)
+-            {
+-
+-                QString str_name =ui->userNameLabel->text().remove(QRegExp("\\s"));
+-                qlonglong uid = getuid();
+-                QDBusInterface user("org.freedesktop.Accounts",
+-                                    "/org/freedesktop/Accounts",
+-                                    "org.freedesktop.Accounts",
+-                                    QDBusConnection::systemBus());
+-                QDBusMessage result = user.call("FindUserById", uid);
+-                QString userpath = result.arguments().value(0).value<QDBusObjectPath>().path();
+-
+-                QDBusInterface userreal("org.freedesktop.Accounts",
+-                                        userpath,
+-                                        "org.freedesktop.Accounts.User",
+-                                        QDBusConnection::systemBus());
+-                if (str_name != NULL) {
+-                    ui->userNameLabel->setCursorPosition(0);
+-                    userreal.call("SetRealName",m_userName);
+-                    allUserInfoMap.find(my_name).value().realname = m_userName;
+-                    QFontMetrics fontMetrics(ui->userNameLabel->font());
+-                    int fontSize = fontMetrics.width(ui->userNameLabel->text());
+-                    if (fontSize > 180) {
+-                        QString str = fontMetrics.elidedText(ui->userNameLabel->text(), Qt::ElideRight, 180);
+-                        ui->userNameLabel->setToolTip(m_userName);
+-                        ui->userNameLabel->blockSignals(true);
+-                        ui->userNameLabel->setText(str);
+-                        ui->userNameLabel->blockSignals(false);
+-                    } else {
+-                        ui->userNameLabel->blockSignals(true);
+-                        ui->userNameLabel->setText(ui->userNameLabel->text());
+-                        ui->userNameLabel->blockSignals(false);
+-                        ui->userNameLabel->setToolTip("");
+-                    }
+-                    ui->editBtn->show();
+-                    ui->userNameLabel->setReadOnly(true);
+-                    ui->userNameLabel->deselect();
+-                } else {
+-                    qDebug()<<"失去焦点";
+-                    ui->userNameLabel->setCursorPosition(0);
+-                    if (enter) {
+-                        enter = false;
+-                    } else {
+-                        MessageBoxPowerIntel *messageBoxpower = new MessageBoxPowerIntel;
+-                        messageBoxpower->exec();
+-                        QFontMetrics fontMetrics(ui->userNameLabel->font());
+-                        int fontSize = fontMetrics.width(userreal.property("RealName").toString());
+-                        if (fontSize > 180) {
+-                            QString str = fontMetrics.elidedText(userreal.property("RealName").toString(), Qt::ElideRight, 180);
+-                            ui->userNameLabel->blockSignals(true);
+-                            ui->userNameLabel->setText(str);
+-                            ui->userNameLabel->blockSignals(false);
+-                            ui->userNameLabel->setToolTip(userreal.property("RealName").toString());
+-                        } else {
+-                            ui->userNameLabel->blockSignals(true);
+-                            ui->userNameLabel->setText(userreal.property("RealName").toString());
+-                            ui->userNameLabel->blockSignals(false);
+-                            ui->userNameLabel->setToolTip("");
+-                        }
+-                        ui->editBtn->show();
+-                        ui->userNameLabel->setReadOnly(true);
+-                        ui->userNameLabel->deselect();
+-                    }
+-                }
+-
+-            }
+-        }
+-    return QObject::eventFilter(watched, event);
+-}
+-
+-bool UserInfoIntel::getAutomaticLogin(QString username) {
+-
+-    QString filename = "/etc/lightdm/lightdm.conf";
+-    autoSettings = new QSettings(filename, QSettings::IniFormat);
+-    autoSettings->beginGroup("SeatDefaults");
+-
+-    QString autoUser = autoSettings->value("autologin-user", "").toString();
+-
+-    autoSettings->endGroup();
+-
+-    return autoUser == username ? true : false;
+-}
+diff --git a/plugins/account/userinfo_intel/userinfo_intel.h b/plugins/account/userinfo_intel/userinfo_intel.h
+deleted file mode 100644
+index 497398d..0000000
+--- a/plugins/account/userinfo_intel/userinfo_intel.h
++++ /dev/null
+@@ -1,276 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef USERINFO_INTEL_H
+-#define USERINFO_INTEL_H
+-
+-#include <QObject>
+-#include <QtPlugin>
+-
+-//#include <QToolButton>
+-//#include <QMenu>
+-//#include <QAction>
+-#include <QSignalMapper>
+-#include <QMouseEvent>
+-#include <QSettings>
+-#include <QProcess>
+-#include <QPainterPath>
+-
+-#include "shell/interface.h"
+-
+-#include "qtdbus/systemdbusdispatcher.h"
+-#include "qtdbus/userdispatcher.h"
+-
+-#include "changegroupinteldialog.h"
+-#include "changepwdinteldialog.h"
+-#include "changephoneinteldialog.h"
+-
+-#include "changepininteldialog.h"
+-
+-#include "changefaceinteldialog.h"
+-#include "changetypeinteldialog.h"
+-#include "changevalidinteldialog.h"
+-#include "deluserinteldialog.h"
+-#include "createuserinteldialog.h"
+-#include "hoverwidget.h"
+-#include "picturetowhite.h"
+-#include "messageboxpowerintel.h"
+-
+-#include "ukcccommon.h"
+-using namespace ukcc;
+-
+-#ifdef ENABLEPQ
+-extern "C" {
+-#include <pwquality.h>
+-}
+-#endif
+-
+-enum {
+-    STANDARDUSER,
+-    ADMINISTRATOR,
+-    ROOT
+-};
+-
+-typedef struct _UserInfomation {
+-    QString objpath;
+-    QString username;
+-    QString realname;
+-    QString iconfile;
+-    QString passwd;
+-    int accounttype;
+-    int passwdtype;
+-    bool current;
+-    bool logined;
+-    bool autologin;
+-    bool noPwdLogin;
+-    qint64 uid;
+-}UserInfomation;
+-
+-typedef struct _PwdQualityOption {
+-
+-    int diff_ok;
+-    int min_length;
+-    int dig_credit;
+-    int up_credit;
+-    int low_credit;
+-    int oth_credit;
+-    int min_class;
+-    int max_repeat;
+-    int max_class_repeat;
+-    int max_sequence;
+-    int gecos_check;
+-    int dict_check;
+-    int user_check;
+-    int enforcing;
+-    int retry_times;
+-    int enforce_for_root;
+-    int local_users_only;
+-    int palindrome;
+-    int no_similar_check;
+-    char *bad_words;
+-    char *dict_path;
+-
+-}PwdQualityOption;
+-
+-namespace Ui {
+-class UserInfoIntel;
+-}
+-
+-class QDBusInterface;
+-class SwitchButton;
+-
+-class UserInfoIntel : public QObject, CommonInterface
+-{
+-    Q_OBJECT
+-    Q_PLUGIN_METADATA(IID "org.ukcc.CommonInterface")
+-    Q_INTERFACES(CommonInterface)
+-
+-public:
+-    UserInfoIntel();
+-    ~UserInfoIntel();
+-
+-    QString plugini18nName() Q_DECL_OVERRIDE;
+-    int pluginTypes() Q_DECL_OVERRIDE;
+-    QWidget *pluginUi() Q_DECL_OVERRIDE;
+-    const QString name() const  Q_DECL_OVERRIDE;
+-    bool isShowOnHomePage() const Q_DECL_OVERRIDE;
+-    QIcon icon() const Q_DECL_OVERRIDE;
+-    bool isEnable() const Q_DECL_OVERRIDE;
+-
+-public:
+-    void initSearchText();
+-    void initComponent();
+-    void initAllUserStatus();
+-
+-    void _acquireAllUsersInfo();
+-    UserInfomation _acquireUserInfo(QString objpath);
+-    QString _accountTypeIntToString(int type);
+-    void _buildWidgetForItem(UserInfomation user);
+-    void _resetListWidgetHeigh();
+-
+-    void _refreshUserInfoUI();
+-
+-    void showCreateUserDialog();
+-    void createUser(QString username, QString pwd, QString pin, int atype);
+-    void createUserDone(QString objpath);
+-
+-    void showDeleteUserDialog(QString username);
+-    void deleteUser(bool removefile, QString username);
+-    void deleteUserDone(QString objpath);
+-
+-    void showChangePwdDialog(QString username);
+-    void showChangePhoDialog(QString username);
+-    void changeUserPwd(QString pwd, QString username);
+-
+-    void showChangeTypeDialog(QString username);
+-    void changeUserType(int atype, QString username);
+-
+-    void showChangeFaceDialog(QString username);
+-    void changeUserFace(QString facefile, QString username);
+-
+-    void showChangeValidDialog(QString username);
+-
+-    void showChangeGroupDialog();
+-
+-    void get_all_users();
+-    UserInfomation init_user_info(QString objpath);
+-    void setup_otherusers_ui();
+-    void build_item_with_widget(UserInfomation user);
+-    void ui_component_init();
+-
+-    QString accounttype_enum_to_string(int id);
+-    QString login_status_bool_to_string(bool status);
+-
+-
+-    void readCurrentPwdConf();
+-    QStringList getUsersList();
+-
+-    QPixmap PixmapToRound(const QString &src, int radius);
+-
+-    void setChangeFaceShadow();
+-
+-protected:
+-    bool eventFilter(QObject *watched, QEvent *event);
+-
+-private:
+-    Ui::UserInfoIntel *ui;
+-    bool mFirstLoad;
+-    QString pluginName;
+-    QString oldName;
+-    int pluginType;
+-    QWidget * pluginWidget;
+-    HoverWidget *addWgt;
+-
+-    UserInfomation current_user;
+-    bool isDelCurrentUser = false;
+-
+-private:
+-    SwitchButton * nopwdSwitchBtn;
+-    SwitchButton * autoLoginSwitchBtn;
+-
+-    SystemDbusDispatcher * sysdispatcher;
+-    QSettings * autoSettings = nullptr;
+-    QGSettings  *m_pgsettings;
+-    bool enter = false;
+-
+-    PictureToWhite *m_pPictureToWhite;
+-    QString m_userName = "";
+-
+-private:
+-    bool getAutomaticLogin(QString username);
+-
+-private:
+-    QMap<QString, UserInfomation> allUserInfoMap;
+-    QMap<QString, QListWidgetItem *> otherUserItemMap;
+-
+-    int adminnum;
+-
+-    QString _newUserPwd;
+-
+-//    QMap<QString, QToolButton *> otherbtnMap;
+-    QMap<QString, QListWidgetItem *> otherItemMap;
+-
+-    QSignalMapper * pwdSignalMapper;
+-    QSignalMapper * faceSignalMapper;
+-    QSignalMapper * typeSignalMapper;
+-    QSignalMapper * delSignalMapper;
+-
+-    QSize faceSize;
+-    QSize itemSize;
+-    QSize btnSize;
+-
+-
+-    QString pwdcreate;
+-    QString my_name;
+-
+-    QDBusInterface * sysinterface;
+-
+-    bool enablePwdQuality;
+-
+-#ifdef ENABLEPQ
+-    pwquality_settings_t * pwdconf;
+-#endif
+-
+-    PwdQualityOption pwdOption;
+-
+-    QString pwdMsg;
+-
+-private slots:
+-//    void show_change_pwd_dialog_slot(QString username);
+-//    void change_pwd_slot(QString pwd, QString username);
+-//    void change_pwd_done_slot();
+-
+-//    void show_change_face_dialog_slot(QString username);
+-//    void change_face_slot(QString facefile, QString username);
+-//    void change_face_done_slot();
+-
+-//    void show_change_accounttype_dialog_slot(QString username);
+-//    void change_accounttype_slot(int atype, QString username, bool status);
+-//    void change_accounttype_done_slot();
+-
+-//    void show_del_user_dialog_slot(QString username);
+-    void delete_user_slot(bool removefile, QString username);
+-//    void delete_user_done_slot(QString objpath);
+-
+-//    void show_create_user_dialog_slot();
+-//    void create_user_slot(QString username, QString pwd, QString pin, int atype, bool autologin);
+-//    void create_user_done_slot(QString objpath);
+-};
+-
+-#endif // USERINFO_INTEL_H
+diff --git a/plugins/account/userinfo_intel/userinfo_intel.pro b/plugins/account/userinfo_intel/userinfo_intel.pro
+deleted file mode 100644
+index 19e8556..0000000
+--- a/plugins/account/userinfo_intel/userinfo_intel.pro
++++ /dev/null
+@@ -1,110 +0,0 @@
+-#-------------------------------------------------
+-#
+-# Project created by QtCreator 2019-06-29T14:35:43
+-#
+-#-------------------------------------------------
+-include(../../../env.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/FlowLayout/flowlayout.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/ImageUtil/imageutil.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/HoverWidget/hoverwidget.pri)
+-include($$PROJECT_ROOTDIR/libukcc/widgets/SwitchButton/switchbutton.pri)
+-include($$PROJECT_ROOTDIR/libukcc/interface.pri)
+-
+-QT       += widgets dbus gui network
+-
+-TEMPLATE = lib
+-CONFIG += plugin
+-
+-TARGET = $$qtLibraryTarget(userinfo_intel)
+-DESTDIR = ../..
+-target.path = $${PLUGIN_INSTALL_DIRS}
+-
+-INCLUDEPATH   +=  \
+-                 $$PROJECT_ROOTDIR \
+-
+-LIBS          += -L$$[QT_INSTALL_LIBS] -lcrypt -lpam
+-
+-##加载gio库和gio-unix库
+-CONFIG        += link_pkgconfig \
+-                 C++11
+-PKGCONFIG     += gio-2.0 \
+-                 gio-unix-2.0
+-
+-
+-#DEFINES += QT_DEPRECATED_WARNINGS
+-
+-SOURCES += \
+-    changefaceinteldialog.cpp \
+-    changegroupinteldialog.cpp \
+-    changephoneinteldialog.cpp \
+-    changepininteldialog.cpp \
+-    changepwdinteldialog.cpp \
+-    changetypeinteldialog.cpp \
+-    changevalidinteldialog.cpp \
+-    creategroupinteldialog.cpp \
+-    createuserinteldialog.cpp \
+-    definegroupitemintel.cpp \
+-    delgroupinteldialog.cpp \
+-    deluserinteldialog.cpp \
+-    digitalauthinteldialog.cpp \
+-    digitalphoneinteldialog.cpp \
+-    elipsemaskwidget.cpp \
+-    messageboxpowerintel.cpp \
+-    numbersbuttonintel.cpp \
+-    phoneauthinteldialog.cpp \
+-    picturetowhite.cpp \
+-    userinfo_intel.cpp \
+-    qtdbus/systemdbusdispatcher.cpp \
+-    qtdbus/userdispatcher.cpp \
+-    passwdcheckutil.cpp \
+-    auth-pam.cpp \
+-    passwordbar.cpp
+-#    changepasswd.cpp \
+-
+-HEADERS += \
+-    changefaceinteldialog.h \
+-    changegroupinteldialog.h \
+-    changephoneinteldialog.h \
+-    changepininteldialog.h \
+-    changepwdinteldialog.h \
+-    changetypeinteldialog.h \
+-    changevalidinteldialog.h \
+-    creategroupinteldialog.h \
+-    createuserinteldialog.h \
+-    definegroupitemintel.h \
+-    delgroupinteldialog.h \
+-    deluserinteldialog.h \
+-    digitalauthinteldialog.h \
+-    digitalphoneinteldialog.h \
+-    elipsemaskwidget.h \
+-    messageboxpowerintel.h \
+-    numbersbuttonintel.h \
+-    phoneauthinteldialog.h \
+-    picturetowhite.h \
+-    userinfo_intel.h \
+-    qtdbus/systemdbusdispatcher.h \
+-    qtdbus/userdispatcher.h \
+-    passwdcheckutil.h \
+-    auth.h \
+-    auth-pam.h \
+-    passwordbar.h
+-#    changepasswd.h \
+-
+-FORMS += \
+-    changefaceinteldialog.ui \
+-    changegroupinteldialog.ui \
+-    changephoneinteldialog.ui \
+-    changepininteldialog.ui \
+-    changepwdinteldialog.ui \
+-    changetypeinteldialog.ui \
+-    changevalidinteldialog.ui \
+-    creategroupinteldialog.ui \
+-    createuserinteldialog.ui \
+-    delgroupinteldialog.ui \
+-    deluserinteldialog.ui \
+-    userinfo_intel.ui
+-
+-INSTALLS += target
+-
+-RESOURCES += \
+-    changepwd.qrc
+diff --git a/plugins/account/userinfo_intel/userinfo_intel.ui b/plugins/account/userinfo_intel/userinfo_intel.ui
+deleted file mode 100644
+index 67e84d9..0000000
+--- a/plugins/account/userinfo_intel/userinfo_intel.ui
++++ /dev/null
+@@ -1,728 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>UserInfoIntel</class>
+- <widget class="QWidget" name="UserInfoIntel">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>881</width>
+-    <height>1080</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>0</width>
+-    <height>0</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>16777215</width>
+-    <height>16777215</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string notr="true">UserInfo</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_10">
+-   <property name="spacing">
+-    <number>0</number>
+-   </property>
+-   <property name="leftMargin">
+-    <number>0</number>
+-   </property>
+-   <property name="topMargin">
+-    <number>0</number>
+-   </property>
+-   <property name="bottomMargin">
+-    <number>0</number>
+-   </property>
+-   <item>
+-    <layout class="QHBoxLayout" name="horizontalLayout_2">
+-     <item>
+-      <widget class="QWidget" name="widget" native="true">
+-       <layout class="QVBoxLayout" name="verticalLayout_11">
+-        <property name="leftMargin">
+-         <number>0</number>
+-        </property>
+-        <property name="topMargin">
+-         <number>0</number>
+-        </property>
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_16">
+-          <property name="leftMargin">
+-           <number>16</number>
+-          </property>
+-          <property name="bottomMargin">
+-           <number>2</number>
+-          </property>
+-          <item>
+-           <layout class="QHBoxLayout" name="horizontalLayout_14">
+-            <item>
+-             <widget class="QLabel" name="titleLabel">
+-              <property name="sizePolicy">
+-               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                <horstretch>0</horstretch>
+-                <verstretch>0</verstretch>
+-               </sizepolicy>
+-              </property>
+-              <property name="minimumSize">
+-               <size>
+-                <width>100</width>
+-                <height>20</height>
+-               </size>
+-              </property>
+-              <property name="maximumSize">
+-               <size>
+-                <width>80</width>
+-                <height>16777215</height>
+-               </size>
+-              </property>
+-              <property name="text">
+-               <string>Current User</string>
+-              </property>
+-              <property name="scaledContents">
+-               <bool>true</bool>
+-              </property>
+-             </widget>
+-            </item>
+-           </layout>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer_15">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>40</width>
+-              <height>20</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-         </layout>
+-        </item>
+-        <item>
+-         <widget class="QFrame" name="currentUserFrame">
+-          <property name="minimumSize">
+-           <size>
+-            <width>0</width>
+-            <height>210</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>210</height>
+-           </size>
+-          </property>
+-          <property name="frameShape">
+-           <enum>QFrame::Box</enum>
+-          </property>
+-          <layout class="QVBoxLayout" name="verticalLayout">
+-           <item>
+-            <layout class="QHBoxLayout" name="horizontalLayout_6">
+-             <item>
+-              <widget class="QLabel" name="currentUserFaceLabel">
+-               <property name="sizePolicy">
+-                <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                 <horstretch>0</horstretch>
+-                 <verstretch>0</verstretch>
+-                </sizepolicy>
+-               </property>
+-               <property name="minimumSize">
+-                <size>
+-                 <width>112</width>
+-                 <height>112</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>112</width>
+-                 <height>112</height>
+-                </size>
+-               </property>
+-               <property name="text">
+-                <string/>
+-               </property>
+-              </widget>
+-             </item>
+-             <item>
+-              <spacer name="horizontalSpacer_3">
+-               <property name="orientation">
+-                <enum>Qt::Horizontal</enum>
+-               </property>
+-               <property name="sizeType">
+-                <enum>QSizePolicy::Preferred</enum>
+-               </property>
+-               <property name="sizeHint" stdset="0">
+-                <size>
+-                 <width>16</width>
+-                 <height>10</height>
+-                </size>
+-               </property>
+-              </spacer>
+-             </item>
+-             <item>
+-              <layout class="QVBoxLayout" name="verticalLayout_4">
+-               <property name="spacing">
+-                <number>4</number>
+-               </property>
+-               <item>
+-                <spacer name="verticalSpacer_4">
+-                 <property name="orientation">
+-                  <enum>Qt::Vertical</enum>
+-                 </property>
+-                 <property name="sizeHint" stdset="0">
+-                  <size>
+-                   <width>20</width>
+-                   <height>40</height>
+-                  </size>
+-                 </property>
+-                </spacer>
+-               </item>
+-               <item>
+-                <layout class="QHBoxLayout" name="horizontalLayout_9">
+-                 <item>
+-                  <widget class="QLineEdit" name="userNameLabel">
+-                   <property name="minimumSize">
+-                    <size>
+-                     <width>0</width>
+-                     <height>32</height>
+-                    </size>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>50</width>
+-                     <height>16777215</height>
+-                    </size>
+-                   </property>
+-                   <property name="frame">
+-                    <bool>false</bool>
+-                   </property>
+-                  </widget>
+-                 </item>
+-                 <item>
+-                  <widget class="QPushButton" name="editBtn">
+-                   <property name="sizePolicy">
+-                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+-                     <horstretch>0</horstretch>
+-                     <verstretch>0</verstretch>
+-                    </sizepolicy>
+-                   </property>
+-                   <property name="maximumSize">
+-                    <size>
+-                     <width>32</width>
+-                     <height>32</height>
+-                    </size>
+-                   </property>
+-                   <property name="text">
+-                    <string/>
+-                   </property>
+-                  </widget>
+-                 </item>
+-                 <item>
+-                  <spacer name="horizontalSpacer_2">
+-                   <property name="orientation">
+-                    <enum>Qt::Horizontal</enum>
+-                   </property>
+-                   <property name="sizeHint" stdset="0">
+-                    <size>
+-                     <width>0</width>
+-                     <height>20</height>
+-                    </size>
+-                   </property>
+-                  </spacer>
+-                 </item>
+-                </layout>
+-               </item>
+-               <item>
+-                <widget class="QLabel" name="userTypeLabel">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>0</width>
+-                   <height>0</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>120</width>
+-                   <height>16777215</height>
+-                  </size>
+-                 </property>
+-                 <property name="text">
+-                  <string/>
+-                 </property>
+-                </widget>
+-               </item>
+-               <item>
+-                <spacer name="verticalSpacer_3">
+-                 <property name="orientation">
+-                  <enum>Qt::Vertical</enum>
+-                 </property>
+-                 <property name="sizeHint" stdset="0">
+-                  <size>
+-                   <width>20</width>
+-                   <height>40</height>
+-                  </size>
+-                 </property>
+-                </spacer>
+-               </item>
+-              </layout>
+-             </item>
+-             <item>
+-              <spacer name="horizontalSpacer">
+-               <property name="orientation">
+-                <enum>Qt::Horizontal</enum>
+-               </property>
+-               <property name="sizeHint" stdset="0">
+-                <size>
+-                 <width>40</width>
+-                 <height>20</height>
+-                </size>
+-               </property>
+-              </spacer>
+-             </item>
+-             <item>
+-              <layout class="QVBoxLayout" name="verticalLayout_8">
+-               <property name="leftMargin">
+-                <number>0</number>
+-               </property>
+-               <item>
+-                <widget class="QPushButton" name="changePhoneBtn">
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>0</width>
+-                   <height>36</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>120</width>
+-                   <height>36</height>
+-                  </size>
+-                 </property>
+-                 <property name="text">
+-                  <string>Change phone</string>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-             <item>
+-              <widget class="Line" name="line_5">
+-               <property name="minimumSize">
+-                <size>
+-                 <width>1</width>
+-                 <height>16</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>1</width>
+-                 <height>16</height>
+-                </size>
+-               </property>
+-               <property name="orientation">
+-                <enum>Qt::Vertical</enum>
+-               </property>
+-              </widget>
+-             </item>
+-             <item>
+-              <layout class="QVBoxLayout" name="verticalLayout_5">
+-               <property name="spacing">
+-                <number>8</number>
+-               </property>
+-               <item>
+-                <widget class="QPushButton" name="changePwdBtn">
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>0</width>
+-                   <height>36</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>120</width>
+-                   <height>36</height>
+-                  </size>
+-                 </property>
+-                 <property name="text">
+-                  <string>Change pwd</string>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-             <item>
+-              <widget class="Line" name="line_3">
+-               <property name="sizePolicy">
+-                <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                 <horstretch>0</horstretch>
+-                 <verstretch>0</verstretch>
+-                </sizepolicy>
+-               </property>
+-               <property name="minimumSize">
+-                <size>
+-                 <width>1</width>
+-                 <height>16</height>
+-                </size>
+-               </property>
+-               <property name="maximumSize">
+-                <size>
+-                 <width>1</width>
+-                 <height>16</height>
+-                </size>
+-               </property>
+-               <property name="orientation">
+-                <enum>Qt::Vertical</enum>
+-               </property>
+-              </widget>
+-             </item>
+-             <item>
+-              <layout class="QVBoxLayout" name="verticalLayout_7">
+-               <property name="spacing">
+-                <number>8</number>
+-               </property>
+-               <item>
+-                <widget class="QPushButton" name="changeGroupBtn">
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>0</width>
+-                   <height>36</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>120</width>
+-                   <height>36</height>
+-                  </size>
+-                 </property>
+-                 <property name="text">
+-                  <string>User group</string>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-             <item>
+-              <layout class="QVBoxLayout" name="verticalLayout_6">
+-               <property name="spacing">
+-                <number>8</number>
+-               </property>
+-               <item>
+-                <widget class="QPushButton" name="delUserBtn">
+-                 <property name="minimumSize">
+-                  <size>
+-                   <width>0</width>
+-                   <height>36</height>
+-                  </size>
+-                 </property>
+-                 <property name="maximumSize">
+-                  <size>
+-                   <width>120</width>
+-                   <height>36</height>
+-                  </size>
+-                 </property>
+-                 <property name="text">
+-                  <string>Del user</string>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-            </layout>
+-           </item>
+-           <item>
+-            <widget class="Line" name="line_2">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="minimumSize">
+-              <size>
+-               <width>0</width>
+-               <height>1</height>
+-              </size>
+-             </property>
+-             <property name="orientation">
+-              <enum>Qt::Horizontal</enum>
+-             </property>
+-            </widget>
+-           </item>
+-           <item>
+-            <layout class="QVBoxLayout" name="verticalLayout_9">
+-             <item>
+-              <widget class="Line" name="line">
+-               <property name="sizePolicy">
+-                <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-                 <horstretch>0</horstretch>
+-                 <verstretch>0</verstretch>
+-                </sizepolicy>
+-               </property>
+-               <property name="minimumSize">
+-                <size>
+-                 <width>0</width>
+-                 <height>1</height>
+-                </size>
+-               </property>
+-               <property name="orientation">
+-                <enum>Qt::Horizontal</enum>
+-               </property>
+-              </widget>
+-             </item>
+-            </layout>
+-           </item>
+-          </layout>
+-          <zorder></zorder>
+-          <zorder>line_2</zorder>
+-         </widget>
+-        </item>
+-        <item>
+-         <spacer name="verticalSpacer_2">
+-          <property name="orientation">
+-           <enum>Qt::Vertical</enum>
+-          </property>
+-          <property name="sizeType">
+-           <enum>QSizePolicy::Fixed</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>20</width>
+-            <height>46</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-        <item>
+-         <layout class="QVBoxLayout" name="verticalLayout_2">
+-          <item>
+-           <widget class="QFrame" name="frame">
+-            <property name="frameShape">
+-             <enum>QFrame::StyledPanel</enum>
+-            </property>
+-            <property name="frameShadow">
+-             <enum>QFrame::Raised</enum>
+-            </property>
+-            <layout class="QHBoxLayout" name="horizontalLayout_19">
+-             <item>
+-              <layout class="QHBoxLayout" name="horizontalLayout_18">
+-               <item>
+-                <widget class="QLabel" name="label_4">
+-                 <property name="text">
+-                  <string>system reboot</string>
+-                 </property>
+-                </widget>
+-               </item>
+-               <item>
+-                <spacer name="horizontalSpacer_6">
+-                 <property name="orientation">
+-                  <enum>Qt::Horizontal</enum>
+-                 </property>
+-                 <property name="sizeHint" stdset="0">
+-                  <size>
+-                   <width>40</width>
+-                   <height>20</height>
+-                  </size>
+-                 </property>
+-                </spacer>
+-               </item>
+-              </layout>
+-             </item>
+-            </layout>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="Line" name="line_4">
+-            <property name="sizePolicy">
+-             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+-              <horstretch>0</horstretch>
+-              <verstretch>0</verstretch>
+-             </sizepolicy>
+-            </property>
+-            <property name="minimumSize">
+-             <size>
+-              <width>0</width>
+-              <height>1</height>
+-             </size>
+-            </property>
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="QFrame" name="frame_2">
+-            <property name="frameShape">
+-             <enum>QFrame::StyledPanel</enum>
+-            </property>
+-            <property name="frameShadow">
+-             <enum>QFrame::Raised</enum>
+-            </property>
+-            <layout class="QHBoxLayout" name="horizontalLayout_13">
+-             <item>
+-              <layout class="QHBoxLayout" name="horizontalLayout_11">
+-               <item>
+-                <widget class="QLabel" name="label_2">
+-                 <property name="text">
+-                  <string>Unclosed apps start after a restart</string>
+-                 </property>
+-                </widget>
+-               </item>
+-               <item>
+-                <spacer name="horizontalSpacer_4">
+-                 <property name="orientation">
+-                  <enum>Qt::Horizontal</enum>
+-                 </property>
+-                 <property name="sizeHint" stdset="0">
+-                  <size>
+-                   <width>40</width>
+-                   <height>20</height>
+-                  </size>
+-                 </property>
+-                </spacer>
+-               </item>
+-               <item>
+-                <widget class="QComboBox" name="comboBox">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                </widget>
+-               </item>
+-              </layout>
+-             </item>
+-            </layout>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-        <item>
+-         <spacer name="verticalSpacer_9">
+-          <property name="orientation">
+-           <enum>Qt::Vertical</enum>
+-          </property>
+-          <property name="sizeType">
+-           <enum>QSizePolicy::Fixed</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>20</width>
+-            <height>46</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_17">
+-          <property name="leftMargin">
+-           <number>16</number>
+-          </property>
+-          <property name="bottomMargin">
+-           <number>2</number>
+-          </property>
+-          <item>
+-           <layout class="QHBoxLayout" name="horizontalLayout_15">
+-            <item>
+-             <widget class="QLabel" name="title2Label">
+-              <property name="sizePolicy">
+-               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                <horstretch>0</horstretch>
+-                <verstretch>0</verstretch>
+-               </sizepolicy>
+-              </property>
+-              <property name="text">
+-               <string>Other Users</string>
+-              </property>
+-              <property name="scaledContents">
+-               <bool>true</bool>
+-              </property>
+-             </widget>
+-            </item>
+-           </layout>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer_16">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeType">
+-             <enum>QSizePolicy::Expanding</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>40</width>
+-              <height>20</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-         </layout>
+-        </item>
+-        <item>
+-         <layout class="QVBoxLayout" name="verticalLayout_3">
+-          <item>
+-           <layout class="QHBoxLayout" name="horizontalLayout_10">
+-            <item>
+-             <layout class="QHBoxLayout" name="horizontalLayout_4">
+-              <item>
+-               <widget class="QListWidget" name="listWidget">
+-                <property name="minimumSize">
+-                 <size>
+-                  <width>0</width>
+-                  <height>64</height>
+-                 </size>
+-                </property>
+-                <property name="maximumSize">
+-                 <size>
+-                  <width>16777215</width>
+-                  <height>16777215</height>
+-                 </size>
+-                </property>
+-                <property name="resizeMode">
+-                 <enum>QListView::Adjust</enum>
+-                </property>
+-               </widget>
+-              </item>
+-             </layout>
+-            </item>
+-           </layout>
+-          </item>
+-         </layout>
+-        </item>
+-        <item>
+-         <spacer name="verticalSpacer_7">
+-          <property name="orientation">
+-           <enum>Qt::Vertical</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>20</width>
+-            <height>7</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-    </layout>
+-   </item>
+-  </layout>
+- </widget>
+- <layoutdefault spacing="6" margin="11"/>
+- <resources/>
+- <connections/>
+-</ui>
+diff --git a/plugins/devices/keyboard/kbdlayoutmanager.cpp b/plugins/devices/keyboard/kbdlayoutmanager.cpp
+deleted file mode 100644
+index 1a81c8e..0000000
+--- a/plugins/devices/keyboard/kbdlayoutmanager.cpp
++++ /dev/null
+@@ -1,367 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "kbdlayoutmanager.h"
+-#include "ui_layoutmanager.h"
+-#include "closebutton.h"
+-
+-#include <QPainter>
+-#include <QPainterPath>
+-
+-#include <QDebug>
+-
+-extern "C" {
+-#include <libxklavier/xklavier.h>
+-#include <libmatekbd/matekbd-keyboard-config.h>
+-}
+-
+-#define MAXNUM 4
+-#define KBD_LAYOUTS_SCHEMA "org.mate.peripherals-keyboard-xkb.kbd"
+-#define KBD_LAYOUTS_KEY "layouts"
+-
+-XklEngine * engine;
+-XklConfigRegistry * config_registry;
+-
+-static void kbd_set_countries(XklConfigRegistry *config_registry, XklConfigItem *config_item, QList<Layout>  *list);
+-
+-static void kbd_set_languages(XklConfigRegistry *config_registry, XklConfigItem *config_item, QList<Layout>  *list);
+-
+-static void kbd_set_available_countries(XklConfigRegistry *config_registry, XklConfigItem * parent_config_item, XklConfigItem *config_item, QList<Layout>  *list);
+-
+-static void kbd_set_available_languages(XklConfigRegistry *config_registry, XklConfigItem * parent_config_item, XklConfigItem *config_item, QList<Layout>  *list);
+-
+-QList<Layout> languages;
+-QList<Layout> countries;
+-QStringList availablelayoutsList;
+-
+-extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
+-
+-KbdLayoutManager::KbdLayoutManager(QWidget *parent) :
+-    QDialog(parent),
+-    ui(new Ui::LayoutManager)
+-{
+-    ui->setupUi(this);
+-    this->setWindowTitle(tr("Add Layout"));
+-    setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
+-    setAttribute(Qt::WA_TranslucentBackground);
+-    setAttribute(Qt::WA_DeleteOnClose);
+-
+-    ui->titleLabel->setStyleSheet("QLabel{color: palette(windowText);}");
+-
+-    ui->closeBtn->setIcon(QIcon("://img/titlebar/close.svg"));
+-
+-    ui->variantFrame->setFrameShape(QFrame::Shape::Box);
+-
+-    configRegistry();
+-
+-    const QByteArray id(KBD_LAYOUTS_SCHEMA);
+-    if (QGSettings::isSchemaInstalled(id)){
+-        kbdsettings = new QGSettings(id);
+-        setupComponent();
+-        setupConnect();
+-    }
+-}
+-
+-KbdLayoutManager::~KbdLayoutManager()
+-{
+-    delete ui;
+-    ui = nullptr;
+-    if (QGSettings::isSchemaInstalled(KBD_LAYOUTS_SCHEMA)){
+-        delete kbdsettings;
+-        kbdsettings = nullptr;
+-    }
+-}
+-
+-void KbdLayoutManager::configRegistry(){
+-    engine = xkl_engine_get_instance (QX11Info::display());
+-    config_registry = xkl_config_registry_get_instance (engine);
+-
+-    xkl_config_registry_load (config_registry, false);
+-
+-    xkl_config_registry_foreach_country(config_registry,(ConfigItemProcessFunc)kbd_set_countries, NULL);
+-
+-    xkl_config_registry_foreach_language(config_registry,(ConfigItemProcessFunc)kbd_set_languages, NULL);
+-
+-}
+-
+-void KbdLayoutManager::setupComponent(){
+-
+-    ui->countryRadioButton->setChecked(true);
+-
+-    //设置listwidget无点击
+-    ui->listWidget->setFocusPolicy(Qt::NoFocus);
+-    ui->listWidget->setSelectionMode(QAbstractItemView::NoSelection);
+-
+-    rebuildSelectListWidget();
+-    rebuildVariantCombo();
+-
+-    rebuild_listwidget();
+-
+-}
+-
+-void KbdLayoutManager::setupConnect(){
+-    connect(ui->closeBtn, &CloseButton::clicked, [=]{
+-        close();
+-    });
+-    connect(ui->cancelBtn, &QPushButton::clicked, [=]{
+-        close();
+-    });
+-
+-#if QT_VERSION <= QT_VERSION_CHECK(5, 12, 0)
+-    connect(ui->buttonGroup, static_cast<void(QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), [=]{
+-#else
+-    connect(ui->buttonGroup, QOverload<int>::of(&QButtonGroup::buttonClicked), [=]{
+-#endif
+-        rebuildSelectListWidget();
+-
+-        rebuildVariantCombo();
+-    });
+-
+-    connect(ui->selectListWidget, &QListWidget::currentItemChanged, [=]{
+-        rebuildVariantCombo();
+-    });
+-
+-#if QT_VERSION <= QT_VERSION_CHECK(5, 12, 0)
+-    connect(ui->variantComboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int index){
+-#else
+-    connect(ui->variantComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int index) {
+-#endif
+-        Q_UNUSED(index)
+-        if (index != -1)
+-            installedNoSame();
+-    });
+-
+-    connect(ui->installBtn, &QPushButton::clicked, this, [=]{
+-        QString layout = ui->variantComboBox->currentData().toString();
+-
+-        QStringList layouts = kbdsettings->get(KBD_LAYOUTS_KEY).toStringList();
+-        layouts.append(layout);
+-
+-        kbdsettings->set(KBD_LAYOUTS_KEY, layouts);
+-        rebuild_listwidget();
+-    });
+-
+-    connect(ui->PreBtn, &QPushButton::clicked, this, &KbdLayoutManager::preview);
+-}
+-
+-void KbdLayoutManager::installedNoSame(){
+-
+-    //最多4个布局,来自GTK控制面板,原因未知
+-    QStringList layouts = kbdsettings->get(KBD_LAYOUTS_KEY).toStringList();
+-    if (layouts.length() < MAXNUM  && !layouts.contains(ui->variantComboBox->currentData(Qt::UserRole).toString()))
+-        ui->installBtn->setEnabled(true);
+-    else
+-        ui->installBtn->setEnabled(false);
+-}
+-
+-void KbdLayoutManager::rebuildSelectListWidget(){
+-
+-    ui->selectListWidget->blockSignals(true);
+-    ui->selectListWidget->clear();
+-    if (ui->countryRadioButton->isChecked()){
+-        for (Layout keylayout : countries){
+-            if (keylayout.name == "TW")
+-                continue;
+-            QListWidgetItem * item = new QListWidgetItem(ui->selectListWidget);
+-            item->setText(keylayout.desc);
+-            item->setData(Qt::UserRole, keylayout.name);
+-            ui->selectListWidget->addItem(item);
+-        }
+-    } else if (ui->languageRadioButton->isChecked()){
+-        for (Layout keylayout : languages){
+-            QListWidgetItem * item = new QListWidgetItem(ui->selectListWidget);
+-            item->setText(keylayout.desc);
+-            item->setData(Qt::UserRole, keylayout.name);
+-            ui->selectListWidget->addItem(item);
+-        }
+-    }
+-
+-
+-    ui->selectListWidget->setCurrentRow(0);
+-    ui->selectListWidget->blockSignals(false);
+-}
+-
+-void KbdLayoutManager::rebuildVariantCombo(){
+-    QString id = ui->selectListWidget->currentItem()->data(Qt::UserRole).toString();
+-
+-    availablelayoutsList.clear();
+-    char * iid = id.toLatin1().data();
+-    if (ui->countryRadioButton->isChecked())
+-        kbd_trigger_available_countries(iid);
+-    else if (ui->languageRadioButton->isChecked())
+-        kbd_trigger_available_languages(iid);
+-
+-    ui->variantComboBox->clear();
+-    for (QString name : availablelayoutsList){
+-       QString desc = kbd_get_description_by_id(const_cast<const char *>(name.toLatin1().data()));
+-       ui->variantComboBox->blockSignals(true);
+-       ui->variantComboBox->addItem(desc, name);
+-       ui->variantComboBox->blockSignals(false);
+-    }
+-
+-    installedNoSame();
+-}
+-
+-void KbdLayoutManager::rebuild_listwidget(){
+-    installedNoSame();
+-
+-    ui->listWidget->clear();
+-
+-    QStringList layouts = kbdsettings->get(KBD_LAYOUTS_KEY).toStringList();
+-    for (QString layout : layouts){
+-        QString desc = kbd_get_description_by_id(const_cast<const char *>(layout.toLatin1().data()));
+-
+-        //自定义widget
+-        QWidget * layoutWidget = new QWidget();
+-        layoutWidget->setAttribute(Qt::WA_DeleteOnClose);
+-        QHBoxLayout * mainHLayout = new QHBoxLayout(layoutWidget);
+-        QLabel * layoutLabel = new QLabel(layoutWidget);
+-        QPushButton * layoutdelBtn = new QPushButton(layoutWidget);
+-        layoutdelBtn->setText(tr("Del"));
+-
+-        connect(layoutdelBtn, &QPushButton::clicked, this, [=]{
+-            QStringList layouts = kbdsettings->get(KBD_LAYOUTS_KEY).toStringList();
+-            layouts.removeOne(layout);
+-            kbdsettings->set(KBD_LAYOUTS_KEY, layouts);
+-            rebuild_listwidget();
+-        });
+-
+-        mainHLayout->addWidget(layoutLabel);
+-        mainHLayout->addStretch();
+-        mainHLayout->addWidget(layoutdelBtn);
+-        layoutWidget->setLayout(mainHLayout);
+-
+-        QListWidgetItem * item = new QListWidgetItem(ui->listWidget);
+-        item->setData(Qt::UserRole, layout);
+-        item->setSizeHint(QSize(ui->listWidget->width(), 50));
+-
+-        layoutLabel->setText(desc);
+-        QFontMetrics fontWidth(layoutLabel->font());
+-        QString elideNote = fontWidth.elidedText(desc, Qt::ElideRight, 100);
+-        layoutLabel->setText(elideNote);
+-        layoutLabel->setToolTip(desc);
+-        ui->listWidget->addItem(item);
+-        ui->listWidget->setItemWidget(item, layoutWidget);
+-    }
+-
+-    if (!ui->listWidget->count()) {
+-        ui->installedFrame->setVisible(false);
+-    } else {
+-        ui->installedFrame->setVisible(true);
+-    }
+-}
+-
+-void KbdLayoutManager::preview()
+-{
+-    QString variantID;
+-    QString layoutID = ui->variantComboBox->currentData(Qt::UserRole).toString();
+-    QStringList layList = layoutID.split('\t');
+-
+-    for (int i = 0; i < layList.length(); i++) {
+-        if (0 == i) {
+-            layoutID = layList.at(0);
+-        }
+-        if (1 == i) {
+-            variantID = layList.at(1);
+-        }
+-    }
+-}
+-
+-void KbdLayoutManager::kbd_trigger_available_countries(char *countryid){
+-    xkl_config_registry_foreach_country_variant (config_registry, countryid, (TwoConfigItemsProcessFunc)kbd_set_available_countries, NULL);
+-}
+-
+-void KbdLayoutManager::kbd_trigger_available_languages(char *languageid){
+-    xkl_config_registry_foreach_language_variant (config_registry, languageid, (TwoConfigItemsProcessFunc)kbd_set_available_languages, NULL);
+-}
+-
+-QString KbdLayoutManager::kbd_get_description_by_id(const char *visible){
+-    char *l, *sl, *v, *sv;
+-    if (matekbd_keyboard_config_get_descriptions(config_registry, visible, &sl, &l, &sv, &v))
+-        visible = matekbd_keyboard_config_format_full_layout (l, v);
+-    return QString(const_cast<char *>(visible));
+-}
+-
+-static void kbd_set_countries(XklConfigRegistry *config_registry, XklConfigItem *config_item, QList<Layout> *list){
+-    Q_UNUSED(config_registry); Q_UNUSED(list);
+-    Layout item;
+-    item.desc = config_item->description;
+-    item.name = config_item->name;
+-
+-    countries.append(item);
+-}
+-
+-static void kbd_set_languages(XklConfigRegistry *config_registry, XklConfigItem *config_item, QList<Layout> *list){
+-    Q_UNUSED(config_registry); Q_UNUSED(list);
+-    Layout item;
+-    item.desc = config_item->description;
+-    item.name = config_item->name;
+-    languages.append(item);
+-}
+-
+-static void kbd_set_available_countries(XklConfigRegistry *config_registry, XklConfigItem * parent_config_item, XklConfigItem *config_item, QList<Layout>  *list){
+-    Q_UNUSED(config_registry); Q_UNUSED(list);
+-    const gchar *xkb_id = config_item ? matekbd_keyboard_config_merge_items (parent_config_item->name, config_item->name) : parent_config_item->name;
+-    availablelayoutsList.append(QString(const_cast<char *>(xkb_id)));
+-}
+-
+-static void kbd_set_available_languages(XklConfigRegistry *config_registry, XklConfigItem *parent_config_item, XklConfigItem *config_item, QList<Layout> *list){
+-    Q_UNUSED(list);
+-    kbd_set_available_countries(config_registry, parent_config_item, config_item, NULL);
+-}
+-
+-
+-void KbdLayoutManager::paintEvent(QPaintEvent *event){
+-    Q_UNUSED(event);
+-    QPainter p(this);
+-    p.setRenderHint(QPainter::Antialiasing);
+-    QPainterPath rectPath;
+-    rectPath.addRoundedRect(this->rect().adjusted(10, 10, -10, -10), 6, 6);
+-
+-    // 画一个黑底
+-    QPixmap pixmap(this->rect().size());
+-    pixmap.fill(Qt::transparent);
+-    QPainter pixmapPainter(&pixmap);
+-    pixmapPainter.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter.setPen(Qt::transparent);
+-    pixmapPainter.setBrush(Qt::black);
+-    pixmapPainter.setOpacity(0.65);
+-    pixmapPainter.drawPath(rectPath);
+-    pixmapPainter.end();
+-
+-    // 模糊这个黑底
+-    QImage img = pixmap.toImage();
+-    qt_blurImage(img, 10, false, false);
+-    // 挖掉中心
+-    pixmap = QPixmap::fromImage(img);
+-    QPainter pixmapPainter2(&pixmap);
+-    pixmapPainter2.setRenderHint(QPainter::Antialiasing);
+-    pixmapPainter2.setCompositionMode(QPainter::CompositionMode_Clear);
+-    pixmapPainter2.setPen(Qt::transparent);
+-    pixmapPainter2.setBrush(Qt::transparent);
+-    pixmapPainter2.drawPath(rectPath);
+-
+-    // 绘制阴影
+-    p.drawPixmap(this->rect(), pixmap, pixmap.rect());
+-    // 绘制一个背景
+-    p.save();
+-    p.fillPath(rectPath,palette().color(QPalette::Base));
+-
+-    p.restore();
+-}
+diff --git a/plugins/devices/keyboard/kbdlayoutmanager.h b/plugins/devices/keyboard/kbdlayoutmanager.h
+deleted file mode 100644
+index dbcbb2f..0000000
+--- a/plugins/devices/keyboard/kbdlayoutmanager.h
++++ /dev/null
+@@ -1,82 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef KBDLAYOUTMANAGER_H
+-#define KBDLAYOUTMANAGER_H
+-
+-#include <QWidget>
+-#include <QDialog>
+-#include <QX11Info>
+-#include <QGSettings>
+-
+-/* qt会将glib里的signals成员识别为宏,所以取消该宏
+- * 后面如果用到signals时,使用Q_SIGNALS代替即可
+- **/
+-#ifdef signals
+-#undef signals
+-#endif
+-
+-
+-typedef struct _Layout Layout;
+-
+-struct _Layout{
+-    QString desc;
+-    QString name;
+-};
+-
+-namespace Ui {
+-class LayoutManager;
+-}
+-
+-class KbdLayoutManager : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit KbdLayoutManager(QWidget *parent = 0);
+-    ~KbdLayoutManager();
+-
+-    QString kbd_get_description_by_id(const char *visible);
+-
+-    void kbd_trigger_available_countries(char * countryid);
+-    void kbd_trigger_available_languages(char * languageid);
+-
+-    void configRegistry();
+-    void setupComponent();
+-    void setupConnect();
+-    void rebuildSelectListWidget();
+-    void rebuildVariantCombo();
+-
+-    void rebuild_listwidget();
+-    void preview();
+-
+-    void installedNoSame();
+-
+-protected:
+-    void paintEvent(QPaintEvent * event);
+-
+-private:
+-    Ui::LayoutManager *ui;
+-
+-    QStringList layoutsList;
+-
+-    QGSettings * kbdsettings;
+-};
+-
+-#endif // KBDLAYOUTMANAGER_H
+diff --git a/plugins/devices/keyboard/kbdlayoutmanager.ui b/plugins/devices/keyboard/kbdlayoutmanager.ui
+deleted file mode 100644
+index 421cf3e..0000000
+--- a/plugins/devices/keyboard/kbdlayoutmanager.ui
++++ /dev/null
+@@ -1,298 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>KbdLayoutManager</class>
+- <widget class="QWidget" name="KbdLayoutManager">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>742</width>
+-    <height>432</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>742</width>
+-    <height>432</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>742</width>
+-    <height>432</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string notr="true">Form</string>
+-  </property>
+-  <layout class="QHBoxLayout" name="horizontalLayout_2">
+-   <property name="spacing">
+-    <number>30</number>
+-   </property>
+-   <property name="leftMargin">
+-    <number>25</number>
+-   </property>
+-   <property name="topMargin">
+-    <number>35</number>
+-   </property>
+-   <property name="rightMargin">
+-    <number>25</number>
+-   </property>
+-   <property name="bottomMargin">
+-    <number>10</number>
+-   </property>
+-   <item>
+-    <widget class="QListWidget" name="listWidget">
+-     <property name="minimumSize">
+-      <size>
+-       <width>330</width>
+-       <height>0</height>
+-      </size>
+-     </property>
+-     <property name="maximumSize">
+-      <size>
+-       <width>330</width>
+-       <height>16777215</height>
+-      </size>
+-     </property>
+-    </widget>
+-   </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="verticalLayout">
+-     <property name="spacing">
+-      <number>10</number>
+-     </property>
+-     <item>
+-      <widget class="QRadioButton" name="countryRadioButton">
+-       <property name="text">
+-        <string>C</string>
+-       </property>
+-       <attribute name="buttonGroup">
+-        <string notr="true">buttonGroup</string>
+-       </attribute>
+-      </widget>
+-     </item>
+-     <item>
+-      <widget class="QWidget" name="countryWidget" native="true">
+-       <layout class="QHBoxLayout" name="horizontalLayout_5">
+-        <property name="spacing">
+-         <number>0</number>
+-        </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>
+-         <widget class="QComboBox" name="countryComboBox">
+-          <property name="minimumSize">
+-           <size>
+-            <width>0</width>
+-            <height>32</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>32</height>
+-           </size>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <spacer name="horizontalSpacer_2">
+-          <property name="orientation">
+-           <enum>Qt::Horizontal</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>40</width>
+-            <height>20</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-     <item>
+-      <spacer name="verticalSpacer_3">
+-       <property name="orientation">
+-        <enum>Qt::Vertical</enum>
+-       </property>
+-       <property name="sizeType">
+-        <enum>QSizePolicy::Fixed</enum>
+-       </property>
+-       <property name="sizeHint" stdset="0">
+-        <size>
+-         <width>20</width>
+-         <height>20</height>
+-        </size>
+-       </property>
+-      </spacer>
+-     </item>
+-     <item>
+-      <widget class="QRadioButton" name="languageRadioButton">
+-       <property name="text">
+-        <string>L</string>
+-       </property>
+-       <attribute name="buttonGroup">
+-        <string notr="true">buttonGroup</string>
+-       </attribute>
+-      </widget>
+-     </item>
+-     <item>
+-      <widget class="QWidget" name="languageWidget" native="true">
+-       <layout class="QHBoxLayout" name="horizontalLayout_6">
+-        <property name="spacing">
+-         <number>0</number>
+-        </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>
+-         <widget class="QComboBox" name="languageComboBox">
+-          <property name="minimumSize">
+-           <size>
+-            <width>0</width>
+-            <height>32</height>
+-           </size>
+-          </property>
+-          <property name="maximumSize">
+-           <size>
+-            <width>16777215</width>
+-            <height>32</height>
+-           </size>
+-          </property>
+-         </widget>
+-        </item>
+-        <item>
+-         <spacer name="horizontalSpacer_3">
+-          <property name="orientation">
+-           <enum>Qt::Horizontal</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>40</width>
+-            <height>20</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-       </layout>
+-      </widget>
+-     </item>
+-     <item>
+-      <spacer name="verticalSpacer">
+-       <property name="orientation">
+-        <enum>Qt::Vertical</enum>
+-       </property>
+-       <property name="sizeHint" stdset="0">
+-        <size>
+-         <width>20</width>
+-         <height>40</height>
+-        </size>
+-       </property>
+-      </spacer>
+-     </item>
+-     <item>
+-      <layout class="QHBoxLayout" name="horizontalLayout_3">
+-       <property name="spacing">
+-        <number>10</number>
+-       </property>
+-       <item>
+-        <widget class="QLabel" name="label">
+-         <property name="text">
+-          <string>Variant</string>
+-         </property>
+-        </widget>
+-       </item>
+-       <item>
+-        <widget class="QComboBox" name="variantComboBox">
+-         <property name="minimumSize">
+-          <size>
+-           <width>0</width>
+-           <height>32</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>16777215</width>
+-           <height>32</height>
+-          </size>
+-         </property>
+-        </widget>
+-       </item>
+-       <item>
+-        <spacer name="horizontalSpacer">
+-         <property name="orientation">
+-          <enum>Qt::Horizontal</enum>
+-         </property>
+-         <property name="sizeHint" stdset="0">
+-          <size>
+-           <width>40</width>
+-           <height>20</height>
+-          </size>
+-         </property>
+-        </spacer>
+-       </item>
+-       <item>
+-        <widget class="QPushButton" name="addBtn">
+-         <property name="minimumSize">
+-          <size>
+-           <width>0</width>
+-           <height>32</height>
+-          </size>
+-         </property>
+-         <property name="maximumSize">
+-          <size>
+-           <width>16777215</width>
+-           <height>32</height>
+-          </size>
+-         </property>
+-         <property name="text">
+-          <string>Add</string>
+-         </property>
+-        </widget>
+-       </item>
+-      </layout>
+-     </item>
+-     <item>
+-      <spacer name="verticalSpacer_2">
+-       <property name="orientation">
+-        <enum>Qt::Vertical</enum>
+-       </property>
+-       <property name="sizeHint" stdset="0">
+-        <size>
+-         <width>20</width>
+-         <height>40</height>
+-        </size>
+-       </property>
+-      </spacer>
+-     </item>
+-    </layout>
+-   </item>
+-  </layout>
+- </widget>
+- <resources/>
+- <connections/>
+- <buttongroups>
+-  <buttongroup name="buttonGroup"/>
+- </buttongroups>
+-</ui>
+diff --git a/plugins/devices/keyboard/keyboardcontrol.cpp b/plugins/devices/keyboard/keyboardcontrol.cpp
+deleted file mode 100644
+index ee3faf2..0000000
+--- a/plugins/devices/keyboard/keyboardcontrol.cpp
++++ /dev/null
+@@ -1,70 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "keyboardcontrol.h"
+-
+-KeyboardControl::KeyboardControl() : mFirstLoad(true)
+-{
+-    pluginName = tr("Keyboard");
+-    pluginType = DEVICES;
+-}
+-
+-KeyboardControl::~KeyboardControl()
+-{
+-}
+-
+-QString KeyboardControl::plugini18nName()
+-{
+-    return pluginName;
+-}
+-
+-int KeyboardControl::pluginTypes() {
+-    return pluginType;
+-}
+-
+-QWidget *KeyboardControl::pluginUi()
+-{
+-    if (mFirstLoad) {
+-        mFirstLoad = false;
+-        pluginWidget = new KeyboardMain;
+-        pluginWidget->setAttribute(Qt::WA_DeleteOnClose);
+-    }
+-    return pluginWidget;
+-}
+-
+-const QString KeyboardControl::name() const
+-{
+-    return QStringLiteral("Keyboard");
+-}
+-
+-bool KeyboardControl::isShowOnHomePage() const
+-{
+-    return true;
+-}
+-
+-QIcon KeyboardControl::icon() const
+-{
+-    return QIcon::fromTheme("input-keyboard-symbolic");
+-}
+-
+-bool KeyboardControl::isEnable() const
+-{
+-    return false;
+-}
+-
+diff --git a/plugins/devices/keyboard/keyboardcontrol.h b/plugins/devices/keyboard/keyboardcontrol.h
+deleted file mode 100644
+index 388aeb8..0000000
+--- a/plugins/devices/keyboard/keyboardcontrol.h
++++ /dev/null
+@@ -1,55 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef KEYBOARDCONTROL_H
+-#define KEYBOARDCONTROL_H
+-
+-#include <QObject>
+-
+-#include "shell/interface.h"
+-#include "keyboardmain.h"
+-
+-
+-class KeyboardControl : public QObject, CommonInterface
+-{
+-    Q_OBJECT
+-    Q_PLUGIN_METADATA(IID "org.ukcc.CommonInterface")
+-    Q_INTERFACES(CommonInterface)
+-
+-public:
+-    KeyboardControl();
+-    ~KeyboardControl() Q_DECL_OVERRIDE;
+-
+-    QString plugini18nName() Q_DECL_OVERRIDE;
+-    int pluginTypes() Q_DECL_OVERRIDE;
+-    QWidget *pluginUi() Q_DECL_OVERRIDE;
+-    const QString name() const Q_DECL_OVERRIDE;
+-    bool isShowOnHomePage() const Q_DECL_OVERRIDE;
+-    QIcon icon() const Q_DECL_OVERRIDE;
+-    bool isEnable() const Q_DECL_OVERRIDE;
+-
+-private:
+-    QString pluginName;
+-    int pluginType;
+-    KeyboardMain *pluginWidget;
+-
+-    bool mFirstLoad;
+-};
+-
+-#endif // KEYBOARDCONTROL_H
+diff --git a/plugins/devices/keyboard/keyboardlayout.cpp b/plugins/devices/keyboard/keyboardlayout.cpp
+deleted file mode 100644
+index 0ecb3f2..0000000
+--- a/plugins/devices/keyboard/keyboardlayout.cpp
++++ /dev/null
+@@ -1,111 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#include "keyboardlayout.h"
+-
+-#include <QDebug>
+-
+-extern "C" {
+-#include <libxklavier/xklavier.h>
+-#include <libmatekbd/matekbd-keyboard-config.h>
+-}
+-
+-XklEngine * engine;
+-XklConfigRegistry * config_registry;
+-
+-static void KeyboardXkb_get_countries(XklConfigRegistry *config_registry, XklConfigItem *config_item, QList<Layout>  *list);
+-
+-static void KeyboardXkb_get_languages(XklConfigRegistry *config_registry, XklConfigItem *config_item, QList<Layout>  *list);
+-
+-static void KeyboardXkb_get_available_countries(XklConfigRegistry *config_registry, XklConfigItem * parent_config_item, XklConfigItem *config_item, QList<Layout>  *list);
+-
+-static void KeyboardXkb_get_available_languages(XklConfigRegistry *config_registry, XklConfigItem * parent_config_item, XklConfigItem *config_item, QList<Layout>  *list);
+-
+-
+-QList<Layout> languages;
+-QList<Layout> countries;
+-
+-KeyboardLayout::KeyboardLayout()
+-{
+-
+-    data_init();
+-
+-    char * id = QString("ee").toLatin1().data();
+-    QString desc = kbd_get_description_by_id(id);
+-
+-}
+-
+-KeyboardLayout::~KeyboardLayout()
+-{
+-
+-}
+-
+-void KeyboardLayout::data_init(){
+-    engine = xkl_engine_get_instance (QX11Info::display());
+-    config_registry = xkl_config_registry_get_instance (engine);
+-
+-    xkl_config_registry_load (config_registry, false);
+-
+-    xkl_config_registry_foreach_country(config_registry,(ConfigItemProcessFunc)KeyboardXkb_get_countries, NULL);
+-
+-    xkl_config_registry_foreach_language(config_registry,(ConfigItemProcessFunc)KeyboardXkb_get_languages, NULL);
+-
+-//    char * country_id = QString("EE").toLatin1().data();
+-//    xkl_config_registry_foreach_country_variant (config_registry, country_id, (TwoConfigItemsProcessFunc)KeyboardXkb_get_available_countries, NULL);
+-
+-//    char * language_id = QString("est").toLatin1().data();
+-//    xkl_config_registry_foreach_language_variant (config_registry, language_id, (TwoConfigItemsProcessFunc)KeyboardXkb_get_available_languages, NULL);
+-}
+-
+-QString KeyboardLayout::kbd_get_description_by_id(const char *visible){
+-    char *l, *sl, *v, *sv;
+-    if (matekbd_keyboard_config_get_descriptions(config_registry, visible, &sl, &l, &sv, &v))
+-        visible = matekbd_keyboard_config_format_full_layout (l, v);
+-    return QString(const_cast<char *>(visible));
+-}
+-
+-static void KeyboardXkb_get_countries(XklConfigRegistry *config_registry, XklConfigItem *config_item, QList<Layout> *list){
+-    Layout item;
+-    item.desc = config_item->description;
+-    item.name = config_item->name;
+-
+-    qDebug()<<"countries" << "desc = "<<item.desc<<"name = "<<item.name ;
+-
+-
+-//    list->append(item);
+-    countries.append(item);
+-}
+-
+-static void KeyboardXkb_get_languages(XklConfigRegistry *config_registry, XklConfigItem *config_item, QList<Layout> *list){
+-    Layout item;
+-    item.desc = config_item->description;
+-    item.name = config_item->name;
+-     qDebug()<<"languages" << "desc = "<<item.desc<<"name = "<<item.name;
+-//    list->append(item);
+-    languages.append(item);
+-}
+-
+-static void KeyboardXkb_get_available_countries(XklConfigRegistry *config_registry, XklConfigItem * parent_config_item, XklConfigItem *config_item, QList<Layout>  *list){
+-    const gchar *xkb_id = config_item ? matekbd_keyboard_config_merge_items (parent_config_item->name, config_item->name) : parent_config_item->name;
+-    g_warning("------------->%s", xkb_id);
+-}
+-
+-static void KeyboardXkb_get_available_languages(XklConfigRegistry *config_registry, XklConfigItem *parent_config_item, XklConfigItem *config_item, QList<Layout> *list){
+-    KeyboardXkb_get_available_countries(config_registry, parent_config_item, config_item, NULL);
+-}
+diff --git a/plugins/devices/keyboard/keyboardlayout.h b/plugins/devices/keyboard/keyboardlayout.h
+deleted file mode 100644
+index 1f80cc0..0000000
+--- a/plugins/devices/keyboard/keyboardlayout.h
++++ /dev/null
+@@ -1,55 +0,0 @@
+-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+- *
+- * Copyright (C) 2019 Tianjin KYLIN Information Technology 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 this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-#ifndef KEYBOARDLAYOUT_H
+-#define KEYBOARDLAYOUT_H
+-
+-#include <QWidget>
+-#include <QX11Info>
+-
+-/* qt会将glib里的signals成员识别为宏,所以取消该宏
+- * 后面如果用到signals时,使用Q_SIGNALS代替即可
+- **/
+-#ifdef signals
+-#undef signals
+-#endif
+-
+-
+-typedef struct _Layout Layout;
+-
+-struct _Layout{
+-    QString desc;
+-    QString name;
+-};
+-
+-class KeyboardLayout : public QWidget
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit KeyboardLayout();
+-    ~KeyboardLayout();
+-
+-    void data_init();
+-
+-    QString kbd_get_description_by_id(const char *visible);
+-
+-};
+-
+-#endif // KEYBOARDLAYOUT_H
+diff --git a/plugins/devices/keyboard/layoutmanager.ui b/plugins/devices/keyboard/layoutmanager.ui
+deleted file mode 100644
+index f1a4b54..0000000
+--- a/plugins/devices/keyboard/layoutmanager.ui
++++ /dev/null
+@@ -1,480 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>LayoutManager</class>
+- <widget class="QDialog" name="LayoutManager">
+-  <property name="geometry">
+-   <rect>
+-    <x>0</x>
+-    <y>0</y>
+-    <width>572</width>
+-    <height>594</height>
+-   </rect>
+-  </property>
+-  <property name="minimumSize">
+-   <size>
+-    <width>572</width>
+-    <height>594</height>
+-   </size>
+-  </property>
+-  <property name="maximumSize">
+-   <size>
+-    <width>572</width>
+-    <height>594</height>
+-   </size>
+-  </property>
+-  <property name="windowTitle">
+-   <string>Dialog</string>
+-  </property>
+-  <layout class="QVBoxLayout" name="verticalLayout_2">
+-   <property name="spacing">
+-    <number>0</number>
+-   </property>
+-   <property name="leftMargin">
+-    <number>0</number>
+-   </property>
+-   <property name="topMargin">
+-    <number>15</number>
+-   </property>
+-   <property name="rightMargin">
+-    <number>15</number>
+-   </property>
+-   <property name="bottomMargin">
+-    <number>0</number>
+-   </property>
+-   <item>
+-    <widget class="QFrame" name="frame">
+-     <property name="frameShape">
+-      <enum>QFrame::NoFrame</enum>
+-     </property>
+-     <property name="frameShadow">
+-      <enum>QFrame::Raised</enum>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_3">
+-      <property name="spacing">
+-       <number>0</number>
+-      </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>
+-       <widget class="QFrame" name="closeFrame">
+-        <property name="minimumSize">
+-         <size>
+-          <width>0</width>
+-          <height>36</height>
+-         </size>
+-        </property>
+-        <property name="maximumSize">
+-         <size>
+-          <width>16777215</width>
+-          <height>36</height>
+-         </size>
+-        </property>
+-        <property name="frameShape">
+-         <enum>QFrame::StyledPanel</enum>
+-        </property>
+-        <property name="frameShadow">
+-         <enum>QFrame::Raised</enum>
+-        </property>
+-        <layout class="QHBoxLayout" name="horizontalLayout_2">
+-         <property name="spacing">
+-          <number>0</number>
+-         </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>
+-          <layout class="QHBoxLayout" name="horizontalLayout">
+-           <property name="spacing">
+-            <number>0</number>
+-           </property>
+-           <property name="leftMargin">
+-            <number>16</number>
+-           </property>
+-           <item>
+-            <widget class="TitleLabel" name="titleLabel">
+-             <property name="sizePolicy">
+-              <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-               <horstretch>0</horstretch>
+-               <verstretch>0</verstretch>
+-              </sizepolicy>
+-             </property>
+-             <property name="text">
+-              <string>Manager Keyboard Layout</string>
+-             </property>
+-            </widget>
+-           </item>
+-           <item>
+-            <spacer name="horizontalSpacer">
+-             <property name="orientation">
+-              <enum>Qt::Horizontal</enum>
+-             </property>
+-             <property name="sizeHint" stdset="0">
+-              <size>
+-               <width>40</width>
+-               <height>20</height>
+-              </size>
+-             </property>
+-            </spacer>
+-           </item>
+-           <item>
+-            <widget class="CloseButton" name="closeBtn">
+-             <property name="minimumSize">
+-              <size>
+-               <width>32</width>
+-               <height>32</height>
+-              </size>
+-             </property>
+-             <property name="maximumSize">
+-              <size>
+-               <width>32</width>
+-               <height>32</height>
+-              </size>
+-             </property>
+-             <property name="text">
+-              <string/>
+-             </property>
+-            </widget>
+-           </item>
+-          </layout>
+-         </item>
+-        </layout>
+-       </widget>
+-      </item>
+-      <item>
+-       <layout class="QVBoxLayout" name="verticalLayout_4">
+-        <property name="spacing">
+-         <number>24</number>
+-        </property>
+-        <property name="leftMargin">
+-         <number>32</number>
+-        </property>
+-        <property name="topMargin">
+-         <number>16</number>
+-        </property>
+-        <property name="rightMargin">
+-         <number>32</number>
+-        </property>
+-        <property name="bottomMargin">
+-         <number>48</number>
+-        </property>
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_6">
+-          <property name="spacing">
+-           <number>24</number>
+-          </property>
+-          <item>
+-           <widget class="QFrame" name="selectedFrame">
+-            <property name="minimumSize">
+-             <size>
+-              <width>240</width>
+-              <height>0</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>240</width>
+-              <height>16777215</height>
+-             </size>
+-            </property>
+-            <property name="frameShape">
+-             <enum>QFrame::StyledPanel</enum>
+-            </property>
+-            <property name="frameShadow">
+-             <enum>QFrame::Raised</enum>
+-            </property>
+-            <layout class="QVBoxLayout" name="verticalLayout_6">
+-             <property name="spacing">
+-              <number>16</number>
+-             </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>
+-              <layout class="QHBoxLayout" name="horizontalLayout_8">
+-               <property name="spacing">
+-                <number>32</number>
+-               </property>
+-               <item>
+-                <widget class="QRadioButton" name="languageRadioButton">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                 <property name="text">
+-                  <string>Language</string>
+-                 </property>
+-                 <attribute name="buttonGroup">
+-                  <string notr="true">buttonGroup</string>
+-                 </attribute>
+-                </widget>
+-               </item>
+-               <item>
+-                <widget class="QRadioButton" name="countryRadioButton">
+-                 <property name="sizePolicy">
+-                  <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                   <horstretch>0</horstretch>
+-                   <verstretch>0</verstretch>
+-                  </sizepolicy>
+-                 </property>
+-                 <property name="text">
+-                  <string>Country</string>
+-                 </property>
+-                 <attribute name="buttonGroup">
+-                  <string notr="true">buttonGroup</string>
+-                 </attribute>
+-                </widget>
+-               </item>
+-               <item>
+-                <spacer name="horizontalSpacer_3">
+-                 <property name="orientation">
+-                  <enum>Qt::Horizontal</enum>
+-                 </property>
+-                 <property name="sizeHint" stdset="0">
+-                  <size>
+-                   <width>40</width>
+-                   <height>20</height>
+-                  </size>
+-                 </property>
+-                </spacer>
+-               </item>
+-              </layout>
+-             </item>
+-             <item>
+-              <widget class="QListWidget" name="selectListWidget"/>
+-             </item>
+-             <item>
+-              <widget class="QFrame" name="variantFrame">
+-               <property name="frameShape">
+-                <enum>QFrame::StyledPanel</enum>
+-               </property>
+-               <property name="frameShadow">
+-                <enum>QFrame::Raised</enum>
+-               </property>
+-               <layout class="QHBoxLayout" name="horizontalLayout_3">
+-                <item>
+-                 <widget class="QLabel" name="label_2">
+-                  <property name="sizePolicy">
+-                   <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                    <horstretch>0</horstretch>
+-                    <verstretch>0</verstretch>
+-                   </sizepolicy>
+-                  </property>
+-                  <property name="text">
+-                   <string>Variant</string>
+-                  </property>
+-                 </widget>
+-                </item>
+-                <item>
+-                 <widget class="QComboBox" name="variantComboBox"/>
+-                </item>
+-               </layout>
+-              </widget>
+-             </item>
+-            </layout>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="QFrame" name="installedFrame">
+-            <property name="minimumSize">
+-             <size>
+-              <width>240</width>
+-              <height>0</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>240</width>
+-              <height>16777215</height>
+-             </size>
+-            </property>
+-            <property name="frameShape">
+-             <enum>QFrame::StyledPanel</enum>
+-            </property>
+-            <property name="frameShadow">
+-             <enum>QFrame::Raised</enum>
+-            </property>
+-            <layout class="QVBoxLayout" name="verticalLayout_7">
+-             <property name="spacing">
+-              <number>16</number>
+-             </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>
+-              <widget class="QLabel" name="label">
+-               <property name="sizePolicy">
+-                <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+-                 <horstretch>0</horstretch>
+-                 <verstretch>0</verstretch>
+-                </sizepolicy>
+-               </property>
+-               <property name="text">
+-                <string>Layout installed</string>
+-               </property>
+-              </widget>
+-             </item>
+-             <item>
+-              <widget class="QListWidget" name="listWidget"/>
+-             </item>
+-            </layout>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-        <item>
+-         <spacer name="verticalSpacer">
+-          <property name="orientation">
+-           <enum>Qt::Vertical</enum>
+-          </property>
+-          <property name="sizeType">
+-           <enum>QSizePolicy::Fixed</enum>
+-          </property>
+-          <property name="sizeHint" stdset="0">
+-           <size>
+-            <width>20</width>
+-            <height>24</height>
+-           </size>
+-          </property>
+-         </spacer>
+-        </item>
+-        <item>
+-         <layout class="QHBoxLayout" name="horizontalLayout_7">
+-          <property name="spacing">
+-           <number>8</number>
+-          </property>
+-          <item>
+-           <widget class="QPushButton" name="PreBtn">
+-            <property name="minimumSize">
+-             <size>
+-              <width>120</width>
+-              <height>36</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>120</width>
+-              <height>36</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string>Preview</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <spacer name="horizontalSpacer_2">
+-            <property name="orientation">
+-             <enum>Qt::Horizontal</enum>
+-            </property>
+-            <property name="sizeHint" stdset="0">
+-             <size>
+-              <width>40</width>
+-              <height>20</height>
+-             </size>
+-            </property>
+-           </spacer>
+-          </item>
+-          <item>
+-           <widget class="QPushButton" name="cancelBtn">
+-            <property name="minimumSize">
+-             <size>
+-              <width>120</width>
+-              <height>36</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>120</width>
+-              <height>36</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string>Cancel</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <widget class="QPushButton" name="installBtn">
+-            <property name="minimumSize">
+-             <size>
+-              <width>120</width>
+-              <height>36</height>
+-             </size>
+-            </property>
+-            <property name="maximumSize">
+-             <size>
+-              <width>120</width>
+-              <height>36</height>
+-             </size>
+-            </property>
+-            <property name="text">
+-             <string>Install</string>
+-            </property>
+-           </widget>
+-          </item>
+-         </layout>
+-        </item>
+-       </layout>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+-  </layout>
+- </widget>
+- <customwidgets>
+-  <customwidget>
+-   <class>TitleLabel</class>
+-   <extends>QLabel</extends>
+-   <header location="global">titlelabel.h</header>
+-  </customwidget>
+-  <customwidget>
+-   <class>CloseButton</class>
+-   <extends>QPushButton</extends>
+-   <header location="global">closebutton.h</header>
+-  </customwidget>
+- </customwidgets>
+- <resources/>
+- <connections/>
+- <buttongroups>
+-  <buttongroup name="buttonGroup"/>
+- </buttongroups>
+-</ui>
+diff --git a/plugins/devices/keyboard/org.ukui.control-center.keybinding.gschema.xml b/plugins/devices/keyboard/org.ukui.control-center.keybinding.gschema.xml
+deleted file mode 100644
+index df8859e..0000000
+--- a/plugins/devices/keyboard/org.ukui.control-center.keybinding.gschema.xml
++++ /dev/null
+@@ -1,19 +0,0 @@
+-<schemalist gettext-domain="ukui-control-center">
+-    <schema id="org.ukui.control-center.keybinding">
+-        <key name="binding" type="s">
+-            <default>''</default>
+-            <summary>Keybinding</summary>
+-            <description>Keybinding associated with a custom shortcut.</description>
+-        </key>
+-        <key name="action" type="s">
+-            <default>''</default>
+-            <summary>Command</summary>
+-            <description>Command associated with a custom keybinding.</description>
+-        </key>
+-        <key name="name" type="s">
+-            <default>''</default>
+-            <summary>Name</summary>
+-            <description>Description associated with a custom keybinding.</description>
+-        </key>
+-    </schema>
+-</schemalist>
+diff --git a/plugins/devices/keyboard/preview/config-keyboard.h b/plugins/devices/keyboard/preview/config-keyboard.h
+deleted file mode 100644
+index 3c0331c..0000000
+--- a/plugins/devices/keyboard/preview/config-keyboard.h
++++ /dev/null
+@@ -1,9 +0,0 @@
+-#ifndef CONFIG_KEYBOARD_H
+-#define CONFIG_KEYBOARD_H
+-
+-#define HAVE_XINPUT
+-/* #undef HAVE_UDEV */
+-
+-#define NEW_GEOMETRY
+-
+-#endif // CONFIG_KEYBOARD_H
+diff --git a/plugins/devices/keyboard/preview/config-workspace.h b/plugins/devices/keyboard/preview/config-workspace.h
+deleted file mode 100644
+index 12fc40a..0000000
+--- a/plugins/devices/keyboard/preview/config-workspace.h
++++ /dev/null
+@@ -1,166 +0,0 @@
+-/* config-workspace.h.  Generated by cmake from config-workspace.h.cmake  */
+-
+-/* #undef HAVE_QIMAGEBLITZ */
+-
+-/* Define if you have DPMS support */
+-#define HAVE_DPMS 1
+-
+-/* Define if you have the DPMSCapable prototype in <X11/extensions/dpms.h> */
+-/* #undef HAVE_DPMSCAPABLE_PROTO */
+-
+-/* Define if you have the DPMSInfo prototype in <X11/extensions/dpms.h> */
+-/* #undef HAVE_DPMSINFO_PROTO */
+-
+-/* Defines if your system has the libfontconfig library */
+-#define HAVE_FONTCONFIG 1
+-
+-/* Defines if your system has the freetype library */
+-#define HAVE_FREETYPE 1
+-
+-/* Define if you have gethostname */
+-/* #undef HAVE_GETHOSTNAME */
+-
+-/* Define if you have the gethostname prototype */
+-/* #undef HAVE_GETHOSTNAME_PROTO */
+-
+-/* Define to 1 if you have the `getpeereid' function. */
+-/* #undef HAVE_GETPEEREID */
+-
+-/* Defines if you have Solaris' libkstat */
+-/* #undef HAVE_KSTAT */
+-
+-/* Define if you have long long as datatype */
+-/* #undef HAVE_LONG_LONG */
+-
+-/* Define to 1 if you have the `nice' function. */
+-/* #undef HAVE_NICE */
+-
+-/* Define to 1 if you have the <sasl.h> header file. */
+-/* #undef HAVE_SASL_H */
+-
+-/* Define to 1 if you have the <sasl/sasl.h> header file. */
+-/* #undef HAVE_SASL_SASL_H */
+-
+-/* Define to 1 if you have the `setpriority' function. */
+-#define HAVE_SETPRIORITY 1
+-
+-/* Define to 1 if you have the `sigaction' function. */
+-/* #undef HAVE_SIGACTION */
+-
+-/* Define to 1 if you have the `sigset' function. */
+-/* #undef HAVE_SIGSET */
+-
+-/* Define to 1 if you have statvfs */
+-#define HAVE_STATVFS 1
+-
+-/* Define to 1 if you have the <string.h> header file. */
+-/* #undef HAVE_STRING_H */
+-
+-/* Define if you have the struct ucred */
+-/* #undef HAVE_STRUCT_UCRED */
+-
+-/* Define to 1 if you have the <sys/loadavg.h> header file. */
+-/* #undef HAVE_SYS_LOADAVG_H */
+-
+-/* Define to 1 if you have the <sys/mount.h> header file. */
+-#define HAVE_SYS_MOUNT_H 1
+-
+-/* Define to 1 if you have the <sys/param.h> header file. */
+-#define HAVE_SYS_PARAM_H 1
+-
+-/* Define to 1 if you have the <sys/statfs.h> header file. */
+-#define HAVE_SYS_STATFS_H 1
+-
+-/* Define to 1 if you have the <sys/statvfs.h> header file. */
+-#define HAVE_SYS_STATVFS_H 1
+-
+-/* Define to 1 if you have statfs(). */
+-#define HAVE_STATFS 1
+-
+-/* Define to 1 if you have the <sys/select.h> header file. */
+-/* #undef HAVE_SYS_SELECT_H */
+-
+-/* Define to 1 if you have the <sys/socket.h> header file. */
+-/* #undef HAVE_SYS_SOCKET_H */
+-
+-/* Define to 1 if you have the <sys/time.h> header file. */
+-#define HAVE_SYS_TIME_H 1
+-
+-/* Define to 1 if you have the <sys/types.h> header file. */
+-/* #undef HAVE_SYS_TYPES_H */
+-
+-/* Define to 1 if you have the <sys/vfs.h> header file. */
+-#define HAVE_SYS_VFS_H 1
+-
+-/* Define to 1 if you have the <sys/wait.h> header file. */
+-/* #undef HAVE_SYS_WAIT_H */
+-
+-/* Define to 1 if you have the <unistd.h> header file. */
+-#define HAVE_UNISTD_H 1
+-
+-/* Define to 1 if you have the <stdint.h> header file. */
+-#define HAVE_STDINT_H 1
+-
+-/* Define to 1 if you have the <malloc.h> header file. */
+-#define HAVE_MALLOC_H 1
+-
+-/* Define if you have unsetenv */
+-/* #undef HAVE_UNSETENV */
+-
+-/* Define if you have the unsetenv prototype */
+-/* #undef HAVE_UNSETENV_PROTO */
+-
+-/* Define if you have usleep */
+-/* #undef HAVE_USLEEP */
+-
+-/* Define if you have the usleep prototype */
+-/* #undef HAVE_USLEEP_PROTO */
+-
+-/* Define to 1 if you have the `vsnprintf' function. */
+-/* #undef HAVE_VSNPRINTF */
+-
+-/* Define to 1 if you have the Wayland libraries. */
+-/* #undef WAYLAND_FOUND */
+-
+-/* KDE's default home directory */
+-/* #undef KDE_DEFAULT_HOME */
+-
+-/* KDE's binaries directory */
+-#define KDE_BINDIR "bin"
+-
+-/* KDE's configuration directory */
+-#define KDE_CONFDIR "/etc/xdg"
+-
+-/* KDE's static data directory */
+-#define KDE_DATADIR "share"
+-
+-/* Define where your java executable is */
+-#undef PATH_JAVA
+-
+-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+-/* #undef TIME_WITH_SYS_TIME */
+-
+-/* xkb resources directory */
+-#define XKBDIR "/usr/share/X11/xkb"
+-
+-/* KWin binary name */
+-#define KWIN_BIN "kwin_x11"
+-
+-/* Number of bits in a file offset, on hosts where this is settable. */
+-#define _FILE_OFFSET_BITS 64
+-
+-/* Define 1 if the Breeze window decoration was found */
+-#define HAVE_BREEZE_DECO 1
+-
+-#ifdef HAVE_BREEZE_DECO
+-#define BREEZE_KDECORATION_PLUGIN_ID "org.kde.breeze"
+-#endif
+-
+-/*
+- * On HP-UX, the declaration of vsnprintf() is needed every time !
+- */
+-
+-/* type to use in place of socklen_t if not defined */
+-#define kde_socklen_t socklen_t
+-
+-#define WORKSPACE_VERSION_STRING "5.16.5"
+diff --git a/plugins/devices/keyboard/preview/debug.cpp b/plugins/devices/keyboard/preview/debug.cpp
+deleted file mode 100644
+index 63ba1ca..0000000
+--- a/plugins/devices/keyboard/preview/debug.cpp
++++ /dev/null
+@@ -1,11 +0,0 @@
+-// This file was generated by ecm_qt_declare_logging_category(): DO NOT EDIT!
+-
+-#include "debug.h"
+-
+-
+-#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
+-Q_LOGGING_CATEGORY(KCM_KEYBOARD, "org.kde.kcm_keyboard", QtWarningMsg)
+-#else
+-Q_LOGGING_CATEGORY(KCM_KEYBOARD, "org.kde.kcm_keyboard")
+-#endif
+-
+diff --git a/plugins/devices/keyboard/preview/debug.h b/plugins/devices/keyboard/preview/debug.h
+deleted file mode 100644
+index acefe93..0000000
+--- a/plugins/devices/keyboard/preview/debug.h
++++ /dev/null
+@@ -1,11 +0,0 @@
+-// This file was generated by ecm_qt_declare_logging_category(): DO NOT EDIT!
+-
+-#ifndef ECM_QLOGGINGCATEGORY_KCM_KEYBOARD_DEBUG_H
+-#define ECM_QLOGGINGCATEGORY_KCM_KEYBOARD_DEBUG_H
+-
+-#include <QLoggingCategory>
+-
+-Q_DECLARE_LOGGING_CATEGORY(KCM_KEYBOARD)
+-
+-
+-#endif
+diff --git a/plugins/devices/keyboard/preview/geometry_components.cpp b/plugins/devices/keyboard/preview/geometry_components.cpp
+deleted file mode 100644
+index 4716ee4..0000000
+--- a/plugins/devices/keyboard/preview/geometry_components.cpp
++++ /dev/null
+@@ -1,245 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-
+-#include "geometry_components.h"
+-
+-#include <QString>
+-#include <QDebug>
+-#include <QPoint>
+-
+-
+-Q_LOGGING_CATEGORY(KEYBOARD_PREVIEW, "keyboard_preview")
+-
+-
+-GShape::GShape()
+-{
+-    cordi_count = 0;
+-}
+-
+-void GShape::setCordinate(double a, double b)
+-{
+-    cordii << QPoint(a, b);
+-    cordi_count++;
+-}
+-
+-void GShape::setApprox(double a, double b)
+-{
+-    a -= approx.x();
+-    b -= approx.y();
+-    approx = QPoint(a, b);
+-}
+-
+-QPoint GShape :: getCordii(int i) const
+-{
+-    if (i < cordi_count) {
+-        return cordii[i];
+-    }
+-
+-    return QPoint();
+-}
+-
+-void GShape::display()
+-{
+-    qCDebug(KEYBOARD_PREVIEW) << "shape: " << sname << "\n";
+-    qCDebug(KEYBOARD_PREVIEW) << "(" << approx.x() << "," << approx.y() << ");";
+-
+-    for (int i = 0; i < cordi_count; i++) {
+-        qCDebug(KEYBOARD_PREVIEW) << cordii[i];
+-    }
+-}
+-
+-double GShape::size(int vertical) const
+-{
+-    if (!cordii.isEmpty()) {
+-        if (vertical == 0) {
+-            if (approx.x() == 0 && approx.y() == 0) {
+-                int max = 0;
+-                for (int i = 0; i < cordi_count; i++) {
+-                    if (max < cordii[i].x()) {
+-                        max = cordii[i].x();
+-                    }
+-                }
+-                return max;
+-            } else {
+-                return approx.x();
+-            }
+-        } else {
+-            if (approx.x() == 0 && approx.y() == 0) {
+-                int max = 0;
+-                for (int i = 0; i < cordi_count; i++) {
+-                    if (max < cordii[i].y()) {
+-                        max = cordii[i].y();
+-                    }
+-                }
+-                return max;
+-            }
+-
+-            return approx.y();
+-        }
+-    }
+-
+-    return 0;
+-}
+-
+-
+-Key::Key()
+-{
+-    offset = 0;
+-}
+-
+-void Key::setKeyPosition(double x, double y)
+-{
+-    position = QPoint(x, y);
+-}
+-
+-void Key::showKey()
+-{
+-    qCDebug(KEYBOARD_PREVIEW) << "\n\tKey: " << name << "\tshape: " << shapeName << "\toffset: " << offset;
+-    qCDebug(KEYBOARD_PREVIEW) << "\tposition" << position;
+-}
+-
+-
+-Row::Row()
+-{
+-    top = 0;
+-    left = 0;
+-    keyCount = 0;
+-    vertical = 0;
+-    keyList << Key();
+-}
+-
+-void Row::addKey()
+-{
+-    //qCDebug(KEYBOARD_PREVIEW) << "keyCount: " << keyCount;
+-    keyCount++;
+-    keyList << Key();
+-}
+-
+-void Row::displayRow()
+-{
+-    qCDebug(KEYBOARD_PREVIEW) << "\nRow: (" << left << "," << top << ")\n";
+-    qCDebug(KEYBOARD_PREVIEW) << "vertical: " << vertical;
+-    for (int i = 0; i < keyCount; i++) {
+-        keyList[i].showKey();
+-    }
+-}
+-
+-
+-Section::Section()
+-{
+-    top = 0;
+-    left = 0;
+-    angle = 0;
+-    rowCount = 0;
+-    vertical = 0;
+-    rowList << Row();
+-}
+-
+-void Section::addRow()
+-{
+-    //qCDebug(KEYBOARD_PREVIEW) << "\nrowCount: " << rowCount;
+-    rowCount++;
+-    rowList << Row();
+-}
+-
+-void Section::displaySection()
+-{
+-    //qCDebug(KEYBOARD_PREVIEW) << "\nSection: " << name << "\n\tposition: (" << left << "," << top << ");" << angle << "\n";
+-    //qCDebug(KEYBOARD_PREVIEW) << "vertical: " << vertical;
+-    for (int i = 0; i < rowCount; i++) {
+-        qCDebug(KEYBOARD_PREVIEW) << "\n\t";
+-        rowList[i].displayRow();
+-    }
+-}
+-
+-
+-Geometry::Geometry()
+-{
+-    sectionTop = 0;
+-    sectionLeft = 0;
+-    rowTop = 0;
+-    rowLeft = 0;
+-    keyGap = 0;
+-    shape_count = 0;
+-    width = 0;
+-    height = 0;
+-    sectionCount = 0;
+-    vertical = 0;
+-    sectionList << Section();
+-    shapes << GShape();
+-    keyShape = QStringLiteral("NORM");
+-    parsedGeometry = true;
+-}
+-
+-void Geometry::setShapeName(const QString &n)
+-{
+-    shapes[shape_count].setShapeName(n);
+-}
+-
+-void Geometry::setShapeCord(double a, double b)
+-{
+-    shapes[shape_count].setCordinate(a, b);
+-}
+-
+-void Geometry::setShapeApprox(double a, double b)
+-{
+-    shapes[shape_count].setApprox(a, b);
+-}
+-
+-void Geometry::addShape()
+-{
+-    shape_count++;
+-    shapes << GShape();
+-}
+-
+-void Geometry::display()
+-{
+-    qCDebug(KEYBOARD_PREVIEW) << name << "\n" << description << "\nwidth:" << width
+-                              << "\nheight:" << height << "\n" << "sectionTop:" << sectionTop;
+-    qCDebug(KEYBOARD_PREVIEW) << "\nsectionLeft:" << sectionLeft << "\nrowTop:" << rowTop << "\nrowLeft:"
+-                              << rowLeft << "\nkeyGap: " << keyGap << "\nkeyShape:" << keyShape << "\n";
+-    qCDebug(KEYBOARD_PREVIEW) << "vertical:" << vertical;
+-
+-    for (int i = 0; i < shape_count; i++) {
+-        shapes[i].display();
+-    }
+-
+-    for (int j = 0; j < sectionCount; j++) {
+-        sectionList[j].displaySection();
+-    }
+-}
+-
+-void Geometry::addSection()
+-{
+-    //qCDebug(KEYBOARD_PREVIEW) << "\nsectionCount: " << sectionCount;
+-    sectionCount++;
+-    sectionList << Section();
+-}
+-
+-GShape Geometry::findShape(const QString &name)
+-{
+-    GShape l;
+-
+-    for (int i = 0; i < shape_count; i++) {
+-        if (shapes[i].getShapeName() == name) {
+-            return shapes[i];
+-        }
+-    }
+-    return l;
+-}
+diff --git a/plugins/devices/keyboard/preview/geometry_components.h b/plugins/devices/keyboard/preview/geometry_components.h
+deleted file mode 100644
+index e66fd44..0000000
+--- a/plugins/devices/keyboard/preview/geometry_components.h
++++ /dev/null
+@@ -1,362 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef GEOMETRY_COMPONENTS_H
+-#define GEOMETRY_COMPONENTS_H
+-
+-#include <QString>
+-#include <QPoint>
+-#include <QList>
+-#include <QLoggingCategory>
+-
+-
+-Q_DECLARE_LOGGING_CATEGORY(KEYBOARD_PREVIEW)
+-
+-
+-class GShape
+-{
+-private:
+-    QString sname;
+-    QPoint approx;
+-    QList <QPoint> cordii;
+-    int cordi_count;
+-
+-public:
+-    GShape();
+-    void setCordinate(double a, double b);
+-    void setApprox(double a, double b);
+-    QPoint getCordii(int i) const;
+-    void display();
+-    double size(int vertical) const;
+-
+-    void setShapeName(const QString &n)
+-    {
+-        sname  = n;
+-    }
+-
+-    QPoint getApprox() const
+-    {
+-        return approx;
+-    }
+-
+-    QString getShapeName()
+-    {
+-        return sname;
+-    }
+-
+-    int getCordi_count() const
+-    {
+-        return cordi_count;
+-    }
+-};
+-
+-class Key
+-{
+-private:
+-    QString name, shapeName;
+-    double offset;
+-    QPoint position;
+-
+-public:
+-    Key();
+-    void setKeyPosition(double x, double y);
+-
+-    void setOffset(double o)
+-    {
+-        offset = o;
+-    }
+-
+-    void setKeyName(const QString &n)
+-    {
+-        name = n;
+-    }
+-
+-    void setShapeName(const QString &n)
+-    {
+-        shapeName = n;
+-    }
+-
+-    QString getName()
+-    {
+-        return name;
+-    }
+-
+-    QString getShapeName()
+-    {
+-        return shapeName;
+-    }
+-
+-    double getOffset()
+-    {
+-        return offset;
+-    }
+-
+-    QPoint getPosition()
+-    {
+-        return position;
+-    }
+-
+-    void showKey();
+-};
+-
+-class Row
+-{
+-private:
+-    double top, left;
+-    int keyCount, vertical;
+-    QString shapeName;
+-
+-public :
+-    QList <Key> keyList;
+-
+-    Row();
+-    void addKey();
+-
+-    void setTop(double t)
+-    {
+-        top = t;
+-    }
+-
+-    void setLeft(double l)
+-    {
+-        left = l;
+-    }
+-
+-    void setVertical(int v)
+-    {
+-        vertical = v;
+-    }
+-
+-    void setShapeName(const QString &n)
+-    {
+-        shapeName = n;
+-    }
+-
+-    double getTop()
+-    {
+-        return top;
+-    }
+-
+-    double getLeft()
+-    {
+-        return left;
+-    }
+-
+-    int getKeyCount()
+-    {
+-        return keyCount;
+-    }
+-
+-    int getVertical()
+-    {
+-        return vertical;
+-    }
+-
+-    QString getShapeName()
+-    {
+-        return shapeName;
+-    }
+-
+-    void displayRow();
+-};
+-
+-class Section
+-{
+-private:
+-    QString name, shapeName;
+-    double top, left, angle;
+-    int rowCount, vertical;
+-
+-public:
+-    QList <Row> rowList;
+-
+-    Section();
+-    void addRow();
+-
+-    void setName(const QString &n)
+-    {
+-        name = n;
+-    }
+-
+-    void setShapeName(const QString &n)
+-    {
+-        shapeName = n;
+-    }
+-
+-    void setTop(double t)
+-    {
+-        top = t;
+-    }
+-
+-    void setLeft(double l)
+-    {
+-        left = l;
+-    }
+-
+-    void setAngle(double a)
+-    {
+-        angle = a;
+-    }
+-
+-    void setVertical(int v)
+-    {
+-        vertical = v;
+-    }
+-
+-    QString getName()
+-    {
+-        return name;
+-    }
+-
+-    QString getShapeName()
+-    {
+-        return shapeName;
+-    }
+-
+-    double getTop()
+-    {
+-        return top;
+-    }
+-
+-    double getLeft()
+-    {
+-        return left;
+-    }
+-
+-    double getAngle()
+-    {
+-        return angle;
+-    }
+-
+-    int getVertical()
+-    {
+-        return vertical;
+-    }
+-
+-    int getRowCount()
+-    {
+-        return rowCount;
+-    }
+-
+-    void displaySection();
+-};
+-
+-class Geometry
+-{
+-private:
+-    QString name, description, keyShape;
+-    int shape_count, vertical;
+-    int sectionCount;
+-
+-public:
+-    QList <GShape> shapes;
+-    QList <Section> sectionList;
+-    double width, height, sectionTop, sectionLeft, rowTop, rowLeft, keyGap;
+-    bool parsedGeometry;
+-    Geometry();
+-
+-    void setWidth(double a)
+-    {
+-        width = a;
+-    }
+-
+-    void setParsing(bool state)
+-    {
+-        parsedGeometry = state;
+-    }
+-
+-    void setHeight(double a)
+-    {
+-        height = a;
+-    }
+-
+-    void setName(const QString &n)
+-    {
+-        name = n;
+-    }
+-
+-    void setDescription(const QString &d)
+-    {
+-        description = d;
+-    }
+-
+-    void setKeyShape(const QString &s)
+-    {
+-        keyShape = s;
+-    }
+-
+-    void setVertical(int v)
+-    {
+-        vertical = v;
+-    }
+-
+-    double getWidth()
+-    {
+-        return width;
+-    }
+-
+-    double getHeight()
+-    {
+-        return height;
+-    }
+-
+-    QString getName()
+-    {
+-        return name;
+-    }
+-
+-    QString getDescription()
+-    {
+-        return description;
+-    }
+-
+-    QString getKeyShape()
+-    {
+-        return keyShape;
+-    }
+-
+-    int getVertical()
+-    {
+-        return vertical;
+-    }
+-
+-    int getShapeCount()
+-    {
+-        return shape_count;
+-    }
+-
+-    int getSectionCount()
+-    {
+-        return sectionCount;
+-    }
+-
+-    bool getParsing()
+-    {
+-        return parsedGeometry;
+-    }
+-
+-    void setShapeName(const QString &n);
+-    void setShapeCord(double a, double b);
+-    void setShapeApprox(double a, double b);
+-    void addShape();
+-    void display();
+-    void addSection();
+-    GShape findShape(const QString &name);
+-};
+-
+-#endif //geometry_componets.h
+diff --git a/plugins/devices/keyboard/preview/geometry_parser.cpp b/plugins/devices/keyboard/preview/geometry_parser.cpp
+deleted file mode 100644
+index d054336..0000000
+--- a/plugins/devices/keyboard/preview/geometry_parser.cpp
++++ /dev/null
+@@ -1,593 +0,0 @@
+-/*
+-*  Copyright (C) 2013 Shivam Makkar (amourphious1992@gmail.com)
+-*
+-*  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 this program; if not, write to the Free Software
+-*  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+-*/
+-
+-#include "geometry_parser.h"
+-#include "geometry_components.h"
+-#include "xkb_rules.h"
+-
+-#include <QString>
+-#include <QDebug>
+-#include <QFileDialog>
+-#include <QFile>
+-#include <QPair>
+-
+-
+-#include <fixx11h.h>
+-#include "config-workspace.h"
+-
+-namespace grammar
+-{
+-keywords::keywords()
+-{
+-    add
+-    ("shape", 1)
+-    ("height", 2)
+-    ("width", 3)
+-    ("description", 4)
+-    ("keys", 5)
+-    ("row", 6)
+-    ("section", 7)
+-    ("key", 8)
+-    ("//", 9)
+-    ("/*", 10)
+-    ;
+-}
+-
+-
+-template<typename Iterator>
+-GeometryParser<Iterator>::GeometryParser(): GeometryParser::base_type(start)
+-{
+-
+-    using qi::lexeme;
+-    using qi::char_;
+-    using qi::lit;
+-    using qi::_1;
+-    using qi::_val;
+-    using qi::int_;
+-    using qi::double_;
+-    using qi::eol;
+-
+-
+-    name = '"' >> +(char_ - '"') >> '"';
+-
+-    ignore = (lit("outline") || lit("overlay") || lit("text")) >> *(char_ - lit("};")) >> lit("};")
+-             || lit("solid") >> *(char_ - lit("};")) >> lit("};")
+-             || lit("indicator") >> *(char_ - ';' - '{') >> ';' || '{' >> *(char_ - lit("};")) >> lit("};")
+-             || lit("indicator") >> '.' >> lit("shape") >> '=' >> name >> ';';
+-
+-    comments = lexeme[ lit("//") >> *(char_ - eol || keyword - eol) >> eol || lit("/*") >> *(char_ - lit("*/") || keyword - lit("*/")) >> lit("*/") ];
+-
+-    cordinates = ('['
+-                  >> double_[phx::ref(shapeLenX) = _1]
+-                  >> ','
+-                  >> double_[phx::ref(shapeLenY) = _1]
+-                  >> ']')
+-                 || '[' >> double_ >> "," >> double_ >> ']'
+-                 ;
+-
+-    cordinatea = '[' >> double_[phx::ref(approxLenX) = _1] >> "," >> double_[phx::ref(approxLenY) = _1] >> ']';
+-
+-    set = '{' >> cordinates >> *(',' >> cordinates) >> '}';
+-
+-    setap = '{' >> cordinatea >> *(',' >> cordinatea) >> '}';
+-
+-    seta = '{'
+-           >> cordinates[phx::bind(&GeometryParser::setCord, this)]
+-           >> *(',' >> cordinates[phx::bind(&GeometryParser::setCord, this)])
+-           >> '}'
+-           ;
+-
+-    description = lit("description") >> '=' >> name[phx::bind(&GeometryParser::getDescription, this, _1)] >> ';';
+-
+-    cornerRadius = (lit("cornerRadius") || lit("corner")) >> '=' >> double_;
+-
+-    shapeDef = lit("shape")
+-               >> name[phx::bind(&GeometryParser::getShapeName, this, _1)]
+-               >> '{'
+-               >> *(lit("approx") >> '=' >> setap[phx::bind(&GeometryParser::setApprox, this)] >> ',' || cornerRadius >> ',' || comments)
+-               >> seta
+-               >> *((',' >> (set || lit("approx") >> '=' >> setap[phx::bind(&GeometryParser::setApprox, this)] || cornerRadius) || comments))
+-               >> lit("};")
+-               ;
+-
+-    keyName = '<' >> +(char_ - '>') >> '>';
+-
+-    keyShape = *(lit("key.")) >> lit("shape") >> '=' >> name[phx::bind(&GeometryParser::setKeyShape, this, _1)]
+-               || name[phx::bind(&GeometryParser::setKeyShape, this, _1)];
+-
+-    keyColor = lit("color") >> '=' >> name;
+-
+-    keygap = lit("gap") >> '=' >> double_[phx::ref(KeyOffset) = _1] || double_[phx::ref(KeyOffset) = _1];
+-
+-    keyDesc = keyName[phx::bind(&GeometryParser::setKeyNameandShape, this, _1)]
+-              || '{' >> (keyName[phx::bind(&GeometryParser::setKeyNameandShape, this, _1)] || keyShape
+-                         || keygap[phx::bind(&GeometryParser::setKeyOffset, this)]
+-                         || keyColor)
+-              >> *((','
+-                    >> (keyName
+-                        || keyShape
+-                        || keygap[phx::bind(&GeometryParser::setKeyOffset, this)]
+-                        || keyColor))
+-                   || comments)
+-              >> '}';
+-
+-    keys = lit("keys")
+-           >> '{'
+-           >> keyDesc[phx::bind(&GeometryParser::setKeyCordi, this)]
+-           >> *((*lit(',') >> keyDesc[phx::bind(&GeometryParser::setKeyCordi, this)] >> *lit(',')) || comments)
+-           >> lit("};");
+-
+-    geomShape = ((lit("key.shape") >> '=' >> name[phx::bind(&GeometryParser::setGeomShape, this, _1)]) || (lit("key.color") >> '=' >> name)) >> ';';
+-    geomLeft = lit("section.left") >> '=' >> double_[phx::ref(geom.sectionLeft) = _1] >> ';';
+-    geomTop = lit("section.top") >> '=' >> double_[phx::ref(geom.sectionTop) = _1] >> ';';
+-    geomRowTop = lit("row.top") >> '=' >> double_[phx::ref(geom.rowTop) = _1] >> ';';
+-    geomRowLeft = lit("row.left") >> '=' >> double_[phx::ref(geom.rowLeft) = _1] >> ';';
+-    geomGap = lit("key.gap") >> '=' >> double_[phx::ref(geom.keyGap) = _1] >> ';';
+-    geomVertical = *lit("row.") >> lit("vertical") >> '=' >> (lit("True") || lit("true")) >> ';';
+-    geomAtt = geomLeft || geomTop || geomRowTop || geomRowLeft || geomGap;
+-
+-    top = lit("top") >> '=' >> double_ >> ';';
+-    left = lit("left") >> '=' >> double_ >> ';';
+-
+-    row = lit("row")[phx::bind(&GeometryParser::rowinit, this)]
+-          >> '{'
+-          >> *(top[phx::bind(&GeometryParser::setRowTop, this, _1)]
+-               || left[phx::bind(&GeometryParser::setRowLeft, this, _1)]
+-               || localShape[phx::bind(&GeometryParser::setRowShape, this, _1)]
+-               || localColor
+-               || comments
+-               || geomVertical[phx::bind(&GeometryParser::setVerticalRow, this)]
+-               || keys
+-              )
+-          >> lit("};") || ignore || geomVertical[phx::bind(&GeometryParser::setVerticalSection, this)];
+-
+-    angle = lit("angle") >> '=' >> double_ >> ';';
+-
+-    localShape = lit("key.shape") >> '=' >> name[_val = _1] >> ';';
+-    localColor = lit("key.color") >> '=' >> name >> ';';
+-    localDimension = (lit("height") || lit("width")) >> '=' >> double_ >> ';';
+-    priority = lit("priority") >> '=' >> double_ >> ';';
+-
+-    section = lit("section")[phx::bind(&GeometryParser::sectioninit, this)]
+-              >> name[phx::bind(&GeometryParser::sectionName, this, _1)]
+-              >> '{'
+-              >> *(top[phx::bind(&GeometryParser::setSectionTop, this, _1)]
+-                   || left[phx::bind(&GeometryParser::setSectionLeft, this, _1)]
+-                   || angle[phx::bind(&GeometryParser::setSectionAngle, this, _1)]
+-                   || row[phx::bind(&GeometryParser::addRow, this)]
+-                   || localShape[phx::bind(&GeometryParser::setSectionShape, this, _1)]
+-                   || geomAtt
+-                   || localColor
+-                   || localDimension
+-                   || priority
+-                   || comments)
+-              >> lit("};") || geomVertical[phx::bind(&GeometryParser::setVerticalGeometry, this)];
+-
+-    shapeC = lit("shape") >> '.' >> cornerRadius >> ';';
+-
+-    shape = shapeDef || shapeC;
+-
+-
+-    input = '{'
+-            >> +(width
+-                 || height
+-                 || comments
+-                 || ignore
+-                 || description
+-                 || (char_ - keyword - '}'
+-                     || shape[phx::bind(&Geometry::addShape, &geom)]
+-                     || section[phx::bind(&Geometry::addSection, &geom)]
+-                     || geomAtt
+-                     || geomShape
+-                    ))
+-            >> '}';
+-
+-    width = lit("width") >> '=' >> double_[phx::bind(&Geometry::setWidth, &geom, _1)] >> ";";
+-    height = lit("height") >> '=' >> double_[phx::bind(&Geometry::setHeight, &geom, _1)] >> ";";
+-
+-    start %= *(lit("default"))
+-             >> lit("xkb_geometry")
+-             >> name[phx::bind(&GeometryParser::getName, this, _1)]
+-             >> input
+-             >> ';' >> *(comments || char_ - lit("xkb_geometry"));
+-}
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setCord()
+-{
+-    geom.setShapeCord(shapeLenX, shapeLenY);
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setSectionShape(std::string n)
+-{
+-    geom.sectionList[geom.getSectionCount()].setShapeName(QString::fromUtf8(n.data(), n.size()));
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::getName(std::string n)
+-{
+-    geom.setName(QString::fromUtf8(n.data(), n.size()));
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::getDescription(std::string n)
+-{
+-    geom.setDescription(QString::fromUtf8(n.data(), n.size()));
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::getShapeName(std::string n)
+-{
+-    geom.setShapeName(QString::fromUtf8(n.data(), n.size()));
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setGeomShape(std::string n)
+-{
+-    geom.setKeyShape(QString::fromUtf8(n.data(), n.size()));
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setRowShape(std::string n)
+-{
+-    int secn = geom.getSectionCount();
+-    int rown = geom.sectionList[secn].getRowCount();
+-    geom.sectionList[secn].rowList[rown].setShapeName(QString::fromUtf8(n.data(), n.size()));
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setApprox()
+-{
+-    geom.setShapeApprox(approxLenX, approxLenY);
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::addRow()
+-{
+-    geom.sectionList[geom.getSectionCount()].addRow();
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::sectionName(std::string n)
+-{
+-    geom.sectionList[geom.getSectionCount()].setName(QString::fromUtf8(n.data(), n.size()));
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::rowinit()
+-{
+-    int secn = geom.getSectionCount();
+-    int rown = geom.sectionList[secn].getRowCount();
+-    double tempTop = geom.sectionList[secn].getTop();
+-    QString tempShape = geom.sectionList[secn].getShapeName();
+-    geom.sectionList[secn].rowList[rown].setTop(tempTop);
+-    geom.sectionList[secn].rowList[rown].setLeft(geom.sectionList[secn].getLeft());
+-    geom.sectionList[secn].rowList[rown].setShapeName(tempShape);
+-    keyCordiX = geom.sectionList[secn].rowList[rown].getLeft();
+-    keyCordiY = geom.sectionList[secn].rowList[rown].getTop();
+-    tempTop = geom.sectionList[secn].getVertical();
+-    geom.sectionList[secn].rowList[rown].setVertical(tempTop);
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::sectioninit()
+-{
+-    int secn = geom.getSectionCount();
+-    geom.sectionList[secn].setTop(geom.sectionTop);
+-    geom.sectionList[secn].setLeft(geom.sectionLeft);
+-    keyCordiX = geom.sectionList[secn].getLeft();
+-    keyCordiY = geom.sectionList[secn].getTop();
+-    geom.sectionList[secn].setShapeName(geom.getKeyShape());
+-    geom.sectionList[secn].setVertical(geom.getVertical());
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setRowTop(double a)
+-{
+-    int secn = geom.getSectionCount();
+-    int rown = geom.sectionList[secn].getRowCount();
+-    double tempTop = geom.sectionList[secn].getTop();
+-    geom.sectionList[secn].rowList[rown].setTop(a + tempTop);
+-    keyCordiY = geom.sectionList[secn].rowList[rown].getTop();
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setRowLeft(double a)
+-{
+-    int secn = geom.getSectionCount();
+-    int rown = geom.sectionList[secn].getRowCount();
+-    double tempLeft = geom.sectionList[secn].getLeft();
+-    geom.sectionList[secn].rowList[rown].setLeft(a + tempLeft);
+-    keyCordiX = geom.sectionList[secn].rowList[rown].getLeft();
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setSectionTop(double a)
+-{
+-    //qCDebug(KEYBOARD_PREVIEW) << "\nsectionCount" << geom.sectionCount;
+-    int secn = geom.getSectionCount();
+-    geom.sectionList[secn].setTop(a + geom.sectionTop);
+-    keyCordiY = geom.sectionList[secn].getTop();
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setSectionLeft(double a)
+-{
+-    //qCDebug(KEYBOARD_PREVIEW) << "\nsectionCount" << geom.sectionCount;
+-    int secn = geom.getSectionCount();
+-    geom.sectionList[secn].setLeft(a + geom.sectionLeft);
+-    keyCordiX = geom.sectionList[secn].getLeft();
+-
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setSectionAngle(double a)
+-{
+-    //qCDebug(KEYBOARD_PREVIEW) << "\nsectionCount" << geom.sectionCount;
+-    int secn = geom.getSectionCount();
+-    geom.sectionList[secn].setAngle(a);
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setVerticalRow()
+-{
+-    int secn = geom.getSectionCount();
+-    int rown = geom.sectionList[secn].getRowCount();
+-    geom.sectionList[secn].rowList[rown].setVertical(1);
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setVerticalSection()
+-{
+-    int secn = geom.getSectionCount();
+-    geom.sectionList[secn].setVertical(1);
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setVerticalGeometry()
+-{
+-    geom.setVertical(1);
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setKeyName(std::string n)
+-{
+-    int secn = geom.getSectionCount();
+-    int rown = geom.sectionList[secn].getRowCount();
+-    int keyn = geom.sectionList[secn].rowList[rown].getKeyCount();
+-    //qCDebug(KEYBOARD_PREVIEW) << "\nsC: " << secn << "\trC: " << rown << "\tkn: " << keyn;
+-    geom.sectionList[secn].rowList[rown].keyList[keyn].setKeyName(QString::fromUtf8(n.data(), n.size()));
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setKeyShape(std::string n)
+-{
+-    int secn = geom.getSectionCount();
+-    int rown = geom.sectionList[secn].getRowCount();
+-    int keyn = geom.sectionList[secn].rowList[rown].getKeyCount();
+-    //qCDebug(KEYBOARD_PREVIEW) << "\nsC: " << secn << "\trC: " << rown << "\tkn: " << keyn;
+-    geom.sectionList[secn].rowList[rown].keyList[keyn].setShapeName(QString::fromUtf8(n.data(), n.size()));
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setKeyNameandShape(std::string n)
+-{
+-    int secn = geom.getSectionCount();
+-    int rown = geom.sectionList[secn].getRowCount();
+-    setKeyName(n);
+-    setKeyShape(geom.sectionList[secn].rowList[rown].getShapeName().toUtf8().constData());
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setKeyOffset()
+-{
+-    //qCDebug(KEYBOARD_PREVIEW) << "\nhere\n";
+-    int secn = geom.getSectionCount();
+-    int rown = geom.sectionList[secn].getRowCount();
+-    int keyn = geom.sectionList[secn].rowList[rown].getKeyCount();
+-    //qCDebug(KEYBOARD_PREVIEW) << "\nsC: " << secn << "\trC: " << rown << "\tkn: " << keyn;
+-    geom.sectionList[secn].rowList[rown].keyList[keyn].setOffset(KeyOffset);
+-}
+-
+-
+-template<typename Iterator>
+-void GeometryParser<Iterator>::setKeyCordi()
+-{
+-    int secn = geom.getSectionCount();
+-    int rown = geom.sectionList[secn].getRowCount();
+-    int keyn = geom.sectionList[secn].rowList[rown].getKeyCount();
+-    int vertical = geom.sectionList[secn].rowList[rown].getVertical();
+-
+-    Key key = geom.sectionList[secn].rowList[rown].keyList[keyn];
+-
+-    if (vertical == 0) {
+-        keyCordiX += key.getOffset();
+-    } else {
+-        keyCordiY += key.getOffset();
+-    }
+-
+-    geom.sectionList[secn].rowList[rown].keyList[keyn].setKeyPosition(keyCordiX, keyCordiY);
+-
+-    QString shapeStr = key.getShapeName();
+-    if (shapeStr.isEmpty()) {
+-        shapeStr = geom.getKeyShape();
+-    }
+-
+-    GShape shapeObj = geom.findShape(shapeStr);
+-    int a = shapeObj.size(vertical);
+-
+-    if (vertical == 0) {
+-        keyCordiX += a + geom.keyGap;
+-    } else {
+-        keyCordiY += a + geom.keyGap;
+-    }
+-
+-    geom.sectionList[secn].rowList[rown].addKey();
+-}
+-
+-
+-Geometry parseGeometry(const QString &model)
+-{
+-    using boost::spirit::iso8859_1::space;
+-    typedef std::string::const_iterator iterator_type;
+-    typedef grammar::GeometryParser<iterator_type> GeometryParser;
+-    GeometryParser geometryParser;
+-
+-    Rules::GeometryId geoId = Rules::getGeometryId(model);
+-    QString geometryFile = geoId.fileName;
+-    QString geometryName = geoId.geoName;
+-
+-    qCDebug(KEYBOARD_PREVIEW) << "looking for model" << model << "geometryName" << geometryName << "in" << geometryFile;
+-
+-    QString input = getGeometry(geometryFile, geometryName);
+-    if (! input.isEmpty()) {
+-        geometryParser.geom = Geometry();
+-        input = includeGeometry(input);
+-        std::string parserInput = input.toUtf8().constData();
+-
+-        std::string::const_iterator iter = parserInput.begin();
+-        std::string::const_iterator end = parserInput.end();
+-
+-        bool success = phrase_parse(iter, end, geometryParser, space);
+-
+-        if (success && iter == end) {
+-//                qCDebug(KEYBOARD_PREVIEW) << "Geometry parsing succeeded for" << input.left(20);
+-            geometryParser.geom.setParsing(true);
+-            return geometryParser.geom;
+-        } else {
+-            qCritical() << "Geometry parsing failed for\n\t" << input.left(30);
+-            geometryParser.geom.setParsing(false);
+-        }
+-    }
+-
+-    if (geometryParser.geom.getParsing()) {
+-        return geometryParser.geom;
+-    }
+-
+-    qCritical() << "Failed to get geometry" << geometryParser.geom.getName() << "falling back to pc104";
+-    return parseGeometry(QStringLiteral("pc104"));
+-}
+-
+-QString includeGeometry(QString geometry)
+-{
+-    QStringList lines = geometry.split(QStringLiteral("\n"));
+-    int includeLine = -1;
+-    QString includeLineStr;
+-    QString startLine = lines[0];
+-    for (int i = 0; i < lines.size(); i++) {
+-        includeLineStr = lines[i];
+-        lines[i] = lines[i].remove(QStringLiteral(" "));
+-        lines[i] = lines[i].remove(QStringLiteral("\r"));
+-        if (lines[i].startsWith(QLatin1String("include"))) {
+-            includeLine = i;
+-            break;
+-        }
+-    }
+-    if (includeLine == -1) {
+-        return geometry;
+-    }
+-    geometry = geometry.remove(includeLineStr);
+-    lines[includeLine] = lines[includeLine].remove(QStringLiteral("include"));
+-    lines[includeLine] = lines[includeLine].remove(QStringLiteral("\""));
+-    lines[includeLine] = lines[includeLine].remove(QStringLiteral(")"));
+-    if (lines[includeLine].contains(QStringLiteral("("))) {
+-        QString includeFile = lines[includeLine].split(QStringLiteral("("))[0];
+-        QString includeGeom = lines[includeLine].split(QStringLiteral("("))[1];
+-        qCDebug(KEYBOARD_PREVIEW) << "looking to include " << "geometryName" << includeGeom << "in" << includeFile;
+-        QString includeStr = getGeometry(includeFile, includeGeom);
+-        includeStr = getGeometryStrContent(includeStr);
+-        geometry = geometry.remove(startLine);
+-        geometry = geometry.prepend(includeStr);
+-        geometry = geometry.prepend(startLine);
+-        includeGeometry(geometry);
+-
+-    }
+-    return geometry;
+-}
+-
+-QString getGeometryStrContent(QString geometryStr)
+-{
+-    int k = geometryStr.indexOf(QStringLiteral("{"));
+-    int k2 = geometryStr.lastIndexOf(QLatin1String("};"));
+-    geometryStr = geometryStr.mid(k + 1, k2 - k - 2);
+-    return geometryStr;
+-}
+-
+-QString getGeometry(QString geometryFile, QString geometryName)
+-{
+-
+-    QString xkbParentDir = findGeometryBaseDir();
+-    geometryFile.prepend(xkbParentDir);
+-    QFile gfile(geometryFile);
+-
+-    if (!gfile.open(QIODevice::ReadOnly | QIODevice::Text)) {
+-        qCritical() << "Unable to open the file" << geometryFile;
+-        return QString();
+-    }
+-
+-    QString gcontent = gfile.readAll();
+-    gfile.close();
+-
+-    QStringList gcontentList = gcontent.split(QStringLiteral("xkb_geometry "));
+-
+-    int current = 0;
+-    for (int i = 1; i < gcontentList.size(); i++) {
+-        if (gcontentList[i].startsWith("\"" + geometryName + "\"")) {
+-            current = i;
+-            break;
+-        }
+-    }
+-    if (current != 0) {
+-        return gcontentList[current].prepend("xkb_geometry ");
+-    } else {
+-        return QString();
+-    }
+-}
+-
+-
+-QString findGeometryBaseDir()
+-{
+-    QString xkbDir = Rules::findXkbDir();
+-    return QStringLiteral("%1/geometry/").arg(xkbDir);
+-}
+-
+-}
+diff --git a/plugins/devices/keyboard/preview/geometry_parser.h b/plugins/devices/keyboard/preview/geometry_parser.h
+deleted file mode 100644
+index 6f4a32c..0000000
+--- a/plugins/devices/keyboard/preview/geometry_parser.h
++++ /dev/null
+@@ -1,161 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-
+-#ifndef GEOMETRY_PARSER_H
+-#define GEOMETRY_PARSER_H
+-
+-#include <boost/config/warning_disable.hpp>
+-#include <boost/spirit/include/qi.hpp>
+-#include <boost/spirit/include/phoenix_core.hpp>
+-#include <boost/spirit/include/phoenix_operator.hpp>
+-#include <boost/spirit/include/phoenix_object.hpp>
+-#include <boost/fusion/include/adapt_struct.hpp>
+-#include <boost/fusion/include/io.hpp>
+-#include <boost/spirit/include/phoenix_function.hpp>
+-#include <boost/spirit/include/phoenix_statement.hpp>
+-#include <boost/spirit/include/phoenix_bind.hpp>
+-#include <boost/spirit/home/support/char_encoding/iso8859_1.hpp>
+-
+-
+-#include <iostream>
+-#include <QDebug>
+-#include <QStringList>
+-
+-#include "geometry_components.h"
+-
+-namespace qi = boost::spirit::qi;
+-namespace ascii = boost::spirit::ascii;
+-namespace phx = boost::phoenix;
+-namespace iso = boost::spirit::iso8859_1;
+-
+-
+-namespace grammar
+-{
+-
+-struct keywords : qi::symbols<char, int> {
+-    keywords();
+-};
+-
+-template<typename Iterator>
+-struct GeometryParser : qi::grammar<Iterator, iso::space_type> {
+-
+-    //comments
+-    qi::rule<Iterator, std::string(), iso::space_type>comments, ignore;
+-    qi::rule<Iterator, double(), iso::space_type>localDimension, priority;
+-
+-    //general non-terminals
+-    qi::rule<Iterator, std::string(), iso::space_type>name;
+-    qi::rule<Iterator, std::string(), iso::space_type>description;
+-    qi::rule<Iterator, std::string(), iso::space_type>input;
+-
+-    //non-terminals for shape
+-    qi::rule<Iterator, int(), iso::space_type>shape;
+-    qi::rule<Iterator, int(), iso::space_type>shapeDef;
+-    qi::rule<Iterator, int(), iso::space_type>shapeC;
+-    qi::rule<Iterator, int(), iso::space_type>set;
+-    qi::rule<Iterator, int(), iso::space_type>setap;
+-    qi::rule<Iterator, int(), iso::space_type>seta;
+-    qi::rule<Iterator, int(), iso::space_type>cornerRadius;
+-    qi::rule<Iterator, int(), iso::space_type>cordinatea;
+-    qi::rule<Iterator, int(), iso::space_type>cordinates;
+-
+-    //non-terminals for key
+-    qi::rule<Iterator, double(), iso::space_type>keygap;
+-    qi::rule<Iterator, std::string(), iso::space_type>keyName;
+-    qi::rule<Iterator, std::string(), iso::space_type>keyShape;
+-    qi::rule<Iterator, std::string(), iso::space_type>keyColor;
+-    qi::rule<Iterator, std::string(), iso::space_type>keyDesc;
+-    qi::rule<Iterator, std::string(), iso::space_type>keys;
+-
+-    qi::rule<Iterator, std::string(), iso::space_type>row;
+-
+-    qi::rule<Iterator, std::string(), iso::space_type>section;
+-
+-    //non-terminals related to local data
+-    qi::rule<Iterator, std::string(), iso::space_type>localShape;
+-    qi::rule<Iterator, std::string(), iso::space_type>localColor;
+-
+-    //Geometry non-terminals
+-    qi::rule<Iterator, std::string(), iso::space_type>geomShape;
+-    qi::rule<Iterator, int(), iso::space_type>geomTop, geomVertical;
+-    qi::rule<Iterator, int(), iso::space_type>geomLeft;
+-    qi::rule<Iterator, int(), iso::space_type>geomRowTop;
+-    qi::rule<Iterator, int(), iso::space_type>geomRowLeft;
+-    qi::rule<Iterator, int(), iso::space_type>geomGap;
+-    qi::rule<Iterator, int(), iso::space_type>geomAtt;
+-    qi::rule<Iterator, int(), iso::space_type>angle;
+-    qi::rule<Iterator, int(), iso::space_type>top;
+-    qi::rule<Iterator, int(), iso::space_type>left;
+-    qi::rule<Iterator, int(), iso::space_type>width;
+-    qi::rule<Iterator, int(), iso::space_type>height;
+-
+-    qi::rule<Iterator, iso::space_type>start;
+-    Geometry geom;
+-    keywords keyword;
+-    double shapeLenX, shapeLenY, approxLenX, approxLenY, keyCordiX, keyCordiY, KeyOffset;
+-    GeometryParser();
+-
+-    //functions for shape
+-    void getShapeName(std::string n);
+-    void setCord();
+-    void setApprox();
+-
+-    //functions for section
+-    void sectionName(std::string n);
+-    void setSectionShape(std::string n);
+-    void setSectionTop(double a);
+-    void setSectionLeft(double a);
+-    void setSectionAngle(double a);
+-    void sectioninit();
+-
+-    //functions for row
+-    void setRowShape(std::string n);
+-    void setRowTop(double a);
+-    void setRowLeft(double a);
+-    void rowinit();
+-    void addRow();
+-
+-    //functions for key
+-    void setKeyName(std::string n);
+-    void setKeyShape(std::string n);
+-    void setKeyNameandShape(std::string n);
+-    void setKeyOffset();
+-    void setKeyCordi();
+-
+-    //functions for geometry
+-    void setGeomShape(std::string n);
+-    void getName(std::string n);
+-    void getDescription(std::string n);
+-
+-    //functions for alignment
+-    void setVerticalRow();
+-    void setVerticalSection();
+-    void setVerticalGeometry();
+-};
+-
+-
+-
+-Geometry parseGeometry(const QString &model);
+-QString getGeometry(QString geometryFile, QString geometryName);
+-QString includeGeometry(QString geometry);
+-QString getGeometryStrContent(QString geometryStr);
+-QString findGeometryBaseDir();
+-}
+-
+-#endif //geometry_parser
+diff --git a/plugins/devices/keyboard/preview/kbpreviewframe.cpp b/plugins/devices/keyboard/preview/kbpreviewframe.cpp
+deleted file mode 100644
+index aea0694..0000000
+--- a/plugins/devices/keyboard/preview/kbpreviewframe.cpp
++++ /dev/null
+@@ -1,374 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-
+-#include "kbpreviewframe.h"
+-
+-#include "geometry_parser.h"
+-#include "geometry_components.h"
+-#include "keyboardlayout.h"
+-#include "symbol_parser.h"
+-
+-#include <QFile>
+-#include <QFont>
+-#include <QFileDialog>
+-#include <QHelpEvent>
+-#include <QMessageBox>
+-#include <QRect>
+-#include <QDesktopWidget>
+-#include <QApplication>
+-
+-#include <math.h>
+-
+-
+-static const QColor keyBorderColor("#d4d4d4");
+-static const QColor lev12color(Qt::black);
+-static const QColor lev34color("#0033FF");
+-static const QColor unknownSymbolColor("#FF3300");
+-static const int xOffset[] = {10, 10, -15, -15 };
+-static const int yOffset[] = {5, -20, 5, -20 };
+-static const QColor color[] = { lev12color, lev12color, lev34color, lev34color };
+-static const int keyLevel[3][4] = { { 1, 0, 3, 2}, { 1, 0, 5, 4}, { 1, 0, 7, 6} };
+-static const QRegExp fkKey(QStringLiteral("^FK\\d+$"));
+-
+-
+-KbPreviewFrame::KbPreviewFrame(QWidget *parent) :
+-    QFrame(parent),
+-    geometry(*new Geometry())
+-{
+-    setFrameStyle(QFrame::Box);
+-    setFrameShadow(QFrame::Sunken);
+-    setMouseTracking(true);
+-    scaleFactor = 1;
+-    l_id = 0;
+-}
+-
+-KbPreviewFrame::~KbPreviewFrame()
+-{
+-    delete &geometry;
+-}
+-
+-
+-int KbPreviewFrame::getWidth() const
+-{
+-    return geometry.width;
+-}
+-int KbPreviewFrame::getHeight() const
+-{
+-    return geometry.height;
+-}
+-
+-
+-//writes text on the keys call only by paintevent
+-void KbPreviewFrame::drawKeySymbols(QPainter &painter, QPoint temp[], const GShape &s, const QString &name)
+-{
+-    int keyindex = keyboardLayout.findKey(name);
+-    int szx = scaleFactor * s.size(0) / 2 < 20 ? scaleFactor * s.size(0) / 3 : 20;
+-    int szy = scaleFactor * s.size(1) / 2 < 20 ? scaleFactor * s.size(1) / 3 : 20;
+-    QFont kbfont;
+-    if (szx > szy) {
+-        kbfont.setPointSize(szy / 2 < 9 ? szy : 9);
+-    } else {
+-        kbfont.setPointSize(szx / 2 < 9 ? szx / 2 : 9);
+-    }
+-
+-    painter.setFont(kbfont);
+-
+-    int cordinate[] = {0, 3, 1, 2};
+-    float tooltipX = 0, toolTipY = 0;
+-    QString tip;
+-    if (keyindex != -1) {
+-        KbKey key = keyboardLayout.keyList.at(keyindex);
+-
+-        for (int level = 0; level < (key.getSymbolCount() < 4 ? key.getSymbolCount() : 4); level++) {
+-
+-            if (keyLevel[l_id][level] < key.getSymbolCount()) {
+-
+-                QString txt = symbol.getKeySymbol(key.getSymbol(keyLevel[l_id][level]));
+-
+-                QColor txtColor = txt[0] == -1 ? unknownSymbolColor : color[level];
+-
+-                painter.setPen(txtColor);
+-
+-                painter.drawText(temp[cordinate[level]].x() + xOffset[level]*scaleFactor / 2.5, temp[cordinate[level]].y() + yOffset[level]*scaleFactor / 2.5, szx, szy, Qt::AlignTop, txt);
+-
+-                QString currentSymbol = key.getSymbol(keyLevel[l_id][level]);
+-                currentSymbol = currentSymbol.size() < 3 ? currentSymbol.append("\t") : currentSymbol;
+-
+-                if (level == 0) {
+-                    tip.append(currentSymbol);
+-                } else {
+-                    tip.append("\n" + currentSymbol);
+-                }
+-            }
+-        }
+-
+-        for (int i = 0 ; i < 4; i++) {
+-            tooltipX += temp[i].x();
+-            toolTipY += temp[i].y();
+-        }
+-
+-        tooltipX = tooltipX / 4;
+-        toolTipY = toolTipY / 4;
+-        QPoint tooltipPoint = QPoint(tooltipX, toolTipY);
+-
+-        tooltip.append(tip);
+-        tipPoint.append(tooltipPoint);
+-    } else {
+-        painter.setPen(Qt::black);
+-
+-        if (name.contains(fkKey)) {
+-            QString tempName = name;
+-            tempName.remove(QStringLiteral("K"));
+-            painter.drawText(temp[0].x() + s.size(0) - 10, temp[0].y() + 3 * scaleFactor * s.size(1) / 5, tempName);
+-        } else {
+-            painter.setFont(kbfont);
+-            painter.drawText(temp[0].x() + s.size(0) - 10, temp[0].y() + 3 * scaleFactor * s.size(1) / 5, name);
+-        }
+-        tip = name;
+-
+-        for (int i = 0 ; i < 4; i++) {
+-            tooltipX += temp[i].x();
+-            toolTipY += temp[i].y();
+-        }
+-
+-        tooltipX = tooltipX / 4;
+-        toolTipY = toolTipY / 4;
+-        QPoint tooltipPoint = QPoint(tooltipX, toolTipY);
+-
+-        tooltip.append(tip);
+-        tipPoint.append(tooltipPoint);
+-    }
+-}
+-
+-
+-//draws key shape on QFrame called only by paint event
+-void KbPreviewFrame::drawShape(QPainter &painter, const GShape &s, int x, int y, int i, const QString &name)
+-{
+-    painter.setPen(Qt::black);
+-    int cordi_count = s.getCordi_count();
+-
+-    if (geometry.sectionList[i].getAngle() == 0) {
+-        if (cordi_count == 1) {
+-            int width = s.getCordii(0).x();
+-            int height = s.getCordii(0).y();
+-
+-            painter.drawRoundedRect(scaleFactor * x + 2, scaleFactor * y, scaleFactor * width, scaleFactor * height, 4, 4);
+-
+-            QPoint temp[4];
+-
+-            temp[0] = QPoint(scaleFactor * x, scaleFactor * y);
+-            temp[1] = QPoint(scaleFactor * (s.getCordii(0).x() + x), scaleFactor * y);
+-            temp[2] = QPoint(scaleFactor * (s.getCordii(0).x() + x), scaleFactor * (s.getCordii(0).y() + y));
+-            temp[3] = QPoint(scaleFactor * (x), scaleFactor * (s.getCordii(0).y() + y));
+-
+-            drawKeySymbols(painter, temp, s, name);
+-        } else {
+-            QVarLengthArray<QPoint> temp(cordi_count);
+-            for (int i = 0; i < cordi_count; i++) {
+-                temp[i].setX(scaleFactor * (s.getCordii(i).x() + x + 1));
+-                temp[i].setY(scaleFactor * (s.getCordii(i).y() + y + 1));
+-            }
+-
+-            painter.drawPolygon(temp.data(), cordi_count);
+-            drawKeySymbols(painter, temp.data(), s, name); // no length passed here, is this safe?
+-        }
+-    } else {
+-        QVarLengthArray<QPoint> temp(cordi_count == 1 ? 4 : cordi_count);
+-        int size;
+-
+-        if (cordi_count == 1) {
+-            temp[0] = QPoint(x, y);
+-            temp[1] = QPoint(s.getCordii(0).x() + x, y);
+-            temp[2] = QPoint(s.getCordii(0).x() + x, s.getCordii(0).y() + y);
+-            temp[3] = QPoint(x, s.getCordii(0).y() + y);
+-            size = 4;
+-        } else {
+-            size = cordi_count;
+-
+-            for (int i = 0; i < cordi_count; i++) {
+-                temp[i].setX((s.getCordii(i).x() + x + 1));
+-                temp[i].setY((s.getCordii(i).y() + y + 1));
+-            }
+-        }
+-
+-        double refX, refY;
+-
+-        refX = geometry.sectionList[i].getLeft();
+-        refY = geometry.sectionList[i].getTop();
+-
+-        //qCDebug(KEYBOARD_PREVIEW) <<"\ntransform";
+-        for (int j = 0; j < size; j++) {
+-            double x = temp[j].x() - refX;
+-            double y = temp[j].y() - refY;
+-
+-            //qCDebug(KEYBOARD_PREVIEW) <<"(" <<x <<"," <<y <<")->";
+-
+-            float theta = (3.1459 * geometry.sectionList[i].getAngle()) / 180;
+-            double x_ = x * cos(theta) - y * sin(theta);
+-
+-            //qCDebug(KEYBOARD_PREVIEW) <<"x_= " <<x <<"*" <<cos(theta) <<"-" <<y <<"*" <<sin(theta);
+-
+-            double y_ = x * sin(theta) + y * cos(theta);
+-
+-            //qCDebug(KEYBOARD_PREVIEW) <<"\ny_= " <<x <<"*" <<sin(theta) <<"+" <<y <<"*" <<cos(theta);
+-            //qCDebug(KEYBOARD_PREVIEW) <<"(" <<x_ <<"," <<y_ <<")\n";
+-
+-            temp[j] = QPoint(scaleFactor * (x_ + refX), scaleFactor * (y_ + refY));
+-        }
+-
+-        /*for(int i=0;i<size;i++){
+-            qCDebug(KEYBOARD_PREVIEW) <<temp[i];
+-        }*/
+-
+-        painter.drawPolygon(temp.data(), size);
+-        drawKeySymbols(painter, temp.data(), s, name); // no length passed here, is this safe?
+-    }
+-
+-}
+-
+-
+-//event handling for tooltip
+-bool KbPreviewFrame::event(QEvent *event)
+-{
+-
+-    if (event->type() == QEvent::ToolTip) {
+-        QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event);
+-        int index = itemAt(helpEvent->pos());
+-
+-        if (index != -1) {
+-            QToolTip::showText(helpEvent->globalPos(), tooltip.at(index));
+-        } else {
+-            QToolTip::hideText();
+-            event->ignore();
+-        }
+-
+-        return true;
+-    }
+-    return QWidget::event(event);
+-}
+-
+-
+-void KbPreviewFrame::paintEvent(QPaintEvent *)
+-{
+-    if (geometry.getParsing() && keyboardLayout.getParsedSymbol()) {
+-        QPainter painter(this);
+-
+-        QFont kbfont;
+-        kbfont.setPointSize(9);
+-
+-        painter.setFont(kbfont);
+-        painter.setBrush(QBrush("#C3C8CB"));
+-        painter.setRenderHint(QPainter::Antialiasing);
+-
+-        const int strtx = 0, strty = 0, endx = geometry.getWidth(), endy = geometry.getHeight();
+-
+-
+-        painter.setPen("#EDEEF2");
+-
+-        painter.drawRect(strtx, strty, scaleFactor * endx + 60, scaleFactor * endy + 60);
+-
+-        painter.setPen(Qt::black);
+-        painter.setBrush(QBrush("#EDEEF2"));
+-
+-        for (int i = 0; i < geometry.getSectionCount(); i++) {
+-
+-            painter.setPen(Qt::black);
+-
+-            for (int j = 0; j < geometry.sectionList[i].getRowCount(); j++) {
+-
+-                int keyn = geometry.sectionList[i].rowList[j].getKeyCount();
+-
+-                for (int k = 0; k < keyn; k++) {
+-
+-                    Key temp = geometry.sectionList[i].rowList[j].keyList[k];
+-
+-                    int x = temp.getPosition().x();
+-                    int y = temp.getPosition().y();
+-
+-                    GShape s;
+-
+-                    s = geometry.findShape(temp.getShapeName());
+-                    QString name = temp.getName();
+-
+-                    drawShape(painter, s, x, y, i, name);
+-
+-                }
+-            }
+-        }
+-
+-        if (symbol.isFailed()) {
+-            painter.setPen(keyBorderColor);
+-            painter.drawRect(strtx, strty, endx, endy);
+-
+-            const int midx = 470, midy = 240;
+-            painter.setPen(lev12color);
+-            painter.drawText(midx, midy, tr("No preview found"));
+-        }
+-    } else {
+-        QMessageBox errorBox;
+-        errorBox.setText(tr("Unable to open Preview !"));
+-        errorBox.exec();
+-    }
+-
+-}
+-
+-// this function draws the keyboard preview on a QFrame
+-void KbPreviewFrame::generateKeyboardLayout(const QString &layout, const QString &layoutVariant, const QString &model)
+-{
+-    qDebug() << " generateKeyboardLayout " << endl;
+-    geometry = grammar::parseGeometry(model);
+-    int endx = geometry.getWidth(), endy = geometry.getHeight();
+-
+-    QDesktopWidget *desktopWidget = qApp->desktop();
+-    QRect screenGeometry = desktopWidget->screenGeometry();
+-    int screenWidth = screenGeometry.width();
+-
+-    scaleFactor = 2.5;
+-    while (scaleFactor * endx + screenWidth / 20 > screenWidth) {
+-        scaleFactor -= 0.2;
+-    }
+-    qCDebug(KEYBOARD_PREVIEW) << "scale factor: 2.5 ->" << scaleFactor;
+-
+-    setFixedSize(scaleFactor * endx + 60, scaleFactor * endy + 60);
+-    qCDebug(KEYBOARD_PREVIEW) << screenWidth << ":" << scaleFactor << scaleFactor *endx + 60 << scaleFactor *endy + 60;
+-    keyboardLayout = grammar::parseSymbols(layout, layoutVariant);
+-}
+-
+-
+-//this functions give the index of the tooltip over which mouse hovers
+-int KbPreviewFrame::itemAt(const QPoint &pos)
+-{
+-    int distance =  10000;
+-    int closest = 0;
+-    for (int i = 0; i < tipPoint.size(); i++) {
+-
+-        int temp = sqrt((pos.x() - tipPoint.at(i).x()) * (pos.x() - tipPoint.at(i).x()) + (pos.y() - tipPoint.at(i).y()) * (pos.y() - tipPoint.at(i).y()));
+-
+-        if (distance > temp) {
+-            distance = temp;
+-            closest = i;
+-        }
+-    }
+-
+-    if (distance < 25) {
+-        return closest;
+-    }
+-
+-    return -1;
+-}
+diff --git a/plugins/devices/keyboard/preview/kbpreviewframe.h b/plugins/devices/keyboard/preview/kbpreviewframe.h
+deleted file mode 100644
+index 336af31..0000000
+--- a/plugins/devices/keyboard/preview/kbpreviewframe.h
++++ /dev/null
+@@ -1,95 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-#ifndef KBPREVIEWFRAME_H
+-#define KBPREVIEWFRAME_H
+-
+-#include "keyboardlayout.h"
+-
+-#include "keysymhelper.h"
+-#include "keyaliases.h"
+-
+-#include <QPainter>
+-#include <QFrame>
+-#include <QHash>
+-#include <QToolTip>
+-#include <QLoggingCategory>
+-
+-
+-Q_DECLARE_LOGGING_CATEGORY(KEYBOARD_PREVIEW)
+-
+-
+-class Geometry;
+-class GShape;
+-
+-
+-class KbPreviewFrame : public QFrame
+-{
+-    Q_OBJECT
+-
+-private:
+-    static const int width = 1100, height = 490;
+-
+-    KeySymHelper symbol;
+-    Aliases alias;
+-    QStringList tooltip;
+-    QList <QPoint> tipPoint;
+-    int l_id;
+-    Geometry &geometry;
+-    float scaleFactor;
+-    KbLayout keyboardLayout;
+-
+-    void drawKeySymbols(QPainter &painter, QPoint temp[], const GShape &s, const QString &name);
+-    void drawShape(QPainter &painter, const GShape &s, int x, int y, int i, const QString &name);
+-
+-    int itemAt(const QPoint &pos);
+-
+-
+-protected:
+-    bool event(QEvent *event) override;
+-
+-public:
+-    explicit KbPreviewFrame(QWidget *parent = nullptr);
+-    ~KbPreviewFrame() override;
+-    void paintEvent(QPaintEvent *event) override;
+-    void generateKeyboardLayout(const QString &layout, const QString &layoutVariant, const QString &model);
+-    int getWidth() const;
+-    int getHeight() const;
+-
+-    int getLevel()
+-    {
+-        return keyboardLayout.getLevel();
+-    }
+-
+-    void setL_id(int lId)
+-    {
+-        l_id = lId;
+-        repaint();
+-    }
+-
+-    QString getLayoutName() const
+-    {
+-        return keyboardLayout.getLayoutName();
+-    }
+-
+-    float getScaleFactor()
+-    {
+-        return scaleFactor;
+-    }
+-};
+-
+-#endif // KBPREVIEWFRAME_H
+diff --git a/plugins/devices/keyboard/preview/keyaliases.cpp b/plugins/devices/keyboard/preview/keyaliases.cpp
+deleted file mode 100644
+index 746120d..0000000
+--- a/plugins/devices/keyboard/preview/keyaliases.cpp
++++ /dev/null
+@@ -1,128 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "keyaliases.h"
+-#include "xkb_rules.h"
+-
+-#include <QString>
+-#include <QMessageBox>
+-#include <QFile>
+-#include <QDir>
+-
+-#include <X11/Xlib.h>
+-#include <X11/Xatom.h>
+-#include <X11/XKBlib.h>
+-#include <X11/extensions/XKBrules.h>
+-
+-#include <fixx11h.h>
+-#include "config-workspace.h"
+-
+-
+-Aliases::Aliases()
+-{
+-    QString filename = findaliasdir();
+-    QFile file(filename);
+-    file.open(QIODevice::ReadOnly | QIODevice::Text);
+-    QString content = file.readAll();
+-    file.close();
+-
+-    QList<QString>als;
+-    als = content.split(QStringLiteral("xkb_keycodes"));
+-
+-    for (int i = 1; i < als.size(); i++) {
+-
+-        QString temp = als.at(i);
+-
+-        temp = temp.remove(QStringLiteral(" "));
+-        temp = temp.remove(QStringLiteral("\n"));
+-        temp = temp.remove(QStringLiteral("\""));
+-        temp = temp.remove(QStringLiteral(">"));
+-        temp = temp.remove(QStringLiteral("<"));
+-        temp = temp.remove(QStringLiteral(";"));
+-        temp = temp.remove(QStringLiteral("}"));
+-        temp = temp.remove(QStringLiteral("{"));
+-
+-        QList<QString>alskeys;
+-
+-        alskeys = temp.split(QStringLiteral("alias"));
+-
+-        if (temp.startsWith(QLatin1String("qwerty"))) {
+-
+-            for (int k = 1; k < alskeys.size(); k++) {
+-
+-                QString tmp = alskeys.at(k);
+-                int inofeq = tmp.indexOf(QStringLiteral("="));
+-
+-                QString lat = tmp.left(inofeq);
+-                QString key = tmp.mid(inofeq + 1);
+-
+-                qwerty[lat] = key;
+-            }
+-        }
+-
+-        if (temp.startsWith(QLatin1String("azerty"))) {
+-
+-            for (int k = 1; k < alskeys.size(); k++) {
+-                QString tmp = alskeys.at(k);
+-
+-                int inofeq = tmp.indexOf(QStringLiteral("="));
+-
+-                QString lat = tmp.left(inofeq);
+-                QString key = tmp.mid(inofeq + 1);
+-
+-                azerty[lat] = key;
+-            }
+-        }
+-
+-        if (temp.startsWith(QLatin1String("qwertz"))) {
+-            for (int k = 1; k < alskeys.size(); k++) {
+-
+-                QString tmp = alskeys.at(k);
+-
+-                int inofeq = tmp.indexOf(QStringLiteral("="));
+-
+-                QString lat = tmp.left(inofeq);
+-                QString key = tmp.mid(inofeq + 1);
+-
+-                qwertz[lat] = key;
+-            }
+-        }
+-    }
+-
+-}
+-
+-
+-QString Aliases::getAlias(const QString &cname, const QString &name)
+-{
+-    QMessageBox q;
+-    QString a = name;
+-
+-    if (cname == QLatin1String("ma") || cname == QLatin1String("be") || cname == QLatin1String("fr")) {
+-        a = azerty.value(name);
+-    } else {
+-        a = qwerty.value(name);
+-    }
+-
+-    return a;
+-}
+-
+-QString Aliases::findaliasdir()
+-{
+-    QString xkbDir = Rules::findXkbDir();
+-    return QStringLiteral("%1/keycodes/aliases").arg(xkbDir);
+-}
+diff --git a/plugins/devices/keyboard/preview/keyaliases.h b/plugins/devices/keyboard/preview/keyaliases.h
+deleted file mode 100644
+index fe40342..0000000
+--- a/plugins/devices/keyboard/preview/keyaliases.h
++++ /dev/null
+@@ -1,36 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-#ifndef ALIASES_H
+-#define ALIASES_H
+-
+-#include <QMap>
+-
+-class Aliases
+-{
+-private:
+-    QMap<QString, QString>qwerty;
+-    QMap<QString, QString>azerty;
+-    QMap<QString, QString>qwertz;
+-    QString findaliasdir();
+-
+-public:
+-    Aliases();
+-    QString getAlias(const QString &type, const QString &name);
+-};
+-
+-#endif // ALIASES_H
+diff --git a/plugins/devices/keyboard/preview/keyboard_config.cpp b/plugins/devices/keyboard/preview/keyboard_config.cpp
+deleted file mode 100644
+index f8169a8..0000000
+--- a/plugins/devices/keyboard/preview/keyboard_config.cpp
++++ /dev/null
+@@ -1,208 +0,0 @@
+-/*
+- *  Copyright (C) 2010 Andriy Rysin (rysin@kde.org)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "keyboard_config.h"
+-#include "debug.h"
+-
+-#include <ksharedconfig.h>
+-#include <kconfiggroup.h>
+-
+-
+-static const char* const SWITCHING_POLICIES[] = {"Global", "Desktop", "WinClass", "Window", nullptr };
+-static const char LIST_SEPARATOR[] = ",";
+-//static const char* DEFAULT_LAYOUT = "us";
+-static const char DEFAULT_MODEL[] = "pc104";
+-
+-static const QString CONFIG_FILENAME(QStringLiteral("kxkbrc"));
+-static const QString CONFIG_GROUPNAME(QStringLiteral("Layout"));
+-
+-const int KeyboardConfig::NO_LOOPING = -1;
+-
+-KeyboardConfig::KeyboardConfig()
+-{
+-    setDefaults();
+-}
+-
+-QString KeyboardConfig::getSwitchingPolicyString(SwitchingPolicy switchingPolicy) {
+-    return SWITCHING_POLICIES[switchingPolicy];
+-}
+-
+-static int findStringIndex(const char* const strings[], const QString& toFind, int defaultIndex)
+-{
+-    for(int i=0; strings[i] != nullptr; i++) {
+-        if( toFind == strings[i] ) {
+-            return i;
+-        }
+-    }
+-    return defaultIndex;
+-}
+-
+-void KeyboardConfig::setDefaults()
+-{
+-    keyboardModel = DEFAULT_MODEL;
+-    resetOldXkbOptions = false;
+-    xkbOptions.clear();
+-
+-    // init layouts options
+-    configureLayouts = false;
+-    layouts.clear();
+-//	layouts.append(LayoutUnit(DEFAULT_LAYOUT));
+-    layoutLoopCount = NO_LOOPING;
+-
+-    // switch control options
+-    switchingPolicy = SWITCH_POLICY_GLOBAL;
+-//	stickySwitching = false;
+-//	stickySwitchingDepth = 2;
+-
+-    // display options
+-    showIndicator = true;
+-    indicatorType = SHOW_LABEL;
+-    showSingle = false;
+-}
+-
+-static
+-KeyboardConfig::IndicatorType getIndicatorType(bool showFlag, bool showLabel)
+-{
+-    if( showFlag ) {
+-        if( showLabel )
+-            return KeyboardConfig::SHOW_LABEL_ON_FLAG;
+-        else
+-            return KeyboardConfig::SHOW_FLAG;
+-    }
+-    else {
+-        return KeyboardConfig::SHOW_LABEL;
+-    }
+-}
+-
+-
+-void KeyboardConfig::load()
+-{
+-    KConfigGroup config(KSharedConfig::openConfig( CONFIG_FILENAME, KConfig::NoGlobals ), CONFIG_GROUPNAME);
+-
+-    keyboardModel = config.readEntry("Model", "");
+-
+-    resetOldXkbOptions = config.readEntry("ResetOldOptions", false);
+-    QString options = config.readEntry("Options", "");
+-    xkbOptions = options.split(LIST_SEPARATOR, QString::SkipEmptyParts);
+-
+-    configureLayouts = config.readEntry("Use", false);
+-    QString layoutsString = config.readEntry("LayoutList", "");
+-    QStringList layoutStrings = layoutsString.split(LIST_SEPARATOR, QString::SkipEmptyParts);
+-//    if( layoutStrings.isEmpty() ) {
+-//    	layoutStrings.append(DEFAULT_LAYOUT);
+-//    }
+-    layouts.clear();
+-    foreach(const QString& layoutString, layoutStrings) {
+-        layouts.append(LayoutUnit(layoutString));
+-    }
+-    if( layouts.isEmpty() ) {
+-        configureLayouts = false;
+-    }
+-
+-    layoutLoopCount = config.readEntry("LayoutLoopCount", NO_LOOPING);
+-
+-    QString layoutMode = config.readEntry("SwitchMode", "Global");
+-    switchingPolicy = static_cast<SwitchingPolicy>(findStringIndex(SWITCHING_POLICIES, layoutMode, SWITCH_POLICY_GLOBAL));
+-
+-    showIndicator = config.readEntry("ShowLayoutIndicator", true);
+-
+-    bool showFlag = config.readEntry("ShowFlag", false);
+-    bool showLabel = config.readEntry("ShowLabel", true);
+-    indicatorType = getIndicatorType(showFlag, showLabel);
+-
+-    showSingle = config.readEntry("ShowSingle", false);
+-
+-    QString labelsStr = config.readEntry("DisplayNames", "");
+-    QStringList labels = labelsStr.split(LIST_SEPARATOR, QString::KeepEmptyParts);
+-    for(int i=0; i<labels.count() && i<layouts.count(); i++) {
+-        if( !labels[i].isEmpty() && labels[i] != layouts[i].layout ) {
+-            layouts[i].setDisplayName(labels[i]);
+-        }
+-    }
+-
+-//    QString shortcutsStr = config.readEntry("LayoutShortcuts", "");
+-//    QStringList shortcutsList = shortcutsStr.split(LIST_SEPARATOR, QString::KeepEmptyParts);
+-//    for(int i=0; i<shortcutsList.count() && i<layouts.count(); i++) {
+-//    	if( !shortcutsList[i].isEmpty() ) {
+-//    		layouts[i].setShortcut(QKeySequence(shortcutsList[i]));
+-//    	}
+-//    }
+-
+-    qCDebug(KCM_KEYBOARD) << "configuring layouts" << configureLayouts << "configuring options" << resetOldXkbOptions;
+-}
+-
+-void KeyboardConfig::save()
+-{
+-    KConfigGroup config(KSharedConfig::openConfig( CONFIG_FILENAME, KConfig::NoGlobals ), CONFIG_GROUPNAME);
+-
+-    config.writeEntry("Model", keyboardModel);
+-
+-    config.writeEntry("ResetOldOptions", resetOldXkbOptions);
+-    if( resetOldXkbOptions ) {
+-        config.writeEntry("Options", xkbOptions.join(LIST_SEPARATOR));
+-    }
+-    else {
+-        config.deleteEntry("Options");
+-    }
+-
+-    config.writeEntry("Use", configureLayouts);
+-
+-    QStringList layoutStrings;
+-    QStringList displayNames;
+-//    QStringList shortcuts;
+-    foreach(const LayoutUnit& layoutUnit, layouts) {
+-        layoutStrings.append(layoutUnit.toString());
+-        displayNames.append(layoutUnit.getRawDisplayName());
+-//    	shortcuts.append(layoutUnit.getShortcut().toString());
+-    }
+-    config.writeEntry("LayoutList", layoutStrings.join(LIST_SEPARATOR));
+-    config.writeEntry("DisplayNames", displayNames.join(LIST_SEPARATOR));
+-//    config.writeEntry("LayoutShortcuts", shortcuts.join(LIST_SEPARATOR));
+-
+-    config.writeEntry("LayoutLoopCount", layoutLoopCount);
+-
+-    config.writeEntry("SwitchMode", SWITCHING_POLICIES[switchingPolicy]);
+-
+-    config.writeEntry("ShowLayoutIndicator", showIndicator);
+-    config.writeEntry("ShowFlag", indicatorType == SHOW_FLAG || indicatorType == SHOW_LABEL_ON_FLAG);
+-    config.writeEntry("ShowLabel", indicatorType == SHOW_LABEL || indicatorType == SHOW_LABEL_ON_FLAG);
+-    config.writeEntry("ShowSingle", showSingle);
+-
+-    config.sync();
+-}
+-
+-QList<LayoutUnit> KeyboardConfig::getDefaultLayouts() const
+-{
+-    QList<LayoutUnit> defaultLayoutList;
+-    int i = 0;
+-    foreach(const LayoutUnit& layoutUnit, layouts) {
+-        defaultLayoutList.append(layoutUnit);
+-        if( layoutLoopCount != KeyboardConfig::NO_LOOPING && i >= layoutLoopCount-1 )
+-            break;
+-        i++;
+-    }
+-    return defaultLayoutList;
+-}
+-
+-QList<LayoutUnit> KeyboardConfig::getExtraLayouts() const
+-{
+-    if( layoutLoopCount == KeyboardConfig::NO_LOOPING )
+-        return QList<LayoutUnit>();
+-
+-    return layouts.mid(layoutLoopCount, layouts.size());
+-}
+diff --git a/plugins/devices/keyboard/preview/keyboard_config.h b/plugins/devices/keyboard/preview/keyboard_config.h
+deleted file mode 100644
+index 21e5b60..0000000
+--- a/plugins/devices/keyboard/preview/keyboard_config.h
++++ /dev/null
+@@ -1,91 +0,0 @@
+-/*
+- *  Copyright (C) 2010 Andriy Rysin (rysin@kde.org)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-
+-#ifndef KEYBOARD_CONFIG_H_
+-#define KEYBOARD_CONFIG_H_
+-
+-#include "x11_helper.h"
+-
+-#include <QString>
+-#include <QStringList>
+-#include <QList>
+-#include <QMap>
+-#include <QPair>
+-
+-/**
+- * This class provides configuration options for keyboard module
+- */
+-class KeyboardConfig
+-{
+-public:
+-    static const int MAX_LABEL_LEN = 3;
+-    static const int NO_LOOPING; // = -1;
+-
+-    enum SwitchingPolicy {
+-        SWITCH_POLICY_GLOBAL = 0,
+-        SWITCH_POLICY_DESKTOP = 1,
+-        SWITCH_POLICY_APPLICATION = 2,
+-        SWITCH_POLICY_WINDOW = 3
+-    };
+-
+-    enum IndicatorType {
+-        SHOW_LABEL = 0,
+-        SHOW_FLAG = 1,
+-        SHOW_LABEL_ON_FLAG = 2
+-    };
+-
+-    QString keyboardModel;
+-    // resetOldXkbOptions is now also "set xkb options"
+-    bool resetOldXkbOptions;
+-    QStringList xkbOptions;
+-
+-    // init layouts options
+-    bool configureLayouts;
+-    QList<LayoutUnit> layouts;
+-    int layoutLoopCount;
+-
+-    // switch control options
+-    SwitchingPolicy switchingPolicy;
+-//	bool stickySwitching;
+-//	int stickySwitchingDepth;
+-
+-    // display options
+-    bool showIndicator;
+-    IndicatorType indicatorType;
+-    bool showSingle;
+-
+-    KeyboardConfig();
+-
+-    QList<LayoutUnit> getDefaultLayouts() const;
+-    QList<LayoutUnit> getExtraLayouts() const;
+-    bool isFlagShown() const {
+-        return indicatorType == SHOW_FLAG || indicatorType == SHOW_LABEL_ON_FLAG;
+-    }
+-    bool isLabelShown() const {
+-        return indicatorType == SHOW_LABEL || indicatorType == SHOW_LABEL_ON_FLAG;
+-    }
+-
+-    void setDefaults();
+-    void load();
+-    void save();
+-
+-    static QString getSwitchingPolicyString(SwitchingPolicy switchingPolicy);
+-};
+-
+-#endif /* KEYBOARD_CONFIG_H_ */
+diff --git a/plugins/devices/keyboard/preview/keyboardlayout.cpp b/plugins/devices/keyboard/preview/keyboardlayout.cpp
+deleted file mode 100644
+index 2f70a89..0000000
+--- a/plugins/devices/keyboard/preview/keyboardlayout.cpp
++++ /dev/null
+@@ -1,133 +0,0 @@
+-/*
+- *  Copyright (C) 2013 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-
+-#include "keyboardlayout.h"
+-
+-#include <QDebug>
+-#include <QString>
+-#include <QList>
+-
+-
+-KbKey::KbKey()
+-{
+-    symbolCount = 0;
+-    symbols << QString();
+-}
+-
+-
+-void KbKey::setKeyName(QString n)
+-{
+-    keyName = n;
+-}
+-
+-
+-void KbKey::addSymbol(QString n, int i)
+-{
+-    if (!symbols.contains(n)) {
+-        symbols[i] = n;
+-        symbolCount++;
+-        symbols << QString();
+-    }
+-}
+-
+-
+-QString KbKey::getSymbol(int i)
+-{
+-    if (i < symbolCount) {
+-        return symbols[i];
+-    } else {
+-        return QString();
+-    }
+-}
+-
+-
+-void KbKey::display()
+-{
+-    qCDebug(KEYBOARD_PREVIEW) << keyName << " : ";
+-    for (int i = 0; i < symbolCount; i++) {
+-        qCDebug(KEYBOARD_PREVIEW) << "\t" << symbols[i];
+-    }
+-}
+-
+-
+-KbLayout::KbLayout()
+-{
+-    keyCount = 0;
+-    includeCount = 0;
+-    level = 4;
+-    keyList << KbKey();
+-    include << QString();
+-    parsedSymbol = true;
+-}
+-
+-
+-void KbLayout::setName(QString n)
+-{
+-    name = n;
+-}
+-
+-
+-void KbLayout::addInclude(QString n)
+-{
+-    if (!include.contains(n)) {
+-        include[includeCount] = n;
+-        includeCount++;
+-        include << QString();
+-    }
+-}
+-
+-
+-void KbLayout :: addKey()
+-{
+-    keyCount++;
+-    keyList << KbKey();
+-}
+-
+-
+-QString KbLayout :: getInclude(int i)
+-{
+-    if (i < includeCount) {
+-        return include[i];
+-    } else {
+-        return QString();
+-    }
+-}
+-
+-
+-int KbLayout :: findKey(QString n)
+-{
+-    for (int i = 0 ; i < keyCount ; i++) {
+-        if (keyList[i].keyName == n) {
+-            return i;
+-        }
+-    }
+-    return -1;
+-}
+-
+-
+-void KbLayout::display()
+-{
+-//    qCDebug(KEYBOARD_PREVIEW) << name << "\n";
+-//    for(int i = 0; i<includeCount; i++){
+-//        qCDebug(KEYBOARD_PREVIEW) << include[i];
+-//    }
+-    for (int i = 0 ; i < keyCount; i++) {
+-        keyList[i].display();
+-    }
+-}
+diff --git a/plugins/devices/keyboard/preview/keyboardlayout.h b/plugins/devices/keyboard/preview/keyboardlayout.h
+deleted file mode 100644
+index bd31e59..0000000
+--- a/plugins/devices/keyboard/preview/keyboardlayout.h
++++ /dev/null
+@@ -1,115 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef KEYBOARDLAYOUT_NEW_H
+-#define KEYBOARDLAYOUT_NEW_H
+-
+-#include "keyaliases.h"
+-
+-#include <QString>
+-#include <QStringList>
+-#include <QList>
+-#include <QLoggingCategory>
+-
+-
+-Q_DECLARE_LOGGING_CATEGORY(KEYBOARD_PREVIEW)
+-
+-
+-class KbKey
+-{
+-private:
+-    QList<QString> symbols;
+-    int symbolCount;
+-
+-public:
+-    QString keyName;
+-
+-    KbKey();
+-
+-    void setKeyName(QString n);
+-    void addSymbol(QString n, int i);
+-    QString getSymbol(int i);
+-
+-    int getSymbolCount()
+-    {
+-        return symbolCount;
+-    }
+-
+-    void display();
+-};
+-
+-
+-class KbLayout
+-{
+-private:
+-    QList<QString> include;
+-    QString name;
+-    int keyCount, includeCount, level;
+-    bool parsedSymbol;
+-
+-public:
+-    QList <KbKey> keyList;
+-    QString country;
+-
+-    KbLayout();
+-
+-    void setName(QString n);
+-    void addInclude(QString n);
+-    void addKey();
+-    QString getInclude(int i);
+-    int findKey(QString n);
+-
+-    void setLevel(int lvl)
+-    {
+-        level = lvl;
+-    }
+-
+-    int getLevel()
+-    {
+-        return level;
+-    }
+-
+-    int getKeyCount()
+-    {
+-        return keyCount;
+-    }
+-
+-    int getIncludeCount()
+-    {
+-        return includeCount;
+-    }
+-
+-    QString getLayoutName() const
+-    {
+-        return name;
+-    }
+-
+-    void setParsedSymbol(bool state)
+-    {
+-        parsedSymbol = state;
+-    }
+-
+-    bool getParsedSymbol()
+-    {
+-        return parsedSymbol;
+-    }
+-
+-    void display();
+-};
+-
+-#endif //KEYBOARDLAYOUT_NEW_H
+diff --git a/plugins/devices/keyboard/preview/keyboardpainter.cpp b/plugins/devices/keyboard/preview/keyboardpainter.cpp
+deleted file mode 100644
+index 108b2ef..0000000
+--- a/plugins/devices/keyboard/preview/keyboardpainter.cpp
++++ /dev/null
+@@ -1,103 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "keyboardpainter.h"
+-#include "geometry_components.h"
+-
+-#include <QVBoxLayout>
+-#include <QPushButton>
+-#include <QComboBox>
+-#include <QDebug>
+-
+-
+-KeyboardPainter::KeyboardPainter():
+-    kbDialog(new QDialog(this)),
+-    kbframe(new KbPreviewFrame(this)),
+-    exitButton(new QPushButton(tr("Close"), this)),
+-    levelBox(new QComboBox(this))
+-{
+-    this->setFixedSize(1250, 600);
+-    kbframe->setFixedSize(1100, 490);
+-    exitButton->setFixedSize(120, 30);
+-    levelBox->setFixedSize(360, 30);
+-
+-    QVBoxLayout *vLayout = new QVBoxLayout(this);
+-    QHBoxLayout *hLayout = new QHBoxLayout();
+-
+-    hLayout->addWidget(exitButton, 0, Qt::AlignLeft);
+-    hLayout->addWidget(levelBox, 0, Qt::AlignRight);
+-    hLayout->addSpacing(30);
+-
+-    vLayout->addWidget(kbframe);
+-    vLayout->addLayout(hLayout);
+-
+-    connect(exitButton, &QPushButton::clicked, this, &KeyboardPainter::close);
+-    connect(levelBox, SIGNAL(activated(int)), this, SLOT(levelChanged(int)));
+-
+-    setWindowTitle(kbframe->getLayoutName());
+-    levelBox->setVisible(false);
+-}
+-
+-
+-void KeyboardPainter::generateKeyboardLayout(const QString &layout, const QString &variant, const QString &model, const QString &title)
+-{
+-    kbframe->generateKeyboardLayout(layout, variant, model);
+-    kbframe->setFixedSize(getWidth(), getHeight());
+-    kbDialog->setFixedSize(getWidth(), getWidth());
+-    setWindowTitle(title);
+-
+-    int level = kbframe->getLevel();
+-
+-    if (level > 4) {
+-        levelBox->addItem(tr("Keyboard layout levels"), (tr("Level %1, %2").arg(3, 4)));
+-        for (int i = 5; i <= level; i += 2) {
+-            levelBox->addItem(tr("Keyboard layout levels"), (tr("Level %1, %2").arg(i, i + 1)));
+-        }
+-    } else {
+-        levelBox->setVisible(false);
+-    }
+-}
+-
+-void KeyboardPainter::levelChanged(int l_id)
+-{
+-    kbframe->setL_id(l_id);
+-}
+-
+-int KeyboardPainter::getHeight()
+-{
+-    int height = kbframe->getHeight();
+-    height = kbframe->getScaleFactor() * height + 50;
+-    return height;
+-}
+-
+-int KeyboardPainter::getWidth()
+-{
+-    int width = kbframe->getWidth();
+-    width = kbframe->getScaleFactor() * width + 20;
+-    return width;
+-}
+-
+-KeyboardPainter::~KeyboardPainter()
+-{
+-    delete kbframe;
+-    kbframe = nullptr;
+-    delete exitButton;
+-    exitButton = nullptr;
+-    delete levelBox;
+-    levelBox = nullptr;
+-}
+diff --git a/plugins/devices/keyboard/preview/keyboardpainter.h b/plugins/devices/keyboard/preview/keyboardpainter.h
+deleted file mode 100644
+index 4e100d2..0000000
+--- a/plugins/devices/keyboard/preview/keyboardpainter.h
++++ /dev/null
+@@ -1,51 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-
+-#ifndef KEYBOARDPAINTER_H
+-#define KEYBOARDPAINTER_H
+-
+-#include "kbpreviewframe.h"
+-
+-#include <QDialog>
+-
+-class QPushButton;
+-class QComboBox;
+-
+-class KeyboardPainter : public QDialog
+-{
+-    Q_OBJECT
+-
+-public:
+-    explicit KeyboardPainter();
+-    ~KeyboardPainter() override;
+-    void generateKeyboardLayout(const QString &layout, const QString &variant, const QString &model, const QString &title);
+-    int getHeight();
+-    int getWidth();
+-
+-public Q_SLOTS:
+-    void levelChanged(int l_id);
+-
+-private:
+-    QDialog *kbDialog;
+-    KbPreviewFrame *kbframe;
+-    QPushButton *exitButton;
+-    QComboBox *levelBox;
+-};
+-
+-#endif // KEYBOARDPAINTER_H
+diff --git a/plugins/devices/keyboard/preview/keysym2ucs.cpp b/plugins/devices/keyboard/preview/keysym2ucs.cpp
+deleted file mode 100644
+index 5d0125d..0000000
+--- a/plugins/devices/keyboard/preview/keysym2ucs.cpp
++++ /dev/null
+@@ -1,901 +0,0 @@
+-/*
+- *  Copyright (C) 2010 Andriy Rysin (rysin@kde.org)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-/* $XFree86$
+- * This module converts keysym values into the corresponding ISO 10646-1
+- * (UCS, Unicode) values.
+- *
+- * The array keysymtab[] contains pairs of X11 keysym values for graphical
+- * characters and the corresponding Unicode value. The function
+- * keysym2ucs() maps a keysym onto a Unicode value using a binary search,
+- * therefore keysymtab[] must remain SORTED by keysym value.
+- *
+- * The keysym -> UTF-8 conversion will hopefully one day be provided
+- * by Xlib via XmbLookupString() and should ideally not have to be
+- * done in X applications. But we are not there yet.
+- *
+- * We allow to represent any UCS character in the range U+00000000 to
+- * U+00FFFFFF by a keysym value in the range 0x01000000 to 0x01ffffff.
+- * This admittedly does not cover the entire 31-bit space of UCS, but
+- * it does cover all of the characters up to U+10FFFF, which can be
+- * represented by UTF-16, and more, and it is very unlikely that higher
+- * UCS codes will ever be assigned by ISO. So to get Unicode character
+- * U+ABCD you can directly use keysym 0x1000abcd.
+- *
+- * NOTE: The comments in the table below contain the actual character
+- * encoded in UTF-8, so for viewing and editing best use an editor in
+- * UTF-8 mode.
+- *
+- * Author: Markus G. Kuhn <mkuhn@acm.org>, University of Cambridge, June 1999
+- *
+- * Special thanks to Richard Verhoeven <river@win.tue.nl> for preparing
+- * an initial draft of the mapping table.
+- */
+-
+-#include "keysym2ucs.h"
+-
+-struct codepair {
+-    unsigned short keysym;
+-    unsigned short ucs;
+-} keysymtab[] = {
+-    { 0x01a1, 0x0104 }, /*                     Aogonek Ą LATIN CAPITAL LETTER A WITH OGONEK */
+-    { 0x01a2, 0x02d8 }, /*                       breve ˘ BREVE */
+-    { 0x01a3, 0x0141 }, /*                     Lstroke Ł LATIN CAPITAL LETTER L WITH STROKE */
+-    { 0x01a5, 0x013d }, /*                      Lcaron Ľ LATIN CAPITAL LETTER L WITH CARON */
+-    { 0x01a6, 0x015a }, /*                      Sacute Ś LATIN CAPITAL LETTER S WITH ACUTE */
+-    { 0x01a9, 0x0160 }, /*                      Scaron Š LATIN CAPITAL LETTER S WITH CARON */
+-    { 0x01aa, 0x015e }, /*                    Scedilla Ş LATIN CAPITAL LETTER S WITH CEDILLA */
+-    { 0x01ab, 0x0164 }, /*                      Tcaron Ť LATIN CAPITAL LETTER T WITH CARON */
+-    { 0x01ac, 0x0179 }, /*                      Zacute Ź LATIN CAPITAL LETTER Z WITH ACUTE */
+-    { 0x01ae, 0x017d }, /*                      Zcaron Ž LATIN CAPITAL LETTER Z WITH CARON */
+-    { 0x01af, 0x017b }, /*                   Zabovedot Ż LATIN CAPITAL LETTER Z WITH DOT ABOVE */
+-    { 0x01b1, 0x0105 }, /*                     aogonek ą LATIN SMALL LETTER A WITH OGONEK */
+-    { 0x01b2, 0x02db }, /*                      ogonek ˛ OGONEK */
+-    { 0x01b3, 0x0142 }, /*                     lstroke ł LATIN SMALL LETTER L WITH STROKE */
+-    { 0x01b5, 0x013e }, /*                      lcaron ľ LATIN SMALL LETTER L WITH CARON */
+-    { 0x01b6, 0x015b }, /*                      sacute ś LATIN SMALL LETTER S WITH ACUTE */
+-    { 0x01b7, 0x02c7 }, /*                       caron ˇ CARON */
+-    { 0x01b9, 0x0161 }, /*                      scaron š LATIN SMALL LETTER S WITH CARON */
+-    { 0x01ba, 0x015f }, /*                    scedilla ş LATIN SMALL LETTER S WITH CEDILLA */
+-    { 0x01bb, 0x0165 }, /*                      tcaron ť LATIN SMALL LETTER T WITH CARON */
+-    { 0x01bc, 0x017a }, /*                      zacute ź LATIN SMALL LETTER Z WITH ACUTE */
+-    { 0x01bd, 0x02dd }, /*                 doubleacute ˝ DOUBLE ACUTE ACCENT */
+-    { 0x01be, 0x017e }, /*                      zcaron ž LATIN SMALL LETTER Z WITH CARON */
+-    { 0x01bf, 0x017c }, /*                   zabovedot ż LATIN SMALL LETTER Z WITH DOT ABOVE */
+-    { 0x01c0, 0x0154 }, /*                      Racute Ŕ LATIN CAPITAL LETTER R WITH ACUTE */
+-    { 0x01c3, 0x0102 }, /*                      Abreve Ă LATIN CAPITAL LETTER A WITH BREVE */
+-    { 0x01c5, 0x0139 }, /*                      Lacute Ĺ LATIN CAPITAL LETTER L WITH ACUTE */
+-    { 0x01c6, 0x0106 }, /*                      Cacute Ć LATIN CAPITAL LETTER C WITH ACUTE */
+-    { 0x01c8, 0x010c }, /*                      Ccaron Č LATIN CAPITAL LETTER C WITH CARON */
+-    { 0x01ca, 0x0118 }, /*                     Eogonek Ę LATIN CAPITAL LETTER E WITH OGONEK */
+-    { 0x01cc, 0x011a }, /*                      Ecaron Ě LATIN CAPITAL LETTER E WITH CARON */
+-    { 0x01cf, 0x010e }, /*                      Dcaron Ď LATIN CAPITAL LETTER D WITH CARON */
+-    { 0x01d0, 0x0110 }, /*                     Dstroke Đ LATIN CAPITAL LETTER D WITH STROKE */
+-    { 0x01d1, 0x0143 }, /*                      Nacute Ń LATIN CAPITAL LETTER N WITH ACUTE */
+-    { 0x01d2, 0x0147 }, /*                      Ncaron Ň LATIN CAPITAL LETTER N WITH CARON */
+-    { 0x01d5, 0x0150 }, /*                Odoubleacute Ő LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
+-    { 0x01d8, 0x0158 }, /*                      Rcaron Ř LATIN CAPITAL LETTER R WITH CARON */
+-    { 0x01d9, 0x016e }, /*                       Uring Ů LATIN CAPITAL LETTER U WITH RING ABOVE */
+-    { 0x01db, 0x0170 }, /*                Udoubleacute Ű LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
+-    { 0x01de, 0x0162 }, /*                    Tcedilla Ţ LATIN CAPITAL LETTER T WITH CEDILLA */
+-    { 0x01e0, 0x0155 }, /*                      racute ŕ LATIN SMALL LETTER R WITH ACUTE */
+-    { 0x01e3, 0x0103 }, /*                      abreve ă LATIN SMALL LETTER A WITH BREVE */
+-    { 0x01e5, 0x013a }, /*                      lacute ĺ LATIN SMALL LETTER L WITH ACUTE */
+-    { 0x01e6, 0x0107 }, /*                      cacute ć LATIN SMALL LETTER C WITH ACUTE */
+-    { 0x01e8, 0x010d }, /*                      ccaron č LATIN SMALL LETTER C WITH CARON */
+-    { 0x01ea, 0x0119 }, /*                     eogonek ę LATIN SMALL LETTER E WITH OGONEK */
+-    { 0x01ec, 0x011b }, /*                      ecaron ě LATIN SMALL LETTER E WITH CARON */
+-    { 0x01ef, 0x010f }, /*                      dcaron ď LATIN SMALL LETTER D WITH CARON */
+-    { 0x01f0, 0x0111 }, /*                     dstroke đ LATIN SMALL LETTER D WITH STROKE */
+-    { 0x01f1, 0x0144 }, /*                      nacute ń LATIN SMALL LETTER N WITH ACUTE */
+-    { 0x01f2, 0x0148 }, /*                      ncaron ň LATIN SMALL LETTER N WITH CARON */
+-    { 0x01f5, 0x0151 }, /*                odoubleacute ő LATIN SMALL LETTER O WITH DOUBLE ACUTE */
+-    { 0x01f8, 0x0159 }, /*                      rcaron ř LATIN SMALL LETTER R WITH CARON */
+-    { 0x01f9, 0x016f }, /*                       uring ů LATIN SMALL LETTER U WITH RING ABOVE */
+-    { 0x01fb, 0x0171 }, /*                udoubleacute ű LATIN SMALL LETTER U WITH DOUBLE ACUTE */
+-    { 0x01fe, 0x0163 }, /*                    tcedilla ţ LATIN SMALL LETTER T WITH CEDILLA */
+-    { 0x01ff, 0x02d9 }, /*                    abovedot ˙ DOT ABOVE */
+-    { 0x02a1, 0x0126 }, /*                     Hstroke Ħ LATIN CAPITAL LETTER H WITH STROKE */
+-    { 0x02a6, 0x0124 }, /*                 Hcircumflex Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
+-    { 0x02a9, 0x0130 }, /*                   Iabovedot İ LATIN CAPITAL LETTER I WITH DOT ABOVE */
+-    { 0x02ab, 0x011e }, /*                      Gbreve Ğ LATIN CAPITAL LETTER G WITH BREVE */
+-    { 0x02ac, 0x0134 }, /*                 Jcircumflex Ĵ LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
+-    { 0x02b1, 0x0127 }, /*                     hstroke ħ LATIN SMALL LETTER H WITH STROKE */
+-    { 0x02b6, 0x0125 }, /*                 hcircumflex ĥ LATIN SMALL LETTER H WITH CIRCUMFLEX */
+-    { 0x02b9, 0x0131 }, /*                    idotless ı LATIN SMALL LETTER DOTLESS I */
+-    { 0x02bb, 0x011f }, /*                      gbreve ğ LATIN SMALL LETTER G WITH BREVE */
+-    { 0x02bc, 0x0135 }, /*                 jcircumflex ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX */
+-    { 0x02c5, 0x010a }, /*                   Cabovedot Ċ LATIN CAPITAL LETTER C WITH DOT ABOVE */
+-    { 0x02c6, 0x0108 }, /*                 Ccircumflex Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
+-    { 0x02d5, 0x0120 }, /*                   Gabovedot Ġ LATIN CAPITAL LETTER G WITH DOT ABOVE */
+-    { 0x02d8, 0x011c }, /*                 Gcircumflex Ĝ LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
+-    { 0x02dd, 0x016c }, /*                      Ubreve Ŭ LATIN CAPITAL LETTER U WITH BREVE */
+-    { 0x02de, 0x015c }, /*                 Scircumflex Ŝ LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
+-    { 0x02e5, 0x010b }, /*                   cabovedot ċ LATIN SMALL LETTER C WITH DOT ABOVE */
+-    { 0x02e6, 0x0109 }, /*                 ccircumflex ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX */
+-    { 0x02f5, 0x0121 }, /*                   gabovedot ġ LATIN SMALL LETTER G WITH DOT ABOVE */
+-    { 0x02f8, 0x011d }, /*                 gcircumflex ĝ LATIN SMALL LETTER G WITH CIRCUMFLEX */
+-    { 0x02fd, 0x016d }, /*                      ubreve ŭ LATIN SMALL LETTER U WITH BREVE */
+-    { 0x02fe, 0x015d }, /*                 scircumflex ŝ LATIN SMALL LETTER S WITH CIRCUMFLEX */
+-    { 0x03a2, 0x0138 }, /*                         kra ĸ LATIN SMALL LETTER KRA */
+-    { 0x03a3, 0x0156 }, /*                    Rcedilla Ŗ LATIN CAPITAL LETTER R WITH CEDILLA */
+-    { 0x03a5, 0x0128 }, /*                      Itilde Ĩ LATIN CAPITAL LETTER I WITH TILDE */
+-    { 0x03a6, 0x013b }, /*                    Lcedilla Ļ LATIN CAPITAL LETTER L WITH CEDILLA */
+-    { 0x03aa, 0x0112 }, /*                     Emacron Ē LATIN CAPITAL LETTER E WITH MACRON */
+-    { 0x03ab, 0x0122 }, /*                    Gcedilla Ģ LATIN CAPITAL LETTER G WITH CEDILLA */
+-    { 0x03ac, 0x0166 }, /*                      Tslash Ŧ LATIN CAPITAL LETTER T WITH STROKE */
+-    { 0x03b3, 0x0157 }, /*                    rcedilla ŗ LATIN SMALL LETTER R WITH CEDILLA */
+-    { 0x03b5, 0x0129 }, /*                      itilde ĩ LATIN SMALL LETTER I WITH TILDE */
+-    { 0x03b6, 0x013c }, /*                    lcedilla ļ LATIN SMALL LETTER L WITH CEDILLA */
+-    { 0x03ba, 0x0113 }, /*                     emacron ē LATIN SMALL LETTER E WITH MACRON */
+-    { 0x03bb, 0x0123 }, /*                    gcedilla ģ LATIN SMALL LETTER G WITH CEDILLA */
+-    { 0x03bc, 0x0167 }, /*                      tslash ŧ LATIN SMALL LETTER T WITH STROKE */
+-    { 0x03bd, 0x014a }, /*                         ENG Ŋ LATIN CAPITAL LETTER ENG */
+-    { 0x03bf, 0x014b }, /*                         eng ŋ LATIN SMALL LETTER ENG */
+-    { 0x03c0, 0x0100 }, /*                     Amacron Ā LATIN CAPITAL LETTER A WITH MACRON */
+-    { 0x03c7, 0x012e }, /*                     Iogonek Į LATIN CAPITAL LETTER I WITH OGONEK */
+-    { 0x03cc, 0x0116 }, /*                   Eabovedot Ė LATIN CAPITAL LETTER E WITH DOT ABOVE */
+-    { 0x03cf, 0x012a }, /*                     Imacron Ī LATIN CAPITAL LETTER I WITH MACRON */
+-    { 0x03d1, 0x0145 }, /*                    Ncedilla Ņ LATIN CAPITAL LETTER N WITH CEDILLA */
+-    { 0x03d2, 0x014c }, /*                     Omacron Ō LATIN CAPITAL LETTER O WITH MACRON */
+-    { 0x03d3, 0x0136 }, /*                    Kcedilla Ķ LATIN CAPITAL LETTER K WITH CEDILLA */
+-    { 0x03d9, 0x0172 }, /*                     Uogonek Ų LATIN CAPITAL LETTER U WITH OGONEK */
+-    { 0x03dd, 0x0168 }, /*                      Utilde Ũ LATIN CAPITAL LETTER U WITH TILDE */
+-    { 0x03de, 0x016a }, /*                     Umacron Ū LATIN CAPITAL LETTER U WITH MACRON */
+-    { 0x03e0, 0x0101 }, /*                     amacron ā LATIN SMALL LETTER A WITH MACRON */
+-    { 0x03e7, 0x012f }, /*                     iogonek į LATIN SMALL LETTER I WITH OGONEK */
+-    { 0x03ec, 0x0117 }, /*                   eabovedot ė LATIN SMALL LETTER E WITH DOT ABOVE */
+-    { 0x03ef, 0x012b }, /*                     imacron ī LATIN SMALL LETTER I WITH MACRON */
+-    { 0x03f1, 0x0146 }, /*                    ncedilla ņ LATIN SMALL LETTER N WITH CEDILLA */
+-    { 0x03f2, 0x014d }, /*                     omacron ō LATIN SMALL LETTER O WITH MACRON */
+-    { 0x03f3, 0x0137 }, /*                    kcedilla ķ LATIN SMALL LETTER K WITH CEDILLA */
+-    { 0x03f9, 0x0173 }, /*                     uogonek ų LATIN SMALL LETTER U WITH OGONEK */
+-    { 0x03fd, 0x0169 }, /*                      utilde ũ LATIN SMALL LETTER U WITH TILDE */
+-    { 0x03fe, 0x016b }, /*                     umacron ū LATIN SMALL LETTER U WITH MACRON */
+-    { 0x047e, 0x203e }, /*                    overline ‾ OVERLINE */
+-    { 0x04a1, 0x3002 }, /*               kana_fullstop 。 IDEOGRAPHIC FULL STOP */
+-    { 0x04a2, 0x300c }, /*         kana_openingbracket 「 LEFT CORNER BRACKET */
+-    { 0x04a3, 0x300d }, /*         kana_closingbracket 」 RIGHT CORNER BRACKET */
+-    { 0x04a4, 0x3001 }, /*                  kana_comma 、 IDEOGRAPHIC COMMA */
+-    { 0x04a5, 0x30fb }, /*            kana_conjunctive ・ KATAKANA MIDDLE DOT */
+-    { 0x04a6, 0x30f2 }, /*                     kana_WO ヲ KATAKANA LETTER WO */
+-    { 0x04a7, 0x30a1 }, /*                      kana_a ァ KATAKANA LETTER SMALL A */
+-    { 0x04a8, 0x30a3 }, /*                      kana_i ィ KATAKANA LETTER SMALL I */
+-    { 0x04a9, 0x30a5 }, /*                      kana_u ゥ KATAKANA LETTER SMALL U */
+-    { 0x04aa, 0x30a7 }, /*                      kana_e ェ KATAKANA LETTER SMALL E */
+-    { 0x04ab, 0x30a9 }, /*                      kana_o ォ KATAKANA LETTER SMALL O */
+-    { 0x04ac, 0x30e3 }, /*                     kana_ya ャ KATAKANA LETTER SMALL YA */
+-    { 0x04ad, 0x30e5 }, /*                     kana_yu ュ KATAKANA LETTER SMALL YU */
+-    { 0x04ae, 0x30e7 }, /*                     kana_yo ョ KATAKANA LETTER SMALL YO */
+-    { 0x04af, 0x30c3 }, /*                    kana_tsu ッ KATAKANA LETTER SMALL TU */
+-    { 0x04b0, 0x30fc }, /*              prolongedsound ー KATAKANA-HIRAGANA PROLONGED SOUND MARK */
+-    { 0x04b1, 0x30a2 }, /*                      kana_A ア KATAKANA LETTER A */
+-    { 0x04b2, 0x30a4 }, /*                      kana_I イ KATAKANA LETTER I */
+-    { 0x04b3, 0x30a6 }, /*                      kana_U ウ KATAKANA LETTER U */
+-    { 0x04b4, 0x30a8 }, /*                      kana_E エ KATAKANA LETTER E */
+-    { 0x04b5, 0x30aa }, /*                      kana_O オ KATAKANA LETTER O */
+-    { 0x04b6, 0x30ab }, /*                     kana_KA カ KATAKANA LETTER KA */
+-    { 0x04b7, 0x30ad }, /*                     kana_KI キ KATAKANA LETTER KI */
+-    { 0x04b8, 0x30af }, /*                     kana_KU ク KATAKANA LETTER KU */
+-    { 0x04b9, 0x30b1 }, /*                     kana_KE ケ KATAKANA LETTER KE */
+-    { 0x04ba, 0x30b3 }, /*                     kana_KO コ KATAKANA LETTER KO */
+-    { 0x04bb, 0x30b5 }, /*                     kana_SA サ KATAKANA LETTER SA */
+-    { 0x04bc, 0x30b7 }, /*                    kana_SHI シ KATAKANA LETTER SI */
+-    { 0x04bd, 0x30b9 }, /*                     kana_SU ス KATAKANA LETTER SU */
+-    { 0x04be, 0x30bb }, /*                     kana_SE セ KATAKANA LETTER SE */
+-    { 0x04bf, 0x30bd }, /*                     kana_SO ソ KATAKANA LETTER SO */
+-    { 0x04c0, 0x30bf }, /*                     kana_TA タ KATAKANA LETTER TA */
+-    { 0x04c1, 0x30c1 }, /*                    kana_CHI チ KATAKANA LETTER TI */
+-    { 0x04c2, 0x30c4 }, /*                    kana_TSU ツ KATAKANA LETTER TU */
+-    { 0x04c3, 0x30c6 }, /*                     kana_TE テ KATAKANA LETTER TE */
+-    { 0x04c4, 0x30c8 }, /*                     kana_TO ト KATAKANA LETTER TO */
+-    { 0x04c5, 0x30ca }, /*                     kana_NA ナ KATAKANA LETTER NA */
+-    { 0x04c6, 0x30cb }, /*                     kana_NI ニ KATAKANA LETTER NI */
+-    { 0x04c7, 0x30cc }, /*                     kana_NU ヌ KATAKANA LETTER NU */
+-    { 0x04c8, 0x30cd }, /*                     kana_NE ネ KATAKANA LETTER NE */
+-    { 0x04c9, 0x30ce }, /*                     kana_NO ノ KATAKANA LETTER NO */
+-    { 0x04ca, 0x30cf }, /*                     kana_HA ハ KATAKANA LETTER HA */
+-    { 0x04cb, 0x30d2 }, /*                     kana_HI ヒ KATAKANA LETTER HI */
+-    { 0x04cc, 0x30d5 }, /*                     kana_FU フ KATAKANA LETTER HU */
+-    { 0x04cd, 0x30d8 }, /*                     kana_HE ヘ KATAKANA LETTER HE */
+-    { 0x04ce, 0x30db }, /*                     kana_HO ホ KATAKANA LETTER HO */
+-    { 0x04cf, 0x30de }, /*                     kana_MA マ KATAKANA LETTER MA */
+-    { 0x04d0, 0x30df }, /*                     kana_MI ミ KATAKANA LETTER MI */
+-    { 0x04d1, 0x30e0 }, /*                     kana_MU ム KATAKANA LETTER MU */
+-    { 0x04d2, 0x30e1 }, /*                     kana_ME メ KATAKANA LETTER ME */
+-    { 0x04d3, 0x30e2 }, /*                     kana_MO モ KATAKANA LETTER MO */
+-    { 0x04d4, 0x30e4 }, /*                     kana_YA ヤ KATAKANA LETTER YA */
+-    { 0x04d5, 0x30e6 }, /*                     kana_YU ユ KATAKANA LETTER YU */
+-    { 0x04d6, 0x30e8 }, /*                     kana_YO ヨ KATAKANA LETTER YO */
+-    { 0x04d7, 0x30e9 }, /*                     kana_RA ラ KATAKANA LETTER RA */
+-    { 0x04d8, 0x30ea }, /*                     kana_RI リ KATAKANA LETTER RI */
+-    { 0x04d9, 0x30eb }, /*                     kana_RU ル KATAKANA LETTER RU */
+-    { 0x04da, 0x30ec }, /*                     kana_RE レ KATAKANA LETTER RE */
+-    { 0x04db, 0x30ed }, /*                     kana_RO ロ KATAKANA LETTER RO */
+-    { 0x04dc, 0x30ef }, /*                     kana_WA ワ KATAKANA LETTER WA */
+-    { 0x04dd, 0x30f3 }, /*                      kana_N ン KATAKANA LETTER N */
+-    { 0x04de, 0x309b }, /*                 voicedsound ゛ KATAKANA-HIRAGANA VOICED SOUND MARK */
+-    { 0x04df, 0x309c }, /*             semivoicedsound ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
+-    { 0x05ac, 0x060c }, /*                Arabic_comma ، ARABIC COMMA */
+-    { 0x05bb, 0x061b }, /*            Arabic_semicolon ؛ ARABIC SEMICOLON */
+-    { 0x05bf, 0x061f }, /*        Arabic_question_mark ؟ ARABIC QUESTION MARK */
+-    { 0x05c1, 0x0621 }, /*                Arabic_hamza ء ARABIC LETTER HAMZA */
+-    { 0x05c2, 0x0622 }, /*          Arabic_maddaonalef آ ARABIC LETTER ALEF WITH MADDA ABOVE */
+-    { 0x05c3, 0x0623 }, /*          Arabic_hamzaonalef أ ARABIC LETTER ALEF WITH HAMZA ABOVE */
+-    { 0x05c4, 0x0624 }, /*           Arabic_hamzaonwaw ؤ ARABIC LETTER WAW WITH HAMZA ABOVE */
+-    { 0x05c5, 0x0625 }, /*       Arabic_hamzaunderalef إ ARABIC LETTER ALEF WITH HAMZA BELOW */
+-    { 0x05c6, 0x0626 }, /*           Arabic_hamzaonyeh ئ ARABIC LETTER YEH WITH HAMZA ABOVE */
+-    { 0x05c7, 0x0627 }, /*                 Arabic_alef ا ARABIC LETTER ALEF */
+-    { 0x05c8, 0x0628 }, /*                  Arabic_beh ب ARABIC LETTER BEH */
+-    { 0x05c9, 0x0629 }, /*           Arabic_tehmarbuta ة ARABIC LETTER TEH MARBUTA */
+-    { 0x05ca, 0x062a }, /*                  Arabic_teh ت ARABIC LETTER TEH */
+-    { 0x05cb, 0x062b }, /*                 Arabic_theh ث ARABIC LETTER THEH */
+-    { 0x05cc, 0x062c }, /*                 Arabic_jeem ج ARABIC LETTER JEEM */
+-    { 0x05cd, 0x062d }, /*                  Arabic_hah ح ARABIC LETTER HAH */
+-    { 0x05ce, 0x062e }, /*                 Arabic_khah خ ARABIC LETTER KHAH */
+-    { 0x05cf, 0x062f }, /*                  Arabic_dal د ARABIC LETTER DAL */
+-    { 0x05d0, 0x0630 }, /*                 Arabic_thal ذ ARABIC LETTER THAL */
+-    { 0x05d1, 0x0631 }, /*                   Arabic_ra ر ARABIC LETTER REH */
+-    { 0x05d2, 0x0632 }, /*                 Arabic_zain ز ARABIC LETTER ZAIN */
+-    { 0x05d3, 0x0633 }, /*                 Arabic_seen س ARABIC LETTER SEEN */
+-    { 0x05d4, 0x0634 }, /*                Arabic_sheen ش ARABIC LETTER SHEEN */
+-    { 0x05d5, 0x0635 }, /*                  Arabic_sad ص ARABIC LETTER SAD */
+-    { 0x05d6, 0x0636 }, /*                  Arabic_dad ض ARABIC LETTER DAD */
+-    { 0x05d7, 0x0637 }, /*                  Arabic_tah ط ARABIC LETTER TAH */
+-    { 0x05d8, 0x0638 }, /*                  Arabic_zah ظ ARABIC LETTER ZAH */
+-    { 0x05d9, 0x0639 }, /*                  Arabic_ain ع ARABIC LETTER AIN */
+-    { 0x05da, 0x063a }, /*                Arabic_ghain غ ARABIC LETTER GHAIN */
+-    { 0x05e0, 0x0640 }, /*              Arabic_tatweel ـ ARABIC TATWEEL */
+-    { 0x05e1, 0x0641 }, /*                  Arabic_feh ف ARABIC LETTER FEH */
+-    { 0x05e2, 0x0642 }, /*                  Arabic_qaf ق ARABIC LETTER QAF */
+-    { 0x05e3, 0x0643 }, /*                  Arabic_kaf ك ARABIC LETTER KAF */
+-    { 0x05e4, 0x0644 }, /*                  Arabic_lam ل ARABIC LETTER LAM */
+-    { 0x05e5, 0x0645 }, /*                 Arabic_meem م ARABIC LETTER MEEM */
+-    { 0x05e6, 0x0646 }, /*                 Arabic_noon ن ARABIC LETTER NOON */
+-    { 0x05e7, 0x0647 }, /*                   Arabic_ha ه ARABIC LETTER HEH */
+-    { 0x05e8, 0x0648 }, /*                  Arabic_waw و ARABIC LETTER WAW */
+-    { 0x05e9, 0x0649 }, /*          Arabic_alefmaksura ى ARABIC LETTER ALEF MAKSURA */
+-    { 0x05ea, 0x064a }, /*                  Arabic_yeh ي ARABIC LETTER YEH */
+-    { 0x05eb, 0x064b }, /*             Arabic_fathatan ً ARABIC FATHATAN */
+-    { 0x05ec, 0x064c }, /*             Arabic_dammatan ٌ ARABIC DAMMATAN */
+-    { 0x05ed, 0x064d }, /*             Arabic_kasratan ٍ ARABIC KASRATAN */
+-    { 0x05ee, 0x064e }, /*                Arabic_fatha َ ARABIC FATHA */
+-    { 0x05ef, 0x064f }, /*                Arabic_damma ُ ARABIC DAMMA */
+-    { 0x05f0, 0x0650 }, /*                Arabic_kasra ِ ARABIC KASRA */
+-    { 0x05f1, 0x0651 }, /*               Arabic_shadda ّ ARABIC SHADDA */
+-    { 0x05f2, 0x0652 }, /*                Arabic_sukun ْ ARABIC SUKUN */
+-    { 0x06a1, 0x0452 }, /*                 Serbian_dje ђ CYRILLIC SMALL LETTER DJE */
+-    { 0x06a2, 0x0453 }, /*               Macedonia_gje ѓ CYRILLIC SMALL LETTER GJE */
+-    { 0x06a3, 0x0451 }, /*                 Cyrillic_io ё CYRILLIC SMALL LETTER IO */
+-    { 0x06a4, 0x0454 }, /*                Ukrainian_ie є CYRILLIC SMALL LETTER UKRAINIAN IE */
+-    { 0x06a5, 0x0455 }, /*               Macedonia_dse ѕ CYRILLIC SMALL LETTER DZE */
+-    { 0x06a6, 0x0456 }, /*                 Ukrainian_i і CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
+-    { 0x06a7, 0x0457 }, /*                Ukrainian_yi ї CYRILLIC SMALL LETTER YI */
+-    { 0x06a8, 0x0458 }, /*                 Cyrillic_je ј CYRILLIC SMALL LETTER JE */
+-    { 0x06a9, 0x0459 }, /*                Cyrillic_lje љ CYRILLIC SMALL LETTER LJE */
+-    { 0x06aa, 0x045a }, /*                Cyrillic_nje њ CYRILLIC SMALL LETTER NJE */
+-    { 0x06ab, 0x045b }, /*                Serbian_tshe ћ CYRILLIC SMALL LETTER TSHE */
+-    { 0x06ac, 0x045c }, /*               Macedonia_kje ќ CYRILLIC SMALL LETTER KJE */
+-    { 0x06ad, 0x0491 }, /*   Ukrainian_ghe_with_upturn ґ CYRILLIC SMALL LETTER GHE WITH UPTURN */
+-    { 0x06ae, 0x045e }, /*         Byelorussian_shortu ў CYRILLIC SMALL LETTER SHORT U */
+-    { 0x06af, 0x045f }, /*               Cyrillic_dzhe џ CYRILLIC SMALL LETTER DZHE */
+-    { 0x06b0, 0x2116 }, /*                  numerosign № NUMERO SIGN */
+-    { 0x06b1, 0x0402 }, /*                 Serbian_DJE Ђ CYRILLIC CAPITAL LETTER DJE */
+-    { 0x06b2, 0x0403 }, /*               Macedonia_GJE Ѓ CYRILLIC CAPITAL LETTER GJE */
+-    { 0x06b3, 0x0401 }, /*                 Cyrillic_IO Ё CYRILLIC CAPITAL LETTER IO */
+-    { 0x06b4, 0x0404 }, /*                Ukrainian_IE Є CYRILLIC CAPITAL LETTER UKRAINIAN IE */
+-    { 0x06b5, 0x0405 }, /*               Macedonia_DSE Ѕ CYRILLIC CAPITAL LETTER DZE */
+-    { 0x06b6, 0x0406 }, /*                 Ukrainian_I І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
+-    { 0x06b7, 0x0407 }, /*                Ukrainian_YI Ї CYRILLIC CAPITAL LETTER YI */
+-    { 0x06b8, 0x0408 }, /*                 Cyrillic_JE Ј CYRILLIC CAPITAL LETTER JE */
+-    { 0x06b9, 0x0409 }, /*                Cyrillic_LJE Љ CYRILLIC CAPITAL LETTER LJE */
+-    { 0x06ba, 0x040a }, /*                Cyrillic_NJE Њ CYRILLIC CAPITAL LETTER NJE */
+-    { 0x06bb, 0x040b }, /*                Serbian_TSHE Ћ CYRILLIC CAPITAL LETTER TSHE */
+-    { 0x06bc, 0x040c }, /*               Macedonia_KJE Ќ CYRILLIC CAPITAL LETTER KJE */
+-    { 0x06bd, 0x0490 }, /*   Ukrainian_GHE_WITH_UPTURN Ґ CYRILLIC CAPITAL LETTER GHE WITH UPTURN */
+-    { 0x06be, 0x040e }, /*         Byelorussian_SHORTU Ў CYRILLIC CAPITAL LETTER SHORT U */
+-    { 0x06bf, 0x040f }, /*               Cyrillic_DZHE Џ CYRILLIC CAPITAL LETTER DZHE */
+-    { 0x06c0, 0x044e }, /*                 Cyrillic_yu ю CYRILLIC SMALL LETTER YU */
+-    { 0x06c1, 0x0430 }, /*                  Cyrillic_a а CYRILLIC SMALL LETTER A */
+-    { 0x06c2, 0x0431 }, /*                 Cyrillic_be б CYRILLIC SMALL LETTER BE */
+-    { 0x06c3, 0x0446 }, /*                Cyrillic_tse ц CYRILLIC SMALL LETTER TSE */
+-    { 0x06c4, 0x0434 }, /*                 Cyrillic_de д CYRILLIC SMALL LETTER DE */
+-    { 0x06c5, 0x0435 }, /*                 Cyrillic_ie е CYRILLIC SMALL LETTER IE */
+-    { 0x06c6, 0x0444 }, /*                 Cyrillic_ef ф CYRILLIC SMALL LETTER EF */
+-    { 0x06c7, 0x0433 }, /*                Cyrillic_ghe г CYRILLIC SMALL LETTER GHE */
+-    { 0x06c8, 0x0445 }, /*                 Cyrillic_ha х CYRILLIC SMALL LETTER HA */
+-    { 0x06c9, 0x0438 }, /*                  Cyrillic_i и CYRILLIC SMALL LETTER I */
+-    { 0x06ca, 0x0439 }, /*             Cyrillic_shorti й CYRILLIC SMALL LETTER SHORT I */
+-    { 0x06cb, 0x043a }, /*                 Cyrillic_ka к CYRILLIC SMALL LETTER KA */
+-    { 0x06cc, 0x043b }, /*                 Cyrillic_el л CYRILLIC SMALL LETTER EL */
+-    { 0x06cd, 0x043c }, /*                 Cyrillic_em м CYRILLIC SMALL LETTER EM */
+-    { 0x06ce, 0x043d }, /*                 Cyrillic_en н CYRILLIC SMALL LETTER EN */
+-    { 0x06cf, 0x043e }, /*                  Cyrillic_o о CYRILLIC SMALL LETTER O */
+-    { 0x06d0, 0x043f }, /*                 Cyrillic_pe п CYRILLIC SMALL LETTER PE */
+-    { 0x06d1, 0x044f }, /*                 Cyrillic_ya я CYRILLIC SMALL LETTER YA */
+-    { 0x06d2, 0x0440 }, /*                 Cyrillic_er р CYRILLIC SMALL LETTER ER */
+-    { 0x06d3, 0x0441 }, /*                 Cyrillic_es с CYRILLIC SMALL LETTER ES */
+-    { 0x06d4, 0x0442 }, /*                 Cyrillic_te т CYRILLIC SMALL LETTER TE */
+-    { 0x06d5, 0x0443 }, /*                  Cyrillic_u у CYRILLIC SMALL LETTER U */
+-    { 0x06d6, 0x0436 }, /*                Cyrillic_zhe ж CYRILLIC SMALL LETTER ZHE */
+-    { 0x06d7, 0x0432 }, /*                 Cyrillic_ve в CYRILLIC SMALL LETTER VE */
+-    { 0x06d8, 0x044c }, /*           Cyrillic_softsign ь CYRILLIC SMALL LETTER SOFT SIGN */
+-    { 0x06d9, 0x044b }, /*               Cyrillic_yeru ы CYRILLIC SMALL LETTER YERU */
+-    { 0x06da, 0x0437 }, /*                 Cyrillic_ze з CYRILLIC SMALL LETTER ZE */
+-    { 0x06db, 0x0448 }, /*                Cyrillic_sha ш CYRILLIC SMALL LETTER SHA */
+-    { 0x06dc, 0x044d }, /*                  Cyrillic_e э CYRILLIC SMALL LETTER E */
+-    { 0x06dd, 0x0449 }, /*              Cyrillic_shcha щ CYRILLIC SMALL LETTER SHCHA */
+-    { 0x06de, 0x0447 }, /*                Cyrillic_che ч CYRILLIC SMALL LETTER CHE */
+-    { 0x06df, 0x044a }, /*           Cyrillic_hardsign ъ CYRILLIC SMALL LETTER HARD SIGN */
+-    { 0x06e0, 0x042e }, /*                 Cyrillic_YU Ю CYRILLIC CAPITAL LETTER YU */
+-    { 0x06e1, 0x0410 }, /*                  Cyrillic_A А CYRILLIC CAPITAL LETTER A */
+-    { 0x06e2, 0x0411 }, /*                 Cyrillic_BE Б CYRILLIC CAPITAL LETTER BE */
+-    { 0x06e3, 0x0426 }, /*                Cyrillic_TSE Ц CYRILLIC CAPITAL LETTER TSE */
+-    { 0x06e4, 0x0414 }, /*                 Cyrillic_DE Д CYRILLIC CAPITAL LETTER DE */
+-    { 0x06e5, 0x0415 }, /*                 Cyrillic_IE Е CYRILLIC CAPITAL LETTER IE */
+-    { 0x06e6, 0x0424 }, /*                 Cyrillic_EF Ф CYRILLIC CAPITAL LETTER EF */
+-    { 0x06e7, 0x0413 }, /*                Cyrillic_GHE Г CYRILLIC CAPITAL LETTER GHE */
+-    { 0x06e8, 0x0425 }, /*                 Cyrillic_HA Х CYRILLIC CAPITAL LETTER HA */
+-    { 0x06e9, 0x0418 }, /*                  Cyrillic_I И CYRILLIC CAPITAL LETTER I */
+-    { 0x06ea, 0x0419 }, /*             Cyrillic_SHORTI Й CYRILLIC CAPITAL LETTER SHORT I */
+-    { 0x06eb, 0x041a }, /*                 Cyrillic_KA К CYRILLIC CAPITAL LETTER KA */
+-    { 0x06ec, 0x041b }, /*                 Cyrillic_EL Л CYRILLIC CAPITAL LETTER EL */
+-    { 0x06ed, 0x041c }, /*                 Cyrillic_EM М CYRILLIC CAPITAL LETTER EM */
+-    { 0x06ee, 0x041d }, /*                 Cyrillic_EN Н CYRILLIC CAPITAL LETTER EN */
+-    { 0x06ef, 0x041e }, /*                  Cyrillic_O О CYRILLIC CAPITAL LETTER O */
+-    { 0x06f0, 0x041f }, /*                 Cyrillic_PE П CYRILLIC CAPITAL LETTER PE */
+-    { 0x06f1, 0x042f }, /*                 Cyrillic_YA Я CYRILLIC CAPITAL LETTER YA */
+-    { 0x06f2, 0x0420 }, /*                 Cyrillic_ER Р CYRILLIC CAPITAL LETTER ER */
+-    { 0x06f3, 0x0421 }, /*                 Cyrillic_ES С CYRILLIC CAPITAL LETTER ES */
+-    { 0x06f4, 0x0422 }, /*                 Cyrillic_TE Т CYRILLIC CAPITAL LETTER TE */
+-    { 0x06f5, 0x0423 }, /*                  Cyrillic_U У CYRILLIC CAPITAL LETTER U */
+-    { 0x06f6, 0x0416 }, /*                Cyrillic_ZHE Ж CYRILLIC CAPITAL LETTER ZHE */
+-    { 0x06f7, 0x0412 }, /*                 Cyrillic_VE В CYRILLIC CAPITAL LETTER VE */
+-    { 0x06f8, 0x042c }, /*           Cyrillic_SOFTSIGN Ь CYRILLIC CAPITAL LETTER SOFT SIGN */
+-    { 0x06f9, 0x042b }, /*               Cyrillic_YERU Ы CYRILLIC CAPITAL LETTER YERU */
+-    { 0x06fa, 0x0417 }, /*                 Cyrillic_ZE З CYRILLIC CAPITAL LETTER ZE */
+-    { 0x06fb, 0x0428 }, /*                Cyrillic_SHA Ш CYRILLIC CAPITAL LETTER SHA */
+-    { 0x06fc, 0x042d }, /*                  Cyrillic_E Э CYRILLIC CAPITAL LETTER E */
+-    { 0x06fd, 0x0429 }, /*              Cyrillic_SHCHA Щ CYRILLIC CAPITAL LETTER SHCHA */
+-    { 0x06fe, 0x0427 }, /*                Cyrillic_CHE Ч CYRILLIC CAPITAL LETTER CHE */
+-    { 0x06ff, 0x042a }, /*           Cyrillic_HARDSIGN Ъ CYRILLIC CAPITAL LETTER HARD SIGN */
+-    { 0x07a1, 0x0386 }, /*           Greek_ALPHAaccent Ά GREEK CAPITAL LETTER ALPHA WITH TONOS */
+-    { 0x07a2, 0x0388 }, /*         Greek_EPSILONaccent Έ GREEK CAPITAL LETTER EPSILON WITH TONOS */
+-    { 0x07a3, 0x0389 }, /*             Greek_ETAaccent Ή GREEK CAPITAL LETTER ETA WITH TONOS */
+-    { 0x07a4, 0x038a }, /*            Greek_IOTAaccent Ί GREEK CAPITAL LETTER IOTA WITH TONOS */
+-    { 0x07a5, 0x03aa }, /*         Greek_IOTAdiaeresis Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
+-    { 0x07a7, 0x038c }, /*         Greek_OMICRONaccent Ό GREEK CAPITAL LETTER OMICRON WITH TONOS */
+-    { 0x07a8, 0x038e }, /*         Greek_UPSILONaccent Ύ GREEK CAPITAL LETTER UPSILON WITH TONOS */
+-    { 0x07a9, 0x03ab }, /*       Greek_UPSILONdieresis Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
+-    { 0x07ab, 0x038f }, /*           Greek_OMEGAaccent Ώ GREEK CAPITAL LETTER OMEGA WITH TONOS */
+-    { 0x07ae, 0x0385 }, /*        Greek_accentdieresis ΅ GREEK DIALYTIKA TONOS */
+-    { 0x07af, 0x2015 }, /*              Greek_horizbar ― HORIZONTAL BAR */
+-    { 0x07b1, 0x03ac }, /*           Greek_alphaaccent ά GREEK SMALL LETTER ALPHA WITH TONOS */
+-    { 0x07b2, 0x03ad }, /*         Greek_epsilonaccent έ GREEK SMALL LETTER EPSILON WITH TONOS */
+-    { 0x07b3, 0x03ae }, /*             Greek_etaaccent ή GREEK SMALL LETTER ETA WITH TONOS */
+-    { 0x07b4, 0x03af }, /*            Greek_iotaaccent ί GREEK SMALL LETTER IOTA WITH TONOS */
+-    { 0x07b5, 0x03ca }, /*          Greek_iotadieresis ϊ GREEK SMALL LETTER IOTA WITH DIALYTIKA */
+-    { 0x07b6, 0x0390 }, /*    Greek_iotaaccentdieresis ΐ GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+-    { 0x07b7, 0x03cc }, /*         Greek_omicronaccent ό GREEK SMALL LETTER OMICRON WITH TONOS */
+-    { 0x07b8, 0x03cd }, /*         Greek_upsilonaccent ύ GREEK SMALL LETTER UPSILON WITH TONOS */
+-    { 0x07b9, 0x03cb }, /*       Greek_upsilondieresis ϋ GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
+-    { 0x07ba, 0x03b0 }, /* Greek_upsilonaccentdieresis ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
+-    { 0x07bb, 0x03ce }, /*           Greek_omegaaccent ώ GREEK SMALL LETTER OMEGA WITH TONOS */
+-    { 0x07c1, 0x0391 }, /*                 Greek_ALPHA Α GREEK CAPITAL LETTER ALPHA */
+-    { 0x07c2, 0x0392 }, /*                  Greek_BETA Β GREEK CAPITAL LETTER BETA */
+-    { 0x07c3, 0x0393 }, /*                 Greek_GAMMA Γ GREEK CAPITAL LETTER GAMMA */
+-    { 0x07c4, 0x0394 }, /*                 Greek_DELTA Δ GREEK CAPITAL LETTER DELTA */
+-    { 0x07c5, 0x0395 }, /*               Greek_EPSILON Ε GREEK CAPITAL LETTER EPSILON */
+-    { 0x07c6, 0x0396 }, /*                  Greek_ZETA Ζ GREEK CAPITAL LETTER ZETA */
+-    { 0x07c7, 0x0397 }, /*                   Greek_ETA Η GREEK CAPITAL LETTER ETA */
+-    { 0x07c8, 0x0398 }, /*                 Greek_THETA Θ GREEK CAPITAL LETTER THETA */
+-    { 0x07c9, 0x0399 }, /*                  Greek_IOTA Ι GREEK CAPITAL LETTER IOTA */
+-    { 0x07ca, 0x039a }, /*                 Greek_KAPPA Κ GREEK CAPITAL LETTER KAPPA */
+-    { 0x07cb, 0x039b }, /*                Greek_LAMBDA Λ GREEK CAPITAL LETTER LAMDA */
+-    { 0x07cc, 0x039c }, /*                    Greek_MU Μ GREEK CAPITAL LETTER MU */
+-    { 0x07cd, 0x039d }, /*                    Greek_NU Ν GREEK CAPITAL LETTER NU */
+-    { 0x07ce, 0x039e }, /*                    Greek_XI Ξ GREEK CAPITAL LETTER XI */
+-    { 0x07cf, 0x039f }, /*               Greek_OMICRON Ο GREEK CAPITAL LETTER OMICRON */
+-    { 0x07d0, 0x03a0 }, /*                    Greek_PI Π GREEK CAPITAL LETTER PI */
+-    { 0x07d1, 0x03a1 }, /*                   Greek_RHO Ρ GREEK CAPITAL LETTER RHO */
+-    { 0x07d2, 0x03a3 }, /*                 Greek_SIGMA Σ GREEK CAPITAL LETTER SIGMA */
+-    { 0x07d4, 0x03a4 }, /*                   Greek_TAU Τ GREEK CAPITAL LETTER TAU */
+-    { 0x07d5, 0x03a5 }, /*               Greek_UPSILON Υ GREEK CAPITAL LETTER UPSILON */
+-    { 0x07d6, 0x03a6 }, /*                   Greek_PHI Φ GREEK CAPITAL LETTER PHI */
+-    { 0x07d7, 0x03a7 }, /*                   Greek_CHI Χ GREEK CAPITAL LETTER CHI */
+-    { 0x07d8, 0x03a8 }, /*                   Greek_PSI Ψ GREEK CAPITAL LETTER PSI */
+-    { 0x07d9, 0x03a9 }, /*                 Greek_OMEGA Ω GREEK CAPITAL LETTER OMEGA */
+-    { 0x07e1, 0x03b1 }, /*                 Greek_alpha α GREEK SMALL LETTER ALPHA */
+-    { 0x07e2, 0x03b2 }, /*                  Greek_beta β GREEK SMALL LETTER BETA */
+-    { 0x07e3, 0x03b3 }, /*                 Greek_gamma γ GREEK SMALL LETTER GAMMA */
+-    { 0x07e4, 0x03b4 }, /*                 Greek_delta δ GREEK SMALL LETTER DELTA */
+-    { 0x07e5, 0x03b5 }, /*               Greek_epsilon ε GREEK SMALL LETTER EPSILON */
+-    { 0x07e6, 0x03b6 }, /*                  Greek_zeta ζ GREEK SMALL LETTER ZETA */
+-    { 0x07e7, 0x03b7 }, /*                   Greek_eta η GREEK SMALL LETTER ETA */
+-    { 0x07e8, 0x03b8 }, /*                 Greek_theta θ GREEK SMALL LETTER THETA */
+-    { 0x07e9, 0x03b9 }, /*                  Greek_iota ι GREEK SMALL LETTER IOTA */
+-    { 0x07ea, 0x03ba }, /*                 Greek_kappa κ GREEK SMALL LETTER KAPPA */
+-    { 0x07eb, 0x03bb }, /*                Greek_lambda λ GREEK SMALL LETTER LAMDA */
+-    { 0x07ec, 0x03bc }, /*                    Greek_mu μ GREEK SMALL LETTER MU */
+-    { 0x07ed, 0x03bd }, /*                    Greek_nu ν GREEK SMALL LETTER NU */
+-    { 0x07ee, 0x03be }, /*                    Greek_xi ξ GREEK SMALL LETTER XI */
+-    { 0x07ef, 0x03bf }, /*               Greek_omicron ο GREEK SMALL LETTER OMICRON */
+-    { 0x07f0, 0x03c0 }, /*                    Greek_pi π GREEK SMALL LETTER PI */
+-    { 0x07f1, 0x03c1 }, /*                   Greek_rho ρ GREEK SMALL LETTER RHO */
+-    { 0x07f2, 0x03c3 }, /*                 Greek_sigma σ GREEK SMALL LETTER SIGMA */
+-    { 0x07f3, 0x03c2 }, /*       Greek_finalsmallsigma ς GREEK SMALL LETTER FINAL SIGMA */
+-    { 0x07f4, 0x03c4 }, /*                   Greek_tau τ GREEK SMALL LETTER TAU */
+-    { 0x07f5, 0x03c5 }, /*               Greek_upsilon υ GREEK SMALL LETTER UPSILON */
+-    { 0x07f6, 0x03c6 }, /*                   Greek_phi φ GREEK SMALL LETTER PHI */
+-    { 0x07f7, 0x03c7 }, /*                   Greek_chi χ GREEK SMALL LETTER CHI */
+-    { 0x07f8, 0x03c8 }, /*                   Greek_psi ψ GREEK SMALL LETTER PSI */
+-    { 0x07f9, 0x03c9 }, /*                 Greek_omega ω GREEK SMALL LETTER OMEGA */
+-    { 0x08a1, 0x23b7 }, /*                 leftradical ⎷ RADICAL SYMBOL BOTTOM */
+-    { 0x08a2, 0x250c }, /*              topleftradical ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */
+-    { 0x08a3, 0x2500 }, /*              horizconnector ─ BOX DRAWINGS LIGHT HORIZONTAL */
+-    { 0x08a4, 0x2320 }, /*                 topintegral ⌠ TOP HALF INTEGRAL */
+-    { 0x08a5, 0x2321 }, /*                 botintegral ⌡ BOTTOM HALF INTEGRAL */
+-    { 0x08a6, 0x2502 }, /*               vertconnector │ BOX DRAWINGS LIGHT VERTICAL */
+-    { 0x08a7, 0x23a1 }, /*            topleftsqbracket ⎡ LEFT SQUARE BRACKET UPPER CORNER */
+-    { 0x08a8, 0x23a3 }, /*            botleftsqbracket ⎣ LEFT SQUARE BRACKET LOWER CORNER */
+-    { 0x08a9, 0x23a4 }, /*           toprightsqbracket ⎤ RIGHT SQUARE BRACKET UPPER CORNER */
+-    { 0x08aa, 0x23a6 }, /*           botrightsqbracket ⎦ RIGHT SQUARE BRACKET LOWER CORNER */
+-    { 0x08ab, 0x239b }, /*               topleftparens ⎛ LEFT PARENTHESIS UPPER HOOK */
+-    { 0x08ac, 0x239d }, /*               botleftparens ⎝ LEFT PARENTHESIS LOWER HOOK */
+-    { 0x08ad, 0x239e }, /*              toprightparens ⎞ RIGHT PARENTHESIS UPPER HOOK */
+-    { 0x08ae, 0x23a0 }, /*              botrightparens ⎠ RIGHT PARENTHESIS LOWER HOOK */
+-    { 0x08af, 0x23a8 }, /*        leftmiddlecurlybrace ⎨ LEFT CURLY BRACKET MIDDLE PIECE */
+-    { 0x08b0, 0x23ac }, /*       rightmiddlecurlybrace ⎬ RIGHT CURLY BRACKET MIDDLE PIECE */
+-    /*  0x08b1                          topleftsummation ? ??? */
+-    /*  0x08b2                          botleftsummation ? ??? */
+-    /*  0x08b3                 topvertsummationconnector ? ??? */
+-    /*  0x08b4                 botvertsummationconnector ? ??? */
+-    /*  0x08b5                         toprightsummation ? ??? */
+-    /*  0x08b6                         botrightsummation ? ??? */
+-    /*  0x08b7                      rightmiddlesummation ? ??? */
+-    { 0x08bc, 0x2264 }, /*               lessthanequal ≤ LESS-THAN OR EQUAL TO */
+-    { 0x08bd, 0x2260 }, /*                    notequal ≠ NOT EQUAL TO */
+-    { 0x08be, 0x2265 }, /*            greaterthanequal ≥ GREATER-THAN OR EQUAL TO */
+-    { 0x08bf, 0x222b }, /*                    integral ∫ INTEGRAL */
+-    { 0x08c0, 0x2234 }, /*                   therefore ∴ THEREFORE */
+-    { 0x08c1, 0x221d }, /*                   variation ∝ PROPORTIONAL TO */
+-    { 0x08c2, 0x221e }, /*                    infinity ∞ INFINITY */
+-    { 0x08c5, 0x2207 }, /*                       nabla ∇ NABLA */
+-    { 0x08c8, 0x223c }, /*                 approximate ∼ TILDE OPERATOR */
+-    { 0x08c9, 0x2243 }, /*                similarequal ≃ ASYMPTOTICALLY EQUAL TO */
+-    { 0x08cd, 0x21d4 }, /*                    ifonlyif ⇔ LEFT RIGHT DOUBLE ARROW */
+-    { 0x08ce, 0x21d2 }, /*                     implies ⇒ RIGHTWARDS DOUBLE ARROW */
+-    { 0x08cf, 0x2261 }, /*                   identical ≡ IDENTICAL TO */
+-    { 0x08d6, 0x221a }, /*                     radical √ SQUARE ROOT */
+-    { 0x08da, 0x2282 }, /*                  includedin ⊂ SUBSET OF */
+-    { 0x08db, 0x2283 }, /*                    includes ⊃ SUPERSET OF */
+-    { 0x08dc, 0x2229 }, /*                intersection ∩ INTERSECTION */
+-    { 0x08dd, 0x222a }, /*                       union ∪ UNION */
+-    { 0x08de, 0x2227 }, /*                  logicaland ∧ LOGICAL AND */
+-    { 0x08df, 0x2228 }, /*                   logicalor ∨ LOGICAL OR */
+-    { 0x08ef, 0x2202 }, /*           partialderivative ∂ PARTIAL DIFFERENTIAL */
+-    { 0x08f6, 0x0192 }, /*                    function ƒ LATIN SMALL LETTER F WITH HOOK */
+-    { 0x08fb, 0x2190 }, /*                   leftarrow ← LEFTWARDS ARROW */
+-    { 0x08fc, 0x2191 }, /*                     uparrow ↑ UPWARDS ARROW */
+-    { 0x08fd, 0x2192 }, /*                  rightarrow → RIGHTWARDS ARROW */
+-    { 0x08fe, 0x2193 }, /*                   downarrow ↓ DOWNWARDS ARROW */
+-    { 0x09df, 0x2422 }, /*                       blank ␢ BLANK SYMBOL */
+-    { 0x09e0, 0x25c6 }, /*                soliddiamond ◆ BLACK DIAMOND */
+-    { 0x09e1, 0x2592 }, /*                checkerboard ▒ MEDIUM SHADE */
+-    { 0x09e2, 0x2409 }, /*                          ht ␉ SYMBOL FOR HORIZONTAL TABULATION */
+-    { 0x09e3, 0x240c }, /*                          ff ␌ SYMBOL FOR FORM FEED */
+-    { 0x09e4, 0x240d }, /*                          cr ␍ SYMBOL FOR CARRIAGE RETURN */
+-    { 0x09e5, 0x240a }, /*                          lf ␊ SYMBOL FOR LINE FEED */
+-    { 0x09e8, 0x2424 }, /*                          nl ␤ SYMBOL FOR NEWLINE */
+-    { 0x09e9, 0x240b }, /*                          vt ␋ SYMBOL FOR VERTICAL TABULATION */
+-    { 0x09ea, 0x2518 }, /*              lowrightcorner ┘ BOX DRAWINGS LIGHT UP AND LEFT */
+-    { 0x09eb, 0x2510 }, /*               uprightcorner ┐ BOX DRAWINGS LIGHT DOWN AND LEFT */
+-    { 0x09ec, 0x250c }, /*                upleftcorner ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */
+-    { 0x09ed, 0x2514 }, /*               lowleftcorner └ BOX DRAWINGS LIGHT UP AND RIGHT */
+-    { 0x09ee, 0x253c }, /*               crossinglines ┼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
+-    { 0x09ef, 0x23ba }, /*              horizlinescan1 ⎺ HORIZONTAL SCAN LINE-1 */
+-    { 0x09f0, 0x23bb }, /*              horizlinescan3 ⎻ HORIZONTAL SCAN LINE-3 */
+-    { 0x09f1, 0x2500 }, /*              horizlinescan5 ─ BOX DRAWINGS LIGHT HORIZONTAL */
+-    { 0x09f2, 0x23bc }, /*              horizlinescan7 ⎼ HORIZONTAL SCAN LINE-7 */
+-    { 0x09f3, 0x23bd }, /*              horizlinescan9 ⎽ HORIZONTAL SCAN LINE-9 */
+-    { 0x09f4, 0x251c }, /*                       leftt ├ BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
+-    { 0x09f5, 0x2524 }, /*                      rightt ┤ BOX DRAWINGS LIGHT VERTICAL AND LEFT */
+-    { 0x09f6, 0x2534 }, /*                        bott ┴ BOX DRAWINGS LIGHT UP AND HORIZONTAL */
+-    { 0x09f7, 0x252c }, /*                        topt ┬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
+-    { 0x09f8, 0x2502 }, /*                     vertbar │ BOX DRAWINGS LIGHT VERTICAL */
+-    { 0x0aa1, 0x2003 }, /*                     emspace   EM SPACE */
+-    { 0x0aa2, 0x2002 }, /*                     enspace   EN SPACE */
+-    { 0x0aa3, 0x2004 }, /*                    em3space   THREE-PER-EM SPACE */
+-    { 0x0aa4, 0x2005 }, /*                    em4space   FOUR-PER-EM SPACE */
+-    { 0x0aa5, 0x2007 }, /*                  digitspace   FIGURE SPACE */
+-    { 0x0aa6, 0x2008 }, /*                  punctspace   PUNCTUATION SPACE */
+-    { 0x0aa7, 0x2009 }, /*                   thinspace   THIN SPACE */
+-    { 0x0aa8, 0x200a }, /*                   hairspace   HAIR SPACE */
+-    { 0x0aa9, 0x2014 }, /*                      emdash — EM DASH */
+-    { 0x0aaa, 0x2013 }, /*                      endash – EN DASH */
+-    { 0x0aac, 0x2423 }, /*                 signifblank ␣ OPEN BOX */
+-    { 0x0aae, 0x2026 }, /*                    ellipsis … HORIZONTAL ELLIPSIS */
+-    { 0x0aaf, 0x2025 }, /*             doubbaselinedot ‥ TWO DOT LEADER */
+-    { 0x0ab0, 0x2153 }, /*                    onethird ⅓ VULGAR FRACTION ONE THIRD */
+-    { 0x0ab1, 0x2154 }, /*                   twothirds ⅔ VULGAR FRACTION TWO THIRDS */
+-    { 0x0ab2, 0x2155 }, /*                    onefifth ⅕ VULGAR FRACTION ONE FIFTH */
+-    { 0x0ab3, 0x2156 }, /*                   twofifths ⅖ VULGAR FRACTION TWO FIFTHS */
+-    { 0x0ab4, 0x2157 }, /*                 threefifths ⅗ VULGAR FRACTION THREE FIFTHS */
+-    { 0x0ab5, 0x2158 }, /*                  fourfifths ⅘ VULGAR FRACTION FOUR FIFTHS */
+-    { 0x0ab6, 0x2159 }, /*                    onesixth ⅙ VULGAR FRACTION ONE SIXTH */
+-    { 0x0ab7, 0x215a }, /*                  fivesixths ⅚ VULGAR FRACTION FIVE SIXTHS */
+-    { 0x0ab8, 0x2105 }, /*                      careof ℅ CARE OF */
+-    { 0x0abb, 0x2012 }, /*                     figdash ‒ FIGURE DASH */
+-    { 0x0abc, 0x2329 }, /*            leftanglebracket 〈 LEFT-POINTING ANGLE BRACKET */
+-    { 0x0abd, 0x002e }, /*                decimalpoint . FULL STOP */
+-    { 0x0abe, 0x232a }, /*           rightanglebracket 〉 RIGHT-POINTING ANGLE BRACKET */
+-    /*  0x0abf                                    marker ? ??? */
+-    { 0x0ac3, 0x215b }, /*                   oneeighth ⅛ VULGAR FRACTION ONE EIGHTH */
+-    { 0x0ac4, 0x215c }, /*                threeeighths ⅜ VULGAR FRACTION THREE EIGHTHS */
+-    { 0x0ac5, 0x215d }, /*                 fiveeighths ⅝ VULGAR FRACTION FIVE EIGHTHS */
+-    { 0x0ac6, 0x215e }, /*                seveneighths ⅞ VULGAR FRACTION SEVEN EIGHTHS */
+-    { 0x0ac9, 0x2122 }, /*                   trademark ™ TRADE MARK SIGN */
+-    { 0x0aca, 0x2613 }, /*               signaturemark ☓ SALTIRE */
+-    /*  0x0acb                         trademarkincircle ? ??? */
+-    { 0x0acc, 0x25c1 }, /*            leftopentriangle ◁ WHITE LEFT-POINTING TRIANGLE */
+-    { 0x0acd, 0x25b7 }, /*           rightopentriangle ▷ WHITE RIGHT-POINTING TRIANGLE */
+-    { 0x0ace, 0x25cb }, /*                emopencircle ○ WHITE CIRCLE */
+-    { 0x0acf, 0x25af }, /*             emopenrectangle ▯ WHITE VERTICAL RECTANGLE */
+-    { 0x0ad0, 0x2018 }, /*         leftsinglequotemark ‘ LEFT SINGLE QUOTATION MARK */
+-    { 0x0ad1, 0x2019 }, /*        rightsinglequotemark ’ RIGHT SINGLE QUOTATION MARK */
+-    { 0x0ad2, 0x201c }, /*         leftdoublequotemark “ LEFT DOUBLE QUOTATION MARK */
+-    { 0x0ad3, 0x201d }, /*        rightdoublequotemark ” RIGHT DOUBLE QUOTATION MARK */
+-    { 0x0ad4, 0x211e }, /*                prescription ℞ PRESCRIPTION TAKE */
+-    /*  0x0ad5                                  permille ? ??? */
+-    { 0x0ad6, 0x2032 }, /*                     minutes ′ PRIME */
+-    { 0x0ad7, 0x2033 }, /*                     seconds ″ DOUBLE PRIME */
+-    { 0x0ad9, 0x271d }, /*                  latincross ✝ LATIN CROSS */
+-    /*  0x0ada                                  hexagram ? ??? */
+-    { 0x0adb, 0x25ac }, /*            filledrectbullet ▬ BLACK RECTANGLE */
+-    { 0x0adc, 0x25c0 }, /*         filledlefttribullet ◀ BLACK LEFT-POINTING TRIANGLE */
+-    { 0x0add, 0x25b6 }, /*        filledrighttribullet ▶ BLACK RIGHT-POINTING TRIANGLE */
+-    { 0x0ade, 0x25cf }, /*              emfilledcircle ● BLACK CIRCLE */
+-    { 0x0adf, 0x25ae }, /*                emfilledrect ▮ BLACK VERTICAL RECTANGLE */
+-    { 0x0ae0, 0x25e6 }, /*            enopencircbullet ◦ WHITE BULLET */
+-    { 0x0ae1, 0x25ab }, /*          enopensquarebullet ▫ WHITE SMALL SQUARE */
+-    { 0x0ae2, 0x25ad }, /*              openrectbullet ▭ WHITE RECTANGLE */
+-    { 0x0ae3, 0x25b3 }, /*             opentribulletup △ WHITE UP-POINTING TRIANGLE */
+-    { 0x0ae4, 0x25bd }, /*           opentribulletdown ▽ WHITE DOWN-POINTING TRIANGLE */
+-    { 0x0ae5, 0x2606 }, /*                    openstar ☆ WHITE STAR */
+-    { 0x0ae6, 0x2022 }, /*          enfilledcircbullet • BULLET */
+-    { 0x0ae7, 0x25aa }, /*            enfilledsqbullet ▪ BLACK SMALL SQUARE */
+-    { 0x0ae8, 0x25b2 }, /*           filledtribulletup ▲ BLACK UP-POINTING TRIANGLE */
+-    { 0x0ae9, 0x25bc }, /*         filledtribulletdown ▼ BLACK DOWN-POINTING TRIANGLE */
+-    { 0x0aea, 0x261c }, /*                 leftpointer ☜ WHITE LEFT POINTING INDEX */
+-    { 0x0aeb, 0x261e }, /*                rightpointer ☞ WHITE RIGHT POINTING INDEX */
+-    { 0x0aec, 0x2663 }, /*                        club ♣ BLACK CLUB SUIT */
+-    { 0x0aed, 0x2666 }, /*                     diamond ♦ BLACK DIAMOND SUIT */
+-    { 0x0aee, 0x2665 }, /*                       heart ♥ BLACK HEART SUIT */
+-    { 0x0af0, 0x2720 }, /*                maltesecross ✠ MALTESE CROSS */
+-    { 0x0af1, 0x2020 }, /*                      dagger † DAGGER */
+-    { 0x0af2, 0x2021 }, /*                doubledagger ‡ DOUBLE DAGGER */
+-    { 0x0af3, 0x2713 }, /*                   checkmark ✓ CHECK MARK */
+-    { 0x0af4, 0x2717 }, /*                 ballotcross ✗ BALLOT X */
+-    { 0x0af5, 0x266f }, /*                musicalsharp ♯ MUSIC SHARP SIGN */
+-    { 0x0af6, 0x266d }, /*                 musicalflat ♭ MUSIC FLAT SIGN */
+-    { 0x0af7, 0x2642 }, /*                  malesymbol ♂ MALE SIGN */
+-    { 0x0af8, 0x2640 }, /*                femalesymbol ♀ FEMALE SIGN */
+-    { 0x0af9, 0x260e }, /*                   telephone ☎ BLACK TELEPHONE */
+-    { 0x0afa, 0x2315 }, /*           telephonerecorder ⌕ TELEPHONE RECORDER */
+-    { 0x0afb, 0x2117 }, /*         phonographcopyright ℗ SOUND RECORDING COPYRIGHT */
+-    { 0x0afc, 0x2038 }, /*                       caret ‸ CARET */
+-    { 0x0afd, 0x201a }, /*          singlelowquotemark ‚ SINGLE LOW-9 QUOTATION MARK */
+-    { 0x0afe, 0x201e }, /*          doublelowquotemark „ DOUBLE LOW-9 QUOTATION MARK */
+-    /*  0x0aff                                    cursor ? ??? */
+-    { 0x0ba3, 0x003c }, /*                   leftcaret < LESS-THAN SIGN */
+-    { 0x0ba6, 0x003e }, /*                  rightcaret > GREATER-THAN SIGN */
+-    { 0x0ba8, 0x2228 }, /*                   downcaret ∨ LOGICAL OR */
+-    { 0x0ba9, 0x2227 }, /*                     upcaret ∧ LOGICAL AND */
+-    { 0x0bc0, 0x00af }, /*                     overbar ¯ MACRON */
+-    { 0x0bc2, 0x22a5 }, /*                    downtack ⊥ UP TACK */
+-    { 0x0bc3, 0x2229 }, /*                      upshoe ∩ INTERSECTION */
+-    { 0x0bc4, 0x230a }, /*                   downstile ⌊ LEFT FLOOR */
+-    { 0x0bc6, 0x005f }, /*                    underbar _ LOW LINE */
+-    { 0x0bca, 0x2218 }, /*                         jot ∘ RING OPERATOR */
+-    { 0x0bcc, 0x2395 }, /*                        quad ⎕ APL FUNCTIONAL SYMBOL QUAD */
+-    { 0x0bce, 0x22a4 }, /*                      uptack ⊤ DOWN TACK */
+-    { 0x0bcf, 0x25cb }, /*                      circle ○ WHITE CIRCLE */
+-    { 0x0bd3, 0x2308 }, /*                     upstile ⌈ LEFT CEILING */
+-    { 0x0bd6, 0x222a }, /*                    downshoe ∪ UNION */
+-    { 0x0bd8, 0x2283 }, /*                   rightshoe ⊃ SUPERSET OF */
+-    { 0x0bda, 0x2282 }, /*                    leftshoe ⊂ SUBSET OF */
+-    { 0x0bdc, 0x22a2 }, /*                    lefttack ⊢ RIGHT TACK */
+-    { 0x0bfc, 0x22a3 }, /*                   righttack ⊣ LEFT TACK */
+-    { 0x0cdf, 0x2017 }, /*        hebrew_doublelowline ‗ DOUBLE LOW LINE */
+-    { 0x0ce0, 0x05d0 }, /*                hebrew_aleph א HEBREW LETTER ALEF */
+-    { 0x0ce1, 0x05d1 }, /*                  hebrew_bet ב HEBREW LETTER BET */
+-    { 0x0ce2, 0x05d2 }, /*                hebrew_gimel ג HEBREW LETTER GIMEL */
+-    { 0x0ce3, 0x05d3 }, /*                hebrew_dalet ד HEBREW LETTER DALET */
+-    { 0x0ce4, 0x05d4 }, /*                   hebrew_he ה HEBREW LETTER HE */
+-    { 0x0ce5, 0x05d5 }, /*                  hebrew_waw ו HEBREW LETTER VAV */
+-    { 0x0ce6, 0x05d6 }, /*                 hebrew_zain ז HEBREW LETTER ZAYIN */
+-    { 0x0ce7, 0x05d7 }, /*                 hebrew_chet ח HEBREW LETTER HET */
+-    { 0x0ce8, 0x05d8 }, /*                  hebrew_tet ט HEBREW LETTER TET */
+-    { 0x0ce9, 0x05d9 }, /*                  hebrew_yod י HEBREW LETTER YOD */
+-    { 0x0cea, 0x05da }, /*            hebrew_finalkaph ך HEBREW LETTER FINAL KAF */
+-    { 0x0ceb, 0x05db }, /*                 hebrew_kaph כ HEBREW LETTER KAF */
+-    { 0x0cec, 0x05dc }, /*                hebrew_lamed ל HEBREW LETTER LAMED */
+-    { 0x0ced, 0x05dd }, /*             hebrew_finalmem ם HEBREW LETTER FINAL MEM */
+-    { 0x0cee, 0x05de }, /*                  hebrew_mem מ HEBREW LETTER MEM */
+-    { 0x0cef, 0x05df }, /*             hebrew_finalnun ן HEBREW LETTER FINAL NUN */
+-    { 0x0cf0, 0x05e0 }, /*                  hebrew_nun נ HEBREW LETTER NUN */
+-    { 0x0cf1, 0x05e1 }, /*               hebrew_samech ס HEBREW LETTER SAMEKH */
+-    { 0x0cf2, 0x05e2 }, /*                 hebrew_ayin ע HEBREW LETTER AYIN */
+-    { 0x0cf3, 0x05e3 }, /*              hebrew_finalpe ף HEBREW LETTER FINAL PE */
+-    { 0x0cf4, 0x05e4 }, /*                   hebrew_pe פ HEBREW LETTER PE */
+-    { 0x0cf5, 0x05e5 }, /*            hebrew_finalzade ץ HEBREW LETTER FINAL TSADI */
+-    { 0x0cf6, 0x05e6 }, /*                 hebrew_zade צ HEBREW LETTER TSADI */
+-    { 0x0cf7, 0x05e7 }, /*                 hebrew_qoph ק HEBREW LETTER QOF */
+-    { 0x0cf8, 0x05e8 }, /*                 hebrew_resh ר HEBREW LETTER RESH */
+-    { 0x0cf9, 0x05e9 }, /*                 hebrew_shin ש HEBREW LETTER SHIN */
+-    { 0x0cfa, 0x05ea }, /*                  hebrew_taw ת HEBREW LETTER TAV */
+-    { 0x0da1, 0x0e01 }, /*                  Thai_kokai ก THAI CHARACTER KO KAI */
+-    { 0x0da2, 0x0e02 }, /*                Thai_khokhai ข THAI CHARACTER KHO KHAI */
+-    { 0x0da3, 0x0e03 }, /*               Thai_khokhuat ฃ THAI CHARACTER KHO KHUAT */
+-    { 0x0da4, 0x0e04 }, /*               Thai_khokhwai ค THAI CHARACTER KHO KHWAI */
+-    { 0x0da5, 0x0e05 }, /*                Thai_khokhon ฅ THAI CHARACTER KHO KHON */
+-    { 0x0da6, 0x0e06 }, /*             Thai_khorakhang ฆ THAI CHARACTER KHO RAKHANG */
+-    { 0x0da7, 0x0e07 }, /*                 Thai_ngongu ง THAI CHARACTER NGO NGU */
+-    { 0x0da8, 0x0e08 }, /*                Thai_chochan จ THAI CHARACTER CHO CHAN */
+-    { 0x0da9, 0x0e09 }, /*               Thai_choching ฉ THAI CHARACTER CHO CHING */
+-    { 0x0daa, 0x0e0a }, /*               Thai_chochang ช THAI CHARACTER CHO CHANG */
+-    { 0x0dab, 0x0e0b }, /*                   Thai_soso ซ THAI CHARACTER SO SO */
+-    { 0x0dac, 0x0e0c }, /*                Thai_chochoe ฌ THAI CHARACTER CHO CHOE */
+-    { 0x0dad, 0x0e0d }, /*                 Thai_yoying ญ THAI CHARACTER YO YING */
+-    { 0x0dae, 0x0e0e }, /*                Thai_dochada ฎ THAI CHARACTER DO CHADA */
+-    { 0x0daf, 0x0e0f }, /*                Thai_topatak ฏ THAI CHARACTER TO PATAK */
+-    { 0x0db0, 0x0e10 }, /*                Thai_thothan ฐ THAI CHARACTER THO THAN */
+-    { 0x0db1, 0x0e11 }, /*          Thai_thonangmontho ฑ THAI CHARACTER THO NANGMONTHO */
+-    { 0x0db2, 0x0e12 }, /*             Thai_thophuthao ฒ THAI CHARACTER THO PHUTHAO */
+-    { 0x0db3, 0x0e13 }, /*                  Thai_nonen ณ THAI CHARACTER NO NEN */
+-    { 0x0db4, 0x0e14 }, /*                  Thai_dodek ด THAI CHARACTER DO DEK */
+-    { 0x0db5, 0x0e15 }, /*                  Thai_totao ต THAI CHARACTER TO TAO */
+-    { 0x0db6, 0x0e16 }, /*               Thai_thothung ถ THAI CHARACTER THO THUNG */
+-    { 0x0db7, 0x0e17 }, /*              Thai_thothahan ท THAI CHARACTER THO THAHAN */
+-    { 0x0db8, 0x0e18 }, /*               Thai_thothong ธ THAI CHARACTER THO THONG */
+-    { 0x0db9, 0x0e19 }, /*                   Thai_nonu น THAI CHARACTER NO NU */
+-    { 0x0dba, 0x0e1a }, /*               Thai_bobaimai บ THAI CHARACTER BO BAIMAI */
+-    { 0x0dbb, 0x0e1b }, /*                  Thai_popla ป THAI CHARACTER PO PLA */
+-    { 0x0dbc, 0x0e1c }, /*               Thai_phophung ผ THAI CHARACTER PHO PHUNG */
+-    { 0x0dbd, 0x0e1d }, /*                   Thai_fofa ฝ THAI CHARACTER FO FA */
+-    { 0x0dbe, 0x0e1e }, /*                Thai_phophan พ THAI CHARACTER PHO PHAN */
+-    { 0x0dbf, 0x0e1f }, /*                  Thai_fofan ฟ THAI CHARACTER FO FAN */
+-    { 0x0dc0, 0x0e20 }, /*             Thai_phosamphao ภ THAI CHARACTER PHO SAMPHAO */
+-    { 0x0dc1, 0x0e21 }, /*                   Thai_moma ม THAI CHARACTER MO MA */
+-    { 0x0dc2, 0x0e22 }, /*                  Thai_yoyak ย THAI CHARACTER YO YAK */
+-    { 0x0dc3, 0x0e23 }, /*                  Thai_rorua ร THAI CHARACTER RO RUA */
+-    { 0x0dc4, 0x0e24 }, /*                     Thai_ru ฤ THAI CHARACTER RU */
+-    { 0x0dc5, 0x0e25 }, /*                 Thai_loling ล THAI CHARACTER LO LING */
+-    { 0x0dc6, 0x0e26 }, /*                     Thai_lu ฦ THAI CHARACTER LU */
+-    { 0x0dc7, 0x0e27 }, /*                 Thai_wowaen ว THAI CHARACTER WO WAEN */
+-    { 0x0dc8, 0x0e28 }, /*                 Thai_sosala ศ THAI CHARACTER SO SALA */
+-    { 0x0dc9, 0x0e29 }, /*                 Thai_sorusi ษ THAI CHARACTER SO RUSI */
+-    { 0x0dca, 0x0e2a }, /*                  Thai_sosua ส THAI CHARACTER SO SUA */
+-    { 0x0dcb, 0x0e2b }, /*                  Thai_hohip ห THAI CHARACTER HO HIP */
+-    { 0x0dcc, 0x0e2c }, /*                Thai_lochula ฬ THAI CHARACTER LO CHULA */
+-    { 0x0dcd, 0x0e2d }, /*                   Thai_oang อ THAI CHARACTER O ANG */
+-    { 0x0dce, 0x0e2e }, /*               Thai_honokhuk ฮ THAI CHARACTER HO NOKHUK */
+-    { 0x0dcf, 0x0e2f }, /*              Thai_paiyannoi ฯ THAI CHARACTER PAIYANNOI */
+-    { 0x0dd0, 0x0e30 }, /*                  Thai_saraa ะ THAI CHARACTER SARA A */
+-    { 0x0dd1, 0x0e31 }, /*             Thai_maihanakat ั THAI CHARACTER MAI HAN-AKAT */
+-    { 0x0dd2, 0x0e32 }, /*                 Thai_saraaa า THAI CHARACTER SARA AA */
+-    { 0x0dd3, 0x0e33 }, /*                 Thai_saraam ำ THAI CHARACTER SARA AM */
+-    { 0x0dd4, 0x0e34 }, /*                  Thai_sarai ิ THAI CHARACTER SARA I */
+-    { 0x0dd5, 0x0e35 }, /*                 Thai_saraii ี THAI CHARACTER SARA II */
+-    { 0x0dd6, 0x0e36 }, /*                 Thai_saraue ึ THAI CHARACTER SARA UE */
+-    { 0x0dd7, 0x0e37 }, /*                Thai_sarauee ื THAI CHARACTER SARA UEE */
+-    { 0x0dd8, 0x0e38 }, /*                  Thai_sarau ุ THAI CHARACTER SARA U */
+-    { 0x0dd9, 0x0e39 }, /*                 Thai_sarauu ู THAI CHARACTER SARA UU */
+-    { 0x0dda, 0x0e3a }, /*                Thai_phinthu ฺ THAI CHARACTER PHINTHU */
+-    { 0x0dde, 0x0e3e }, /*      Thai_maihanakat_maitho ฾ ??? */
+-    { 0x0ddf, 0x0e3f }, /*                   Thai_baht ฿ THAI CURRENCY SYMBOL BAHT */
+-    { 0x0de0, 0x0e40 }, /*                  Thai_sarae เ THAI CHARACTER SARA E */
+-    { 0x0de1, 0x0e41 }, /*                 Thai_saraae แ THAI CHARACTER SARA AE */
+-    { 0x0de2, 0x0e42 }, /*                  Thai_sarao โ THAI CHARACTER SARA O */
+-    { 0x0de3, 0x0e43 }, /*          Thai_saraaimaimuan ใ THAI CHARACTER SARA AI MAIMUAN */
+-    { 0x0de4, 0x0e44 }, /*         Thai_saraaimaimalai ไ THAI CHARACTER SARA AI MAIMALAI */
+-    { 0x0de5, 0x0e45 }, /*            Thai_lakkhangyao ๅ THAI CHARACTER LAKKHANGYAO */
+-    { 0x0de6, 0x0e46 }, /*               Thai_maiyamok ๆ THAI CHARACTER MAIYAMOK */
+-    { 0x0de7, 0x0e47 }, /*              Thai_maitaikhu ็ THAI CHARACTER MAITAIKHU */
+-    { 0x0de8, 0x0e48 }, /*                  Thai_maiek ่ THAI CHARACTER MAI EK */
+-    { 0x0de9, 0x0e49 }, /*                 Thai_maitho ้ THAI CHARACTER MAI THO */
+-    { 0x0dea, 0x0e4a }, /*                 Thai_maitri ๊ THAI CHARACTER MAI TRI */
+-    { 0x0deb, 0x0e4b }, /*            Thai_maichattawa ๋ THAI CHARACTER MAI CHATTAWA */
+-    { 0x0dec, 0x0e4c }, /*            Thai_thanthakhat ์ THAI CHARACTER THANTHAKHAT */
+-    { 0x0ded, 0x0e4d }, /*               Thai_nikhahit ํ THAI CHARACTER NIKHAHIT */
+-    { 0x0df0, 0x0e50 }, /*                 Thai_leksun ๐ THAI DIGIT ZERO */
+-    { 0x0df1, 0x0e51 }, /*                Thai_leknung ๑ THAI DIGIT ONE */
+-    { 0x0df2, 0x0e52 }, /*                Thai_leksong ๒ THAI DIGIT TWO */
+-    { 0x0df3, 0x0e53 }, /*                 Thai_leksam ๓ THAI DIGIT THREE */
+-    { 0x0df4, 0x0e54 }, /*                  Thai_leksi ๔ THAI DIGIT FOUR */
+-    { 0x0df5, 0x0e55 }, /*                  Thai_lekha ๕ THAI DIGIT FIVE */
+-    { 0x0df6, 0x0e56 }, /*                 Thai_lekhok ๖ THAI DIGIT SIX */
+-    { 0x0df7, 0x0e57 }, /*                Thai_lekchet ๗ THAI DIGIT SEVEN */
+-    { 0x0df8, 0x0e58 }, /*                Thai_lekpaet ๘ THAI DIGIT EIGHT */
+-    { 0x0df9, 0x0e59 }, /*                 Thai_lekkao ๙ THAI DIGIT NINE */
+-    { 0x0ea1, 0x3131 }, /*               Hangul_Kiyeog ㄱ HANGUL LETTER KIYEOK */
+-    { 0x0ea2, 0x3132 }, /*          Hangul_SsangKiyeog ㄲ HANGUL LETTER SSANGKIYEOK */
+-    { 0x0ea3, 0x3133 }, /*           Hangul_KiyeogSios ㄳ HANGUL LETTER KIYEOK-SIOS */
+-    { 0x0ea4, 0x3134 }, /*                Hangul_Nieun ㄴ HANGUL LETTER NIEUN */
+-    { 0x0ea5, 0x3135 }, /*           Hangul_NieunJieuj ㄵ HANGUL LETTER NIEUN-CIEUC */
+-    { 0x0ea6, 0x3136 }, /*           Hangul_NieunHieuh ㄶ HANGUL LETTER NIEUN-HIEUH */
+-    { 0x0ea7, 0x3137 }, /*               Hangul_Dikeud ㄷ HANGUL LETTER TIKEUT */
+-    { 0x0ea8, 0x3138 }, /*          Hangul_SsangDikeud ㄸ HANGUL LETTER SSANGTIKEUT */
+-    { 0x0ea9, 0x3139 }, /*                Hangul_Rieul ㄹ HANGUL LETTER RIEUL */
+-    { 0x0eaa, 0x313a }, /*          Hangul_RieulKiyeog ㄺ HANGUL LETTER RIEUL-KIYEOK */
+-    { 0x0eab, 0x313b }, /*           Hangul_RieulMieum ㄻ HANGUL LETTER RIEUL-MIEUM */
+-    { 0x0eac, 0x313c }, /*           Hangul_RieulPieub ㄼ HANGUL LETTER RIEUL-PIEUP */
+-    { 0x0ead, 0x313d }, /*            Hangul_RieulSios ㄽ HANGUL LETTER RIEUL-SIOS */
+-    { 0x0eae, 0x313e }, /*           Hangul_RieulTieut ㄾ HANGUL LETTER RIEUL-THIEUTH */
+-    { 0x0eaf, 0x313f }, /*          Hangul_RieulPhieuf ㄿ HANGUL LETTER RIEUL-PHIEUPH */
+-    { 0x0eb0, 0x3140 }, /*           Hangul_RieulHieuh ㅀ HANGUL LETTER RIEUL-HIEUH */
+-    { 0x0eb1, 0x3141 }, /*                Hangul_Mieum ㅁ HANGUL LETTER MIEUM */
+-    { 0x0eb2, 0x3142 }, /*                Hangul_Pieub ㅂ HANGUL LETTER PIEUP */
+-    { 0x0eb3, 0x3143 }, /*           Hangul_SsangPieub ㅃ HANGUL LETTER SSANGPIEUP */
+-    { 0x0eb4, 0x3144 }, /*            Hangul_PieubSios ㅄ HANGUL LETTER PIEUP-SIOS */
+-    { 0x0eb5, 0x3145 }, /*                 Hangul_Sios ㅅ HANGUL LETTER SIOS */
+-    { 0x0eb6, 0x3146 }, /*            Hangul_SsangSios ㅆ HANGUL LETTER SSANGSIOS */
+-    { 0x0eb7, 0x3147 }, /*                Hangul_Ieung ㅇ HANGUL LETTER IEUNG */
+-    { 0x0eb8, 0x3148 }, /*                Hangul_Jieuj ㅈ HANGUL LETTER CIEUC */
+-    { 0x0eb9, 0x3149 }, /*           Hangul_SsangJieuj ㅉ HANGUL LETTER SSANGCIEUC */
+-    { 0x0eba, 0x314a }, /*                Hangul_Cieuc ㅊ HANGUL LETTER CHIEUCH */
+-    { 0x0ebb, 0x314b }, /*               Hangul_Khieuq ㅋ HANGUL LETTER KHIEUKH */
+-    { 0x0ebc, 0x314c }, /*                Hangul_Tieut ㅌ HANGUL LETTER THIEUTH */
+-    { 0x0ebd, 0x314d }, /*               Hangul_Phieuf ㅍ HANGUL LETTER PHIEUPH */
+-    { 0x0ebe, 0x314e }, /*                Hangul_Hieuh ㅎ HANGUL LETTER HIEUH */
+-    { 0x0ebf, 0x314f }, /*                    Hangul_A ㅏ HANGUL LETTER A */
+-    { 0x0ec0, 0x3150 }, /*                   Hangul_AE ㅐ HANGUL LETTER AE */
+-    { 0x0ec1, 0x3151 }, /*                   Hangul_YA ㅑ HANGUL LETTER YA */
+-    { 0x0ec2, 0x3152 }, /*                  Hangul_YAE ㅒ HANGUL LETTER YAE */
+-    { 0x0ec3, 0x3153 }, /*                   Hangul_EO ㅓ HANGUL LETTER EO */
+-    { 0x0ec4, 0x3154 }, /*                    Hangul_E ㅔ HANGUL LETTER E */
+-    { 0x0ec5, 0x3155 }, /*                  Hangul_YEO ㅕ HANGUL LETTER YEO */
+-    { 0x0ec6, 0x3156 }, /*                   Hangul_YE ㅖ HANGUL LETTER YE */
+-    { 0x0ec7, 0x3157 }, /*                    Hangul_O ㅗ HANGUL LETTER O */
+-    { 0x0ec8, 0x3158 }, /*                   Hangul_WA ㅘ HANGUL LETTER WA */
+-    { 0x0ec9, 0x3159 }, /*                  Hangul_WAE ㅙ HANGUL LETTER WAE */
+-    { 0x0eca, 0x315a }, /*                   Hangul_OE ㅚ HANGUL LETTER OE */
+-    { 0x0ecb, 0x315b }, /*                   Hangul_YO ㅛ HANGUL LETTER YO */
+-    { 0x0ecc, 0x315c }, /*                    Hangul_U ㅜ HANGUL LETTER U */
+-    { 0x0ecd, 0x315d }, /*                  Hangul_WEO ㅝ HANGUL LETTER WEO */
+-    { 0x0ece, 0x315e }, /*                   Hangul_WE ㅞ HANGUL LETTER WE */
+-    { 0x0ecf, 0x315f }, /*                   Hangul_WI ㅟ HANGUL LETTER WI */
+-    { 0x0ed0, 0x3160 }, /*                   Hangul_YU ㅠ HANGUL LETTER YU */
+-    { 0x0ed1, 0x3161 }, /*                   Hangul_EU ㅡ HANGUL LETTER EU */
+-    { 0x0ed2, 0x3162 }, /*                   Hangul_YI ㅢ HANGUL LETTER YI */
+-    { 0x0ed3, 0x3163 }, /*                    Hangul_I ㅣ HANGUL LETTER I */
+-    { 0x0ed4, 0x11a8 }, /*             Hangul_J_Kiyeog ᆨ HANGUL JONGSEONG KIYEOK */
+-    { 0x0ed5, 0x11a9 }, /*        Hangul_J_SsangKiyeog ᆩ HANGUL JONGSEONG SSANGKIYEOK */
+-    { 0x0ed6, 0x11aa }, /*         Hangul_J_KiyeogSios ᆪ HANGUL JONGSEONG KIYEOK-SIOS */
+-    { 0x0ed7, 0x11ab }, /*              Hangul_J_Nieun ᆫ HANGUL JONGSEONG NIEUN */
+-    { 0x0ed8, 0x11ac }, /*         Hangul_J_NieunJieuj ᆬ HANGUL JONGSEONG NIEUN-CIEUC */
+-    { 0x0ed9, 0x11ad }, /*         Hangul_J_NieunHieuh ᆭ HANGUL JONGSEONG NIEUN-HIEUH */
+-    { 0x0eda, 0x11ae }, /*             Hangul_J_Dikeud ᆮ HANGUL JONGSEONG TIKEUT */
+-    { 0x0edb, 0x11af }, /*              Hangul_J_Rieul ᆯ HANGUL JONGSEONG RIEUL */
+-    { 0x0edc, 0x11b0 }, /*        Hangul_J_RieulKiyeog ᆰ HANGUL JONGSEONG RIEUL-KIYEOK */
+-    { 0x0edd, 0x11b1 }, /*         Hangul_J_RieulMieum ᆱ HANGUL JONGSEONG RIEUL-MIEUM */
+-    { 0x0ede, 0x11b2 }, /*         Hangul_J_RieulPieub ᆲ HANGUL JONGSEONG RIEUL-PIEUP */
+-    { 0x0edf, 0x11b3 }, /*          Hangul_J_RieulSios ᆳ HANGUL JONGSEONG RIEUL-SIOS */
+-    { 0x0ee0, 0x11b4 }, /*         Hangul_J_RieulTieut ᆴ HANGUL JONGSEONG RIEUL-THIEUTH */
+-    { 0x0ee1, 0x11b5 }, /*        Hangul_J_RieulPhieuf ᆵ HANGUL JONGSEONG RIEUL-PHIEUPH */
+-    { 0x0ee2, 0x11b6 }, /*         Hangul_J_RieulHieuh ᆶ HANGUL JONGSEONG RIEUL-HIEUH */
+-    { 0x0ee3, 0x11b7 }, /*              Hangul_J_Mieum ᆷ HANGUL JONGSEONG MIEUM */
+-    { 0x0ee4, 0x11b8 }, /*              Hangul_J_Pieub ᆸ HANGUL JONGSEONG PIEUP */
+-    { 0x0ee5, 0x11b9 }, /*          Hangul_J_PieubSios ᆹ HANGUL JONGSEONG PIEUP-SIOS */
+-    { 0x0ee6, 0x11ba }, /*               Hangul_J_Sios ᆺ HANGUL JONGSEONG SIOS */
+-    { 0x0ee7, 0x11bb }, /*          Hangul_J_SsangSios ᆻ HANGUL JONGSEONG SSANGSIOS */
+-    { 0x0ee8, 0x11bc }, /*              Hangul_J_Ieung ᆼ HANGUL JONGSEONG IEUNG */
+-    { 0x0ee9, 0x11bd }, /*              Hangul_J_Jieuj ᆽ HANGUL JONGSEONG CIEUC */
+-    { 0x0eea, 0x11be }, /*              Hangul_J_Cieuc ᆾ HANGUL JONGSEONG CHIEUCH */
+-    { 0x0eeb, 0x11bf }, /*             Hangul_J_Khieuq ᆿ HANGUL JONGSEONG KHIEUKH */
+-    { 0x0eec, 0x11c0 }, /*              Hangul_J_Tieut ᇀ HANGUL JONGSEONG THIEUTH */
+-    { 0x0eed, 0x11c1 }, /*             Hangul_J_Phieuf ᇁ HANGUL JONGSEONG PHIEUPH */
+-    { 0x0eee, 0x11c2 }, /*              Hangul_J_Hieuh ᇂ HANGUL JONGSEONG HIEUH */
+-    { 0x0eef, 0x316d }, /*     Hangul_RieulYeorinHieuh ㅭ HANGUL LETTER RIEUL-YEORINHIEUH */
+-    { 0x0ef0, 0x3171 }, /*    Hangul_SunkyeongeumMieum ㅱ HANGUL LETTER KAPYEOUNMIEUM */
+-    { 0x0ef1, 0x3178 }, /*    Hangul_SunkyeongeumPieub ㅸ HANGUL LETTER KAPYEOUNPIEUP */
+-    { 0x0ef2, 0x317f }, /*              Hangul_PanSios ㅿ HANGUL LETTER PANSIOS */
+-    { 0x0ef3, 0x3181 }, /*    Hangul_KkogjiDalrinIeung ㆁ HANGUL LETTER YESIEUNG */
+-    { 0x0ef4, 0x3184 }, /*   Hangul_SunkyeongeumPhieuf ㆄ HANGUL LETTER KAPYEOUNPHIEUPH */
+-    { 0x0ef5, 0x3186 }, /*          Hangul_YeorinHieuh ㆆ HANGUL LETTER YEORINHIEUH */
+-    { 0x0ef6, 0x318d }, /*                Hangul_AraeA ㆍ HANGUL LETTER ARAEA */
+-    { 0x0ef7, 0x318e }, /*               Hangul_AraeAE ㆎ HANGUL LETTER ARAEAE */
+-    { 0x0ef8, 0x11eb }, /*            Hangul_J_PanSios ᇫ HANGUL JONGSEONG PANSIOS */
+-    { 0x0ef9, 0x11f0 }, /*  Hangul_J_KkogjiDalrinIeung ᇰ HANGUL JONGSEONG YESIEUNG */
+-    { 0x0efa, 0x11f9 }, /*        Hangul_J_YeorinHieuh ᇹ HANGUL JONGSEONG YEORINHIEUH */
+-    { 0x0eff, 0x20a9 }, /*                  Korean_Won ₩ WON SIGN */
+-    { 0x13a4, 0x20ac }, /*                        Euro € EURO SIGN */
+-    { 0x13bc, 0x0152 }, /*                          OE Œ LATIN CAPITAL LIGATURE OE */
+-    { 0x13bd, 0x0153 }, /*                          oe œ LATIN SMALL LIGATURE OE */
+-    { 0x13be, 0x0178 }, /*                  Ydiaeresis Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS */
+-    { 0x20ac, 0x20ac }, /*                    EuroSign € EURO SIGN */
+-
+-    /* Combining symbols */
+-    { 0xfe50, 0x0300 }, /* dead_grave */
+-    { 0xfe51, 0x0301 }, /* dead_acute" */
+-    { 0xfe52, 0x0302 }, /* dead_circumflex" */
+-    { 0xfe53, 0x0303 }, /* dead_tilde" */
+-    { 0xfe54, 0x0304 }, /* dead_macron" */
+-    { 0xfe55, 0x0306 }, /* dead_breve" */
+-    { 0xfe56, 0x0307 }, /* dead_abovedot" */
+-    { 0xfe57, 0x0308 }, /* dead_diaeresis" */
+-    { 0xfe58, 0x030A }, /* dead_abovering" */
+-    { 0xfe59, 0x030B }, /* dead_doubleacute" */
+-    { 0xfe5a, 0x030C }, /* dead_caron" */
+-    { 0xfe5b, 0x0327 }, /* dead_cedilla" */
+-    { 0xfe5c, 0x0328 }, /* dead_ogonek" */
+-    { 0xfe60, 0x0323 }, /* dead_belowdot */
+-
+-    /* Special function keys. */
+-
+-    { 0xff08, 0x0008 },           /* XK_BackSpace */
+-    { 0xff09, 0x0009 },           /* XK_Tab */
+-    { 0xff0a, 0x000a },           /* XK_Linefeed */
+-    { 0xff0d, 0x000d },           /* XK_Return */
+-    { 0xff13, 0x0013 },           /* XK_Pause */
+-    { 0xff1b, 0x001b },           /* XK_Escape */
+-    { 0xff50, 0x0001 },           /* XK_Home */
+-    { 0xff51, 0x001c },           /* XK_Left */
+-    { 0xff52, 0x001e },           /* XK_Up */
+-    { 0xff53, 0x001d },           /* XK_Right */
+-    { 0xff54, 0x001f },           /* XK_Down */
+-    { 0xff55, 0x000b },           /* XK_Prior */
+-    { 0xff56, 0x000c },           /* XK_Next */
+-    { 0xff57, 0x0004 },           /* XK_End */
+-    { 0xff6a, 0x0005 },           /* XK_Help */
+-    { 0xffff, 0x007f },           /* XK_Delete */
+-};
+-
+-long keysym2ucs(KeySym keysym)
+-{
+-    int min = 0;
+-    int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
+-    int mid;
+-
+-    /* first check for Latin-1 characters (1:1 mapping) */
+-    if ((keysym >= 0x0020 && keysym <= 0x007e) ||
+-            (keysym >= 0x00a0 && keysym <= 0x00ff)) {
+-        return keysym;
+-    }
+-
+-    /* also check for directly encoded 24-bit UCS characters */
+-    if ((keysym & 0xff000000) == 0x01000000) {
+-        return keysym & 0x00ffffff;
+-    }
+-
+-    /* binary search in table */
+-    while (max >= min) {
+-        mid = (min + max) / 2;
+-        if (keysymtab[mid].keysym < keysym) {
+-            min = mid + 1;
+-        } else if (keysymtab[mid].keysym > keysym) {
+-            max = mid - 1;
+-        } else {
+-            /* found it */
+-            return keysymtab[mid].ucs;
+-        }
+-    }
+-
+-    /* no matching Unicode value found */
+-    return -1;
+-}
+diff --git a/plugins/devices/keyboard/preview/keysym2ucs.h b/plugins/devices/keyboard/preview/keysym2ucs.h
+deleted file mode 100644
+index 6e50c76..0000000
+--- a/plugins/devices/keyboard/preview/keysym2ucs.h
++++ /dev/null
+@@ -1,27 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Andriy Rysin (arysin@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef KEYSYM2UCS_H
+-#define KEYSYM2UCS_H
+-
+-#include <X11/XKBlib.h>
+-#include <fixx11h.h>
+-
+-extern long keysym2ucs(KeySym keysym);
+-
+-#endif
+diff --git a/plugins/devices/keyboard/preview/keysymhelper.cpp b/plugins/devices/keyboard/preview/keysymhelper.cpp
+deleted file mode 100644
+index ee57f13..0000000
+--- a/plugins/devices/keyboard/preview/keysymhelper.cpp
++++ /dev/null
+@@ -1,84 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "keysymhelper.h"
+-#include "keysym2ucs.h"
+-
+-#include <QString>
+-#include <QChar>
+-#include <QDebug>
+-
+-#include <X11/XKBlib.h>
+-
+-
+-KeySymHelper::KeySymHelper()
+-{
+-    nill = 0;
+-}
+-
+-QString KeySymHelper::getKeySymbol(const QString &opton)
+-{
+-    if (keySymbolMap.contains(opton)) {
+-        return keySymbolMap[opton];
+-    }
+-
+-    const char *str = opton.toLatin1().data();
+-
+-#if 0
+-    //TODO: figure out how to use this so we don't need our own symkey2ucs mapping
+-    int res = Xutf8LookupString(XIC ic, XKeyPressedEvent * event, char *buffer_return, int bytes_buffer, KeySym * keysym_return, Status * status_return);
+-
+-#else
+-
+-    KeySym keysym = XStringToKeysym(str);
+-
+-    //TODO: make it more generic
+-//    if( keysym == 0xfe03 )
+-//  return "L3";
+-
+-    long ucs = keysym2ucs(keysym);
+-
+-//    if( ucs == -1 && (keysym >= 0xFE50 && keysym <= 0xFE5F) ) {
+-//        ucs = 0x0300 + (keysym & 0x000F);
+-//        qWarning() << "Got dead symbol" << QString("0x%1").arg(keysym, 0, 16) << "named" << opton << "will use" << QString("0x%1").arg(ucs, 0, 16) << "as UCS";
+-//    }
+-
+-    if (ucs == -1) {
+-        nill++;
+-        qWarning() << "No mapping from keysym:" << QStringLiteral("0x%1").arg(keysym, 0, 16) << "named:" << opton << "to UCS";
+-        return "";
+-    }
+-
+-    QString ucsStr = QString(QChar((int)ucs));
+-
+-    // Combining Diacritical Marks
+-    if (ucs >= 0x0300 && ucs <= 0x036F) {
+-        ucsStr = " " + ucsStr + " ";
+-    }
+-
+-//    qWarning() << "--" << opton << "keysym: " << keysym << QString("0x%1").arg(keysym, 0, 16) << "keysym2string" << XKeysymToString(keysym)
+-//         << "---" << QString("0x%1").arg(ucs, 0, 16) << ucsStr;
+-
+-    keySymbolMap[opton] = ucsStr;
+-
+-    return ucsStr;
+-
+-#endif
+-
+-}
+-
+diff --git a/plugins/devices/keyboard/preview/keysymhelper.h b/plugins/devices/keyboard/preview/keysymhelper.h
+deleted file mode 100644
+index be8799f..0000000
+--- a/plugins/devices/keyboard/preview/keysymhelper.h
++++ /dev/null
+@@ -1,41 +0,0 @@
+-/*
+- *  Copyright (C) 2012 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef KEYSYMHELPER_H
+-#define KEYSYMHELPER_H
+-
+-#include <QString>
+-#include <QMap>
+-
+-class KeySymHelper
+-{
+-public:
+-    KeySymHelper();
+-
+-    QString getKeySymbol(const QString &opton);
+-    bool isFailed() const
+-    {
+-        return nill >= 120;
+-    }
+-
+-private:
+-    QMap<QString, QString> keySymbolMap;
+-    int nill;
+-};
+-
+-#endif // KEYSYMHELPER_H
+diff --git a/plugins/devices/keyboard/preview/symbol_parser.cpp b/plugins/devices/keyboard/preview/symbol_parser.cpp
+deleted file mode 100644
+index 71aa552..0000000
+--- a/plugins/devices/keyboard/preview/symbol_parser.cpp
++++ /dev/null
+@@ -1,288 +0,0 @@
+-/*
+- *  Copyright (C) 2013 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "symbol_parser.h"
+-#include "xkb_rules.h"
+-
+-#include <QString>
+-#include <QStringList>
+-#include <QDebug>
+-#include <QFileDialog>
+-#include <QFile>
+-
+-
+-namespace grammar
+-{
+-
+-symbol_keywords::symbol_keywords()
+-{
+-    add("key", 2)("include", 1)("//", 3)("*/", 4);
+-}
+-
+-levels::levels()
+-{
+-    add("ONE", 1)("TWO", 2)("THREE", 3)("FOUR", 4)("SIX", 6)("EIGHT", 8);
+-}
+-
+-template<typename Iterator>
+-SymbolParser<Iterator>::SymbolParser() :
+-    SymbolParser::base_type(start)
+-{
+-    using qi::lexeme;
+-    using qi::char_;
+-    using qi::lit;
+-    using qi::_1;
+-    using qi::_val;
+-    using qi::int_;
+-    using qi::double_;
+-    using qi::eol;
+-
+-    newKey = 0;
+-
+-    name %= '"' >> +(char_ - '"') >> '"';
+-
+-    group = lit("Group") >> int_;
+-
+-    comments = lexeme[lit("//") >> *(char_ - eol || symbolKeyword - eol) >> eol
+-                      || lit("/*") >> *(char_ - lit("*/") || symbolKeyword - lit("*/"))
+-                      >> lit("*/")];
+-
+-    include = lit("include")
+-              >> name[phx::bind(&SymbolParser::getInclude, this, _1)];
+-
+-    type = lit("type") >> '[' >> group >> lit(']') >> lit('=') >> lit("\"")
+-           >> *(char_ - lvl)
+-           >> *lvl[phx::bind(&SymbolParser::setLevel, this, _1)]
+-           >> *(char_ - lvl - '"') >> lit("\"");
+-
+-    symbol = +(char_ - ',' - ']');
+-
+-    symbols = *(lit("symbols") >> '[' >> group >> lit(']') >> lit('=')) >> '['
+-              >> symbol[phx::bind(&SymbolParser::getSymbol, this, _1)]
+-              >> *(',' >> symbol[phx::bind(&SymbolParser::getSymbol, this, _1)])
+-              >> ']';
+-
+-    keyName = '<' >> *(char_ - '>') >> '>';
+-
+-    key = (lit("key")
+-           >> keyName[phx::bind(&SymbolParser::addKeyName, this, _1)] >> '{'
+-           >> *(type >> ',') >> symbols >> *(',' >> type) >> lit("};"))
+-          || lit("key") >> lit(".") >> type >> lit(";");
+-
+-    ee = *(char_ - symbolKeyword - '{') >> '{' >> *(char_ - '}' - ';')
+-         >> lit("};");
+-
+-    start = *(char_ - lit("xkb_symbols") || comments) >> lit("xkb_symbols")
+-            >> name[phx::bind(&SymbolParser::setName, this, _1)] >> '{'
+-            >> *(key[phx::bind(&SymbolParser::addKey, this)] || include || ee
+-                 || char_ - '}' - symbolKeyword || comments) >> lit("};")
+-            >> *(comments || char_);
+-}
+-
+-template<typename Iterator>
+-void SymbolParser<Iterator>::getSymbol(std::string n)
+-{
+-    int index = layout.keyList[keyIndex].getSymbolCount();
+-    layout.keyList[keyIndex].addSymbol(QString::fromUtf8(n.data(), n.size()),
+-                                       index);
+-    //qCDebug(KEYBOARD_PREVIEW) << "adding symbol: " << QString::fromUtf8(n.data(), n.size());
+-    //qCDebug(KEYBOARD_PREVIEW) << "added symbol: " << layout.keyList[keyIndex].getSymbol(index) << " in " << keyIndex << " at " << index;
+-}
+-
+-template<typename Iterator>
+-void SymbolParser<Iterator>::addKeyName(std::string n)
+-{
+-    QString kname = QString::fromUtf8(n.data(), n.size());
+-    if (kname.startsWith(QLatin1String("Lat"))) {
+-        kname = alias.getAlias(layout.country, kname);
+-    }
+-    keyIndex = layout.findKey(kname);
+-    //qCDebug(KEYBOARD_PREVIEW) << layout.getKeyCount();
+-    if (keyIndex == -1) {
+-        layout.keyList[layout.getKeyCount()].keyName = kname;
+-        keyIndex = layout.getKeyCount();
+-        newKey = 1;
+-    }
+-    // qCDebug(KEYBOARD_PREVIEW) << "key at" << keyIndex;
+-}
+-
+-template<typename Iterator>
+-void SymbolParser<Iterator>::addKey()
+-{
+-    if (newKey == 1) {
+-        layout.addKey();
+-        newKey = 0;
+-        //qCDebug(KEYBOARD_PREVIEW) << "new key";
+-    }
+-}
+-
+-template<typename Iterator>
+-void SymbolParser<Iterator>::getInclude(std::string n)
+-{
+-    layout.addInclude(QString::fromUtf8(n.data(), n.size()));
+-}
+-
+-template<typename Iterator>
+-void SymbolParser<Iterator>::setName(std::string n)
+-{
+-    layout.setName(QString::fromUtf8(n.data(), n.size()));
+-    //qCDebug(KEYBOARD_PREVIEW) << layout.getLayoutName();
+-}
+-
+-template<typename Iterator>
+-void SymbolParser<Iterator>::setLevel(int lvl)
+-{
+-    if (lvl > layout.getLevel()) {
+-        layout.setLevel(lvl);
+-        qCDebug(KEYBOARD_PREVIEW) << lvl;
+-    }
+-}
+-
+-QString findSymbolBaseDir()
+-{
+-    QString xkbDir = Rules::findXkbDir();
+-    return QStringLiteral("%1/symbols/").arg(xkbDir);
+-}
+-
+-QString findLayout(const QString &layout, const QString &layoutVariant)
+-{
+-
+-    QString symbolBaseDir = findSymbolBaseDir();
+-    QString symbolFile = symbolBaseDir.append(layout);
+-
+-    QFile sfile(symbolFile);
+-    if (!sfile.open(QIODevice::ReadOnly | QIODevice::Text)) {
+-        //qCDebug(KEYBOARD_PREVIEW) << "unable to open the file";
+-        return QStringLiteral("I/O ERROR");
+-    }
+-
+-    QString scontent = sfile.readAll();
+-    sfile.close();
+-    QStringList scontentList = scontent.split(QStringLiteral("xkb_symbols"));
+-
+-    QString variant;
+-    QString input;
+-
+-    if (layoutVariant.isEmpty()) {
+-        input = scontentList.at(1);
+-        input.prepend("xkb_symbols");
+-    }
+-
+-    else {
+-        int current = 1;
+-
+-        while (layoutVariant != variant && current < scontentList.size()) {
+-            input = scontentList.at(current);
+-
+-            QString symbolCont = scontentList.at(current);
+-
+-            int index = symbolCont.indexOf(QStringLiteral("\""));
+-            symbolCont = symbolCont.mid(index);
+-            index = symbolCont.indexOf(QStringLiteral("{"));
+-            symbolCont = symbolCont.left(index);
+-            symbolCont = symbolCont.remove(QStringLiteral(" "));
+-            variant = symbolCont.remove(QStringLiteral("\""));
+-
+-            input.prepend("xkb_symbols");
+-            current++;
+-        }
+-    }
+-
+-    return input;
+-}
+-
+-KbLayout parseSymbols(const QString &layout, const QString &layoutVariant)
+-{
+-
+-    using boost::spirit::iso8859_1::space;
+-    typedef std::string::const_iterator iterator_type;
+-    typedef grammar::SymbolParser<iterator_type> SymbolParser;
+-
+-    SymbolParser symbolParser;
+-
+-    symbolParser.layout.country = layout;
+-    QString input = findLayout(layout, layoutVariant);
+-
+-    if (input == QLatin1String("I/O ERROR")) {
+-        symbolParser.layout.setParsedSymbol(false);
+-        return symbolParser.layout;
+-    }
+-
+-    std::string parserInput = input.toUtf8().constData();
+-
+-    std::string::const_iterator iter = parserInput.begin();
+-    std::string::const_iterator end = parserInput.end();
+-
+-    bool success = phrase_parse(iter, end, symbolParser, space);
+-
+-    if (success && iter == end) {
+-        qCDebug(KEYBOARD_PREVIEW) << "Symbols Parsing succeeded";
+-        symbolParser.layout.setParsedSymbol(true);
+-
+-    } else {
+-        qWarning() << "Symbols Parsing failed\n" << input;
+-        symbolParser.layout.setParsedSymbol(false);
+-    }
+-
+-    for (int currentInclude = 0;
+-            currentInclude < symbolParser.layout.getIncludeCount();
+-            currentInclude++) {
+-        QString include = symbolParser.layout.getInclude(currentInclude);
+-        QStringList includeFile = include.split(QStringLiteral("("));
+-        if (includeFile.size() == 2) {
+-            QString file = includeFile.at(0);
+-            QString layout = includeFile.at(1);
+-            layout.remove(QStringLiteral(")"));
+-            input = findLayout(file, layout);
+-
+-        }
+-
+-        else {
+-            QString a;
+-            a.clear();
+-            input = findLayout(includeFile.at(0), a);
+-        }
+-
+-        parserInput = input.toUtf8().constData();
+-
+-        std::string::const_iterator iter = parserInput.begin();
+-        std::string::const_iterator end = parserInput.end();
+-
+-        success = phrase_parse(iter, end, symbolParser, space);
+-
+-        if (success && iter == end) {
+-            qCDebug(KEYBOARD_PREVIEW) << "Symbols Parsing succeeded";
+-            symbolParser.layout.setParsedSymbol(true);
+-
+-        } else {
+-            qCDebug(KEYBOARD_PREVIEW) << "Symbols Parsing failed\n";
+-            qCDebug(KEYBOARD_PREVIEW) << input;
+-            symbolParser.layout.setParsedSymbol(false);
+-        }
+-
+-    }
+-
+-    //s.layout.display();
+-    if (symbolParser.layout.getParsedSymbol()) {
+-        return symbolParser.layout;
+-    } else {
+-        return parseSymbols(QStringLiteral("us"), QStringLiteral("basic"));
+-    }
+-}
+-
+-}
+diff --git a/plugins/devices/keyboard/preview/symbol_parser.h b/plugins/devices/keyboard/preview/symbol_parser.h
+deleted file mode 100644
+index 77bf875..0000000
+--- a/plugins/devices/keyboard/preview/symbol_parser.h
++++ /dev/null
+@@ -1,93 +0,0 @@
+-/*
+- *  Copyright (C) 2013 Shivam Makkar (amourphious1992@gmail.com)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#ifndef SYMBOL_PARSER_H
+-#define SYMBOL_PARSER_H
+-
+-#include <boost/config/warning_disable.hpp>
+-#include <boost/spirit/include/qi.hpp>
+-#include <boost/spirit/include/phoenix_core.hpp>
+-#include <boost/spirit/include/phoenix_operator.hpp>
+-#include <boost/spirit/include/phoenix_object.hpp>
+-#include <boost/fusion/include/adapt_struct.hpp>
+-#include <boost/fusion/include/io.hpp>
+-#include <boost/spirit/include/phoenix_function.hpp>
+-#include <boost/spirit/include/phoenix_statement.hpp>
+-#include <boost/spirit/include/phoenix_bind.hpp>
+-#include <boost/spirit/home/support/char_encoding/iso8859_1.hpp>
+-
+-#include <iostream>
+-#include <QDebug>
+-
+-#include "keyboardlayout.h"
+-#include "keyaliases.h"
+-
+-
+-namespace qi = boost::spirit::qi;
+-namespace ascii = boost::spirit::ascii;
+-namespace phx = boost::phoenix;
+-namespace iso = boost::spirit::iso8859_1;
+-
+-
+-namespace grammar
+-{
+-
+-struct symbol_keywords : qi::symbols<char, int> {
+-    symbol_keywords();
+-};
+-
+-struct levels : qi::symbols<char, int> {
+-    levels();
+-};
+-
+-template<typename Iterator>
+-struct SymbolParser : qi::grammar<Iterator, iso::space_type> {
+-
+-    SymbolParser();
+-
+-    qi::rule<Iterator,  iso::space_type>start;
+-    qi::rule<Iterator, std::string(), iso::space_type>name;
+-    qi::rule<Iterator, std::string(), iso::space_type>keyName;
+-    qi::rule<Iterator, std::string(), iso::space_type>symbols;
+-    qi::rule<Iterator, std::string(), iso::space_type>key;
+-    qi::rule<Iterator, std::string(), iso::space_type>type;
+-    qi::rule<Iterator, std::string(), iso::space_type>group;
+-    qi::rule<Iterator, std::string(), iso::space_type>symbol;
+-    qi::rule<Iterator, std::string(), iso::space_type>comments;
+-    qi::rule<Iterator, std::string(), iso::space_type>ee;
+-    qi::rule<Iterator, std::string(), iso::space_type>include;
+-
+-    KbLayout layout;
+-    int keyIndex, newKey;
+-    symbol_keywords symbolKeyword;
+-    levels lvl;
+-    Aliases alias;
+-
+-    void getSymbol(std::string n);
+-    void addKeyName(std::string n);
+-    void getInclude(std::string n);
+-    void addKey();
+-    void setName(std::string n);
+-    void setLevel(int lvl);
+-};
+-
+-KbLayout parseSymbols(const QString &layout, const QString &layoutVariant);
+-QString findSymbolBaseDir();
+-}
+-
+-#endif //SYMBOL_PARSER_H
+diff --git a/plugins/devices/keyboard/preview/x11_helper.cpp b/plugins/devices/keyboard/preview/x11_helper.cpp
+deleted file mode 100644
+index eb36733..0000000
+--- a/plugins/devices/keyboard/preview/x11_helper.cpp
++++ /dev/null
+@@ -1,453 +0,0 @@
+-/*
+- *  Copyright (C) 2010 Andriy Rysin (rysin@kde.org)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "x11_helper.h"
+-#include "debug.h"
+-
+-#define explicit explicit_is_keyword_in_cpp
+-#include <xcb/xkb.h>
+-#undef explicit
+-
+-
+-#include <QX11Info>
+-#include <QCoreApplication>
+-#include <QDebug>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/Xatom.h>
+-#include <X11/XKBlib.h>
+-#include <X11/extensions/XKBrules.h>
+-#include <xcb/xcb.h>
+-#include <fixx11h.h>
+-
+-// more information about the limit https://bugs.freedesktop.org/show_bug.cgi?id=19501
+-const int X11Helper::MAX_GROUP_COUNT = 4;
+-const int X11Helper::ARTIFICIAL_GROUP_LIMIT_COUNT = 8;
+-
+-const char X11Helper::LEFT_VARIANT_STR[] = "(";
+-const char X11Helper::RIGHT_VARIANT_STR[] = ")";
+-
+-bool X11Helper::xkbSupported(int* xkbOpcode)
+-{
+-    if (!QX11Info::isPlatformX11()) {
+-        return false;
+-    }
+-    // Verify the Xlib has matching XKB extension.
+-
+-    int major = XkbMajorVersion;
+-    int minor = XkbMinorVersion;
+-
+-    if (!XkbLibraryVersion(&major, &minor))
+-    {
+-        qCWarning(KCM_KEYBOARD) << "Xlib XKB extension " << major << '.' << minor <<
+-            " != " << XkbMajorVersion << '.' << XkbMinorVersion;
+-        return false;
+-    }
+-
+-    // Verify the X server has matching XKB extension.
+-
+-    int opcode_rtrn;
+-    int error_rtrn;
+-    int xkb_opcode;
+-    if( ! XkbQueryExtension(QX11Info::display(), &opcode_rtrn, &xkb_opcode, &error_rtrn, &major, &minor)) {
+-        qCWarning(KCM_KEYBOARD) << "X server XKB extension " << major << '.' << minor <<
+-            " != " << XkbMajorVersion << '.' << XkbMinorVersion;
+-        return false;
+-    }
+-
+-    if( xkbOpcode != nullptr ) {
+-        *xkbOpcode = xkb_opcode;
+-    }
+-
+-    return true;
+-}
+-
+-void X11Helper::switchToNextLayout()
+-{
+-    int size = getLayoutsList().size();	//TODO: could optimize a bit as we don't need the layouts - just count
+-    int group = (X11Helper::getGroup() + 1) % size;
+-    X11Helper::setGroup(group);
+-}
+-
+-void X11Helper::scrollLayouts(int delta)
+-{
+-    int size = getLayoutsList().size();	//TODO: could optimize a bit as we don't need the layouts - just count
+-    int group = X11Helper::getGroup() + delta;
+-    group = group < 0 ? size - ((-group) % size) : group % size;
+-
+-    X11Helper::setGroup(group);
+-}
+-
+-QStringList X11Helper::getLayoutsListAsString(const QList<LayoutUnit>& layoutsList)
+-{
+-    QStringList stringList;
+-    foreach(const LayoutUnit& layoutUnit, layoutsList) {
+-        stringList << layoutUnit.toString();
+-    }
+-    return stringList;
+-}
+-
+-bool X11Helper::setLayout(const LayoutUnit& layout)
+-{
+-    QList<LayoutUnit> currentLayouts = getLayoutsList();
+-    int idx = currentLayouts.indexOf(layout);
+-    if( idx == -1 || idx >= X11Helper::MAX_GROUP_COUNT ) {
+-        qCWarning(KCM_KEYBOARD) << "Layout" << layout.toString() << "is not found in current layout list"
+-                                << getLayoutsListAsString(currentLayouts);
+-        return false;
+-    }
+-
+-    return X11Helper::setGroup((unsigned int)idx);
+-}
+-
+-bool X11Helper::setDefaultLayout() {
+-    return X11Helper::setGroup(0);
+-}
+-
+-bool X11Helper::isDefaultLayout() {
+-    return X11Helper::getGroup() == 0;
+-}
+-
+-LayoutUnit X11Helper::getCurrentLayout()
+-{
+-    if (!QX11Info::isPlatformX11()) {
+-        return LayoutUnit();
+-    }
+-    QList<LayoutUnit> currentLayouts = getLayoutsList();
+-    unsigned int group = X11Helper::getGroup();
+-    if( group < (unsigned int)currentLayouts.size() )
+-        return currentLayouts[group];
+-
+-    qCWarning(KCM_KEYBOARD) << "Current group number" << group << "is outside of current layout list" <<
+-                        getLayoutsListAsString(currentLayouts);
+-    return LayoutUnit();
+-}
+-
+-LayoutSet X11Helper::getCurrentLayouts()
+-{
+-    LayoutSet layoutSet;
+-
+-    QList<LayoutUnit> currentLayouts = getLayoutsList();
+-    layoutSet.layouts = currentLayouts;
+-
+-    unsigned int group = X11Helper::getGroup();
+-    if( group < (unsigned int)currentLayouts.size() ) {
+-        layoutSet.currentLayout = currentLayouts[group];
+-    }
+-    else {
+-        qCWarning(KCM_KEYBOARD) << "Current group number" << group << "is outside of current layout list" << getLayoutsListAsString(currentLayouts);
+-        layoutSet.currentLayout = LayoutUnit();
+-    }
+-
+-    return layoutSet;
+-}
+-
+-
+-//static QString addNum(const QString& str, int n)
+-//{
+-//    QString format("%1%2");
+-//    if( str.length() >= 3 ) return format.arg(str.left(2)).arg(n);
+-//    return format.arg(str).arg(n);
+-//}
+-
+-QList<LayoutUnit> X11Helper::getLayoutsList()
+-{
+-    if (!QX11Info::isPlatformX11()) {
+-        return QList<LayoutUnit>();
+-    }
+-    XkbConfig xkbConfig;
+-    QList<LayoutUnit> layouts;
+-    if( X11Helper::getGroupNames(QX11Info::display(), &xkbConfig, X11Helper::LAYOUTS_ONLY) ) {
+-        for(int i=0; i<xkbConfig.layouts.size(); i++) {
+-            QString layout(xkbConfig.layouts[i]);
+-            QString variant;
+-            if( i<xkbConfig.variants.size() && ! xkbConfig.variants[i].isEmpty() ) {
+-                variant = xkbConfig.variants[i];
+-            }
+-            layouts << LayoutUnit(layout, variant);
+-        }
+-        // if there are layouts with same map name add numbers to display name
+-//		for(int i=0; i<layouts.length(); i++) {
+-//			int n=1;
+-//			for(int j=i+1; j<layouts.length(); j++) {
+-//				if( layouts[i].layout == layouts[j].layout && layouts[i].getRawDisplayName().isEmpty() ) {
+-//					layouts[i].setDisplayName( addNum(layouts[i].layout, 1) );
+-//					layouts[j].setDisplayName( addNum(layouts[j].layout, ++n) );
+-//					qCDebug(KCM_KEYBOARD) << "Adding" << 1 << "to" << layouts[i].toString();
+-//					qCDebug(KCM_KEYBOARD) << "Adding" << n << "to" << layouts[j].toString();
+-//				}
+-//			}
+-//		}
+-    }
+-    else {
+-        qCWarning(KCM_KEYBOARD) << "Failed to get layout groups from X server";
+-    }
+-    return layouts;
+-}
+-
+-bool X11Helper::setGroup(unsigned int group)
+-{
+-//    qDebug() << "setGroup--------------->" << endl;
+-//    qCDebug(KCM_KEYBOARD) << group;
+-//    xcb_void_cookie_t cookie;
+-//    cookie = xcb_xkb_latch_lock_state(QX11Info::connection(),
+-//        XCB_XKB_ID_USE_CORE_KBD,
+-//        0, 0,
+-//        1,
+-//        group,
+-//        0, 0, 0
+-//    );
+-//    xcb_generic_error_t *error = nullptr;
+-//    error = xcb_request_check(QX11Info::connection(), cookie);
+-//    if (error) {
+-//        qCDebug(KCM_KEYBOARD) << "Couldn't change the group" << error->error_code;
+-//        return false;
+-//    }
+-
+-    return true;
+-}
+-
+-unsigned int X11Helper::getGroup()
+-{
+-    XkbStateRec xkbState;
+-    XkbGetState( QX11Info::display(), XkbUseCoreKbd, &xkbState );
+-    return xkbState.group;
+-}
+-
+-bool X11Helper::getGroupNames(Display* display, XkbConfig* xkbConfig, FetchType fetchType)
+-{
+-    static const char OPTIONS_SEPARATOR[] = ",";
+-
+-    Atom real_prop_type;
+-    int fmt;
+-    unsigned long nitems, extra_bytes;
+-    char *prop_data = nullptr;
+-    Status ret;
+-
+-    Atom rules_atom = XInternAtom(display, _XKB_RF_NAMES_PROP_ATOM, False);
+-
+-    /* no such atom! */
+-    if (rules_atom == None) {       /* property cannot exist */
+-        qCWarning(KCM_KEYBOARD) << "Failed to fetch layouts from server:" << "could not find the atom" << _XKB_RF_NAMES_PROP_ATOM;
+-        return false;
+-    }
+-
+-    ret = XGetWindowProperty(display,
+-            DefaultRootWindow(display),
+-            rules_atom, 0L, _XKB_RF_NAMES_PROP_MAXLEN,
+-            False, XA_STRING, &real_prop_type, &fmt,
+-            &nitems, &extra_bytes,
+-            (unsigned char **) (void *) &prop_data);
+-
+-    /* property not found! */
+-    if (ret != Success) {
+-        qCWarning(KCM_KEYBOARD) << "Failed to fetch layouts from server:" << "Could not get the property";
+-        return false;
+-    }
+-
+-    /* has to be array of strings */
+-    if ((extra_bytes > 0) || (real_prop_type != XA_STRING) || (fmt != 8)) {
+-        if (prop_data)
+-            XFree(prop_data);
+-        qCWarning(KCM_KEYBOARD) << "Failed to fetch layouts from server:" << "Wrong property format";
+-        return false;
+-    }
+-
+-//	qCDebug(KCM_KEYBOARD) << "prop_data:" << nitems << prop_data;
+-    QStringList names;
+-    for(char* p=prop_data; p-prop_data < (long)nitems && p != nullptr; p += strlen(p)+1) {
+-        names.append( p );
+-//		qDebug() << " " << p;
+-    }
+-
+-    if( names.count() < 4 ) { //{ rules, model, layouts, variants, options }
+-        XFree(prop_data);
+-        return false;
+-    }
+-
+-    if( fetchType == ALL || fetchType == LAYOUTS_ONLY ) {
+-        QStringList layouts = names[2].split(OPTIONS_SEPARATOR);
+-        QStringList variants = names[3].split(OPTIONS_SEPARATOR);
+-
+-        for(int ii=0; ii<layouts.count(); ii++) {
+-            xkbConfig->layouts << (layouts[ii] != nullptr ? layouts[ii] : QLatin1String(""));
+-            xkbConfig->variants << (ii < variants.count() && variants[ii] != nullptr ? variants[ii] : QLatin1String(""));
+-        }
+-        qCDebug(KCM_KEYBOARD) << "Fetched layout groups from X server:"
+-                << "\tlayouts:" << xkbConfig->layouts
+-                << "\tvariants:" << xkbConfig->variants;
+-    }
+-
+-    if( fetchType == ALL || fetchType == MODEL_ONLY ) {
+-        xkbConfig->keyboardModel = (names[1] != nullptr ? names[1] : QLatin1String(""));
+-        qCDebug(KCM_KEYBOARD) << "Fetched keyboard model from X server:" << xkbConfig->keyboardModel;
+-    }
+-
+-    if( fetchType == ALL ) {
+-        if( names.count() >= 5 ) {
+-            QString options = (names[4] != nullptr ? names[4] : QLatin1String(""));
+-            xkbConfig->options = options.split(OPTIONS_SEPARATOR);
+-            qCDebug(KCM_KEYBOARD) << "Fetched xkbOptions from X server:" << options;
+-        }
+-    }
+-
+-    XFree(prop_data);
+-    return true;
+-}
+-
+-XEventNotifier::XEventNotifier():
+-        xkbOpcode(-1)
+-{
+-    if( QCoreApplication::instance() == nullptr ) {
+-        qCWarning(KCM_KEYBOARD) << "Layout Widget won't work properly without QCoreApplication instance";
+-    }
+-}
+-
+-void XEventNotifier::start()
+-{
+-    qCDebug(KCM_KEYBOARD) << "qCoreApp" << QCoreApplication::instance();
+-    if( QCoreApplication::instance() != nullptr && X11Helper::xkbSupported(&xkbOpcode) ) {
+-        registerForXkbEvents(QX11Info::display());
+-
+-        // start the event loop
+-        QCoreApplication::instance()->installNativeEventFilter(this);
+-    }
+-}
+-
+-void XEventNotifier::stop()
+-{
+-    if( QCoreApplication::instance() != nullptr ) {
+-        //TODO: unregister
+-    //    XEventNotifier::unregisterForXkbEvents(QX11Info::display());
+-
+-        // stop the event loop
+-        QCoreApplication::instance()->removeNativeEventFilter(this);
+-    }
+-}
+-
+-
+-bool XEventNotifier::isXkbEvent(xcb_generic_event_t* event)
+-{
+-//	qDebug() << "event response type:" << (event->response_type & ~0x80) << xkbOpcode << ((event->response_type & ~0x80) == xkbOpcode + XkbEventCode);
+-    return (event->response_type & ~0x80) == xkbOpcode + XkbEventCode;
+-}
+-
+-bool XEventNotifier::processOtherEvents(xcb_generic_event_t* /*event*/)
+-{
+-    return true;
+-}
+-
+-bool XEventNotifier::processXkbEvents(xcb_generic_event_t* event)
+-{
+-    _xkb_event *xkbevt = reinterpret_cast<_xkb_event *>(event);
+-    if( XEventNotifier::isGroupSwitchEvent(xkbevt) ) {
+-//		qDebug() << "group switch event";
+-        emit(layoutChanged());
+-    }
+-    else if( XEventNotifier::isLayoutSwitchEvent(xkbevt) ) {
+-//		qDebug() << "layout switch event";
+-        emit(layoutMapChanged());
+-    }
+-    return true;
+-}
+-
+-bool XEventNotifier::nativeEventFilter(const QByteArray &eventType, void *message, long *)
+-{
+-//	qDebug() << "event type:" << eventType;
+-    if (eventType == "xcb_generic_event_t") {
+-        xcb_generic_event_t* ev = static_cast<xcb_generic_event_t *>(message);
+-        if( isXkbEvent(ev) ) {
+-            processXkbEvents(ev);
+-        }
+-        else {
+-            processOtherEvents(ev);
+-        }
+-    }
+-    return false;
+-}
+-
+-//bool XEventNotifier::x11Event(XEvent * event)
+-//{
+-//	//    qApp->x11ProcessEvent ( event );
+-//	if( isXkbEvent(event) ) {
+-//		processXkbEvents(event);
+-//	}
+-//	else {
+-//		processOtherEvents(event);
+-//	}
+-//	return QWidget::x11Event(event);
+-//}
+-
+-bool XEventNotifier::isGroupSwitchEvent(_xkb_event* xkbEvent)
+-{
+-//    XkbEvent *xkbEvent = (XkbEvent*) event;
+-#define GROUP_CHANGE_MASK \
+-    ( XkbGroupStateMask | XkbGroupBaseMask | XkbGroupLatchMask | XkbGroupLockMask )
+-
+-    return xkbEvent->any.xkbType == XkbStateNotify && (xkbEvent->state_notify.changed & GROUP_CHANGE_MASK);
+-}
+-
+-bool XEventNotifier::isLayoutSwitchEvent(_xkb_event* xkbEvent)
+-{
+-//    XkbEvent *xkbEvent = (XkbEvent*) event;
+-
+-    return //( (xkbEvent->any.xkb_type == XkbMapNotify) && (xkbEvent->map.changed & XkbKeySymsMask) ) ||
+-/*    	  || ( (xkbEvent->any.xkb_type == XkbNamesNotify) && (xkbEvent->names.changed & XkbGroupNamesMask) || )*/
+-           (xkbEvent->any.xkbType == XkbNewKeyboardNotify);
+-}
+-
+-int XEventNotifier::registerForXkbEvents(Display* display)
+-{
+-    int eventMask = XkbNewKeyboardNotifyMask | XkbStateNotifyMask;
+-    if( ! XkbSelectEvents(display, XkbUseCoreKbd, eventMask, eventMask) ) {
+-        qCWarning(KCM_KEYBOARD) << "Couldn't select desired XKB events";
+-        return false;
+-    }
+-    return true;
+-}
+-
+-
+-static const char LAYOUT_VARIANT_SEPARATOR_PREFIX[] = "(";
+-static const char LAYOUT_VARIANT_SEPARATOR_SUFFIX[] = ")";
+-
+-static QString& stripVariantName(QString& variant)
+-{
+-    if( variant.endsWith(LAYOUT_VARIANT_SEPARATOR_SUFFIX) ) {
+-        int suffixLen = strlen(LAYOUT_VARIANT_SEPARATOR_SUFFIX);
+-        return variant.remove(variant.length()-suffixLen, suffixLen);
+-    }
+-    return variant;
+-}
+-
+-LayoutUnit::LayoutUnit(const QString& fullLayoutName)
+-{
+-    QStringList lv = fullLayoutName.split(LAYOUT_VARIANT_SEPARATOR_PREFIX);
+-    layout = lv[0];
+-    variant = lv.size() > 1 ? stripVariantName(lv[1]) : QLatin1String("");
+-}
+-
+-QString LayoutUnit::toString() const
+-{
+-    if( variant.isEmpty() )
+-        return layout;
+-
+-    return layout + LAYOUT_VARIANT_SEPARATOR_PREFIX+variant+LAYOUT_VARIANT_SEPARATOR_SUFFIX;
+-}
+-
+-const int LayoutUnit::MAX_LABEL_LENGTH = 3;
+diff --git a/plugins/devices/keyboard/preview/x11_helper.h b/plugins/devices/keyboard/preview/x11_helper.h
+deleted file mode 100644
+index 29a092b..0000000
+--- a/plugins/devices/keyboard/preview/x11_helper.h
++++ /dev/null
+@@ -1,260 +0,0 @@
+-/*
+- *  Copyright (C) 2010 Andriy Rysin (rysin@kde.org)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-
+-#ifndef X11_HELPER_H_
+-#define X11_HELPER_H_
+-
+-#include <QKeySequence>
+-#include <QString>
+-#include <QStringList>
+-#include <QWidget>
+-#include <QX11Info>
+-#include <QAbstractNativeEventFilter>
+-
+-#include <xcb/xcb.h>
+-//#include <xcb/xkb.h>
+-
+-//union _xkb_event;
+-//class xcb_generic_event_t;
+-
+-// TODO: remove this when we can include xcb/xkb.h
+-namespace
+-{
+-typedef struct _xcb_xkb_map_notify_event_t {
+-    uint8_t         response_type;
+-    uint8_t         xkbType;
+-    uint16_t        sequence;
+-    xcb_timestamp_t time;
+-    uint8_t         deviceID;
+-    uint8_t         ptrBtnActions;
+-    uint16_t        changed;
+-    xcb_keycode_t   minKeyCode;
+-    xcb_keycode_t   maxKeyCode;
+-    uint8_t         firstType;
+-    uint8_t         nTypes;
+-    xcb_keycode_t   firstKeySym;
+-    uint8_t         nKeySyms;
+-    xcb_keycode_t   firstKeyAct;
+-    uint8_t         nKeyActs;
+-    xcb_keycode_t   firstKeyBehavior;
+-    uint8_t         nKeyBehavior;
+-    xcb_keycode_t   firstKeyExplicit;
+-    uint8_t         nKeyExplicit;
+-    xcb_keycode_t   firstModMapKey;
+-    uint8_t         nModMapKeys;
+-    xcb_keycode_t   firstVModMapKey;
+-    uint8_t         nVModMapKeys;
+-    uint16_t        virtualMods;
+-    uint8_t         pad0[2];
+-} _xcb_xkb_map_notify_event_t;
+-typedef struct _xcb_xkb_state_notify_event_t {
+-    uint8_t         response_type;
+-    uint8_t         xkbType;
+-    uint16_t        sequence;
+-    xcb_timestamp_t time;
+-    uint8_t         deviceID;
+-    uint8_t         mods;
+-    uint8_t         baseMods;
+-    uint8_t         latchedMods;
+-    uint8_t         lockedMods;
+-    uint8_t         group;
+-    int16_t         baseGroup;
+-    int16_t         latchedGroup;
+-    uint8_t         lockedGroup;
+-    uint8_t         compatState;
+-    uint8_t         grabMods;
+-    uint8_t         compatGrabMods;
+-    uint8_t         lookupMods;
+-    uint8_t         compatLoockupMods;
+-    uint16_t        ptrBtnState;
+-    uint16_t        changed;
+-    xcb_keycode_t   keycode;
+-    uint8_t         eventType;
+-    uint8_t         requestMajor;
+-    uint8_t         requestMinor;
+-} _xcb_xkb_state_notify_event_t;
+-typedef union {
+-    /* All XKB events share these fields. */
+-    struct {
+-        uint8_t response_type;
+-        uint8_t xkbType;
+-        uint16_t sequence;
+-        xcb_timestamp_t time;
+-        uint8_t deviceID;
+-    } any;
+-    _xcb_xkb_map_notify_event_t map_notify;
+-    _xcb_xkb_state_notify_event_t state_notify;
+-} _xkb_event;
+-}
+-
+-class XEventNotifier : public QObject, public QAbstractNativeEventFilter {
+-    Q_OBJECT
+-
+-Q_SIGNALS:
+-    void layoutChanged();
+-    void layoutMapChanged();
+-
+-public:
+-    XEventNotifier();
+-    ~XEventNotifier() override {}
+-
+-    virtual void start();
+-    virtual void stop();
+-
+-protected:
+-//    bool x11Event(XEvent * e);
+-    virtual bool processOtherEvents(xcb_generic_event_t* e);
+-    virtual bool processXkbEvents(xcb_generic_event_t* e);
+-    bool nativeEventFilter(const QByteArray &eventType, void *message, long *) override;
+-
+-private:
+-    int registerForXkbEvents(Display* display);
+-    bool isXkbEvent(xcb_generic_event_t* event);
+-    bool isGroupSwitchEvent(_xkb_event* event);
+-    bool isLayoutSwitchEvent(_xkb_event* event);
+-
+-    int xkbOpcode;
+-};
+-
+-struct XkbConfig {
+-    QString keyboardModel;
+-    QStringList layouts;
+-    QStringList variants;
+-    QStringList options;
+-
+-    bool isValid() { return ! layouts.empty(); }
+-};
+-
+-
+-struct LayoutUnit {
+-    static const int MAX_LABEL_LENGTH;
+-
+-    //TODO: move these to private?
+-    QString layout;
+-    QString variant;
+-
+-    LayoutUnit() {}
+-    explicit LayoutUnit(const QString& fullLayoutName);
+-    LayoutUnit(const QString& layout_, const QString& variant_) {
+-        layout = layout_;
+-        variant = variant_;
+-    }
+-    /*explicit*/ LayoutUnit(const LayoutUnit& layoutUnit) {
+-        layout = layoutUnit.layout;
+-        variant = layoutUnit.variant;
+-        displayName = layoutUnit.displayName;
+-        shortcut = layoutUnit.shortcut;
+-    }
+-
+-    QString getRawDisplayName() const { return displayName; }
+-    QString getDisplayName() const { return !displayName.isEmpty() ? displayName :  layout; }
+-    void setDisplayName(const QString& name) { displayName = name; }
+-
+-    void setShortcut(const QKeySequence& shortcut) { this->shortcut = shortcut; }
+-    QKeySequence getShortcut() const { return shortcut; }
+-
+-    bool isEmpty() const { return layout.isEmpty(); }
+-    bool isValid() const { return ! isEmpty(); }
+-    bool operator==(const LayoutUnit& layoutItem) const {
+-        return layout==layoutItem.layout && variant==layoutItem.variant;
+-    }
+-    bool operator!=(const LayoutUnit& layoutItem) const {
+-        return ! (*this == layoutItem);
+-    }
+-    QString toString() const;
+-
+-private:
+-    QString displayName;
+-    QKeySequence shortcut;
+-};
+-
+-struct LayoutSet {
+-    QList<LayoutUnit> layouts;
+-    LayoutUnit currentLayout;
+-
+-    LayoutSet() {}
+-
+-    LayoutSet(const LayoutSet& currentLayouts) {
+-        this->layouts = currentLayouts.layouts;
+-        this->currentLayout = currentLayouts.currentLayout;
+-    }
+-
+-    bool isValid() const {
+-        return currentLayout.isValid() && layouts.contains(currentLayout);
+-    }
+-
+-    bool operator == (const LayoutSet& currentLayouts) const {
+-        return this->layouts == currentLayouts.layouts
+-                && this->currentLayout == currentLayouts.currentLayout;
+-    }
+-
+-    LayoutSet& operator = (const LayoutSet& currentLayouts) {
+-        this->layouts = currentLayouts.layouts;
+-        this->currentLayout = currentLayouts.currentLayout;
+-        return *this;
+-    }
+-
+-    QString toString() const {
+-        QString str(currentLayout.toString());
+-        str += QLatin1String(": ");
+-        foreach(const LayoutUnit& layoutUnit, layouts) {
+-            str += layoutUnit.toString() + " ";
+-        }
+-        return str;
+-    }
+-
+-    static QString toString(const QList<LayoutUnit>& layoutUnits) {
+-        QString str;
+-        foreach(const LayoutUnit& layoutUnit, layoutUnits) {
+-            str += layoutUnit.toString() + ",";
+-        }
+-        return str;
+-    }
+-};
+-
+-class X11Helper
+-{
+-public:
+-    static const int MAX_GROUP_COUNT;
+-    static const int ARTIFICIAL_GROUP_LIMIT_COUNT;
+-
+-    static const char LEFT_VARIANT_STR[];
+-    static const char RIGHT_VARIANT_STR[];
+-
+-    static bool xkbSupported(int* xkbOpcode);
+-
+-    static void switchToNextLayout();
+-    static void scrollLayouts(int delta);
+-    static bool isDefaultLayout();
+-    static bool setDefaultLayout();
+-    static bool setLayout(const LayoutUnit& layout);
+-    static LayoutUnit getCurrentLayout();
+-    static LayoutSet getCurrentLayouts();
+-    static QList<LayoutUnit> getLayoutsList();
+-    static QStringList getLayoutsListAsString(const QList<LayoutUnit>& layoutsList);
+-
+-    enum FetchType { ALL, LAYOUTS_ONLY, MODEL_ONLY };
+-    static bool getGroupNames(Display* dpy, XkbConfig* xkbConfig, FetchType fetchType);
+-
+-private:
+-    static unsigned int getGroup();
+-    static bool setGroup(unsigned int group);
+-};
+-
+-#endif /* X11_HELPER_H_ */
+diff --git a/plugins/devices/keyboard/preview/xkb_rules.cpp b/plugins/devices/keyboard/preview/xkb_rules.cpp
+deleted file mode 100644
+index 619fc92..0000000
+--- a/plugins/devices/keyboard/preview/xkb_rules.cpp
++++ /dev/null
+@@ -1,497 +0,0 @@
+-/*
+- *  Copyright (C) 2010 Andriy Rysin (rysin@kde.org)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-#include "xkb_rules.h"
+-#include "config-workspace.h"
+-#include "debug.h"
+-
+-#include <KLocalizedString>
+-
+-#include <QDir>
+-#include <QRegExp>
+-#include <QTextDocument> // for Qt::escape
+-#include <QXmlAttributes>
+-
+-#include <QtConcurrent>
+-//#include <libintl.h>
+-//#include <locale.h>
+-
+-#include "x11_helper.h"
+-
+-// for findXkbRuleFile
+-#include <QX11Info>
+-#include <X11/Xlib.h>
+-#include <X11/Xatom.h>
+-#include <X11/XKBlib.h>
+-#include <X11/extensions/XKBrules.h>
+-#include <fixx11h.h>
+-#include "config-workspace.h"
+-
+-
+-
+-class RulesHandler : public QXmlDefaultHandler
+-{
+-public:
+-    RulesHandler(Rules* rules_, bool fromExtras_):
+-        rules(rules_),
+-        fromExtras(fromExtras_){}
+-
+-    bool startElement(const QString &namespaceURI, const QString &localName,
+-                      const QString &qName, const QXmlAttributes &attributes) override;
+-    bool endElement(const QString &namespaceURI, const QString &localName,
+-                    const QString &qName) override;
+-    bool characters(const QString &str) override;
+-//    bool fatalError(const QXmlParseException &exception);
+-//    QString errorString() const;
+-
+-private:
+-//    QString getString(const QString& text);
+-
+-    QStringList path;
+-    Rules* rules;
+-    const bool fromExtras;
+-};
+-
+-static QString translate_xml_item(const QString& itemText)
+-{
+-    if (itemText.isEmpty()) { // i18n warns on empty input strings
+-        return itemText;
+-    }
+-    //messages are already extracted from the source XML files by xkb
+-    //the characters '<' and '>' (but not '"') are HTML-escaped in the xkeyboard-config translation files, so we need to convert them before/after looking up the translation
+-    //note that we cannot use QString::toHtmlEscaped() here because that would convert '"' as well
+-    QString msgid(itemText);
+-    return i18nd("xkeyboard-config", msgid.replace(QLatin1Literal("<"), QLatin1Literal("&lt;")).replace(QLatin1Literal(">"), QLatin1Literal("&gt;")).toUtf8()).replace(QLatin1Literal("&lt;"), QLatin1Literal("<")).replace(QLatin1Literal("&gt;"), QLatin1Literal(">"));
+-}
+-
+-static QString translate_description(ConfigItem* item)
+-{
+-    return item->description.isEmpty()
+-            ? item->name : translate_xml_item(item->description);
+-}
+-
+-static bool notEmpty(const ConfigItem* item)
+-{
+-  return ! item->name.isEmpty();
+-}
+-
+-template<class T>
+-void removeEmptyItems(QList<T*>& list)
+-{
+-#ifdef __GNUC__
+-#if __GNUC__ == 4 && (__GNUC_MINOR__ == 8 && __GNUC_PATCHLEVEL__ < 3) || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ < 4)
+-#warning Compiling with a workaround for GCC < 4.8.3 || GCC < 4.7.4 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58800
+-    Q_FOREACH(T* x, list) {
+-        ConfigItem *y = static_cast<ConfigItem*>(x);
+-        if (y->name.isEmpty()) {
+-            list.removeAll(x);
+-        }
+-    }
+-#else
+-    QtConcurrent::blockingFilter(list, notEmpty);
+-#endif
+-#endif
+-}
+-
+-static
+-void postProcess(Rules* rules)
+-{
+-    //TODO remove elements with empty names to safeguard us
+-    removeEmptyItems(rules->layoutInfos);
+-    removeEmptyItems(rules->modelInfos);
+-    removeEmptyItems(rules->optionGroupInfos);
+-
+-//	setlocale(LC_ALL, "");
+-//	bindtextdomain("xkeyboard-config", LOCALE_DIR);
+-    foreach(ModelInfo* modelInfo, rules->modelInfos) {
+-        modelInfo->vendor = translate_xml_item(modelInfo->vendor);
+-        modelInfo->description = translate_description(modelInfo);
+-    }
+-
+-    foreach(LayoutInfo* layoutInfo, rules->layoutInfos) {
+-        layoutInfo->description = translate_description(layoutInfo);
+-
+-        removeEmptyItems(layoutInfo->variantInfos);
+-        foreach(VariantInfo* variantInfo, layoutInfo->variantInfos) {
+-            variantInfo->description = translate_description(variantInfo);
+-        }
+-    }
+-    foreach(OptionGroupInfo* optionGroupInfo, rules->optionGroupInfos) {
+-        optionGroupInfo->description = translate_description(optionGroupInfo);
+-
+-        removeEmptyItems(optionGroupInfo->optionInfos);
+-        foreach(OptionInfo* optionInfo, optionGroupInfo->optionInfos) {
+-            optionInfo->description = translate_description(optionInfo);
+-        }
+-    }
+-}
+-
+-
+-Rules::Rules():
+-    version(QStringLiteral("1.0"))
+-{
+-}
+-
+-QString Rules::getRulesName()
+-{
+-    if (!QX11Info::isPlatformX11()) {
+-        return QString();
+-    }
+-    XkbRF_VarDefsRec vd;
+-    char *tmp = nullptr;
+-
+-    if (XkbRF_GetNamesProp(QX11Info::display(), &tmp, &vd) && tmp != nullptr ) {
+-        // 			qCDebug(KCM_KEYBOARD) << "namesprop" << tmp ;
+-                const QString name(tmp);
+-                XFree(tmp);
+-        return name;
+-    }
+-
+-    return {};
+-}
+-
+-QString Rules::findXkbDir()
+-{
+-    return QStringLiteral(XKBDIR);
+-}
+-
+-static QString findXkbRulesFile()
+-{
+-    QString rulesFile;
+-    QString rulesName = Rules::getRulesName();
+-
+-    const QString xkbDir = Rules::findXkbDir();
+-    if ( ! rulesName.isNull() ) {
+-        rulesFile = QStringLiteral("%1/rules/%2.xml").arg(xkbDir, rulesName);
+-    } else {
+-        // default to evdev
+-        rulesFile = QStringLiteral("%1/rules/evdev.xml").arg(xkbDir);
+-    }
+-
+-    return rulesFile;
+-}
+-
+-static
+-void mergeRules(Rules* rules, Rules* extraRules)
+-{
+-    rules->modelInfos.append( extraRules->modelInfos );
+-    rules->optionGroupInfos.append( extraRules->optionGroupInfos );	// need to iterate and merge?
+-
+-    QList<LayoutInfo*> layoutsToAdd;
+-    foreach(LayoutInfo* extraLayoutInfo, extraRules->layoutInfos) {
+-        LayoutInfo* layoutInfo = findByName(rules->layoutInfos, extraLayoutInfo->name);
+-        if( layoutInfo != nullptr ) {
+-            layoutInfo->variantInfos.append( extraLayoutInfo->variantInfos );
+-            layoutInfo->languages.append( extraLayoutInfo->languages );
+-        }
+-        else {
+-            layoutsToAdd.append(extraLayoutInfo);
+-        }
+-    }
+-    rules->layoutInfos.append(layoutsToAdd);
+-    qCDebug(KCM_KEYBOARD) << "Merged from extra rules:" << extraRules->layoutInfos.size() << "layouts," << extraRules->modelInfos.size() << "models," << extraRules->optionGroupInfos.size() << "option groups";
+-
+-    // base rules now own the objects - remove them from extra rules so that it does not try to delete them
+-    extraRules->layoutInfos.clear();
+-    extraRules->modelInfos.clear();
+-    extraRules->optionGroupInfos.clear();
+-}
+-
+-
+-const char Rules::XKB_OPTION_GROUP_SEPARATOR = ':';
+-
+-Rules* Rules::readRules(ExtrasFlag extrasFlag)
+-{
+-    Rules* rules = new Rules();
+-    QString rulesFile = findXkbRulesFile();
+-    if( ! readRules(rules, rulesFile, false) ) {
+-        delete rules;
+-        rules = nullptr;
+-        return nullptr;
+-    }
+-    if( extrasFlag == Rules::READ_EXTRAS ) {
+-        QRegExp regex(QStringLiteral("\\.xml$"));
+-        Rules* rulesExtra = new Rules();
+-        QString extraRulesFile = rulesFile.replace(regex, QStringLiteral(".extras.xml"));
+-        if( readRules(rulesExtra, extraRulesFile, true) ) {	// not fatal if it fails
+-            mergeRules(rules, rulesExtra);
+-        }
+-        delete rulesExtra;
+-        rulesExtra = nullptr;
+-    }
+-    return rules;
+-}
+-
+-
+-Rules* Rules::readRules(Rules* rules, const QString& filename, bool fromExtras)
+-{
+-    QFile file(filename);
+-    if( !file.open(QFile::ReadOnly | QFile::Text) ) {
+-        qCCritical(KCM_KEYBOARD) << "Cannot open the rules file" << file.fileName();
+-        return nullptr;
+-    }
+-
+-    RulesHandler rulesHandler(rules, fromExtras);
+-
+-    QXmlSimpleReader reader;
+-    reader.setContentHandler(&rulesHandler);
+-    reader.setErrorHandler(&rulesHandler);
+-
+-    QXmlInputSource xmlInputSource(&file);
+-
+-    qCDebug(KCM_KEYBOARD) << "Parsing xkb rules from" << file.fileName();
+-
+-    if( ! reader.parse(xmlInputSource) ) {
+-        qCCritical(KCM_KEYBOARD) << "Failed to parse the rules file" << file.fileName();
+-        return nullptr;
+-    }
+-
+-    postProcess(rules);
+-
+-    return rules;
+-}
+-
+-bool RulesHandler::startElement(const QString &/*namespaceURI*/, const QString &/*localName*/,
+-                      const QString &qName, const QXmlAttributes &attributes)
+-{
+-    path << QString(qName);
+-
+-    QString strPath = path.join(QStringLiteral("/"));
+-    if( strPath.endsWith(QLatin1String("layoutList/layout/configItem")) ) {
+-            rules->layoutInfos << new LayoutInfo(fromExtras);
+-    }
+-    else if( strPath.endsWith(QLatin1String("layoutList/layout/variantList/variant")) ) {
+-        rules->layoutInfos.last()->variantInfos << new VariantInfo(fromExtras);
+-    }
+-    else if( strPath.endsWith(QLatin1String("modelList/model")) ) {
+-        rules->modelInfos << new ModelInfo();
+-    }
+-    else if( strPath.endsWith(QLatin1String("optionList/group")) ) {
+-        rules->optionGroupInfos << new OptionGroupInfo();
+-        rules->optionGroupInfos.last()->exclusive = (attributes.value(QStringLiteral("allowMultipleSelection")) != QLatin1String("true"));
+-    }
+-    else if( strPath.endsWith(QLatin1String("optionList/group/option")) ) {
+-        rules->optionGroupInfos.last()->optionInfos << new OptionInfo();
+-    }
+-    else if( strPath == ("xkbConfigRegistry") && ! attributes.value(QStringLiteral("version")).isEmpty()  ) {
+-        rules->version = attributes.value(QStringLiteral("version"));
+-        qCDebug(KCM_KEYBOARD) << "xkbConfigRegistry version" << rules->version;
+-    }
+-    return true;
+-}
+-
+-bool RulesHandler::endElement(const QString &/*namespaceURI*/, const QString &/*localName*/, const QString &/*qName*/)
+-{
+-    path.removeLast();
+-    return true;
+-}
+-
+-bool RulesHandler::characters(const QString &str)
+-{
+-    if( !str.trimmed().isEmpty() ) {
+-        QString strPath = path.join(QStringLiteral("/"));
+-        if( strPath.endsWith(QLatin1String("layoutList/layout/configItem/name")) ) {
+-            if( rules->layoutInfos.last() != nullptr ) {
+-                rules->layoutInfos.last()->name = str.trimmed();
+-//				qCDebug(KCM_KEYBOARD) << "name:" << str;
+-            }
+-            // skipping invalid entry
+-        }
+-        else if( strPath.endsWith(QLatin1String("layoutList/layout/configItem/description")) ) {
+-            rules->layoutInfos.last()->description = str.trimmed();
+-//			qCDebug(KCM_KEYBOARD) << "descr:" << str;
+-        }
+-        else if( strPath.endsWith(QLatin1String("layoutList/layout/configItem/languageList/iso639Id")) ) {
+-            rules->layoutInfos.last()->languages << str.trimmed();
+-//			qCDebug(KCM_KEYBOARD) << "\tlang:" << str;
+-        }
+-        else if( strPath.endsWith(QLatin1String("layoutList/layout/variantList/variant/configItem/name")) ) {
+-            rules->layoutInfos.last()->variantInfos.last()->name = str.trimmed();
+-//			qCDebug(KCM_KEYBOARD) << "\tvariant name:" << str;
+-        }
+-        else if( strPath.endsWith(QLatin1String("layoutList/layout/variantList/variant/configItem/description")) ) {
+-            rules->layoutInfos.last()->variantInfos.last()->description = str.trimmed();
+-//			qCDebug(KCM_KEYBOARD) << "\tvariant descr:" << str;
+-        }
+-        else if( strPath.endsWith(QLatin1String("layoutList/layout/variantList/variant/configItem/languageList/iso639Id")) ) {
+-            rules->layoutInfos.last()->variantInfos.last()->languages << str.trimmed();
+-//			qCDebug(KCM_KEYBOARD) << "\tvlang:" << str;
+-        }
+-        else if( strPath.endsWith(QLatin1String("modelList/model/configItem/name")) ) {
+-            rules->modelInfos.last()->name = str.trimmed();
+-//			qCDebug(KCM_KEYBOARD) << "name:" << str;
+-        }
+-        else if( strPath.endsWith(QLatin1String("modelList/model/configItem/description")) ) {
+-            rules->modelInfos.last()->description = str.trimmed();
+-//			qCDebug(KCM_KEYBOARD) << "\tdescr:" << str;
+-        }
+-        else if( strPath.endsWith(QLatin1String("modelList/model/configItem/vendor")) ) {
+-            rules->modelInfos.last()->vendor = str.trimmed();
+-//			qCDebug(KCM_KEYBOARD) << "\tvendor:" << str;
+-        }
+-        else if( strPath.endsWith(QLatin1String("optionList/group/configItem/name")) ) {
+-            rules->optionGroupInfos.last()->name = str.trimmed();
+-//			qCDebug(KCM_KEYBOARD) << "name:" << str;
+-        }
+-        else if( strPath.endsWith(QLatin1String("optionList/group/configItem/description")) ) {
+-            rules->optionGroupInfos.last()->description = str.trimmed();
+-//			qCDebug(KCM_KEYBOARD) << "\tdescr:" << str;
+-        }
+-        else if( strPath.endsWith(QLatin1String("optionList/group/option/configItem/name")) ) {
+-            rules->optionGroupInfos.last()->optionInfos.last()->name = str.trimmed();
+-//			qCDebug(KCM_KEYBOARD) << "name:" << str;
+-        }
+-        else if( strPath.endsWith(QLatin1String("optionList/group/option/configItem/description")) ) {
+-            rules->optionGroupInfos.last()->optionInfos.last()->description = str.trimmed();
+-//			qCDebug(KCM_KEYBOARD) << "\tdescr:" << str;
+-        }
+-    }
+-    return true;
+-}
+-
+-bool LayoutInfo::isLanguageSupportedByLayout(const QString& lang) const
+-{
+-    if( languages.contains(lang) || isLanguageSupportedByVariants(lang) )
+-        return true;
+-
+-//	// return yes if no languages found in layout or its variants
+-//	if( languages.empty() ) {
+-//		foreach(const VariantInfo* info, variantInfos) {
+-//			if( ! info->languages.empty() )
+-//				return false;
+-//		}
+-//		return true;
+-//	}
+-
+-    return false;
+-}
+-
+-bool LayoutInfo::isLanguageSupportedByVariants(const QString& lang) const
+-{
+-    foreach(const VariantInfo* info, variantInfos) {
+-        if( info->languages.contains(lang) )
+-            return true;
+-    }
+-    return false;
+-}
+-
+-bool LayoutInfo::isLanguageSupportedByDefaultVariant(const QString& lang) const
+-{
+-    if( languages.contains(lang) )
+-        return true;
+-
+-    if( languages.empty() && isLanguageSupportedByVariants(lang) )
+-        return true;
+-
+-    return false;
+-}
+-
+-bool LayoutInfo::isLanguageSupportedByVariant(const VariantInfo* variantInfo, const QString& lang) const
+-{
+-    if( variantInfo->languages.contains(lang) )
+-        return true;
+-
+-    // if variant has no languages try to "inherit" them from layout
+-    if( variantInfo->languages.empty() && languages.contains(lang) )
+-        return true;
+-
+-    return false;
+-}
+-
+-#ifdef NEW_GEOMETRY
+-
+-Rules::GeometryId Rules::getGeometryId(const QString& model) {
+-    QString xkbDir = Rules::findXkbDir();
+-    QString rulesName = Rules::getRulesName();
+-    QString ruleFileName = QStringLiteral("%1/rules/%2").arg(xkbDir, rulesName);
+-    QFile ruleFile(ruleFileName);
+-
+-    GeometryId defaultGeoId(QStringLiteral("pc"), QStringLiteral("pc104"));
+-
+-    if ( ! ruleFile.open(QIODevice::ReadOnly | QIODevice::Text) ){
+-        qCCritical(KCM_KEYBOARD) << "Unable to open file" << ruleFileName;
+-        return defaultGeoId;
+-    }
+-
+-    QString modelGeoId = model;
+-    bool inTable = false;
+-    QTextStream in(&ruleFile);
+-
+-    while (!in.atEnd()) {
+-        QString line = in.readLine().trimmed();
+-
+-    if( line.isEmpty() || QRegExp(QStringLiteral("^\\s*//")).indexIn(line) != -1 )
+-        continue;
+-
+-        QRegExp modelGroupRegex(QStringLiteral("!\\s*(\\$[a-zA-Z0-9_]+)\\s*=(.*)"));
+-
+-        if( modelGroupRegex.indexIn(line) != -1 ) {
+-            QStringList parts = modelGroupRegex.capturedTexts();
+-            QString groupName = parts[1];
+-            QStringList models = parts[2].split(QRegExp(QStringLiteral("\\s+")), QString::SkipEmptyParts);
+-
+-//    	    qCDebug(KCM_KEYBOARD) << "modelGroup definition" << groupName << ":" << models;
+-            if( models.contains(model) ) {
+-                modelGeoId = groupName;
+-            }
+-            continue;
+-        }
+-
+-
+-    if( inTable ) {
+-            QRegExp modelTableEntry (QStringLiteral("\\s*(\\$?[a-zA-Z0-9_]+|\\*)\\s*=\\s*([a-zA-Z0-9_]+)\\(([a-zA-Z0-9_%]+)\\)"));
+-            if( modelTableEntry.indexIn(line) == -1 ) {
+-               if( QRegExp(QStringLiteral("^!\\s*")).indexIn(line) != -1 )
+-                 break;
+-
+-            qCWarning(KCM_KEYBOARD) << "could not parse geometry line" << line;
+-            continue;
+-            }
+-
+-            QStringList parts = modelTableEntry.capturedTexts();
+-            QString modelName = parts[1];
+-            QString fileName = parts[2];
+-            QString geoName = parts[3];
+-            if( geoName == QLatin1String("%m") ) {
+-              geoName = model;
+-            }
+-            if( modelName == QLatin1String("*") ) {
+-            defaultGeoId = GeometryId(fileName, geoName);
+-            }
+-
+-//    	    qCDebug(KCM_KEYBOARD) << "geo entry" << modelName << fileName << geoName;
+-
+-            if( modelName == model ) {
+-            return GeometryId(fileName, geoName);
+-            }
+-
+-            continue;
+-        }
+-
+-        QRegExp modelTableHeader (QStringLiteral("!\\s+model\\s*=\\s*geometry"));
+-        if( modelTableHeader.indexIn(line) != -1 ) {
+-            inTable = true;
+-            continue;
+-        }
+-
+-    }
+-
+-    return defaultGeoId;
+-}
+-
+-#endif
+diff --git a/plugins/devices/keyboard/preview/xkb_rules.h b/plugins/devices/keyboard/preview/xkb_rules.h
+deleted file mode 100644
+index 2351611..0000000
+--- a/plugins/devices/keyboard/preview/xkb_rules.h
++++ /dev/null
+@@ -1,142 +0,0 @@
+-/*
+- *  Copyright (C) 2010 Andriy Rysin (rysin@kde.org)
+- *
+- *  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 this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+- */
+-
+-
+-#ifndef XKB_RULES_H_
+-#define XKB_RULES_H_
+-
+-#include <QXmlDefaultHandler>
+-#include <QList>
+-#include <QStringList>
+-
+-#include "config-keyboard.h"
+-
+-struct ConfigItem {
+-    QString name;
+-    QString description;
+-};
+-
+-template <class T>
+-inline T* findByName(QList<T*> list, QString name) {
+-    foreach(T* info, list) {
+-        if( info->name == name )
+-            return info;
+-    }
+-    return nullptr;
+-}
+-
+-struct VariantInfo: public ConfigItem {
+-    QList<QString> languages;
+-    const bool fromExtras;
+-
+-    VariantInfo(bool fromExtras_):
+-        fromExtras(fromExtras_) {}
+-};
+-
+-struct LayoutInfo: public ConfigItem {
+-    QList<VariantInfo*> variantInfos;
+-    QList<QString> languages;
+-    const bool fromExtras;
+-
+-//	LayoutInfo() {}
+-    LayoutInfo(bool fromExtras_):
+-        fromExtras(fromExtras_) {}
+-    ~LayoutInfo() { foreach(VariantInfo* variantInfo, variantInfos) delete variantInfo; }
+-
+-    VariantInfo* getVariantInfo(const QString& variantName) const {
+-        return findByName(variantInfos, variantName);
+-    }
+-
+-    bool isLanguageSupportedByLayout(const QString& lang) const;
+-    bool isLanguageSupportedByDefaultVariant(const QString& lang) const;
+-    bool isLanguageSupportedByVariants(const QString& lang) const;
+-    bool isLanguageSupportedByVariant(const VariantInfo* variantInfo, const QString& lang) const;
+-};
+-
+-struct ModelInfo: public ConfigItem {
+-    QString vendor;
+-};
+-
+-struct OptionInfo: public ConfigItem {
+-};
+-
+-struct OptionGroupInfo: public ConfigItem {
+-    QList<OptionInfo*> optionInfos;
+-    bool exclusive;
+-
+-    ~OptionGroupInfo() { foreach(OptionInfo* opt, optionInfos) delete opt; }
+-
+-    const OptionInfo* getOptionInfo(const QString& optionName) const {
+-        return findByName(optionInfos, optionName);
+-    }
+-};
+-
+-struct Rules {
+-    enum ExtrasFlag { NO_EXTRAS, READ_EXTRAS };
+-
+-    static const char XKB_OPTION_GROUP_SEPARATOR;
+-
+-    QList<LayoutInfo*> layoutInfos;
+-    QList<ModelInfo*> modelInfos;
+-    QList<OptionGroupInfo*> optionGroupInfos;
+-    QString version;
+-
+-    Rules();
+-
+-    ~Rules() {
+-        foreach(LayoutInfo* layoutInfo, layoutInfos) delete layoutInfo;
+-        foreach(ModelInfo* modelInfo, modelInfos) delete modelInfo;
+-        foreach(OptionGroupInfo* optionGroupInfo, optionGroupInfos) delete optionGroupInfo;
+-    }
+-
+-    const LayoutInfo* getLayoutInfo(const QString& layoutName) const {
+-        return findByName(layoutInfos, layoutName);
+-    }
+-
+-    const OptionGroupInfo* getOptionGroupInfo(const QString& optionGroupName) const {
+-        return findByName(optionGroupInfos, optionGroupName);
+-    }
+-
+-    static Rules* readRules(ExtrasFlag extrasFlag);
+-    static Rules* readRules(Rules* rules, const QString& filename, bool fromExtras);
+-    static QString getRulesName();
+-    static QString findXkbDir();
+-
+-#ifdef NEW_GEOMETRY
+-    class GeometryId {
+-      public:
+-    QString fileName;
+-    QString geoName;
+-
+-    GeometryId(const QString& fileName_, const QString& geoName_):
+-      fileName(fileName_),
+-      geoName(geoName_) {}
+-
+-    GeometryId& operator=(const GeometryId& geoId) {
+-      fileName = geoId.fileName;
+-      geoName = geoId.geoName;
+-      return *this;
+-    }
+-    };
+-
+-    static GeometryId getGeometryId(const QString& model);
+-#endif
+-
+-};
+-
+-#endif /* XKB_RULES_H_ */
+diff --git a/plugins/devices/keyboard/tastenbrett.cpp b/plugins/devices/keyboard/tastenbrett.cpp
+deleted file mode 100644
+index ab95303..0000000
+--- a/plugins/devices/keyboard/tastenbrett.cpp
++++ /dev/null
+@@ -1,63 +0,0 @@
+-/*
+-    Copyright 2019 Harald Sitter <sitter@kde.org>
+-    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) version 3 or any later version
+-    accepted by the membership of KDE e.V. (or its successor approved
+-    by the membership of KDE e.V.), which shall act as a proxy
+-    defined in Section 14 of version 3 of the license.
+-    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 <http://www.gnu.org/licenses/>.
+-*/
+-
+-#include "tastenbrett.h"
+-
+-#include <QCoreApplication>
+-#include <QProcess>
+-#include <QStandardPaths>
+-#include <QDebug>
+-
+-QString Tastenbrett::path()
+-{
+-    static QString path;
+-    if (!path.isNull()) {
+-        return path;
+-    }
+-
+-    // Find relative to KCM (when run from build dir)
+-    path = QStandardPaths::findExecutable("tastenbrett", { qEnvironmentVariable("QT_PLUGIN_PATH"),
+-                                                           qApp->applicationDirPath() });
+-    if (!path.isNull()) {
+-        return path;
+-    }
+-
+-    return QStandardPaths::findExecutable("tastenbrett");
+-}
+-
+-bool Tastenbrett::exists()
+-{
+-    return !path().isNull();
+-}
+-
+-void Tastenbrett::launch(const QString &model, const QString &layout, const QString &variant, const QString &options, const QString &title)
+-{
+-    if (!exists()) {
+-        return;
+-    }
+-
+-    QProcess p;
+-    p.setProgram(path());
+-    QStringList args { "--model", model, "--layout", layout, "--variant", variant, "--options", options };
+-    if (!title.isEmpty()) {
+-        args << "-title" << title;
+-    }
+-    qDebug() << args;
+-    p.setArguments(args);
+-    p.setProcessChannelMode(QProcess::ForwardedChannels);
+-    p.startDetached();
+-}
+diff --git a/plugins/devices/keyboard/tastenbrett.h b/plugins/devices/keyboard/tastenbrett.h
+deleted file mode 100644
+index 68ff590..0000000
+--- a/plugins/devices/keyboard/tastenbrett.h
++++ /dev/null
+@@ -1,32 +0,0 @@
+-/*
+-    Copyright 2019 Harald Sitter <sitter@kde.org>
+-    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) version 3 or any later version
+-    accepted by the membership of KDE e.V. (or its successor approved
+-    by the membership of KDE e.V.), which shall act as a proxy
+-    defined in Section 14 of version 3 of the license.
+-    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 <http://www.gnu.org/licenses/>.
+-*/
+-
+-#ifndef TASTENBRETT_H
+-#define TASTENBRETT_H
+-
+-#include <QString>
+-
+-class Tastenbrett
+-{
+-public:
+-    static QString path();
+-    static bool exists();
+-    static void launch(const QString &model, const QString &layout, const QString &variant, const QString &options,
+-                       const QString &title = QString());
+-};
+-
+-#endif // TASTENBRETT_H
+diff --git a/shell/res/i18n/vi.ts b/shell/res/i18n/vi.ts
+new file mode 100644
+index 0000000..13f9f78
+--- /dev/null
++++ b/shell/res/i18n/vi.ts
+@@ -0,0 +1,13822 @@
++<?xml version="1.0" encoding="utf-8"?>
++<!DOCTYPE TS>
++<TS version="2.1" language="vi">
++<context>
++    <name>About</name>
++    <message>
++        <source>System Summary</source>
++        <translation type="vanished">系统概述</translation>
++    </message>
++    <message>
++        <source>Support</source>
++        <translation type="vanished">支持</translation>
++    </message>
++    <message>
++        <source>Version Number</source>
++        <translation type="vanished">版本号</translation>
++    </message>
++    <message>
++        <source>Copyright © 2020. All rights reserved.</source>
++        <translation type="obsolete">版权所有 @ 2009-%1%2 保留所有权利。 {2020.?}</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="547"/>
++        <source>Status</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="224"/>
++        <source>DateRes</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Wechat code scanning obtains HP professional technical support</source>
++        <translation type="vanished">微信扫码获得HP专业技术支持</translation>
++    </message>
++    <message>
++        <source>HostName</source>
++        <translation type="vanished">计算机名</translation>
++    </message>
++    <message>
++        <source>Copyright © 2020 KylinSoft. All rights reserved.</source>
++        <translation type="vanished">版权所有 © 2020 麒麟软件 保留所有权利。</translation>
++    </message>
++    <message>
++        <source>See more about Kylin Tianqi edu platform</source>
++        <translation type="vanished">查看麒麟天启教育平台更多信息</translation>
++    </message>
++    <message>
++        <source>&lt;&lt;Protocol&gt;&gt;</source>
++        <translation type="vanished">《试用免责协议》</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="56"/>
++        <source>About and Support</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>InterVersion</source>
++        <translation type="vanished">内部版本</translation>
++    </message>
++    <message>
++        <source>Patch Version</source>
++        <translation type="vanished">系统补丁版本号</translation>
++    </message>
++    <message>
++        <source>Privacy and agreement</source>
++        <translation type="vanished">隐私和协议</translation>
++    </message>
++    <message>
++        <source>Send optional diagnostic data</source>
++        <translation type="vanished">发送可选诊断数据</translation>
++    </message>
++    <message>
++        <source>By sending us diagnostic data, improve the system experience and solve your problems faster</source>
++        <translation type="vanished">通过向我们发送诊断数据,提升系统体验以及更快的解决你的问题</translation>
++    </message>
++    <message>
++        <source>Copyright © 2009-%1 KylinSoft. All rights reserved.</source>
++        <translation type="vanished">版权所有 © 2009-%1 麒麟软件 保留所有权利。</translation>
++    </message>
++    <message>
++        <source>and</source>
++        <translation type="vanished">和</translation>
++    </message>
++    <message>
++        <source>&lt;&lt;Privacy&gt;&gt;</source>
++        <translation type="vanished">《用户隐私协议》</translation>
++    </message>
++    <message>
++        <source>Learn more HP user manual&gt;&gt;</source>
++        <translation type="vanished">了解更多 Hp用户手册&gt;&gt;</translation>
++    </message>
++    <message>
++        <source>See user manual&gt;&gt;</source>
++        <translation type="vanished">查看用户手册</translation>
++    </message>
++    <message>
++        <source>Not activated (trial period)</source>
++        <translation type="vanished">未激活(试用期)</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="229"/>
++        <source>Trial expiration time</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="457"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="553"/>
++        <source>expired</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="244"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="458"/>
++        <source>Extend</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Installed Date</source>
++        <translation type="vanished">安装日期</translation>
++    </message>
++    <message>
++        <source>Upgrade Date</source>
++        <translation type="vanished">系统更新时间</translation>
++    </message>
++    <message>
++        <source>Copyright © 2009-%1 %2. All rights reserved.</source>
++        <translation type="vanished">版权所有 @ 2009-%1%2 保留所有权利。</translation>
++    </message>
++    <message>
++        <source>openkylin</source>
++        <translation type="vanished">开放麒麟</translation>
++    </message>
++    <message>
++        <source>KylinSoft</source>
++        <translation type="vanished">麒麟软件</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="279"/>
++        <source>Kylin Linux Desktop (Touch Screen) V10 (SP1)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="281"/>
++        <source>Kylin Linux Desktop (Tablet) V10 (SP1)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="518"/>
++        <source>The system needs to be restarted to set the HostName, whether to reboot</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="519"/>
++        <source>Reboot Now</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="520"/>
++        <source>Reboot Later</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Technical service has expired</source>
++        <translation type="vanished">已过期</translation>
++    </message>
++    <message>
++        <source>Extended</source>
++        <translation type="vanished">延长服务</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="401"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="410"/>
++        <source>avaliable</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>version</source>
++        <translation type="vanished">版本</translation>
++    </message>
++    <message>
++        <source>Copyright 2009-2020 @ Kylinos All rights reserved</source>
++        <translation type="vanished">版权所有2009-2020@kylinos保留所有权利</translation>
++    </message>
++    <message>
++        <source>Copyright 2009-2021 @ Kylinos All rights reserved</source>
++        <translation type="vanished">版权所有2009-2021@kylinos保留所有权利</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="545"/>
++        <source>Version</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="287"/>
++        <source>Kylin Linux Desktop V10 (SP1)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Copyright @ 2009-2021 KylinSoft. All rights reserved.</source>
++        <translation type="vanished">版权所有 @ 2009-2021 麒麟软件 保留所有权利。</translation>
++    </message>
++    <message>
++        <source>Copyright © 2009-2021 KylinSoft. All rights reserved.</source>
++        <translation type="vanished">版权所有 © 2009-2021 麒麟软件 保留所有权利。</translation>
++    </message>
++    <message>
++        <source>Kernel</source>
++        <translation type="vanished">内核</translation>
++        <extra-contents_path>/About/Kernel</extra-contents_path>
++    </message>
++    <message>
++        <source>CPU</source>
++        <translation type="vanished">CPU</translation>
++        <extra-contents_path>/About/CPU</extra-contents_path>
++    </message>
++    <message>
++        <source>Memory</source>
++        <translation type="vanished">内存</translation>
++        <extra-contents_path>/About/Memory</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="408"/>
++        <source>Disk</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Desktop</source>
++        <translation type="vanished">桌面</translation>
++        <extra-contents_path>/About/Desktop</extra-contents_path>
++    </message>
++    <message>
++        <source>User</source>
++        <translation type="vanished">用户名</translation>
++        <extra-contents_path>/About/User</extra-contents_path>
++    </message>
++    <message>
++        <source>Active Status</source>
++        <translation type="vanished">激活状态</translation>
++    </message>
++    <message>
++        <source>DataRes</source>
++        <translation type="vanished">有效期</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="549"/>
++        <source>Serial</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Protocol</source>
++        <translation type="vanished">免责协议</translation>
++    </message>
++    <message>
++        <source>Service serial number</source>
++        <translation type="vanished">序列号</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="231"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="235"/>
++        <source>Active</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Trial version disclaimer</source>
++        <translation type="vanished">试用版免责声明</translation>
++    </message>
++    <message>
++        <source>Devices Summary</source>
++        <translation type="vanished">设备规格</translation>
++    </message>
++    <message>
++        <source>about</source>
++        <translation type="vanished">关于</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="58"/>
++        <source>About</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>The system has expired. The expiration time is:</source>
++        <translation type="vanished">您的系统已激活,技术服务已到期:</translation>
++    </message>
++    <message>
++        <source>Disk:</source>
++        <translation type="vanished">硬盘:</translation>
++    </message>
++    <message>
++        <source> available</source>
++        <translation type="vanished">可用</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="227"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="233"/>
++        <source>Inactivated</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/about.cpp" line="243"/>
++        <source>Activated</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>UNKNOWN</source>
++        <translation type="vanished">未知的</translation>
++    </message>
++    <message>
++        <source>Current desktop env:</source>
++        <translation type="vanished">当前桌面环境:</translation>
++    </message>
++    <message>
++        <source>OS Version:</source>
++        <translation type="vanished">系统版本:</translation>
++    </message>
++    <message>
++        <source>CPU Arch:</source>
++        <translation type="vanished">CPU架构:</translation>
++    </message>
++    <message>
++        <source>Kernel Version</source>
++        <translation type="vanished">内核版本</translation>
++    </message>
++    <message>
++        <source>Manufacturers:</source>
++        <translation type="vanished">制造商:</translation>
++    </message>
++    <message>
++        <source>Product Name:</source>
++        <translation type="vanished">产品名:</translation>
++    </message>
++    <message>
++        <source>Version:</source>
++        <translation type="vanished">版本:</translation>
++    </message>
++    <message>
++        <source>Serial Number:</source>
++        <translation type="vanished">序列号:</translation>
++    </message>
++</context>
++<context>
++    <name>AboutInterface</name>
++    <message>
++        <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="233"/>
++        <source>avaliable</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AboutUi</name>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="32"/>
++        <source>System Summary</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/System Summary</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="35"/>
++        <source>Privacy and agreement</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Privacy and agreement</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="37"/>
++        <source>Support</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="51"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="381"/>
++        <source>Version</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/version</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="56"/>
++        <source>Version Number</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="61"/>
++        <source>Patch Version</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="66"/>
++        <source>Installed Date</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="71"/>
++        <source>Upgrade Date</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="78"/>
++        <source>HostName</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/HostName</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="90"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="383"/>
++        <source>Kernel</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Kernel</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="95"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="385"/>
++        <source>CPU</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/CPU</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="100"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="387"/>
++        <source>Memory</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Memory</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="105"/>
++        <source>Disk</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="110"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="389"/>
++        <source>Desktop</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Desktop</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="115"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="391"/>
++        <source>User</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/User</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="123"/>
++        <source>Copyright ©%1 %2. All rights reserved.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Copyright ©2022 %1. All rights reserved.</source>
++        <translation type="vanished">版权所有 ©2022 %1. 保留所有权利。</translation>
++    </message>
++    <message>
++        <source>Copyright © %1 %2. All rights reserved.</source>
++        <translation type="vanished">版权所有 © %1 %2. 保留所有权利。</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="172"/>
++        <source>openKylin</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="169"/>
++        <source>KylinSoft</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Copyright © 2020 KylinSoft. All rights reserved.</source>
++        <translation type="vanished">版权所有 © 2020 麒麟软件 保留所有权利。</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="235"/>
++        <source>Wechat code scanning obtains HP professional technical support</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="236"/>
++        <source>See more about Kylin Tianqi edu platform</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="256"/>
++        <source>Learn more HP user manual&gt;&gt;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="261"/>
++        <source>See user manual&gt;&gt;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="339"/>
++        <source>Send optional diagnostic data</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Send optional diagnostic data</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="340"/>
++        <source>By sending us diagnostic data, improve the system experience and solve your problems faster</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="363"/>
++        <source>&lt;&lt;Protocol&gt;&gt;</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/&lt;&lt;Protocol&gt;&gt;</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="364"/>
++        <source>and</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="366"/>
++        <source>&lt;&lt;Privacy&gt;&gt;</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/&lt;&lt;Privacy&gt;&gt;</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="393"/>
++        <source>Status</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Status</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="395"/>
++        <source>Active</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Active</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="397"/>
++        <source>Serial</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/About/Serial</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>AddAppDialog</name>
++    <message>
++        <source>OK</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++</context>
++<context>
++    <name>AddAutoBoot</name>
++    <message>
++        <source>Add AutoBoot</source>
++        <translation type="vanished">添加自启动程序</translation>
++    </message>
++    <message>
++        <source>Add autoboot program</source>
++        <translation type="vanished">添加自启动程序</translation>
++    </message>
++    <message>
++        <source>Program name</source>
++        <translation type="vanished">程序名</translation>
++    </message>
++    <message>
++        <source>Program exec</source>
++        <translation type="vanished">程序路径</translation>
++    </message>
++    <message>
++        <source>Open</source>
++        <translation type="vanished">浏览</translation>
++    </message>
++    <message>
++        <source>Program comment</source>
++        <translation type="vanished">程序描述</translation>
++    </message>
++    <message>
++        <source>Name</source>
++        <translation type="vanished">程序名</translation>
++    </message>
++    <message>
++        <source>Exec</source>
++        <translation type="vanished">程序路径</translation>
++    </message>
++    <message>
++        <source>Comment</source>
++        <translation type="vanished">程序描述</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Desktop files(*.desktop)</source>
++        <translation type="vanished">桌面文件(*.desktop)</translation>
++    </message>
++    <message>
++        <source>select autoboot desktop</source>
++        <translation type="vanished">选择自启动程序</translation>
++    </message>
++    <message>
++        <source>Select</source>
++        <translation type="vanished">选择</translation>
++    </message>
++    <message>
++        <source>desktop file not allowed add</source>
++        <translation type="vanished">此应用不允许添加</translation>
++    </message>
++    <message>
++        <source>desktop file  already exist</source>
++        <translation type="vanished">桌面文件已经存在</translation>
++    </message>
++    <message>
++        <source>desktop file not exist</source>
++        <translation type="vanished">desktop文件不存在</translation>
++    </message>
++</context>
++<context>
++    <name>AddBtn</name>
++    <message>
++        <location filename="../../../libukcc/widgets/AddBtn/addbtn.cpp" line="27"/>
++        <source>Add</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AddButton</name>
++    <message>
++        <location filename="../../../libukcc/widgets/SettingWidget/addbutton.cpp" line="25"/>
++        <source>Add</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AddInputMethodDialog</name>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="26"/>
++        <source>Dialog</source>
++        <translation></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="38"/>
++        <source>Select the input method to add</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="94"/>
++        <source>No</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="113"/>
++        <source>Yes</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="5"/>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="6"/>
++        <source>keyboard</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="5"/>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="6"/>
++        <source>Tibetan</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="7"/>
++        <source>With ASCII numbers</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="15"/>
++        <source>Input Method</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AddLanguageDialog</name>
++    <message>
++        <location filename="../../../plugins/time-language/area/addlanguagedialog.ui" line="26"/>
++        <source>Dialog</source>
++        <translation></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addlanguagedialog.ui" line="164"/>
++        <source>Yes</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addlanguagedialog.ui" line="145"/>
++        <source>No</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addlanguagedialog.cpp" line="13"/>
++        <source>Add Language</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/addlanguagedialog.cpp" line="14"/>
++        <source>Search</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AddNetBtn</name>
++    <message>
++        <source>Add WiredNetork</source>
++        <translation type="vanished">添加有线网络</translation>
++    </message>
++</context>
++<context>
++    <name>AddShortcutDialog</name>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="32"/>
++        <source>Dialog</source>
++        <translation></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="94"/>
++        <source>Exec</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="132"/>
++        <source>Open</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="180"/>
++        <source>Name</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="228"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="299"/>
++        <source>TextLabel</source>
++        <translation></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="254"/>
++        <source>Key</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="348"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="266"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="367"/>
++        <source>Save</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="73"/>
++        <source>Add Shortcut</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="86"/>
++        <source>Please enter a shortcut</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="224"/>
++        <source>Desktop files(*.desktop)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
++        <source>select desktop</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="302"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="323"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="334"/>
++        <source>Invalid application</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="304"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="319"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="330"/>
++        <source>Shortcut conflict</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="306"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="321"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="332"/>
++        <source>Invalid shortcut</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="309"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="316"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="337"/>
++        <source>Name repetition</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="343"/>
++        <source>Unknown error</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="522"/>
++        <source>Shortcut cannot be empty</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="526"/>
++        <source>Name cannot be empty</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AppDetail</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">更改时间</translation>
++    </message>
++    <message>
++        <source>Allow notification</source>
++        <translation type="vanished">允许通知</translation>
++    </message>
++    <message>
++        <source>Number of notification centers</source>
++        <translation type="vanished">最大通知数量</translation>
++    </message>
++    <message>
++        <source>cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++</context>
++<context>
++    <name>AppUpdateWid</name>
++    <message>
++        <source>Lack of local disk space!</source>
++        <translation type="vanished">磁盘空间不足!</translation>
++    </message>
++    <message>
++        <source>Update</source>
++        <translation type="vanished">更新</translation>
++    </message>
++    <message>
++        <source>Network abnormal!</source>
++        <translation type="vanished">网络异常!</translation>
++    </message>
++    <message>
++        <source>Download failed!</source>
++        <translation type="vanished">下载失败!</translation>
++    </message>
++    <message>
++        <source>failed to get from the source!</source>
++        <translation type="vanished">从源中获取失败!</translation>
++    </message>
++    <message>
++        <source>The download cache has been removed</source>
++        <translation type="vanished">下载缓存已被删除</translation>
++    </message>
++    <message>
++        <source>Being installed</source>
++        <translation type="vanished">正在安装</translation>
++    </message>
++    <message>
++        <source>Update succeeded , please restart the system!</source>
++        <translation type="vanished">更新成功,请重启系统!</translation>
++    </message>
++    <message>
++        <source>Update succeeded , please log in to the system again!</source>
++        <translation type="vanished"> 更新成功,请注销重新登录系统!</translation>
++    </message>
++    <message>
++        <source>Update succeeded!</source>
++        <translation type="vanished">更新成功!</translation>
++    </message>
++    <message>
++        <source>Update failed!</source>
++        <translation type="vanished">更新失败!</translation>
++    </message>
++    <message>
++        <source>Failure reason:</source>
++        <translation type="vanished">失败原因:</translation>
++    </message>
++    <message>
++        <source>details</source>
++        <translation type="vanished">详情</translation>
++    </message>
++    <message>
++        <source>Update log</source>
++        <translation type="vanished">更新日志</translation>
++    </message>
++    <message>
++        <source>Newest:</source>
++        <translation type="vanished">最新:</translation>
++    </message>
++    <message>
++        <source>Download size:</source>
++        <translation type="vanished">下载大小:</translation>
++    </message>
++    <message>
++        <source>Current version:</source>
++        <translation type="vanished">当前版本:</translation>
++    </message>
++    <message>
++        <source>back</source>
++        <translation type="vanished">收起</translation>
++    </message>
++    <message>
++        <source>In the pause</source>
++        <translation type="vanished">暂停中</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Update succeeded , It is recommended that you restart later!</source>
++        <translation type="vanished">更新成功,建议您稍后重启!</translation>
++    </message>
++    <message>
++        <source>Update succeeded , It is recommended that you log out later and log in again!</source>
++        <translation type="vanished">更新成功,建议您稍后注销重新登录系统!</translation>
++    </message>
++    <message>
++        <source>The battery is below 50% and the update cannot be downloaded</source>
++        <translation type="vanished">电池电量低于 50%,无法下载更新</translation>
++    </message>
++    <message>
++        <source>OK</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>A single update will not automatically backup the system, if you want to backup, please click Update All.</source>
++        <translation type="vanished">单个更新不会自动备份系统,如需备份,请点击全部更新。</translation>
++    </message>
++    <message>
++        <source>Prompt information</source>
++        <translation type="vanished">提示信息</translation>
++    </message>
++    <message>
++        <source>Do not backup, continue to update</source>
++        <translation type="vanished">不备份,继续更新</translation>
++    </message>
++    <message>
++        <source>Cancel update</source>
++        <translation type="vanished">取消更新</translation>
++    </message>
++    <message>
++        <source>This time will no longer prompt</source>
++        <translation type="vanished">本次更新不再提示</translation>
++    </message>
++    <message>
++        <source>Calculate the download speed</source>
++        <translation type="vanished">正在获取当前下载进度</translation>
++    </message>
++    <message>
++        <source>Get depends failed!</source>
++        <translation type="vanished">依赖获取异常!</translation>
++    </message>
++    <message>
++        <source>In the update</source>
++        <translation type="vanished">更新中</translation>
++    </message>
++    <message>
++        <source>Ready to install</source>
++        <translation type="vanished">准备安装</translation>
++    </message>
++    <message>
++        <source>Calculate the download progress</source>
++        <translation type="vanished">正在计算当前下载速度</translation>
++    </message>
++    <message>
++        <source>No content.</source>
++        <translation type="vanished">暂无内容.</translation>
++    </message>
++</context>
++<context>
++    <name>AptProxyDialog</name>
++    <message>
++        <source>Set Apt Proxy</source>
++        <translation type="vanished">设置APT代理</translation>
++    </message>
++    <message>
++        <source>Server Address</source>
++        <translation type="vanished">服务器地址</translation>
++    </message>
++    <message>
++        <source>Port</source>
++        <translation type="vanished">端口</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>Area</name>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="28"/>
++        <source>Area</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Regional Format</source>
++        <translation type="vanished">显示日期、时间和货币格式</translation>
++        <extra-contents_path>/Area/Current Region</extra-contents_path>
++    </message>
++    <message>
++        <source>Current Region</source>
++        <translation type="vanished">显示日期、时间和货币格式的区域</translation>
++    </message>
++    <message>
++        <source>First Day Of The Week</source>
++        <translation type="vanished">一周的第一天</translation>
++    </message>
++    <message>
++        <source>Calendar</source>
++        <translation type="vanished">日历</translation>
++        <extra-contents_path>/Area/Calendar</extra-contents_path>
++    </message>
++    <message>
++        <source>Language Format</source>
++        <translation type="vanished">语言格式</translation>
++        <extra-contents_path>/Area/Regional Format</extra-contents_path>
++    </message>
++    <message>
++        <source>Date</source>
++        <translation type="vanished">日期</translation>
++    </message>
++    <message>
++        <source>Time</source>
++        <translation type="vanished">时间</translation>
++        <extra-contents_path>/Area/Time</extra-contents_path>
++    </message>
++    <message>
++        <source>Area showing time currency format</source>
++        <translation type="vanished">显示日期、货币、时间、货币格式的区域</translation>
++    </message>
++    <message>
++        <source>Regional format data</source>
++        <translation type="vanished">区域格式数据</translation>
++    </message>
++    <message>
++        <source>lunar</source>
++        <translation type="vanished">农历</translation>
++    </message>
++    <message>
++        <source>First day of the week</source>
++        <translation type="vanished">一周的第一天</translation>
++    </message>
++    <message>
++        <source>day</source>
++        <translation type="vanished">号</translation>
++    </message>
++    <message>
++        <source>area</source>
++        <translation type="vanished">区域语言</translation>
++    </message>
++    <message>
++        <source>current area</source>
++        <translation type="vanished">当前区域</translation>
++    </message>
++    <message>
++        <source>display format area</source>
++        <translation type="vanished">显示日期、时间、货币格式的区域</translation>
++    </message>
++    <message>
++        <source>US</source>
++        <translation type="vanished">美国</translation>
++    </message>
++    <message>
++        <source>Language for system windows,menus and web pages</source>
++        <translation type="vanished">显示在系统窗口、菜单和网页的语言</translation>
++    </message>
++    <message>
++        <source>Add main language</source>
++        <translation type="vanished">添加首语言</translation>
++    </message>
++    <message>
++        <source>System Language</source>
++        <translation type="vanished">系统语言</translation>
++        <extra-contents_path>/Area/system language</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="639"/>
++        <source>Simplified Chinese</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="195"/>
++        <source>English  (US)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="196"/>
++        <source>Simplified Chinese  (CN)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="198"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="200"/>
++        <source>Tibetan  (CN)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>First Day Of Week</source>
++        <translation type="vanished">一周的第一天</translation>
++        <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="233"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="384"/>
++        <source>12 Hours</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="234"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="385"/>
++        <source>24 Hours</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Settings</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <source>简体中文</source>
++        <translation type="vanished">简体中文</translation>
++    </message>
++    <message>
++        <source>བོད་ཡིག</source>
++        <translation type="vanished">藏语</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="201"/>
++        <source>Uygur  (CN)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Kirghiz  (CN)</source>
++        <translation type="vanished">柯尔克孜语  (中国)</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="202"/>
++        <source>Traditional Chinese  (CN)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="203"/>
++        <source>Mongolian  (CN)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="204"/>
++        <source>Kazaqa  (KZ)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="205"/>
++        <source>Kirghiz  (KG)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="206"/>
++        <source>German  (DE)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="207"/>
++        <source>Spanish  (ES)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="208"/>
++        <source>French  (FR)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="215"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="302"/>
++        <source>Solar calendar</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="216"/>
++        <source>Lunar</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="221"/>
++        <source>Monday</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="222"/>
++        <source>Sunday</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="366"/>
++        <source>MMMM dd, yyyy</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="369"/>
++        <source>MMMM d, yy</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="643"/>
++        <source>Tibetan</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="645"/>
++        <source>Kazaqa</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="647"/>
++        <source>Uygur</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="649"/>
++        <source>Kirghiz</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="651"/>
++        <source>Traditional Chinese</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="653"/>
++        <source>Mongolian</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="655"/>
++        <source>German</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="657"/>
++        <source>Spanish</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="659"/>
++        <source>French</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="672"/>
++        <source>Modify the current region need to logout to take effect, whether to logout?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="673"/>
++        <source>Logout later</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="674"/>
++        <source>Logout now</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="676"/>
++        <source>Modify the first language need to reboot to take effect, whether to reboot?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="677"/>
++        <source>Reboot later</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="678"/>
++        <source>Reboot now</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>calendar</source>
++        <translation type="vanished">日历</translation>
++    </message>
++    <message>
++        <source>first day of week</source>
++        <translation type="vanished">一周的第一天</translation>
++    </message>
++    <message>
++        <source>date</source>
++        <translation type="vanished">日期</translation>
++    </message>
++    <message>
++        <source>2019/12/17</source>
++        <translation type="vanished">2019/12/17</translation>
++    </message>
++    <message>
++        <source>time</source>
++        <translation type="vanished">时间</translation>
++    </message>
++    <message>
++        <source>9:52</source>
++        <translation type="vanished">9:52</translation>
++    </message>
++    <message>
++        <source>change format of data</source>
++        <translation type="vanished">更改数据格式</translation>
++    </message>
++    <message>
++        <source>first language</source>
++        <translation type="vanished">首选语言</translation>
++    </message>
++    <message>
++        <source>system language</source>
++        <translation type="vanished">显示语言</translation>
++    </message>
++    <message>
++        <source>CN</source>
++        <translation type="vanished">中国</translation>
++    </message>
++    <message>
++        <source>Need to cancel to take effect</source>
++        <translation type="vanished">需要注销生效</translation>
++    </message>
++    <message>
++        <source>Need to log off to take effect</source>
++        <translation type="vanished">需要注销生效</translation>
++    </message>
++    <message>
++        <source>Message</source>
++        <translation type="vanished">信息</translation>
++    </message>
++    <message>
++        <source>country</source>
++        <translation type="vanished">显示日期,时间,货币格式的区域</translation>
++    </message>
++    <message>
++        <source>regional format</source>
++        <translation type="vanished">区域格式数据</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="641"/>
++        <source>English</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Chinese</source>
++        <translation type="vanished">简体中文</translation>
++    </message>
++    <message>
++        <source>add main language</source>
++        <translation type="vanished">添加首语言</translation>
++    </message>
++    <message>
++        <source>solar calendar</source>
++        <translation type="vanished">公历</translation>
++    </message>
++    <message>
++        <source>monday</source>
++        <translation type="vanished">星期一</translation>
++    </message>
++    <message>
++        <source>English (US)</source>
++        <translation type="vanished">英文 (美国)</translation>
++    </message>
++    <message>
++        <source>Simplified Chinese (CN)</source>
++        <translation type="vanished">简体中文 (中国)</translation>
++    </message>
++    <message>
++        <source>Tibetan (CN)</source>
++        <translation type="vanished">藏文 (中国)</translation>
++    </message>
++    <message>
++        <source>sunday</source>
++        <translation type="vanished">星期日</translation>
++    </message>
++    <message>
++        <source>change data format</source>
++        <translation type="vanished">更改数据格式</translation>
++    </message>
++</context>
++<context>
++    <name>AreaCodeLineEdit</name>
++    <message>
++        <source>Sign up by Phone</source>
++        <translation type="vanished">请输入手机号码</translation>
++    </message>
++</context>
++<context>
++    <name>AreaUi</name>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="38"/>
++        <source>Regional Format</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Regional Format</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="40"/>
++        <source>Calendar</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Calendar</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="42"/>
++        <source>First Day Of Week</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="47"/>
++        <source>Long Format Date</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Long Format Date</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="45"/>
++        <source>Short Foramt Date</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Short Foramt Date</extra-contents_path>
++    </message>
++    <message>
++        <source>Date</source>
++        <translation type="vanished">日期</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="50"/>
++        <source>Time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="63"/>
++        <source>Language Format</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Language Format</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="74"/>
++        <source>Language Format Example</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/Language Format Example</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="103"/>
++        <source>System Language</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Area/System Language</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>Audio</name>
++    <message>
++        <source>Audio</source>
++        <translation type="vanished">声音</translation>
++    </message>
++</context>
++<context>
++    <name>AutoBoot</name>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="96"/>
++        <source>Auto Start</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="293"/>
++        <source>Desktop files(*.desktop)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
++        <source>select autoboot desktop</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
++        <source>Select</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="303"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Add</source>
++        <translation type="vanished">添加</translation>
++        <extra-contents_path>/Autoboot/Add</extra-contents_path>
++    </message>
++    <message>
++        <source>Autoboot Settings</source>
++        <translation type="vanished">开机启动设置</translation>
++        <extra-contents_path>/autoboot/Autoboot Settings</extra-contents_path>
++    </message>
++    <message>
++        <source>Add autoboot app </source>
++        <translation type="vanished">添加自启动程序 </translation>
++    </message>
++    <message>
++        <source>autoboot</source>
++        <translation type="vanished">开机启动</translation>
++    </message>
++    <message>
++        <source>Autoboot</source>
++        <translation type="vanished">开机启动</translation>
++    </message>
++    <message>
++        <source>Auto Boot</source>
++        <translation type="vanished">开机启动</translation>
++    </message>
++    <message>
++        <source>Name</source>
++        <translation type="vanished">程序名称</translation>
++    </message>
++    <message>
++        <source>Status</source>
++        <translation type="vanished">当前状态</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="231"/>
++        <source>Delete</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>AutoBootUi</name>
++    <message>
++        <source>Autoboot Settings</source>
++        <translation type="vanished">开机启动设置</translation>
++        <extra-contents_path>/Autoboot/Autoboot Settings</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="17"/>
++        <source>Autostart Settings</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Autostart/Autostart Settings</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="27"/>
++        <source>Add</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Autostart/Add</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>Backup</name>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.ui" line="53"/>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="115"/>
++        <source>Backup</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Back up your files to other drives, and when the original files are lost, damaged, or deleted, you can restore them to ensure
++the integrity of your system.</source>
++        <translation type="vanished">将您的文件备份到其他驱动器,当源文件丢失、受损或被删除时可以还原它们,保证系统的完整性。</translation>
++    </message>
++    <message>
++        <source>Back up your files to other drives, and when the original files are lost, damaged, or deleted,
++you can restore them to ensure the integrity of your system.</source>
++        <translation type="vanished">将您的文件备份到其他驱动器,当源文件丢失、受损、删除时还原它们,保证系统的完整性。</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.ui" line="69"/>
++        <source>Back up your files to other drives, and when the original files are lost, damaged, or deleted, 
++you can restore them to ensure the integrity of your system.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.ui" line="113"/>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="162"/>
++        <source>Begin backup</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Backup/Begin backup</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.ui" line="157"/>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="139"/>
++        <source>Restore</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.ui" line="173"/>
++        <source>View a list of backed-upfiles to backed up files to the system</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>View a list of backed-upfiles to restore backed up files to the system</source>
++        <translation type="vanished">查看备份列表,将已备份文件还原至系统</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.ui" line="213"/>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="164"/>
++        <source>Begin restore</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Backup/Begin restore</extra-contents_path>
++    </message>
++    <message>
++        <source>backup</source>
++        <translation type="vanished">备份</translation>
++    </message>
++    <message>
++        <source>All data stored on the computer will be permanently erased,and the system will revert to
++                                its original factory state when this operation is completed.</source>
++        <translation type="vanished">将永久抹掉存储在计算机的所有数据,且无法撤销此操作。抹掉完成后系统将恢复至最初始出厂状态</translation>
++    </message>
++    <message>
++        <source>All data stored on the computer will be permanently erased,and the system will revert to 
++                                its original factory state when this operation is completed.</source>
++        <translation type="vanished">将永久清空储存在计算机的所有数据,且无法撤销此操作,
++              清空完成后系统将恢复至最初始出厂状态。</translation>
++    </message>
++    <message>
++        <source>Clear and restore</source>
++        <translation type="vanished">抹掉所有内容和设置</translation>
++        <extra-contents_path>/Backup/Clear and restore</extra-contents_path>
++    </message>
++    <message>
++        <source>System Recovery</source>
++        <translation type="vanished">系统还原</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="44"/>
++        <source>Backup Restore</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="117"/>
++        <source>Back up your files to other drives and restore them when the source files are lost, damaged, or deleted to ensure the integrity of the system.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="141"/>
++        <source>View the backup list and restore the backup file to the system</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/security-updates/backup/backup.cpp" line="160"/>
++        <source>Backup and Restore</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>BindPhoneDialog</name>
++    <message>
++        <source>Your account here</source>
++        <translation type="obsolete">请输入用户名</translation>
++    </message>
++    <message>
++        <source>Your password here</source>
++        <translation type="obsolete">输入密码</translation>
++    </message>
++    <message>
++        <source>Your code here</source>
++        <translation type="vanished">输入验证码</translation>
++    </message>
++    <message>
++        <source>Get</source>
++        <translation type="vanished">获取验证码</translation>
++    </message>
++    <message>
++        <source>Get phone code</source>
++        <translation type="vanished">获取绑定手机验证码</translation>
++    </message>
++</context>
++<context>
++    <name>BiometricEnrollDialog</name>
++    <message>
++        <source>Biometrics </source>
++        <translation type="vanished">生物识别</translation>
++    </message>
++    <message>
++        <source>Continue to enroll </source>
++        <translation type="vanished">继续录入</translation>
++    </message>
++    <message>
++        <source>Finish</source>
++        <translation type="vanished">完成</translation>
++    </message>
++    <message>
++        <source>FingerPrint</source>
++        <translation type="vanished">指纹</translation>
++    </message>
++    <message>
++        <source>Fingervein</source>
++        <translation type="vanished">指静脉</translation>
++    </message>
++    <message>
++        <source>Iris</source>
++        <translation type="vanished">虹膜</translation>
++    </message>
++    <message>
++        <source>Face</source>
++        <translation type="vanished">人脸</translation>
++    </message>
++    <message>
++        <source>VoicePrint</source>
++        <translation type="vanished">声纹</translation>
++    </message>
++    <message>
++        <source>Enroll</source>
++        <translation type="vanished">录入</translation>
++    </message>
++    <message>
++        <source>Verify</source>
++        <translation type="vanished">验证</translation>
++    </message>
++    <message>
++        <source>Search</source>
++        <translation type="vanished">搜索</translation>
++    </message>
++    <message>
++        <source>Permission is required.
++Please authenticate yourself to continue</source>
++        <translation type="vanished">需要授权,请先进行认证已继续操作</translation>
++    </message>
++    <message>
++        <source>Enroll successfully</source>
++        <translation type="vanished">录入成功</translation>
++    </message>
++    <message>
++        <source>Verify successfully</source>
++        <translation type="vanished">验证成功</translation>
++    </message>
++    <message>
++        <source>Not Match</source>
++        <translation type="vanished">不匹配</translation>
++    </message>
++    <message>
++        <source>D-Bus calling error</source>
++        <translation type="vanished">D-Bus获取错误</translation>
++    </message>
++    <message>
++        <source>Device is busy</source>
++        <translation type="vanished">设备忙</translation>
++    </message>
++    <message>
++        <source>No such device</source>
++        <translation type="vanished">设备不存在</translation>
++    </message>
++    <message>
++        <source>Permission denied</source>
++        <translation type="vanished">权限不够</translation>
++    </message>
++</context>
++<context>
++    <name>BiometricMoreInfoDialog</name>
++    <message>
++        <source>Biometrics </source>
++        <translation type="vanished">生物识别</translation>
++    </message>
++    <message>
++        <source>Default device </source>
++        <translation type="vanished">默认设备</translation>
++    </message>
++    <message>
++        <source>Verify Type:</source>
++        <translation type="vanished">验证类型:</translation>
++    </message>
++    <message>
++        <source>Bus Type:</source>
++        <translation type="vanished">总线类型:</translation>
++    </message>
++    <message>
++        <source>Device Status:</source>
++        <translation type="vanished">设备状态:</translation>
++    </message>
++    <message>
++        <source>Storage Type:</source>
++        <translation type="vanished">存储类型:</translation>
++    </message>
++    <message>
++        <source>Identification Type:</source>
++        <translation type="vanished">验证类型:</translation>
++    </message>
++    <message>
++        <source>Connected</source>
++        <translation type="vanished">已连接</translation>
++    </message>
++    <message>
++        <source>Unconnected</source>
++        <translation type="vanished">未连接</translation>
++    </message>
++    <message>
++        <source>FingerPrint</source>
++        <translation type="vanished">指纹</translation>
++    </message>
++    <message>
++        <source>Fingervein</source>
++        <translation type="vanished">指静脉</translation>
++    </message>
++    <message>
++        <source>Iris</source>
++        <translation type="vanished">虹膜</translation>
++    </message>
++    <message>
++        <source>Face</source>
++        <translation type="vanished">人脸</translation>
++    </message>
++    <message>
++        <source>VoicePrint</source>
++        <translation type="vanished">声纹</translation>
++    </message>
++    <message>
++        <source>Hardware Verification</source>
++        <translation type="vanished">硬件验证</translation>
++    </message>
++    <message>
++        <source>Software Verification</source>
++        <translation type="vanished">软件验证</translation>
++    </message>
++    <message>
++        <source>Mix Verification</source>
++        <translation type="vanished">混合验证</translation>
++    </message>
++    <message>
++        <source>Other Verification</source>
++        <translation type="vanished">其他验证</translation>
++    </message>
++    <message>
++        <source>Device Storage</source>
++        <translation type="vanished">设备存储</translation>
++    </message>
++    <message>
++        <source>OS Storage</source>
++        <translation type="vanished">系统存储</translation>
++    </message>
++    <message>
++        <source>Mix Storage</source>
++        <translation type="vanished">混合存储</translation>
++    </message>
++    <message>
++        <source>Serial</source>
++        <translation type="vanished">串口</translation>
++    </message>
++    <message>
++        <source>USB</source>
++        <translation type="vanished">USB</translation>
++    </message>
++    <message>
++        <source>PCIE</source>
++        <translation type="vanished">PCIE</translation>
++    </message>
++    <message>
++        <source>Any</source>
++        <translation type="vanished">任意类型</translation>
++    </message>
++    <message>
++        <source>Other</source>
++        <translation type="vanished">其他</translation>
++    </message>
++    <message>
++        <source>Hardware Identification</source>
++        <translation type="vanished">硬件识别</translation>
++    </message>
++    <message>
++        <source>Software Identification</source>
++        <translation type="vanished">软件识别</translation>
++    </message>
++    <message>
++        <source>Mix Identification</source>
++        <translation type="vanished">混合识别</translation>
++    </message>
++    <message>
++        <source>Other Identification</source>
++        <translation type="vanished">其他识别</translation>
++    </message>
++</context>
++<context>
++    <name>Biometrics</name>
++    <message>
++        <source>Biometrics</source>
++        <translation type="vanished">生物特征与密码</translation>
++    </message>
++</context>
++<context>
++    <name>BiometricsWidget</name>
++    <message>
++        <source>Biometric password</source>
++        <translation type="vanished">生物特征</translation>
++    </message>
++    <message>
++        <source>Account password</source>
++        <translation type="vanished">账户密码</translation>
++    </message>
++    <message>
++        <source>Change password</source>
++        <translation type="vanished">修改密码</translation>
++    </message>
++    <message>
++        <source>Enable biometrics </source>
++        <translation type="vanished">生物特征</translation>
++    </message>
++    <message>
++        <source>Device Type</source>
++        <translation type="vanished">设备类型</translation>
++    </message>
++    <message>
++        <source>Device Name</source>
++        <translation type="vanished">设备名</translation>
++    </message>
++    <message>
++        <source>Add biometric feature</source>
++        <translation type="vanished">添加生物密码</translation>
++    </message>
++    <message>
++        <source>Standard</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>Admin</source>
++        <translation type="vanished">管理员</translation>
++    </message>
++    <message>
++        <source>root</source>
++        <translation type="vanished">Root</translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++</context>
++<context>
++    <name>BlueToothMain</name>
++    <message>
++        <source>Turn off Bluetooth</source>
++        <translation type="vanished">关闭蓝牙</translation>
++    </message>
++    <message>
++        <source>Turn on Bluetooth</source>
++        <translation type="vanished">开启蓝牙</translation>
++    </message>
++    <message>
++        <source>Bluetooth</source>
++        <translation type="vanished">蓝牙</translation>
++    </message>
++    <message>
++        <source>Turn on :</source>
++        <translation type="vanished">开启:</translation>
++    </message>
++    <message>
++        <source>Bluetooth adapter</source>
++        <translation type="vanished">蓝牙适配器</translation>
++    </message>
++    <message>
++        <source>Show icon on taskbar</source>
++        <translation type="vanished">在任务栏显示蓝牙图标</translation>
++    </message>
++    <message>
++        <source>Discoverable by nearby Bluetooth devices</source>
++        <translation type="vanished">可被附近的蓝牙设备发现</translation>
++    </message>
++    <message>
++        <source>Audio</source>
++        <translation type="obsolete">声音</translation>
++    </message>
++    <message>
++        <source>Other</source>
++        <translation type="obsolete">其他</translation>
++    </message>
++    <message>
++        <source>Bluetooth adapter is not detected!</source>
++        <translation type="vanished">未检测到蓝牙适配器!</translation>
++    </message>
++    <message>
++        <source>Bluetooth adapter is abnormal !</source>
++        <translation type="vanished">蓝牙适配器异常!</translation>
++    </message>
++    <message>
++        <source>You can refer to the rfkill command for details.</source>
++        <translation type="vanished">可查阅rfkill命令了解详情</translation>
++    </message>
++    <message>
++        <source>Allow Bluetooth devices to be discoverable</source>
++        <translation type="vanished">允许蓝牙设备可以被发现</translation>
++    </message>
++    <message>
++        <source>Discoverable</source>
++        <translation type="vanished">设备可见性</translation>
++    </message>
++    <message>
++        <source>My Devices</source>
++        <translation type="vanished">我的设备</translation>
++    </message>
++    <message>
++        <source>Can now be found as </source>
++        <translation type="vanished">现在可被发现为 </translation>
++    </message>
++    <message>
++        <source>Other Devices</source>
++        <translation type="vanished">蓝牙设备</translation>
++    </message>
++    <message>
++        <source>Refresh</source>
++        <translation type="vanished">刷新</translation>
++    </message>
++</context>
++<context>
++    <name>BlueToothMainWindow</name>
++    <message>
++        <source>Bluetooth adapter is abnormal !</source>
++        <translation type="obsolete">蓝牙适配器异常!</translation>
++    </message>
++    <message>
++        <source>Bluetooth</source>
++        <translation type="obsolete">蓝牙</translation>
++    </message>
++    <message>
++        <source>Turn on :</source>
++        <translation type="obsolete">开启:</translation>
++    </message>
++    <message>
++        <source>Show icon on taskbar</source>
++        <translation type="obsolete">在任务栏显示蓝牙图标</translation>
++    </message>
++    <message>
++        <source>Discoverable by nearby Bluetooth devices</source>
++        <translation type="obsolete">可被附近的蓝牙设备发现</translation>
++    </message>
++    <message>
++        <source>My Devices</source>
++        <translation type="obsolete">我的设备</translation>
++    </message>
++    <message>
++        <source>Other Devices</source>
++        <translation type="obsolete">蓝牙设备</translation>
++    </message>
++</context>
++<context>
++    <name>Bluetooth</name>
++    <message>
++        <source>Bluetooth</source>
++        <translation type="vanished">蓝牙</translation>
++    </message>
++</context>
++<context>
++    <name>BluetoothNameLabel</name>
++    <message>
++        <source>Can now be found as </source>
++        <translation type="vanished">现在可被发现为 </translation>
++    </message>
++    <message>
++        <source>Double-click to change the device name</source>
++        <translation type="vanished">双击修改设备名称</translation>
++    </message>
++    <message>
++        <source>Can now be found as &quot;%1&quot;</source>
++        <translation type="vanished">现在可被发现为&quot;%1&quot;</translation>
++    </message>
++    <message>
++        <source>Tip</source>
++        <translation type="vanished">提示</translation>
++    </message>
++    <message>
++        <source>The length of the device name does not exceed %1 characters !</source>
++        <translation type="vanished">设备名称的长度不超过 %1 个字符!</translation>
++    </message>
++</context>
++<context>
++    <name>Boot</name>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/boot.cpp" line="7"/>
++        <source>Boot</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>boot</source>
++        <translation type="vanished">系统启动</translation>
++    </message>
++    <message>
++        <source>Grub verify</source>
++        <translation type="vanished">Grub 验证</translation>
++        <extra-contents_path>/Boot/Grub verify</extra-contents_path>
++    </message>
++    <message>
++        <source>Password required for Grub editing after enabling</source>
++        <translation type="vanished">启用后在Grub编辑需要密码</translation>
++    </message>
++    <message>
++        <source>Reset password</source>
++        <translation type="vanished">重置密码</translation>
++    </message>
++</context>
++<context>
++    <name>BootUi</name>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="21"/>
++        <source>boot</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="33"/>
++        <source>Grub verify</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Boot/Grub verify</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="36"/>
++        <source>Password required for Grub editing after enabling</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="38"/>
++        <source>Reset password</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>BrightnessFrame</name>
++    <message>
++        <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="36"/>
++        <source>Failed to get the brightness information of this monitor</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>CertificationDialog</name>
++    <message>
++        <source>UserCertification</source>
++        <translation type="vanished">用户认证</translation>
++    </message>
++    <message>
++        <source>User:</source>
++        <translation type="vanished">用户名:</translation>
++    </message>
++    <message>
++        <source>Passwd:</source>
++        <translation type="vanished">密码:</translation>
++    </message>
++    <message>
++        <source>Close</source>
++        <translation type="vanished">关闭</translation>
++    </message>
++    <message>
++        <source>Certification</source>
++        <translation type="vanished">认证</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeFaceDialog</name>
++    <message>
++        <source>select custom face file</source>
++        <translation type="vanished">选择自定义头像文件</translation>
++    </message>
++    <message>
++        <source>Select</source>
++        <translation type="vanished">选择</translation>
++    </message>
++    <message>
++        <source>Position: </source>
++        <translation type="vanished">位置: </translation>
++    </message>
++    <message>
++        <source>FileName: </source>
++        <translation type="vanished">文件名: </translation>
++    </message>
++    <message>
++        <source>FileType: </source>
++        <translation type="vanished">文件类型: </translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Warning</source>
++        <translation type="vanished">警告</translation>
++    </message>
++    <message>
++        <source>The avatar is larger than 1M, please choose again</source>
++        <translation type="vanished">警告,头像大于1M请重新选择</translation>
++    </message>
++    <message>
++        <source>The avatar is larger than 2M, please choose again</source>
++        <translation type="vanished">警告,头像大于2M请重新选择</translation>
++    </message>
++    <message>
++        <source>Change User Face</source>
++        <translation type="vanished">更改用户头像</translation>
++    </message>
++    <message>
++        <source>System Icon</source>
++        <translation type="vanished">系统头像</translation>
++    </message>
++    <message>
++        <source>Select face from local</source>
++        <translation type="vanished">从本地选择用户头像</translation>
++    </message>
++    <message>
++        <source>Save</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeFaceIntelDialog</name>
++    <message>
++        <source>Change User Face</source>
++        <translation type="vanished">更换用户头像</translation>
++        <extra-contents_path>/UserinfoIntel/Change User Face</extra-contents_path>
++    </message>
++    <message>
++        <source>History</source>
++        <translation type="vanished">自定义</translation>
++    </message>
++    <message>
++        <source>System</source>
++        <translation type="vanished">系统自带</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++    <message>
++        <source>select custom face file</source>
++        <translation type="vanished">选择自定义头像文件</translation>
++    </message>
++    <message>
++        <source>Select</source>
++        <translation type="vanished">选择</translation>
++    </message>
++    <message>
++        <source>Position: </source>
++        <translation type="vanished">位置: </translation>
++    </message>
++    <message>
++        <source>FileName: </source>
++        <translation type="vanished">文件名: </translation>
++    </message>
++    <message>
++        <source>FileType: </source>
++        <translation type="vanished">文件类型: </translation>
++    </message>
++    <message>
++        <source>Warning</source>
++        <translation type="vanished">警告</translation>
++    </message>
++    <message>
++        <source>The avatar is larger than 2M, please choose again</source>
++        <translation type="vanished">警告,头像大于2M请重新选择</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeFeatureName</name>
++    <message>
++        <source>Change Username</source>
++        <translation type="vanished">修改用户名</translation>
++    </message>
++    <message>
++        <source>Feature name</source>
++        <translation type="vanished">特征名称</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Save</source>
++        <translation type="vanished">保存</translation>
++    </message>
++    <message>
++        <source>Name already in use, change another one.</source>
++        <translation type="vanished">该用户名已存在,请更改。</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeGroupDialog</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">用户组</translation>
++    </message>
++    <message>
++        <source>User Group Settings</source>
++        <translation type="vanished">用户组设置</translation>
++    </message>
++    <message>
++        <source>User groups available in the system</source>
++        <translation type="vanished">系统中可用的用户组</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Add new user</source>
++        <translation type="obsolete">添加新用户</translation>
++    </message>
++    <message>
++        <source>User group</source>
++        <translation type="vanished">用户组</translation>
++    </message>
++    <message>
++        <source>Add user group</source>
++        <translation type="vanished">添加用户组</translation>
++    </message>
++    <message>
++        <source>Tips</source>
++        <translation type="vanished">提示</translation>
++    </message>
++    <message>
++        <source>Invalid Id!</source>
++        <translation type="vanished">无效组ID!</translation>
++    </message>
++    <message>
++        <source>OK</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Invalid Group Name!</source>
++        <translation type="vanished">无效组名!</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeGroupIntelDialog</name>
++    <message>
++        <source>User Group Settings</source>
++        <translation type="vanished">用户组设置</translation>
++    </message>
++    <message>
++        <source>User groups available in the system</source>
++        <translation type="vanished">系统中可用的用户组</translation>
++    </message>
++    <message>
++        <source>Add user group</source>
++        <translation type="vanished">添加用户组</translation>
++    </message>
++</context>
++<context>
++    <name>ChangePhoneIntelDialog</name>
++    <message>
++        <source>changephone</source>
++        <translation type="vanished">更换手机号</translation>
++    </message>
++    <message>
++        <source>Please input old phone num</source>
++        <translation type="vanished">请输入旧手机号</translation>
++    </message>
++    <message>
++        <source>GetVerifyCode</source>
++        <translation type="vanished">获取验证码</translation>
++    </message>
++    <message>
++        <source>submit</source>
++        <translation type="vanished">提交</translation>
++    </message>
++    <message>
++        <source>Change Phone</source>
++        <translation type="vanished">更换手机号</translation>
++    </message>
++    <message>
++        <source>Phone number</source>
++        <translation type="vanished">手机号</translation>
++    </message>
++    <message>
++        <source>SMS verification code</source>
++        <translation type="vanished">短信验证码</translation>
++    </message>
++    <message>
++        <source>Please input old phone number</source>
++        <translation type="vanished">请输入旧手机号</translation>
++    </message>
++    <message>
++        <source>Next</source>
++        <translation type="vanished">下一步</translation>
++    </message>
++    <message>
++        <source>Please enter new mobile number</source>
++        <translation type="vanished">请输入新手机号</translation>
++    </message>
++    <message>
++        <source>Submit</source>
++        <translation type="vanished">提交</translation>
++    </message>
++    <message>
++        <source>changed success</source>
++        <translation type="vanished">修改成功</translation>
++    </message>
++    <message>
++        <source>You have successfully modified your phone</source>
++        <translation type="vanished">您已成功更换手机号</translation>
++    </message>
++    <message>
++        <source>Recapture</source>
++        <translation type="vanished">重新获取</translation>
++    </message>
++    <message>
++        <source>Network connection failure, please check</source>
++        <translation type="vanished">网络连接故障,请检查</translation>
++    </message>
++    <message>
++        <source>GetCode</source>
++        <translation type="vanished">获取验证码</translation>
++    </message>
++    <message>
++        <source>Phone is lock,try again in an hour</source>
++        <translation type="vanished">手机号已被锁定,1小时之后再试</translation>
++    </message>
++    <message>
++        <source>Phone code is wrong</source>
++        <translation type="vanished">验证码错误,请重试</translation>
++    </message>
++    <message>
++        <source>Current login expired,using wechat code!</source>
++        <translation type="vanished">登录信息过期,请重新使用微信扫码登录</translation>
++    </message>
++    <message>
++        <source>Unknown error, please try again later</source>
++        <translation type="vanished">未知错误,请稍后重试</translation>
++    </message>
++    <message>
++        <source>Phone can not same</source>
++        <translation type="vanished">新旧手机号不能一致</translation>
++    </message>
++    <message>
++        <source>finished</source>
++        <translation type="vanished">完成</translation>
++    </message>
++    <message>
++        <source>Phone number already in used!</source>
++        <translation type="vanished">该号码已被注册,请更换手机号</translation>
++    </message>
++</context>
++<context>
++    <name>ChangePinIntelDialog</name>
++    <message>
++        <source>Change Password</source>
++        <translation type="vanished">修改密码</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeProjectionName</name>
++    <message>
++        <source>Name is too long, change another one.</source>
++        <translation type="vanished">名称过长,请更改</translation>
++    </message>
++    <message>
++        <source>Change Username</source>
++        <translation type="vanished">修改用户名</translation>
++    </message>
++    <message>
++        <source>Changename</source>
++        <translation type="vanished">修改名称</translation>
++    </message>
++    <message>
++        <source>ChangeProjectionname</source>
++        <translation type="vanished">设备名称</translation>
++    </message>
++    <message>
++        <source>Save</source>
++        <translation type="vanished">保存</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++</context>
++<context>
++    <name>ChangePwdDialog</name>
++    <message>
++        <source>Change Pwd</source>
++        <translation type="vanished">更改密码</translation>
++    </message>
++    <message>
++        <source>Pwd type</source>
++        <translation type="vanished">密码类型</translation>
++    </message>
++    <message>
++        <source>Cur pwd</source>
++        <translation type="vanished">当前密码</translation>
++    </message>
++    <message>
++        <source>New pwd</source>
++        <translation type="vanished">新密码</translation>
++    </message>
++    <message>
++        <source>New pwd sure</source>
++        <translation type="vanished">新密码确认</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Change pwd</source>
++        <translation type="vanished">更改密码</translation>
++    </message>
++    <message>
++        <source>Cur pwd checking!</source>
++        <translation type="vanished">当前密码检查!</translation>
++    </message>
++    <message>
++        <source>General Pwd</source>
++        <translation type="vanished">通用密码</translation>
++    </message>
++    <message>
++        <source>Current Password</source>
++        <translation type="vanished">当前密码</translation>
++    </message>
++    <message>
++        <source>New Password</source>
++        <translation type="vanished">新密码</translation>
++    </message>
++    <message>
++        <source>New Password Identify</source>
++        <translation type="vanished">新密码确认</translation>
++    </message>
++    <message>
++        <source>Authentication failed, input authtok again!</source>
++        <translation type="vanished">密码输入错误,重新输入!</translation>
++    </message>
++    <message>
++        <source>Pwd input error, re-enter!</source>
++        <translation type="vanished">密码输入错误,重新输入!</translation>
++    </message>
++    <message>
++        <source>Contains illegal characters!</source>
++        <translation type="vanished">含有非法字符!</translation>
++    </message>
++    <message>
++        <source>Same with old pwd</source>
++        <translation type="vanished">与旧密码相同</translation>
++    </message>
++    <message>
++        <source>Password length needs to more than %1 character!</source>
++        <translation type="vanished">密码长度至少大于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Password length needs to less than %1 character!</source>
++        <translation type="vanished">密码长度需要小于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Password length needs to more than 5 character!</source>
++        <translation type="vanished">密码长度需要大于5个字符!</translation>
++    </message>
++    <message>
++        <source>Inconsistency with pwd</source>
++        <translation type="vanished">与新密码不同</translation>
++    </message>
++</context>
++<context>
++    <name>ChangePwdIntelDialog</name>
++    <message>
++        <source>Change Pwd</source>
++        <translation type="vanished">更换密码</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++    <message>
++        <source>General Pwd</source>
++        <translation type="vanished">通用密码</translation>
++    </message>
++    <message>
++        <source>Old Password</source>
++        <translation type="vanished">当前密码</translation>
++    </message>
++    <message>
++        <source>New Password</source>
++        <translation type="vanished">新密码</translation>
++    </message>
++    <message>
++        <source>New Password Identify</source>
++        <translation type="vanished">新密码确认</translation>
++    </message>
++    <message>
++        <source>Please set different pwd!</source>
++        <translation type="vanished">新密码请勿与当前密码相同!</translation>
++    </message>
++    <message>
++        <source>Inconsistency with pwd</source>
++        <translation type="vanished">与新密码不同</translation>
++    </message>
++    <message>
++        <source>Old pwd is wrong!</source>
++        <translation type="vanished">当前密码错误!</translation>
++    </message>
++    <message>
++        <source>New pwd is too similar with old pwd!</source>
++        <translation type="vanished">新密码与当前密码相似度过高!</translation>
++    </message>
++    <message>
++        <source>Check old pwd failed because of unknown reason!</source>
++        <translation type="vanished">密码验证失败!(未知的原因)</translation>
++    </message>
++    <message>
++        <source>Password length needs to more than %1 character!</source>
++        <translation type="vanished">密码长度至少大于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Password length needs to less than %1 character!</source>
++        <translation type="vanished">密码长度需要小于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Password cannot be made up entirely by Numbers!</source>
++        <translation type="vanished">密码复杂度过低!</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeTypeDialog</name>
++    <message>
++        <source>Make sure that there is at least one administrator on the computer</source>
++        <translation type="vanished">请确保该计算机上至少有一个管理员用户</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot install software and change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能安装软件和更改系统配置</translation>
++    </message>
++    <message>
++        <source>Change Account Type</source>
++        <translation type="vanished">更改用户类型</translation>
++    </message>
++    <message>
++        <source>standard user</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能修改系统配置</translation>
++    </message>
++    <message>
++        <source>administrator</source>
++        <translation type="vanished">管理员用户</translation>
++    </message>
++    <message>
++        <source>Administrators can make any changes they need</source>
++        <translation type="vanished">管理员账户可以更改任何系统配置,包括安装软件和升级软件</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Change type</source>
++        <translation type="vanished">更改类型</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeTypeIntelDialog</name>
++    <message>
++        <source>Change Account Type</source>
++        <translation type="vanished">更换用户类型</translation>
++    </message>
++    <message>
++        <source>standard user</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot install software and change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能安装软件和更改系统配置</translation>
++    </message>
++    <message>
++        <source>administrator</source>
++        <translation type="vanished">管理员用户</translation>
++    </message>
++    <message>
++        <source>Administrators can make any changes they need</source>
++        <translation type="vanished">管理员账户可以更改任何系统配置,包括安装软件和升级软件</translation>
++    </message>
++    <message>
++        <source>Make sure that there is at least one administrator on the computer</source>
++        <translation type="vanished">提示:请确保在该计算机上至少有一个用户拥有管理员权限</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeUserLogo</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="139"/>
++        <source>System Logos</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Local Logo</source>
++        <translation type="vanished">本地头像</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="116"/>
++        <source>User logo</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="148"/>
++        <source>Select Local Logo</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="158"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="161"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="302"/>
++        <source>select custom face file</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="303"/>
++        <source>Select</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
++        <source>Position: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
++        <source>FileName: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
++        <source>FileType: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="322"/>
++        <source>Warning</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="323"/>
++        <source>The avatar is larger than 1M, please choose again</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>ChangeUserName</name>
++    <message>
++        <source>Change Username</source>
++        <translation type="vanished">修改用户名</translation>
++    </message>
++    <message>
++        <source>NickName</source>
++        <translation type="vanished">用户昵称</translation>
++    </message>
++    <message>
++        <source>UserName</source>
++        <translation type="vanished">用户名</translation>
++    </message>
++    <message>
++        <source>ComName</source>
++        <translation type="vanished">计算机名</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Save</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Name already in use, change another one.</source>
++        <translation type="vanished">该用户名已存在,请更改。</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeUserNickname</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="31"/>
++        <source>Set Nickname</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="53"/>
++        <source>UserName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="70"/>
++        <source>NickName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="156"/>
++        <source>NickName&apos;s length must between 1~%1 characters!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
++        <source>nickName already in use.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
++        <source>Can&apos;t contains &apos;:&apos;.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>The length must be 1~%1 characters!</source>
++        <translation type="vanished">长度必须为 1~%1 个字符</translation>
++    </message>
++    <message>
++        <source>nickName length must less than %1 letters!</source>
++        <translation type="vanished">用户昵称长度必须小于%1!</translation>
++    </message>
++    <message>
++        <source>Name already in use, change another one.</source>
++        <translation type="vanished">该用户名已存在,请更改。</translation>
++    </message>
++    <message>
++        <source>ComputerName</source>
++        <translation type="vanished">计算机名</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="113"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="116"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>ChangeUserPwd</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="98"/>
++        <source>Change password</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="103"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="471"/>
++        <source>Current Pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="116"/>
++        <source>Required</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="136"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="472"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="480"/>
++        <source>New Pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="163"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="473"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="481"/>
++        <source>Sure Pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="216"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="220"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="305"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="371"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="281"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="544"/>
++        <source>Inconsistency with pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="301"/>
++        <source>Same with old pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="354"/>
++        <source>Pwd Changed Succes</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="361"/>
++        <source>Authentication failed, input authtok again!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="503"/>
++        <source>Contains illegal characters!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="615"/>
++        <source>current pwd cannot be empty!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="620"/>
++        <source>new pwd cannot be empty!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="625"/>
++        <source>sure pwd cannot be empty!</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>ChangeUserType</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="24"/>
++        <source>UserType</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="71"/>
++        <source>administrator</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="73"/>
++        <source>standard user</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="61"/>
++        <source>Select account type (Ensure have admin on system):</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="75"/>
++        <source>change system settings, install and upgrade software.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="77"/>
++        <source>use most software, cannot change system settings.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="130"/>
++        <source>Note: Effective After Logout!!!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="141"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="144"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>ChangeVaildDialog</name>
++    <message>
++        <source>Password Validity Setting</source>
++        <translation type="vanished">密码有效期设置</translation>
++    </message>
++    <message>
++        <source>Current passwd validity:</source>
++        <translation type="vanished">当前密码有效期至:</translation>
++    </message>
++    <message>
++        <source>Adjust date to:</source>
++        <translation type="vanished">调整有效期至:</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeValidDialog</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">更改时间</translation>
++    </message>
++    <message>
++        <source>Password Validity Setting</source>
++        <translation type="vanished">密码有效期设置</translation>
++    </message>
++    <message>
++        <source>Current passwd validity:</source>
++        <translation type="vanished">当前密码有效期至:</translation>
++    </message>
++    <message>
++        <source>Adjust date to:</source>
++        <translation type="vanished">调整有效期至:</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Change valid</source>
++        <translation type="vanished">密码时效</translation>
++    </message>
++</context>
++<context>
++    <name>ChangeValidIntelDialog</name>
++    <message>
++        <source>Password Validity Setting</source>
++        <translation type="vanished">密码有效期设置</translation>
++    </message>
++    <message>
++        <source>Current passwd validity:</source>
++        <translation type="vanished">当前密码有效期至:</translation>
++    </message>
++    <message>
++        <source>Adjust date to:</source>
++        <translation type="vanished">调整有效期至:</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>ChangtimeDialog</name>
++    <message>
++        <source>day</source>
++        <translation type="vanished">日期</translation>
++    </message>
++    <message>
++        <source>time</source>
++        <translation type="vanished">时间</translation>
++    </message>
++    <message>
++        <source>year</source>
++        <translation type="vanished">年份</translation>
++    </message>
++    <message>
++        <source>month</source>
++        <translation type="vanished">月份</translation>
++    </message>
++</context>
++<context>
++    <name>ColorDialog</name>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="32"/>
++        <source>Dialog</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="86"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="89"/>
++        <source>Choose a custom color</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="254"/>
++        <source>HEX</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="290"/>
++        <source>RGB</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="457"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="476"/>
++        <source>OK</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="94"/>
++        <source>Custom color</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="182"/>
++        <source>Close</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>CreateGroupDialog</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">添加用户组</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.ui" line="26"/>
++        <source>Add New Group</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="54"/>
++        <source>Name</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="78"/>
++        <source>Id</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="92"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="202"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="216"/>
++        <source>GroupName&apos;s length must be between 1 and %1 characters!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Members</source>
++        <translation type="vanished">组成员</translation>
++    </message>
++    <message>
++        <source>Group Name</source>
++        <translation type="vanished">组名</translation>
++    </message>
++    <message>
++        <source>Group Id</source>
++        <translation type="vanished">组ID</translation>
++    </message>
++    <message>
++        <source>Group Members</source>
++        <translation type="vanished">组成员</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="89"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="50"/>
++        <source>Add user group</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>CreateGroupIntelDialog</name>
++    <message>
++        <source>Add New Group</source>
++        <translation type="vanished">添加用户组</translation>
++    </message>
++    <message>
++        <source>Group Name</source>
++        <translation type="vanished">组名</translation>
++    </message>
++    <message>
++        <source>Group Id</source>
++        <translation type="vanished">组ID</translation>
++    </message>
++    <message>
++        <source>Group Members</source>
++        <translation type="vanished">组成员</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>CreateUserDialog</name>
++    <message>
++        <source>UserName</source>
++        <translation type="vanished">用户名</translation>
++    </message>
++    <message>
++        <source>ComName</source>
++        <translation type="vanished">计算机名</translation>
++    </message>
++    <message>
++        <source>Password</source>
++        <translation type="vanished">密码</translation>
++    </message>
++    <message>
++        <source>Account Type</source>
++        <translation type="vanished">用户类型</translation>
++    </message>
++    <message>
++        <source>Add New Account</source>
++        <translation type="vanished">添加新用户</translation>
++    </message>
++    <message>
++        <source>PwdType</source>
++        <translation type="vanished">密码类型</translation>
++    </message>
++    <message>
++        <source>PasswordSure</source>
++        <translation type="vanished">确认密码</translation>
++    </message>
++    <message>
++        <source>standard user</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能修改系统配置</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot install the software and
++change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能安装软件和更改系统配置</translation>
++    </message>
++    <message>
++        <source>administrator</source>
++        <translation type="vanished">管理员用户</translation>
++    </message>
++    <message>
++        <source>Administrators can make any changes they need</source>
++        <translation type="vanished">管理员账户可以更改任何系统配置,包括安装软件和升级软件</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Password Identify</source>
++        <translation type="vanished">密码确认</translation>
++    </message>
++    <message>
++        <source>General Password</source>
++        <translation type="vanished">通用密码</translation>
++    </message>
++    <message>
++        <source>Inconsistency with pwd</source>
++        <translation type="vanished">和密码不一致</translation>
++    </message>
++    <message>
++        <source>Must be begin with lower letters!</source>
++        <translation type="vanished">用户名必须以小写字母开始!</translation>
++    </message>
++    <message>
++        <source>Can not contain capital letters!</source>
++        <translation type="vanished">用户名不能包含大写字母!</translation>
++    </message>
++    <message>
++        <source>Name already in use, change another one.</source>
++        <translation type="vanished">该用户名已存在,请更改。</translation>
++    </message>
++    <message>
++        <source>Name corresponds to group already exists.</source>
++        <translation type="vanished">用户名对应组已存在,请更改。</translation>
++    </message>
++    <message>
++        <source>Name length must less than %1 letters!</source>
++        <translation type="vanished">用户名长度必须小于%1!</translation>
++    </message>
++    <message>
++        <source>Can only contain letters,digits,underline!</source>
++        <translation type="vanished">用户名仅能包含字母,数字及下划线</translation>
++    </message>
++    <message>
++        <source>Username&apos;s folder exists, change another one</source>
++        <translation type="vanished">用户目录已存在,请更改</translation>
++    </message>
++    <message>
++        <source>Password length needs to more than %1 character!</source>
++        <translation type="vanished">密码长度至少大于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Password length needs to less than %1 character!</source>
++        <translation type="vanished">密码长度需要小于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Add new user</source>
++        <translation type="vanished">添加新用户</translation>
++    </message>
++    <message>
++        <source>Password cannot be made up entirely by Numbers!</source>
++        <translation type="obsolete">密码复杂度过低!</translation>
++    </message>
++    <message>
++        <source>Contains illegal characters!</source>
++        <translation type="vanished">含有非法字符!</translation>
++    </message>
++    <message>
++        <source>The user name cannot be empty</source>
++        <translation type="vanished">用户名不能为空</translation>
++    </message>
++    <message>
++        <source>The first character must be lowercase letters!</source>
++        <translation type="vanished">首字符必须为小写字符!</translation>
++    </message>
++    <message>
++        <source>User name can not contain capital letters!</source>
++        <translation type="vanished">用户名不能包含大写字符!</translation>
++    </message>
++    <message>
++        <source>The user name is already in use, please use a different one.</source>
++        <translation type="vanished">用户名已存在,请换用其他用户名。</translation>
++    </message>
++    <message>
++        <source>The name corresponds to the group already exists.</source>
++        <translation type="vanished">用户名对应组已存在,请更换用户名.</translation>
++    </message>
++    <message>
++        <source>User name length need to less than %1 letters!</source>
++        <translation type="vanished">用户名长度需要小于%1个字符!</translation>
++    </message>
++    <message>
++        <source>The user name can only be composed of letters, numbers and underline!</source>
++        <translation type="vanished">用户名只能由字母、数字以及下划线组成!</translation>
++    </message>
++    <message>
++        <source>The username is configured, please change the username</source>
++        <translation type="vanished">用户配置已存在,请更换用户名</translation>
++    </message>
++</context>
++<context>
++    <name>CreateUserIntelDialog</name>
++    <message>
++        <source>Add New Account</source>
++        <translation type="vanished">添加新用户</translation>
++    </message>
++    <message>
++        <source>Account Type</source>
++        <translation type="vanished">用户类型</translation>
++    </message>
++    <message>
++        <source>standard user</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot install the software and
++change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能安装软件和更改系统配置</translation>
++    </message>
++    <message>
++        <source>Standard users can use most software, but cannot install the software and 
++change system settings</source>
++        <translation type="vanished">标准账户可以使用大多数软件,但是不能安装软件和更改系统配置</translation>
++    </message>
++    <message>
++        <source>administrator</source>
++        <translation type="vanished">管理员用户</translation>
++    </message>
++    <message>
++        <source>Administrators can make any changes they need</source>
++        <translation type="vanished">管理员账户可以更改任何系统配置,包括安装软件和升级软件</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>UserName</source>
++        <translation type="vanished">账户名称</translation>
++    </message>
++    <message>
++        <source>Password</source>
++        <translation type="vanished">输入密码</translation>
++    </message>
++    <message>
++        <source>Password Identify</source>
++        <translation type="vanished">确认密码</translation>
++    </message>
++    <message>
++        <source>Inconsistency with pwd</source>
++        <translation type="vanished">和密码不一致</translation>
++    </message>
++    <message>
++        <source>Password length needs to more than %1 character!</source>
++        <translation type="vanished">密码长度至少大于%1个字符!</translation>
++    </message>
++    <message>
++        <source>Password length needs to less than %1 character!</source>
++        <translation type="vanished">密码长度需要小于%1个字符!</translation>
++    </message>
++    <message>
++        <source>The user name cannot be empty</source>
++        <translation type="vanished">用户名不能为空</translation>
++    </message>
++    <message>
++        <source>The first character must be lowercase letters!</source>
++        <translation type="vanished">首字符必须为小写字符!</translation>
++    </message>
++    <message>
++        <source>User name can not contain capital letters!</source>
++        <translation type="vanished">用户名不能包含大写字符!</translation>
++    </message>
++    <message>
++        <source>The user name is already in use, please use a different one.</source>
++        <translation type="vanished">用户名已存在,请换用其他用户名。</translation>
++    </message>
++    <message>
++        <source>User name length need to less than %1 letters!</source>
++        <translation type="vanished">用户名长度需要小于%1个字符!</translation>
++    </message>
++    <message>
++        <source>The user name can only be composed of letters, numbers and underline!</source>
++        <translation type="vanished">用户名只能由字母、数字以及下划线组成!</translation>
++    </message>
++    <message>
++        <source>The username is configured, please change the username</source>
++        <translation type="vanished">用户配置已存在,请更换用户名</translation>
++    </message>
++</context>
++<context>
++    <name>CreateUserNew</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="49"/>
++        <source>CreateUserNew</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="55"/>
++        <source>UserName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="65"/>
++        <source>NickName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="71"/>
++        <source>HostName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="80"/>
++        <source>Pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="88"/>
++        <source>SurePwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="96"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="99"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="102"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="105"/>
++        <source>Required</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="109"/>
++        <source>verification</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="182"/>
++        <source>Select Type</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="191"/>
++        <source>Administrator</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="194"/>
++        <source>Users can make any changes they need</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="196"/>
++        <source>Standard User</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="199"/>
++        <source>Users cannot change system settings</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="276"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="279"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="355"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="581"/>
++        <source>Inconsistency with pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="494"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="647"/>
++        <source>NickName&apos;s length must between 1~%1 characters!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>The nick name cannot be empty</source>
++        <translation type="vanished">用户昵称不能为空</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
++        <source>nickName already in use.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>nickName length must less than %1 letters!</source>
++        <translation type="vanished">用户昵称长度必须小于%1!</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="642"/>
++        <source>Username&apos;s length must be between 1 and %1 characters!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="652"/>
++        <source>new pwd cannot be empty!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="657"/>
++        <source>sure pwd cannot be empty!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Name already in use.</source>
++        <translation type="vanished">该用户名已存在。</translation>
++    </message>
++    <message>
++        <source>Nickname cannot same with username</source>
++        <translation type="vanished">用户昵称和用户名不能相同</translation>
++    </message>
++    <message>
++        <source>The user name cannot be empty</source>
++        <translation type="vanished">用户名不能为空</translation>
++    </message>
++    <message>
++        <source>Must be begin with lower letters!</source>
++        <translation type="vanished">用户名必须以小写字母开始!</translation>
++    </message>
++    <message>
++        <source>Can not contain capital letters!</source>
++        <translation type="vanished">用户名不能包含大写字母!</translation>
++    </message>
++    <message>
++        <source>Name already in use, change another one.</source>
++        <translation type="vanished">该用户名已存在,请更改。</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="526"/>
++        <source>Name corresponds to group already exists.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Name length must less than %1 letters!</source>
++        <translation type="vanished">用户名长度必须小于%1!</translation>
++    </message>
++    <message>
++        <source>Can only contain letters,digits,underline!</source>
++        <translation type="vanished">用户名仅能包含字母,数字及下划线</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="522"/>
++        <source>Username&apos;s folder exists, change another one</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="551"/>
++        <source>Contains illegal characters!</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>CustomGlobalTheme</name>
++    <message>
++        <location filename="../../../plugins/personalized/theme/globaltheme/customglobaltheme.cpp" line="34"/>
++        <source>custom</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>CustomLineEdit</name>
++    <message>
++        <source>New Shortcut...</source>
++        <translation type="vanished">新快捷键...</translation>
++    </message>
++</context>
++<context>
++    <name>DataFormat</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">更改时间</translation>
++    </message>
++    <message>
++        <source>change format of data</source>
++        <translation type="vanished">更改数据格式</translation>
++    </message>
++    <message>
++        <source>calendar</source>
++        <translation type="vanished">日历</translation>
++    </message>
++    <message>
++        <source>first day</source>
++        <translation type="vanished">一周第一天</translation>
++    </message>
++    <message>
++        <source>date</source>
++        <translation type="vanished">日期</translation>
++    </message>
++    <message>
++        <source>time</source>
++        <translation type="vanished">时间</translation>
++    </message>
++    <message>
++        <source>cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++    <message>
++        <source>first day of week</source>
++        <translation type="vanished">一周的第一天</translation>
++    </message>
++    <message>
++        <source>lunar</source>
++        <translation type="vanished">农历</translation>
++    </message>
++    <message>
++        <source>solar calendar</source>
++        <translation type="vanished">公历</translation>
++    </message>
++    <message>
++        <source>monday</source>
++        <translation type="vanished">星期一</translation>
++    </message>
++    <message>
++        <source>sunday</source>
++        <translation type="vanished">星期日</translation>
++    </message>
++</context>
++<context>
++    <name>DateTime</name>
++    <message>
++        <source>DateTime</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>current date</source>
++        <translation type="vanished">当前时间</translation>
++    </message>
++    <message>
++        <source>Change timezone</source>
++        <translation type="vanished">修改时区</translation>
++        <extra-contents_path>/Date/Change time zone</extra-contents_path>
++    </message>
++    <message>
++        <source>timezone</source>
++        <translation type="vanished">时区</translation>
++    </message>
++    <message>
++        <source>Sync system time</source>
++        <translation type="vanished">同步系统时间</translation>
++    </message>
++    <message>
++        <source>Sync from network successful</source>
++        <translation type="vanished">时间同步成功</translation>
++    </message>
++    <message>
++        <source>Sync from network failed</source>
++        <translation type="vanished">时间同步失败</translation>
++    </message>
++    <message>
++        <source>Change time</source>
++        <translation type="vanished">手动更改时间</translation>
++    </message>
++    <message>
++        <source>Change time zone</source>
++        <translation type="vanished">更改时区</translation>
++    </message>
++    <message>
++        <source>Sync complete</source>
++        <translation type="vanished">同步完成</translation>
++    </message>
++    <message>
++        <source>datetime</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>Datetime</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>Dat</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="28"/>
++        <source>Date</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Current Date</source>
++        <translation type="vanished">当前时间</translation>
++    </message>
++    <message>
++        <source>Other Timezone</source>
++        <translation type="vanished">其他时区时间</translation>
++        <extra-contents_path>/Date/Other Timezone</extra-contents_path>
++    </message>
++    <message>
++        <source>24-hour clock</source>
++        <translation type="vanished">24小时制</translation>
++        <extra-contents_path>/Date/24-hour clock</extra-contents_path>
++    </message>
++    <message>
++        <source>Sync from network</source>
++        <translation type="obsolete">同步时间</translation>
++    </message>
++    <message>
++        <source>Add time zones to display the time, up to 5 can be added</source>
++        <translation type="vanished">添加时区以显示时间,最多可以添加5个</translation>
++    </message>
++    <message>
++        <source>Add time zones to display the time,only 5 can be added</source>
++        <translation type="vanished">添加时区,最多添加5个</translation>
++    </message>
++    <message>
++        <source>Sync Server</source>
++        <translation type="vanished">同步服务器</translation>
++        <extra-contents_path>/Date/Sync Server</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="341"/>
++        <source>Add Timezone</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source>Manual Time</source>
++        <translation type="vanished">手动设置时间</translation>
++        <extra-contents_path>/Date/Manual Time</extra-contents_path>
++    </message>
++    <message>
++        <source>Sync Time</source>
++        <translation type="vanished">自动同步时间</translation>
++        <extra-contents_path>/Date/Sync Time</extra-contents_path>
++    </message>
++    <message>
++        <source>Auto Sync Time</source>
++        <translation type="vanished">自动同步时间</translation>
++        <extra-contents_path>/Date/Auto Sync Time</extra-contents_path>
++    </message>
++    <message>
++        <source>Time Server</source>
++        <translation type="vanished">服务器</translation>
++    </message>
++    <message>
++        <source>Network</source>
++        <translation type="obsolete">网络</translation>
++    </message>
++    <message>
++        <source>Set Time</source>
++        <translation type="vanished">设置时间</translation>
++        <extra-contents_path>/Date/Set Time</extra-contents_path>
++    </message>
++    <message>
++        <source>Set Date Manually</source>
++        <translation type="vanished">手动设置日期</translation>
++    </message>
++    <message>
++        <source>Default</source>
++        <translation type="vanished">系统默认</translation>
++    </message>
++    <message>
++        <source>Customize</source>
++        <translation type="vanished">自定义</translation>
++    </message>
++    <message>
++        <source>Server Address</source>
++        <translation type="vanished">服务器地址</translation>
++    </message>
++    <message>
++        <source>Required</source>
++        <translation type="vanished">必需</translation>
++    </message>
++    <message>
++        <source>Save</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="201"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="343"/>
++        <source>Change Timezone</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Sync failed</source>
++        <translation type="vanished">同步失败</translation>
++    </message>
++    <message>
++        <source>AM </source>
++        <translation type="vanished">上午</translation>
++    </message>
++    <message>
++        <source>PM </source>
++        <translation type="vanished">下午</translation>
++    </message>
++    <message>
++        <source>Sync network time</source>
++        <translation type="vanished">同步网络时间</translation>
++    </message>
++    <message>
++        <source>change time</source>
++        <translation type="vanished">更改时间</translation>
++    </message>
++</context>
++<context>
++    <name>DatetimeUi</name>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="53"/>
++        <source>Sync Server</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Sync Server</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="75"/>
++        <source>Current Date</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Current Date</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="105"/>
++        <source>Timezone</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Timezone</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="111"/>
++        <source>Set Time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Set Time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
++        <source>Manual Time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Manual Time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
++        <source>Sync Time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Sync Time</extra-contents_path>
++    </message>
++    <message>
++        <source>Set Date Manually</source>
++        <translation type="vanished">手动设置日期</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="127"/>
++        <source>Set Time Manually</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Set Time Manually</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="162"/>
++        <source>Server Address</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
++        <source>Required</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="165"/>
++        <source>Save</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="169"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="313"/>
++        <source>Customize</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="197"/>
++        <source>Other Timezone</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Date/Other Timezone</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="269"/>
++        <source>MMMM d, yy ddd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
++        <source>MMMM dd, yyyy ddd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="302"/>
++        <source>Sync failed</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="312"/>
++        <source>Default</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>DefaultApp</name>
++    <message>
++        <source>defaultapp</source>
++        <translation type="vanished">默认应用</translation>
++    </message>
++    <message>
++        <source>Defaultapp</source>
++        <translation type="vanished">默认应用</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultapp.cpp" line="47"/>
++        <source>Default App</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultapp.cpp" line="172"/>
++        <source>No program available</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultapp.cpp" line="173"/>
++        <source>Choose default app</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Reset default apps to system recommended apps</source>
++        <translation type="vanished">将默认应用重置为系统推荐应用</translation>
++    </message>
++    <message>
++        <source>Reset</source>
++        <translation type="vanished">重置</translation>
++    </message>
++    <message>
++        <source>Browser</source>
++        <translation type="vanished">浏览器</translation>
++    </message>
++    <message>
++        <source>Mail</source>
++        <translation type="vanished">电子邮件</translation>
++    </message>
++    <message>
++        <source>Image Viewer</source>
++        <translation type="vanished">图像查看器</translation>
++    </message>
++    <message>
++        <source>Audio Player</source>
++        <translation type="vanished">音频播放器</translation>
++    </message>
++    <message>
++        <source>Video Player</source>
++        <translation type="vanished">视频播放器</translation>
++    </message>
++    <message>
++        <source>Text Editor</source>
++        <translation type="vanished">文档编辑器</translation>
++    </message>
++</context>
++<context>
++    <name>DefaultAppUi</name>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="17"/>
++        <source>DefaultAppWindow</source>
++        <comment>Select Default Application</comment>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Select Default Application</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="21"/>
++        <source>Browser</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Browser</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="23"/>
++        <source>Mail</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Mail</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="25"/>
++        <source>Image Viewer</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Image Viewer</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="27"/>
++        <source>Audio Player</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Audio Player</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="29"/>
++        <source>Video Player</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Video Player</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="31"/>
++        <source>Text Editor</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Text Editor</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="35"/>
++        <source>Reset default apps to system recommended apps</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Defaultapp/Reset default apps to system recommended apps</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="36"/>
++        <source>Reset</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>DefaultAppWindow</name>
++    <message>
++        <source>Select Default Application</source>
++        <translation type="vanished">默认应用</translation>
++    </message>
++    <message>
++        <source>Browser</source>
++        <translation type="vanished">浏览器</translation>
++    </message>
++    <message>
++        <source>Mail</source>
++        <translation type="vanished">电子邮件</translation>
++    </message>
++    <message>
++        <source>Image Viewer</source>
++        <translation type="vanished">图像查看器</translation>
++    </message>
++    <message>
++        <source>Audio Player</source>
++        <translation type="vanished">音频播放器</translation>
++    </message>
++    <message>
++        <source>Video Player</source>
++        <translation type="vanished">视频播放器</translation>
++    </message>
++    <message>
++        <source>Text Editor</source>
++        <translation type="vanished">文档编辑器</translation>
++    </message>
++    <message>
++        <source>Reset to default</source>
++        <translation type="vanished">恢复默认设置</translation>
++    </message>
++</context>
++<context>
++    <name>DefineGroupItem</name>
++    <message>
++        <source>Edit</source>
++        <translation type="vanished">编辑</translation>
++    </message>
++    <message>
++        <source>Del</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++</context>
++<context>
++    <name>DefineGroupItemIntel</name>
++    <message>
++        <source>Edit</source>
++        <translation type="vanished">编辑</translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++</context>
++<context>
++    <name>DefineShortcutItem</name>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++</context>
++<context>
++    <name>DelGroupDialog</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">删除用户组</translation>
++    </message>
++    <message>
++        <source>Are you sure to delete this group,
++which will make some file components
++in the file system invalid!</source>
++        <translation type="vanished">确定删除此用户组? 这将使得文件系统\n中的某些文件组件ID无效!</translation>
++    </message>
++    <message>
++        <source>Are you sure to delete the group:   </source>
++        <translation type="vanished">您确定要删除该组吗:</translation>
++    </message>
++    <message>
++        <source>which will make some file components in the file system invalid!</source>
++        <translation type="vanished">这将使文件系统中的某些文件组件无效!</translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>RemoveFile</source>
++        <translation type="vanished">删除文件</translation>
++    </message>
++    <message>
++        <source>Remind</source>
++        <translation type="vanished">提醒</translation>
++    </message>
++    <message>
++        <source>Are you sure to delete &quot;%1&quot; group,
++which will make some file components
++in the file system invalid!</source>
++        <translation type="vanished">确定删除&quot;%1&quot;组,这将使得文件系统
++中的某些文件组件ID无效!</translation>
++    </message>
++    <message>
++        <source>Delete user group</source>
++        <translation type="vanished">删除用户组</translation>
++    </message>
++    <message>
++        <source>Are you sure to delete the group, which will make some file components in the file system invalid!</source>
++        <translation type="vanished">确定删除该用户组,这将使得文件系统中的某些文件组件ID无效!</translation>
++    </message>
++</context>
++<context>
++    <name>DelGroupIntelDialog</name>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>RemoveFile</source>
++        <translation type="vanished">删除文件</translation>
++    </message>
++    <message>
++        <source>Remind</source>
++        <translation type="vanished">提醒</translation>
++    </message>
++</context>
++<context>
++    <name>DelUserDialog</name>
++    <message>
++        <source>Delete the user, belonging to the user&apos;s desktop,
++documents, favorites, music, pictures and video
++folder will be deleted!</source>
++        <translation type="vanished">删除用户,用户所属的桌面、文档、收藏夹、音乐、图片和视频文件夹中的内容将全部被删除!</translation>
++    </message>
++    <message>
++        <source>keep the user&apos;s data, like desktop,documents, favorites, music, pictures and so on</source>
++        <translation type="vanished">保留用户下所属的桌面、文件、收藏夹、音乐等文件</translation>
++    </message>
++    <message>
++        <source>delete whole data belong user</source>
++        <translation type="vanished">删除该用户所有文件</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source>KeepFile</source>
++        <translation type="vanished">保留文件</translation>
++    </message>
++    <message>
++        <source>RemoveFile</source>
++        <translation type="vanished">删除文件</translation>
++    </message>
++    <message>
++        <source>Delete the user &apos;</source>
++        <translation type="vanished">是否删除用户&apos;</translation>
++    </message>
++    <message>
++        <source>&apos;and:</source>
++        <translation type="vanished">&apos;同时:</translation>
++    </message>
++</context>
++<context>
++    <name>DelUserIntelDialog</name>
++    <message>
++        <source>   Delete</source>
++        <translation type="vanished">       删除用户</translation>
++    </message>
++    <message>
++        <source>Define</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Delete the user, belonging to the user&apos;s desktop documents, favorites, music, pictures and video folder will be deleted!</source>
++        <translation type="vanished">删除用户,用户所属的桌面、文档、收藏夹、音乐、图片和视频文件夹中的内容将全部被删除!</translation>
++    </message>
++</context>
++<context>
++    <name>DeleteUserExists</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="26"/>
++        <source>Delete User</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="39"/>
++        <source>Delete user &apos;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="40"/>
++        <source>&apos;? And:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="65"/>
++        <source>Keep desktop, files, favorites, music of the user</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Keep user&apos;s home folder</source>
++        <translation type="vanished">保留用户家目录</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="98"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
++        <source>Delete whole data belong user</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Desktop</name>
++    <message>
++        <source>Icon Show On Desktop</source>
++        <translation type="vanished">显示在桌面的图标</translation>
++    </message>
++    <message>
++        <source>Computerdesktop</source>
++        <translation type="vanished">计算机</translation>
++    </message>
++    <message>
++        <source>Trashdesktop</source>
++        <translation type="vanished">垃圾箱</translation>
++    </message>
++    <message>
++        <source>Homedesktop</source>
++        <translation type="vanished">家目录</translation>
++    </message>
++    <message>
++        <source>Volumedesktop</source>
++        <translation type="vanished">挂载卷</translation>
++    </message>
++    <message>
++        <source>Networkdesktop</source>
++        <translation type="vanished">网络</translation>
++    </message>
++    <message>
++        <source>Set Start Menu</source>
++        <translation type="vanished">设置开始菜单</translation>
++    </message>
++    <message>
++        <source>Always use the start menu in full screen</source>
++        <translation type="vanished">一直使用全屏&quot;开始&quot;菜单</translation>
++    </message>
++    <message>
++        <source>Icon Lock on Menu</source>
++        <translation type="vanished">锁定在开始菜单的图标</translation>
++    </message>
++    <message>
++        <source>Computermenu</source>
++        <translation type="vanished">计算机</translation>
++    </message>
++    <message>
++        <source>Trashmenu</source>
++        <translation type="vanished">回收站</translation>
++    </message>
++    <message>
++        <source>Filesystemmenu</source>
++        <translation type="vanished">个人</translation>
++    </message>
++    <message>
++        <source>Tray icon</source>
++        <translation type="vanished">显示在托盘上的图标</translation>
++    </message>
++    <message>
++        <source>Homemenu</source>
++        <translation type="vanished">家目录</translation>
++    </message>
++    <message>
++        <source>Settingmenu</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <source>Networkmenu</source>
++        <translation type="vanished">网络</translation>
++    </message>
++    <message>
++        <source>desktop</source>
++        <translation type="vanished">桌面</translation>
++    </message>
++    <message>
++        <source>Desktop</source>
++        <translation type="vanished">桌面</translation>
++    </message>
++</context>
++<context>
++    <name>DeviceInfoItem</name>
++    <message>
++        <source>Connect</source>
++        <translation type="vanished">连接</translation>
++    </message>
++    <message>
++        <source>Disconnect</source>
++        <translation type="vanished">断开</translation>
++    </message>
++    <message>
++        <source>Connecting</source>
++        <translation type="vanished">正在连接</translation>
++    </message>
++    <message>
++        <source>Disconnecting</source>
++        <translation type="vanished">正在断开</translation>
++    </message>
++    <message>
++        <source>Connected</source>
++        <translation type="vanished">已连接</translation>
++    </message>
++    <message>
++        <source>Ununited</source>
++        <translation type="vanished">已配对</translation>
++    </message>
++    <message>
++        <source>Connect fail</source>
++        <translation type="vanished">连接失败</translation>
++    </message>
++    <message>
++        <source>Send files</source>
++        <translation type="vanished">发送文件</translation>
++    </message>
++    <message>
++        <source>Remove</source>
++        <translation type="vanished">移除</translation>
++    </message>
++    <message>
++        <source>cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Sure to remove,</source>
++        <translation type="vanished">确定移除,</translation>
++    </message>
++    <message>
++        <source>After removal, the next connection requires matching PIN code!</source>
++        <translation type="vanished">移除后,下次连接需重新配对PIN码!</translation>
++    </message>
++    <message>
++        <source>Device connected</source>
++        <translation type="vanished">设备连接</translation>
++    </message>
++    <message>
++        <source>Device not connected</source>
++        <translation type="vanished">设备未连接</translation>
++    </message>
++</context>
++<context>
++    <name>DeviceType</name>
++    <message>
++        <source>FingerPrint</source>
++        <translation type="vanished">指纹</translation>
++    </message>
++    <message>
++        <source>FingerVein</source>
++        <translation type="vanished">指静脉</translation>
++    </message>
++    <message>
++        <source>Iris</source>
++        <translation type="vanished">虹膜</translation>
++    </message>
++    <message>
++        <source>Face</source>
++        <translation type="vanished">人脸</translation>
++    </message>
++    <message>
++        <source>VoicePrint</source>
++        <translation type="vanished">声纹</translation>
++    </message>
++</context>
++<context>
++    <name>Dialog_login_reg</name>
++    <message>
++        <source>Sign in</source>
++        <translation type="vanished">登录</translation>
++    </message>
++    <message>
++        <source>Sign up</source>
++        <translation type="vanished">注册云账户</translation>
++    </message>
++    <message>
++        <source>Login in progress</source>
++        <translation type="vanished">登录中</translation>
++    </message>
++    <message>
++        <source>Error code:</source>
++        <translation type="vanished">错误代码:</translation>
++    </message>
++    <message>
++        <source>!</source>
++        <translation type="vanished">!</translation>
++    </message>
++    <message>
++        <source>Internal error occurring!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>Failed to sign up!</source>
++        <translation type="vanished">注册失败!</translation>
++    </message>
++    <message>
++        <source>Failed attempt to return value!</source>
++        <translation type="vanished">登录返回值异常!</translation>
++    </message>
++    <message>
++        <source>Check your connection!</source>
++        <translation type="vanished">登录失败或网络异常!</translation>
++    </message>
++    <message>
++        <source>Failed to get by phone!</source>
++        <translation type="vanished">手机获取验证码失败!</translation>
++    </message>
++    <message>
++        <source>Failed to get by user!</source>
++        <translation type="vanished">用户名获取验证码失败!</translation>
++    </message>
++    <message>
++        <source>Failed to reset password!</source>
++        <translation type="vanished">重置密码失败!</translation>
++    </message>
++    <message>
++        <source>Phone binding falied!</source>
++        <translation type="vanished">手机绑定失败!</translation>
++    </message>
++    <message>
++        <source>Please check your information!</source>
++        <translation type="vanished">缺少必要信息!</translation>
++    </message>
++    <message>
++        <source>Please check your account!</source>
++        <translation type="vanished">账户或密码错误!</translation>
++    </message>
++    <message>
++        <source>Failed due to server error!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>User existing!</source>
++        <translation type="vanished">用户名已存在!</translation>
++    </message>
++    <message>
++        <source>Phone number already in used!</source>
++        <translation type="vanished">手机号码已被使用!</translation>
++    </message>
++    <message>
++        <source>Please check your format!</source>
++        <translation type="vanished">手机号码格式错误!</translation>
++    </message>
++    <message>
++        <source>Your are reach the limit!</source>
++        <translation type="vanished">该手机当日接收短信次数达到上限!</translation>
++    </message>
++    <message>
++        <source>Please check your phone number!</source>
++        <translation type="vanished">手机号码其他错误!</translation>
++    </message>
++    <message>
++        <source>Please check your code!</source>
++        <translation type="vanished">手机验证码错误!</translation>
++    </message>
++    <message>
++        <source>Account doesn&apos;t exist!</source>
++        <translation type="vanished">用户名不存在!</translation>
++    </message>
++    <message>
++        <source>User has bound the phone!</source>
++        <translation type="vanished">用户已经绑定手机号!</translation>
++    </message>
++    <message>
++        <source>Sending code error occurring!</source>
++        <translation type="vanished">发送验证码异常!</translation>
++    </message>
++    <message>
++        <source>Your code is wrong!</source>
++        <translation type="vanished">验证码错误!</translation>
++    </message>
++    <message>
++        <source>Binding Phone</source>
++        <translation type="vanished">绑定手机</translation>
++    </message>
++    <message>
++        <source>Bind now</source>
++        <translation type="vanished">绑定</translation>
++    </message>
++    <message>
++        <source>Resend ( %1 )</source>
++        <translation type="vanished">重新发送(%1)</translation>
++    </message>
++    <message>
++        <source>Get phone code</source>
++        <translation type="vanished">获取绑定手机验证码</translation>
++    </message>
++    <message>
++        <source>Send</source>
++        <translation type="vanished">发送验证码</translation>
++    </message>
++    <message>
++        <source>At least 6 bit, include letters and digt</source>
++        <translation type="obsolete">至少六位,包含大小写字母、数字</translation>
++    </message>
++    <message>
++        <source>Please check your password!</source>
++        <translation type="vanished">两次密码设置不一致!</translation>
++    </message>
++    <message>
++        <source>Sign in Cloud</source>
++        <translation type="vanished">登录云账户</translation>
++    </message>
++    <message>
++        <source>Forget</source>
++        <translation type="vanished">忘记密码</translation>
++    </message>
++    <message>
++        <source>Set</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <source>Back</source>
++        <translation type="vanished">返回登录</translation>
++    </message>
++    <message>
++        <source>Create Account</source>
++        <translation type="vanished">注册云账户</translation>
++    </message>
++    <message>
++        <source>Sign up now</source>
++        <translation type="vanished">立即注册</translation>
++    </message>
++</context>
++<context>
++    <name>DigitalAuthIntelDialog</name>
++    <message>
++        <source>Enter Old Password</source>
++        <translation type="vanished">请输入旧密码</translation>
++    </message>
++    <message>
++        <source>Forget Password?</source>
++        <translation type="vanished">忘记密码?</translation>
++    </message>
++    <message>
++        <source>Input New Password</source>
++        <translation type="vanished">设置新密码</translation>
++    </message>
++    <message>
++        <source>Input Password</source>
++        <translation type="vanished">输入密码</translation>
++    </message>
++    <message>
++        <source>The password input is error</source>
++        <translation type="vanished">密码输入错误</translation>
++    </message>
++    <message>
++        <source>Confirm New Password</source>
++        <translation type="vanished">确认新密码</translation>
++    </message>
++    <message>
++        <source>The password input is inconsistent</source>
++        <translation type="vanished">两次密码输入不一致,请重设</translation>
++    </message>
++    <message>
++        <source>New password can not be consistent of old password</source>
++        <translation type="vanished">新密码与旧密码不能一致</translation>
++    </message>
++    <message>
++        <source>Password Change Failed</source>
++        <translation type="vanished">修改密码失败</translation>
++    </message>
++</context>
++<context>
++    <name>DigitalPhoneIntelDialog</name>
++    <message>
++        <source>Please Enter Edu OS Password</source>
++        <translation type="vanished">请输入Edu OS密码</translation>
++    </message>
++    <message>
++        <source>The password input is error</source>
++        <translation type="vanished">密码输入错误</translation>
++    </message>
++</context>
++<context>
++    <name>DisplayPerformanceDialog</name>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="26"/>
++        <source>Dialog</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="214"/>
++        <source>Display Advanced Settings</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="297"/>
++        <source>Performance</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="376"/>
++        <source>Applicable to machine with discrete graphics, which can accelerate the rendering of 3D graphics.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="392"/>
++        <source>(Note: not support connect graphical with xmanager on windows.)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="462"/>
++        <source>Compatible</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="538"/>
++        <source>Applicable to machine with integrated graphics,  there is no 3D graphics acceleration. </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="554"/>
++        <source>(Note: need connect graphical with xmanager on windows, use this option.)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="624"/>
++        <source>Automatic</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="700"/>
++        <source>Auto select according to environment, delay the login time (about 0.5 sec).</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="721"/>
++        <source>Threshold:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="744"/>
++        <source>Apply</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="757"/>
++        <source>Reset</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="772"/>
++        <source>(Note: select this option to use 3D graphics acceleration and xmanager.)</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>DisplaySet</name>
++    <message>
++        <source>display</source>
++        <translation type="vanished">显示器</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/display.cpp" line="36"/>
++        <source>Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/display.cpp" line="38"/>
++        <source>Display</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>DisplayWindow</name>
++    <message>
++        <source>monitor</source>
++        <translation type="vanished">显示器</translation>
++    </message>
++    <message>
++        <source>set as home screen</source>
++        <translation type="vanished">设为主屏</translation>
++    </message>
++    <message>
++        <source>close monitor</source>
++        <translation type="vanished">关闭显示器</translation>
++    </message>
++    <message>
++        <source>unify output</source>
++        <translation type="vanished">统一输出</translation>
++    </message>
++    <message>
++        <source>open monitor</source>
++        <translation type="vanished">打开显示器</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/display.ui" line="14"/>
++        <source>Form</source>
++        <translation></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/display.ui" line="32"/>
++        <source>Display</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>as main</source>
++        <translation type="vanished">设为主屏</translation>
++    </message>
++    <message>
++        <source>screen zoom</source>
++        <translation type="vanished">缩放屏幕</translation>
++    </message>
++    <message>
++        <source>Advanced</source>
++        <translation type="vanished">高级显示</translation>
++    </message>
++    <message>
++        <source>screen brightness adjustment</source>
++        <translation type="vanished">调整屏幕亮度</translation>
++    </message>
++    <message>
++        <source>dark</source>
++        <translation type="vanished">暗</translation>
++    </message>
++    <message>
++        <source>bright</source>
++        <translation type="vanished">亮</translation>
++    </message>
++    <message>
++        <source>follow the sunrise and sunset(17:55-05:04)</source>
++        <translation type="vanished">跟随日落日出(17:55-05:04)</translation>
++    </message>
++    <message>
++        <source>custom time</source>
++        <translation type="vanished">自定义时间</translation>
++    </message>
++    <message>
++        <source>opening time</source>
++        <translation type="vanished">开启时间</translation>
++    </message>
++    <message>
++        <source>closing time</source>
++        <translation type="vanished">关闭时间</translation>
++    </message>
++    <message>
++        <source>color temperature</source>
++        <translation type="vanished">色温</translation>
++    </message>
++    <message>
++        <source>warm</source>
++        <translation type="vanished">暖</translation>
++    </message>
++    <message>
++        <source>cold</source>
++        <translation type="vanished">冷</translation>
++    </message>
++    <message>
++        <source>apply</source>
++        <translation type="vanished">应用</translation>
++    </message>
++    <message>
++        <source>Mirror Display</source>
++        <translation type="vanished">镜像模式</translation>
++    </message>
++</context>
++<context>
++    <name>DoubleClickTestLabel</name>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="60"/>
++        <source>double-click to test</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>EditGroupDialog</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">编辑用户组</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Edit User Group</source>
++        <translation type="vanished">编辑用户组</translation>
++    </message>
++    <message>
++        <source>Name</source>
++        <translation type="vanished">组名</translation>
++    </message>
++    <message>
++        <source>Id</source>
++        <translation type="vanished">组ID</translation>
++    </message>
++    <message>
++        <source>Members</source>
++        <translation type="vanished">组成员</translation>
++    </message>
++    <message>
++        <source>Tips</source>
++        <translation type="vanished">提示</translation>
++    </message>
++    <message>
++        <source>Invalid Id!</source>
++        <translation type="vanished">无效组ID!</translation>
++    </message>
++    <message>
++        <source>OK</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Edit user group</source>
++        <translation type="vanished">编辑用户组</translation>
++    </message>
++</context>
++<context>
++    <name>EditPassDialog</name>
++    <message>
++        <source>Edit Password</source>
++        <translation type="vanished">修改密码</translation>
++    </message>
++    <message>
++        <source>Your account here</source>
++        <translation type="vanished">请输入用户名</translation>
++    </message>
++    <message>
++        <source>Your password here</source>
++        <translation type="obsolete">输入密码</translation>
++    </message>
++    <message>
++        <source>Your new password here</source>
++        <translation type="vanished">新密码</translation>
++    </message>
++    <message>
++        <source>Your code here</source>
++        <translation type="vanished">输入验证码</translation>
++    </message>
++    <message>
++        <source>Your code</source>
++        <translation type="vanished">请输入验证码</translation>
++    </message>
++    <message>
++        <source>Get phone code</source>
++        <translation type="vanished">获取绑定手机验证码</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Confirm your new password</source>
++        <translation type="vanished">确认新密码</translation>
++    </message>
++    <message>
++        <source>At least 6 bit, include letters and digt</source>
++        <translation type="vanished">至少六位,包含大小写字母、数字</translation>
++    </message>
++    <message>
++        <source>Your password is valid!</source>
++        <translation type="vanished">您的密码是有效的!</translation>
++    </message>
++    <message>
++        <source>Please check your password!</source>
++        <translation type="vanished">两次密码设置不一致!</translation>
++    </message>
++    <message>
++        <source>Resend(</source>
++        <translation type="vanished">重新发送(</translation>
++    </message>
++    <message>
++        <source>)</source>
++        <translation type="vanished">)</translation>
++    </message>
++    <message>
++        <source>Send</source>
++        <translation type="vanished">发送验证码</translation>
++    </message>
++    <message>
++        <source>Success!</source>
++        <translation type="vanished">成功!</translation>
++    </message>
++    <message>
++        <source>Reback sign in</source>
++        <translation type="vanished">重新登录</translation>
++    </message>
++    <message>
++        <source>Error code:</source>
++        <translation type="vanished">错误代码:</translation>
++    </message>
++    <message>
++        <source>!</source>
++        <translation type="vanished">!</translation>
++    </message>
++    <message>
++        <source>Internal error occurring!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>Failed to sign up!</source>
++        <translation type="vanished">注册失败!</translation>
++    </message>
++    <message>
++        <source>Failed attempt to return value!</source>
++        <translation type="vanished">尝试获取返回值失败!</translation>
++    </message>
++    <message>
++        <source>Check your connection!</source>
++        <translation type="vanished">登录失败或网络异常!</translation>
++    </message>
++    <message>
++        <source>Failed to get by phone!</source>
++        <translation type="vanished">手机获取验证码失败!</translation>
++    </message>
++    <message>
++        <source>Failed to get by user!</source>
++        <translation type="vanished">用户名获取验证码失败!</translation>
++    </message>
++    <message>
++        <source>Failed to reset password!</source>
++        <translation type="vanished">重置密码失败!</translation>
++    </message>
++    <message>
++        <source>Please check your information!</source>
++        <translation type="vanished">缺少必要信息!</translation>
++    </message>
++    <message>
++        <source>Please check your account!</source>
++        <translation type="vanished">账户或密码错误!</translation>
++    </message>
++    <message>
++        <source>Failed due to server error!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>User existing!</source>
++        <translation type="vanished">用户名已存在!</translation>
++    </message>
++    <message>
++        <source>Phone number already in used!</source>
++        <translation type="vanished">手机号码已被使用!</translation>
++    </message>
++    <message>
++        <source>Please check your format!</source>
++        <translation type="vanished">手机号码格式错误!</translation>
++    </message>
++    <message>
++        <source>Your are reach the limit!</source>
++        <translation type="vanished">该手机当日接收短信次数达到上限!</translation>
++    </message>
++    <message>
++        <source>Please check your phone number!</source>
++        <translation type="vanished">手机号码其他错误!</translation>
++    </message>
++    <message>
++        <source>Please check your code!</source>
++        <translation type="vanished">手机验证码错误!</translation>
++    </message>
++    <message>
++        <source>Account doesn&apos;t exist!</source>
++        <translation type="vanished">用户名不存在!</translation>
++    </message>
++    <message>
++        <source>Sending code error occurring!</source>
++        <translation type="vanished">发送验证码异常!</translation>
++    </message>
++</context>
++<context>
++    <name>EditPushButton</name>
++    <message>
++        <source>Reset</source>
++        <translation type="vanished">重置密码</translation>
++    </message>
++</context>
++<context>
++    <name>ExperiencePlan</name>
++    <message>
++        <source>User Experience</source>
++        <translation type="vanished">用户体验</translation>
++    </message>
++    <message>
++        <source>Join in user Experience plan</source>
++        <translation type="vanished">加入用户体验计划</translation>
++    </message>
++    <message>
++        <source>User experience plan terms, see</source>
++        <translation type="vanished">用户体验计划条款,参见</translation>
++    </message>
++    <message>
++        <source>《User Experience plan》</source>
++        <translation type="vanished">《用户体验计划》</translation>
++    </message>
++    <message>
++        <source>experienceplan</source>
++        <translation type="vanished">体验计划</translation>
++    </message>
++    <message>
++        <source>Experienceplan</source>
++        <translation type="vanished">体验计划</translation>
++    </message>
++</context>
++<context>
++    <name>Fonts</name>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.ui" line="50"/>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="46"/>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="121"/>
++        <source>Fonts</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Fonts/Fonts</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.ui" line="264"/>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="125"/>
++        <source>Fonts select</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Fonts/Fonts select</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.ui" line="146"/>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="123"/>
++        <source>Font size</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Fonts/Font size</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.ui" line="370"/>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="127"/>
++        <source>Mono font</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Fonts/Mono font</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.ui" line="421"/>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="129"/>
++        <source>Reset to default</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Fonts/Reset to default</extra-contents_path>
++    </message>
++    <message>
++        <source>Gtk default font</source>
++        <translation type="vanished">通用字体</translation>
++    </message>
++    <message>
++        <source>Document font</source>
++        <translation type="vanished">文档字体</translation>
++    </message>
++    <message>
++        <source>Monospace font</source>
++        <translation type="vanished">等宽字体</translation>
++    </message>
++    <message>
++        <source>Advanced settings</source>
++        <translation type="vanished">高级设置</translation>
++    </message>
++    <message>
++        <source>Peony font</source>
++        <translation type="vanished">桌面字体</translation>
++    </message>
++    <message>
++        <source>titlebar font</source>
++        <translation type="vanished">标题字体</translation>
++    </message>
++    <message>
++        <source>Select text sample that looks clearest</source>
++        <translation type="vanished">选择看起来清晰的字体效果</translation>
++    </message>
++    <message>
++        <source>fonts</source>
++        <translation type="vanished">字体</translation>
++    </message>
++    <message>
++        <source>11</source>
++        <translation type="vanished">11</translation>
++    </message>
++    <message>
++        <source>12</source>
++        <translation type="vanished">12</translation>
++    </message>
++    <message>
++        <source>13</source>
++        <translation type="vanished">13</translation>
++    </message>
++    <message>
++        <source>14</source>
++        <translation type="vanished">14</translation>
++    </message>
++    <message>
++        <source>16</source>
++        <translation type="vanished">16</translation>
++    </message>
++    <message>
++        <source>Thanks For Using The ukcc</source>
++        <translation type="vanished">欢迎使用设置</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="142"/>
++        <source>Small</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="146"/>
++        <source>Large</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>FrameItem</name>
++    <message>
++        <source>Sync failed, please login out to retry!</source>
++        <translation type="vanished">同步失败,请检查网络或退出云账户重试!</translation>
++    </message>
++    <message>
++        <source>Change configuration file failed, please login out to retry!</source>
++        <translation type="vanished">配置文件更改失败,请检查网络或退出云账户重试!</translation>
++    </message>
++    <message>
++        <source>Configuration file not exist, please login out to retry!</source>
++        <translation type="vanished">配置文件不存在,请检查网络或退出云账户重试!</translation>
++    </message>
++    <message>
++        <source>Cloud verifyed file download failed, please login out to retry!</source>
++        <translation type="vanished">云校验失败,请检查网络或退出云账户重试!</translation>
++    </message>
++    <message>
++        <source>OSS access failed, please login out to retry!</source>
++        <translation type="vanished">文件存储访问失败,请检查网络或退出云账户重试!</translation>
++    </message>
++    <message>
++        <source>Sync failed, please retry or login out to get a better experience!</source>
++        <translation type="vanished">同步失败,建议重试或者重新登录来获取最佳体验!</translation>
++    </message>
++    <message>
++        <source>Change configuration file failed, please retry or login out to get a better experience!</source>
++        <translation type="vanished">配置文件设置失败,建议重试或者重新登录来获取最佳体验!</translation>
++    </message>
++    <message>
++        <source>Configuration file not exist, please retry or login out to get a better experience!</source>
++        <translation type="vanished">配置文件不存在,建议重试或者重新登录来获取最佳体验!</translation>
++    </message>
++    <message>
++        <source>Cloud verifyed file download failed, please retry or login out to get a better experience!</source>
++        <translation type="vanished">云端校验失败,建议重试或者重新登录来获取最佳体验!</translation>
++    </message>
++    <message>
++        <source>OSS access failed, please retry or login out to get a better experience!</source>
++        <translation type="vanished">文件存储访问失败,建议重试或者重新登录来获取最佳体验!</translation>
++    </message>
++    <message>
++        <source>Sync failed,please relogin!</source>
++        <translation type="vanished">同步失败,请重新登录!</translation>
++    </message>
++    <message>
++        <source>Change configuration file failed,please relogin!</source>
++        <translation type="vanished">修改配置文件失败,请重新登录!</translation>
++    </message>
++    <message>
++        <source>Configuration file not exist,please relogin!</source>
++        <translation type="vanished">配置文件不存在,请重试!</translation>
++    </message>
++    <message>
++        <source>Cloud verifyed file download failed,please relogin!</source>
++        <translation type="vanished">云文件验证失败,请重试!</translation>
++    </message>
++    <message>
++        <source>OSS access failed,please relogin!</source>
++        <translation type="vanished">连接失败,请重试或重新登录!</translation>
++    </message>
++</context>
++<context>
++    <name>Gesture</name>
++    <message>
++        <source>Gesture</source>
++        <translatorcomment>手势</translatorcomment>
++        <translation type="obsolete">手势</translation>
++    </message>
++</context>
++<context>
++    <name>GrubVerify</name>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="24"/>
++        <source>Grub verify</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="29"/>
++        <source>User:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="42"/>
++        <source>Pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="85"/>
++        <source>Sure Pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="138"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="142"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="197"/>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="235"/>
++        <source>Inconsistency with pwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="225"/>
++        <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="303"/>
++        <source>pwd cannot be empty!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>sure pwd cannot be empty!</source>
++        <translation type="vanished">确认密码不能为空!</translation>
++    </message>
++</context>
++<context>
++    <name>HistoryUpdateListWig</name>
++    <message>
++        <source>Success</source>
++        <translation type="vanished">更新成功</translation>
++    </message>
++    <message>
++        <source>Failed</source>
++        <translation type="vanished">更新失败</translation>
++    </message>
++</context>
++<context>
++    <name>HostNameDialog</name>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="17"/>
++        <source>Set HostName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="47"/>
++        <source>HostName</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="68"/>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="115"/>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="118"/>
++        <source>Must be 1-64 characters long</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="87"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="82"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="188"/>
++        <source>Hostname must start or end with a number and a letter</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="199"/>
++        <source>Hostname cannot have consecutive &apos; - &apos; and &apos; . &apos;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="206"/>
++        <source>Hostname cannot have consecutive &apos; . &apos;</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>InputPwdDialog</name>
++    <message>
++        <source>Set Password</source>
++        <translation type="vanished">设置密码</translation>
++    </message>
++    <message>
++        <source>Password can not be blank</source>
++        <translation type="vanished">密码不能为空</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="92"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Set</source>
++        <translation type="vanished">系统设置</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="39"/>
++        <source>VNC password</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="57"/>
++        <source>Password</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="75"/>
++        <source>Must be 1-8 characters long</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="98"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>less than or equal to 8</source>
++        <translation type="vanished">密码长度需要小于等于8</translation>
++    </message>
++</context>
++<context>
++    <name>ItemList</name>
++    <message>
++        <source>Walpaper</source>
++        <translation type="vanished">桌面壁纸</translation>
++    </message>
++    <message>
++        <source>ScreenSaver</source>
++        <translation type="vanished">屏保</translation>
++    </message>
++    <message>
++        <source>Menu</source>
++        <translation type="vanished">开始菜单</translation>
++    </message>
++    <message>
++        <source>Quick Start</source>
++        <translation type="vanished">快速启动项</translation>
++    </message>
++    <message>
++        <source>Avatar</source>
++        <translation type="vanished">头像</translation>
++    </message>
++    <message>
++        <source>Tab</source>
++        <translation type="vanished">任务栏</translation>
++    </message>
++    <message>
++        <source>Font</source>
++        <translation type="vanished">字体</translation>
++    </message>
++    <message>
++        <source>Wallpaper</source>
++        <translation type="vanished">桌面背景</translation>
++    </message>
++    <message>
++        <source>Themes</source>
++        <translation type="vanished">主题</translation>
++    </message>
++    <message>
++        <source>Area</source>
++        <translation type="vanished">区域语言</translation>
++    </message>
++    <message>
++        <source>Date/Time</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>Default Open</source>
++        <translation type="vanished">默认打开方式</translation>
++    </message>
++    <message>
++        <source>Notice</source>
++        <translation type="vanished">侧边栏</translation>
++    </message>
++    <message>
++        <source>Option</source>
++        <translation type="vanished">登录选项</translation>
++    </message>
++    <message>
++        <source>Peony</source>
++        <translation type="vanished">文件管理器</translation>
++    </message>
++    <message>
++        <source>Weather</source>
++        <translation type="vanished">天气</translation>
++    </message>
++    <message>
++        <source>Media</source>
++        <translation type="vanished">影音</translation>
++    </message>
++    <message>
++        <source>Boot</source>
++        <translation type="vanished">开机启动项</translation>
++    </message>
++    <message>
++        <source>Power</source>
++        <translation type="vanished">电源</translation>
++    </message>
++    <message>
++        <source>Editor</source>
++        <translation type="vanished">文本编辑器</translation>
++    </message>
++    <message>
++        <source>Terminal</source>
++        <translation type="vanished">终端</translation>
++    </message>
++    <message>
++        <source>Mouse</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>TouchPad</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>KeyBoard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++    <message>
++        <source>ShortCut</source>
++        <translation type="vanished">快捷键</translation>
++    </message>
++</context>
++<context>
++    <name>KbPreviewFrame</name>
++    <message>
++        <source>Keyboard Preview</source>
++        <translation type="obsolete">布局预览</translation>
++    </message>
++    <message>
++        <source>No preview found</source>
++        <translation type="vanished">无预览</translation>
++    </message>
++    <message>
++        <source>Unable to open Preview !</source>
++        <translation type="vanished">无法打开预览!</translation>
++    </message>
++</context>
++<context>
++    <name>KbdLayoutManager</name>
++    <message>
++        <source>C</source>
++        <translation type="vanished">按国家</translation>
++    </message>
++    <message>
++        <source>L</source>
++        <translation type="vanished">按语言</translation>
++    </message>
++    <message>
++        <source>Variant</source>
++        <translation type="vanished">变体</translation>
++    </message>
++    <message>
++        <source>Add</source>
++        <translation type="vanished">添加</translation>
++    </message>
++    <message>
++        <source>Add Layout</source>
++        <translation type="vanished">添加布局</translation>
++    </message>
++    <message>
++        <source>Del</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source>Keyboard Preview</source>
++        <translation type="vanished">布局预览</translation>
++    </message>
++</context>
++<context>
++    <name>KeyValueConverter</name>
++    <message>
++        <source>system</source>
++        <translation type="vanished">系统</translation>
++    </message>
++    <message>
++        <source>devices</source>
++        <translation type="vanished">设备</translation>
++    </message>
++    <message>
++        <source>personalized</source>
++        <translation type="vanished">个性化</translation>
++    </message>
++    <message>
++        <source>network</source>
++        <translation type="vanished">网络</translation>
++    </message>
++    <message>
++        <source>account</source>
++        <translation type="vanished">账户</translation>
++    </message>
++    <message>
++        <source>datetime</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>update</source>
++        <translation type="vanished">更新和备份</translation>
++    </message>
++    <message>
++        <source>messages</source>
++        <translation type="vanished">通知关于</translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="46"/>
++        <source>System</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="49"/>
++        <source>Devices</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="55"/>
++        <source>Personalized</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="52"/>
++        <source>Network</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="58"/>
++        <source>Account</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="61"/>
++        <source>Datetime</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="64"/>
++        <source>Update</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="67"/>
++        <source>Security</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="70"/>
++        <source>Application</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="73"/>
++        <source>Investigation</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../utils/keyvalueconverter.cpp" line="76"/>
++        <source>Commoninfo</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Search</source>
++        <translation type="vanished">搜索</translation>
++    </message>
++    <message>
++        <source>Messages</source>
++        <translation type="vanished">通知关于</translation>
++    </message>
++</context>
++<context>
++    <name>KeyboardControl</name>
++    <message>
++        <source>Keys Settings</source>
++        <translation type="vanished">通用设置</translation>
++    </message>
++    <message>
++        <source>Enable repeat key</source>
++        <translation type="vanished">启用按键重复设置</translation>
++    </message>
++    <message>
++        <source>Delay</source>
++        <translation type="vanished">延迟</translation>
++    </message>
++    <message>
++        <source>Short</source>
++        <translation type="vanished">短</translation>
++    </message>
++    <message>
++        <source>Long</source>
++        <translation type="vanished">长</translation>
++    </message>
++    <message>
++        <source>Speed</source>
++        <translation type="vanished">速度</translation>
++    </message>
++    <message>
++        <source>Slow</source>
++        <translation type="vanished">慢</translation>
++    </message>
++    <message>
++        <source>Fast</source>
++        <translation type="vanished">快</translation>
++    </message>
++    <message>
++        <source>Input characters to test the repetition effect:</source>
++        <translation type="vanished">输入字符测试重复效果:</translation>
++    </message>
++    <message>
++        <source>Input Settings</source>
++        <translation type="vanished">输入法设置</translation>
++    </message>
++    <message>
++        <source>Input Set</source>
++        <translation type="vanished">输入法设置</translation>
++    </message>
++    <message>
++        <source>Input settings</source>
++        <translation type="vanished">输入法设置</translation>
++    </message>
++    <message>
++        <source>Input characters to test the repetition effect:</source>
++        <translation type="vanished">输入字符测试重复效果:</translation>
++    </message>
++    <message>
++        <source>Tip of keyboard</source>
++        <translation type="vanished">启用按键提示</translation>
++    </message>
++    <message>
++        <source>reset default layout</source>
++        <translation type="vanished">恢复默认布局</translation>
++    </message>
++    <message>
++        <source>Reset layout</source>
++        <translation type="vanished">重置布局</translation>
++    </message>
++    <message>
++        <source>Message of capslock</source>
++        <translation type="vanished">大写锁定提示</translation>
++    </message>
++    <message>
++        <source>Enable numlock</source>
++        <translation type="vanished">小键盘开启提示</translation>
++    </message>
++    <message>
++        <source>Keyboard Layout</source>
++        <translation type="vanished">键盘布局</translation>
++    </message>
++    <message>
++        <source>Keyboard layout</source>
++        <translation type="vanished">键盘布局</translation>
++    </message>
++    <message>
++        <source>Install layouts</source>
++        <translation type="vanished">安装其他布局</translation>
++    </message>
++    <message>
++        <source>keyboard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++    <message>
++        <source>Keyboard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++</context>
++<context>
++    <name>KeyboardMain</name>
++    <message>
++        <source>Key board settings</source>
++        <translation type="vanished">键盘设置</translation>
++    </message>
++    <message>
++        <source>Input method settings</source>
++        <translation type="vanished">输入法设置</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardmain.cpp" line="25"/>
++        <source>Keyboard</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Short</source>
++        <translation type="vanished">短</translation>
++    </message>
++    <message>
++        <source>Long</source>
++        <translation type="vanished">长</translation>
++    </message>
++    <message>
++        <source>Slow</source>
++        <translation type="vanished">慢</translation>
++    </message>
++    <message>
++        <source>Fast</source>
++        <translation type="vanished">快</translation>
++    </message>
++</context>
++<context>
++    <name>KeyboardPainter</name>
++    <message>
++        <source>Close</source>
++        <translation type="vanished">关闭</translation>
++    </message>
++    <message>
++        <source>Keyboard layout levels</source>
++        <translation type="vanished">键盘布局等级</translation>
++    </message>
++    <message>
++        <source>Level %1, %2</source>
++        <translation type="vanished">等级 %1 %2</translation>
++    </message>
++    <message>
++        <source>Keyboard Preview</source>
++        <translation type="vanished">布局预览</translation>
++    </message>
++</context>
++<context>
++    <name>KeyboardUi</name>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="24"/>
++        <source>Keyboard Settings</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Keyboard Settings</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="35"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
++        <source>Input Method</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Input Method</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="51"/>
++        <source>Virtual Keyboard</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Virtual Keyboard</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="106"/>
++        <source>Key repeat</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Key repeat</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="114"/>
++        <source>Delay</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Delay</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="117"/>
++        <source>Short</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="118"/>
++        <source>Long</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="130"/>
++        <source>Speed</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Speed</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="132"/>
++        <source>Slow</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="133"/>
++        <source>Fast</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="144"/>
++        <source>Input test</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Input test</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="152"/>
++        <source>Key tips</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Key tips</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="161"/>
++        <source>Input settings</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Input settings</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="168"/>
++        <source>Edit</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="175"/>
++        <source>Show icon on tray</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Show icon on tray</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="182"/>
++        <source>Show icon on desktop</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Show icon on desktop</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="189"/>
++        <source>Keyboard Size</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Keyboard Size</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="197"/>
++        <source>Text size</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Text size</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="199"/>
++        <source>Small</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="200"/>
++        <source>Medium</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="201"/>
++        <source>Large</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
++        <source>Animation</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Animation</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="214"/>
++        <source>Input sound effect</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Keyboard/Input sound effect</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>LanguageFrame</name>
++    <message>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="71"/>
++        <source>Delete</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="70"/>
++        <source>Input Settings</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>LayoutManager</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">更改时间</translation>
++    </message>
++    <message>
++        <source>Manager Keyboard Layout</source>
++        <translation type="vanished">管理键盘布局</translation>
++    </message>
++    <message>
++        <source>Language</source>
++        <translation type="vanished">语言</translation>
++    </message>
++    <message>
++        <source>Country</source>
++        <translation type="vanished">国家</translation>
++    </message>
++    <message>
++        <source>Variant</source>
++        <translation type="vanished">变体</translation>
++    </message>
++    <message>
++        <source>Layout installed</source>
++        <translation type="vanished">安装布局</translation>
++    </message>
++    <message>
++        <source>Preview</source>
++        <translation type="vanished">预览</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Install</source>
++        <translation type="vanished">安装</translation>
++    </message>
++</context>
++<context>
++    <name>LoginDialog</name>
++    <message>
++        <source>Forget</source>
++        <translation type="vanished">忘记密码</translation>
++    </message>
++    <message>
++        <source>Send</source>
++        <translation type="vanished">发送验证码</translation>
++    </message>
++    <message>
++        <source>User Sign in</source>
++        <translation type="vanished">帐号密码登录</translation>
++    </message>
++    <message>
++        <source>Quick Sign in</source>
++        <translation type="vanished">短信快捷登录</translation>
++    </message>
++    <message>
++        <source>Your account/phone here</source>
++        <translation type="vanished">请输入用户名/手机号码</translation>
++    </message>
++    <message>
++        <source>Your account here</source>
++        <translation type="vanished">请输入用户名</translation>
++    </message>
++    <message>
++        <source>Your phone number here</source>
++        <translation type="vanished">手机号码</translation>
++    </message>
++    <message>
++        <source>Your account/phone/email here</source>
++        <translation type="vanished">请输入用户名/手机号码/邮箱</translation>
++    </message>
++    <message>
++        <source>Your password here</source>
++        <translation type="vanished">输入密码</translation>
++    </message>
++    <message>
++        <source>Your code here</source>
++        <translation type="vanished">输入验证码</translation>
++    </message>
++</context>
++<context>
++    <name>MCodeWidget</name>
++    <message>
++        <source>SongTi</source>
++        <translation type="vanished">宋体</translation>
++    </message>
++</context>
++<context>
++    <name>MainDialog</name>
++    <message>
++        <source>Sign in</source>
++        <translation type="vanished">登录</translation>
++    </message>
++    <message>
++        <source>Sign up</source>
++        <translation type="vanished">注册云账户</translation>
++    </message>
++    <message>
++        <source>Login in progress</source>
++        <translation type="vanished">登录中</translation>
++    </message>
++    <message>
++        <source>Error code:</source>
++        <translation type="vanished">错误代码:</translation>
++    </message>
++    <message>
++        <source>!</source>
++        <translation type="vanished">!</translation>
++    </message>
++    <message>
++        <source>Internal error occurring!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>Internal error occurred!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>Failed to sign up!</source>
++        <translation type="vanished">注册失败!</translation>
++    </message>
++    <message>
++        <source>Failed attempt to return value!</source>
++        <translation type="vanished">返回值失败!</translation>
++    </message>
++    <message>
++        <source>Check your connection!</source>
++        <translation type="vanished">登录失败或网络异常!</translation>
++    </message>
++    <message>
++        <source>Failed to get by phone!</source>
++        <translation type="vanished">手机获取验证码失败!</translation>
++    </message>
++    <message>
++        <source>Failed to get by user!</source>
++        <translation type="vanished">用户名获取验证码失败!</translation>
++    </message>
++    <message>
++        <source>Failed to reset password!</source>
++        <translation type="vanished">重置密码失败!</translation>
++    </message>
++    <message>
++        <source>Timeout!</source>
++        <translation type="vanished">登录超时,请重新输入验证码登录!</translation>
++    </message>
++    <message>
++        <source>Phone binding falied!</source>
++        <translation type="vanished">手机绑定失败!</translation>
++    </message>
++    <message>
++        <source>Please check your information!</source>
++        <translation type="vanished">缺少必要信息!</translation>
++    </message>
++    <message>
++        <source>Please check your account!</source>
++        <translation type="vanished">账户或密码错误!</translation>
++    </message>
++    <message>
++        <source>Failed due to server error!</source>
++        <translation type="vanished">服务器错误!</translation>
++    </message>
++    <message>
++        <source>User and passsword can&apos;t be empty!</source>
++        <translation type="vanished">用户以及密码不能为空!</translation>
++    </message>
++    <message>
++        <source>User existing!</source>
++        <translation type="vanished">用户名已存在!</translation>
++    </message>
++    <message>
++        <source>User doesn&apos;t exist!</source>
++        <translation type="vanished">用户不存在!</translation>
++    </message>
++    <message>
++        <source>Network can not reach!</source>
++        <translation type="vanished">网络不可达!</translation>
++    </message>
++    <message>
++        <source>Phone can&apos;t be empty!</source>
++        <translation type="vanished">手机号不能为空!</translation>
++    </message>
++    <message>
++        <source>Account or password error!</source>
++        <translation type="vanished">账户或密码错误!</translation>
++    </message>
++    <message>
++        <source>Phone number already in used!</source>
++        <translation type="vanished">手机号码已被使用!</translation>
++    </message>
++    <message>
++        <source>Please check your format!</source>
++        <translation type="vanished">手机号码格式错误!</translation>
++    </message>
++    <message>
++        <source>Your are reach the limit!</source>
++        <translation type="vanished">该手机当日接收短信次数达到上限!</translation>
++    </message>
++    <message>
++        <source>Please check your phone number!</source>
++        <translation type="vanished">手机号码其他错误!</translation>
++    </message>
++    <message>
++        <source>Please check your code!</source>
++        <translation type="vanished">手机验证码错误!</translation>
++    </message>
++    <message>
++        <source>Account doesn&apos;t exist!</source>
++        <translation type="vanished">用户名不存在!</translation>
++    </message>
++    <message>
++        <source>User has bound the phone!</source>
++        <translation type="vanished">用户已经绑定手机号!</translation>
++    </message>
++    <message>
++        <source>Sending code error occurred!</source>
++        <translation type="vanished">发送验证码异常!</translation>
++    </message>
++    <message>
++        <source>Phone code is expired!</source>
++        <translation type="vanished">验证码过期!</translation>
++    </message>
++    <message>
++        <source>Phone code error!</source>
++        <translation type="vanished">验证码错误!</translation>
++    </message>
++    <message>
++        <source>Code can not be empty!</source>
++        <translation type="vanished">图片验证码不能为空!</translation>
++    </message>
++    <message>
++        <source>MCode can not be empty!</source>
++        <translation type="vanished">手机验证码不能为空!</translation>
++    </message>
++    <message>
++        <source>Sending code error occurring!</source>
++        <translation type="vanished">发送验证码异常!</translation>
++    </message>
++    <message>
++        <source>Your code is wrong!</source>
++        <translation type="vanished">验证码错误!</translation>
++    </message>
++    <message>
++        <source>Please check your phone!</source>
++        <translation type="vanished">请检查您的手机号码格式!</translation>
++    </message>
++    <message>
++        <source>Please check your password!</source>
++        <translation type="vanished">两次密码设置不一致!</translation>
++    </message>
++    <message>
++        <source>At least 6 bit, include letters and digt</source>
++        <translation type="vanished">至少六位,包含大小写字母、数字</translation>
++    </message>
++    <message>
++        <source>Sign in Cloud</source>
++        <translation type="vanished">登录云账户</translation>
++    </message>
++    <message>
++        <source>Forget</source>
++        <translation type="vanished">忘记密码</translation>
++    </message>
++    <message>
++        <source>Set</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <source>Back</source>
++        <translation type="vanished">返回登录</translation>
++    </message>
++    <message>
++        <source>Create Account</source>
++        <translation type="vanished">注册云账户</translation>
++    </message>
++    <message>
++        <source>Sign up now</source>
++        <translation type="vanished">立即注册</translation>
++    </message>
++    <message>
++        <source>Please confirm your password!</source>
++        <translation type="vanished">两次密码输入不一致!</translation>
++    </message>
++    <message>
++        <source>Resend ( %1 )</source>
++        <translation type="vanished">重新发送(%1)</translation>
++    </message>
++    <message>
++        <source>Get</source>
++        <translation type="vanished">获取验证码</translation>
++    </message>
++    <message>
++        <source>Get phone code</source>
++        <translation type="vanished">获取绑定手机验证码</translation>
++    </message>
++    <message>
++        <source>Send</source>
++        <translation type="vanished">发送验证码</translation>
++    </message>
++    <message>
++        <source>Binding Phone</source>
++        <translation type="vanished">绑定手机</translation>
++    </message>
++    <message>
++        <source>Please make sure your password is safety!</source>
++        <translation type="vanished">请确保您的密码符合要求!</translation>
++    </message>
++    <message>
++        <source>Bind now</source>
++        <translation type="vanished">绑定</translation>
++    </message>
++</context>
++<context>
++    <name>MainWidget</name>
++    <message>
++        <source>Disconnected</source>
++        <translation type="vanished">未连接</translation>
++    </message>
++    <message>
++        <source>Your account:%1</source>
++        <translation type="vanished">您的云账户:%1</translation>
++    </message>
++    <message>
++        <source>Unauthorized device or OSS falied.
++Please retry for login!</source>
++        <translation type="vanished">OSS访问失败,请检查您的网络后再登录!</translation>
++    </message>
++    <message>
++        <source>Exit</source>
++        <translation type="vanished">退出登录</translation>
++    </message>
++    <message>
++        <source>Sync</source>
++        <translation type="vanished">同步中</translation>
++    </message>
++    <message>
++        <source>Sign in</source>
++        <translation type="vanished">登录</translation>
++        <extra-contents_path>/networkaccount/Sign in</extra-contents_path>
++    </message>
++    <message>
++        <source>Enable item sync</source>
++        <translation type="vanished">开启单项同步</translation>
++    </message>
++    <message>
++        <source>Logout failed,please check your connection</source>
++        <translation type="vanished">登录失败,请检查你的网络连接</translation>
++    </message>
++    <message>
++        <source>Stop sync</source>
++        <translation type="vanished">结束同步</translation>
++    </message>
++    <message>
++        <source>Sync your settings</source>
++        <translation type="vanished">同步您的设置</translation>
++    </message>
++    <message>
++        <source>Your account:%1</source>
++        <translation type="vanished">您的云账户:%1</translation>
++    </message>
++    <message>
++        <source>Auto sync</source>
++        <translation type="vanished">自动同步</translation>
++    </message>
++    <message>
++        <source>Waitting for sync!</source>
++        <translation type="vanished">等待同步!</translation>
++    </message>
++    <message>
++        <source>Synchronize your personalized settings and data</source>
++        <translation type="vanished">同步您账户的数据以及个性化设置</translation>
++    </message>
++    <message>
++        <source>This operation may cover your settings!</source>
++        <translation type="vanished">该操作可能覆盖您现有的设置!</translation>
++    </message>
++    <message>
++        <source>The latest time sync is: </source>
++        <translation type="vanished">上次同步时间为: </translation>
++    </message>
++    <message>
++        <source>Waiting for initialization...</source>
++        <translation type="vanished">等待云账户初始化...</translation>
++    </message>
++    <message>
++        <source>Network can not reach!</source>
++        <translation type="vanished">网络不可达!</translation>
++    </message>
++    <message>
++        <source>The Cloud Account Service version is out of date!</source>
++        <translation type="vanished">云账户服务版本已经过期,请升级!</translation>
++    </message>
++    <message>
++        <source>KylinID open error!</source>
++        <translation type="vanished">麒麟ID客户端打开失败!</translation>
++    </message>
++    <message>
++        <source>Unauthorized device or OSS falied.
++Please retry or relogin!</source>
++        <translation type="vanished">设备凭证已过期,请重新登录!</translation>
++    </message>
++    <message>
++        <source>Authorization failed!</source>
++        <translation type="vanished">认证失败,请重新登录!</translation>
++    </message>
++    <message>
++        <source>Kylin Cloud Account</source>
++        <translation type="vanished">云账户</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/networkaccount/mainwidget.cpp" line="708"/>
++        <source></source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Cloud ID desktop message</source>
++        <translation type="vanished">云账户消息</translation>
++    </message>
++    <message>
++        <source>Synchronize your computer&apos;s settings into your cloud account here.</source>
++        <translation type="vanished">将本机的设置同步至云账户,通过云账户随时随地开启个性设置!</translation>
++    </message>
++    <message>
++        <source>Media</source>
++        <translation type="vanished">影音</translation>
++    </message>
++    <message>
++        <source>Weather</source>
++        <translation type="vanished">天气</translation>
++    </message>
++    <message>
++        <source>Sync downloading,please wait!</source>
++        <translation type="vanished">同步下载中,请稍后......!</translation>
++    </message>
++    <message>
++        <source>Sync uploading,please wait!</source>
++        <translation type="vanished">同步上传中,请稍后......!</translation>
++    </message>
++    <message>
++        <source>Sync failed, please check your internet connection or login out to retry!</source>
++        <translation type="vanished">同步失败,请检查您的网络连接或者登出再重试一次!</translation>
++    </message>
++    <message>
++        <source>%1,</source>
++        <translation type="vanished">%1,</translation>
++    </message>
++    <message>
++        <source>Synchronized failed: %1 please retry or login out to get a better experience.</source>
++        <translation type="vanished">同步失败:%1 请重试或者重新登录来获取最佳体验!</translation>
++    </message>
++    <message>
++        <source>%1</source>
++        <translation type="vanished">%1</translation>
++    </message>
++    <message>
++        <source>Synchronized failed: %1, please retry or login out to get a better experience.</source>
++        <translation type="vanished">同步失败:%1,请重试或者重新登录来获取最佳体验!</translation>
++    </message>
++</context>
++<context>
++    <name>MainWindow</name>
++    <message>
++        <source>Search</source>
++        <translation type="vanished">搜索</translation>
++    </message>
++    <message>
++        <source>UKCC</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="441"/>
++        <location filename="../../mainwindow.cpp" line="459"/>
++        <location filename="../../mainwindow.cpp" line="591"/>
++        <location filename="../../mainwindow.cpp" line="949"/>
++        <source>Settings</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="479"/>
++        <source>Option</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="480"/>
++        <source>Minimize</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Maximize/Normal</source>
++        <translation type="vanished">最大化/正常</translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="152"/>
++        <source>Warnning</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="170"/>
++        <source>Restore</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="173"/>
++        <location filename="../../mainwindow.cpp" line="481"/>
++        <source>Maximize</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="453"/>
++        <source>Back home</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="482"/>
++        <source>Close</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Help</source>
++        <translation type="vanished">帮助</translation>
++    </message>
++    <message>
++        <source>About</source>
++        <translation type="vanished">关于</translation>
++    </message>
++    <message>
++        <source>Exit</source>
++        <translation type="vanished">退出</translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="592"/>
++        <source>Version: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="731"/>
++        <source>Specified</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>ukcc</source>
++        <translation type="vanished">控制面板</translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="1082"/>
++        <source>Warning</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../mainwindow.cpp" line="152"/>
++        <location filename="../../mainwindow.cpp" line="1082"/>
++        <source>This function has been controlled</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Home</source>
++        <translation type="vanished">首页</translation>
++    </message>
++</context>
++<context>
++    <name>MessageBox</name>
++    <message>
++        <source>Attention</source>
++        <translation type="vanished">提示</translation>
++    </message>
++    <message>
++        <source>It takes effect after logging off</source>
++        <translation type="vanished">注销后即可生效</translation>
++    </message>
++    <message>
++        <source>Logout Now</source>
++        <translation type="vanished">立即注销</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Reboot Now</source>
++        <translation type="vanished">立即重启</translation>
++    </message>
++    <message>
++        <source>This cleanup and restore need to be done after the system restarts, whether to restart and restore immediately?</source>
++        <translation type="vanished">此次清空并还原需要在系统重新启动后进行,是否立即重启并还原?</translation>
++    </message>
++    <message>
++        <source>System Backup Tips</source>
++        <translation type="vanished">系统还原提示</translation>
++    </message>
++</context>
++<context>
++    <name>MessageBoxDialog</name>
++    <message>
++        <source>Message</source>
++        <translation type="vanished">信息</translation>
++    </message>
++    <message>
++        <source>You do not have administrator rights!</source>
++        <translation type="vanished">您没有管理员权限!</translation>
++    </message>
++    <message>
++        <source> Factory Settings cannot be restored!</source>
++        <translation type="vanished">不能恢复出厂设置!</translation>
++    </message>
++    <message>
++        <source>OK</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>MessageBoxPower</name>
++    <message>
++        <source>System Recovery</source>
++        <translation type="vanished">系统还原</translation>
++    </message>
++    <message>
++        <source>The battery is low,please connect the power</source>
++        <translation type="vanished">电池电量较低,请连接电源后再试</translation>
++    </message>
++    <message>
++        <source>Keep the power connection, or the power is more than 25%.</source>
++        <translation type="vanished">系统还原需保持电源连接,或在电量不低于25%时进行。</translation>
++    </message>
++    <message>
++        <source>Remind in 30 minutes</source>
++        <translation type="vanished">30分钟后提醒我</translation>
++    </message>
++    <message>
++        <source>Got it</source>
++        <translation type="vanished">知道了</translation>
++    </message>
++</context>
++<context>
++    <name>MessageBoxPowerIntel</name>
++    <message>
++        <source>Nothing has been entered, re-enter</source>
++        <translation type="vanished">未输入任何内容,请重新输入</translation>
++    </message>
++    <message>
++        <source>Remind in 30 minutes</source>
++        <translation type="vanished">30分钟后提醒我</translation>
++    </message>
++    <message>
++        <source>Got it</source>
++        <translation type="vanished">知道了</translation>
++    </message>
++</context>
++<context>
++    <name>MobileHotspot</name>
++    <message>
++        <source>MobileHotspot</source>
++        <translation type="vanished">移动热点</translation>
++    </message>
++</context>
++<context>
++    <name>MobileHotspotWidget</name>
++    <message>
++        <source>ukui control center</source>
++        <translation type="vanished">控制面板</translation>
++    </message>
++    <message>
++        <source>ukui control center desktop message</source>
++        <translation type="vanished">控制面板桌面通知</translation>
++    </message>
++    <message>
++        <source>start to close hotspot</source>
++        <translation type="vanished">开始关闭热点</translation>
++    </message>
++    <message>
++        <source>hotpots name or device is invalid</source>
++        <translation type="vanished">热点名称或设备错误</translation>
++    </message>
++    <message>
++        <source>can not  create hotspot with password length less than eight!</source>
++        <translation type="vanished">不能创建密码长度小于八位的热点!</translation>
++    </message>
++    <message>
++        <source>start to open hotspot </source>
++        <translation type="vanished">开始创建热点</translation>
++    </message>
++    <message>
++        <source>Hotspot</source>
++        <translation type="vanished">移动热点</translation>
++    </message>
++    <message>
++        <source>Open</source>
++        <translation type="vanished">开启</translation>
++    </message>
++    <message>
++        <source>Wi-Fi Name</source>
++        <translation type="vanished">Wi-Fi名称</translation>
++    </message>
++    <message>
++        <source>Password</source>
++        <translation type="vanished">网络密码</translation>
++    </message>
++    <message>
++        <source>Frequency band</source>
++        <translation type="vanished">网络频带</translation>
++    </message>
++    <message>
++        <source>Net card</source>
++        <translation type="vanished">共享网卡端口</translation>
++    </message>
++    <message>
++        <source>hotspot already close</source>
++        <translation type="vanished">热点已关闭</translation>
++    </message>
++    <message>
++        <source>hotspot already open</source>
++        <translation type="vanished">热点已开启</translation>
++    </message>
++</context>
++<context>
++    <name>Mouse</name>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouse.cpp" line="5"/>
++        <source>Mouse</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>MouseControl</name>
++    <message>
++        <source>Mouse Key Settings</source>
++        <translation type="vanished">鼠标键设置</translation>
++    </message>
++    <message>
++        <source>Hand habit</source>
++        <translation type="vanished">惯用手</translation>
++    </message>
++    <message>
++        <source>Pointer Settings</source>
++        <translation type="vanished">指针设置</translation>
++    </message>
++    <message>
++        <source>Speed</source>
++        <translation type="vanished">速度</translation>
++    </message>
++    <message>
++        <source>Slow</source>
++        <translation type="vanished">慢</translation>
++    </message>
++    <message>
++        <source>mouse wheel speed</source>
++        <translation type="vanished">鼠标滚轮速度</translation>
++    </message>
++    <message>
++        <source>Fast</source>
++        <translation type="vanished">快</translation>
++    </message>
++    <message>
++        <source>Doubleclick  delay</source>
++        <translation type="vanished">鼠标双击间隔时长</translation>
++    </message>
++    <message>
++        <source>Short</source>
++        <translation type="vanished">短</translation>
++    </message>
++    <message>
++        <source>Long</source>
++        <translation type="vanished">长</translation>
++    </message>
++    <message>
++        <source>Acceleration</source>
++        <translation type="vanished">鼠标加速</translation>
++    </message>
++    <message>
++        <source>Cursor weight</source>
++        <translation type="vanished">光标粗细</translation>
++    </message>
++    <message>
++        <source>Sensitivity</source>
++        <translation type="vanished">敏感度</translation>
++    </message>
++    <message>
++        <source>Low</source>
++        <translation type="vanished">低</translation>
++    </message>
++    <message>
++        <source>High</source>
++        <translation type="vanished">高</translation>
++    </message>
++    <message>
++        <source>Visibility</source>
++        <translation type="vanished">按Ctrl键显示指针位置</translation>
++    </message>
++    <message>
++        <source>Pointer size</source>
++        <translation type="vanished">指针大小</translation>
++    </message>
++    <message>
++        <source>Cursor Settings</source>
++        <translation type="vanished">光标设置</translation>
++    </message>
++    <message>
++        <source> Cursor weight</source>
++        <translation type="obsolete">光标粗细</translation>
++    </message>
++    <message>
++        <source>Thin</source>
++        <translation type="vanished">细</translation>
++    </message>
++    <message>
++        <source>Coarse</source>
++        <translation type="vanished">粗</translation>
++    </message>
++    <message>
++        <source>Cursor speed</source>
++        <translation type="vanished">光标速度</translation>
++    </message>
++    <message>
++        <source>Enable flashing on text area</source>
++        <translation type="vanished">启用文本区域的光标闪烁</translation>
++    </message>
++    <message>
++        <source>mouse</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>Mouse</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>Lefthand</source>
++        <translation type="vanished">左手</translation>
++    </message>
++    <message>
++        <source>Righthand</source>
++        <translation type="vanished">右手</translation>
++    </message>
++    <message>
++        <source>Default(Recommended)</source>
++        <translation type="vanished">默认(推荐)</translation>
++    </message>
++    <message>
++        <source>Medium</source>
++        <translation type="vanished">中等</translation>
++    </message>
++    <message>
++        <source>Large</source>
++        <translation type="vanished">较大</translation>
++    </message>
++</context>
++<context>
++    <name>MouseUI</name>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="91"/>
++        <source>Mouse</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Mouse</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="113"/>
++        <source>Pointer</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Pointer</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="136"/>
++        <source>Cursor</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Cursor</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="161"/>
++        <source>Dominant hand</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Dominant hand</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="163"/>
++        <source>Left key</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="164"/>
++        <source>Right key</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="175"/>
++        <source>Scroll direction</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Scroll direction</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="177"/>
++        <source>Forward</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="178"/>
++        <source>Reverse</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="188"/>
++        <source>Wheel speed</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Wheel speed</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="190"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="224"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="314"/>
++        <source>Slow</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="191"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="225"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="315"/>
++        <source>Fast</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="204"/>
++        <source>Double-click interval time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Double-click interval time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="206"/>
++        <source>Short</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="207"/>
++        <source>Long</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="222"/>
++        <source>Pointer speed</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Pointer speed</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="238"/>
++        <source>Mouse acceleration</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Mouse acceleration</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="246"/>
++        <source>Show pointer position when pressing ctrl</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Show pointer position when pressing ctrl</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="255"/>
++        <source>Pointer size</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Pointer size</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="257"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="258"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="259"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="265"/>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="266"/>
++        <source>Small(recommend)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="271"/>
++        <source>Medium</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="272"/>
++        <source>Large</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="303"/>
++        <source>Blinking cursor in text area</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Blinking cursor in text area</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="312"/>
++        <source>Cursor speed</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Mouse/Cursor speed</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>MyLabel</name>
++    <message>
++        <source>double-click to test</source>
++        <translation type="vanished">双击测试</translation>
++    </message>
++</context>
++<context>
++    <name>NetConnect</name>
++    <message>
++        <source>Netconnect Status</source>
++        <translation type="vanished">网络状态</translation>
++    </message>
++    <message>
++        <source>Waitting...</source>
++        <translation type="vanished">加载中...</translation>
++    </message>
++    <message>
++        <source>Available Network</source>
++        <translation type="vanished">可用网络</translation>
++    </message>
++    <message>
++        <source>Refresh</source>
++        <translation type="vanished">刷新</translation>
++    </message>
++    <message>
++        <source>open wifi</source>
++        <translation type="vanished">打开WLAN</translation>
++    </message>
++    <message>
++        <source>Wired Network</source>
++        <translation type="vanished">有线网络</translation>
++    </message>
++    <message>
++        <source>Advanced settings</source>
++        <translation type="vanished">高级设置</translation>
++    </message>
++    <message>
++        <source>Other Networks</source>
++        <translation type="vanished">其他网络</translation>
++    </message>
++    <message>
++        <source>open</source>
++        <translation type="vanished">开启</translation>
++    </message>
++    <message>
++        <source>Network settings</source>
++        <translation type="vanished">网络设置</translation>
++    </message>
++    <message>
++        <source>Change net settings</source>
++        <translation type="vanished">更改网络设置</translation>
++    </message>
++    <message>
++        <source>netconnect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>Netconnect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>Link</source>
++        <translation type="vanished">连接</translation>
++    </message>
++    <message>
++        <source>WiredConnect</source>
++        <translation type="vanished">有线网络</translation>
++    </message>
++    <message>
++        <source>card</source>
++        <translation type="vanished">网卡</translation>
++    </message>
++    <message>
++        <source>Add Wired Network</source>
++        <translation type="vanished">添加有线网络</translation>
++    </message>
++    <message>
++        <source>Connected</source>
++        <translation type="vanished">已连接</translation>
++    </message>
++    <message>
++        <source>No net</source>
++        <translation type="vanished">无连接</translation>
++    </message>
++    <message>
++        <source>Detail</source>
++        <translation type="vanished">网络详情</translation>
++    </message>
++    <message>
++        <source>None</source>
++        <translation type="vanished">无</translation>
++    </message>
++    <message>
++        <source>Refreshing...</source>
++        <translation type="vanished">刷新中...</translation>
++    </message>
++    <message>
++        <source>connected</source>
++        <translation type="vanished">已连接</translation>
++    </message>
++    <message>
++        <source>No network</source>
++        <translation type="vanished">无网络连接</translation>
++    </message>
++    <message>
++        <source>Connect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>Disconnect</source>
++        <translation type="vanished">未连接</translation>
++    </message>
++</context>
++<context>
++    <name>NetDetail</name>
++    <message>
++        <source>SSID:</source>
++        <translation type="vanished">SSID:</translation>
++    </message>
++    <message>
++        <source>Protocol</source>
++        <translation type="vanished">协议:</translation>
++    </message>
++    <message>
++        <source>Security Type:</source>
++        <translation type="vanished">安全类型:</translation>
++    </message>
++    <message>
++        <source>Hz:</source>
++        <translation type="vanished">网络频带:</translation>
++    </message>
++    <message>
++        <source>Chan:</source>
++        <translation type="vanished">网络通道:</translation>
++    </message>
++    <message>
++        <source>Link Speed(rx/tx)</source>
++        <translation type="vanished">链接速度(接收/传输):</translation>
++    </message>
++    <message>
++        <source>Link Speed(rx/tx):</source>
++        <translation type="vanished">链接速度(接收/传输):</translation>
++    </message>
++    <message>
++        <source>BandWidth:</source>
++        <translation type="vanished">带宽:</translation>
++    </message>
++    <message>
++        <source>IPV4:</source>
++        <translation type="vanished">IPV4:</translation>
++    </message>
++    <message>
++        <source>IPV4 Dns:</source>
++        <translation type="vanished">IPV4 Dns:</translation>
++    </message>
++    <message>
++        <source>IPV4 GateWay:</source>
++        <translation type="vanished">网关:</translation>
++    </message>
++    <message>
++        <source>IPV4 Prefix:</source>
++        <translation type="vanished">前缀:</translation>
++    </message>
++    <message>
++        <source>IPV6:</source>
++        <translation type="vanished">IPV6:</translation>
++    </message>
++    <message>
++        <source>IPV6 Prefix:</source>
++        <translation type="vanished">前缀:</translation>
++    </message>
++    <message>
++        <source>IPV6 GateWay:</source>
++        <translation type="vanished">网关:</translation>
++    </message>
++    <message>
++        <source>Mac:</source>
++        <translation type="vanished">物理地址:</translation>
++    </message>
++</context>
++<context>
++    <name>Notice</name>
++    <message>
++        <source>NotFaze Mode</source>
++        <translation type="vanished">勿扰模式</translation>
++    </message>
++    <message>
++        <source>(Notification banners, prompts will be hidden, and notification sounds will be muted)</source>
++        <translation type="vanished">(通知横幅、提示将会隐藏,通知声音将会静音)</translation>
++    </message>
++    <message>
++        <source>Automatically turn on</source>
++        <translation type="vanished">自动开启</translation>
++    </message>
++    <message>
++        <source>to</source>
++        <translation type="vanished">至</translation>
++    </message>
++    <message>
++        <source>Automatically turn on when multiple screens are connected</source>
++        <translation type="vanished">多屏连接时自动开启</translation>
++    </message>
++    <message>
++        <source>Automatically open in full screen mode</source>
++        <translation type="vanished">全屏模式下自动开启</translation>
++    </message>
++    <message>
++        <source>Allow automatic alarm reminders in Do Not Disturb mode</source>
++        <translation type="vanished">勿扰模式下允许闹钟提示</translation>
++    </message>
++    <message>
++        <source>Notice Settings</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <source>Set the type of notice in the operation center</source>
++        <translation type="vanished">设置在通知中心显示的通知信息</translation>
++    </message>
++    <message>
++        <source>Set notice type of operation center</source>
++        <translation type="vanished">设置在通知中心显示的通知信息</translation>
++    </message>
++    <message>
++        <source>Show new feature ater system upgrade</source>
++        <translation type="vanished">系统版本更新后显示新增内容</translation>
++    </message>
++    <message>
++        <source>Get notifications from the app</source>
++        <translation type="vanished">获取来自应用的通知</translation>
++    </message>
++    <message>
++        <source>Show notifications on the lock screen</source>
++        <translation type="vanished">在锁屏界面上显示通知</translation>
++    </message>
++    <message>
++        <source>Notice Origin</source>
++        <translation type="vanished">设置通知来源</translation>
++    </message>
++    <message>
++        <source>notice</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <source>Notice</source>
++        <translation type="vanished">通知</translation>
++    </message>
++</context>
++<context>
++    <name>NoticeMenu</name>
++    <message>
++        <source>Beep sound when notified</source>
++        <translation type="vanished">通知时提示声音</translation>
++    </message>
++    <message>
++        <source>Show message  on screenlock</source>
++        <translation type="vanished">在锁屏界面显示消息内容</translation>
++    </message>
++    <message>
++        <source>Show noticfication  on screenlock</source>
++        <translation type="vanished">在锁屏界面显示通知</translation>
++    </message>
++    <message>
++        <source>Notification Style</source>
++        <translation type="vanished">通知样式</translation>
++    </message>
++    <message>
++        <source>Banner: Appears in the upper right corner of the screen, and disappears automatically</source>
++        <translation type="vanished">横幅:显示在屏幕右上角,会自动消失</translation>
++    </message>
++    <message>
++        <source>Tip:It will be kept on the screen until it is closed</source>
++        <translation type="vanished">提示:会保留在屏幕上,直到被关闭</translation>
++    </message>
++    <message>
++        <source>None:Notifications will not be displayed on the screen, but will go to the notification center</source>
++        <translation type="vanished">无:通知不会显示在屏幕上,但会进入通知中心</translation>
++    </message>
++</context>
++<context>
++    <name>NoticeUi</name>
++    <message>
++        <source>Notice Settings</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <source>NotFaze Mode</source>
++        <translation type="vanished">勿扰模式</translation>
++    </message>
++    <message>
++        <source>(Notification banners, prompts will be hidden, and notification sounds will be muted)</source>
++        <translation type="vanished">(通知横幅、提示将会隐藏,通知声音将会静音)</translation>
++    </message>
++    <message>
++        <source>Get notifications from the app</source>
++        <translation type="vanished">获取来自应用的通知</translation>
++    </message>
++    <message>
++        <source>Automatically turn on</source>
++        <translation type="vanished">自动开启</translation>
++    </message>
++    <message>
++        <source>to</source>
++        <translation type="vanished">至</translation>
++    </message>
++    <message>
++        <source>Automatically turn on when multiple screens are connected</source>
++        <translation type="vanished">多屏连接时自动开启</translation>
++    </message>
++    <message>
++        <source>Automatically open in full screen mode</source>
++        <translation type="vanished">全屏模式下自动开启</translation>
++    </message>
++    <message>
++        <source>Allow automatic alarm reminders in Do Not Disturb mode</source>
++        <translation type="vanished">勿扰模式下允许闹钟提示</translation>
++    </message>
++</context>
++<context>
++    <name>NumbersButtonIntel</name>
++    <message>
++        <source>clean</source>
++        <translation type="vanished">清空</translation>
++    </message>
++</context>
++<context>
++    <name>OutputConfig</name>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="84"/>
++        <source>resolution</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/resolution</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="110"/>
++        <source>orientation</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/orientation</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="123"/>
++        <source>arrow-up</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="124"/>
++        <source>90° arrow-right</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="126"/>
++        <source>arrow-down</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Information</source>
++        <translation type="vanished">信息</translation>
++    </message>
++    <message>
++        <source>Some applications need to be logouted to take effect</source>
++        <translation type="vanished">部分程序需要注销生效</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="125"/>
++        <source>90° arrow-left</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="137"/>
++        <source>auto rotation</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/auto rotation</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="188"/>
++        <source>frequency</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/frequency</extra-contents_path>
++    </message>
++    <message>
++        <source>refresh rate</source>
++        <translation type="vanished">刷新率</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="411"/>
++        <source>auto</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="222"/>
++        <source>screen zoom</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/screen zoom</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/outputconfig.cpp" line="577"/>
++        <source>%1 Hz</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>PassDialog</name>
++    <message>
++        <source>Get the phone binding code</source>
++        <translation type="vanished">获取绑定手机验证码</translation>
++    </message>
++    <message>
++        <source>Your account here</source>
++        <translation type="vanished">请输入用户名</translation>
++    </message>
++    <message>
++        <source>Your new password here</source>
++        <translation type="vanished">新密码</translation>
++    </message>
++    <message>
++        <source>Confirm your new password</source>
++        <translation type="vanished">确认新密码</translation>
++    </message>
++    <message>
++        <source>Your code here</source>
++        <translation type="vanished">输入验证码</translation>
++    </message>
++    <message>
++        <source>At least 6 bit, include letters and digt</source>
++        <translation type="vanished">至少六位,包含大小写字母、数字</translation>
++    </message>
++    <message>
++        <source>Your password is valid!</source>
++        <translation type="vanished">您的密码是有效的!</translation>
++    </message>
++</context>
++<context>
++    <name>PhoneAuthIntelDialog</name>
++    <message>
++        <source>Wechat Auth</source>
++        <translation type="vanished">微信验证</translation>
++    </message>
++    <message>
++        <source>Phone Auth</source>
++        <translation type="vanished">手机号验证</translation>
++    </message>
++    <message>
++        <source>Phone number</source>
++        <translation type="vanished">手机号</translation>
++    </message>
++    <message>
++        <source>SMS verification code</source>
++        <translation type="vanished">短信验证码</translation>
++    </message>
++    <message>
++        <source>GetCode</source>
++        <translation type="vanished">获取验证码</translation>
++    </message>
++    <message>
++        <source>Return</source>
++        <translation type="vanished">返回</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++    <message>
++        <source>Commit</source>
++        <translation type="vanished">提交</translation>
++    </message>
++    <message>
++        <source>confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++    <message>
++        <source>commit</source>
++        <translation type="vanished">提交</translation>
++    </message>
++    <message>
++        <source>Mobile number acquisition failed</source>
++        <translation type="vanished">手机号获取失败,请手动输入</translation>
++    </message>
++    <message>
++        <source>Recapture</source>
++        <translation type="vanished">重新获取</translation>
++    </message>
++    <message>
++        <source>Network connection failure, please check</source>
++        <translation type="vanished">网络连接故障,请重试</translation>
++    </message>
++    <message>
++        <source>Phone is lock,try again in an hour</source>
++        <translation type="vanished">手机号已被锁定,1小时之后再试</translation>
++    </message>
++    <message>
++        <source>Phone code is wrong</source>
++        <translation type="vanished">验证码错误,请重试</translation>
++    </message>
++    <message>
++        <source>Current login expired,using wechat code!</source>
++        <translation type="vanished">登录信息过期,请重新使用微信扫码登录</translation>
++    </message>
++    <message>
++        <source>Unknown error, please try again later</source>
++        <translation type="vanished">未知错误,请稍后重试</translation>
++    </message>
++    <message>
++        <source>Please use the correct wechat scan code</source>
++        <translation type="vanished">请使用正确的微信扫码</translation>
++    </message>
++</context>
++<context>
++    <name>Power</name>
++    <message>
++        <source>select power plan</source>
++        <translation type="vanished">电源计划</translation>
++    </message>
++    <message>
++        <source>Balance (suggest)</source>
++        <translation type="vanished">平衡(推荐)</translation>
++    </message>
++    <message>
++        <source>Saving</source>
++        <translation type="vanished">节能</translation>
++    </message>
++    <message>
++        <source>Minimize performance</source>
++        <translation type="vanished">尽可能降低计算机能耗</translation>
++    </message>
++    <message>
++        <source>Bala&amp;nce (suggest)</source>
++        <translation type="obsolete">
++</translation>
++    </message>
++    <message>
++        <source>Autobalance energy and performance with available hardware</source>
++        <translation type="vanished">利用可用的硬件自动平衡消耗与性能</translation>
++    </message>
++    <message>
++        <source>Custom</source>
++        <translation type="vanished">自定义</translation>
++    </message>
++    <message>
++        <source>Users develop personalized power plans</source>
++        <translation type="vanished">用户制定个性化电源计划</translation>
++    </message>
++    <message>
++        <source>Power supply</source>
++        <translation type="vanished">电源供给</translation>
++    </message>
++    <message>
++        <source>Battery powered</source>
++        <translation type="vanished">电池供给</translation>
++    </message>
++    <message>
++        <source>Change PC sleep time:</source>
++        <translation type="vanished">系统进入空闲状态并于此时间后睡眠:</translation>
++    </message>
++    <message>
++        <source>Change DP close time:</source>
++        <translation type="vanished">系统进入空闲状态并于此时间后关闭显示器:</translation>
++    </message>
++    <message>
++        <source>Change pc sleep time:</source>
++        <translation type="vanished">系统进入空闲状态并于此时间后挂起:</translation>
++    </message>
++    <message>
++        <source>Change dp close time:</source>
++        <translation type="vanished">系统进入空闲状态并于此时间后关闭显示器:</translation>
++    </message>
++    <message>
++        <source>When close lid:</source>
++        <translation type="vanished">关闭笔记本电脑上盖时:</translation>
++    </message>
++    <message>
++        <source>Screen darkens use battery:</source>
++        <translation type="vanished">无操作状态下于此时间后减小屏幕亮度:</translation>
++    </message>
++    <message>
++        <source>Power Other Settings</source>
++        <translation type="vanished">电源图标设置</translation>
++    </message>
++    <message>
++        <source>S3 to S4 when:</source>
++        <translation type="vanished">挂起此时间后转为睡眠:</translation>
++    </message>
++    <message>
++        <source>Power Icon Settings</source>
++        <translation type="vanished">电源图标设置</translation>
++    </message>
++    <message>
++        <source>Power icon:</source>
++        <translation type="vanished">电源图标:</translation>
++    </message>
++    <message>
++        <source>power</source>
++        <translation type="vanished">电源</translation>
++    </message>
++    <message>
++        <source>Power</source>
++        <translation type="vanished">电源</translation>
++    </message>
++    <message>
++        <source>Change PC sleep time after %1 min:</source>
++        <translation type="vanished">系统%1分钟后进入空闲状态并于此时间后挂起:</translation>
++    </message>
++    <message>
++        <source>Change DP close time after %1 min:</source>
++        <translation type="vanished">系统%1分钟后进入空闲状态并于此时间后关闭显示器:</translation>
++    </message>
++    <message>
++        <source>Enter idle state %1 min and sleep after %2 min :</source>
++        <translation type="vanished">系统%1分钟后进入空闲状态并于%2分钟后挂起:</translation>
++    </message>
++    <message>
++        <source>Enter idle state %1 min and close after %2 min :</source>
++        <translation type="vanished">系统%1分钟后进入空闲状态并于%2分钟后关闭显示器:</translation>
++    </message>
++    <message>
++        <source>never</source>
++        <translation type="vanished">从不</translation>
++    </message>
++    <message>
++        <source>10 min</source>
++        <translation type="vanished">10分钟</translation>
++    </message>
++    <message>
++        <source>30 min</source>
++        <translation type="vanished">30分钟</translation>
++    </message>
++    <message>
++        <source>60 min</source>
++        <translation type="vanished">60分钟</translation>
++    </message>
++    <message>
++        <source>120 min</source>
++        <translation type="vanished">120分钟</translation>
++    </message>
++    <message>
++        <source>300 min</source>
++        <translation type="vanished">300分钟</translation>
++    </message>
++    <message>
++        <source>20 min</source>
++        <translation type="vanished">20分钟</translation>
++    </message>
++    <message>
++        <source>1 min</source>
++        <translation type="vanished">1分钟</translation>
++    </message>
++    <message>
++        <source>5 min</source>
++        <translation type="vanished">5分钟</translation>
++    </message>
++    <message>
++        <source>Require password when sleep/hibernation</source>
++        <translation type="vanished">睡眠/休眠唤醒时需要密码</translation>
++    </message>
++    <message>
++        <source>Require password when sleep</source>
++        <translation type="vanished">睡眠后唤醒需要密码</translation>
++    </message>
++    <message>
++        <source>Password required when waking up the screen</source>
++        <translation type="vanished">唤醒屏幕时需要密码</translation>
++    </message>
++    <message>
++        <source>Press the power button</source>
++        <translation type="vanished">按电源键时执行</translation>
++    </message>
++    <message>
++        <source>Time to close display</source>
++        <translation type="vanished">此时间段后关闭显示器</translation>
++    </message>
++    <message>
++        <source>Time to sleep</source>
++        <translation type="vanished">此时间段后系统进入睡眠</translation>
++    </message>
++    <message>
++        <source>Notebook cover</source>
++        <translation type="vanished">笔记本合盖时执行</translation>
++    </message>
++    <message>
++        <source>Using power</source>
++        <translation type="vanished">使用电源时</translation>
++    </message>
++    <message>
++        <source>Using battery</source>
++        <translation type="vanished">使用电池时</translation>
++    </message>
++    <message>
++        <source> Time to darken</source>
++        <translation type="vanished">此时间段后降低屏幕亮度</translation>
++    </message>
++    <message>
++        <source>Battery level is lower than</source>
++        <translation type="vanished">电量低于</translation>
++    </message>
++    <message>
++        <source>Run</source>
++        <translation type="vanished">时执行</translation>
++    </message>
++    <message>
++        <source>Low battery notification</source>
++        <translation type="vanished">低电量时通知</translation>
++    </message>
++    <message>
++        <source>Automatically run saving mode when low battery</source>
++        <translation type="vanished">低电量时自动开启节能模式</translation>
++    </message>
++    <message>
++        <source>Automatically run saving mode when the low battery</source>
++        <translation type="vanished">低电量时自动开启节能模式</translation>
++    </message>
++    <message>
++        <source>Automatically run saving mode when using battery</source>
++        <translation type="vanished">使用电池时自动开启节能模式</translation>
++    </message>
++    <message>
++        <source>Display remaining charging time and usage time</source>
++        <translation type="vanished">显示剩余充电时间和剩余使用时间</translation>
++    </message>
++    <message>
++        <source>General</source>
++        <translation type="vanished">通用</translation>
++    </message>
++    <message>
++        <source>Select Powerplan</source>
++        <translation type="vanished">电源计划</translation>
++    </message>
++    <message>
++        <source>Battery saving plan</source>
++        <translation type="vanished">电池节能计划</translation>
++    </message>
++    <message>
++        <source>nothing</source>
++        <translation type="vanished">无操作</translation>
++    </message>
++    <message>
++        <source>blank</source>
++        <translation type="vanished">关闭显示器</translation>
++    </message>
++    <message>
++        <source>suspend</source>
++        <translation type="vanished">睡眠</translation>
++    </message>
++    <message>
++        <source>hibernate</source>
++        <translation type="vanished">休眠</translation>
++    </message>
++    <message>
++        <source>interactive</source>
++        <translation type="vanished">询问</translation>
++    </message>
++    <message>
++        <source>5min</source>
++        <translation type="vanished">5分钟</translation>
++    </message>
++    <message>
++        <source>Performance Model</source>
++        <translation type="vanished">性能模式</translation>
++    </message>
++    <message>
++        <source>20min</source>
++        <translation type="vanished">20分钟</translation>
++    </message>
++    <message>
++        <source>10minn</source>
++        <translation type="vanished">10分钟</translation>
++    </message>
++    <message>
++        <source>15min</source>
++        <translation type="vanished">15分钟</translation>
++    </message>
++    <message>
++        <source>30min</source>
++        <translation type="vanished">30分钟</translation>
++    </message>
++    <message>
++        <source>1h</source>
++        <translation type="vanished">1小时</translation>
++    </message>
++    <message>
++        <source>2h</source>
++        <translation type="vanished">2小时</translation>
++    </message>
++    <message>
++        <source>10min</source>
++        <translation type="vanished">10分钟</translation>
++    </message>
++    <message>
++        <source>3h</source>
++        <translation type="vanished">3小时</translation>
++    </message>
++    <message>
++        <source>Balance Model</source>
++        <translation type="vanished">平衡模式</translation>
++    </message>
++    <message>
++        <source>Save Model</source>
++        <translation type="vanished">节能模式</translation>
++    </message>
++    <message>
++        <source>1min</source>
++        <translation type="vanished">1分钟</translation>
++    </message>
++    <message>
++        <source>3min</source>
++        <translation type="vanished">3分钟</translation>
++    </message>
++    <message>
++        <source>shutdown</source>
++        <translation type="vanished">关机</translation>
++    </message>
++    <message>
++        <source>always</source>
++        <translation type="vanished">显示电源图标在托盘栏</translation>
++    </message>
++    <message>
++        <source>present</source>
++        <translation type="vanished">仅当存在电池时显示</translation>
++    </message>
++    <message>
++        <source>charge</source>
++        <translation type="vanished">仅当使用电池时显示</translation>
++    </message>
++    <message>
++        <source>Perform operations when battery is low:</source>
++        <translation type="vanished">低电量执行操作:</translation>
++    </message>
++    <message>
++        <source>General Settings</source>
++        <translation type="vanished">通用设置</translation>
++    </message>
++    <message>
++        <source>When the power button is pressed:</source>
++        <translation type="vanished">按电源键时执行:</translation>
++    </message>
++</context>
++<context>
++    <name>Printer</name>
++    <message>
++        <source>Add Printers And Scanners</source>
++        <translation type="vanished">添加打印机和扫描仪</translation>
++    </message>
++    <message>
++        <source>Add printers and scanners</source>
++        <translation type="vanished">添加打印机和扫描仪</translation>
++    </message>
++    <message>
++        <source>Attrs</source>
++        <translation type="vanished">属性</translation>
++    </message>
++    <message>
++        <source>Attributes</source>
++        <translation type="vanished">属性</translation>
++    </message>
++    <message>
++        <source>List Of Existing Printers</source>
++        <translation type="vanished">可用打印机列表</translation>
++    </message>
++    <message>
++        <source>printer</source>
++        <translation type="vanished">打印机</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/printer/printer.cpp" line="43"/>
++        <source>Printer</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/printer/printer.cpp" line="121"/>
++        <source>Printers</source>
++        <translatorcomment>打印机</translatorcomment>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Printers And Scanners</source>
++        <translation type="vanished">打印机和扫描仪</translation>
++    </message>
++    <message>
++        <source>Add</source>
++        <translation type="vanished">添加</translation>
++        <extra-contents_path>/Printer/Add</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>PrivacyDialog</name>
++    <message>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="11"/>
++        <source>Set</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="73"/>
++        <source>End User License Agreement and Privacy Policy Statement of openKylin</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="75"/>
++        <source>End User License Agreement and Privacy Policy Statement of Kylin</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
++        <source>Openkylin Community.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Dear users of Kylin operating system and relevant products, 
++         This agreement describes your rights, obligations and prerequisites for your use of this product. Please read the clauses of the Agreement and the supplementary license (hereinafter collectively referred to as “the Agreement”) and the privacy policy statement for Kylin operating system (hereinafter referred to as “the Statement”).
++        “This product” in the Agreement and the Statement refers to “Kylin operating system software product” developed, produced and released by Kylinsoft Co., Ltd. and used for handling the office work or building the information infrastructure for enterprises and governments. “We” refers to Kylinsoft Co., Ltd. “You” refers to the users who pay the license fee and use the Kylin operating system and relevant products.
++
++End User License Agreement of Kylin 
++Release date of the version: July 30, 2021
++Effective date of the version: July 30, 2021
++        The Agreement shall include the following content:
++        I.     User license 
++        II.    Java technology limitations
++        III.   Cookies and other technologies
++        IV.    Intellectual property clause
++        V.     Open source code
++        VI.   The third-party software/services
++        VII.  Escape clause
++        VIII. Integrity and severability of the Agreement
++        IX.    Applicable law and dispute settlement
++
++        I.      User license
++        According to the number of users who have paid for this product and the types of computer hardware, we shall grant the non-exclusive and non-transferable license to you, and shall only allow the licensed unit and the employees signing the labor contracts with the unit to use the attached software (hereinafter referred to as “the Software”) and documents as well as any error correction provided by Kylinsoft.
++        1.     User license for educational institutions
++        In the case of observing the clauses and conditions of the Agreement, if you are an educational institution, your institution shall be allowed to use the attached unmodified binary format software and only for internal use. “For internal use” here refers to that the licensed unit and the employees signing the labor contracts with the unit as well as the students enrolled by your institution can use this product.
++        2.     Use of the font software
++        Font software refers to the software pre-installed in the product and generating font styles. You cannot separate the font software from the Software and cannot modify the font software in an attempt to add any function that such font software, as a part of this product, does not have when it is delivered to you, or you cannot embed the font software in the files provided as a commercial product for any fee or other remuneration, or cannot use it in equipment where this product is not installed. If you use the font software for other commercial purposes such as external publicity, please contact and negotiate with the font copyright manufacture to obtain the permissions for your relevant acts.
++
++        II.    Java technology limitations
++        You cannot change the “Java Platform Interface” (referred to as “JPI”, that is, the classes in the “java” package or any sub-package of the “java” package), whether by creating additional classes in JPI or by other means to add or change the classes in JPI. If you create an additional class as well as one or multiple relevant APIs, and they (i) expand the functions of Java platform; And (ii) may be used by the third-party software developers to develop additional software that may call the above additional APIs, you must immediately publish the accurate description of such APIs widely for free use by all developers. You cannot create or authorize other licensees to create additional classes, interfaces or sub-packages marked as “java”, “javax” and “sun” in any way, or similar agreements specified by Sun in any naming agreements. See the appropriate version of the Java Runtime Environment Binary Code License (located at http://jdk.java.net at present) to understand the availability of runtime code jointly distributed with Java mini programs and applications.
++
++        III.   Cookies and other technologies
++        In order to help us better understand and serve the users, our website, online services and applications may use the “Cookie” technology. Such Cookies are used to store the network traffic entering and exiting the system and the traffic generated due to detection errors, so they must be set. We shall understand how you interact with our website and online services by using such Cookies.
++        If you want to disable the Cookie and use the Firefox browser, you may set it in Privacy and Security Center of Firefox. If your use other browsers, please consult the specific schemes from the relevant suppliers.
++        In accordance with Article 76, paragraph 5 of the Network Security Law of the People&apos;s Republic of China, personal information refers to all kinds of information recorded in electronic or other ways, which can identify the natural persons’ personal identity separately or combined with other information, including but not limited to the natural person’s name, date of birth, identity certificate number, personal biological identification information, address and telephone number, etc. If Cookies contain the above information, or the combined information of non-personal information and other personal information collected through Cookie, for the purpose of this privacy policy, we shall regard the combined information as personal privacy information, and shall provide the corresponding security protection measures for your personal information by referring to Kylin Privacy Policy Statement.
++
++        IV.   Intellectual property clause
++        1.    Trademarks and Logos
++        This product shall be protected by the copyright law, trademark law and other laws and international intellectual property conventions. Title to the product and all associated intellectual property rights are retained by us or its licensors. No right, title or interest in any trademark, service mark, logo or trade name of us or its licensors is granted under the Agreement. Any use of Kylinsoft marked by you shall be in favor of Kylinsoft, and without our consent, you shall not arbitrarily use any trademark or sign of Kylinsoft.
++        2.    Duplication, modification and distribution
++        If the Agreement remains valid for all duplicates, you may and must duplicate, modify and distribute software observing GNU GPL-GNU General Public License agreement among the Kylin operating system software products in accordance with GNU GPL-GNU General Public License, and must duplicate, modify and distribute other Kylin operating system software products not observing GNU GPL-GNU General Public License agreement in accordance with relevant laws and other license agreements, but no derivative release version based on the Kylin operating system software products can use any of our trademarks or any other signs without our written consent.
++        Special notes: Such duplication, modification and distribution shall not include any software, to which GNU GPL-GNU General Public License does not apply, in this product, such as the software store, input method software, font library software and third-party applications contained by the Kylin operating system software products. You shall not duplicate, modify (including decompilation or reverse engineering) or distribute the above software unless prohibited by applicable laws.
++
++        V.    Open source code
++        For any open source codes contained in this product, any clause of the Agreement shall not limit, constrain or otherwise influence any of your corresponding rights or obligations under any applicable open source code license or all kinds of conditions you shall observe.
++
++        VI.  The third-party software/services
++        The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer. This product may contain or be bundled with the third-party software/services to which the separate license agreements are attached. When you use any third-party software/services with separate license agreements, you shall be bound by such separate license agreements.
++        We shall not have any right to control the third-party software/services in these products and shall not expressly or implicitly ensure or guarantee the legality, accuracy, effectiveness or security of the acts of their providers or users.
++
++        VII. Escape clause
++        1.    Limited warranty
++        We guarantee to you that within ninety (90) days from the date when you purchase or obtain this product in other legal ways (subject to the date of the sales contract), the storage medium (if any) of this product shall not be involved in any defects in materials or technology when it is normally used. All compensation available to you and our entire liability under this limited warranty will be for us to choose to replace this product media or refund the fee paid for this product.
++        2.   Disclaimer
++        In addition to the above limited warranty, the Software is provided “as is” without any express or implied condition statement and warranty, including any implied warranty of merchantability, suitability for a particular purpose or non-infringement, except that this disclaimer is deemed to be legally invalid.
++        3.   Limitation of responsibility
++        To the extent permitted by law, under any circumstances, no matter what theory of liability is adopted, no matter how it is caused, for any loss of income, profit or data caused by or related to the use or inability to use the Software, or for special indirect consequential incidental or punitive damages, neither we nor its licensors shall be liable (even if we have been informed of the possibility of such damages). According to the Agreement, in any case, whether in contract tort (including negligence) or otherwise, our liability to you will not exceed the amount you pay for the Software. The above limitations will apply even if the above warranty fails of its essential purpose.
++
++        VIII.Integrity and severability of the Agreement
++        1.    The integrity of the Agreement
++        The Agreement is an entire agreement on the product use concluded by us with you. It shall replace all oral or written contact information, suggestions, representations and guarantees inconsistent with the Agreement previous or in the same period. During the period of the Agreement, in case of any conflict clauses or additional clauses in the relevant quotations, orders or receipts or in other correspondences regarding the content of the Agreement between the parties, the Agreement shall prevail. No modification of the Agreement will be binding, unless in writing and signed by an authorized representative of each party.
++        2.   Severability of the Agreement
++        If any provision of the Agreement is deemed to be unenforceable, the deletion of the corresponding provision will still be effective, unless the deletion will hinder the realization of the fundamental purpose of the parties (in which case, the Agreement will be terminated immediately).
++
++        IX.  Applicable law and dispute settlement
++        1.   Application of governing laws
++        Any dispute settlement (including but not limited to litigation and arbitration) related to the Agreement shall be governed by the laws of the People’s Republic of China. The legal rules of any other countries and regions shall not apply.
++        2.  Termination
++        If the Software becomes or, in the opinion of either party, may become the subject of any claim for intellectual property infringement, either party may terminate the Agreement immediately.
++        The Agreement is effective until termination. You may terminate the Agreement at any time, but you must destroy all originals and duplicates of the Software. The Agreement will terminate immediately without notice from us if you fail to comply with any provision of the Agreement. At the time of termination, you must destroy all originals and duplicates of such software, and shall be legally liable for not observing the Agreement.
++        The Agreement shall be in both Chinese and English, and in case of ambiguity between any content above, the Chinese version shall prevail.
++
++        Privacy Policy Statement of Kylin Operating System/n        Release date of the version: July 30, 2021
++        Effective date of the version: July 30, 2021
++
++        We attach great importance to personal information and privacy protection. In order to guarantee the legal, reasonable and appropriate collection, storage and use of your personal privacy information and the transmission and storage in the safe and controllable circumstances, we hereby formulate this Statement. We shall provide your personal information with corresponding security protection measures according to the legal requirements and mature security standards in the industry.
++
++        The Statement shall include the following content:
++        I.   Collection and use your personal information
++        II.  How to store and protect your personal information
++        III. How to manage your personal information
++        IV.  Privacy of the third-party software/services
++        V.   Minors’ use of the products
++        VI.  How to update this Statement
++        VII. How to contact us
++
++        I.     How to collect and use your personal information
++        1.    The collection of personal information
++        We shall collect the relevant information when you use this product mainly to provide you with higher-quality products, more usability and better services. Part of information collected shall be provided by you directly, and other information shall be collected by us through your interaction with the product as well as your use and experience of the product. We shall not actively collect and deal with your personal information unless we have obtained your express consent according to the applicable legal stipulations.
++        1)   The licensing mechanism for this product allows you to apply for the formal license of the product in accordance with the contract and relevant agreements after you send a machine code to the commercial personnel of Kylinsoft, and the machine code is generated through encryption and conversion according to the information of the computer used by you, such as network card, firmware and motherboard. This machine code shall not directly contain the specific information of the equipment, such as network card, firmware and motherboard, of the computer used by you.
++        2)   Server of the software store of this product shall connect it according to the CPU type information and IP address of the computer used by you; at the same time, we shall collect the relevant information of your use of the software store of this product, including but not limited to the time of opening the software store, interaction between the pages, search content and downloaded content. The relevant information collected is generally recorded in the log of server system of software store, and the specific storage position may change due to different service scenarios.
++        3)   Upgrading and updating of this product shall be connected according to the IP address of the computer used by you, so that you can upgrade and update the system;
++        4)   Your personal information, such as E-mail address, telephone number and name, shall be collected due to business contacts and technical services.
++        5)   The biological characteristic management tool support system components of this product shall use the biological characteristics for authentication, including fingerprint, finger vein, iris and voiceprint. The biological characteristic information input by you shall be stored in the local computer, and for such part of information, we shall only receive the verification results but shall not collect or upload it. If you do not need to use the biological characteristics for the system authentication, you may disable this function in the biological characteristic management tool.
++        6)   This product shall provide the recording function. When you use the recording function of this product, we shall only store the audio content when you use the recording in the local computer but shall not collect or upload the content.
++        7)   The service and support functions of this product shall collect the information provided by you for us, such as log, E-mail, telephone and name, so as to make it convenient to provide the technical services, and we shall properly keep your personal information.
++        8)   In the upgrading process of this product, if we need to collect additional personal information of yours, we shall timely update this part of content.
++        2.   Use of personal information
++        We shall strictly observe the stipulations of laws and regulations and agreements with you to use the information collected for the following purposes. In case of exceeding the scope of following purposes, we shall explain to you again and obtain your consent.
++        1)   The needs such as product licensing mechanism, use of software store, system updating and maintenance, biological identification and online services shall be involved;
++        2)   We shall utilize the relevant information to assist in promoting the product security, reliability and sustainable service;
++        3)   We shall directly utilize the information collected (such as the E-mail address and telephone provided by you) to communicate with you directly, for example, business contact, technical support or follow-up service visit;
++        4)   We shall utilize the data collected to improve the current usability of the product, promote the product’s user experience (such as the personalized recommendation of software store) and repair the product defects, etc.;
++        5)   We shall use the user behavior data collected for data analysis. For example, we shall use the information collected to analyze and form the urban thermodynamic chart or industrial insight report excluding any personal information. We may make the information excluding identity identification content upon the statistics and processing public and share it with our partners, to understand how the users use our services or make the public understand the overall use trend of our services;
++        6)   We may use your relevant information and provide you with the advertising more related to you on relevant websites and in applications andother channels;
++        7)   In order to follow the relevant requirements of relevant laws and regulations, departmental regulations and rules and governmental instructions.
++        3.   Information sharing and provision
++        We shall not share or transfer your personal information to any third party, except for the following circumstances:
++        1)   After obtaining your clear consent, we shall share your personal information with the third parities;
++        2)   In order to achieve the purpose of external processing, we may share your personal information with the related companies or other third-party partners (the third-party service providers, contractors, agents and application developers). We shall protect your information security by means like encryption and anonymization;
++        3)   We shall not publicly disclose the personal information collected. If we must disclose it publicly, we shall notify you of the purpose of such public disclosure, type of information disclosed and the sensitive information that may be involved, and obtain your consent;
++        4)   With the continuous development of our business, we may carry out the transactions, such as merger, acquisition and asset transfer, and we shall notify you of the relevant circumstances, and continue to protect or require the new controller to continue to protect your personal information according to laws and regulations and the standards no lower than that required by this Statement;
++        5)   If we use your personal information beyond the purpose claimed at the time of collection and the directly or reasonably associated scope, we shall notify you again and obtain your consent before using your personal information.
++        4.   Exceptions with authorized consent
++        1)   It is directly related to national security, national defense security and other national interests; 
++        2)   It is directly related to public safety, public health and public knowledge and other major public interests; 
++        3)   It is directly related to crime investigation, prosecution, judgment and execution of judgment; 
++        4)   It aims to safeguard the life, property and other major legal rights and interests of you or others but it is impossible to obtain your own consent; 
++        5)   The personal information collected is disclosed to the public by yourself; 
++        6)   Personal information collected from legally publicly disclosed information, such as legal news reports, government information disclosure and other channels; 
++        7)   It is necessary to sign and perform of the contract according to your requirement; 
++        8)   It is necessary to maintain the safe and stable operation of the provided products or services, including finding and handling any fault of products or services;
++        9)   It is necessary to carry out statistical or academic research for public interest, and when the results of academic research or description are provided, the personal information contained in the results is de-identified;
++        10) Other circumstances specified in the laws and regulations.
++
++        II.   How to store and protect personal information
++        1.   Information storage place
++        We shall store the personal information collected and generated in China within the territory of China in accordance with laws and regulations.
++        2.   Information storage duration 
++        Generally speaking, we shall retain your personal information for the time necessary to achieve the purpose or for the shortest term stipulated by laws and regulations. Information recorded in the log shall be kept for a specified period and be automatically deleted according to the configuration.
++        When operation of our product or services stops, we shall notify you in the forms such as notification and announcement, delete your personal information or conduct anonymization within a reasonable period and immediately stop the activities collecting the personal information.
++        3.   How to protect the information
++        We shall strive to provide guarantee for the users’ information security, to prevent the loss, improper use, unauthorized access or disclosure of the information.
++        We shall use the security protection measures within the reasonable security level to protect the information security. For example, we shall protect your system account and password by means like encryption.
++        We shall establish the special management systems, processes and organizations to protect the information security. For example, we shall strictly restrict the scope of personnel who access to the information, and require them to observe the confidentiality obligation.
++        4.   Emergency response plan
++        In case of security incidents, such as personal information disclosure, we shall start the emergency response plan according to law, to prevent the security incidents from spreading, and shall notify you of the situation of the security incidents, the possible influence of the incidents on you and the remedial measures we will take, in the form of pushing the notifications and announcements. We will also report the disposition of the personal information security events according to the laws, regulations and regulatory requirements.
++
++        III. How to manage your personal information
++        If you worry about the personal information disclosure caused by using this product, you may consider suspending or not using the relevant functions involving the personal information, such as the formal license of the product, application store, system updating and upgrading and biological identification, according to the personal and business needs. 
++        Please pay attention to the personal privacy protection at the time of using the third-party software/services in this product.
++
++        IV.  Privacy of the third-party software/services
++
++        The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer.
++        When you install or use the third-party software/services in this product, the privacy protection and legal responsibility of the third-party software/services shall be independently borne by the third-party software/services. Please carefully read and examine the privacy statement or clauses corresponding to the third-party software/services, and pay attention to the personal privacy protection.
++
++        V.   Minors’ use of the products
++        If you are a minor, you shall obtain your guardian’s consent on your use of this product and the relevant service clauses. Except for the information required by the product, we shall not deliberately require the minors to provide more data. With the guardians’ consent or authorization, the accounts created by the minors shall be deemed to be the same as any other accounts. We have formulated special information processing rules to protect the personal information security of minors using this product. The guardians shall also take the appropriate preventive measures to protect the minors and supervise their use of this product.
++
++        VI.  How to update this Statement
++        We may update this Statement at any time, and shall display the updated statement to you through the product installation process or the company’s website at the time of updating. After such updates take effect, if you use such services or any software permitted according to such clauses, you shall be deemed to agree on the new clauses. If you disagree on the new clauses, then you must stop using this product, and please close the accountcreated by you in this product; if you are a guardian, please help your minor child to close the account created by him/her in this product.
++
++        VII. How to contact us
++        If you have any question, or any complaints or opinions on this Statement, you may seek advice through our customer service hotline 400-089-1870, or the official website (www.kylinos.cn), or “service and support” application in this product. You may also contact us by E-mail (market@kylinos.cn). 
++        We shall timely and properly deal with them. Generally, a reply will be made within 15 working days.
++        The Statement shall take effect from the date of updating. The Statement shall be in Chinese and English at the same time and in case of any ambiguity of any clause above, the Chinese version shall prevail.
++        Last date of updating: November 1, 2021
++
++Address:
++        Building 3, Xin’an Entrepreneurship Plaza, Tanggu Marine Science and Technology Park, Binhai High-tech Zone, Tianjin (300450)
++        Silver Valley Tower, No. 9, North Forth Ring West Road, Haidian District, Beijing (100190)
++        Building T3, Fuxing World Financial Center, No. 303, Section 1 of Furong Middle Road, Kaifu District, Changsha City (410000)
++        Digital Entertainment Building, No. 1028, Panyu Road, Xuhui District, Shanghai (200030)
++Tel.:
++        Tianjin (022) 58955650      Beijing (010) 51659955
++        Changsha (0731) 88280170        Shanghai (021) 51098866
++Fax:
++        Tianjin (022) 58955651      Beijing (010) 62800607
++        Changsha (0731) 88280166        Shanghai (021) 51062866
++
++        Company website: www.kylinos.cn
++        E-mail: support@kylinos.cn</source>
++        <translation type="vanished">尊敬的银河麒麟操作系统及相关产品用户:
++        本协议介绍您的权利、义务以及您使用本产品的前提条件。请您仔细阅读本协议条款、补充许可条款(统称“协议”)及银河麒麟操作系统隐私政策声明(以下简称“声明”)。
++        本协议及声明中的“本产品”是指由麒麟软件有限公司开发并制作发行的用于办公或构建企业及政府的信息化基础设施——“银河麒麟操作系统软件产品”。“我们”是指麒麟软件有限公司。“您”是指支付授权费用并使用银河麒麟操作系统及相关产品的用户。
++
++银河麒麟最终用户使用许可协议
++版本发布日期:【2021】年【7】月【30】日
++版本生效日期:【2021】年【7】月【30】日
++
++        本协议将向您说明以下内容:
++        一、使用许可
++        二、Java技术限制
++        三、Cookie和其他技术
++        四、知识产权条款
++        五、开放源代码说明
++        六、第三方软件/服务说明
++        七、免责条款
++        八、协议完整性及可分割性说明
++        九、适用法律及争议解决
++
++        一、使用许可
++
++        按照已经为本产品支付费用的用户数目及计算机硬件类型,我们向您授予非排他、不可转让的许可,仅允许被授权人单位及与其签订劳动合同的员工使用由麒麟软件提供的随附软件和文档以及任何错误纠正。
++        1.教育机构使用许可
++        在遵守本协议的条款和条件的情况下,如果您是教育机构,允许贵机构仅在内部使用随附的未经修改的二进制格式的软件。此处的“在内部使用”是指被授权人单位及与其签订劳动合同的员工以及在贵机构入学的学生使用本产品。 
++        2.字型软件使用
++        字型软件指本产品中预装的和生成字体样式的软件。您不可从软件中分离字型软件,不可改动字型软件,以新增此等字型软件被作为本产品的一部分交付予您时所不具备的任何功能,不可将字型软件嵌入作为商业产品提供以换取收费或其他报酬的文件、不可脱离安装了本产品的机器使用。如将字型软件用于对外宣传等其他商业用途时,请您与字体版权厂商联系协商以获得对您相关行为的许可。
++
++        二、Java技术限制
++
++        您不可更改“Java平台界面”(简称“JPI”,即指明为“java”包或“java”包的任何子包中的类),无论通过在JPI中创建额外的类,还是通过其他方式导致对JPI中的类进行增添或更动,均为不可。如果您创建一个额外的类以及一个或多个相关的API,而它们(i)扩展Java平台的功能;并且(ii)可供第三方软件开发者用于开发可调用上述额外API的额外软件,则您必须迅即广泛公布对此种API的准确说明,以供所有开发者免费使用。您不可创建、或授权其他被许可人创建以任何方式标示为“java”、“javax”、“sun”的额外的类、界面、子包或Sun在任何命名约定中指明的类似约定。参见Java运行时环境二进制代码许可的适当版本(目前位于http://jdk.java.net),以了解可与Java小程序和应用程序共同分发的运行时代码的可供情况。
++
++        三、Cookie和其他技术
++
++        为帮助我们更好地了解并服务用户,我们的网站、在线服务和应用程序可能会使用“Cookie”技术。这些Cookie用于存储进出系统的网络流量以及因检测错误而生成的流量,因此必须设置。 我们通过使用这些Cookie来了解您与我们的网站和在线服务如何进行交互。 
++        如果您想禁用 Cookie 并且使用的是Firefox浏览器,可在Firefox的隐私与安全中心进行设置。如果您使用的是其他浏览器,请向相关供应商咨询具体方案。
++        依照《中华人民共和国网络安全法》第七十六条第五款,个人信息,是指以电子或者其他方式记录的能够单独或者与其他信息结合识别自然人个人身份的各种信息,包括但不限于自然人的姓名、出生日期、身份证件号码、个人生物识别信息、住址、电话号码等。如果Cookie中包含上述信息,或者存在通过Cookie收集的非个人信息与其他个人信息合并后的信息,出于本隐私政策的目的,我们会将合并后的信息视为个人隐私信息,将参照银河麒麟隐私政策声明,为您的个人信息提供相应的安全保护措施。
++
++        四、知识产权条款
++
++        1.商标和标识
++        本产品受到版权(著作权)法、商标法和其他法律及国际知识产权公约的保护。我们或其许可方保留对本产品的所有权及所有相关的知识产权。对于我们或其许可方的任何商标、服务标记、标识或商号的任何权利、所有权或利益,本协议均不作任何授权。您对麒麟软件标记的任何使用都应有利于麒麟软件,未经我们书面同意,不得擅自使用麒麟软件任何商标、标识。 
++        2.关于复制、修改及分发
++        如果在所有复制品中维持本协议书不变,您可以且必须根据《GNU GPL-GNU通用公共许可证》复制、修改及分发银河麒麟操作系统软件产品中遵守《GNU GPL-GNU通用公共许可证》协议的软件,其他不遵守《GNU GPL-GNU通用公共许可证》协议的银河麒麟操作系统软件产品必须根据相关法律、其他许可协议进行复制、修改及分发,但任何以银河麒麟操作系统软件产品为基础的衍生发行版未经我们的书面授权不能使用任何我们的商标或其他任何标志。
++        特别注意:该复制、修改及分发不包括本产品中包含的任何不适用《GNU GPL-GNU通用公共许可证》的软件,如银河麒麟操作系统软件产品中包含的软件商店、输入法软件、字库软件、第三方应用软件等。除非适用法律予以禁止,否则您不得对上述软件进行复制、修改(包括反编译或反向工程)、分发。
++
++        五、开放源代码说明
++
++        对于本产品中包含的任何开放源代码,本协议的任何条款均不得限制、约束或以其它方式影响任何适用开放源代码许可证赋予您的任何相应的权利或者义务或您应遵守的各种条件。
++
++        六、第三方软件/服务说明
++
++        本协议所指的第三方软件/服务是指由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。本产品可能包含或捆绑有第三方软件/服务,这些第三方软件/服务附带单独的许可协议,您使用附带单独许可协议的任何第三方软件/服务需受到该单独许可协议的约束。
++        我们不对本产品中的第三方软件/服务拥有任何控制权,也不对其提供方或用户行为的合法性、准确性、有效性、安全性进行任何明示或默示的保证或担保。
++
++        七、免责条款
++
++        1.有限担保
++        我们向您担保,自购买或其他合法取得本产品之日起九十(90)天内(以销售合同日期为准),本产品的存储介质(如果有)在正常使用的情况下无材料和工艺方面的缺陷。在本有限担保项下,您可获得的所有补偿及我们的全部责任为由我们选择更换本产品介质或退还本产品的购买费用。
++        2.免责声明
++        除上述有限担保外,本软件按“原样”提供,不提供任何明示或默示的条件、陈述及担保,包括对适销性、对特定用途的适用性或非侵权性的任何默示的担保,均不予负责,但本免责声明被认定为法律上无效的情况除外。
++        3.责任限制
++        在法律允许范围内,无论在何种情况下,无论采用何种有关责任的理论,无论因何种方式导致,对于因使用或无法使用本软件引起的或与之相关的任何收益损失、利润或数据损失,或者对于特殊的、间接的、后果性的、偶发的或惩罚性的损害赔偿,我们或其许可方均不承担任何责任(即使我们已被告知可能出现上述损害赔偿)。根据本协议,在任何情况下,无论是在合同、侵权行为(包括过失)方面,还是在其他方面,我们对您的责任将不超过您就本软件所支付的金额。即使上述担保未能达到其基本目的,上述限制仍然适用。
++
++        八、协议完整性及可分割性说明
++
++        1.协议完整性
++        本协议是我们就产品使用与您达成的完整协议。它取代此前或同期的所有和本协议不一致的口头或书面往来信息、建议、陈述和担保。在本协议期间,有关报价、订单、回执或各方之间就本协议内容进行的其他往来通信中的任何冲突条款或附加条款,均以本协议为准。对本协议的任何修改均无约束力,除非通过书面进行修改并由每一方的授权代表签字。
++        2.可分割性
++        如果本协议中有任何规定被认定为无法执行,则删除相应规定,本协议仍然有效,除非该删除会防碍各方根本目的的实现(在这种情况下,本协议将立即终止)。
++
++        九、适用法律及争议解决
++
++        1.管辖法律适用
++        与本协议相关的任何争议解决(包括但不限于诉讼、仲裁等)均受适用中华人民共和国法律管辖。选择其它任何国家和地区的法律规则不予适用。
++        2.终止
++        如果本软件成为或在任一方看来可能成为任何知识产权侵权索赔之标的,则任一方可立即终止本协议。
++        本协议在终止之前有效。您可以随时终止本协议,但必须同时销毁本软件的全部正本和副本。如果您未遵守本协议的任何规定,则本协议将不经我们发出通知立即终止。终止时,您必须销毁本软件的全部正本和副本,并且需承担因未遵守本协议而导致的法律责任。
++
++        本协议提供中英文两种版本,以上任何内容如有歧义,以中文版本为准。
++
++银河麒麟操作系统隐私政策声明
++版本发布日期:【2021】年【7】月【30】日
++版本生效日期:【2021】年【7】月【30】日
++
++        我们非常重视个人信息和隐私保护,为了保证合法、合理、适度的收集、存储、使用您的个人隐私信息,并在安全、可控的情况下进行传输、存储,我们制定了本声明。我们将会按照法律要求和业界成熟安全标准,为您的个人信息提供相应的安全保护措施。
++
++        本声明将向您说明以下内容:
++        一、关于收集和使用您的个人信息
++        二、如何存储和保护您的个人信息
++        三、如何管理您的个人信息
++        四、关于第三方软件/服务的隐私说明
++        五、关于未成年人使用产品
++        六、本声明如何更新
++        七、如何联系我们
++
++        一、如何收集和使用您的个人信息
++
++        1.收集个人信息的情况
++        我们在您使用本产品过程中收集相关的信息,主要为了向您提供更高质量、更易用的产品和更好的服务。收集的部分信息由您直接提供,其他信息则由我们通过您与产品的交互以及对产品的使用和体验收集而来。除非我们已根据适用的法律规定取得您的明示同意,我们不会主动收集并处理您的个人信息。
++        1)本产品授权许可机制,会根据您所使用计算机的网卡、固件和主板等信息通过加密机制和转换方法生成申请产品正式授权许可的机器码;您将该机器码发送给麒麟软件商务人员后,可根据合同及相关协议申请正式许可。该机器码不直接包含您所使用计算机的网卡、固件和主板等设备的具体信息。
++        2)本产品软件商店的服务器端,会根据您所使用计算机的CPU类型信息以及IP地址进行连接,同时我们会收集您使用本产品软件商店的相关信息,包括但不限于打开软件商店的时间、各页面之间的交互、搜索内容、下载的内容等,收集的相关信息一般记录在软件商店的服务端系统的日志中,具体存储位置可能因为不同的服务场景有所变动。
++        3)本产品的升级更新,会根据您所使用计算机的IP地址进行连接,以便实现您升级更新系统;
++        4)因业务往来及技术服务等向您收集电子邮箱、电话、姓名等个人信息。
++        5)本产品的生物特征管理工具支持系统组件使用生物特征进行认证,包括指纹、指静脉、虹膜、声纹等。您录入的生物特征信息将储存在本地计算机,这部分信息我们仅接收验证结果,不会收集和上传。如您不需要使用生物特征进行系统认证,可以在生物特征管理工具中关闭该功能。
++        6)本产品提供录音功能,您在使用本产品录音软件中,我们仅会将您使用录音时的音频内容存储在本地计算机中,不会进行收集和上传。
++        7)本产品的服务与支持功能会收集由您提供给我们的日志、电子邮箱、电话、姓名等信息,便于提供技术服务,我们将妥善保管您的个人信息。
++        8)本产品升级过程中,如需新增收集您的个人信息,我们将及时更新本部分内容。
++        2.使用个人信息的情况
++        我们严格遵守法律法规的规定及与您的约定,将收集的信息用于以下用途。若我们超出以下用途,我们将再次向您进行说明,并征得您的同意。
++        1)涉及产品许可机制、软件商店使用、系统更新维护、生物识别、在线服务等需要;
++        2)我们会利用相关信息协助提升产品的安全性、可靠性和可持续服务;
++        3)我们会利用收集的信息(例如您提供的电子邮件地址、电话等)直接与您沟通。例如,业务联系、技术支持或服务回访;
++        4)我们会利用收集的数据改进产品当前的易用性、提升产品用户体验(例如软件商店的个性化推荐)以及修复产品缺陷等;
++        5)我们会将所收集到的用户行为数据用于大数据分析。例如,我们将收集到的信息用于分析形成不包含任何个人信息的城市热力图或行业洞察报告。我们可能对外公开并与我们的合作伙伴分享经统计加工后不含身份识别内容的信息,用于了解用户如何使用我们服务或让公众了解我们服务的总体使用趋势;
++        6)我们可能使用您的相关信息,在相关网站、应用及其他渠道向您提供与您更加相关的广告;
++        7)为了遵从相关法律法规、部门规章、政府指令的相关要求。
++        3.信息的分享及对外提供
++        我们不会共享或转让您的个人信息至第三方,但以下情况除外:
++        1)获取您的明确同意后,我们会与第三方分享您的个人信息;
++        2)为实现外部处理的目的,我们可能与关联公司或其他第三方合作伙伴(第三方服务供应商、承包商、代理、应用开发者等)分享您的个人信息。我们将采用加密、匿名化处理等手段来保障您的信息安全;
++        3)我们不会对外公开披露所收集的个人信息,如必须公开披露时,我们会向您告知此次公开披露的目的、披露信息的类型及可能涉及的敏感信息,并征得您的同意;
++        4)随着我们业务的持续发展,我们有可能进行合并、收购、资产转让等交易,我们将告知相关情形,按照法律法规及不低于本声明所要求的标准继续保护或要求新的控制者继续保护您的个人信息;
++        5)如我们使用您的个人信息,超出了与收集时所声称的目的及具有直接或合理关联的范围,我们将在使用您的个人信息前,再次向您告知并征得您的同意。
++        4.征得授权同意的例外情况
++        1)与国家安全、国防安全等国家利益直接相关的;
++        2)与公共安全、公共卫生、公众知情等重大公共利益直接相关的;
++        3)与犯罪侦查、起诉、审判和判决执行等直接相关的;
++        4)出于维护您或其他个人的生命、财产等重大合法权益但又无法得到您本人同意的;
++        5)所收集的个人信息是您自行向社会公众公开的;
++        6)从合法公开披露的信息中收集的个人信息,如合法的新闻报道、政府信息公开等渠道;
++        7)根据您要求签订和履行合同所必需的;
++        8)用于维护所提供的产品或服务的安全稳定运行所必需的。如发现、处置产品或服务的故障;
++        9)出于公共利益开展统计或学术研究所必需,且其对外提供学术研究或描述的结果时,对结果中所包含的个人信息进行去标识化处理的;
++        10)法律法规规定的其他情形。
++
++        二、我们如何存储和保护您的个人信息
++
++        1.信息存储的地点
++        我们会按照法律法规规定,将在中国境内收集和产生的个人信息存储于中国境内。
++        2.信息存储的期限
++        一般而言,我们仅为实现目的所必需的时间或法律法规规定最短期限保留您的个人信息。记录在日志中的信息会按配置在一定期限保存及自动删除。
++        当我们的产品或服务发生停止运营的情形时,我们将以通知、公告等形式通知您,在合理的期限内删除您的个人信息或进行匿名化处理,并立即停止收集个人信息的活动。
++        3.我们如何保护这些信息
++        我们努力为用户的信息安全提供保障,以防止信息的丢失、不当使用、未经授权访问或披露。
++        我们将在合理的安全水平内使用安全保护措施以保障信息的安全。例如,我们会使用加密技术等手段来保护您的系统级账户密码。
++        我们建立专门的管理制度、流程和组织以保障信息的安全。例如,我们严格限制访问信息的人员范围,要求他们遵守保密义务。
++        4.应急预案
++        若发生个人信息泄露等安全事件,我们会依法启动应急预案,阻止安全事件扩大,并以推送通知、公告等形式告知您安全事件的情况、事件可能对您的影响以及我们将采取的补救措施。我们还将按照法律法规和监管部门要求,上报个人信息安全事件的处置情况。
++
++        三、如何管理您的个人信息
++
++        如果担心因使用本产品导致个人信息的泄露,您可根据个人及业务需要考虑暂停或不使用涉及个人信息的相关功能,如产品正式授权许可、应用商店、系统更新升级、生物识别等。
++在使用本产品之上的第三方软件/服务时,请注意个人隐私保护。
++
++        四、关于第三方软件/服务的隐私说明
++
++        本协议所指的第三方软件/服务是由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。
++        您在本产品之上安装或使用第三方软件/服务时,第三方软件/服务的隐私保护和法律责任由第三方软件/服务自行负责,请您仔细阅读和审查第三方软件/服务对应的隐私声明或条款,注意个人隐私保护。
++
++        五、关于未成年人使用产品
++
++        如果您是未成年人,则需要您的监护人同意您使用本产品并同意相关服务条款。除了提供产品所需要的信息外,我们不会刻意要求未成年人提供其他更多数据。在征得监护人同意或授权后,未成年人所创建的账户即被视为等同于其他任何账户。我们制定了专门的信息处理规则以保护使用本产品的未成年人的个人信息安全。监护人也应采取适当的预防措施保护未成年人,监督其对本产品的使用。
++
++        六、本声明如何更新
++
++        我们可能会随时更新本声明,并且会在变更时通过产品安装过程或公司网站向您展示变更后的声明。在这些变更生效后使用服务或根据这些条款授予许可的任何软件,即表示您同意新的条款。如果您不同意新的条款,则必须停止使用本产品,请关闭您在本产品之上创建的账户;如果您是监护人,请帮助您的未成年子女关闭他或她在本产品之上创建的账户。
++
++        七、如何联系我们
++
++        如您对本声明存在任何疑问,或任何相关的投诉、意见,可通过我们的客服热线400-089-1870、官方网站(www.kylinos.cn)或本产品中“服务与支持”应用进行咨询或反映。您也可以通过发送邮件至market@kylinos.cn与我们联系。
++        我们会及时、妥善处理您的问题。一般情况下,我们将在15个工作日内给予答复。
++        本声明自更新之日起生效,同时提供中英文两种版本,以上任何条款如有歧义,以中文版本为准。
++        最近更新日期:2021年11月1日
++
++地址:
++        天津市滨海高新区塘沽海洋科技园信安创业广场3号楼(300450)
++        北京市海淀区北四环西路9号银谷大厦(100190)
++        长沙市开福区芙蓉中路1段303号富兴世界金融中心T3栋(410000)
++        上海市徐汇区番禺路1028号数娱大厦(200030)
++电话:
++        天津(022)58955650    北京(010)51659955  
++        长沙(0731)88280170    上海(021)51098866
++传真:
++        天津(022)58955651    北京(010)62800607 
++        长沙(0731)88280166    上海(021)51062866
++公司网站:www.kylinos.cn
++电子邮件:support@kylinos.cn
++</translation>
++    </message>
++    <message>
++        <source>Dear users of Kylin operating system and relevant products,
++
++   Please read the clauses of the Agreement and the supplementary license (hereinafter collectively referred to as “the Agreement”) and the privacy policy statement for Kylin operating system (hereinafter referred to as “the Statement”). When you click the next step to confirm your complete understanding of the content, it shall indicate that you have accepted the clauses of the Agreement, and the Agreement shall take effect immediately and be legally binding on you and the Company.
++   “This product” in the Agreement and the Statement refers to “Kylin operating system software product” developed, produced and released by Kylinsoft Co., Ltd. and used for handling the office work or building the information infrastructure for enterprises and governments. “We” refers to Kylinsoft Co., Ltd. “You” refers to the users who pay the license fee and use the Kylin operating system and relevant products. 
++
++End User License Agreement of Kylin 
++Release date of the version: July 30, 2021
++Effective date of the version: July 30, 2021 
++
++The Agreement shall include the following content:
++I. 	User license 
++II. 	Java technology limitations
++III. 	Cookies and other technologies
++IV. 	Intellectual property clause
++V. 	Open source code
++VI. 	The third-party software/services
++VII. Escape clause
++VIII. Integrity and severability of the Agreement
++IX. 	Applicable law and dispute settlement
++
++   I. 	User license
++
++   According to the number of users who have paid for this product and the types of computer hardware, we shall grant the non-exclusive and non-transferable license to you, and shall only allow the licensed unit and the employees signing the labor contracts with the unit to use the attached software (hereinafter referred to as “the Software”) and documents as well as any error correction provided by Kylinsoft.
++   1.	User license for educational institutions
++   In the case of observing the clauses and conditions of the Agreement, if you are an educational institution, your institution shall be allowed to use the attached unmodified binary format software and only for internal use. “For internal use” here refers to that the licensed unit and the employees signing the labor contracts with the unit as well as the students enrolled by your institution can use this product. 
++   2.	Use of the font software
++   Font software refers to the software pre-installed in the product and generating font styles. You cannot separate the font software from the Software and cannot modify the font software in an attempt to add any function that such font software, as a part of this product, does not have when it is delivered to you, or you cannot embed the font software in the files provided as a commercial product for any fee or other remuneration, or cannot use it in equipment where this product is not installed. If you use the font software for other commercial purposes such as external publicity, please contact and negotiate with the font copyright manufacture to obtain the permissions for your relevant acts.
++
++   II. 	Java technology limitations 
++
++   You cannot change the “Java Platform Interface” (referred to as “JPI”, that is, the classes in the “java” package or any sub-package of the “java” package), whether by creating additional classes in JPI or by other means to add or change the classes in JPI. If you create an additional class as well as one or multiple relevant APIs, and they (i) expand the functions of Java platform; And (ii) may be used by the third-party software developers to develop additional software that may call the above additional APIs, you must immediately publish the accurate description of such APIs widely for free use by all developers. You cannot create or authorize other licensees to create additional classes, interfaces or sub-packages marked as “java”, “javax” and “sun” in any way, or similar agreements specified by Sun in any naming agreements. See the appropriate version of the Java Runtime Environment Binary Code License (located at http://jdk.java.net at present) to understand the availability of runtime code jointly distributed with Java mini programs and applications.
++
++   III. 	Cookies and other technologies
++
++   In order to help us better understand and serve the users, our website, online services and applications may use the “Cookie” technology. Such Cookies are used to store the network traffic entering and exiting the system and the traffic generated due to detection errors, so they must be set. We shall understand how you interact with our website and online services by using such Cookies.
++   If you want to disable the Cookie and use the Firefox browser, you may set it in Privacy and Security Center of Firefox. If your use other browsers, please consult the specific schemes from the relevant suppliers. 
++   In accordance with Article 76, paragraph 5 of the Network Security Law of the People&apos;s Republic of China, personal information refers to all kinds of information recorded in electronic or other ways, which can identify the natural persons’ personal identity separately or combined with other information, including but not limited to the natural person’s name, date of birth, identity certificate number, personal biological identification information, address and telephone number, etc. If Cookies contain the above information, or the combined information of non-personal information and other personal information collected through Cookie, for the purpose of this privacy policy, we shall regard the combined information as personal privacy information, and shall provide the corresponding security protection measures for your personal information by referring to Kylin Privacy Policy Statement.
++
++   IV. 	Intellectual property clause
++
++   1.	Trademarks and Logos
++   This product shall be protected by the copyright law, trademark law and other laws and international intellectual property conventions. Title to the product and all associated intellectual property rights are retained by us or its licensors. No right, title or interest in any trademark, service mark, logo or trade name of us or its licensors is granted under the Agreement. Any use of Kylinsoft marked by you shall be in favor of Kylinsoft, and without our consent, you shall not arbitrarily use any trademark or sign of Kylinsoft.
++  2.	Duplication, modification and distribution
++   If the Agreement remains valid for all duplicates, you may and must duplicate, modify and distribute software observing GNU GPL-GNU General Public License agreement among the Kylin operating system software products in accordance with GNU GPL-GNU General Public License, and must duplicate, modify and distribute other Kylin operating system software products not observing GNU GPL-GNU General Public License agreement in accordance with relevant laws and other license agreements, but no derivative release version based on the Kylin operating system software products can use any of our trademarks or any other signs without our written consent.
++   Special notes: Such duplication, modification and distribution shall not include any software, to which GNU GPL-GNU General Public License does not apply, in this product, such as the software store, input method software, font library software and third-party applications contained by the Kylin operating system software products. You shall not duplicate, modify (including decompilation or reverse engineering) or distribute the above software unless prohibited by applicable laws. 
++
++   V. 	Open source code
++
++   For any open source codes contained in this product, any clause of the Agreement shall not limit, constrain or otherwise influence any of your corresponding rights or obligations under any applicable open source code license or all kinds of conditions you shall observe.
++
++   VI.  The third-party software/services
++
++   The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer. This product may contain or be bundled with the third-party software/services to which the separate license agreements are attached. When you use any third-party software/services with separate license agreements, you shall be bound by such separate license agreements.
++   We shall not have any right to control the third-party software/services in these products and shall not expressly or implicitly ensure or guarantee the legality, accuracy, effectiveness or security of the acts of their providers or users.
++
++   VII. 	Escape clause
++
++   1.	Limited warranty
++    We guarantee to you that within ninety (90) days from the date when you purchase or obtain this product in other legal ways (subject to the date of the sales contract), the storage medium (if any) of this product shall not be involved in any defects in materials or technology when it is normally used. All compensation available to you and our entire liability under this limited warranty will be for us to choose to replace this product media or refund the fee paid for this product.
++   2.	Disclaimer
++   In addition to the above limited warranty, the Software is provided “as is” without any express or implied condition statement and warranty, including any implied warranty of merchantability, suitability for a particular purpose or non-infringement, except that this disclaimer is deemed to be legally invalid.
++   3.	Limitation of responsibility
++   To the extent permitted by law, under any circumstances, no matter what theory of liability is adopted, no matter how it is caused, for any loss of income, profit or data caused by or related to the use or inability to use the Software, or for special indirect consequential incidental or punitive damages, neither we nor its licensors shall be liable (even if we have been informed of the possibility of such damages). According to the Agreement, in any case, whether in contract tort (including negligence) or otherwise, our liability to you will not exceed the amount you pay for the Software. The above limitations will apply even if the above warranty fails of its essential purpose.
++
++   VIII. 	Integrity and severability of the Agreement
++
++   1.	The integrity of the Agreement
++  The Agreement is an entire agreement on the product use concluded by us with you. It shall replace all oral or written contact information, suggestions, representations and guarantees inconsistent with the Agreement previous or in the same period. During the period of the Agreement, in case of any conflict clauses or additional clauses in the relevant quotations, orders or receipts or in other correspondences regarding the content of the Agreement between the parties, the Agreement shall prevail. No modification of the Agreement will be binding, unless in writing and signed by an authorized representative of each party.
++   2.	Severability of the Agreement
++   If any provision of the Agreement is deemed to be unenforceable, the deletion of the corresponding provision will still be effective, unless the deletion will hinder the realization of the fundamental purpose of the parties (in which case, the Agreement will be terminated immediately).
++
++   IX. 	Applicable law and dispute settlement
++
++   1.	Application of governing laws
++   Any dispute settlement (including but not limited to litigation and arbitration) related to the Agreement shall be governed by the laws of the People’s Republic of China. The legal rules of any other countries and regions shall not apply.
++   2.	Termination
++   If the Software becomes or, in the opinion of either party, may become the subject of any claim for intellectual property infringement, either party may terminate the Agreement immediately.
++   The Agreement is effective until termination. You may terminate the Agreement at any time, but you must destroy all originals and duplicates of the Software. The Agreement will terminate immediately without notice from us if you fail to comply with any provision of the Agreement. At the time of termination, you must destroy all originals and duplicates of such software, and shall be legally liable for not observing the Agreement.
++
++   The Agreement shall be in both Chinese and English, and in case of ambiguity between any content above, the Chinese version shall prevail.
++
++Privacy Policy Statement of Kylin Operating System
++Release date of the version: July 30, 2021
++Effective date of the version: July 30, 2021
++
++We attach great importance to personal information and privacy protection. In order to guarantee the legal, reasonable and appropriate collection, storage and use of your personal privacy information and the transmission and storage in the safe and controllable circumstances, we hereby formulate this Statement. We shall provide your personal information with corresponding security protection measures according to the legal requirements and mature security standards in the industry.
++   The Statement shall include the following content:
++    I. 	Collection and use your personal information
++   II. 	How to store and protect your personal information
++   III. 	How to manage your personal information
++   IV. 	Privacy of the third-party software/services
++   V. 	Minors’ use of the products
++   VI. 	How to update this Statement
++   VII. How to contact us
++
++    I. 	How to collect and use your personal information
++
++   1.	The collection of personal information
++   We shall collect the relevant information when you use this product mainly to provide you with higher-quality products, more usability and better services. Part of information collected shall be provided by you directly, and other information shall be collected by us through your interaction with the product as well as your use and experience of the product. We shall not actively collect and deal with your personal information unless we have obtained your express consent according to the applicable legal stipulations.
++   1)	The licensing mechanism for this product allows you to apply for the formal license of the product in accordance with the contract and relevant agreements after you send a machine code to the commercial personnel of Kylinsoft, and the machine code is generated through encryption and conversion according to the information of the computer used by you, such as network card, firmware and motherboard. This machine code shall not directly contain the specific information of the equipment, such as network card, firmware and motherboard, of the computer used by you.
++   2)	Server of the software store of this product shall connect it according to the CPU type information and IP address of the computer used by you; at the same time, we shall collect the relevant information of your use of the software store of this product, including but not limited to the time of opening the software store, interaction between the pages, search content and downloaded content. The relevant information collected is generally recorded in the log of server system of software store, and the specific storage position may change due to different service scenarios.
++   3)	Upgrading and updating of this product shall be connected according to the IP address of the computer used by you, so that you can upgrade and update the system;
++   4)	Your personal information, such as E-mail address, telephone number and name, shall be collected due to business contacts and technical services.
++   5)	The biological characteristic management tool support system components of this product shall use the biological characteristics for authentication, including fingerprint, finger vein, iris and voiceprint. The biological characteristic information input by you shall be stored in the local computer, and for such part of information, we shall only receive the verification results but shall not collect or upload it. If you do not need to use the biological characteristics for the system authentication, you may disable this function in the biological characteristic management tool.
++   6)	This product shall provide the recording function. When you use the recording function of this product, we shall only store the audio content when you use the recording in the local computer but shall not collect or upload the content.
++   7)	The service and support functions of this product shall collect the information provided by you for us, such as log, E-mail, telephone and name, so as to make it convenient to provide the technical services, and we shall properly keep your personal information.
++   8)	In the upgrading process of this product, if we need to collect additional personal information of yours, we shall timely update this part of content.
++
++  2.	Use of personal information
++   We shall strictly observe the stipulations of laws and regulations and agreements with you to use the information collected for the following purposes. In case of exceeding the scope of following purposes, we shall explain to you again and obtain your consent.
++   1)	The needs such as product licensing mechanism, use of software store, system updating and maintenance, biological identification and online services shall be involved;
++   2)	We shall utilize the relevant information to assist in promoting the product security, reliability and sustainable service;
++   3)	We shall directly utilize the information collected (such as the E-mail address and telephone provided by you) to communicate with you directly, for example, business contact, technical support or follow-up service visit;
++   4)	We shall utilize the data collected to improve the current usability of the product, promote the product’s user experience (such as the personalized recommendation of software store) and repair the product defects, etc.;
++   5)	We shall use the user behavior data collected for data analysis. For example, we shall use the information collected to analyze and form the urban thermodynamic chart or industrial insight report excluding any personal information. We may make the information excluding identity identification content upon the statistics and processing public and share it with our partners, to understand how the users use our services or make the public understand the overall use trend of our services;
++   6)	We may use your relevant information and provide you with the advertising more related to you on relevant websites and in applications and other channels;
++   7)	In order to follow the relevant requirements of relevant laws and regulations, departmental regulations and rules and governmental instructions.
++
++   3.	Information sharing and provision
++   We shall not share or transfer your personal information to any third party, except for the following circumstances:
++   1)	After obtaining your clear consent, we shall share your personal information with the third parities;
++   2)	In order to achieve the purpose of external processing, we may share your personal information with the related companies or other third-party partners (the third-party service providers, contractors, agents and application developers). We shall protect your information security by means like encryption and anonymization;
++    3)	We shall not publicly disclose the personal information collected. If we must disclose it publicly, we shall notify you of the purpose of such public disclosure, type of information disclosed and the sensitive information that may be involved, and obtain your consent;
++   4)	With the continuous development of our business, we may carry out the transactions, such as merger, acquisition and asset transfer, and we shall notify you of the relevant circumstances, and continue to protect or require the new controller to continue to protect your personal information according to laws and regulations and the standards no lower than that required by this Statement;
++    5)	If we use your personal information beyond the purpose claimed at the time of collection and the directly or reasonably associated scope, we shall notify you again and obtain your consent before using your personal information.
++
++   4.	Exceptions with authorized consent
++   1)	It is directly related to national security, national defense security and other national interests;
++   2)	It is directly related to public safety, public health and public knowledge and other major public interests;
++   3)	It is directly related to crime investigation, prosecution, judgment and execution of judgment;
++   4)	It aims to safeguard the life, property and other major legal rights and interests of you or others but it is impossible to obtain your own consent;
++   5)	The personal information collected is disclosed to the public by yourself;
++   6)	Personal information collected from legally publicly disclosed information, such as legal news reports, government information disclosure and other channels;
++   7)	It is necessary to sign and perform of the contract according to your requirement;
++   8)	It is necessary to maintain the safe and stable operation of the provided products or services, including finding and handling any fault of products or services;
++   9)	It is necessary to carry out statistical or academic research for public interest, and when the results of academic research or description are provided, the personal information contained in the results is de-identified;
++   10)	Other circumstances specified in the laws and regulations.
++
++   II. 	How to store and protect personal information
++
++   1.	Information storage place
++   We shall store the personal information collected and generated in China within the territory of China in accordance with laws and regulations.
++   2.	Information storage duration
++  Generally speaking, we shall retain your personal information for the time necessary to achieve the purpose or for the shortest term stipulated by laws and regulations. Information recorded in the log shall be kept for a specified period and be automatically deleted according to the configuration.
++   When operation of our product or services stops, we shall notify you in the forms such as notification and announcement, delete your personal information or conduct anonymization within a reasonable period and immediately stop the activities collecting the personal information.
++   3.	How to protect the information
++   We shall strive to provide guarantee for the users’ information security, to prevent the loss, improper use, unauthorized access or disclosure of the information.
++   We shall use the security protection measures within the reasonable security level to protect the information security. For example, we shall protect your system account and password by means like encryption.
++   We shall establish the special management systems, processes and organizations to protect the information security. For example, we shall strictly restrict the scope of personnel who access to the information, and require them to observe the confidentiality obligation.
++   4.	Emergency response plan
++    In case of security incidents, such as personal information disclosure, we shall start the emergency response plan according to law, to prevent the security incidents from spreading, and shall notify you of the situation of the security incidents, the possible influence of the incidents on you and the remedial measures we will take, in the form of pushing the notifications and announcements. We will also report the disposition of the personal information security events according to the laws, regulations and regulatory requirements.
++
++   III. 	How to manage your personal information
++
++   If you worry about the personal information disclosure caused by using this product, you may consider suspending or not using the relevant functions involving the personal information, such as the formal license of the product, application store, system updating and upgrading and biological identification, according to the personal and business needs.
++   Please pay attention to the personal privacy protection at the time of using the third-party software/services in this product.
++
++   IV. 	Privacy of the third-party software/services
++
++   The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer.
++   When you install or use the third-party software/services in this product, the privacy protection and legal responsibility of the third-party software/services shall be independently borne by the third-party software/services. Please carefully read and examine the privacy statement or clauses corresponding to the third-party software/services, and pay attention to the personal privacy protection.
++
++   V. 	Minors’ use of the products
++
++   If you are a minor, you shall obtain your guardian’s consent on your use of this product and the relevant service clauses. Except for the information required by the product, we shall not deliberately require the minors to provide more data. With the guardians’ consent or authorization, the accounts created by the minors shall be deemed to be the same as any other accounts. We have formulated special information processing rules to protect the personal information security of minors using this product. The guardians shall also take the appropriate preventive measures to protect the minors and supervise their use of this product.
++
++   VI. 	How to update this Statement
++
++   We may update this Statement at any time, and shall display the updated statement to you through the product installation process or the company’s website at the time of updating. After such updates take effect, if you use such services or any software permitted according to such clauses, you shall be deemed to agree on the new clauses. If you disagree on the new clauses, then you must stop using this product, and please close the account created by you in this product; if you are a  guardian, please help your minor child to close the account created by him/her in this product.
++
++   VII. 	How to contact us
++
++  If you have any question, or any complaints or opinions on this Statement, you may seek advice through our customer service hotline 400-089-1870, or the official website (www.kylinos.cn), or “service and support” application in this product. You may also contact us by E-mail (market@kylinos.cn).
++   We shall timely and properly deal with them. Generally, a reply will be made within 15 working days.
++   The Statement shall take effect from the date of updating. The Statement shall be in Chinese and English at the same time and in case of any ambiguity of any clause above, the Chinese version shall prevail.
++   Last date of updating: November 1, 2021
++
++Address: Building 3, Xin’an Entrepreneurship Plaza, Tanggu Marine Science and Technology Park, Binhai High-tech Zone, Tianjin (300450)
++             Silver Valley Tower, No. 9, North Forth Ring West Road, Haidian District, Beijing (100190)
++             Building T3, Fuxing World Financial Center, No. 303, Section 1 of Furong Middle Road, Kaifu District, Changsha City (410000)
++             Digital Entertainment Building, No. 1028, Panyu Road, Xuhui District, Shanghai (200030)
++Tel.: Tianjin (022) 58955650       Beijing (010) 51659955
++             Changsha (0731) 88280170    Shanghai (021) 51098866
++Fax: Tianjin (022) 58955651       Beijing (010) 62800607
++             Changsha (0731) 88280166    Shanghai (021) 51062866
++
++Company website: www.kylinos.cn
++E-mail: support@kylinos.cn</source>
++        <translation type="vanished">尊敬的银河麒麟操作系统及相关产品用户:
++   请您仔细阅读本协议条款、补充许可条款(统称“协议”)及银河麒麟操作系统隐私政策声明(以下简称“声明”)。当您确认了解并点击下一步时,即表明您已接受本协议的条款,本协议将立即生效,对您和本公司双方具有法律约束力。
++   本协议及声明中的“本产品”是指由麒麟软件有限公司开发并制作发行的用于办公或构建企业及政府的信息化基础设施——“银河麒麟操作系统软件产品”。“我们”是指麒麟软件有限公司。“您”是指支付授权费用并使用银河麒麟操作系统及相关产品的用户。
++
++银河麒麟最终用户使用许可协议
++版本发布日期:【2021】年【7】月【30】日
++版本生效日期:【2021】年【7】月【30】日
++
++本协议将向您说明以下内容:
++一、使用许可
++二、Java技术限制
++三、Cookie和其他技术
++四、知识产权条款
++五、开放源代码说明
++六、第三方软件/服务说明
++七、免责条款
++八、协议完整性及可分割性说明
++九、适用法律及争议解决
++一、使用许可
++
++    按照已经为本产品支付费用的用户数目及计算机硬件类型,我们向您授予非排他、不可转让的许可,仅允许被授权人单位及与其签订劳动合同的员工使用由麒麟软件提供的随附软件和文档以及任何错误纠正。
++   1.教育机构使用许可
++    在遵守本协议的条款和条件的情况下,如果您是教育机构,允许贵机构仅在内部使用随附的未经修改的二进制格式的软件。此处的“在内部使用”是指被授权人单位及与其签订劳动合同的员工以及在贵机构入学的学生使用本产品。 
++   2.字型软件使用
++   字型软件指本产品中预装的和生成字体样式的软件。您不可从软件中分离字型软件,不可改动字型软件,以新增此等字型软件被作为本产品的一部分交付予您时所不具备的任何功能,不可将字型软件嵌入作为商业产品提供以换取收费或其他报酬的文件、不可脱离安装了本产品的机器使用。如将字型软件用于对外宣传等其他商业用途时,请您与字体版权厂商联系协商以获得对您相关行为的许可。
++
++二、Java技术限制
++
++   您不可更改“Java平台界面”(简称“JPI”,即指明为“java”包或“java”包的任何子包中的类),无论通过在JPI中创建额外的类,还是通过其他方式导致对JPI中的类进行增添或更动,均为不可。如果您创建一个额外的类以及一个或多个相关的API,而它们(i)扩展Java平台的功能;并且(ii)可供第三方软件开发者用于开发可调用上述额外API的额外软件,则您必须迅即广泛公布对此种API的准确说明,以供所有开发者免费使用。您不可创建、或授权其他被许可人创建以任何方式标示为“java”、“javax”、“sun”的额外的类、界面、子包或Sun在任何命名约定中指明的类似约定。参见Java运行时环境二进制代码许可的适当版本(目前位于http://jdk.java.net),以了解可与Java小程序和应用程序共同分发的运行时代码的可供情况。
++
++三、Cookie和其他技术
++
++   为帮助我们更好地了解并服务用户,我们的网站、在线服务和应用程序可能会使用“Cookie”技术。这些Cookie用于存储进出系统的网络流量以及因检测错误而生成的流量,因此必须设置。 我们通过使用这些Cookie来了解您与我们的网站和在线服务如何进行交互。 
++   如果您想禁用 Cookie 并且使用的是Firefox浏览器,可在Firefox的隐私与安全中心进行设置。如果您使用的是其他浏览器,请向相关供应商咨询具体方案。
++依照《中华人民共和国网络安全法》第七十六条第五款,个人信息,是指以电子或者其他方式记录的能够单独或者与其他信息结合识别自然人个人身份的各种信息,包括但不限于自然人的姓名、出生日期、身份证件号码、个人生物识别信息、住址、电话号码等。如果Cookie中包含上述信息,或者存在通过Cookie收集的非个人信息与其他个人信息合并后的信息,出于本隐私政策的目的,我们会将合并后的信息视为个人隐私信息,将参照银河麒麟隐私政策声明,为您的个人信息提供相应的安全保护措施。
++
++四、知识产权条款
++
++   1.商标和标识
++    本产品受到版权(著作权)法、商标法和其他法律及国际知识产权公约的保护。我们或其许可方保留对本产品的所有权及所有相关的知识产权。对于我们或其许可方的任何商标、服务标记、标识或商号的任何权利、所有权或利益,本协议均不作任何授权。您对麒麟软件标记的任何使用都应有利于麒麟软件,未经我们书面同意,不得擅自使用麒麟软件任何商标、标识。 
++   2.关于复制、修改及分发
++   如果在所有复制品中维持本协议书不变,您可以且必须根据《GNU GPL-GNU通用公共许可证》复制、修改及分发银河麒麟操作系统软件产品中遵守《GNU GPL-GNU通用公共许可证》协议的软件,其他不遵守《GNU GPL-GNU通用公共许可证》协议的银河麒麟操作系统软件产品必须根据相关法律、其他许可协议进行复制、修改及分发,但任何以银河麒麟操作系统软件产品为基础的衍生发行版未经我们的书面授权不能使用任何我们的商标或其他任何标志。
++   特别注意:该复制、修改及分发不包括本产品中包含的任何不适用《GNU GPL-GNU通用公共许可证》的软件,如银河麒麟操作系统软件产品中包含的软件商店、输入法软件、字库软件、第三方应用软件等。除非适用法律予以禁止,否则您不得对上述软件进行复制、修改(包括反编译或反向工程)、分发。
++
++五、开放源代码说明
++
++   对于本产品中包含的任何开放源代码,本协议的任何条款均不得限制、约束或以其它方式影响任何适用开放源代码许可证赋予您的任何相应的权利或者义务或您应遵守的各种条件。
++
++六、第三方软件/服务说明
++
++   本协议所指的第三方软件/服务是指由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。本产品可能包含或捆绑有第三方软件/服务,这些第三方软件/服务附带单独的许可协议,您使用附带单独许可协议的任何第三方软件/服务需受到该单独许可协议的约束。
++我们不对本产品中的第三方软件/服务拥有任何控制权,也不对其提供方或用户行为的合法性、准确性、有效性、安全性进行任何明示或默示的保证或担保。
++
++七、免责条款
++
++   1.有限担保
++    我们向您担保,自购买或其他合法取得本产品之日起九十(90)天内(以销售合同日期为准),本产品的存储介质(如果有)在正常使用的情况下无材料和工艺方面的缺陷。在本有限担保项下,您可获得的所有补偿及我们的全部责任为由我们选择更换本产品介质或退还本产品的购买费用。
++    2.免责声明
++    除上述有限担保外,本软件按“原样”提供,不提供任何明示或默示的条件、陈述及担保,包括对适销性、对特定用途的适用性或非侵权性的任何默示的担保,均不予负责,但本免责声明被认定为法律上无效的情况除外。
++    3.责任限制
++    在法律允许范围内,无论在何种情况下,无论采用何种有关责任的理论,无论因何种方式导致,对于因使用或无法使用本软件引起的或与之相关的任何收益损失、利润或数据损失,或者对于特殊的、间接的、后果性的、偶发的或惩罚性的损害赔偿,我们或其许可方均不承担任何责任(即使我们已被告知可能出现上述损害赔偿)。根据本协议,在任何情况下,无论是在合同、侵权行为(包括过失)方面,还是在其他方面,我们对您的责任将不超过您就本软件所支付的金额。即使上述担保未能达到其基本目的,上述限制仍然适用。
++
++八、协议完整性及可分割性说明
++
++1.协议完整性
++    本协议是我们就产品使用与您达成的完整协议。它取代此前或同期的所有和本协议不一致的口头或书面往来信息、建议、陈述和担保。在本协议期间,有关报价、订单、回执或各方之间就本协议内容进行的其他往来通信中的任何冲突条款或附加条款,均以本协议为准。对本协议的任何修改均无约束力,除非通过书面进行修改并由每一方的授权代表签字。
++2.可分割性
++如果本协议中有任何规定被认定为无法执行,则删除相应规定,本协议仍然有效,除非该删除会防碍各方根本目的的实现(在这种情况下,本协议将立即终止)。
++
++九、适用法律及争议解决
++
++1.管辖法律适用
++    与本协议相关的任何争议解决(包括但不限于诉讼、仲裁等)均受适用中华人民共和国法律管辖。选择其它任何国家和地区的法律规则不予适用。
++2.终止
++如果本软件成为或在任一方看来可能成为任何知识产权侵权索赔之标的,则任一方可立即终止本协议。
++    本协议在终止之前有效。您可以随时终止本协议,但必须同时销毁本软件的全部正本和副本。如果您未遵守本协议的任何规定,则本协议将不经我们发出通知立即终止。终止时,您必须销毁本软件的全部正本和副本,并且需承担因未遵守本协议而导致的法律责任。
++
++本协议提供中英文两种版本,以上任何内容如有歧义,以中文版本为准。
++
++
++银河麒麟操作系统隐私政策声明
++版本发布日期:【2021】年【7】月【30】日
++版本生效日期:【2021】年【7】月【30】日
++
++   我们非常重视个人信息和隐私保护,为了保证合法、合理、适度的收集、存储、使用您的个人隐私信息,并在安全、可控的情况下进行传输、存储,我们制定了本声明。我们将会按照法律要求和业界成熟安全标准,为您的个人信息提供相应的安全保护措施。
++
++本声明将向您说明以下内容:
++一、关于收集和使用您的个人信息
++二、如何存储和保护您的个人信息
++三、如何管理您的个人信息
++四、关于第三方软件/服务的隐私说明
++五、关于未成年人使用产品
++六、本声明如何更新
++七、如何联系我们
++
++一、如何收集和使用您的个人信息
++
++    1.收集个人信息的情况
++   我们在您使用本产品过程中收集相关的信息,主要为了向您提供更高质量、更易用的产品和更好的服务。收集的部分信息由您直接提供,其他信息则由我们通过您与产品的交互以及对产品的使用和体验收集而来。除非我们已根据适用的法律规定取得您的明示同意,我们不会主动收集并处理您的个人信息。
++   1)本产品授权许可机制,会根据您所使用计算机的网卡、固件和主板等信息通过加密机制和转换方法生成申请产品正式授权许可的机器码;您将该机器码发送给麒麟软件商务人员后,可根据合同及相关协议申请正式许可。该机器码不直接包含您所使用计算机的网卡、固件和主板等设备的具体信息。
++   2)本产品软件商店的服务器端,会根据您所使用计算机的CPU类型信息以及IP地址进行连接,同时我们会收集您使用本产品软件商店的相关信息,包括但不限于打开软件商店的时间、各页面之间的交互、搜索内容、下载的内容等,收集的相关信息一般记录在软件商店的服务端系统的日志中,具体存储位置可能因为不同的服务场景有所变动。
++   3)本产品的升级更新,会根据您所使用计算机的IP地址进行连接,以便实现您升级更新系统;
++   4)因业务往来及技术服务等向您收集电子邮箱、电话、姓名等个人信息。
++   5)本产品的生物特征管理工具支持系统组件使用生物特征进行认证,包括指纹、指静脉、虹膜、声纹等。您录入的生物特征信息将储存在本地计算机,这部分信息我们仅接收验证结果,不会收集和上传。如您不需要使用生物特征进行系统认证,可以在生物特征管理工具中关闭该功能。
++   6)本产品提供录音功能,您在使用本产品录音软件中,我们仅会将您使用录音时的音频内容存储在本地计算机中,不会进行收集和上传。
++   7)本产品的服务与支持功能会收集由您提供给我们的日志、电子邮箱、电话、姓名等信息,便于提供技术服务,我们将妥善保管您的个人信息。
++   8)本产品升级过程中,如需新增收集您的个人信息,我们将及时更新本部分内容。
++   2.使用个人信息的情况
++   我们严格遵守法律法规的规定及与您的约定,将收集的信息用于以下用途。若我们超出以下用途,我们将再次向您进行说明,并征得您的同意。
++   1)涉及产品许可机制、软件商店使用、系统更新维护、生物识别、在线服务等需要;
++   2)我们会利用相关信息协助提升产品的安全性、可靠性和可持续服务;
++   3)我们会利用收集的信息(例如您提供的电子邮件地址、电话等)直接与您沟通。例如,业务联系、技术支持或服务回访;
++   4)我们会利用收集的数据改进产品当前的易用性、提升产品用户体验(例如软件商店的个性化推荐)以及修复产品缺陷等;
++   5)我们会将所收集到的用户行为数据用于大数据分析。例如,我们将收集到的信息用于分析形成不包含任何个人信息的城市热力图或行业洞察报告。我们可能对外公开并与我们的合作伙伴分享经统计加工后不含身份识别内容的信息,用于了解用户如何使用我们服务或让公众了解我们服务的总体使用趋势;
++
++   6)我们可能使用您的相关信息,在相关网站、应用及其他渠道向您提供与您更加相关的广告;
++   7)为了遵从相关法律法规、部门规章、政府指令的相关要求。
++   3.信息的分享及对外提供
++   我们不会共享或转让您的个人信息至第三方,但以下情况除外:
++   1)获取您的明确同意后,我们会与第三方分享您的个人信息;
++   2)为实现外部处理的目的,我们可能与关联公司或其他第三方合作伙伴(第三方服务供应商、承包商、代理、应用开发者等)分享您的个人信息。我们将采用加密、匿名化处理等手段来保障您的信息安全;
++   3)我们不会对外公开披露所收集的个人信息,如必须公开披露时,我们会向您告知此次公开披露的目的、披露信息的类型及可能涉及的敏感信息,并征得您的同意;
++   4)随着我们业务的持续发展,我们有可能进行合并、收购、资产转让等交易,我们将告知相关情形,按照法律法规及不低于本声明所要求的标准继续保护或要求新的控制者继续保护您的个人信息;
++   5)如我们使用您的个人信息,超出了与收集时所声称的目的及具有直接或合理关联的范围,我们将在使用您的个人信息前,再次向您告知并征得您的同意。
++   4.征得授权同意的例外情况
++   1)与国家安全、国防安全等国家利益直接相关的;
++   2)与公共安全、公共卫生、公众知情等重大公共利益直接相关的;
++   3)与犯罪侦查、起诉、审判和判决执行等直接相关的;
++   4)出于维护您或其他个人的生命、财产等重大合法权益但又无法得到您本人同意的;
++   5)所收集的个人信息是您自行向社会公众公开的;
++   6)从合法公开披露的信息中收集的个人信息,如合法的新闻报道、政府信息公开等渠道;
++   7)根据您要求签订和履行合同所必需的;
++   8)用于维护所提供的产品或服务的安全稳定运行所必需的。如发现、处置产品或服务的故障;
++   9)出于公共利益开展统计或学术研究所必需,且其对外提供学术研究或描述的结果时,对结果中所包含的个人信息进行去标识化处理的;
++   10)法律法规规定的其他情形。
++
++二、我们如何存储和保护您的个人信息
++
++   1.信息存储的地点
++   我们会按照法律法规规定,将在中国境内收集和产生的个人信息存储于中国境内。
++   2.信息存储的期限
++   一般而言,我们仅为实现目的所必需的时间或法律法规规定最短期限保留您的个人信息。记录在日志中的信息会按配置在一定期限保存及自动删除。
++   当我们的产品或服务发生停止运营的情形时,我们将以通知、公告等形式通知您,在合理的期限内删除您的个人信息或进行匿名化处理,并立即停止收集个人信息的活动。
++   3.我们如何保护这些信息
++   我们努力为用户的信息安全提供保障,以防止信息的丢失、不当使用、未经授权访问或披露。
++   我们将在合理的安全水平内使用安全保护措施以保障信息的安全。例如,我们会使用加密技术等手段来保护您的系统级账户密码。
++   我们建立专门的管理制度、流程和组织以保障信息的安全。例如,我们严格限制访问信息的人员范围,要求他们遵守保密义务。
++   4.应急预案
++   若发生个人信息泄露等安全事件,我们会依法启动应急预案,阻止安全事件扩大,并以推送通知、公告等形式告知您安全事件的情况、事件可能对您的影响以及我们将采取的补救措施。我们还将按照法律法规和监管部门要求,上报个人信息安全事件的处置情况。
++
++三、如何管理您的个人信息
++
++   如果担心因使用本产品导致个人信息的泄露,您可根据个人及业务需要考虑暂停或不使用涉及个人信息的相关功能,如产品正式授权许可、应用商店、系统更新升级、生物识别等。
++在使用本产品之上的第三方软件/服务时,请注意个人隐私保护。
++
++四、关于第三方软件/服务的隐私说明
++
++   本协议所指的第三方软件/服务是由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。
++您在本产品之上安装或使用第三方软件/服务时,第三方软件/服务的隐私保护和法律责任由第三方软件/服务自行负责,请您仔细阅读和审查第三方软件/服务对应的隐私声明或条款,注意个人隐私保护。
++
++五、关于未成年人使用产品
++
++   如果您是未成年人,则需要您的监护人同意您使用本产品并同意相关服务条款。除了提供产品所需要的信息外,我们不会刻意要求未成年人提供其他更多数据。在征得监护人同意或授权后,未成年人所创建的账户即被视为等同于其他任何账户。我们制定了专门的信息处理规则以保护使用本产品的未成年人的个人信息安全。监护人也应采取适当的预防措施保护未成年人,监督其对本产品的使用。
++
++六、本声明如何更新
++
++   我们可能会随时更新本声明,并且会在变更时通过产品安装过程或公司网站向您展示变更后的声明。在这些变更生效后使用服务或根据这些条款授予许可的任何软件,即表示您同意新的条款。如果您不同意新的条款,则必须停止使用本产品,请关闭您在本产品之上创建的账户;如果您是监护人,请帮助您的未成年子女关闭他或她在本产品之上创建的账户。
++
++七、如何联系我们
++
++   如您对本声明存在任何疑问,或任何相关的投诉、意见,可通过我们的客服热线400-089-1870、官方网站(www.kylinos.cn)或本产品中“服务与支持”应用进行咨询或反映。您也可以通过发送邮件至market@kylinos.cn与我们联系。
++   我们会及时、妥善处理您的问题。一般情况下,我们将在15个工作日内给予答复。
++   本声明自更新之日起生效,同时提供中英文两种版本,以上任何条款如有歧义,以中文版本为准。
++   最近更新日期:2021年11月1日
++
++地址:天津市滨海高新区塘沽海洋科技园信安创业广场3号楼(300450)
++北京市海淀区北四环西路9号银谷大厦(100190)
++长沙市开福区芙蓉中路1段303号富兴世界金融中心T3栋(410000)
++上海市徐汇区番禺路1028号数娱大厦(200030)
++电话:天津(022)58955650  北京(010)51659955  
++长沙(0731)88280170 上海(021)51098866</translation>
++    </message>
++    <message>
++        <source>Dear users of Kylin operating system and relevant products,
++
++   Please read the clauses of the Agreement and the supplementary license (hereinafter collectively referred to as “the Agreement”) and the privacy policy statement for Kylin operating system (hereinafter referred to as “the Statement”). When you click the next step to confirm your complete understanding of the content, it shall indicate that you have accepted the clauses of the Agreement, and the Agreement shall take effect immediately and be legally binding on you and the Company.
++   “This product” in the Agreement and the Statement refers to “Kylin operating system software product” developed, produced and released by Kylinsoft Co., Ltd. and used for handling the office work or building the information infrastructure for enterprises and governments. “We” refers to Kylinsoft Co., Ltd. “You” refers to the users who pay the license fee and use the Kylin operating system and relevant products. 
++
++End User License Agreement of Kylin 
++Release date of the version: July 30, 2021
++Effective date of the version: July 30, 2021 
++
++The Agreement shall include the following content:
++I. 	User license 
++II. 	Java technology limitations
++III. 	Cookies and other technologies
++IV. 	Intellectual property clause
++V. 	Open source code
++VI. 	The third-party software/services
++VII. Escape clause
++VIII. Integrity and severability of the Agreement
++IX. 	Applicable law and dispute settlement
++
++   I. 	User license
++
++   According to the number of users who have paid for this product and the types of computer hardware, we shall grant the non-exclusive and non-transferable license to you, and shall only allow the licensed unit and the employees signing the labor contracts with the unit to use the attached software (hereinafter referred to as “the Software”) and documents as well as any error correction provided by Kylinsoft.
++   1.	User license for educational institutions
++   In the case of observing the clauses and conditions of the Agreement, if you are an educational institution, your institution shall be allowed to use the attached unmodified binary format software and only for internal use. “For internal use” here refers to that the licensed unit and the employees signing the labor contracts with the unit as well as the students enrolled by your institution can use this product. 
++   2.	Use of the font software
++   Font software refers to the software pre-installed in the product and generating font styles. You cannot separate the font software from the Software and cannot modify the font software in an attempt to add any function that such font software, as a part of this product, does not have when it is delivered to you, or you cannot embed the font software in the files provided as a commercial product for any fee or other remuneration, or cannot use it in equipment where this product is not installed. If you use the font software for other commercial purposes such as external publicity, please contact and negotiate with the font copyright manufacture to obtain the permissions for your relevant acts.
++
++   II. 	Java technology limitations 
++
++   You cannot change the “Java Platform Interface” (referred to as “JPI”, that is, the classes in the “java” package or any sub-package of the “java” package), whether by creating additional classes in JPI or by other means to add or change the classes in JPI. If you create an additional class as well as one or multiple relevant APIs, and they (i) expand the functions of Java platform; And (ii) may be used by the third-party software developers to develop additional software that may call the above additional APIs, you must immediately publish the accurate description of such APIs widely for free use by all developers. You cannot create or authorize other licensees to create additional classes, interfaces or sub-packages marked as “java”, “javax” and “sun” in any way, or similar agreements specified by Sun in any naming agreements. See the appropriate version of the Java Runtime Environment Binary Code License (located at http://jdk.java.net at present) to understand the availability of runtime code jointly distributed with Java mini programs and applications.
++
++   III. 	Cookies and other technologies
++
++   In order to help us better understand and serve the users, our website, online services and applications may use the “Cookie” technology. Such Cookies are used to store the network traffic entering and exiting the system and the traffic generated due to detection errors, so they must be set. We shall understand how you interact with our website and online services by using such Cookies.
++   If you want to disable the Cookie and use the Firefox browser, you may set it in Privacy and Security Center of Firefox. If your use other browsers, please consult the specific schemes from the relevant suppliers. 
++   In accordance with Article 76, paragraph 5 of the Network Security Law of the People&apos;s Republic of China, personal information refers to all kinds of information recorded in electronic or other ways, which can identify the natural persons’ personal identity separately or combined with other information, including but not limited to the natural person’s name, date of birth, identity certificate number, personal biological identification information, address and telephone number, etc. If Cookies contain the above information, or the combined information of non-personal information and other personal information collected through Cookie, for the purpose of this privacy policy, we shall regard the combined information as personal privacy information, and shall provide the corresponding security protection measures for your personal information by referring to Kylin Privacy Policy Statement.
++
++   IV. 	Intellectual property clause
++
++   1.	Trademarks and Logos
++   This product shall be protected by the copyright law, trademark law and other laws and international intellectual property conventions. Title to the product and all associated intellectual property rights are retained by us or its licensors. No right, title or interest in any trademark, service mark, logo or trade name of us or its licensors is granted under the Agreement. Any use of Kylinsoft marked by you shall be in favor of Kylinsoft, and without our consent, you shall not arbitrarily use any trademark or sign of Kylinsoft.
++  2.	Duplication, modification and distribution
++   If the Agreement remains valid for all duplicates, you may and must duplicate, modify and distribute software observing GNU GPL-GNU General Public License agreement among the Kylin operating system software products in accordance with GNU GPL-GNU General Public License, and must duplicate, modify and distribute other Kylin operating system software products not observing GNU GPL-GNU General Public License agreement in accordance with relevant laws and other license agreements, but no derivative release version based on the Kylin operating system software products can use any of our trademarks or any other signs without our written consent.
++   Special notes: Such duplication, modification and distribution shall not include any software, to which GNU GPL-GNU General Public License does not apply, in this product, such as the software store, input method software, font library software and third-party applications contained by the Kylin operating system software products. You shall not duplicate, modify (including decompilation or reverse engineering) or distribute the above software unless prohibited by applicable laws. 
++
++   V. 	Open source code
++
++   For any open source codes contained in this product, any clause of the Agreement shall not limit, constrain or otherwise influence any of your corresponding rights or obligations under any applicable open source code license or all kinds of conditions you shall observe.
++
++   VI.  The third-party software/services
++
++   The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer. This product may contain or be bundled with the third-party software/services to which the separate license agreements are attached. When you use any third-party software/services with separate license agreements, you shall be bound by such separate license agreements.
++   We shall not have any right to control the third-party software/services in these products and shall not expressly or implicitly ensure or guarantee the legality, accuracy, effectiveness or security of the acts of their providers or users.
++
++   VII. 	Escape clause
++
++   1.	Limited warranty
++    We guarantee to you that within ninety (90) days from the date when you purchase or obtain this product in other legal ways (subject to the date of the sales contract), the storage medium (if any) of this product shall not be involved in any defects in materials or technology when it is normally used. All compensation available to you and our entire liability under this limited warranty will be for us to choose to replace this product media or refund the fee paid for this product.
++   2.	Disclaimer
++   In addition to the above limited warranty, the Software is provided “as is” without any express or implied condition statement and warranty, including any implied warranty of merchantability, suitability for a particular purpose or non-infringement, except that this disclaimer is deemed to be legally invalid.
++   3.	Limitation of responsibility
++   To the extent permitted by law, under any circumstances, no matter what theory of liability is adopted, no matter how it is caused, for any loss of income, profit or data caused by or related to the use or inability to use the Software, or for special indirect consequential incidental or punitive damages, neither we nor its licensors shall be liable (even if we have been informed of the possibility of such damages). According to the Agreement, in any case, whether in contract tort (including negligence) or otherwise, our liability to you will not exceed the amount you pay for the Software. The above limitations will apply even if the above warranty fails of its essential purpose.
++
++   VIII. 	Integrity and severability of the Agreement
++
++   1.	The integrity of the Agreement
++  The Agreement is an entire agreement on the product use concluded by us with you. It shall replace all oral or written contact information, suggestions, representations and guarantees inconsistent with the Agreement previous or in the same period. During the period of the Agreement, in case of any conflict clauses or additional clauses in the relevant quotations, orders or receipts or in other correspondences regarding the content of the Agreement between the parties, the Agreement shall prevail. No modification of the Agreement will be binding, unless in writing and signed by an authorized representative of each party.
++   2.	Severability of the Agreement
++   If any provision of the Agreement is deemed to be unenforceable, the deletion of the corresponding provision will still be effective, unless the deletion will hinder the realization of the fundamental purpose of the parties (in which case, the Agreement will be terminated immediately).
++
++   IX. 	Applicable law and dispute settlement
++
++   1.	Application of governing laws
++   Any dispute settlement (including but not limited to litigation and arbitration) related to the Agreement shall be governed by the laws of the People’s Republic of China. The legal rules of any other countries and regions shall not apply.
++   2.	Termination
++   If the Software becomes or, in the opinion of either party, may become the subject of any claim for intellectual property infringement, either party may terminate the Agreement immediately.
++   The Agreement is effective until termination. You may terminate the Agreement at any time, but you must destroy all originals and duplicates of the Software. The Agreement will terminate immediately without notice from us if you fail to comply with any provision of the Agreement. At the time of termination, you must destroy all originals and duplicates of such software, and shall be legally liable for not observing the Agreement.
++
++   The Agreement shall be in both Chinese and English, and in case of ambiguity between any content above, the Chinese version shall prevail.
++
++Privacy Policy Statement of Kylin Operating System
++Release date of the version: July 30, 2021
++Effective date of the version: July 30, 2021
++
++We attach great importance to personal information and privacy protection. In order to guarantee the legal, reasonable and appropriate collection, storage and use of your personal privacy information and the transmission and storage in the safe and controllable circumstances, we hereby formulate this Statement. We shall provide your personal information with corresponding security protection measures according to the legal requirements and mature security standards in the industry.
++   The Statement shall include the following content:
++    I. 	Collection and use your personal information
++   II. 	How to store and protect your personal information
++   III. 	How to manage your personal information
++   IV. 	Privacy of the third-party software/services
++   V. 	Minors’ use of the products
++   VI. 	How to update this Statement
++   VII. How to contact us
++
++    I. 	How to collect and use your personal information
++
++   1.	The collection of personal information
++   We shall collect the relevant information when you use this product mainly to provide you with higher-quality products, more usability and better services. Part of information collected shall be provided by you directly, and other information shall be collected by us through your interaction with the product as well as your use and experience of the product. We shall not actively collect and deal with your personal information unless we have obtained your express consent according to the applicable legal stipulations.
++   1)	The licensing mechanism for this product allows you to apply for the formal license of the product in accordance with the contract and relevant agreements after you send a machine code to the commercial personnel of Kylinsoft, and the machine code is generated through encryption and conversion according to the information of the computer used by you, such as network card, firmware and motherboard. This machine code shall not directly contain the specific information of the equipment, such as network card, firmware and motherboard, of the computer used by you.
++   2)	Server of the software store of this product shall connect it according to the CPU type information and IP address of the computer used by you; at the same time, we shall collect the relevant information of your use of the software store of this product, including but not limited to the time of opening the software store, interaction between the pages, search content and downloaded content. The relevant information collected is generally recorded in the log of server system of software store, and the specific storage position may change due to different service scenarios.
++   3)	Upgrading and updating of this product shall be connected according to the IP address of the computer used by you, so that you can upgrade and update the system;
++   4)	Your personal information, such as E-mail address, telephone number and name, shall be collected due to business contacts and technical services.
++   5)	The biological characteristic management tool support system components of this product shall use the biological characteristics for authentication, including fingerprint, finger vein, iris and voiceprint. The biological characteristic information input by you shall be stored in the local computer, and for such part of information, we shall only receive the verification results but shall not collect or upload it. If you do not need to use the biological characteristics for the system authentication, you may disable this function in the biological characteristic management tool.
++   6)	This product shall provide the recording function. When you use the recording function of this product, we shall only store the audio content when you use the recording in the local computer but shall not collect or upload the content.
++   7)	The service and support functions of this product shall collect the information provided by you for us, such as log, E-mail, telephone and name, so as to make it convenient to provide the technical services, and we shall properly keep your personal information.
++   8)	In the upgrading process of this product, if we need to collect additional personal information of yours, we shall timely update this part of content.
++
++  2.	Use of personal information
++   We shall strictly observe the stipulations of laws and regulations and agreements with you to use the information collected for the following purposes. In case of exceeding the scope of following purposes, we shall explain to you again and obtain your consent.
++   1)	The needs such as product licensing mechanism, use of software store, system updating and maintenance, biological identification and online services shall be involved;
++   2)	We shall utilize the relevant information to assist in promoting the product security, reliability and sustainable service;
++   3)	We shall directly utilize the information collected (such as the E-mail address and telephone provided by you) to communicate with you directly, for example, business contact, technical support or follow-up service visit;
++   4)	We shall utilize the data collected to improve the current usability of the product, promote the product’s user experience (such as the personalized recommendation of software store) and repair the product defects, etc.;
++   5)	We shall use the user behavior data collected for data analysis. For example, we shall use the information collected to analyze and form the urban thermodynamic chart or industrial insight report excluding any personal information. We may make the information excluding identity identification content upon the statistics and processing public and share it with our partners, to understand how the users use our services or make the public understand the overall use trend of our services;
++   6)	We may use your relevant information and provide you with the advertising more related to you on relevant websites and in applications and other channels;
++   7)	In order to follow the relevant requirements of relevant laws and regulations, departmental regulations and rules and governmental instructions.
++
++   3.	Information sharing and provision
++   We shall not share or transfer your personal information to any third party, except for the following circumstances:
++   1)	After obtaining your clear consent, we shall share your personal information with the third parities;
++   2)	In order to achieve the purpose of external processing, we may share your personal information with the related companies or other third-party partners (the third-party service providers, contractors, agents and application developers). We shall protect your information security by means like encryption and anonymization;
++    3)	We shall not publicly disclose the personal information collected. If we must disclose it publicly, we shall notify you of the purpose of such public disclosure, type of information disclosed and the sensitive information that may be involved, and obtain your consent;
++   4)	With the continuous development of our business, we may carry out the transactions, such as merger, acquisition and asset transfer, and we shall notify you of the relevant circumstances, and continue to protect or require the new controller to continue to protect your personal information according to laws and regulations and the standards no lower than that required by this Statement;
++    5)	If we use your personal information beyond the purpose claimed at the time of collection and the directly or reasonably associated scope, we shall notify you again and obtain your consent before using your personal information.
++
++   4.	Exceptions with authorized consent
++   1)	It is directly related to national security, national defense security and other national interests;
++   2)	It is directly related to public safety, public health and public knowledge and other major public interests;
++   3)	It is directly related to crime investigation, prosecution, judgment and execution of judgment;
++   4)	It aims to safeguard the life, property and other major legal rights and interests of you or others but it is impossible to obtain your own consent;
++   5)	The personal information collected is disclosed to the public by yourself;
++   6)	Personal information collected from legally publicly disclosed information, such as legal news reports, government information disclosure and other channels;
++   7)	It is necessary to sign and perform of the contract according to your requirement;
++   8)	It is necessary to maintain the safe and stable operation of the provided products or services, including finding and handling any fault of products or services;
++   9)	It is necessary to carry out statistical or academic research for public interest, and when the results of academic research or description are provided, the personal information contained in the results is de-identified;
++   10)	Other circumstances specified in the laws and regulations.
++
++   II. 	How to store and protect personal information
++
++   1.	Information storage place
++   We shall store the personal information collected and generated in China within the territory of China in accordance with laws and regulations.
++   2.	Information storage duration
++  Generally speaking, we shall retain your personal information for the time necessary to achieve the purpose or for the shortest term stipulated by laws and regulations. Information recorded in the log shall be kept for a specified period and be automatically deleted according to the configuration.
++   When operation of our product or services stops, we shall notify you in the forms such as notification and announcement, delete your personal information or conduct anonymization within a reasonable period and immediately stop the activities collecting the personal information.
++   3.	How to protect the information
++   We shall strive to provide guarantee for the users’ information security, to prevent the loss, improper use, unauthorized access or disclosure of the information.
++   We shall use the security protection measures within the reasonable security level to protect the information security. For example, we shall protect your system account and password by means like encryption.
++   We shall establish the special management systems, processes and organizations to protect the information security. For example, we shall strictly restrict the scope of personnel who access to the information, and require them to observe the confidentiality obligation.
++   4.	Emergency response plan
++    In case of security incidents, such as personal information disclosure, we shall start the emergency response plan according to law, to prevent the security incidents from spreading, and shall notify you of the situation of the security incidents, the possible influence of the incidents on you and the remedial measures we will take, in the form of pushing the notifications and announcements. We will also report the disposition of the personal information security events according to the laws, regulations and regulatory requirements.
++
++   III. 	How to manage your personal information
++
++   If you worry about the personal information disclosure caused by using this product, you may consider suspending or not using the relevant functions involving the personal information, such as the formal license of the product, application store, system updating and upgrading and biological identification, according to the personal and business needs.
++   Please pay attention to the personal privacy protection at the time of using the third-party software/services in this product.
++
++   IV. 	Privacy of the third-party software/services
++
++   The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer.
++   When you install or use the third-party software/services in this product, the privacy protection and legal responsibility of the third-party software/services shall be independently borne by the third-party software/services. Please carefully read and examine the privacy statement or clauses corresponding to the third-party software/services, and pay attention to the personal privacy protection.
++
++   V. 	Minors’ use of the products
++
++   If you are a minor, you shall obtain your guardian’s consent on your use of this product and the relevant service clauses. Except for the information required by the product, we shall not deliberately require the minors to provide more data. With the guardians’ consent or authorization, the accounts created by the minors shall be deemed to be the same as any other accounts. We have formulated special information processing rules to protect the personal information security of minors using this product. The guardians shall also take the appropriate preventive measures to protect the minors and supervise their use of this product.
++
++   VI. 	How to update this Statement
++
++   We may update this Statement at any time, and shall display the updated statement to you through the product installation process or the company’s website at the time of updating. After such updates take effect, if you use such services or any software permitted according to such clauses, you shall be deemed to agree on the new clauses. If you disagree on the new clauses, then you must stop using this product, and please close the account created by you in this product; if you are a parent or guardian, please help your minor child to close the account created by him/her in this product.
++
++   VII. 	How to contact us
++
++  If you have any question, or any complaints or opinions on this Statement, you may seek advice through our customer service hotline 400-089-1870, or the official website (www.kylinos.cn), or “service and support” application in this product. You may also contact us by E-mail (market@kylinos.cn).
++   We shall timely and properly deal with them. Generally, a reply will be made within 15 working days.
++   The Statement shall take effect from the date of updating. The Statement shall be in Chinese and English at the same time and in case of any ambiguity of any clause above, the Chinese version shall prevail.
++   Last date of updating: November 1, 2021
++
++Address: Building 3, Xin’an Entrepreneurship Plaza, Tanggu Marine Science and Technology Park, Binhai High-tech Zone, Tianjin (300450)
++             Silver Valley Tower, No. 9, North Forth Ring West Road, Haidian District, Beijing (100190)
++             Building T3, Fuxing World Financial Center, No. 303, Section 1 of Furong Middle Road, Kaifu District, Changsha City (410000)
++             Digital Entertainment Building, No. 1028, Panyu Road, Xuhui District, Shanghai (200030)
++Tel.: Tianjin (022) 58955650       Beijing (010) 51659955
++             Changsha (0731) 88280170    Shanghai (021) 51098866
++Fax: Tianjin (022) 58955651       Beijing (010) 62800607
++             Changsha (0731) 88280166    Shanghai (021) 51062866
++
++Company website: www.kylinos.cn
++E-mail: support@kylinos.cn</source>
++        <translation type="vanished">尊敬的银河麒麟操作系统及相关产品用户:
++   请您仔细阅读本协议条款、补充许可条款(统称“协议”)及银河麒麟操作系统隐私政策声明(以下简称“声明”)。当您确认了解并点击下一步时,即表明您已接受本协议的条款,本协议将立即生效,对您和本公司双方具有法律约束力。
++   本协议及声明中的“本产品”是指由麒麟软件有限公司开发并制作发行的用于办公或构建企业及政府的信息化基础设施——“银河麒麟操作系统软件产品”。“我们”是指麒麟软件有限公司。“您”是指支付授权费用并使用银河麒麟操作系统及相关产品的用户。
++
++银河麒麟最终用户使用许可协议
++版本发布日期:【2021】年【7】月【30】日
++版本生效日期:【2021】年【7】月【30】日
++
++本协议将向您说明以下内容:
++一、使用许可
++二、Java技术限制
++三、Cookie和其他技术
++四、知识产权条款
++五、开放源代码说明
++六、第三方软件/服务说明
++七、免责条款
++八、协议完整性及可分割性说明
++九、适用法律及争议解决
++一、使用许可
++
++    按照已经为本产品支付费用的用户数目及计算机硬件类型,我们向您授予非排他、不可转让的许可,仅允许被授权人单位及与其签订劳动合同的员工使用由麒麟软件提供的随附软件和文档以及任何错误纠正。
++   1.教育机构使用许可
++    在遵守本协议的条款和条件的情况下,如果您是教育机构,允许贵机构仅在内部使用随附的未经修改的二进制格式的软件。此处的“在内部使用”是指被授权人单位及与其签订劳动合同的员工以及在贵机构入学的学生使用本产品。 
++   2.字型软件使用
++   字型软件指本产品中预装的和生成字体样式的软件。您不可从软件中分离字型软件,不可改动字型软件,以新增此等字型软件被作为本产品的一部分交付予您时所不具备的任何功能,不可将字型软件嵌入作为商业产品提供以换取收费或其他报酬的文件、不可脱离安装了本产品的机器使用。如将字型软件用于对外宣传等其他商业用途时,请您与字体版权厂商联系协商以获得对您相关行为的许可。
++
++二、Java技术限制
++
++   您不可更改“Java平台界面”(简称“JPI”,即指明为“java”包或“java”包的任何子包中的类),无论通过在JPI中创建额外的类,还是通过其他方式导致对JPI中的类进行增添或更动,均为不可。如果您创建一个额外的类以及一个或多个相关的API,而它们(i)扩展Java平台的功能;并且(ii)可供第三方软件开发者用于开发可调用上述额外API的额外软件,则您必须迅即广泛公布对此种API的准确说明,以供所有开发者免费使用。您不可创建、或授权其他被许可人创建以任何方式标示为“java”、“javax”、“sun”的额外的类、界面、子包或Sun在任何命名约定中指明的类似约定。参见Java运行时环境二进制代码许可的适当版本(目前位于http://jdk.java.net),以了解可与Java小程序和应用程序共同分发的运行时代码的可供情况。
++
++三、Cookie和其他技术
++
++   为帮助我们更好地了解并服务用户,我们的网站、在线服务和应用程序可能会使用“Cookie”技术。这些Cookie用于存储进出系统的网络流量以及因检测错误而生成的流量,因此必须设置。 我们通过使用这些Cookie来了解您与我们的网站和在线服务如何进行交互。 
++   如果您想禁用 Cookie 并且使用的是Firefox浏览器,可在Firefox的隐私与安全中心进行设置。如果您使用的是其他浏览器,请向相关供应商咨询具体方案。
++依照《中华人民共和国网络安全法》第七十六条第五款,个人信息,是指以电子或者其他方式记录的能够单独或者与其他信息结合识别自然人个人身份的各种信息,包括但不限于自然人的姓名、出生日期、身份证件号码、个人生物识别信息、住址、电话号码等。如果Cookie中包含上述信息,或者存在通过Cookie收集的非个人信息与其他个人信息合并后的信息,出于本隐私政策的目的,我们会将合并后的信息视为个人隐私信息,将参照银河麒麟隐私政策声明,为您的个人信息提供相应的安全保护措施。
++
++四、知识产权条款
++
++   1.商标和标识
++    本产品受到版权(著作权)法、商标法和其他法律及国际知识产权公约的保护。我们或其许可方保留对本产品的所有权及所有相关的知识产权。对于我们或其许可方的任何商标、服务标记、标识或商号的任何权利、所有权或利益,本协议均不作任何授权。您对麒麟软件标记的任何使用都应有利于麒麟软件,未经我们书面同意,不得擅自使用麒麟软件任何商标、标识。 
++   2.关于复制、修改及分发
++   如果在所有复制品中维持本协议书不变,您可以且必须根据《GNU GPL-GNU通用公共许可证》复制、修改及分发银河麒麟操作系统软件产品中遵守《GNU GPL-GNU通用公共许可证》协议的软件,其他不遵守《GNU GPL-GNU通用公共许可证》协议的银河麒麟操作系统软件产品必须根据相关法律、其他许可协议进行复制、修改及分发,但任何以银河麒麟操作系统软件产品为基础的衍生发行版未经我们的书面授权不能使用任何我们的商标或其他任何标志。
++   特别注意:该复制、修改及分发不包括本产品中包含的任何不适用《GNU GPL-GNU通用公共许可证》的软件,如银河麒麟操作系统软件产品中包含的软件商店、输入法软件、字库软件、第三方应用软件等。除非适用法律予以禁止,否则您不得对上述软件进行复制、修改(包括反编译或反向工程)、分发。
++
++五、开放源代码说明
++
++   对于本产品中包含的任何开放源代码,本协议的任何条款均不得限制、约束或以其它方式影响任何适用开放源代码许可证赋予您的任何相应的权利或者义务或您应遵守的各种条件。
++
++六、第三方软件/服务说明
++
++   本协议所指的第三方软件/服务是指由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。本产品可能包含或捆绑有第三方软件/服务,这些第三方软件/服务附带单独的许可协议,您使用附带单独许可协议的任何第三方软件/服务需受到该单独许可协议的约束。
++我们不对本产品中的第三方软件/服务拥有任何控制权,也不对其提供方或用户行为的合法性、准确性、有效性、安全性进行任何明示或默示的保证或担保。
++
++七、免责条款
++
++   1.有限担保
++    我们向您担保,自购买或其他合法取得本产品之日起九十(90)天内(以销售合同日期为准),本产品的存储介质(如果有)在正常使用的情况下无材料和工艺方面的缺陷。在本有限担保项下,您可获得的所有补偿及我们的全部责任为由我们选择更换本产品介质或退还本产品的购买费用。
++    2.免责声明
++    除上述有限担保外,本软件按“原样”提供,不提供任何明示或默示的条件、陈述及担保,包括对适销性、对特定用途的适用性或非侵权性的任何默示的担保,均不予负责,但本免责声明被认定为法律上无效的情况除外。
++    3.责任限制
++    在法律允许范围内,无论在何种情况下,无论采用何种有关责任的理论,无论因何种方式导致,对于因使用或无法使用本软件引起的或与之相关的任何收益损失、利润或数据损失,或者对于特殊的、间接的、后果性的、偶发的或惩罚性的损害赔偿,我们或其许可方均不承担任何责任(即使我们已被告知可能出现上述损害赔偿)。根据本协议,在任何情况下,无论是在合同、侵权行为(包括过失)方面,还是在其他方面,我们对您的责任将不超过您就本软件所支付的金额。即使上述担保未能达到其基本目的,上述限制仍然适用。
++
++八、协议完整性及可分割性说明
++
++1.协议完整性
++    本协议是我们就产品使用与您达成的完整协议。它取代此前或同期的所有和本协议不一致的口头或书面往来信息、建议、陈述和担保。在本协议期间,有关报价、订单、回执或各方之间就本协议内容进行的其他往来通信中的任何冲突条款或附加条款,均以本协议为准。对本协议的任何修改均无约束力,除非通过书面进行修改并由每一方的授权代表签字。
++2.可分割性
++如果本协议中有任何规定被认定为无法执行,则删除相应规定,本协议仍然有效,除非该删除会防碍各方根本目的的实现(在这种情况下,本协议将立即终止)。
++
++九、适用法律及争议解决
++
++1.管辖法律适用
++    与本协议相关的任何争议解决(包括但不限于诉讼、仲裁等)均受适用中华人民共和国法律管辖。选择其它任何国家和地区的法律规则不予适用。
++2.终止
++如果本软件成为或在任一方看来可能成为任何知识产权侵权索赔之标的,则任一方可立即终止本协议。
++    本协议在终止之前有效。您可以随时终止本协议,但必须同时销毁本软件的全部正本和副本。如果您未遵守本协议的任何规定,则本协议将不经我们发出通知立即终止。终止时,您必须销毁本软件的全部正本和副本,并且需承担因未遵守本协议而导致的法律责任。
++
++本协议提供中英文两种版本,以上任何内容如有歧义,以中文版本为准。
++
++
++银河麒麟操作系统隐私政策声明
++版本发布日期:【2021】年【7】月【30】日
++版本生效日期:【2021】年【7】月【30】日
++
++   我们非常重视个人信息和隐私保护,为了保证合法、合理、适度的收集、存储、使用您的个人隐私信息,并在安全、可控的情况下进行传输、存储,我们制定了本声明。我们将会按照法律要求和业界成熟安全标准,为您的个人信息提供相应的安全保护措施。
++
++本声明将向您说明以下内容:
++一、关于收集和使用您的个人信息
++二、如何存储和保护您的个人信息
++三、如何管理您的个人信息
++四、关于第三方软件/服务的隐私说明
++五、关于未成年人使用产品
++六、本声明如何更新
++七、如何联系我们
++
++一、如何收集和使用您的个人信息
++
++    1.收集个人信息的情况
++   我们在您使用本产品过程中收集相关的信息,主要为了向您提供更高质量、更易用的产品和更好的服务。收集的部分信息由您直接提供,其他信息则由我们通过您与产品的交互以及对产品的使用和体验收集而来。除非我们已根据适用的法律规定取得您的明示同意,我们不会主动收集并处理您的个人信息。
++   1)本产品授权许可机制,会根据您所使用计算机的网卡、固件和主板等信息通过加密机制和转换方法生成申请产品正式授权许可的机器码;您将该机器码发送给麒麟软件商务人员后,可根据合同及相关协议申请正式许可。该机器码不直接包含您所使用计算机的网卡、固件和主板等设备的具体信息。
++   2)本产品软件商店的服务器端,会根据您所使用计算机的CPU类型信息以及IP地址进行连接,同时我们会收集您使用本产品软件商店的相关信息,包括但不限于打开软件商店的时间、各页面之间的交互、搜索内容、下载的内容等,收集的相关信息一般记录在软件商店的服务端系统的日志中,具体存储位置可能因为不同的服务场景有所变动。
++   3)本产品的升级更新,会根据您所使用计算机的IP地址进行连接,以便实现您升级更新系统;
++   4)因业务往来及技术服务等向您收集电子邮箱、电话、姓名等个人信息。
++   5)本产品的生物特征管理工具支持系统组件使用生物特征进行认证,包括指纹、指静脉、虹膜、声纹等。您录入的生物特征信息将储存在本地计算机,这部分信息我们仅接收验证结果,不会收集和上传。如您不需要使用生物特征进行系统认证,可以在生物特征管理工具中关闭该功能。
++   6)本产品提供录音功能,您在使用本产品录音软件中,我们仅会将您使用录音时的音频内容存储在本地计算机中,不会进行收集和上传。
++   7)本产品的服务与支持功能会收集由您提供给我们的日志、电子邮箱、电话、姓名等信息,便于提供技术服务,我们将妥善保管您的个人信息。
++   8)本产品升级过程中,如需新增收集您的个人信息,我们将及时更新本部分内容。
++   2.使用个人信息的情况
++   我们严格遵守法律法规的规定及与您的约定,将收集的信息用于以下用途。若我们超出以下用途,我们将再次向您进行说明,并征得您的同意。
++   1)涉及产品许可机制、软件商店使用、系统更新维护、生物识别、在线服务等需要;
++   2)我们会利用相关信息协助提升产品的安全性、可靠性和可持续服务;
++   3)我们会利用收集的信息(例如您提供的电子邮件地址、电话等)直接与您沟通。例如,业务联系、技术支持或服务回访;
++   4)我们会利用收集的数据改进产品当前的易用性、提升产品用户体验(例如软件商店的个性化推荐)以及修复产品缺陷等;
++   5)我们会将所收集到的用户行为数据用于大数据分析。例如,我们将收集到的信息用于分析形成不包含任何个人信息的城市热力图或行业洞察报告。我们可能对外公开并与我们的合作伙伴分享经统计加工后不含身份识别内容的信息,用于了解用户如何使用我们服务或让公众了解我们服务的总体使用趋势;
++
++   6)我们可能使用您的相关信息,在相关网站、应用及其他渠道向您提供与您更加相关的广告;
++   7)为了遵从相关法律法规、部门规章、政府指令的相关要求。
++   3.信息的分享及对外提供
++   我们不会共享或转让您的个人信息至第三方,但以下情况除外:
++   1)获取您的明确同意后,我们会与第三方分享您的个人信息;
++   2)为实现外部处理的目的,我们可能与关联公司或其他第三方合作伙伴(第三方服务供应商、承包商、代理、应用开发者等)分享您的个人信息。我们将采用加密、匿名化处理等手段来保障您的信息安全;
++   3)我们不会对外公开披露所收集的个人信息,如必须公开披露时,我们会向您告知此次公开披露的目的、披露信息的类型及可能涉及的敏感信息,并征得您的同意;
++   4)随着我们业务的持续发展,我们有可能进行合并、收购、资产转让等交易,我们将告知相关情形,按照法律法规及不低于本声明所要求的标准继续保护或要求新的控制者继续保护您的个人信息;
++   5)如我们使用您的个人信息,超出了与收集时所声称的目的及具有直接或合理关联的范围,我们将在使用您的个人信息前,再次向您告知并征得您的同意。
++   4.征得授权同意的例外情况
++   1)与国家安全、国防安全等国家利益直接相关的;
++   2)与公共安全、公共卫生、公众知情等重大公共利益直接相关的;
++   3)与犯罪侦查、起诉、审判和判决执行等直接相关的;
++   4)出于维护您或其他个人的生命、财产等重大合法权益但又无法得到您本人同意的;
++   5)所收集的个人信息是您自行向社会公众公开的;
++   6)从合法公开披露的信息中收集的个人信息,如合法的新闻报道、政府信息公开等渠道;
++   7)根据您要求签订和履行合同所必需的;
++   8)用于维护所提供的产品或服务的安全稳定运行所必需的。如发现、处置产品或服务的故障;
++   9)出于公共利益开展统计或学术研究所必需,且其对外提供学术研究或描述的结果时,对结果中所包含的个人信息进行去标识化处理的;
++   10)法律法规规定的其他情形。
++
++二、我们如何存储和保护您的个人信息
++
++   1.信息存储的地点
++   我们会按照法律法规规定,将在中国境内收集和产生的个人信息存储于中国境内。
++   2.信息存储的期限
++   一般而言,我们仅为实现目的所必需的时间或法律法规规定最短期限保留您的个人信息。记录在日志中的信息会按配置在一定期限保存及自动删除。
++   当我们的产品或服务发生停止运营的情形时,我们将以通知、公告等形式通知您,在合理的期限内删除您的个人信息或进行匿名化处理,并立即停止收集个人信息的活动。
++   3.我们如何保护这些信息
++   我们努力为用户的信息安全提供保障,以防止信息的丢失、不当使用、未经授权访问或披露。
++   我们将在合理的安全水平内使用安全保护措施以保障信息的安全。例如,我们会使用加密技术等手段来保护您的系统级账户密码。
++   我们建立专门的管理制度、流程和组织以保障信息的安全。例如,我们严格限制访问信息的人员范围,要求他们遵守保密义务。
++   4.应急预案
++   若发生个人信息泄露等安全事件,我们会依法启动应急预案,阻止安全事件扩大,并以推送通知、公告等形式告知您安全事件的情况、事件可能对您的影响以及我们将采取的补救措施。我们还将按照法律法规和监管部门要求,上报个人信息安全事件的处置情况。
++
++三、如何管理您的个人信息
++
++   如果担心因使用本产品导致个人信息的泄露,您可根据个人及业务需要考虑暂停或不使用涉及个人信息的相关功能,如产品正式授权许可、应用商店、系统更新升级、生物识别等。
++在使用本产品之上的第三方软件/服务时,请注意个人隐私保护。
++
++四、关于第三方软件/服务的隐私说明
++
++   本协议所指的第三方软件/服务是由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。
++您在本产品之上安装或使用第三方软件/服务时,第三方软件/服务的隐私保护和法律责任由第三方软件/服务自行负责,请您仔细阅读和审查第三方软件/服务对应的隐私声明或条款,注意个人隐私保护。
++
++五、关于未成年人使用产品
++
++   如果您是未成年人,则需要您的监护人同意您使用本产品并同意相关服务条款。除了提供产品所需要的信息外,我们不会刻意要求未成年人提供其他更多数据。在征得监护人同意或授权后,未成年人所创建的账户即被视为等同于其他任何账户。我们制定了专门的信息处理规则以保护使用本产品的未成年人的个人信息安全。监护人也应采取适当的预防措施保护未成年人,监督其对本产品的使用。
++
++六、本声明如何更新
++
++   我们可能会随时更新本声明,并且会在变更时通过产品安装过程或公司网站向您展示变更后的声明。在这些变更生效后使用服务或根据这些条款授予许可的任何软件,即表示您同意新的条款。如果您不同意新的条款,则必须停止使用本产品,请关闭您在本产品之上创建的账户;如果您是家长或监护人,请帮助您的未成年子女关闭他或她在本产品之上创建的账户。
++
++七、如何联系我们
++
++   如您对本声明存在任何疑问,或任何相关的投诉、意见,可通过我们的客服热线400-089-1870、官方网站(www.kylinos.cn)或本产品中“服务与支持”应用进行咨询或反映。您也可以通过发送邮件至market@kylinos.cn与我们联系。
++   我们会及时、妥善处理您的问题。一般情况下,我们将在15个工作日内给予答复。
++   本声明自更新之日起生效,同时提供中英文两种版本,以上任何条款如有歧义,以中文版本为准。
++   最近更新日期:2021年11月1日
++
++地址:天津市滨海高新区塘沽海洋科技园信安创业广场3号楼(300450)
++北京市海淀区北四环西路9号银谷大厦(100190)
++长沙市开福区芙蓉中路1段303号富兴世界金融中心T3栋(410000)
++上海市徐汇区番禺路1028号数娱大厦(200030)
++电话:天津(022)58955650  北京(010)51659955  
++长沙(0731)88280170 上海(021)51098866</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="83"/>
++        <source>Kylinsoft Co., Ltd.</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Projection</name>
++    <message>
++        <source>Projection</source>
++        <translation type="vanished">投屏</translation>
++    </message>
++    <message>
++        <source>Open Projection</source>
++        <translation type="vanished">开启投屏</translation>
++    </message>
++    <message>
++        <source>Projection Name</source>
++        <translation type="vanished">投屏端名称</translation>
++    </message>
++    <message>
++        <source>Add Bluetooths</source>
++        <translation type="vanished">添加蓝牙</translation>
++    </message>
++</context>
++<context>
++    <name>Proxy</name>
++    <message>
++        <source>Auto Proxy</source>
++        <translation type="vanished">自动代理</translation>
++        <extra-contents_path>/Proxy/Auto Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>Auto proxy</source>
++        <translation type="vanished">开启自动代理</translation>
++    </message>
++    <message>
++        <source>Auto url</source>
++        <translation type="vanished">配置URL</translation>
++        <extra-contents_path>/Proxy/Auto url</extra-contents_path>
++    </message>
++    <message>
++        <source>Manual Proxy</source>
++        <translation type="vanished">手动代理</translation>
++        <extra-contents_path>/Proxy/Manual Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>Manual proxy</source>
++        <translation type="vanished">开启手动代理</translation>
++    </message>
++    <message>
++        <source>Http Proxy</source>
++        <translation type="vanished">HTTP代理</translation>
++        <extra-contents_path>/Proxy/Http Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>Port</source>
++        <translation type="vanished">端口</translation>
++    </message>
++    <message>
++        <source>Cetification</source>
++        <translation type="vanished">认证</translation>
++    </message>
++    <message>
++        <source>System Proxy</source>
++        <translation type="vanished">系统代理</translation>
++    </message>
++    <message>
++        <source>Https Proxy</source>
++        <translation type="vanished">HTTPS代理</translation>
++        <extra-contents_path>/Proxy/Https Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>Ftp Proxy</source>
++        <translation type="vanished">FTP代理</translation>
++        <extra-contents_path>/Proxy/Ftp Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>Socks Proxy</source>
++        <translation type="vanished">SOCKS代理</translation>
++        <extra-contents_path>/Proxy/Socks Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>List of ignored hosts. more than one entry, please separate with english semicolon(;)</source>
++        <translation type="vanished">忽略的主机列表,请使用英文分号(;)</translation>
++    </message>
++    <message>
++        <source>Enable Authentication</source>
++        <translation type="vanished">启用认证</translation>
++    </message>
++    <message>
++        <source>User Name</source>
++        <translation type="vanished">用户名</translation>
++    </message>
++    <message>
++        <source>Password</source>
++        <translation type="vanished">密码</translation>
++    </message>
++    <message>
++        <source>Apt Proxy</source>
++        <translation type="vanished">APT代理</translation>
++        <extra-contents_path>/Proxy/Apt Proxy</extra-contents_path>
++    </message>
++    <message>
++        <source>Open</source>
++        <translation type="vanished">开启</translation>
++    </message>
++    <message>
++        <source>Server Address : </source>
++        <translation type="vanished">服务器地址:</translation>
++    </message>
++    <message>
++        <source>Port : </source>
++        <translation type="vanished">端口:</translation>
++    </message>
++    <message>
++        <source>Edit</source>
++        <translation type="vanished">编辑</translation>
++    </message>
++    <message>
++        <source>The apt proxy  has been turned off and needs to be restarted to take effect</source>
++        <translation type="vanished">apt代理功能已关闭 需重启后生效</translation>
++    </message>
++    <message>
++        <source>The system needs to be restarted to set the Apt proxy, whether to reboot</source>
++        <translation type="vanished">设置APT代理需要重启系统后生效,是否重启系统</translation>
++    </message>
++    <message>
++        <source>Reboot Now</source>
++        <translation type="vanished">立即重启</translation>
++    </message>
++    <message>
++        <source>Start using</source>
++        <translation type="vanished">启用</translation>
++    </message>
++    <message>
++        <source>Proxy mode</source>
++        <translation type="vanished">代理类型</translation>
++    </message>
++    <message>
++        <source>Auto</source>
++        <translation type="vanished">自动</translation>
++    </message>
++    <message>
++        <source>Manual</source>
++        <translation type="vanished">手动</translation>
++    </message>
++    <message>
++        <source>Reboot Later</source>
++        <translation type="vanished">稍后重启</translation>
++    </message>
++    <message>
++        <source>proxy</source>
++        <translation type="vanished">代理</translation>
++    </message>
++    <message>
++        <source>Proxy</source>
++        <translation type="vanished">代理</translation>
++    </message>
++</context>
++<context>
++    <name>QObject</name>
++    <message>
++        <source>display</source>
++        <translation type="vanished">显示器</translation>
++    </message>
++    <message>
++        <source>defaultapp</source>
++        <translation type="vanished">默认应用</translation>
++    </message>
++    <message>
++        <source>power</source>
++        <translation type="vanished">电源</translation>
++    </message>
++    <message>
++        <source>autoboot</source>
++        <translation type="vanished">开机启动</translation>
++    </message>
++    <message>
++        <source>printer</source>
++        <translation type="vanished">打印机</translation>
++    </message>
++    <message>
++        <source>mousecontrol</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>mouse</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>touchpad</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>keyboard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++    <message>
++        <source>shortcut</source>
++        <translation type="vanished">快捷键</translation>
++    </message>
++    <message>
++        <source>audio</source>
++        <translation type="vanished">声音</translation>
++    </message>
++    <message>
++        <source>background</source>
++        <translation type="vanished">背景</translation>
++    </message>
++    <message>
++        <source>screenlock</source>
++        <translation type="vanished">锁屏</translation>
++    </message>
++    <message>
++        <source>fonts</source>
++        <translation type="vanished">字体</translation>
++    </message>
++    <message>
++        <source>Screensaver</source>
++        <translation type="vanished">屏保</translation>
++    </message>
++    <message>
++        <source>desktop</source>
++        <translation type="vanished">桌面</translation>
++    </message>
++    <message>
++        <source>netconnect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>vpn</source>
++        <translation type="vanished">VPN</translation>
++    </message>
++    <message>
++        <source>proxy</source>
++        <translation type="vanished">代理</translation>
++    </message>
++    <message>
++        <source>userinfo</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>datetime</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>area</source>
++        <translation type="vanished">区域语言</translation>
++    </message>
++    <message>
++        <source>update</source>
++        <translation type="vanished">更新和备份</translation>
++    </message>
++    <message>
++        <source>backup</source>
++        <translation type="vanished">备份</translation>
++    </message>
++    <message>
++        <source>notice</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <source>about</source>
++        <translation type="vanished">关于</translation>
++    </message>
++    <message>
++        <source>experienceplan</source>
++        <translation type="vanished">体验计划</translation>
++    </message>
++    <message>
++        <source>theme</source>
++        <translation type="vanished">主题</translation>
++    </message>
++    <message>
++        <source>ukui-control-center had already running!</source>
++        <translation type="vanished">控制面板已经在运行!</translation>
++    </message>
++    <message>
++        <source>basicIcon</source>
++        <translation type="vanished">基础</translation>
++    </message>
++    <message>
++        <source>classicalIcon</source>
++        <translation type="vanished">经典</translation>
++    </message>
++    <message>
++        <source>defaultIcon</source>
++        <translation type="vanished">默认</translation>
++    </message>
++    <message>
++        <source>blue-crystal</source>
++        <translation type="vanished">蓝水晶</translation>
++    </message>
++    <message>
++        <source>dark-sense</source>
++        <translation type="vanished">深色质感</translation>
++    </message>
++    <message>
++        <source>DMZ-Black</source>
++        <translation type="vanished">DMZ-黑</translation>
++    </message>
++    <message>
++        <source>DMZ-White</source>
++        <translation type="vanished">DMZ-白</translation>
++    </message>
++    <message>
++        <source>basic</source>
++        <translation type="vanished">基础</translation>
++    </message>
++    <message>
++        <source>classical</source>
++        <translation type="vanished">经典</translation>
++    </message>
++    <message>
++        <source>default</source>
++        <translation type="vanished">默认</translation>
++    </message>
++    <message>
++        <source>fashion</source>
++        <translation type="vanished">时尚</translation>
++    </message>
++    <message>
++        <source>hp</source>
++        <translation type="vanished">惠普</translation>
++    </message>
++    <message>
++        <source>ukui</source>
++        <translation type="vanished">基础</translation>
++    </message>
++    <message>
++        <source>lightseeking</source>
++        <translation type="vanished">寻光</translation>
++    </message>
++    <message>
++        <source>HeYin</source>
++        <translation type="vanished">和印</translation>
++    </message>
++    <message>
++        <source>found</source>
++        <translation type="vanished">寻光</translation>
++    </message>
++    <message>
++        <source>heyin</source>
++        <translation type="vanished">和印</translation>
++    </message>
++    <message>
++        <source>Unknown</source>
++        <translation type="vanished">未知</translation>
++    </message>
++    <message>
++        <source>Custom Shortcut</source>
++        <translation type="vanished">自定义快捷键</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcut.cpp" line="186"/>
++        <source>Customize Shortcut</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="472"/>
++        <source>Edit Shortcut</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Update Shortcut</source>
++        <translation type="vanished">更新快捷键</translation>
++    </message>
++    <message>
++        <source>Add Shortcut</source>
++        <translation type="vanished">添加快捷键</translation>
++    </message>
++    <message>
++        <source>Display</source>
++        <translation type="vanished">显示器</translation>
++    </message>
++    <message>
++        <source>Defaultapp</source>
++        <translation type="vanished">默认应用</translation>
++    </message>
++    <message>
++        <source>Power</source>
++        <translation type="vanished">电源</translation>
++    </message>
++    <message>
++        <source>Autoboot</source>
++        <translation type="vanished">开机启动</translation>
++    </message>
++    <message>
++        <source>TouchScreen</source>
++        <translation type="vanished">触摸屏</translation>
++    </message>
++    <message>
++        <source>User Info Intel</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>Biometrics</source>
++        <translation type="vanished">生物特征与密码</translation>
++    </message>
++    <message>
++        <source>Default App</source>
++        <translation type="vanished">默认应用</translation>
++    </message>
++    <message>
++        <source>Auto Boot</source>
++        <translation type="vanished">开机启动</translation>
++    </message>
++    <message>
++        <source>Printer</source>
++        <translation type="vanished">打印机</translation>
++    </message>
++    <message>
++        <source>Projection</source>
++        <translation type="vanished">投屏</translation>
++    </message>
++    <message>
++        <source>System Recovery</source>
++        <translation type="vanished">系统还原</translation>
++    </message>
++    <message>
++        <source>Mouse</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>Touchpad</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>Gesture</source>
++        <translatorcomment>手势</translatorcomment>
++        <translation type="obsolete">手势</translation>
++    </message>
++    <message>
++        <source>Keyboard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++    <message>
++        <source>Shortcut</source>
++        <translation type="vanished">快捷键</translation>
++    </message>
++    <message>
++        <source>Audio</source>
++        <translation type="vanished">声音</translation>
++    </message>
++    <message>
++        <source>Bluetooth</source>
++        <translation type="vanished">蓝牙</translation>
++    </message>
++    <message>
++        <source>Background</source>
++        <translation type="vanished">背景</translation>
++    </message>
++    <message>
++        <source>Theme</source>
++        <translation type="vanished">主题</translation>
++    </message>
++    <message>
++        <source>WiredConnect</source>
++        <translation type="vanished">有线网络</translation>
++    </message>
++    <message>
++        <source>WlanConnect</source>
++        <translation type="vanished">无线局域网</translation>
++    </message>
++    <message>
++        <source>MobileHotspot</source>
++        <translation type="vanished">移动热点</translation>
++    </message>
++    <message>
++        <source>Screenlock</source>
++        <translation type="vanished">锁屏</translation>
++    </message>
++    <message>
++        <source>Fonts</source>
++        <translation type="vanished">字体</translation>
++    </message>
++    <message>
++        <source>Desktop</source>
++        <translation type="vanished">桌面</translation>
++    </message>
++    <message>
++        <source>Connect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>Vino</source>
++        <translation type="vanished">远程桌面</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="79"/>
++        <source>User Info</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Date</source>
++        <translation type="vanished">时间和日期</translation>
++    </message>
++    <message>
++        <source>Dat</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>Security Center</source>
++        <translation type="vanished">安全中心</translation>
++    </message>
++    <message>
++        <source>Netconnect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>Vpn</source>
++        <translation type="vanished">VPN</translation>
++    </message>
++    <message>
++        <source>Proxy</source>
++        <translation type="vanished">代理</translation>
++    </message>
++    <message>
++        <source>Userinfo</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>Cloud Account</source>
++        <translation type="vanished">云账户</translation>
++    </message>
++    <message>
++        <source>Datetime</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>Area</source>
++        <translation type="vanished">区域语言</translation>
++    </message>
++    <message>
++        <source>SecurityCenter</source>
++        <translation type="vanished">安全中心</translation>
++    </message>
++    <message>
++        <source>Update</source>
++        <translation type="vanished">安全与更新</translation>
++    </message>
++    <message>
++        <source>Backup</source>
++        <translation type="vanished">备份</translation>
++    </message>
++    <message>
++        <source>Upgrade</source>
++        <translation type="vanished">更新</translation>
++    </message>
++    <message>
++        <source>Notice</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <source>Search</source>
++        <translation type="vanished">搜索</translation>
++    </message>
++    <message>
++        <source>About</source>
++        <translation type="vanished">关于</translation>
++    </message>
++    <message>
++        <source>Experienceplan</source>
++        <translation type="vanished">体验计划</translation>
++    </message>
++    <message>
++        <source>Never</source>
++        <translation type="vanished">从不</translation>
++    </message>
++    <message>
++        <source>10min</source>
++        <translation type="vanished">10min</translation>
++    </message>
++    <message>
++        <source>20min</source>
++        <translation type="vanished">20min</translation>
++    </message>
++    <message>
++        <source>40min</source>
++        <translation type="vanished">40min</translation>
++    </message>
++    <message>
++        <source>80min</source>
++        <translation type="vanished">80min</translation>
++    </message>
++    <message>
++        <source>interactive</source>
++        <translation type="vanished">询问</translation>
++    </message>
++    <message>
++        <source>suspend</source>
++        <translation type="vanished">睡眠</translation>
++    </message>
++    <message>
++        <source>hibernate</source>
++        <translation type="vanished">休眠</translation>
++    </message>
++    <message>
++        <source>shutdown</source>
++        <translation type="vanished">关机</translation>
++    </message>
++    <message>
++        <source>nothing</source>
++        <translation type="vanished">无操作</translation>
++    </message>
++    <message>
++        <source>blank</source>
++        <translation type="vanished">关闭显示器</translation>
++    </message>
++    <message>
++        <source>Year</source>
++        <translation type="vanished">年</translation>
++    </message>
++    <message>
++        <source>Jan</source>
++        <translation type="vanished">一月</translation>
++    </message>
++    <message>
++        <source>Feb</source>
++        <translation type="vanished">二月</translation>
++    </message>
++    <message>
++        <source>Mar</source>
++        <translation type="vanished">三月</translation>
++    </message>
++    <message>
++        <source>Apr</source>
++        <translation type="vanished">四月</translation>
++    </message>
++    <message>
++        <source>May</source>
++        <translation type="vanished">五月</translation>
++    </message>
++    <message>
++        <source>January</source>
++        <translation type="vanished">一月</translation>
++    </message>
++    <message>
++        <source>February</source>
++        <translation type="vanished">二月</translation>
++    </message>
++    <message>
++        <source>March</source>
++        <translation type="vanished">三月</translation>
++    </message>
++    <message>
++        <source>April</source>
++        <translation type="vanished">四月</translation>
++    </message>
++    <message>
++        <source>June</source>
++        <translation type="vanished">六月</translation>
++    </message>
++    <message>
++        <source>July</source>
++        <translation type="vanished">七月</translation>
++    </message>
++    <message>
++        <source>August</source>
++        <translation type="vanished">八月</translation>
++    </message>
++    <message>
++        <source>September</source>
++        <translation type="vanished">九月</translation>
++    </message>
++    <message>
++        <source>October</source>
++        <translation type="vanished">十月</translation>
++    </message>
++    <message>
++        <source>Novermber</source>
++        <translation type="vanished">十一月</translation>
++    </message>
++    <message>
++        <source>December</source>
++        <translation type="vanished">十二月</translation>
++    </message>
++    <message>
++        <source>Jun</source>
++        <translation type="vanished">六月</translation>
++    </message>
++    <message>
++        <source>Jul</source>
++        <translation type="vanished">七月</translation>
++    </message>
++    <message>
++        <source>Aug</source>
++        <translation type="vanished">八月</translation>
++    </message>
++    <message>
++        <source>Sep</source>
++        <translation type="vanished">九月</translation>
++    </message>
++    <message>
++        <source>Oct</source>
++        <translation type="vanished">十月</translation>
++    </message>
++    <message>
++        <source>Nov</source>
++        <translation type="vanished">十一月</translation>
++    </message>
++    <message>
++        <source>Dec</source>
++        <translation type="vanished">十二月</translation>
++    </message>
++    <message>
++        <source>Day</source>
++        <translation type="vanished">日</translation>
++    </message>
++    <message>
++        <location filename="../../main.cpp" line="100"/>
++        <source>ukui-control-center is disabled!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../main.cpp" line="128"/>
++        <source>ukui-control-center</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../main.cpp" line="89"/>
++        <source>ukui-control-center is already running!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Pwd input error, re-enter!</source>
++        <translation type="vanished">密码输入错误,重新输入!</translation>
++    </message>
++    <message>
++        <source>Go to monitor settings page</source>
++        <translation type="vanished">管理和配置显示和监视器</translation>
++    </message>
++    <message>
++        <source>Go to defaultapp settings page</source>
++        <translation type="vanished">选择默认应用</translation>
++    </message>
++    <message>
++        <source>Go to printer settings page</source>
++        <translation type="vanished">打印机管理</translation>
++    </message>
++    <message>
++        <source>Go to projection settings page</source>
++        <translation type="vanished">投屏设置</translation>
++    </message>
++    <message>
++        <source>Go to mouse settings page</source>
++        <translation type="vanished">配置鼠标选项</translation>
++    </message>
++    <message>
++        <source>Go to touchpad settings page</source>
++        <translation type="vanished">触控板管理</translation>
++    </message>
++    <message>
++        <source>Go to keyboard settings page</source>
++        <translation type="vanished">键盘设置</translation>
++    </message>
++    <message>
++        <source>Go to shortcut settings page</source>
++        <translation type="vanished">配置快捷键</translation>
++    </message>
++    <message>
++        <source>Go to bluetooth settings page</source>
++        <translation type="vanished">蓝牙设置</translation>
++    </message>
++    <message>
++        <source>Go to background settings page</source>
++        <translation type="vanished">配置桌面壁纸</translation>
++    </message>
++    <message>
++        <source>Go to theme settings page</source>
++        <translation type="vanished">配置主题</translation>
++    </message>
++    <message>
++        <source>Go to screenlock settings page</source>
++        <translation type="vanished">锁屏设置</translation>
++    </message>
++    <message>
++        <source>Go to screensaver settings page</source>
++        <translation type="vanished">屏保设置</translation>
++    </message>
++    <message>
++        <source>Go to fonts settings page</source>
++        <translation type="vanished">配置用户字体</translation>
++    </message>
++    <message>
++        <source>Go to netconnect settings page</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>Go to proxy settings page</source>
++        <translation type="vanished">代理设置</translation>
++    </message>
++    <message>
++        <source>Go to mobilehotspot settings page</source>
++        <translation type="vanished">移动热点</translation>
++    </message>
++    <message>
++        <source>Go to userinfo settings page</source>
++        <translation type="vanished">管理用户信息</translation>
++    </message>
++    <message>
++        <source>Go to cloudaccount settings page</source>
++        <translation type="vanished">配置您的网络账户</translation>
++    </message>
++    <message>
++        <source>Go to area settings page</source>
++        <translation type="vanished">区域语言</translation>
++    </message>
++    <message>
++        <source>Go to update settings page</source>
++        <translation type="vanished">更新管理</translation>
++    </message>
++    <message>
++        <source>Go to backup settings page</source>
++        <translation type="vanished">备份管理</translation>
++    </message>
++    <message>
++        <source>Go to upgrade settings page</source>
++        <translation type="vanished">更新设置</translation>
++    </message>
++    <message>
++        <source>Go to about settings page</source>
++        <translation type="vanished">此系统的信息</translation>
++    </message>
++    <message>
++        <source>Go to search settings page</source>
++        <translation type="vanished">搜索</translation>
++    </message>
++    <message>
++        <source>Go to power settings page</source>
++        <translation type="vanished">配置电源管理</translation>
++    </message>
++    <message>
++        <source>Go to datetime settings page</source>
++        <translation type="vanished">管理日期和时间</translation>
++    </message>
++    <message>
++        <source>Go to desktop settings page</source>
++        <translation type="vanished">配置托盘,开始菜单图标</translation>
++    </message>
++    <message>
++        <source>Go to audio settings page</source>
++        <translation type="vanished">音量设置</translation>
++    </message>
++    <message>
++        <source>Go to notice settings page</source>
++        <translation type="vanished">通知管理模块</translation>
++    </message>
++    <message>
++        <source>Go to vpn settings page</source>
++        <translation type="vanished">VPN模块</translation>
++    </message>
++    <message>
++        <source>Go to autoboot settings page</source>
++        <translation type="vanished">自动启动的应用程序</translation>
++    </message>
++    <message>
++        <source>Connection failed, attempting reconnect</source>
++        <translation type="vanished">连接失败,尝试重新连接</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1203"/>
++        <source>min length %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1213"/>
++        <source>min digit num %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1222"/>
++        <source>min upper num %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1231"/>
++        <source>min lower num %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1240"/>
++        <source>min other num %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1250"/>
++        <source>min char class %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1259"/>
++        <source>max repeat %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1268"/>
++        <source>max class repeat %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1277"/>
++        <source>max sequence %1
++</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>system upgrade new backup</source>
++        <translation type="vanished">系统升级新建备份</translation>
++    </message>
++    <message>
++        <source>system upgrade increment backup</source>
++        <translation type="vanished">系统升级增量备份</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="373"/>
++        <source>Programs are not allowed to be added.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>简体中文</source>
++        <translation type="vanished">简体中文</translation>
++    </message>
++    <message>
++        <source>English</source>
++        <translation type="vanished">英语</translation>
++    </message>
++    <message>
++        <source>བོད་ཡིག</source>
++        <translation type="vanished">藏语</translation>
++    </message>
++</context>
++<context>
++    <name>RegDialog</name>
++    <message>
++        <source>Get</source>
++        <translation type="vanished">获取验证码</translation>
++    </message>
++    <message>
++        <source>Your password here</source>
++        <translation type="vanished">输入密码</translation>
++    </message>
++    <message>
++        <source>Your account here</source>
++        <translation type="vanished">请输入用户名</translation>
++    </message>
++    <message>
++        <source>Confirm your password</source>
++        <translation type="vanished">确认密码</translation>
++    </message>
++    <message>
++        <source>Your code here</source>
++        <translation type="vanished">输入验证码</translation>
++    </message>
++    <message>
++        <source>This operation is permanent</source>
++        <translation type="vanished">设置后不可更改,最高30位</translation>
++    </message>
++    <message>
++        <source>At least 6 bit, include letters and digt</source>
++        <translation type="vanished">至少六位,包含大小写字母、数字</translation>
++    </message>
++    <message>
++        <source>Your password is valid!</source>
++        <translation type="vanished">您的密码是有效的!</translation>
++    </message>
++</context>
++<context>
++    <name>ResolutionSlider</name>
++    <message>
++        <source>(recommend)</source>
++        <translation type="vanished">(推荐)</translation>
++    </message>
++    <message>
++        <source>No available resolutions</source>
++        <translation type="vanished">没有合适的分辨率</translation>
++    </message>
++</context>
++<context>
++    <name>Screenlock</name>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="32"/>
++        <source>Screenlock</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Screenlock Interface</source>
++        <translation type="vanished">锁屏界面</translation>
++        <extra-contents_path>/Screenlock/Screenlock Interface</extra-contents_path>
++    </message>
++    <message>
++        <source>Show message on lock screen</source>
++        <translation type="vanished">锁屏时显示消息</translation>
++    </message>
++    <message>
++        <source>Related Settings</source>
++        <translation type="vanished">相关设置</translation>
++    </message>
++    <message>
++        <source>Screenlock Set</source>
++        <translation type="vanished">锁屏设置</translation>
++    </message>
++    <message>
++        <source>Lock screen when screensaver boot</source>
++        <translation type="vanished">激活屏保时锁定屏幕</translation>
++    </message>
++    <message>
++        <source>Lock screen delay</source>
++        <translation type="vanished">此时间段后锁屏</translation>
++    </message>
++    <message>
++        <source>Min</source>
++        <translation type="vanished">分钟</translation>
++    </message>
++    <message>
++        <source>Select screenlock background</source>
++        <translation type="vanished">选择锁屏背景</translation>
++    </message>
++    <message>
++        <source>Browser online wp</source>
++        <translation type="vanished">浏览线上壁纸</translation>
++    </message>
++    <message>
++        <source>Browser local wp</source>
++        <translation type="vanished">浏览本地壁纸</translation>
++    </message>
++    <message>
++        <source>Show picture of screenlock on screenlogin</source>
++        <translation type="vanished">显示锁屏壁纸在登录界面</translation>
++        <extra-contents_path>/Screenlock/Show picture of screenlock on screenlogin</extra-contents_path>
++    </message>
++    <message>
++        <source>Enabel screenlock</source>
++        <translation type="vanished">开启锁屏</translation>
++    </message>
++    <message>
++        <source>Open</source>
++        <translation type="obsolete">浏览</translation>
++    </message>
++    <message>
++        <source>screenlock</source>
++        <translation type="vanished">锁屏</translation>
++    </message>
++    <message>
++        <source>picture</source>
++        <translation type="obsolete">图片</translation>
++    </message>
++    <message>
++        <source>Never</source>
++        <translation type="vanished">从不</translation>
++    </message>
++    <message>
++        <source>1m</source>
++        <translation type="vanished">1m</translation>
++    </message>
++    <message>
++        <source>5m</source>
++        <translation type="vanished">5m</translation>
++    </message>
++    <message>
++        <source>10m</source>
++        <translation type="vanished">10m</translation>
++    </message>
++    <message>
++        <source>30m</source>
++        <translation type="vanished">30m</translation>
++    </message>
++    <message>
++        <source>45m</source>
++        <translation type="vanished">45m</translation>
++    </message>
++    <message>
++        <source>1h</source>
++        <translation type="vanished">1h</translation>
++    </message>
++    <message>
++        <source>1.5h</source>
++        <translation type="vanished">1.5h</translation>
++    </message>
++    <message>
++        <source>3h</source>
++        <translation type="vanished">3h</translation>
++    </message>
++    <message>
++        <source>2h</source>
++        <translation type="vanished">2h</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="172"/>
++        <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>allFiles(*.*)</source>
++        <translation type="vanished">所有文件(*.*)</translation>
++    </message>
++    <message>
++        <source>1min</source>
++        <translation type="vanished">1分钟</translation>
++    </message>
++    <message>
++        <source>5min</source>
++        <translation type="vanished">5分钟</translation>
++    </message>
++    <message>
++        <source>10min</source>
++        <translation type="vanished">10分钟</translation>
++    </message>
++    <message>
++        <source>30min</source>
++        <translation type="vanished">30分钟</translation>
++    </message>
++    <message>
++        <source>45min</source>
++        <translation type="vanished">45分钟</translation>
++    </message>
++    <message>
++        <source>1hour</source>
++        <translation type="vanished">1小时</translation>
++    </message>
++    <message>
++        <source>2hour</source>
++        <translation type="vanished">2小时</translation>
++    </message>
++    <message>
++        <source>3hour</source>
++        <translation type="vanished">3小时</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="213"/>
++        <source>select custom wallpaper file</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="214"/>
++        <source>Select</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="215"/>
++        <source>Position: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="216"/>
++        <source>FileName: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="217"/>
++        <source>FileType: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="218"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Monitor Off</source>
++        <translation type="vanished">关闭显示器</translation>
++    </message>
++    <message>
++        <source>Screensaver</source>
++        <translation type="vanished">屏幕保护</translation>
++    </message>
++    <message>
++        <source>Set</source>
++        <translation type="vanished">去设置</translation>
++    </message>
++</context>
++<context>
++    <name>ScreenlockUi</name>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="41"/>
++        <source>Show picture of screenlock on screenlogin</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Show picture of screenlock on screenlogin</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="44"/>
++        <source>Leave lock (System will be locked when the paired phone gone)</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Leave lock (System will be locked when the paired phone gone)</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
++        <source>Specified device</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="46"/>
++        <source>No paired phone. Please turn to &apos;Bluetooth&apos; to pair.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="66"/>
++        <source>Screenlock</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Screenlock</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="96"/>
++        <source>Local Pictures</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Local Pictures</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="98"/>
++        <source>Online Pictures</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Online Pictures</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="100"/>
++        <source>Reset To Default</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Reset To Default</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="112"/>
++        <source>Bluetooth</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="117"/>
++        <source>No bluetooth adapter detected, can not use Leave Lock.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="136"/>
++        <source>Monitor Off</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Monitor Off</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="138"/>
++        <source>Screensaver</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Screensaver</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="141"/>
++        <source>Related Settings</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screenlock/Related Settings</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="147"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="148"/>
++        <source>Set</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="163"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="530"/>
++        <source>Please select device</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Screensaver</name>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="37"/>
++        <source>Screensaver</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Idle time</source>
++        <translation type="vanished">此时间段后开启屏保</translation>
++        <extra-contents_path>/Screensaver/Idle time</extra-contents_path>
++    </message>
++    <message>
++        <source>Lock screen when activating screensaver</source>
++        <translation type="vanished">激活屏保时锁住屏幕</translation>
++    </message>
++    <message>
++        <source>Enable screensaver</source>
++        <translation type="vanished">开启屏保</translation>
++    </message>
++    <message>
++        <source>Screensaver program</source>
++        <translation type="vanished">屏幕保护程序</translation>
++        <extra-contents_path>/Screensaver/Screensaver program</extra-contents_path>
++    </message>
++    <message>
++        <source>idle time</source>
++        <translation type="vanished">等待时间</translation>
++    </message>
++    <message>
++        <source>Min</source>
++        <translation type="vanished">分钟</translation>
++    </message>
++    <message>
++        <source>Lock screen when screensaver boot</source>
++        <translation type="vanished">激活屏保时锁定屏幕</translation>
++    </message>
++    <message>
++        <source>screensaver</source>
++        <translation type="vanished">屏保</translation>
++    </message>
++    <message>
++        <source>Default_ukui</source>
++        <translation type="vanished">默认屏保</translation>
++    </message>
++    <message>
++        <source>View</source>
++        <translation type="vanished">预览</translation>
++    </message>
++    <message>
++        <source>Text(up to 30 characters):</source>
++        <translation type="vanished">屏保文本(最多30个字):</translation>
++    </message>
++    <message>
++        <source>Show rest time</source>
++        <translation type="vanished">显示休息时间</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="174"/>
++        <source>UKUI</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Blank_Only</source>
++        <translation type="vanished">黑屏</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="174"/>
++        <source>Customize</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
++        <source>5min</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
++        <source>10min</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
++        <source>15min</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
++        <source>30min</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
++        <source>1hour</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Screensaver source</source>
++        <translation type="vanished">屏保来源</translation>
++    </message>
++    <message>
++        <source>Select</source>
++        <translation type="vanished">选择</translation>
++    </message>
++    <message>
++        <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</source>
++        <translation type="vanished">壁纸文件(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</translation>
++    </message>
++    <message>
++        <source>select custom screensaver dir</source>
++        <translation type="vanished">选择自定义屏保路径</translation>
++    </message>
++    <message>
++        <source>Position: </source>
++        <translation type="vanished">位置:</translation>
++    </message>
++    <message>
++        <source>FileName: </source>
++        <translation type="vanished">文件名:</translation>
++    </message>
++    <message>
++        <source>FileType: </source>
++        <translation type="vanished">文件类型:</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Switching time</source>
++        <translation type="vanished">切换频率</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="168"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
++        <source>1min</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Ordinal</source>
++        <translation type="vanished">按顺序</translation>
++    </message>
++    <message>
++        <source>Random switching</source>
++        <translation type="vanished">随机切换</translation>
++    </message>
++    <message>
++        <source>Display text</source>
++        <translation type="vanished">显示文本</translation>
++    </message>
++    <message>
++        <source>Enter text, up to 30 characters</source>
++        <translation type="vanished">输入文本,最多30个字符</translation>
++    </message>
++    <message>
++        <source>Text position</source>
++        <translation type="vanished">文本位置</translation>
++    </message>
++    <message>
++        <source>Centered</source>
++        <translation type="vanished">居中</translation>
++    </message>
++    <message>
++        <source>Randow(Bubble text)</source>
++        <translation type="vanished">随机(气泡文本)</translation>
++    </message>
++    <message>
++        <source>1m</source>
++        <translation type="vanished">1m</translation>
++    </message>
++    <message>
++        <source>5m</source>
++        <translation type="vanished">5m</translation>
++    </message>
++    <message>
++        <source>10m</source>
++        <translation type="vanished">10m</translation>
++    </message>
++    <message>
++        <source>30m</source>
++        <translation type="vanished">30m</translation>
++    </message>
++    <message>
++        <source>45m</source>
++        <translation type="vanished">45m</translation>
++    </message>
++    <message>
++        <source>1h</source>
++        <translation type="vanished">1h</translation>
++    </message>
++    <message>
++        <source>1.5h</source>
++        <translation type="vanished">1.5h</translation>
++    </message>
++    <message>
++        <source>3h</source>
++        <translation type="vanished">3h</translation>
++    </message>
++    <message>
++        <source>Random</source>
++        <translation type="vanished">随机</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
++        <source>Never</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>ScreensaverUi</name>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="40"/>
++        <source>Screensaver</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screensaver/Screensaver</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="53"/>
++        <source>Idle time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screensaver/Idle time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="55"/>
++        <source>Screensaver program</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screensaver/Screensaver program</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="87"/>
++        <source>Screensaver source</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screensaver/Screensaver source</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="92"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="455"/>
++        <source>Select</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="113"/>
++        <source>Ordinal</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="114"/>
++        <source>Random</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="121"/>
++        <source>Random switching</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screensaver/Random switching</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="141"/>
++        <source>Switching time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screensaver/Switching time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="160"/>
++        <source>Text(up to 30 characters):</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screensaver/Text(up to 30 characters):</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="183"/>
++        <source>Text position</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screensaver/Text position</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="191"/>
++        <source>Centered</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="192"/>
++        <source>Randow(Bubble text)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="214"/>
++        <source>Show rest time</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screensaver/Show rest time</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="224"/>
++        <source>Lock screen when screensaver boot</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Screensaver/Lock screen when screensaver boot</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="413"/>
++        <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="454"/>
++        <source>select custom screensaver dir</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="456"/>
++        <source>Position: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="457"/>
++        <source>FileName: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="458"/>
++        <source>FileType: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="459"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Search</name>
++    <message>
++        <source>Search</source>
++        <translation type="vanished">搜索</translation>
++    </message>
++    <message>
++        <source>Create Index</source>
++        <translation type="vanished">创建索引</translation>
++    </message>
++    <message>
++        <source>Create index</source>
++        <translation type="vanished">创建索引</translation>
++    </message>
++    <message>
++        <source>Creating index can help you getting results quickly.</source>
++        <translation type="vanished">创建索引可以帮助您快速获取搜索结果</translation>
++    </message>
++    <message>
++        <source>Web Engine</source>
++        <translation type="vanished">搜索引擎</translation>
++    </message>
++    <message>
++        <source>Default web searching engine</source>
++        <translation type="vanished">默认互联网搜索引擎</translation>
++    </message>
++    <message>
++        <source>baidu</source>
++        <translation type="vanished">百度</translation>
++    </message>
++    <message>
++        <source>sougou</source>
++        <translation type="vanished">搜狗</translation>
++    </message>
++    <message>
++        <source>360</source>
++        <translation type="vanished">360</translation>
++    </message>
++    <message>
++        <source>Block Folders</source>
++        <translation type="vanished">屏蔽文件夹</translation>
++    </message>
++    <message>
++        <source>Following folders will not be searched. You can set it by adding and removing folders.</source>
++        <translation type="vanished">搜索将不再查看以下文件夹,通过添加和删除可以设置文件索引位置。</translation>
++    </message>
++    <message>
++        <source>Choose folder</source>
++        <translation type="vanished">选择要屏蔽的文件夹</translation>
++    </message>
++    <message>
++        <source>delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source>Directories</source>
++        <translation type="vanished">文件夹</translation>
++    </message>
++    <message>
++        <source>select blocked folder</source>
++        <translation type="vanished">选择要屏蔽的文件夹</translation>
++    </message>
++    <message>
++        <source>Select</source>
++        <translation type="vanished">选择</translation>
++    </message>
++    <message>
++        <source>Position: </source>
++        <translation type="vanished">位置: </translation>
++    </message>
++    <message>
++        <source>FileName: </source>
++        <translation type="vanished">文件名: </translation>
++    </message>
++    <message>
++        <source>FileType: </source>
++        <translation type="vanished">文件类型: </translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Warning</source>
++        <translation type="vanished">警告</translation>
++    </message>
++    <message>
++        <source>Add blocked folder failed, choosen path is empty!</source>
++        <translation type="vanished">添加文件夹失败,路径为空!</translation>
++    </message>
++    <message>
++        <source>Add blocked folder failed, it is not in home path!</source>
++        <translation type="vanished">添加文件夹失败,请选择用户目录下的文件夹!</translation>
++    </message>
++    <message>
++        <source>Add blocked folder failed, its parent dir is exist!</source>
++        <translation type="vanished">添加文件夹失败,父文件夹已被屏蔽!</translation>
++    </message>
++    <message>
++        <source>Add blocked folder failed, it has been already blocked!</source>
++        <translation type="vanished">添加文件夹失败,该文件夹已被屏蔽!</translation>
++    </message>
++</context>
++<context>
++    <name>SearchWidget</name>
++    <message>
++        <source>Touchpad</source>
++        <translation type="obsolete">触控板</translation>
++    </message>
++    <message>
++        <location filename="../../searchwidget.cpp" line="83"/>
++        <location filename="../../searchwidget.cpp" line="84"/>
++        <location filename="../../searchwidget.cpp" line="91"/>
++        <location filename="../../searchwidget.cpp" line="93"/>
++        <location filename="../../searchwidget.cpp" line="98"/>
++        <source>No search results</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>SecurityCenter</name>
++    <message>
++        <source>SecurityCenter</source>
++        <translation type="vanished">安全中心</translation>
++    </message>
++    <message>
++        <source>Computer Security Overview</source>
++        <translation type="vanished">安全功能概览</translation>
++    </message>
++    <message>
++        <source>Understand current computer security situation and take measures</source>
++        <translation type="vanished">保障系统安全性,并采取有效措施</translation>
++    </message>
++    <message>
++        <source>Summarize</source>
++        <translation type="vanished">概述</translation>
++    </message>
++    <message>
++        <source>Recognize the current security of the system, and can take the necessary settings</source>
++        <translation type="vanished">了解系统当前安全性,并可采取必要的设置操作</translation>
++    </message>
++    <message>
++        <source>Run Security Center</source>
++        <translation type="vanished">打开安全中心</translation>
++    </message>
++    <message>
++        <source>Security Center</source>
++        <translation type="vanished">安全中心</translation>
++    </message>
++    <message>
++        <source>Virus Protection</source>
++        <translation type="vanished">病毒防护</translation>
++    </message>
++    <message>
++        <source>Protect system from threats</source>
++        <translation type="vanished">实时防护,帮助系统免受威胁</translation>
++    </message>
++    <message>
++        <source>Network Protection</source>
++        <translation type="vanished">网络保护</translation>
++    </message>
++    <message>
++        <source>Setup app that can access web</source>
++        <translation type="vanished">设置可访问网络的应用</translation>
++    </message>
++    <message>
++        <source>App Execution Control</source>
++        <translation type="vanished">应用执行控制</translation>
++    </message>
++    <message>
++        <source>App install and exe protection</source>
++        <translation type="vanished">应用程序安装和执行保护</translation>
++    </message>
++    <message>
++        <source>Account Security</source>
++        <translation type="vanished">账户安全</translation>
++    </message>
++    <message>
++        <source>Protect account and login security</source>
++        <translation type="vanished">提供账户相关的安全保障</translation>
++    </message>
++    <message>
++        <source>Safety check-up</source>
++        <translation type="vanished">安全体检</translation>
++    </message>
++    <message>
++        <source>Detect abnormal configuration</source>
++        <translation type="vanished">检查修复系统漏洞和异常配置</translation>
++    </message>
++    <message>
++        <source>Virus defense</source>
++        <translation type="vanished">病毒防护</translation>
++    </message>
++    <message>
++        <source>Real time protection from virus threat</source>
++        <translation type="vanished">保护系统免受恶意程序攻击</translation>
++    </message>
++    <message>
++        <source>App protection</source>
++        <translation type="vanished">应用控制与保护</translation>
++    </message>
++    <message>
++        <source>App install</source>
++        <translation type="vanished">提供应用程序安装,运行防护</translation>
++    </message>
++    <message>
++        <source>Net protection</source>
++        <translation type="vanished">网络保护</translation>
++    </message>
++    <message>
++        <source>Secure Config</source>
++        <translation type="vanished">系统安全配置</translation>
++    </message>
++    <message>
++        <source>Simple Config</source>
++        <translation type="vanished">启用系统安全功能的相关配置</translation>
++    </message>
++    <message>
++        <source>Network protection</source>
++        <translation type="vanished">网络保护</translation>
++    </message>
++    <message>
++        <source>Manage and control network</source>
++        <translation type="vanished">提供应用联网行为的管控</translation>
++    </message>
++    <message>
++        <source>Secure mode configuration</source>
++        <translatorcomment>启用系统安全功能配置</translatorcomment>
++        <translation type="vanished">安全模式配置</translation>
++    </message>
++    <message>
++        <source>Simple configuraion</source>
++        <translation type="vanished">启用系统安全功能简易配置</translation>
++    </message>
++</context>
++<context>
++    <name>ShareMain</name>
++    <message>
++        <location filename="../../../plugins/system/vino/sharemain.cpp" line="76"/>
++        <source>Connect to your desktop remotely</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/Connect to your desktop remotely</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/sharemain.cpp" line="81"/>
++        <source>Allow others to connect to your desktop remotely using RDP</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/Allow others to connect to your desktop remotely using RDP</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/sharemain.cpp" line="88"/>
++        <source>Allow others to connect to your desktop remotely using VNC</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/Allow others to connect to your desktop remotely using VNC</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/sharemain.cpp" line="106"/>
++        <source>Require user to enter this password while using VNC: </source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/Require user to enter this password while using VNC:</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/sharemain.cpp" line="112"/>
++        <source>Edit</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/sharemain.cpp" line="124"/>
++        <source>Displays that allow remote access</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/Displays that allow remote access</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/sharemain.cpp" line="132"/>
++        <source>The number of remote clients allowed to connect</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/The number of remote clients allowed to connect</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/sharemain.cpp" line="227"/>
++        <source>Warning</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/sharemain.cpp" line="227"/>
++        <source>please select an output</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/sharemain.cpp" line="72"/>
++        <source>Remote Desktop</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/Remote Desktop</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/sharemain.cpp" line="94"/>
++        <source>Allow connection to control screen</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/Allow connection to control screen</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/vino/sharemain.cpp" line="100"/>
++        <source>You must confirm every visit for this machine</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Vino/You must confirm every visit for this machine</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>Shortcut</name>
++    <message>
++        <source>System Shortcut</source>
++        <translation type="vanished">系统快捷键</translation>
++        <extra-contents_path>/Shortcut/System Shortcut</extra-contents_path>
++    </message>
++    <message>
++        <source>Show all shortcut</source>
++        <translation type="vanished">显示全部快捷键</translation>
++    </message>
++    <message>
++        <source>Custom Shortcut</source>
++        <translation type="vanished">自定义快捷键</translation>
++    </message>
++    <message>
++        <source>Customize Shortcut</source>
++        <translation type="vanished">自定义快捷键</translation>
++        <extra-contents_path>/Shortcut/Customize Shortcut</extra-contents_path>
++    </message>
++    <message>
++        <source>Add custom shortcut</source>
++        <translation type="vanished">添加自定义快捷键</translation>
++    </message>
++    <message>
++        <source>Add</source>
++        <translation type="vanished">添加</translation>
++        <extra-contents_path>/Shortcut/Add</extra-contents_path>
++    </message>
++    <message>
++        <source>Edit</source>
++        <translation type="vanished">编辑</translation>
++    </message>
++    <message>
++        <source>Delete</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <source> or </source>
++        <translation type="vanished"> 或 </translation>
++    </message>
++    <message>
++        <source>disable</source>
++        <translation type="vanished">无效</translation>
++    </message>
++    <message>
++        <source>Reset default</source>
++        <translation type="vanished">恢复默认快捷键</translation>
++    </message>
++    <message>
++        <source>shortcut</source>
++        <translation type="vanished">快捷键</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcut.cpp" line="38"/>
++        <source>Shortcut</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Desktop</source>
++        <translation type="vanished">桌面</translation>
++    </message>
++    <message>
++        <source>System</source>
++        <translation type="vanished">系统</translation>
++    </message>
++</context>
++<context>
++    <name>ShortcutInterface</name>
++    <message>
++        <source> or </source>
++        <translation type="vanished"> 或 </translation>
++    </message>
++</context>
++<context>
++    <name>ShortcutUi</name>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="33"/>
++        <source>System Shortcut</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Shortcut/System Shortcut</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="46"/>
++        <source>Customize Shortcut</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Shortcut/Customize Shortcut</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="77"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="81"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="98"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="102"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="180"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="269"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="481"/>
++        <source>Null</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="230"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="362"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="617"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Use</source>
++        <translation type="vanished">使用</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="232"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="364"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="619"/>
++        <source>Shortcut key conflict, use it?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="233"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="365"/>
++        <source>%1 occuied, using this combination will invalidate %2</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="256"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="395"/>
++        <source>Shortcut &quot;%1&quot; occuied, please change the key combination</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="447"/>
++        <source>Edit</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="448"/>
++        <source>Delete</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="231"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="363"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="618"/>
++        <source>Continue</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="620"/>
++        <source>&quot;%1&quot; occuied, using this combination will invalidate &quot;%2&quot;.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="660"/>
++        <source> or </source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>ShowAllShortcut</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="obsolete">更改时间</translation>
++    </message>
++    <message>
++        <source>System Shortcuts</source>
++        <translation type="vanished">快捷键</translation>
++    </message>
++    <message>
++        <source>Show all shortcut</source>
++        <translation type="vanished">显示全部快捷键</translation>
++    </message>
++    <message>
++        <source>Desktop</source>
++        <translation type="vanished">桌面</translation>
++    </message>
++</context>
++<context>
++    <name>SpliceDialog</name>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.ui" line="26"/>
++        <source>Dialog</source>
++        <translation></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="11"/>
++        <source>Splice Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.ui" line="260"/>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="12"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.ui" line="279"/>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="13"/>
++        <source>Ok</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.ui" line="118"/>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="16"/>
++        <source>Splicing Method</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="91"/>
++        <source>row</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="91"/>
++        <source>rows</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="92"/>
++        <source>column</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="92"/>
++        <source>columns</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="93"/>
++        <source>%1 %2, %3 %4</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="130"/>
++        <source>Row %1, Column %2</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/splicedialog.cpp" line="143"/>
++        <source>Select screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>StatusDialog</name>
++    <message>
++        <location filename="../../../plugins/system/about/statusdialog.cpp" line="10"/>
++        <source>About</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/statusdialog.cpp" line="59"/>
++        <source>Activation Code</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>SuccessDiaolog</name>
++    <message>
++        <source>Reback sign in</source>
++        <translation type="vanished">重新登录</translation>
++    </message>
++    <message>
++        <source>Sign up success!</source>
++        <translation type="vanished">注册账号成功!</translation>
++    </message>
++    <message>
++        <source>Reset success!</source>
++        <translation type="vanished">重置密码成功!</translation>
++    </message>
++    <message>
++        <source>Sign in success!</source>
++        <translation type="vanished">登录帐号成功!</translation>
++    </message>
++    <message>
++        <source>Binding phone success!</source>
++        <translation type="vanished">绑定手机!</translation>
++    </message>
++    <message>
++        <source>Confirm</source>
++        <translation type="vanished">确定</translation>
++    </message>
++</context>
++<context>
++    <name>SyncDialog</name>
++    <message>
++        <source>Sync</source>
++        <translation type="vanished">同步</translation>
++    </message>
++    <message>
++        <source>Do not</source>
++        <translation type="vanished">放弃</translation>
++    </message>
++    <message>
++        <source>Last sync at %1</source>
++        <translation type="vanished">上次同步于%1</translation>
++    </message>
++    <message>
++        <source>Sync now?</source>
++        <translation type="vanished">选择以下同步覆盖,继续?</translation>
++    </message>
++    <message>
++        <source>Wallpaper</source>
++        <translation type="vanished">桌面壁纸</translation>
++    </message>
++    <message>
++        <source>ScreenSaver</source>
++        <translation type="vanished">屏保</translation>
++    </message>
++    <message>
++        <source>Font</source>
++        <translation type="vanished">字体</translation>
++    </message>
++    <message>
++        <source>Avatar</source>
++        <translation type="vanished">头像</translation>
++    </message>
++    <message>
++        <source>Menu</source>
++        <translation type="vanished">开始菜单</translation>
++    </message>
++    <message>
++        <source>Tab</source>
++        <translation type="vanished">任务栏</translation>
++    </message>
++    <message>
++        <source>Quick Start</source>
++        <translation type="vanished">快速启动项</translation>
++    </message>
++    <message>
++        <source>Themes</source>
++        <translation type="vanished">主题</translation>
++    </message>
++    <message>
++        <source>Mouse</source>
++        <translation type="vanished">鼠标</translation>
++    </message>
++    <message>
++        <source>TouchPad</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>KeyBoard</source>
++        <translation type="vanished">键盘</translation>
++    </message>
++    <message>
++        <source>ShortCut</source>
++        <translation type="vanished">快捷键</translation>
++    </message>
++    <message>
++        <source>Area</source>
++        <translation type="vanished">区域语言</translation>
++    </message>
++    <message>
++        <source>Date/Time</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>Default Open</source>
++        <translation type="vanished">默认打开方式</translation>
++    </message>
++    <message>
++        <source>Notice</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <source>Option</source>
++        <translation type="vanished">登录选项</translation>
++    </message>
++    <message>
++        <source>Peony</source>
++        <translation type="vanished">文件管理器</translation>
++    </message>
++    <message>
++        <source>Boot</source>
++        <translation type="vanished">开机启动项</translation>
++    </message>
++    <message>
++        <source>Power</source>
++        <translation type="vanished">电源</translation>
++    </message>
++    <message>
++        <source>Editor</source>
++        <translation type="vanished">文本编辑器</translation>
++    </message>
++    <message>
++        <source>Terminal</source>
++        <translation type="vanished">终端</translation>
++    </message>
++    <message>
++        <source>Weather</source>
++        <translation type="vanished">天气</translation>
++    </message>
++    <message>
++        <source>Media</source>
++        <translation type="vanished">影音</translation>
++    </message>
++</context>
++<context>
++    <name>TabWid</name>
++    <message>
++        <source>Check Update</source>
++        <translation type="vanished">检查更新</translation>
++    </message>
++    <message>
++        <source>initializing</source>
++        <translation type="vanished">初始化中</translation>
++    </message>
++    <message>
++        <source>Service connection abnormal,please retest!</source>
++        <translation type="vanished">服务连接异常,请重新检测!</translation>
++    </message>
++    <message>
++        <source>Prompt information</source>
++        <translation type="vanished">提示信息</translation>
++    </message>
++    <message>
++        <source>Update now</source>
++        <translation type="vanished">立即更新</translation>
++    </message>
++    <message>
++        <source>Cancel update</source>
++        <translation type="vanished">取消更新</translation>
++    </message>
++    <message>
++        <source>No,I Don&apos;t Backup</source>
++        <translation type="vanished">否,我不备份</translation>
++    </message>
++    <message>
++        <source>Being updated...</source>
++        <translation type="vanished">正在更新...</translation>
++    </message>
++    <message>
++        <source>UpdateAll</source>
++        <translation type="vanished">全部更新</translation>
++    </message>
++    <message>
++        <source>The backup restore partition could not be found. The system will not be backed up in this update!</source>
++        <translation type="vanished">未能找到备份还原分区,本次更新不会备份系统!</translation>
++    </message>
++    <message>
++        <source>Kylin backup restore tool is doing other operations, please update later.</source>
++        <translation type="vanished">麒麟备份还原工具正在进行其他操作,请稍后更新</translation>
++    </message>
++    <message>
++        <source>The source manager configuration file is abnormal, the system temporarily unable to update!</source>
++        <translation type="vanished">源管理器配置文件异常,暂时无法更新!</translation>
++    </message>
++    <message>
++        <source>Backup already, no need to backup again.</source>
++        <translation type="vanished">已备份,无需再次备份</translation>
++    </message>
++    <message>
++        <source>Kylin backup restore tool does not exist, this update will not backup the system!</source>
++        <translation type="vanished">麒麟备份还原工具不存在,本次更新不会备份系统</translation>
++    </message>
++    <message>
++        <source>Backup complete.</source>
++        <translation type="vanished">备份完成</translation>
++    </message>
++    <message>
++        <source>In backup:</source>
++        <translation type="vanished">备份中:</translation>
++    </message>
++    <message>
++        <source>Start backup,getting progress</source>
++        <translation type="vanished">开始备份,正在获取进度</translation>
++    </message>
++    <message>
++        <source>Ready to install</source>
++        <translation type="vanished">准备安装</translation>
++    </message>
++    <message>
++        <source>The battery is below 50% and the update cannot be downloaded</source>
++        <translation type="vanished">电池电量低于 50%,无法下载更新</translation>
++    </message>
++    <message>
++        <source>OK</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Please back up the system before all updates to avoid unnecessary losses</source>
++        <translation type="vanished">请在所有更新前备份系统,以免造成不必要的损失</translation>
++    </message>
++    <message>
++        <source>Only Update</source>
++        <translation type="vanished">仅更新</translation>
++    </message>
++    <message>
++        <source>Back And Update</source>
++        <translation type="vanished">备份并更新</translation>
++    </message>
++    <message>
++        <source>Failed to write configuration file, this update will not back up the system!</source>
++        <translation type="vanished">写入配置文件失败,本次更新不会备份系统!</translation>
++    </message>
++    <message>
++        <source>Insufficient backup space, this update will not backup your system!</source>
++        <translation type="vanished">备份空间不足,本次更新不会备份系统!</translation>
++    </message>
++    <message>
++        <source>Kylin backup restore tool could not find the UUID, this update will not backup the system!</source>
++        <translation type="vanished">麒麟备份还原工具无法找到UUID,本次更新不会备份系统</translation>
++    </message>
++    <message>
++        <source>Backup interrupted, stop updating!</source>
++        <translation type="vanished">备份过程被中断,停止更新!</translation>
++    </message>
++    <message>
++        <source>Failed to connect to software warehouse!</source>
++        <translation type="vanished">连接软件仓库失败</translation>
++    </message>
++    <message>
++        <source>Downloading and installing updates...</source>
++        <translation type="vanished">正在下载并安装更新...</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>System is backing up...</source>
++        <translation type="vanished">系统正在备份中...</translation>
++    </message>
++    <message>
++        <source>Backup finished!</source>
++        <translation type="vanished">备份完成!</translation>
++    </message>
++    <message>
++        <source>Kylin backup restore tool exception:</source>
++        <translation type="vanished">麒麟备份还原工具异常:</translation>
++    </message>
++    <message>
++        <source>There will be no backup in this update!</source>
++        <translation type="vanished">本次更新不会备份系统!</translation>
++    </message>
++    <message>
++        <source>Getting update list</source>
++        <translation type="vanished">正在获取更新列表</translation>
++    </message>
++    <message>
++        <source>Software source update failed: </source>
++        <translation type="vanished">软件源更新失败:</translation>
++    </message>
++    <message>
++        <source>Update software source :</source>
++        <translation type="vanished">更新软件源进度:</translation>
++    </message>
++    <message>
++        <source>Reconnect times:</source>
++        <translation type="vanished">重连次数:</translation>
++    </message>
++    <message>
++        <source>Update</source>
++        <translation type="vanished">更新</translation>
++    </message>
++    <message>
++        <source>View history</source>
++        <translation type="vanished">查看更新历史</translation>
++    </message>
++    <message>
++        <source>Update Settings</source>
++        <translation type="vanished">更新设置</translation>
++    </message>
++    <message>
++        <source>Allowed to renewable notice</source>
++        <translation type="vanished">允许通知可更新的应用</translation>
++    </message>
++    <message>
++        <source>Backup current system before updates all</source>
++        <translation type="vanished">全部更新前备份系统</translation>
++    </message>
++    <message>
++        <source>Your system is the latest!</source>
++        <translation type="vanished">您的系统已是最新!</translation>
++    </message>
++    <message>
++        <source>Updatable app detected on your system!</source>
++        <translation type="vanished">检测到你的系统有可更新的应用!</translation>
++    </message>
++    <message>
++        <source>Automatically download and install updates</source>
++        <translation type="vanished">自动下载和安装更新</translation>
++    </message>
++    <message>
++        <source>After it is turned on, the system will automatically download and install updates when there is an available network and available backup and restore partitions.</source>
++        <translation type="vanished">开启后,当有可用网络和可用备份和恢复分区时,系统会自动下载和安装更新</translation>
++    </message>
++    <message>
++        <source>Last refresh:</source>
++        <translation type="vanished">上次更新:</translation>
++    </message>
++    <message>
++        <source>Last Checked:</source>
++        <translation type="vanished">上次检测:</translation>
++    </message>
++    <message>
++        <source>trying to reconnect </source>
++        <translation type="vanished">重新尝试连接</translation>
++    </message>
++    <message>
++        <source> times</source>
++        <translation type="vanished">次数</translation>
++    </message>
++    <message>
++        <source>Updating the software source</source>
++        <translation type="vanished">正在更新软件源</translation>
++    </message>
++    <message>
++        <source>This update will not backup the current system, do you want to continue the update?</source>
++        <translation type="vanished">本次更新不会备份当前系统,是否继续更新?</translation>
++    </message>
++    <message>
++        <source>Yes, keep updating</source>
++        <translation type="vanished">是,继续更新</translation>
++    </message>
++    <message>
++        <source>No, backup now</source>
++        <translation type="vanished">否,立即备份</translation>
++    </message>
++    <message>
++        <source>Not updated</source>
++        <translation type="vanished">暂不更新</translation>
++    </message>
++    <message>
++        <source>Part of the update failed!</source>
++        <translation type="vanished">部分更新失败!</translation>
++    </message>
++    <message>
++        <source>An important update is in progress, please wait.</source>
++        <translation type="vanished">正在进行一项重要更新,请等待。</translation>
++    </message>
++    <message>
++        <source>The backup restore partition is abnormal. You may not have a backup restore partition.For more details,see /var/log/backup.log</source>
++        <translation type="vanished">备份还原分区异常,您可能没有备份还原分区。更多详细信息,可以参看/var/log/backup.log</translation>
++    </message>
++    <message>
++        <source>Other err! please refers /var/log/backup.txt!</source>
++        <translation type="vanished">其他错误!请查看/var/log/backup.txt</translation>
++    </message>
++    <message>
++        <source>Calculating Capacity...</source>
++        <translation type="vanished">计算系统空间大小</translation>
++    </message>
++    <message>
++        <source>Update software source progress:</source>
++        <translation type="vanished">更新软件源进度:</translation>
++    </message>
++    <message>
++        <source>Reconnect times</source>
++        <translation type="vanished">重连次数</translation>
++    </message>
++    <message>
++        <source>Allows notifications to be updatable for applications.</source>
++        <translation type="vanished">允许通知可更新的应用</translation>
++    </message>
++    <message>
++        <source>Backup the current system as a rollback version before all updates</source>
++        <translation type="vanished">全部更新前备份当前系统为可回退的版本</translation>
++    </message>
++</context>
++<context>
++    <name>Theme</name>
++    <message>
++        <source>Theme Mode</source>
++        <translation type="vanished">主题模式</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="111"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="534"/>
++        <source>Theme</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
++        <source>Default</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
++        <source>Light</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
++        <source>Dark</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="190"/>
++        <source>Auto</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="423"/>
++        <source>Corlor</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Corlor</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="608"/>
++        <source>Other</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Other</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="613"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
++        <source>Set</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="611"/>
++        <source>Wallpaper</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Wallpaper</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="224"/>
++        <source>Corner</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Corner</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
++        <source>Right angle</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
++        <source>Small</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="232"/>
++        <source>Big</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="615"/>
++        <source>Beep</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Beep</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="963"/>
++        <source>Blue-Crystal</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="965"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
++        <source>Light-Seeking</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="967"/>
++        <source>DMZ-Black</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="969"/>
++        <source>DMZ-White</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="971"/>
++        <source>Dark-Sense</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1045"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
++        <source>basic</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
++        <source>Classic</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Origins-Tracing</source>
++        <translation type="vanished">溯源</translation>
++    </message>
++    <message>
++        <source>fashion</source>
++        <translation type="vanished">时尚</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1053"/>
++        <source>hp</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
++        <source>ukui</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1051"/>
++        <source>HeYin</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
++        <source>classic</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1057"/>
++        <source>daybreakBlue</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1059"/>
++        <source>jamPurple</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1061"/>
++        <source>magenta</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1063"/>
++        <source>sunRed</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1065"/>
++        <source>sunsetOrange</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1067"/>
++        <source>dustGold</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1069"/>
++        <source>polarGreen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>default</source>
++        <translation type="vanished">默认</translation>
++    </message>
++    <message>
++        <source>Middle</source>
++        <translation type="vanished">中</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="248"/>
++        <source>Window Theme</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Window Theme</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="250"/>
++        <source>Icon theme</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Icon theme</extra-contents_path>
++    </message>
++    <message>
++        <source>Control theme</source>
++        <translation type="vanished">控件主题</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="253"/>
++        <source>Cursor theme</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Cursor theme</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="215"/>
++        <source>Effect setting</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Effect setting</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="222"/>
++        <source>Transparency</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Transparency</extra-contents_path>
++    </message>
++    <message>
++        <source>Transparent effects</source>
++        <translation type="vanished">透明特效</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="220"/>
++        <source>Performance mode</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Theme/Performance mode</extra-contents_path>
++    </message>
++    <message>
++        <source>Transparent</source>
++        <translation type="vanished">透明特效</translation>
++    </message>
++    <message>
++        <source>Low</source>
++        <translation type="vanished">低</translation>
++    </message>
++    <message>
++        <source>High</source>
++        <translation type="vanished">高</translation>
++    </message>
++    <message>
++        <source>Reset to default</source>
++        <translation type="vanished">恢复默认</translation>
++    </message>
++    <message>
++        <source>theme</source>
++        <translation type="vanished">主题</translation>
++    </message>
++</context>
++<context>
++    <name>TimeBtn</name>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="106"/>
++        <source>Tomorrow</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="108"/>
++        <source>Yesterday</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="110"/>
++        <source>Today</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="128"/>
++        <source>%1 hours earlier than local</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="130"/>
++        <source>%1 hours later than local</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>TimeZoneChooser</name>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="35"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="37"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Change time zone</source>
++        <translation type="vanished">更改时区</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="33"/>
++        <source>Search Timezone</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Input what you are looking for</source>
++        <translation type="vanished">搜索时区</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="64"/>
++        <source>To select a time zone, please click where near you on the map and select a city from the nearest city</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>change timezone</source>
++        <translation type="vanished">修改系统时区</translation>
++    </message>
++    <message>
++        <source>change zonne</source>
++        <translation type="vanished">更改时区</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="40"/>
++        <source>Change Timezone</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>TouchScreen</name>
++    <message>
++        <source>TouchScreen</source>
++        <translation type="vanished">触摸屏</translation>
++    </message>
++    <message>
++        <source>monitor</source>
++        <translation type="vanished">显示器</translation>
++    </message>
++    <message>
++        <source>touch id</source>
++        <translation type="vanished">触摸屏标识</translation>
++    </message>
++    <message>
++        <source>map</source>
++        <translation type="vanished">触摸映射</translation>
++    </message>
++    <message>
++        <source>calibration</source>
++        <translation type="vanished">触摸校准</translation>
++    </message>
++    <message>
++        <source>No touch screen found</source>
++        <translation type="vanished">未发现触摸屏设备</translation>
++    </message>
++    <message>
++        <source>input device</source>
++        <translation type="vanished">触摸设备</translation>
++    </message>
++</context>
++<context>
++    <name>Touchpad</name>
++    <message>
++        <source>Touchpad Settings</source>
++        <translation type="vanished">触控板设置</translation>
++    </message>
++    <message>
++        <source>Enabled touchpad</source>
++        <translation type="vanished">启用触控板</translation>
++    </message>
++    <message>
++        <source>Disable touchpad while typing</source>
++        <translation type="vanished">打字时禁用触控板</translation>
++    </message>
++    <message>
++        <source>Enable mouse clicks with touchpad</source>
++        <translation type="vanished">启用触控板的鼠标点击</translation>
++    </message>
++    <message>
++        <source> Mouse to disable  touchpad</source>
++        <translation type="vanished">连接鼠标或无线触控板时禁用内置触摸版</translation>
++    </message>
++    <message>
++        <source>Scrolling</source>
++        <translation type="vanished">滚动</translation>
++    </message>
++    <message>
++        <source>No touchpad found</source>
++        <translation type="vanished">未发现触控板设备</translation>
++    </message>
++    <message>
++        <source>touchpad</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>Touchpad</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>Disable rolling</source>
++        <translation type="vanished">禁用滚动</translation>
++    </message>
++    <message>
++        <source>Edge scrolling</source>
++        <translation type="vanished">边界滚动</translation>
++    </message>
++    <message>
++        <source>Two-finger scrolling</source>
++        <translation type="vanished">双指滚动</translation>
++    </message>
++    <message>
++        <source>Vertical edge scrolling</source>
++        <translation type="vanished">垂直边界滚动</translation>
++    </message>
++    <message>
++        <source>Horizontal edge scrolling</source>
++        <translation type="vanished">水平边界滚动</translation>
++    </message>
++    <message>
++        <source>Vertical two-finger scrolling</source>
++        <translation type="vanished">垂直双指滚动</translation>
++    </message>
++    <message>
++        <source>Horizontal two-finger scrolling</source>
++        <translation type="vanished">水平双指滚动</translation>
++    </message>
++</context>
++<context>
++    <name>TouchpadUI</name>
++    <message>
++        <source>Touchpad Setting</source>
++        <translation type="vanished">触控板</translation>
++    </message>
++    <message>
++        <source>No touchpad found</source>
++        <translation type="vanished">未发现触控板设备</translation>
++    </message>
++    <message>
++        <source>Slow</source>
++        <translation type="vanished">慢</translation>
++    </message>
++    <message>
++        <source>Fast</source>
++        <translation type="vanished">快</translation>
++    </message>
++    <message>
++        <source>Disable scrolling</source>
++        <translation type="vanished">禁止滚动</translation>
++    </message>
++    <message>
++        <source>Edge scrolling</source>
++        <translation type="vanished">边界滚动</translation>
++    </message>
++    <message>
++        <source>Two-finger scrolling in the middle area</source>
++        <translation type="vanished">中间区域滚动</translation>
++    </message>
++</context>
++<context>
++    <name>TrialDialog</name>
++    <message>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="12"/>
++        <source>Set</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="37"/>
++        <source>Yinhe Kylin OS(Trail Version) Disclaimer</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="46"/>
++        <source>Dear customer:
++       Thank you for trying Yinhe Kylin OS(trail version)! This version is free for users who only try out, no commercial purpose is permitted. The trail period lasts one year and it starts from the ex-warehouse time of the OS. No after-sales service is provided during the trail stage. If any security problems occurred when user put important files or do any commercial usage in system, all consequences are taken by users. Kylin software Co., Ltd. take no legal risk in trail version.
++       During trail stage,if you want any technology surpport or activate the system, please buy“Yinhe Kylin Operating System”official version or authorization by contacting 400-089-1870.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Dear customer:
++    Thank you for trying Yinhe Kylin OS(trail version)! This version is free for users who only try out, no commercial purpose is permitted. The trail period lasts one year and it starts from the ex-warehouse time of the OS. No after-sales service is provided during the trail stage. If any security problems occurred when user put important files or do any commercial usage in system, all consequences are taken by users. Kylin software Co., Ltd. take no legal risk in trail version.
++    During trail stage,if you want any technology surpport or activate the system, please buy“Yinhe Kylin Operating System”official version or authorization by contacting 400-089-1870.</source>
++        <translation type="vanished">尊敬的客户:
++    您好!随机安装的“银河麒麟操作系统(试用版)”是针对该版本对应的行业客户的免费试用版本,用于整机的试用、测试和评估,不能用于其他任何商业用途。此试用版本以软件出库时间计时,试用时间为一年。试用期间不提供相关正版软件的售后服务,如果客户在试用版本上自行存放重要文件及私自进行商业用途,由此产生的任何安全问题及结果一概由用户自己承担,麒麟软件有限公司不承担任何法律风险。
++    在试用过程中,如希望激活或者得到专业的技术服务支持,请您购买“银河麒麟操作系统”正式版本或授权,联系方式如下:400-089-1870。</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="60"/>
++        <source>Kylin software Co., Ltd.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>www.Kylinos.cn</source>
++        <translation type="vanished">www.kylinos.cn</translation>
++    </message>
++</context>
++<context>
++    <name>UkccAbout</name>
++    <message>
++        <location filename="../../ukccabout.cpp" line="34"/>
++        <location filename="../../ukccabout.cpp" line="61"/>
++        <source>Settings</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>UKCC</source>
++        <translation type="vanished">控制面板</translation>
++    </message>
++    <message>
++        <location filename="../../ukccabout.cpp" line="66"/>
++        <source>Version: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../ukccabout.cpp" line="76"/>
++        <source>Service and Support:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Developer</source>
++        <translation type="vanished">开发者:</translation>
++    </message>
++    <message>
++        <source>Vesion</source>
++        <translation type="vanished">版本</translation>
++    </message>
++    <message>
++        <source>The control panel provides a friendly graphical user interface to manage common configuration items of the operating system. System configuration provides system, equipment, personalization, network, account, time and date, account, time and date, update, notification and operation module operations. </source>
++        <translation type="vanished">“设置”提供了一个友好的用户图形界面,以及易于操作的功能模块划分,比如:系统、设备、主题、时间日期、语言、更新和安全等模块。您可以更改系统设置来自定系统。</translation>
++    </message>
++</context>
++<context>
++    <name>UkmediaApplicationWidget</name>
++    <message>
++        <source>Application Volume</source>
++        <translation type="obsolete">应用音量</translation>
++    </message>
++    <message>
++        <source>No application is currently playing or recording audio</source>
++        <translation type="obsolete">当前没有应用程序正在播放或录制音频</translation>
++    </message>
++</context>
++<context>
++    <name>UkmediaInputWidget</name>
++    <message>
++        <source>Input</source>
++        <translation type="vanished">输入</translation>
++    </message>
++    <message>
++        <source>Input Device</source>
++        <translation type="vanished">选择输入设备</translation>
++    </message>
++    <message>
++        <source>Input Device:</source>
++        <translation type="vanished">选择输入设备</translation>
++    </message>
++    <message>
++        <source>Volume</source>
++        <translation type="vanished">音量</translation>
++    </message>
++    <message>
++        <source>Input Level</source>
++        <translation type="vanished">输入反馈</translation>
++    </message>
++    <message>
++        <source>Low</source>
++        <translation type="vanished">低</translation>
++    </message>
++    <message>
++        <source>High</source>
++        <translation type="vanished">高</translation>
++    </message>
++    <message>
++        <source>Select input device</source>
++        <translation type="vanished">选择输入设备</translation>
++    </message>
++    <message>
++        <source>Input device</source>
++        <translation type="vanished">选择输入设备</translation>
++    </message>
++    <message>
++        <source>volume</source>
++        <translation type="vanished">音量大小</translation>
++    </message>
++    <message>
++        <source>Input level</source>
++        <translation type="vanished">输入等级</translation>
++    </message>
++    <message>
++        <source>low</source>
++        <translation type="vanished">低</translation>
++    </message>
++    <message>
++        <source>high</source>
++        <translation type="vanished">高</translation>
++    </message>
++    <message>
++        <source>Connector</source>
++        <translation type="vanished">连接器</translation>
++    </message>
++</context>
++<context>
++    <name>UkmediaMainWidget</name>
++    <message>
++        <source>sound error</source>
++        <translation type="vanished">声音错误</translation>
++    </message>
++    <message>
++        <source>load sound failed</source>
++        <translation type="vanished">加载声音失败</translation>
++    </message>
++    <message>
++        <source>None</source>
++        <translation type="obsolete">无</translation>
++    </message>
++</context>
++<context>
++    <name>UkmediaOutputWidget</name>
++    <message>
++        <source>Output</source>
++        <translation type="vanished">输出</translation>
++    </message>
++    <message>
++        <source>Output Device</source>
++        <translation type="vanished">选择输出设备</translation>
++    </message>
++    <message>
++        <source>Output Device:</source>
++        <translation type="vanished">选择输出设备</translation>
++    </message>
++    <message>
++        <source>Master Volume</source>
++        <translation type="vanished">音量</translation>
++    </message>
++    <message>
++        <source>Balance</source>
++        <translation type="vanished">声道平衡</translation>
++    </message>
++    <message>
++        <source>Right</source>
++        <translation type="vanished">右</translation>
++    </message>
++    <message>
++        <source>Profile</source>
++        <translation type="vanished">配置</translation>
++    </message>
++    <message>
++        <source>Card</source>
++        <translation type="vanished">声卡</translation>
++    </message>
++    <message>
++        <source>Select output device</source>
++        <translation type="vanished">选择输出设备</translation>
++    </message>
++    <message>
++        <source>Output device</source>
++        <translation type="vanished">选择输出设备</translation>
++    </message>
++    <message>
++        <source>Master volume</source>
++        <translation type="vanished">主音量大小</translation>
++    </message>
++    <message>
++        <source>Channel balance</source>
++        <translation type="vanished">声道平衡</translation>
++    </message>
++    <message>
++        <source>Left</source>
++        <translation type="vanished">左</translation>
++    </message>
++    <message>
++        <source>right</source>
++        <translation type="vanished">右</translation>
++    </message>
++    <message>
++        <source>Connector</source>
++        <translation type="vanished">连接器</translation>
++    </message>
++</context>
++<context>
++    <name>UkmediaSoundEffectsWidget</name>
++    <message>
++        <source>System sound</source>
++        <translation type="vanished">系统音效</translation>
++    </message>
++    <message>
++        <source>Sound theme</source>
++        <translation type="vanished">音效主题</translation>
++    </message>
++    <message>
++        <source>Prompt voice</source>
++        <translation type="vanished">通知音</translation>
++    </message>
++    <message>
++        <source>Boot music</source>
++        <translation type="vanished">开关机音乐</translation>
++    </message>
++    <message>
++        <source>System sound theme</source>
++        <translation type="vanished">系统音效</translation>
++    </message>
++    <message>
++        <source>prompt voice</source>
++        <translation type="vanished">通知音</translation>
++    </message>
++    <message>
++        <source>Shutdown</source>
++        <translation type="obsolete">关机</translation>
++    </message>
++    <message>
++        <source>Lagout</source>
++        <translation type="vanished">注销</translation>
++    </message>
++    <message>
++        <source>System Sound</source>
++        <translation type="vanished">系统音效</translation>
++    </message>
++    <message>
++        <source>Sound Theme</source>
++        <translation type="vanished">音效主题</translation>
++    </message>
++    <message>
++        <source>Alert Sound</source>
++        <translation type="vanished">通知</translation>
++    </message>
++    <message>
++        <source>Alert Volume</source>
++        <translation type="vanished">提示音大小</translation>
++    </message>
++    <message>
++        <source>Logout Music</source>
++        <translation type="vanished">注销</translation>
++    </message>
++    <message>
++        <source>Boot Music</source>
++        <translation type="vanished">开关机音乐</translation>
++    </message>
++    <message>
++        <source>Beep Switch</source>
++        <translation type="vanished">提示音</translation>
++    </message>
++    <message>
++        <source>Poweroff Music</source>
++        <translation type="vanished">关机</translation>
++    </message>
++    <message>
++        <source>Startup Music</source>
++        <translation type="vanished">开机</translation>
++    </message>
++    <message>
++        <source>Wakeup Music</source>
++        <translation type="vanished">唤醒</translation>
++    </message>
++    <message>
++        <source>Sleep Music</source>
++        <translation type="vanished">睡眠</translation>
++    </message>
++    <message>
++        <source>Window Closed</source>
++        <translation type="vanished">窗口关闭</translation>
++    </message>
++    <message>
++        <source>Volume Change</source>
++        <translation type="vanished">音量调节</translation>
++    </message>
++    <message>
++        <source>Setting Menu</source>
++        <translation type="vanished">设置菜单</translation>
++    </message>
++</context>
++<context>
++    <name>UnifiedOutputConfig</name>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="91"/>
++        <source>resolution</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="118"/>
++        <source>orientation</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="122"/>
++        <source>arrow-up</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="123"/>
++        <source>90° arrow-right</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="125"/>
++        <source>arrow-down</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="124"/>
++        <source>90° arrow-left</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="148"/>
++        <source>auto rotation</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/auto rotation</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="200"/>
++        <source>frequency</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="243"/>
++        <source>screen zoom</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/screen zoom</extra-contents_path>
++    </message>
++    <message>
++        <source>refresh rate</source>
++        <translation type="vanished">刷新率</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="406"/>
++        <source>auto</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Update</name>
++    <message>
++        <source>Update</source>
++        <translation type="vanished">更新</translation>
++    </message>
++    <message>
++        <source>System Update</source>
++        <translation type="vanished">系统更新</translation>
++        <extra-contents_path>/Update/System Update</extra-contents_path>
++    </message>
++    <message>
++        <source>Last check time:</source>
++        <translation type="vanished">上次检查时间:</translation>
++    </message>
++    <message>
++        <source>Check for updates</source>
++        <translation type="vanished">检查更新</translation>
++    </message>
++</context>
++<context>
++    <name>UpdateDbus</name>
++    <message>
++        <source>ukui-control-center</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <source>Settings</source>
++        <translation type="vanished">设置</translation>
++    </message>
++    <message>
++        <source>System-Upgrade</source>
++        <translation type="vanished">系统更新</translation>
++    </message>
++    <message>
++        <source>ukui-control-center-update</source>
++        <translation type="vanished">控制面板-更新提示</translation>
++    </message>
++</context>
++<context>
++    <name>UpdateLog</name>
++    <message>
++        <source>Update log</source>
++        <translation type="vanished">更新日志</translation>
++    </message>
++</context>
++<context>
++    <name>UpdateSource</name>
++    <message>
++        <source>Connection failed, please reconnect!</source>
++        <translation type="vanished">连接失败,请重新连接!</translation>
++    </message>
++</context>
++<context>
++    <name>Upgrade</name>
++    <message>
++        <source>Upgrade</source>
++        <translation type="vanished">更新</translation>
++    </message>
++</context>
++<context>
++    <name>UserInfo</name>
++    <message>
++        <source>userinfo</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>Userinfo</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>User Info</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>standard user</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>administrator</source>
++        <translation type="vanished">管理员用户</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1045"/>
++        <source>root</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1013"/>
++        <source>Hint</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Modify the account type need to logout to take effect, whether to logout?</source>
++        <translation type="vanished">更改账户类型需要注销后生效,是否注销?</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="913"/>
++        <source>The account type of “%1” has been modified, will take effect after logout, whether to logout?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="914"/>
++        <source>logout later</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="915"/>
++        <source>logout now</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1014"/>
++        <source>The system only allows one user to log in automatically.After it is turned on, the automatic login of other users will be turned off.Is it turned on?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1017"/>
++        <source>Trun on</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1018"/>
++        <source>Close on</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Add biometric feature</source>
++        <translation type="vanished">添加生物密码</translation>
++    </message>
++    <message>
++        <source>Rename</source>
++        <translation type="vanished">重命名</translation>
++    </message>
++    <message>
++        <source>Verify</source>
++        <translation type="vanished">验证</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1041"/>
++        <source>Standard</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1043"/>
++        <source>Admin</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Del</source>
++        <translation type="vanished">删除</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="171"/>
++        <source>CurrentUser</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/CurrentUser</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="177"/>
++        <source>OthersUser</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/OthersUser</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="179"/>
++        <source>Add</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/Add</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="309"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="207"/>
++        <source>Password</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/Password</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="219"/>
++        <source>Groups</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/Groups</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="271"/>
++        <source>AutoLoginOnBoot</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/AutoLoginOnBoot</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="266"/>
++        <source>LoginWithoutPwd</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/LoginWithoutPwd</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
++        <source>Warning</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
++        <source>The user is logged in, please delete the user after logging out</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="41"/>
++        <source>Current User</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Change pwd</source>
++        <translation type="vanished">更改密码</translation>
++    </message>
++    <message>
++        <source>Change type</source>
++        <translation type="vanished">更改类型</translation>
++    </message>
++    <message>
++        <source>Change valid</source>
++        <translation type="vanished">密码时效</translation>
++        <extra-contents_path>/userinfo/Change valid</extra-contents_path>
++    </message>
++    <message>
++        <source>User group</source>
++        <translation type="vanished">用户组</translation>
++    </message>
++    <message>
++        <source>Change vaild</source>
++        <translation type="vanished">密码时效</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="331"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="213"/>
++        <source>Type</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Userinfo/Type</extra-contents_path>
++    </message>
++    <message>
++        <source>Valid</source>
++        <translation type="vanished">密码时效</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="353"/>
++        <source>Group</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="422"/>
++        <source>Login no passwd</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="500"/>
++        <source>Automatic login at boot</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Currently in Live mode, please create a new user and log out</source>
++        <translation type="vanished">当前处于试用模式,请创建一个新用户并注销生效</translation>
++    </message>
++    <message>
++        <source>Biometric Password</source>
++        <translation type="vanished">生物密码</translation>
++    </message>
++    <message>
++        <source>advanced settings </source>
++        <translation type="vanished">高级设置</translation>
++    </message>
++    <message>
++        <source>enable biometrics </source>
++        <translation type="vanished">打开生物特征</translation>
++    </message>
++    <message>
++        <source>types of biometric password </source>
++        <translation type="vanished">生物密码类型</translation>
++    </message>
++    <message>
++        <source>biometric device </source>
++        <translation type="vanished">生物设备</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/userinfo.ui" line="568"/>
++        <source>Other Users</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Add new user</source>
++        <translation type="vanished">添加新用户</translation>
++    </message>
++</context>
++<context>
++    <name>UserInfoIntel</name>
++    <message>
++        <source>Current User</source>
++        <translation type="vanished">当前用户</translation>
++        <extra-contents_path>/UserinfoIntel/Current User</extra-contents_path>
++    </message>
++    <message>
++        <source>Change phone</source>
++        <translation type="vanished">更换手机号</translation>
++    </message>
++    <message>
++        <source>Change pwd</source>
++        <translation type="vanished">修改密码</translation>
++        <extra-contents_path>/UserinfoIntel/Change pwd</extra-contents_path>
++    </message>
++    <message>
++        <source>User group</source>
++        <translation type="vanished">用户组</translation>
++    </message>
++    <message>
++        <source>Del user</source>
++        <translation type="vanished">删除用户</translation>
++    </message>
++    <message>
++        <source>Other Users</source>
++        <translation type="vanished">其他用户</translation>
++        <extra-contents_path>/UserinfoIntel/Other Users</extra-contents_path>
++    </message>
++    <message>
++        <source>User Info Intel</source>
++        <translation type="vanished">账户信息</translation>
++    </message>
++    <message>
++        <source>Change Tel</source>
++        <translation type="vanished">更换手机号</translation>
++        <extra-contents_path>/UserinfoIntel/Change Tel</extra-contents_path>
++    </message>
++    <message>
++        <source>Delete user</source>
++        <translation type="vanished">删除用户</translation>
++        <extra-contents_path>/UserinfoIntel/Delete user</extra-contents_path>
++    </message>
++    <message>
++        <source>Change user name</source>
++        <translation type="vanished">更换用户名称</translation>
++        <extra-contents_path>/UserinfoIntel/Change user name</extra-contents_path>
++    </message>
++    <message>
++        <source>standard user</source>
++        <translation type="vanished">标准用户</translation>
++    </message>
++    <message>
++        <source>administrator</source>
++        <translation type="vanished">管理员用户</translation>
++    </message>
++    <message>
++        <source>root</source>
++        <translation type="vanished">Root</translation>
++    </message>
++    <message>
++        <source>Add new user</source>
++        <translation type="vanished">添加新用户</translation>
++    </message>
++    <message>
++        <source>set pwd</source>
++        <translation type="vanished">设置密码</translation>
++    </message>
++    <message>
++        <source>Change</source>
++        <translation type="vanished">更换</translation>
++    </message>
++</context>
++<context>
++    <name>UtilsForUserinfo</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="32"/>
++        <source>Password</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="36"/>
++        <source>Type</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="40"/>
++        <source>Delete</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="216"/>
++        <source>Standard</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="218"/>
++        <source>Admin</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Vino</name>
++    <message>
++        <location filename="../../../plugins/system/vino/vino.cpp" line="28"/>
++        <source>Vino</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>Vpn</name>
++    <message>
++        <source>Add Vpn Connect</source>
++        <translation type="vanished">添加VPN连接</translation>
++    </message>
++    <message>
++        <source>Add vpn connect</source>
++        <translation type="vanished">添加VPN连接</translation>
++        <extra-contents_path>/Vpn/Add vpn connect</extra-contents_path>
++    </message>
++    <message>
++        <source>vpn</source>
++        <translation type="vanished">VPN</translation>
++    </message>
++    <message>
++        <source>Vpn</source>
++        <translation type="vanished">VPN</translation>
++    </message>
++    <message>
++        <source>Add a vpn connection</source>
++        <translation type="vanished">添加vpn连接</translation>
++        <extra-contents_path>/Vpn/Add a vpn connection</extra-contents_path>
++    </message>
++    <message>
++        <source>VPN</source>
++        <translation type="vanished">VPN</translation>
++    </message>
++</context>
++<context>
++    <name>Wallpaper</name>
++    <message>
++        <source>Mode</source>
++        <translation type="vanished">显示方式</translation>
++    </message>
++    <message>
++        <source>Select from</source>
++        <translation type="vanished">选择背景形式</translation>
++    </message>
++    <message>
++        <source>Picture options</source>
++        <translation type="vanished">图片放置方式</translation>
++    </message>
++    <message>
++        <source>Reset to default</source>
++        <translation type="vanished">恢复默认设置</translation>
++    </message>
++    <message>
++        <source>Browser online wp</source>
++        <translation type="vanished">浏览线上壁纸</translation>
++    </message>
++    <message>
++        <source>Restore default wp</source>
++        <translation type="vanished">恢复默认壁纸</translation>
++    </message>
++    <message>
++        <source>Ok</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Add</source>
++        <translation type="obsolete">添加</translation>
++    </message>
++    <message>
++        <source>background</source>
++        <translation type="vanished">背景</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="31"/>
++        <source>Background</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="156"/>
++        <source>picture</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="153"/>
++        <source>color</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Add custom shortcut</source>
++        <translation type="obsolete">添加自定义快捷键</translation>
++    </message>
++    <message>
++        <source>Custom color</source>
++        <translation type="vanished">自定义颜色</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="167"/>
++        <source>wallpaper</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="169"/>
++        <source>centered</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="165"/>
++        <source>scaled</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="171"/>
++        <source>stretched</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="173"/>
++        <source>zoom</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="175"/>
++        <source>spanned</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="219"/>
++        <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>allFiles(*.*)</source>
++        <translation type="vanished">所有文件(*.*)</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="259"/>
++        <source>select custom wallpaper file</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="260"/>
++        <source>Select</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="261"/>
++        <source>Position: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="262"/>
++        <source>FileName: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="263"/>
++        <source>FileType: </source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="264"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>WallpaperUi</name>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="28"/>
++        <source>Background</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Wallpaper/Background</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="30"/>
++        <source>Type</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Wallpaper/Type</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="66"/>
++        <source>Desktop Background</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Wallpaper/Desktop Background</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="93"/>
++        <source>Local Pictures</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Wallpaper/Local Pictures</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="95"/>
++        <source>Online Pictures</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Wallpaper/Online Pictures</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="97"/>
++        <source>Reset To Default</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Wallpaper/Reset To Default</extra-contents_path>
++    </message>
++</context>
++<context>
++    <name>Widget</name>
++    <message>
++        <source>screen zoom </source>
++        <translation type="vanished">屏幕缩放 </translation>
++    </message>
++    <message>
++        <source>unify output</source>
++        <translation type="vanished">统一输出</translation>
++    </message>
++    <message>
++        <source>night mode</source>
++        <translation type="vanished">色温</translation>
++        <extra-contents_path>/display/night mode</extra-contents_path>
++    </message>
++    <message>
++        <source>Some applications need to be logouted to take effect</source>
++        <translation type="vanished">部分程序需要注销生效</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="267"/>
++        <source>Night Mode</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/Night Mode</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1987"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2013"/>
++        <source>Open</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
++        <source>When turned on, it will reduce the blue light of the screen.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="283"/>
++        <source>Color Temperature And Eye Care</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/Color Temperature And Eye Care</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="291"/>
++        <source>Time</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="301"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
++        <source>Custom Time</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="312"/>
++        <source>to</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="285"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="330"/>
++        <source>Color Temperature</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/Color Temperature</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
++        <source>When turned on, it can reduce blue light to prevent eye, the screen will turn yellow.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Night Mode And Eye Care</source>
++        <translation type="obsolete">色温与护眼</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="332"/>
++        <source>Warmer</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="333"/>
++        <source>Colder</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="611"/>
++        <source>Multi-screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="616"/>
++        <source>First Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="620"/>
++        <source>Clone Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="622"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2639"/>
++        <source>Splice Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1986"/>
++        <source>Turning on &apos;Eye Protection Mode&apos; will turn off &apos;Color Temperature&apos;. Continue turning it on?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1988"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2014"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2012"/>
++        <source>Turning on &apos;Color Temperature&apos; will turn off &apos;Eye Protection Mode&apos;. Continue turning it on?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2745"/>
++        <source>Auto Brightness</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/Auto Brightness</extra-contents_path>
++    </message>
++    <message>
++        <source>Adjust screen brightness by ambient</source>
++        <translation type="vanished">通过感应周围环境亮度,自动调整屏幕亮度</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="793"/>
++        <source>scale</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="798"/>
++        <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after 14 seconds&lt;/font&gt;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="809"/>
++        <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after %2 seconds&lt;/font&gt;</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1023"/>
++        <source>The zoom has been modified, it will take effect after you log off</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1042"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1052"/>
++        <source>(Effective after logout)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2702"/>
++        <source>Splicing Method</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2705"/>
++        <source>Change</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2774"/>
++        <source>as main</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2795"/>
++        <source>open monitor</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after 14 seconds&lt;/font&gt;</source>
++        <translation type="vanished">屏幕%1已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在14秒后自动保存。&lt;/font&gt;</translation>
++    </message>
++    <message>
++        <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after %2 seconds&lt;/font&gt;</source>
++        <translation type="vanished">屏幕%1已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在%2秒后自动保存。&lt;/font&gt;</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2253"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2259"/>
++        <source>Follow the sunrise and sunset</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="619"/>
++        <source>Extend Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
++        <source>Eye Protection Mode</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/Eye protection mode</extra-contents_path>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="617"/>
++        <source>Vice Screen</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2773"/>
++        <source>monitor</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Information</source>
++        <translation type="vanished">信息</translation>
++    </message>
++    <message>
++        <source>Theme follow night mode</source>
++        <translation type="vanished">主题跟随夜间模式变化</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="784"/>
++        <source>resolution</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="787"/>
++        <source>orientation</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="790"/>
++        <source>frequency</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Hint</source>
++        <translation type="vanished">提示</translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++the settings will be saved after 14 seconds</source>
++        <translation type="vanished">是否保留当前修改的配置?将在14秒后自动保存配置</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="778"/>
++        <source>Save</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="777"/>
++        <source>Not Save</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++the settings will be saved after %1 seconds</source>
++        <translation type="vanished">是否保留当前修改的配置?将在%1秒后自动保存配置</translation>
++    </message>
++    <message>
++        <source>The zoom function needs to log out to take effect</source>
++        <translation type="vanished">修改系统缩放后需要注销生效,是否注销?</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1024"/>
++        <source>Log out now</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1025"/>
++        <source>Later</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
++        <source>All Day</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Follow the sunrise and sunset(17:55-06:23)</source>
++        <translation type="vanished">跟随日出日落(17:55-06:23)</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2284"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2290"/>
++        <source>Brightness</source>
++        <translation type="unfinished"></translation>
++        <extra-contents_path>/Display/Brightness</extra-contents_path>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++the settings will be saved after 9 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与 显卡兼容性问题,有可能显示不正常。系统将在9秒后保存配置</translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++The settings will be saved after 9 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与 显卡兼容性问题,有可能显示不正常。系统将在9秒后保存配置</translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++If something goes wrong, the settings will be restored after 10 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在10秒后还原设置</translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++If something goes wrong, the settings will be restored after 9 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在9秒后还原设置</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2782"/>
++        <source>screen zoom</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>Mirror Display</source>
++        <translation type="vanished">镜像模式</translation>
++        <extra-contents_path>/display/unify output</extra-contents_path>
++    </message>
++    <message>
++        <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after 29 seconds&lt;/font&gt;</source>
++        <translation type="vanished">屏幕%1已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在29秒后自动保存。&lt;/font&gt; </translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++the settings will be saved after 29 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与 显卡兼容性问题,有可能显示不正常。系统将在29秒后保存配置</translation>
++    </message>
++    <message>
++        <source>Save Config</source>
++        <translation type="vanished">保存</translation>
++    </message>
++    <message>
++        <source>Restore Config</source>
++        <translation type="vanished">恢复</translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display 
++the settings will be saved after %1 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与 显卡兼容性问题,有可能显示不正常。系统将在%1秒后保存配置 </translation>
++    </message>
++    <message>
++        <source>Warnning</source>
++        <translation type="vanished">警告</translation>
++    </message>
++    <message>
++        <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
++If something goes wrong, the settings will be restored after %1 seconds</source>
++        <translation type="vanished">修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在%1秒后还原设置</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
++        <source>please insure at least one output!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1496"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
++        <source>Warning</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>The screen resolution has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after 14 seconds&lt;/font&gt;</source>
++        <translation type="vanished">屏幕分辨率已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在14秒后自动保存。&lt;/font&gt;</translation>
++    </message>
++    <message>
++        <source>The screen resolution has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after %1 seconds&lt;/font&gt;</source>
++        <translation type="vanished">屏幕分辨率已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在%1秒后自动保存。&lt;/font&gt;</translation>
++    </message>
++    <message>
++        <source>Open time should be earlier than close time!</source>
++        <translation type="vanished">开启时间必须大于关闭时间!</translation>
++    </message>
++    <message>
++        <source>Morning time should be earlier than evening time!</source>
++        <translation type="vanished">早晨时刻应早于晚上的时刻!</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1497"/>
++        <source>Sorry, your configuration could not be applied.
++Common reasons are that the overall screen size is too big, or you enabled more displays than supported by your GPU.</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <source>@title:window</source>
++        <comment>Unsupported Configuration</comment>
++        <translation type="vanished">窗口</translation>
++    </message>
++    <message>
++        <source>Some applications need to be restarted to take effect</source>
++        <translation type="vanished">缩放配置需要注销后生效</translation>
++    </message>
++    <message>
++        <source>touch id</source>
++        <translation type="obsolete">触摸屏标识</translation>
++    </message>
++    <message>
++        <source>%1</source>
++        <translation type="vanished">%1</translation>
++    </message>
++</context>
++<context>
++    <name>WlanConnect</name>
++    <message>
++        <source>WlanConnect</source>
++        <translation type="vanished">无线局域网</translation>
++    </message>
++    <message>
++        <source>WLAN</source>
++        <translation type="vanished">无线局域网</translation>
++    </message>
++    <message>
++        <source>open</source>
++        <translation type="vanished">开启</translation>
++    </message>
++    <message>
++        <source>Advanced settings</source>
++        <translation type="vanished">高级设置</translation>
++    </message>
++    <message>
++        <source>Other Networks</source>
++        <translation type="vanished">其他网络</translation>
++    </message>
++    <message>
++        <source>Network settings</source>
++        <translation type="vanished">网络设置</translation>
++    </message>
++    <message>
++        <source>Connected</source>
++        <translation type="vanished">已连接</translation>
++    </message>
++    <message>
++        <source>Detail</source>
++        <translation type="vanished">网络详情</translation>
++    </message>
++    <message>
++        <source>Connect</source>
++        <translation type="vanished">网络连接</translation>
++    </message>
++    <message>
++        <source>card</source>
++        <translation type="vanished">网卡</translation>
++    </message>
++    <message>
++        <source>connected</source>
++        <translation type="vanished">已连接</translation>
++    </message>
++</context>
++<context>
++    <name>addShortcutDialog</name>
++    <message>
++        <source>Shortcut name</source>
++        <translation type="vanished">快捷键名称</translation>
++    </message>
++    <message>
++        <source>Shortcut exec</source>
++        <translation type="vanished">快捷键程序</translation>
++    </message>
++    <message>
++        <source>Exec</source>
++        <translation type="vanished">程序</translation>
++    </message>
++    <message>
++        <source>Open</source>
++        <translation type="vanished">选择</translation>
++    </message>
++    <message>
++        <source>Name</source>
++        <translation type="vanished">名称</translation>
++    </message>
++    <message>
++        <source>Key</source>
++        <translation type="vanished">按键</translation>
++    </message>
++    <message>
++        <source>Invalid executable, please re-enter</source>
++        <translation type="vanished">无效的可执行程序,请重新选择</translation>
++    </message>
++    <message>
++        <source>Cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>Save</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Certain</source>
++        <translation type="vanished">确定</translation>
++    </message>
++    <message>
++        <source>Add custom shortcut</source>
++        <translation type="vanished">添加自定义快捷键</translation>
++    </message>
++    <message>
++        <source>shortcut conflict</source>
++        <translation type="vanished">快捷键冲突</translation>
++    </message>
++    <message>
++        <source>invaild shortcut</source>
++        <translation type="vanished">无效快捷键</translation>
++    </message>
++    <message>
++        <source>repeated naming</source>
++        <translation type="vanished">快捷键名称重复</translation>
++    </message>
++    <message>
++        <source>Add shortcut</source>
++        <translation type="vanished">添加快捷键</translation>
++    </message>
++    <message>
++        <source>Add Shortcut</source>
++        <translation type="vanished">添加快捷键</translation>
++    </message>
++    <message>
++        <source>Please enter a shortcut</source>
++        <translation type="vanished">请输入快捷键</translation>
++    </message>
++    <message>
++        <source>Desktop files(*.desktop)</source>
++        <translation type="vanished">桌面文件(*.desktop)</translation>
++    </message>
++    <message>
++        <source>select desktop</source>
++        <translation type="vanished">选择桌面</translation>
++    </message>
++    <message>
++        <source>Invalid application</source>
++        <translation type="vanished">此应用不可用</translation>
++    </message>
++    <message>
++        <source>Shortcut conflict</source>
++        <translation type="vanished">此快捷键组合已被占用</translation>
++    </message>
++    <message>
++        <source>Invalid shortcut</source>
++        <translation type="vanished">此快捷键组合不可用</translation>
++    </message>
++    <message>
++        <source>Name repetition</source>
++        <translation type="vanished">此快捷键名称重复</translation>
++    </message>
++    <message>
++        <source>Unknown error</source>
++        <translation type="vanished">未知错误</translation>
++    </message>
++    <message>
++        <source>Shortcut cannot be empty</source>
++        <translation type="vanished">快捷键不能为空</translation>
++    </message>
++    <message>
++        <source>Name cannot be empty</source>
++        <translation type="vanished">名称不能为空</translation>
++    </message>
++</context>
++<context>
++    <name>area_code_lineedit</name>
++    <message>
++        <source>Sign up by Phone</source>
++        <translation type="vanished">请输入手机号码</translation>
++    </message>
++</context>
++<context>
++    <name>changeUserGroup</name>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="33"/>
++        <source>user group</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="122"/>
++        <source>Group:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="135"/>
++        <source>GID:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="149"/>
++        <source>GNum:</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="193"/>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="610"/>
++        <source>Cancel</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="196"/>
++        <source>Save</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="611"/>
++        <source>Confirm</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="565"/>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="573"/>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="649"/>
++        <source>Tips</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="565"/>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="649"/>
++        <source>Invalid Id!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="568"/>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="576"/>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="652"/>
++        <source>OK</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="573"/>
++        <source>Invalid Group Name!</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="608"/>
++        <source>Whether delete the group: “%1” ?</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="609"/>
++        <source>which will make some file components in the file system invalid!</source>
++        <translation type="unfinished"></translation>
++    </message>
++</context>
++<context>
++    <name>changtimedialog</name>
++    <message>
++        <source>Dialog</source>
++        <translation type="vanished">更改时间</translation>
++    </message>
++    <message>
++        <source>current date</source>
++        <translation type="vanished">时间日期</translation>
++    </message>
++    <message>
++        <source>time</source>
++        <translation type="vanished">时间</translation>
++    </message>
++    <message>
++        <source>year</source>
++        <translation type="vanished">年份</translation>
++    </message>
++    <message>
++        <source>month</source>
++        <translation type="vanished">月份</translation>
++    </message>
++    <message>
++        <source>day</source>
++        <translation type="vanished">号</translation>
++    </message>
++    <message>
++        <source>cancel</source>
++        <translation type="vanished">取消</translation>
++    </message>
++    <message>
++        <source>confirm</source>
++        <translation type="vanished">确认</translation>
++    </message>
++</context>
++<context>
++    <name>config_list_widget</name>
++    <message>
++        <source>wallpaper</source>
++        <translation type="vanished">平铺</translation>
++    </message>
++    <message>
++        <source>Sync your settings</source>
++        <translation type="vanished">同步您的设置</translation>
++    </message>
++    <message>
++        <source>Your account:%1</source>
++        <translation type="vanished">您的云账户:%1</translation>
++    </message>
++    <message>
++        <source>Exit</source>
++        <translation type="vanished">退出登录</translation>
++    </message>
++    <message>
++        <source>Sync</source>
++        <translation type="vanished">同步中</translation>
++    </message>
++    <message>
++        <source>Sign in</source>
++        <translation type="vanished">登录</translation>
++    </message>
++    <message>
++        <source>Stop sync</source>
++        <translation type="vanished">结束同步</translation>
++    </message>
++    <message>
++        <source>Auto sync</source>
++        <translation type="vanished">自动同步</translation>
++    </message>
++    <message>
++        <source>Synchronize your personalized settings and data</source>
++        <translation type="vanished">同步您账户的数据以及个性化设置</translation>
++    </message>
++    <message>
++        <source>Login Cloud to get a better experience</source>
++        <translation type="vanished">同步您账户的数据以及个性化设置</translation>
++    </message>
++    <message>
++        <source>Sign in/Sign up</source>
++        <translation type="vanished">登录/注册</translation>
++    </message>
++    <message>
++        <source>You must sign in when you attempt to sync your settings.</source>
++        <translation type="vanished">如需同步设置,请先登录您的云账户。</translation>
++    </message>
++    <message>
++        <source>Your account:%1</source>
++        <translation type="vanished">您的云账户:%1</translation>
++    </message>
++    <message>
++        <source>Disconnected</source>
++        <translation type="vanished">未连接</translation>
++    </message>
++</context>
++<context>
++    <name>item_list</name>
++    <message>
++        <source>Menu</source>
++        <translation type="vanished">开始菜单</translation>
++    </message>
++    <message>
++        <source>Quick Start</source>
++        <translation type="vanished">快速启动项</translation>
++    </message>
++    <message>
++        <source>Tab</source>
++        <translation type="vanished">任务栏</translation>
++    </message>
++    <message>
++        <source>ScreenSaver</source>
++        <translation type="vanished">屏保</translation>
++    </message>
++    <message>
++        <source>User Profile</source>
++        <translation type="vanished">用户头像</translation>
++    </message>
++    <message>
++        <source>Weather</source>
++        <translation type="vanished">天气</translation>
++    </message>
++    <message>
++        <source>Media</source>
++        <translation type="vanished">影音</translation>
++    </message>
++    <message>
++        <source>Walpaper</source>
++        <translation type="vanished">桌面壁纸</translation>
++    </message>
++</context>
++<context>
++    <name>ksc_main_page_widget</name>
++    <message>
++        <source>Run Security Center</source>
++        <translation type="obsolete">打开安全中心</translation>
++    </message>
++</context>
++<context>
++    <name>ksc_module_func_widget</name>
++    <message>
++        <source>Network Protection</source>
++        <translation type="obsolete">网络保护</translation>
++    </message>
++</context>
++<context>
++    <name>m_updatelog</name>
++    <message>
++        <source>No content.</source>
++        <translation type="vanished">暂无内容.</translation>
++    </message>
++    <message>
++        <source>Search content</source>
++        <translation type="vanished">搜索内容</translation>
++    </message>
++    <message>
++        <source>History Log</source>
++        <translation type="vanished">历史更新</translation>
++    </message>
++    <message>
++        <source>Update Details</source>
++        <translation type="vanished">更新详情</translation>
++    </message>
++</context>
++<context>
++    <name>mcode_widget</name>
++    <message>
++        <source>SongTi</source>
++        <translation type="vanished">宋体</translation>
++    </message>
++</context>
++<context>
++    <name>networkaccount</name>
++    <message>
++        <source>Cloud Account</source>
++        <translation type="vanished">云账户</translation>
++    </message>
++</context>
++<context>
++    <name>ql_pushbutton_edit</name>
++    <message>
++        <source>Reset</source>
++        <translation type="vanished">重置密码</translation>
++    </message>
++</context>
++<context>
++    <name>ukFileDialog</name>
++    <message>
++        <source>Programs are not allowed to be added</source>
++        <translation type="vanished">该程序不允许添加。</translation>
++    </message>
++    <message>
++        <source>Programs are not allowed to be added.</source>
++        <translation type="vanished">该程序不允许添加。</translation>
++    </message>
++</context>
++</TS>
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0134-Translated-using-Weblate-Vietnamese.patch ukui-control-center-4.10.0.0/debian/patches/0134-Translated-using-Weblate-Vietnamese.patch
--- ukui-control-center-4.10.0.0/debian/patches/0134-Translated-using-Weblate-Vietnamese.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0134-Translated-using-Weblate-Vietnamese.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,53 @@
+From: KevinDuan <duankaiwen@kylinos.cn>
+Date: Tue, 18 Feb 2025 06:58:47 +0000
+Subject: Translated using Weblate (Vietnamese)
+
+Currently translated at 100.0% (2 of 2 strings)
+
+Translation: openkylin-nile-new/ukui-control-center-libukcc
+Translate-URL: http://weblate.openkylin.top/projects/openkylin-nile-new/ukui-control-center-libukcc/vi/
+---
+ libukcc/plugin-test/translations/ar.ts | 4 ++--
+ libukcc/plugin-test/translations/vi.ts | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/libukcc/plugin-test/translations/ar.ts b/libukcc/plugin-test/translations/ar.ts
+index 8a364e1..6866bdc 100644
+--- a/libukcc/plugin-test/translations/ar.ts
++++ b/libukcc/plugin-test/translations/ar.ts
+@@ -7,13 +7,13 @@
+         <location filename="../ukccplugin.cpp" line="11"/>
+         <location filename="../ukccplugin.cpp" line="64"/>
+         <source>UkccPlugin</source>
+-        <translation type="unfinished"></translation>
++        <translation>UkccPlugin</translation>
+         <extra-contents_path>/UkccPlugin/UkccPlugin</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../ukccplugin.cpp" line="66"/>
+         <source>ukccplugin test</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختبار ukccplugin</translation>
+         <extra-contents_path>/UkccPlugin/ukccplugin test</extra-contents_path>
+     </message>
+ </context>
+diff --git a/libukcc/plugin-test/translations/vi.ts b/libukcc/plugin-test/translations/vi.ts
+index 6a05142..092c385 100644
+--- a/libukcc/plugin-test/translations/vi.ts
++++ b/libukcc/plugin-test/translations/vi.ts
+@@ -7,13 +7,13 @@
+         <location filename="../ukccplugin.cpp" line="11"/>
+         <location filename="../ukccplugin.cpp" line="64"/>
+         <source>UkccPlugin</source>
+-        <translation type="unfinished"></translation>
++        <translation>Plugin Ukcc</translation>
+         <extra-contents_path>/UkccPlugin/UkccPlugin</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../ukccplugin.cpp" line="66"/>
+         <source>ukccplugin test</source>
+-        <translation type="unfinished"></translation>
++        <translation>kiểm tra ukccplugin</translation>
+         <extra-contents_path>/UkccPlugin/ukccplugin test</extra-contents_path>
+     </message>
+ </context>
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0135-Translated-using-Weblate-Vietnamese.patch ukui-control-center-4.10.0.0/debian/patches/0135-Translated-using-Weblate-Vietnamese.patch
--- ukui-control-center-4.10.0.0/debian/patches/0135-Translated-using-Weblate-Vietnamese.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0135-Translated-using-Weblate-Vietnamese.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,9886 @@
+From: KevinDuan <duankaiwen@kylinos.cn>
+Date: Tue, 18 Feb 2025 07:01:16 +0000
+Subject: Translated using Weblate (Vietnamese)
+
+Currently translated at 100.0% (703 of 703 strings)
+
+Translation: openkylin-nile-new/ukui-control-center
+Translate-URL: http://weblate.openkylin.top/projects/openkylin-nile-new/ukui-control-center/vi/
+---
+ shell/res/i18n/ar.ts | 1439 +++++++++++++++++++++++++-------------------------
+ shell/res/i18n/vi.ts | 1407 ++++++++++++++++++++++++------------------------
+ 2 files changed, 1436 insertions(+), 1410 deletions(-)
+
+diff --git a/shell/res/i18n/ar.ts b/shell/res/i18n/ar.ts
+index 92517d6..7ddff74 100644
+--- a/shell/res/i18n/ar.ts
++++ b/shell/res/i18n/ar.ts
+@@ -22,12 +22,12 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="546"/>
+         <source>Status</source>
+-        <translation type="unfinished"></translation>
++        <translation>حالة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="224"/>
+         <source>DateRes</source>
+-        <translation type="unfinished"></translation>
++        <translation>دايت ريس</translation>
+     </message>
+     <message>
+         <source>Wechat code scanning obtains HP professional technical support</source>
+@@ -52,7 +52,7 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="56"/>
+         <source>About and Support</source>
+-        <translation type="unfinished"></translation>
++        <translation>نبذة عن الدعم</translation>
+     </message>
+     <message>
+         <source>InterVersion</source>
+@@ -101,19 +101,19 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="229"/>
+         <source>Trial expiration time</source>
+-        <translation type="unfinished"></translation>
++        <translation>وقت انتهاء صلاحية الإصدار التجريبي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="456"/>
+         <location filename="../../../plugins/system/about/about.cpp" line="552"/>
+         <source>expired</source>
+-        <translation type="unfinished"></translation>
++        <translation>انتهت</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="244"/>
+         <location filename="../../../plugins/system/about/about.cpp" line="457"/>
+         <source>Extend</source>
+-        <translation type="unfinished"></translation>
++        <translation>بسط</translation>
+     </message>
+     <message>
+         <source>Installed Date</source>
+@@ -138,27 +138,27 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="279"/>
+         <source>Kylin Linux Desktop (Touch Screen) V10 (SP1)</source>
+-        <translation type="unfinished"></translation>
++        <translation>سطح مكتب Kylin Linux (شاشة تعمل باللمس) V10 (SP1)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="281"/>
+         <source>Kylin Linux Desktop (Tablet) V10 (SP1)</source>
+-        <translation type="unfinished"></translation>
++        <translation>سطح المكتب Kylin Linux (الكمبيوتر اللوحي) V10 (SP1)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="517"/>
+         <source>The system needs to be restarted to set the HostName, whether to reboot</source>
+-        <translation type="unfinished"></translation>
++        <translation>يحتاج النظام إلى إعادة التشغيل لتعيين اسم المضيف، سواء كان سيتم إعادة التشغيل</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="518"/>
+         <source>Reboot Now</source>
+-        <translation type="unfinished"></translation>
++        <translation>أعد التشغيل الآن</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="519"/>
+         <source>Reboot Later</source>
+-        <translation type="unfinished"></translation>
++        <translation>إعادة التشغيل لاحقا</translation>
+     </message>
+     <message>
+         <source>Technical service has expired</source>
+@@ -172,7 +172,7 @@
+         <location filename="../../../plugins/system/about/about.cpp" line="400"/>
+         <location filename="../../../plugins/system/about/about.cpp" line="409"/>
+         <source>avaliable</source>
+-        <translation type="unfinished"></translation>
++        <translation>متوافرة</translation>
+     </message>
+     <message>
+         <source>version</source>
+@@ -189,12 +189,12 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="544"/>
+         <source>Version</source>
+-        <translation type="unfinished"></translation>
++        <translation>الإصدار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="287"/>
+         <source>Kylin Linux Desktop V10 (SP1)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kylin Linux Desktop V10 (SP1)</translation>
+     </message>
+     <message>
+         <source>Copyright @ 2009-2021 KylinSoft. All rights reserved.</source>
+@@ -222,7 +222,7 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="407"/>
+         <source>Disk</source>
+-        <translation type="unfinished"></translation>
++        <translation>قرص</translation>
+     </message>
+     <message>
+         <source>Desktop</source>
+@@ -245,7 +245,7 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="548"/>
+         <source>Serial</source>
+-        <translation type="unfinished"></translation>
++        <translation>المسلسل</translation>
+     </message>
+     <message>
+         <source>Protocol</source>
+@@ -259,7 +259,7 @@
+         <location filename="../../../plugins/system/about/about.cpp" line="231"/>
+         <location filename="../../../plugins/system/about/about.cpp" line="235"/>
+         <source>Active</source>
+-        <translation type="unfinished"></translation>
++        <translation>نشط</translation>
+     </message>
+     <message>
+         <source>Trial version disclaimer</source>
+@@ -276,7 +276,7 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="58"/>
+         <source>About</source>
+-        <translation type="unfinished"></translation>
++        <translation>عن</translation>
+     </message>
+     <message>
+         <source>The system has expired. The expiration time is:</source>
+@@ -294,12 +294,12 @@
+         <location filename="../../../plugins/system/about/about.cpp" line="227"/>
+         <location filename="../../../plugins/system/about/about.cpp" line="233"/>
+         <source>Inactivated</source>
+-        <translation type="unfinished"></translation>
++        <translation>الغاء تنشيط</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="243"/>
+         <source>Activated</source>
+-        <translation type="unfinished"></translation>
++        <translation>تنشيط</translation>
+     </message>
+     <message>
+         <source>UNKNOWN</source>
+@@ -343,7 +343,7 @@
+     <message>
+         <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="226"/>
+         <source>avaliable</source>
+-        <translation type="unfinished"></translation>
++        <translation>متوافرة</translation>
+     </message>
+ </context>
+ <context>
+@@ -351,94 +351,94 @@
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="31"/>
+         <source>System Summary</source>
+-        <translation type="unfinished"></translation>
++        <translation>ملخص النظام</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="33"/>
+         <source>Privacy and agreement</source>
+-        <translation type="unfinished"></translation>
++        <translation>الخصوصية والاتفاق</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="35"/>
+         <source>Support</source>
+-        <translation type="unfinished"></translation>
++        <translation>دعم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="49"/>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="376"/>
+         <source>Version</source>
+-        <translation type="unfinished"></translation>
++        <translation>الإصدار</translation>
+         <extra-contents_path>/About/version</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="54"/>
+         <source>Version Number</source>
+-        <translation type="unfinished"></translation>
++        <translation>رقم الإصدار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="59"/>
+         <source>Patch Version</source>
+-        <translation type="unfinished"></translation>
++        <translation>إصدار التصحيح</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="64"/>
+         <source>Installed Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>تاريخ التثبيت</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="69"/>
+         <source>Upgrade Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>تاريخ الترقية</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="75"/>
+         <source>HostName</source>
+-        <translation type="unfinished"></translation>
++        <translation>اسم المضيف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="87"/>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="378"/>
+         <source>Kernel</source>
+-        <translation type="unfinished"></translation>
++        <translation>نواة</translation>
+         <extra-contents_path>/About/Kernel</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="92"/>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="380"/>
+         <source>CPU</source>
+-        <translation type="unfinished"></translation>
++        <translation>وحده المعالجه المركزيه</translation>
+         <extra-contents_path>/About/CPU</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="97"/>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="382"/>
+         <source>Memory</source>
+-        <translation type="unfinished"></translation>
++        <translation>ذاكرة</translation>
+         <extra-contents_path>/About/Memory</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="102"/>
+         <source>Disk</source>
+-        <translation type="unfinished"></translation>
++        <translation>قرص</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="107"/>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="384"/>
+         <source>Desktop</source>
+-        <translation type="unfinished"></translation>
++        <translation>سطح المكتب</translation>
+         <extra-contents_path>/About/Desktop</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="112"/>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="386"/>
+         <source>User</source>
+-        <translation type="unfinished"></translation>
++        <translation>مستخدم</translation>
+         <extra-contents_path>/About/User</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="120"/>
+         <source>Copyright ©%1 %2. All rights reserved.</source>
+-        <translation type="unfinished"></translation>
++        <translation>حقوق الطبع والنشر © ٪1 ٪2. كل الحقوق محفوظة.</translation>
+     </message>
+     <message>
+         <source>Copyright ©2022 %1. All rights reserved.</source>
+@@ -451,12 +451,12 @@
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="169"/>
+         <source>openKylin</source>
+-        <translation type="unfinished"></translation>
++        <translation>أوبن كلين</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="166"/>
+         <source>KylinSoft</source>
+-        <translation type="unfinished"></translation>
++        <translation>KylinSoft</translation>
+     </message>
+     <message>
+         <source>Copyright © 2020 KylinSoft. All rights reserved.</source>
+@@ -465,64 +465,64 @@
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="232"/>
+         <source>Wechat code scanning obtains HP professional technical support</source>
+-        <translation type="unfinished"></translation>
++        <translation>يحصل مسح كود Wechat على دعم فني احترافي من HP</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="233"/>
+         <source>See more about Kylin Tianqi edu platform</source>
+-        <translation type="unfinished"></translation>
++        <translation>تعرف على المزيد حول منصة Kylin Tianqi edu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="253"/>
+         <source>Learn more HP user manual&gt;&gt;</source>
+-        <translation type="unfinished"></translation>
++        <translation>تعرف على المزيد دليل مستخدم HP&gt;&gt;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="258"/>
+         <source>See user manual&gt;&gt;</source>
+-        <translation type="unfinished"></translation>
++        <translation>انظر دليل المستخدم&gt;&gt;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="336"/>
+         <source>Send optional diagnostic data</source>
+-        <translation type="unfinished"></translation>
++        <translation>إرسال بيانات تشخيصية اختيارية</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="337"/>
+         <source>By sending us diagnostic data, improve the system experience and solve your problems faster</source>
+-        <translation type="unfinished"></translation>
++        <translation>من خلال إرسال البيانات التشخيصية إلينا ، قم بتحسين تجربة النظام وحل مشاكلك بشكل أسرع</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="359"/>
+         <source>&lt;&lt;Protocol&gt;&gt;</source>
+-        <translation type="unfinished"></translation>
++        <translation>&lt;&lt;Protocol&gt;&gt;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="360"/>
+         <source>and</source>
+-        <translation type="unfinished"></translation>
++        <translation>و</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="361"/>
+         <source>&lt;&lt;Privacy&gt;&gt;</source>
+-        <translation type="unfinished"></translation>
++        <translation>&lt;&lt;Privacy&gt;&gt;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="388"/>
+         <source>Status</source>
+-        <translation type="unfinished"></translation>
++        <translation>حالة</translation>
+         <extra-contents_path>/About/Status</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="390"/>
+         <source>Active</source>
+-        <translation type="unfinished"></translation>
++        <translation>نشط</translation>
+         <extra-contents_path>/About/Active</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="391"/>
+         <source>Serial</source>
+-        <translation type="unfinished"></translation>
++        <translation>المسلسل</translation>
+     </message>
+ </context>
+ <context>
+@@ -612,7 +612,7 @@
+     <message>
+         <location filename="../../../libukcc/widgets/AddBtn/addbtn.cpp" line="27"/>
+         <source>Add</source>
+-        <translation type="unfinished"></translation>
++        <translation>جمع</translation>
+     </message>
+ </context>
+ <context>
+@@ -620,7 +620,7 @@
+     <message>
+         <location filename="../../../libukcc/widgets/SettingWidget/addbutton.cpp" line="25"/>
+         <source>Add</source>
+-        <translation type="unfinished"></translation>
++        <translation>جمع</translation>
+     </message>
+ </context>
+ <context>
+@@ -633,39 +633,39 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="38"/>
+         <source>Select the input method to add</source>
+-        <translation type="unfinished"></translation>
++        <translation>حدد طريقة الإدخال المراد إضافتها</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="94"/>
+         <source>No</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="113"/>
+         <source>Yes</source>
+-        <translation type="unfinished"></translation>
++        <translation>نعم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="5"/>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="6"/>
+         <source>keyboard</source>
+-        <translation type="unfinished"></translation>
++        <translation>لوحة مفاتيح</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="5"/>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="6"/>
+         <source>Tibetan</source>
+-        <translation type="unfinished"></translation>
++        <translation>تبتي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="7"/>
+         <source>With ASCII numbers</source>
+-        <translation type="unfinished"></translation>
++        <translation>مع أرقام ASCII</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="15"/>
+         <source>Input Method</source>
+-        <translation type="unfinished"></translation>
++        <translation>طريقة الإدخال</translation>
+     </message>
+ </context>
+ <context>
+@@ -678,22 +678,22 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/addlanguagedialog.ui" line="164"/>
+         <source>Yes</source>
+-        <translation type="unfinished"></translation>
++        <translation>نعم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addlanguagedialog.ui" line="145"/>
+         <source>No</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addlanguagedialog.cpp" line="13"/>
+         <source>Add Language</source>
+-        <translation type="unfinished"></translation>
++        <translation>إضافة لغة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addlanguagedialog.cpp" line="14"/>
+         <source>Search</source>
+-        <translation type="unfinished"></translation>
++        <translation>بحث</translation>
+     </message>
+ </context>
+ <context>
+@@ -713,17 +713,17 @@
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="94"/>
+         <source>Exec</source>
+-        <translation type="unfinished"></translation>
++        <translation>اكسيك</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="132"/>
+         <source>Open</source>
+-        <translation type="unfinished"></translation>
++        <translation>مفتوح</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="180"/>
+         <source>Name</source>
+-        <translation type="unfinished"></translation>
++        <translation>اسم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="228"/>
+@@ -734,81 +734,81 @@
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="254"/>
+         <source>Key</source>
+-        <translation type="unfinished"></translation>
++        <translation>مفتاح</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="348"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="266"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="367"/>
+         <source>Save</source>
+-        <translation type="unfinished"></translation>
++        <translation>أنقذ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="73"/>
+         <source>Add Shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>إضافة اختصار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="86"/>
+         <source>Please enter a shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>الرجاء إدخال اختصار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="224"/>
+         <source>Desktop files(*.desktop)</source>
+-        <translation type="unfinished"></translation>
++        <translation>ملفات سطح المكتب (*.desktop)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
+         <source>select desktop</source>
+-        <translation type="unfinished"></translation>
++        <translation>حدد سطح المكتب</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="302"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="323"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="334"/>
+         <source>Invalid application</source>
+-        <translation type="unfinished"></translation>
++        <translation>طلب غير صالح</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="304"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="319"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="330"/>
+         <source>Shortcut conflict</source>
+-        <translation type="unfinished"></translation>
++        <translation>تعارض الاختصارات</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="306"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="321"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="332"/>
+         <source>Invalid shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختصار غير صالح</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="309"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="316"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="337"/>
+         <source>Name repetition</source>
+-        <translation type="unfinished"></translation>
++        <translation>تكرار الاسم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="343"/>
+         <source>Unknown error</source>
+-        <translation type="unfinished"></translation>
++        <translation>خطأ غير معروف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="522"/>
+         <source>Shortcut cannot be empty</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يمكن أن يكون الاختصار فارغا</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="526"/>
+         <source>Name cannot be empty</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يمكن أن يكون الاسم فارغا</translation>
+     </message>
+ </context>
+ <context>
+@@ -1005,7 +1005,7 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="28"/>
+         <source>Area</source>
+-        <translation type="unfinished"></translation>
++        <translation>منطقة</translation>
+     </message>
+     <message>
+         <source>Regional Format</source>
+@@ -1093,23 +1093,23 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="641"/>
+         <source>Simplified Chinese</source>
+-        <translation type="unfinished"></translation>
++        <translation>الصينية المبسطة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="195"/>
+         <source>English  (US)</source>
+-        <translation type="unfinished"></translation>
++        <translation>الإنجليزية (الولايات المتحدة)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="196"/>
+         <source>Simplified Chinese  (CN)</source>
+-        <translation type="unfinished"></translation>
++        <translation>الصينية المبسطة (CN)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="198"/>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="200"/>
+         <source>Tibetan  (CN)</source>
+-        <translation type="unfinished"></translation>
++        <translation>التبت (CN)</translation>
+     </message>
+     <message>
+         <source>First Day Of Week</source>
+@@ -1120,13 +1120,13 @@
+         <location filename="../../../plugins/time-language/area/area.cpp" line="233"/>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="386"/>
+         <source>12 Hours</source>
+-        <translation type="unfinished"></translation>
++        <translation>12 ساعة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="234"/>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="387"/>
+         <source>24 Hours</source>
+-        <translation type="unfinished"></translation>
++        <translation>24 ساعة</translation>
+     </message>
+     <message>
+         <source>Settings</source>
+@@ -1143,7 +1143,7 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="201"/>
+         <source>Uygur  (CN)</source>
+-        <translation type="unfinished"></translation>
++        <translation>الأويغور (CN)</translation>
+     </message>
+     <message>
+         <source>Kirghiz  (CN)</source>
+@@ -1152,143 +1152,143 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="202"/>
+         <source>Traditional Chinese  (CN)</source>
+-        <translation type="unfinished"></translation>
++        <translation>الصينية التقليدية (CN)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="203"/>
+         <source>Mongolian  (CN)</source>
+-        <translation type="unfinished"></translation>
++        <translation>المنغولية (CN)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="201"/>
+         <source>Kazaqa  (KZ)</source>
+-        <translation type="unfinished"></translation>
++        <translation>كازاقا (KZ)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="205"/>
+         <source>Kirghiz  (KG)</source>
+-        <translation type="unfinished"></translation>
++        <translation>قيرغيز (KG)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="206"/>
+         <source>German  (DE)</source>
+-        <translation type="unfinished"></translation>
++        <translation>الألمانية (DE)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="207"/>
+         <source>Spanish  (ES)</source>
+-        <translation type="unfinished"></translation>
++        <translation>الإسبانية (ES)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="208"/>
+         <source>French  (FR)</source>
+-        <translation type="unfinished"></translation>
++        <translation>الفرنسية (FR)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="215"/>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="302"/>
+         <source>Solar calendar</source>
+-        <translation type="unfinished"></translation>
++        <translation>التقويم الشمسي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="216"/>
+         <source>Lunar</source>
+-        <translation type="unfinished"></translation>
++        <translation>قمري</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="221"/>
+         <source>Monday</source>
+-        <translation type="unfinished"></translation>
++        <translation>الاثنين</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="222"/>
+         <source>Sunday</source>
+-        <translation type="unfinished"></translation>
++        <translation>الأحد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="368"/>
+         <source>MMMM dd, yyyy</source>
+-        <translation type="unfinished"></translation>
++        <translation>MMMM dd ، yyyy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="371"/>
+         <source>MMMM d, yy</source>
+-        <translation type="unfinished"></translation>
++        <translation>مم د ، yy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="645"/>
+         <source>Tibetan</source>
+-        <translation type="unfinished"></translation>
++        <translation>تبتي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="612"/>
+         <source>Kazaqa</source>
+-        <translation type="unfinished"></translation>
++        <translation>كازاقا</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="649"/>
+         <source>Uygur</source>
+-        <translation type="unfinished"></translation>
++        <translation>الأويغور</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="651"/>
+         <source>Kirghiz</source>
+-        <translation type="unfinished"></translation>
++        <translation>قرغيز</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="653"/>
+         <source>Traditional Chinese</source>
+-        <translation type="unfinished"></translation>
++        <translation>الصينية التقليدية</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="655"/>
+         <source>Mongolian</source>
+-        <translation type="unfinished"></translation>
++        <translation>المنغولية</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="657"/>
+         <source>German</source>
+-        <translation type="unfinished"></translation>
++        <translation>الألمانية</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="659"/>
+         <source>Spanish</source>
+-        <translation type="unfinished"></translation>
++        <translation>الإسبانية</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="661"/>
+         <source>French</source>
+-        <translation type="unfinished"></translation>
++        <translation>الفرنسية</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="674"/>
+         <source>Modify the current region need to logout to take effect, whether to logout?</source>
+-        <translation type="unfinished"></translation>
++        <translation>تعديل المنطقة الحالية تحتاج إلى تسجيل الخروج لتصبح سارية المفعول، سواء كنت تريد تسجيل الخروج؟</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="675"/>
+         <source>Logout later</source>
+-        <translation type="unfinished"></translation>
++        <translation>تسجيل الخروج لاحقا</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="676"/>
+         <source>Logout now</source>
+-        <translation type="unfinished"></translation>
++        <translation>تسجيل الخروج الآن</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="678"/>
+         <source>Modify the first language need to reboot to take effect, whether to reboot?</source>
+-        <translation type="unfinished"></translation>
++        <translation>تعديل اللغة الأولى تحتاج إلى إعادة التشغيل لتصبح سارية المفعول, ما إذا كان سيتم إعادة التشغيل?</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="679"/>
+         <source>Reboot later</source>
+-        <translation type="unfinished"></translation>
++        <translation>أعد التشغيل لاحقا</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="680"/>
+         <source>Reboot now</source>
+-        <translation type="unfinished"></translation>
++        <translation>أعد التشغيل الآن</translation>
+     </message>
+     <message>
+         <source>calendar</source>
+@@ -1353,7 +1353,7 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="643"/>
+         <source>English</source>
+-        <translation type="unfinished"></translation>
++        <translation>الإنكليزية</translation>
+     </message>
+     <message>
+         <source>Chinese</source>
+@@ -1404,59 +1404,59 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="38"/>
+         <source>Regional Format</source>
+-        <translation type="unfinished"></translation>
++        <translation>الشكل الإقليمي</translation>
+         <extra-contents_path>/Area/Regional Format</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="40"/>
+         <source>Calendar</source>
+-        <translation type="unfinished"></translation>
++        <translation>تقويم</translation>
+         <extra-contents_path>/Area/Calendar</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="42"/>
+         <source>First Day Of Week</source>
+-        <translation type="unfinished"></translation>
++        <translation>اليوم الأول من الأسبوع</translation>
+         <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="46"/>
+         <source>Long Format Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>تاريخ التنسيق الطويل</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="45"/>
+         <source>Short Foramt Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>تاريخ فورمت قصير</translation>
+         <extra-contents_path>/Area/Date</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="48"/>
+         <source>Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>تاريخ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="52"/>
+         <source>Time</source>
+-        <translation type="unfinished"></translation>
++        <translation>الوقت</translation>
+         <extra-contents_path>/Area/Time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="65"/>
+         <source>Language Format</source>
+-        <translation type="unfinished"></translation>
++        <translation>تنسيق اللغة</translation>
+         <extra-contents_path>/Area/Language Format</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="76"/>
+         <source>Language Format Example</source>
+-        <translation type="unfinished"></translation>
++        <translation>مثال على تنسيق اللغة</translation>
+         <extra-contents_path>/Area/Language Format Example</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="105"/>
+         <source>System Language</source>
+-        <translation type="unfinished"></translation>
++        <translation>لغة النظام</translation>
+         <extra-contents_path>/Area/System Language</extra-contents_path>
+     </message>
+ </context>
+@@ -1472,27 +1472,27 @@
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="96"/>
+         <source>Auto Start</source>
+-        <translation type="unfinished"></translation>
++        <translation>بدء التشغيل التلقائي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="293"/>
+         <source>Desktop files(*.desktop)</source>
+-        <translation type="unfinished"></translation>
++        <translation>ملفات سطح المكتب (*.desktop)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
+         <source>select autoboot desktop</source>
+-        <translation type="unfinished"></translation>
++        <translation>حدد التمهيد التلقائي لسطح المكتب</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
+         <source>Select</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="303"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <source>Add</source>
+@@ -1531,7 +1531,7 @@
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="231"/>
+         <source>Delete</source>
+-        <translation type="unfinished"></translation>
++        <translation>حذف</translation>
+     </message>
+ </context>
+ <context>
+@@ -1544,13 +1544,13 @@
+     <message>
+         <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="17"/>
+         <source>Autostart Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>إعدادات التشغيل التلقائي</translation>
+         <extra-contents_path>/Autostart/Autostart Settings</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="27"/>
+         <source>Add</source>
+-        <translation type="unfinished"></translation>
++        <translation>جمع</translation>
+         <extra-contents_path>/Autostart/Add</extra-contents_path>
+     </message>
+ </context>
+@@ -1560,7 +1560,7 @@
+         <location filename="../../../plugins/security-updates/backup/backup.ui" line="53"/>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="115"/>
+         <source>Backup</source>
+-        <translation type="unfinished"></translation>
++        <translation>نسخ احتياطي</translation>
+     </message>
+     <message>
+         <source>Back up your files to other drives, and when the original files are lost, damaged, or deleted, you can restore them to ensure
+@@ -1576,25 +1576,26 @@ you can restore them to ensure the integrity of your system.</source>
+         <location filename="../../../plugins/security-updates/backup/backup.ui" line="69"/>
+         <source>Back up your files to other drives, and when the original files are lost, damaged, or deleted, 
+ you can restore them to ensure the integrity of your system.</source>
+-        <translation type="unfinished"></translation>
++        <translation>قم بعمل نسخة احتياطية من ملفاتك على محركات أقراص أخرى، وعند فقد الملفات الأصلية أو تلفها أو حذفها، 
++يمكنك استعادتها لضمان سلامة نظامك.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.ui" line="113"/>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="162"/>
+         <source>Begin backup</source>
+-        <translation type="unfinished"></translation>
++        <translation>بدء النسخ الاحتياطي</translation>
+         <extra-contents_path>/Backup/Begin backup</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.ui" line="157"/>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="139"/>
+         <source>Restore</source>
+-        <translation type="unfinished"></translation>
++        <translation>يستعيد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.ui" line="173"/>
+         <source>View a list of backed-upfiles to backed up files to the system</source>
+-        <translation type="unfinished"></translation>
++        <translation>عرض قائمة بالملفات التي تم نسخها احتياطيا للنسخ الاحتياطي للملفات إلى النظام</translation>
+     </message>
+     <message>
+         <source>View a list of backed-upfiles to restore backed up files to the system</source>
+@@ -1604,7 +1605,7 @@ you can restore them to ensure the integrity of your system.</source>
+         <location filename="../../../plugins/security-updates/backup/backup.ui" line="213"/>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="164"/>
+         <source>Begin restore</source>
+-        <translation type="unfinished"></translation>
++        <translation>بدء الاستعادة</translation>
+         <extra-contents_path>/Backup/Begin restore</extra-contents_path>
+     </message>
+     <message>
+@@ -1634,22 +1635,22 @@ you can restore them to ensure the integrity of your system.</source>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="44"/>
+         <source>Backup Restore</source>
+-        <translation type="unfinished"></translation>
++        <translation>استعادة النسخ الاحتياطي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="117"/>
+         <source>Back up your files to other drives and restore them when the source files are lost, damaged, or deleted to ensure the integrity of the system.</source>
+-        <translation type="unfinished"></translation>
++        <translation>قم بعمل نسخة احتياطية من ملفاتك على محركات أقراص أخرى واستعادتها عند فقد الملفات المصدر أو تلفها أو حذفها لضمان سلامة النظام.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="141"/>
+         <source>View the backup list and restore the backup file to the system</source>
+-        <translation type="unfinished"></translation>
++        <translation>عرض قائمة النسخ الاحتياطي واستعادة ملف النسخ الاحتياطي إلى النظام</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="160"/>
+         <source>Backup and Restore</source>
+-        <translation type="unfinished"></translation>
++        <translation>النسخ الاحتياطي والاستعادة</translation>
+     </message>
+ </context>
+ <context>
+@@ -2073,7 +2074,7 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/boot.cpp" line="7"/>
+         <source>Boot</source>
+-        <translation type="unfinished"></translation>
++        <translation>تمهيد</translation>
+     </message>
+     <message>
+         <source>boot</source>
+@@ -2098,23 +2099,23 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="21"/>
+         <source>boot</source>
+-        <translation type="unfinished"></translation>
++        <translation>تمهيد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="33"/>
+         <source>Grub verify</source>
+-        <translation type="unfinished"></translation>
++        <translation>يمر التحقق</translation>
+         <extra-contents_path>/Boot/Grub verify</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="36"/>
+         <source>Password required for Grub editing after enabling</source>
+-        <translation type="unfinished"></translation>
++        <translation>كلمة المرور المطلوبة لتحرير Grub بعد التمكين</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="38"/>
+         <source>Reset password</source>
+-        <translation type="unfinished"></translation>
++        <translation>إعادة تعيين كلمة المرور</translation>
+     </message>
+ </context>
+ <context>
+@@ -2122,7 +2123,7 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="36"/>
+         <source>Failed to get the brightness information of this monitor</source>
+-        <translation type="unfinished"></translation>
++        <translation>فشل في الحصول على معلومات السطوع لهذه الشاشة</translation>
+     </message>
+ </context>
+ <context>
+@@ -2702,7 +2703,7 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="139"/>
+         <source>System Logos</source>
+-        <translation type="unfinished"></translation>
++        <translation>شعارات النظام</translation>
+     </message>
+     <message>
+         <source>Local Logo</source>
+@@ -2711,58 +2712,58 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="116"/>
+         <source>User logo</source>
+-        <translation type="unfinished"></translation>
++        <translation>شعار المستخدم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="148"/>
+         <source>Select Local Logo</source>
+-        <translation type="unfinished"></translation>
++        <translation>حدد الشعار المحلي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="158"/>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="161"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>أكد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="302"/>
+         <source>select custom face file</source>
+-        <translation type="unfinished"></translation>
++        <translation>حدد ملف الوجه المخصص</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="303"/>
+         <source>Select</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
+         <source>Position: </source>
+-        <translation type="unfinished"></translation>
++        <translation>موضع: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
+         <source>FileName: </source>
+-        <translation type="unfinished"></translation>
++        <translation>اسم الملف: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
+         <source>FileType: </source>
+-        <translation type="unfinished"></translation>
++        <translation>نوع الملف: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="322"/>
+         <source>Warning</source>
+-        <translation type="unfinished"></translation>
++        <translation>تحذير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="323"/>
+         <source>The avatar is larger than 1M, please choose again</source>
+-        <translation type="unfinished"></translation>
++        <translation>الصورة الرمزية أكبر من 1 متر ، يرجى الاختيار مرة أخرى</translation>
+     </message>
+ </context>
+ <context>
+@@ -2801,32 +2802,32 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="31"/>
+         <source>Set Nickname</source>
+-        <translation type="unfinished"></translation>
++        <translation>تعيين الاسم المستعار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="53"/>
+         <source>UserName</source>
+-        <translation type="unfinished"></translation>
++        <translation>اسم المستخدم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="70"/>
+         <source>NickName</source>
+-        <translation type="unfinished"></translation>
++        <translation>لقب</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="156"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+-        <translation type="unfinished"></translation>
++        <translation>يجب أن يتراوح طول NickName بين 1 ~٪ 1 أحرف!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
+         <source>nickName already in use.</source>
+-        <translation type="unfinished"></translation>
++        <translation>الاسم المستعار قيد الاستخدام بالفعل.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
+         <source>Can&apos;t contains &apos;:&apos;.</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يمكن أن يحتوي على &quot;:&quot;.</translation>
+     </message>
+     <message>
+         <source>The length must be 1~%1 characters!</source>
+@@ -2847,12 +2848,12 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="113"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="116"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>أكد</translation>
+     </message>
+ </context>
+ <context>
+@@ -2860,87 +2861,87 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="98"/>
+         <source>Change password</source>
+-        <translation type="unfinished"></translation>
++        <translation>تغيير كلمة المرور</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="103"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="541"/>
+         <source>Current Pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>الأشخاص ذوي الإعاقة الحالية</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="116"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="158"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="191"/>
+         <source>Required</source>
+-        <translation type="unfinished"></translation>
++        <translation>مطلوب</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="147"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="542"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="550"/>
+         <source>New Pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>الأشخاص ذوي الإعاقة الجديدة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="187"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="543"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="551"/>
+         <source>Sure Pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>بالتأكيد الأشخاص ذوي الإعاقة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="249"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="253"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="375"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="441"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>أكد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="318"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="614"/>
+         <source>Inconsistency with pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>عدم الاتساق مع الأشخاص ذوي الإعاقة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="371"/>
+         <source>Same with old pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>نفس الشيء مع الأشخاص ذوي الإعاقة القديمة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="424"/>
+         <source>Pwd Changed Succes</source>
+-        <translation type="unfinished"></translation>
++        <translation>الأشخاص ذوي الإعاقة المتغيرة النجاح</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="431"/>
+         <source>Authentication failed, input authtok again!</source>
+-        <translation type="unfinished"></translation>
++        <translation>فشلت المصادقة ، أدخل authtok مرة أخرى!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="573"/>
+         <source>Contains illegal characters!</source>
+-        <translation type="unfinished"></translation>
++        <translation>يحتوي على شخصيات غير قانونية!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="685"/>
+         <source>current pwd cannot be empty!</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يمكن أن يكون الأشخاص ذوو الإعاقة الحاليين فارغين!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="690"/>
+         <source>new pwd cannot be empty!</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يمكن أن يكون الأشخاص ذوي الإعاقة الجدد فارغا!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="695"/>
+         <source>sure pwd cannot be empty!</source>
+-        <translation type="unfinished"></translation>
++        <translation>بالتأكيد لا يمكن أن يكون الأشخاص ذوي الإعاقة فارغا!</translation>
+     </message>
+ </context>
+ <context>
+@@ -2948,47 +2949,47 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="24"/>
+         <source>UserType</source>
+-        <translation type="unfinished"></translation>
++        <translation>نوع المستخدم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="71"/>
+         <source>administrator</source>
+-        <translation type="unfinished"></translation>
++        <translation>مدير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="73"/>
+         <source>standard user</source>
+-        <translation type="unfinished"></translation>
++        <translation>المستخدم القياسي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="61"/>
+         <source>Select account type (Ensure have admin on system):</source>
+-        <translation type="unfinished"></translation>
++        <translation>حدد نوع الحساب (تأكد من وجود مسؤول على النظام):</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="75"/>
+         <source>change system settings, install and upgrade software.</source>
+-        <translation type="unfinished"></translation>
++        <translation>قم بتغيير إعدادات النظام وتثبيت البرامج وترقيتها.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="77"/>
+         <source>use most software, cannot change system settings.</source>
+-        <translation type="unfinished"></translation>
++        <translation>استخدم معظم البرامج ، لا يمكن تغيير إعدادات النظام.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="130"/>
+         <source>Note: Effective After Logout!!!</source>
+-        <translation type="unfinished"></translation>
++        <translation>ملاحظة: ساري المفعول بعد تسجيل الخروج!!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="141"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>أكد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="144"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+ </context>
+ <context>
+@@ -3092,43 +3093,43 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="32"/>
+         <source>Dialog</source>
+-        <translation type="unfinished"></translation>
++        <translation>حوار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="86"/>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="89"/>
+         <source>Choose a custom color</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختر لونا مخصصا</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="254"/>
+         <source>HEX</source>
+-        <translation type="unfinished"></translation>
++        <translation>الهيكس</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="290"/>
+         <source>RGB</source>
+-        <translation type="unfinished"></translation>
++        <translation>RGB</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="457"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="476"/>
+         <source>OK</source>
+-        <translation type="unfinished"></translation>
++        <translation>موافق</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="94"/>
+         <source>Custom color</source>
+-        <translation type="unfinished"></translation>
++        <translation>لون مخصص</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="182"/>
+         <source>Close</source>
+-        <translation type="unfinished"></translation>
++        <translation>غلق</translation>
+     </message>
+ </context>
+ <context>
+@@ -3140,28 +3141,28 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.ui" line="26"/>
+         <source>Add New Group</source>
+-        <translation type="unfinished"></translation>
++        <translation>إضافة مجموعة جديدة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="54"/>
+         <source>Name</source>
+-        <translation type="unfinished"></translation>
++        <translation>اسم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="78"/>
+         <source>Id</source>
+-        <translation type="unfinished"></translation>
++        <translation>معرف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="92"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>أكد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="202"/>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="216"/>
+         <source>GroupName&apos;s length must be between 1 and %1 characters!</source>
+-        <translation type="unfinished"></translation>
++        <translation>يجب أن يتراوح طول GroupName بين 1 و ٪1 حرف!</translation>
+     </message>
+     <message>
+         <source>Members</source>
+@@ -3182,7 +3183,7 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="89"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <source>Certain</source>
+@@ -3191,7 +3192,7 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="50"/>
+         <source>Add user group</source>
+-        <translation type="unfinished"></translation>
++        <translation>إضافة مجموعة مستخدمين</translation>
+     </message>
+ </context>
+ <context>
+@@ -3471,32 +3472,32 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="49"/>
+         <source>CreateUserNew</source>
+-        <translation type="unfinished"></translation>
++        <translation>CreateUserجديد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="55"/>
+         <source>UserName</source>
+-        <translation type="unfinished"></translation>
++        <translation>اسم المستخدم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="65"/>
+         <source>NickName</source>
+-        <translation type="unfinished"></translation>
++        <translation>لقب</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="71"/>
+         <source>HostName</source>
+-        <translation type="unfinished"></translation>
++        <translation>اسم المضيف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="80"/>
+         <source>Pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>الأشخاص ذوي الإعاقة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="88"/>
+         <source>SurePwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>SurePwd</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="96"/>
+@@ -3504,59 +3505,59 @@ change system settings</source>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="102"/>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="105"/>
+         <source>Required</source>
+-        <translation type="unfinished"></translation>
++        <translation>مطلوب</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="109"/>
+         <source>verification</source>
+-        <translation type="unfinished"></translation>
++        <translation>التحقق</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="182"/>
+         <source>Select Type</source>
+-        <translation type="unfinished"></translation>
++        <translation>حدد النوع</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="191"/>
+         <source>Administrator</source>
+-        <translation type="unfinished"></translation>
++        <translation>مدير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="194"/>
+         <source>Users can make any changes they need</source>
+-        <translation type="unfinished"></translation>
++        <translation>يمكن للمستخدمين إجراء أي تغييرات يحتاجون إليها</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="196"/>
+         <source>Standard User</source>
+-        <translation type="unfinished"></translation>
++        <translation>المستخدم القياسي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="199"/>
+         <source>Users cannot change system settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يمكن للمستخدمين تغيير إعدادات النظام</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="276"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="279"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>أكد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="355"/>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="581"/>
+         <source>Inconsistency with pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>عدم الاتساق مع الأشخاص ذوي الإعاقة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="494"/>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="647"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+-        <translation type="unfinished"></translation>
++        <translation>يجب أن يتراوح طول NickName بين 1 ~٪ 1 أحرف!</translation>
+     </message>
+     <message>
+         <source>The nick name cannot be empty</source>
+@@ -3565,7 +3566,7 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
+         <source>nickName already in use.</source>
+-        <translation type="unfinished"></translation>
++        <translation>الاسم المستعار قيد الاستخدام بالفعل.</translation>
+     </message>
+     <message>
+         <source>nickName length must less than %1 letters!</source>
+@@ -3574,17 +3575,17 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="642"/>
+         <source>Username&apos;s length must be between 1 and %1 characters!</source>
+-        <translation type="unfinished"></translation>
++        <translation>يجب أن يتراوح طول اسم المستخدم بين 1 و ٪1 حرف!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="652"/>
+         <source>new pwd cannot be empty!</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يمكن أن يكون الأشخاص ذوي الإعاقة الجدد فارغا!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="657"/>
+         <source>sure pwd cannot be empty!</source>
+-        <translation type="unfinished"></translation>
++        <translation>بالتأكيد لا يمكن أن يكون الأشخاص ذوي الإعاقة فارغا!</translation>
+     </message>
+     <message>
+         <source>Name already in use.</source>
+@@ -3613,7 +3614,7 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="526"/>
+         <source>Name corresponds to group already exists.</source>
+-        <translation type="unfinished"></translation>
++        <translation>يتوافق الاسم مع المجموعة موجودة بالفعل.</translation>
+     </message>
+     <message>
+         <source>Name length must less than %1 letters!</source>
+@@ -3626,12 +3627,12 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="522"/>
+         <source>Username&apos;s folder exists, change another one</source>
+-        <translation type="unfinished"></translation>
++        <translation>مجلد اسم المستخدم موجود، قم بتغيير مجلد آخر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="551"/>
+         <source>Contains illegal characters!</source>
+-        <translation type="unfinished"></translation>
++        <translation>يحتوي على شخصيات غير قانونية!</translation>
+     </message>
+ </context>
+ <context>
+@@ -3639,7 +3640,7 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/personalized/theme/globaltheme/customglobaltheme.cpp" line="34"/>
+         <source>custom</source>
+-        <translation type="unfinished"></translation>
++        <translation>تقليد</translation>
+     </message>
+ </context>
+ <context>
+@@ -3762,7 +3763,7 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="28"/>
+         <source>Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>تاريخ</translation>
+     </message>
+     <message>
+         <source>Current Date</source>
+@@ -3799,7 +3800,7 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="341"/>
+         <source>Add Timezone</source>
+-        <translation type="unfinished"></translation>
++        <translation>إضافة منطقة زمنية</translation>
+     </message>
+     <message>
+         <source>Delete</source>
+@@ -3863,7 +3864,7 @@ change system settings</source>
+         <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="201"/>
+         <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="343"/>
+         <source>Change Timezone</source>
+-        <translation type="unfinished"></translation>
++        <translation>تغيير المنطقة الزمنية</translation>
+     </message>
+     <message>
+         <source>Sync failed</source>
+@@ -3891,91 +3892,91 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="53"/>
+         <source>Sync Server</source>
+-        <translation type="unfinished"></translation>
++        <translation>مزامنة الخادم</translation>
+         <extra-contents_path>/Date/Sync Server</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="75"/>
+         <source>Current Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>التاريخ الحالي</translation>
+         <extra-contents_path>/Date/Current Date</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="105"/>
+         <source>Timezone</source>
+-        <translation type="unfinished"></translation>
++        <translation>المنطقة الزمنية</translation>
+         <extra-contents_path>/Date/Timezone</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="111"/>
+         <source>Set Time</source>
+-        <translation type="unfinished"></translation>
++        <translation>ضبط الوقت</translation>
+         <extra-contents_path>/Date/Set Time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
+         <source>Manual Time</source>
+-        <translation type="unfinished"></translation>
++        <translation>الوقت اليدوي</translation>
+         <extra-contents_path>/Date/Manual Time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
+         <source>Sync Time</source>
+-        <translation type="unfinished"></translation>
++        <translation>وقت المزامنة</translation>
+         <extra-contents_path>/Date/Sync Time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="127"/>
+         <source>Set Date Manually</source>
+-        <translation type="unfinished"></translation>
++        <translation>تعيين التاريخ يدويا</translation>
+         <extra-contents_path>/Date/Set Date Manually</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="162"/>
+         <source>Server Address</source>
+-        <translation type="unfinished"></translation>
++        <translation>عنوان الخادم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
+         <source>Required</source>
+-        <translation type="unfinished"></translation>
++        <translation>مطلوب</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="165"/>
+         <source>Save</source>
+-        <translation type="unfinished"></translation>
++        <translation>أنقذ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="169"/>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="313"/>
+         <source>Customize</source>
+-        <translation type="unfinished"></translation>
++        <translation>تخصيص</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="197"/>
+         <source>Other Timezone</source>
+-        <translation type="unfinished"></translation>
++        <translation>منطقة زمنية أخرى</translation>
+         <extra-contents_path>/Date/Other Timezone</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="269"/>
+         <source>MMMM d, yy ddd</source>
+-        <translation type="unfinished"></translation>
++        <translation>MMMM د ، yy ddd</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
+         <source>MMMM dd, yyyy ddd</source>
+-        <translation type="unfinished"></translation>
++        <translation>MMMM dd ، yyyy ddd</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="302"/>
+         <source>Sync failed</source>
+-        <translation type="unfinished"></translation>
++        <translation>فشلت المزامنة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="312"/>
+         <source>Default</source>
+-        <translation type="unfinished"></translation>
++        <translation>افتراضي</translation>
+     </message>
+ </context>
+ <context>
+@@ -3991,17 +3992,17 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultapp.cpp" line="47"/>
+         <source>Default App</source>
+-        <translation type="unfinished"></translation>
++        <translation>التطبيق الافتراضي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultapp.cpp" line="172"/>
+         <source>No program available</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يوجد برنامج متاح</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultapp.cpp" line="173"/>
+         <source>Choose default app</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختر التطبيق الافتراضي</translation>
+     </message>
+     <message>
+         <source>Reset default apps to system recommended apps</source>
+@@ -4042,54 +4043,54 @@ change system settings</source>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="17"/>
+         <source>DefaultAppWindow</source>
+         <comment>Select Default Application</comment>
+-        <translation type="unfinished"></translation>
++        <translation>DefaultAppWindow</translation>
+         <extra-contents_path>/Defaultapp/Select Default Application</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="21"/>
+         <source>Browser</source>
+-        <translation type="unfinished"></translation>
++        <translation>المستعرض</translation>
+         <extra-contents_path>/Defaultapp/Browser</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="23"/>
+         <source>Mail</source>
+-        <translation type="unfinished"></translation>
++        <translation>بريد</translation>
+         <extra-contents_path>/Defaultapp/Mail</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="25"/>
+         <source>Image Viewer</source>
+-        <translation type="unfinished"></translation>
++        <translation>عارض الصور</translation>
+         <extra-contents_path>/Defaultapp/Image Viewer</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="27"/>
+         <source>Audio Player</source>
+-        <translation type="unfinished"></translation>
++        <translation>مشغل الصوت</translation>
+         <extra-contents_path>/Defaultapp/Audio Player</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="29"/>
+         <source>Video Player</source>
+-        <translation type="unfinished"></translation>
++        <translation>مشغل الفيديو</translation>
+         <extra-contents_path>/Defaultapp/Video Player</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="31"/>
+         <source>Text Editor</source>
+-        <translation type="unfinished"></translation>
++        <translation>محرر النصوص</translation>
+         <extra-contents_path>/Defaultapp/Text Editor</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="34"/>
+         <source>Reset default apps to system recommended apps</source>
+-        <translation type="unfinished"></translation>
++        <translation>إعادة تعيين التطبيقات الافتراضية إلى التطبيقات الموصى بها من قبل النظام</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="35"/>
+         <source>Reset</source>
+-        <translation type="unfinished"></translation>
++        <translation>اعاده تعيين</translation>
+     </message>
+ </context>
+ <context>
+@@ -4292,22 +4293,22 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="26"/>
+         <source>Delete User</source>
+-        <translation type="unfinished"></translation>
++        <translation>حذف المستخدم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="39"/>
+         <source>Delete user &apos;</source>
+-        <translation type="unfinished"></translation>
++        <translation>حذف المستخدم &apos;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="40"/>
+         <source>&apos;? And:</source>
+-        <translation type="unfinished"></translation>
++        <translation>&apos;? و:</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="65"/>
+         <source>Keep desktop, files, favorites, music of the user</source>
+-        <translation type="unfinished"></translation>
++        <translation>احتفظ بسطح المكتب والملفات والمفضلة والموسيقى للمستخدم</translation>
+     </message>
+     <message>
+         <source>Keep user&apos;s home folder</source>
+@@ -4316,17 +4317,17 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="98"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>أكد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
+         <source>Delete whole data belong user</source>
+-        <translation type="unfinished"></translation>
++        <translation>حذف البيانات الكاملة التي تنتمي إلى المستخدم</translation>
+     </message>
+ </context>
+ <context>
+@@ -4700,72 +4701,72 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="26"/>
+         <source>Dialog</source>
+-        <translation type="unfinished"></translation>
++        <translation>حوار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="214"/>
+         <source>Display Advanced Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>عرض الإعدادات المتقدمة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="297"/>
+         <source>Performance</source>
+-        <translation type="unfinished"></translation>
++        <translation>اداء</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="376"/>
+         <source>Applicable to machine with discrete graphics, which can accelerate the rendering of 3D graphics.</source>
+-        <translation type="unfinished"></translation>
++        <translation>ينطبق على الجهاز ذو الرسومات المنفصلة ، والتي يمكن أن تسرع من عرض الرسومات ثلاثية الأبعاد.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="392"/>
+         <source>(Note: not support connect graphical with xmanager on windows.)</source>
+-        <translation type="unfinished"></translation>
++        <translation>(ملاحظة: لا يدعم الاتصال الرسومي ب xmanager على النوافذ.)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="462"/>
+         <source>Compatible</source>
+-        <translation type="unfinished"></translation>
++        <translation>متوافق</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="538"/>
+         <source>Applicable to machine with integrated graphics,  there is no 3D graphics acceleration. </source>
+-        <translation type="unfinished"></translation>
++        <translation>ينطبق على الجهاز مع الرسومات المدمجة ، لا يوجد تسريع للرسومات ثلاثية الأبعاد. </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="554"/>
+         <source>(Note: need connect graphical with xmanager on windows, use this option.)</source>
+-        <translation type="unfinished"></translation>
++        <translation>(ملاحظة: تحتاج إلى الاتصال الرسومي ب xmanager على النوافذ ، استخدم هذا الخيار.)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="624"/>
+         <source>Automatic</source>
+-        <translation type="unfinished"></translation>
++        <translation>تلقائي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="700"/>
+         <source>Auto select according to environment, delay the login time (about 0.5 sec).</source>
+-        <translation type="unfinished"></translation>
++        <translation>تحديد تلقائي وفقا للبيئة ، تأخير وقت تسجيل الدخول (حوالي 0.5 ثانية).</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="721"/>
+         <source>Threshold:</source>
+-        <translation type="unfinished"></translation>
++        <translation>عتبة:</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="744"/>
+         <source>Apply</source>
+-        <translation type="unfinished"></translation>
++        <translation>طبق</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="757"/>
+         <source>Reset</source>
+-        <translation type="unfinished"></translation>
++        <translation>اعاده تعيين</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="772"/>
+         <source>(Note: select this option to use 3D graphics acceleration and xmanager.)</source>
+-        <translation type="unfinished"></translation>
++        <translation>(ملاحظة: حدد هذا الخيار لاستخدام تسريع الرسومات ثلاثية الأبعاد و xmanager.)</translation>
+     </message>
+ </context>
+ <context>
+@@ -4777,12 +4778,12 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/system/display/display.cpp" line="36"/>
+         <source>Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>شاشة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/display.cpp" line="38"/>
+         <source>Display</source>
+-        <translation type="unfinished"></translation>
++        <translation>عرض</translation>
+     </message>
+ </context>
+ <context>
+@@ -4815,7 +4816,7 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/system/display/display.ui" line="32"/>
+         <source>Display</source>
+-        <translation type="unfinished"></translation>
++        <translation>عرض</translation>
+     </message>
+     <message>
+         <source>as main</source>
+@@ -4883,7 +4884,7 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="60"/>
+         <source>double-click to test</source>
+-        <translation type="unfinished"></translation>
++        <translation>انقر نقرا مزدوجا للاختبار</translation>
+     </message>
+ </context>
+ <context>
+@@ -5129,35 +5130,35 @@ folder will be deleted!</source>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="46"/>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="121"/>
+         <source>Fonts</source>
+-        <translation type="unfinished"></translation>
++        <translation>الخطوط</translation>
+         <extra-contents_path>/Fonts/Fonts</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/fonts/fonts.ui" line="264"/>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="125"/>
+         <source>Fonts select</source>
+-        <translation type="unfinished"></translation>
++        <translation>تحديد الخطوط</translation>
+         <extra-contents_path>/Fonts/Fonts select</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/fonts/fonts.ui" line="146"/>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="123"/>
+         <source>Font size</source>
+-        <translation type="unfinished"></translation>
++        <translation>حجم الخط</translation>
+         <extra-contents_path>/Fonts/Font size</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/fonts/fonts.ui" line="370"/>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="127"/>
+         <source>Mono font</source>
+-        <translation type="unfinished"></translation>
++        <translation>خط أحادي</translation>
+         <extra-contents_path>/Fonts/Mono font</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/fonts/fonts.ui" line="421"/>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="129"/>
+         <source>Reset to default</source>
+-        <translation type="unfinished"></translation>
++        <translation>إعادة التعيين إلى الوضع الافتراضي</translation>
+         <extra-contents_path>/Fonts/Reset to default</extra-contents_path>
+     </message>
+     <message>
+@@ -5219,12 +5220,12 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="142"/>
+         <source>Small</source>
+-        <translation type="unfinished"></translation>
++        <translation>صغير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="146"/>
+         <source>Large</source>
+-        <translation type="unfinished"></translation>
++        <translation>كبير</translation>
+     </message>
+ </context>
+ <context>
+@@ -5303,44 +5304,44 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="24"/>
+         <source>Grub verify</source>
+-        <translation type="unfinished"></translation>
++        <translation>يمر التحقق</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="29"/>
+         <source>User:</source>
+-        <translation type="unfinished"></translation>
++        <translation>مستخدم:</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="42"/>
+         <source>Pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>الأشخاص ذوي الإعاقة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="85"/>
+         <source>Sure Pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>بالتأكيد الأشخاص ذوي الإعاقة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="138"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="142"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>أكد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="197"/>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="235"/>
+         <source>Inconsistency with pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>عدم الاتساق مع الأشخاص ذوي الإعاقة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="225"/>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="303"/>
+         <source>pwd cannot be empty!</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يمكن أن يكون الأشخاص ذوي الإعاقة فارغا!</translation>
+     </message>
+     <message>
+         <source>sure pwd cannot be empty!</source>
+@@ -5363,44 +5364,44 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="17"/>
+         <source>Set HostName</source>
+-        <translation type="unfinished"></translation>
++        <translation>تعيين اسم المضيف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="47"/>
+         <source>HostName</source>
+-        <translation type="unfinished"></translation>
++        <translation>اسم المضيف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="68"/>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="115"/>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="118"/>
+         <source>Must be 1-64 characters long</source>
+-        <translation type="unfinished"></translation>
++        <translation>يجب أن يكون طوله من 1 إلى 64 حرفا</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="87"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="82"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>أكد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="188"/>
+         <source>Hostname must start or end with a number and a letter</source>
+-        <translation type="unfinished"></translation>
++        <translation>يجب أن يبدأ اسم المضيف أو ينتهي برقم وحرف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="199"/>
+         <source>Hostname cannot have consecutive &apos; - &apos; and &apos; . &apos;</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يمكن أن يحتوي اسم المضيف على &apos;- &apos; و &apos; متتالي. &apos;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="206"/>
+         <source>Hostname cannot have consecutive &apos; . &apos;</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يمكن أن يكون لاسم المضيف &apos; . &apos;</translation>
+     </message>
+ </context>
+ <context>
+@@ -5408,7 +5409,7 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="46"/>
+         <source>Set Password</source>
+-        <translation type="unfinished"></translation>
++        <translation>تعيين كلمة المرور</translation>
+     </message>
+     <message>
+         <source>Password can not be blank</source>
+@@ -5417,22 +5418,22 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="79"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="29"/>
+         <source>Set</source>
+-        <translation type="unfinished"></translation>
++        <translation>جبر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="62"/>
+         <source>Must be 1-8 characters long</source>
+-        <translation type="unfinished"></translation>
++        <translation>يجب أن يكون طوله من 1 إلى 8 أحرف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="83"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>أكد</translation>
+     </message>
+     <message>
+         <source>less than or equal to 8</source>
+@@ -5625,57 +5626,57 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="46"/>
+         <source>System</source>
+-        <translation type="unfinished"></translation>
++        <translation>نظام</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="49"/>
+         <source>Devices</source>
+-        <translation type="unfinished"></translation>
++        <translation>الاجهزه</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="55"/>
+         <source>Personalized</source>
+-        <translation type="unfinished"></translation>
++        <translation>شخصيه</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="52"/>
+         <source>Network</source>
+-        <translation type="unfinished"></translation>
++        <translation>شبكة</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="58"/>
+         <source>Account</source>
+-        <translation type="unfinished"></translation>
++        <translation>حساب</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="61"/>
+         <source>Datetime</source>
+-        <translation type="unfinished"></translation>
++        <translation>التاريخ والوقت</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="64"/>
+         <source>Update</source>
+-        <translation type="unfinished"></translation>
++        <translation>تحديث</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="67"/>
+         <source>Security</source>
+-        <translation type="unfinished"></translation>
++        <translation>أمن</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="70"/>
+         <source>Application</source>
+-        <translation type="unfinished"></translation>
++        <translation>تطبيق</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="73"/>
+         <source>Investigation</source>
+-        <translation type="unfinished"></translation>
++        <translation>التحقيق</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="76"/>
+         <source>Commoninfo</source>
+-        <translation type="unfinished"></translation>
++        <translation>كومون إنفو</translation>
+     </message>
+     <message>
+         <source>Search</source>
+@@ -5794,7 +5795,7 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardmain.cpp" line="25"/>
+         <source>Keyboard</source>
+-        <translation type="unfinished"></translation>
++        <translation>لوحة مفاتيح</translation>
+     </message>
+     <message>
+         <source>Short</source>
+@@ -5837,132 +5838,132 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="24"/>
+         <source>Keyboard Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>إعدادات لوحة المفاتيح</translation>
+         <extra-contents_path>/Keyboard/Keyboard Settings</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="35"/>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
+         <source>Input Method</source>
+-        <translation type="unfinished"></translation>
++        <translation>طريقة الإدخال</translation>
+         <extra-contents_path>/Keyboard/Input Method</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="51"/>
+         <source>Virtual Keyboard</source>
+-        <translation type="unfinished"></translation>
++        <translation>لوحة المفاتيح الافتراضية</translation>
+         <extra-contents_path>/Keyboard/Virtual Keyboard</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="106"/>
+         <source>Key repeat</source>
+-        <translation type="unfinished"></translation>
++        <translation>تكرار المفتاح</translation>
+         <extra-contents_path>/Keyboard/Key repeat</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="114"/>
+         <source>Delay</source>
+-        <translation type="unfinished"></translation>
++        <translation>تأخر</translation>
+         <extra-contents_path>/Keyboard/Delay</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="117"/>
+         <source>Short</source>
+-        <translation type="unfinished"></translation>
++        <translation>قصير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="118"/>
+         <source>Long</source>
+-        <translation type="unfinished"></translation>
++        <translation>طويل</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="130"/>
+         <source>Speed</source>
+-        <translation type="unfinished"></translation>
++        <translation>سرعة</translation>
+         <extra-contents_path>/Keyboard/Speed</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="132"/>
+         <source>Slow</source>
+-        <translation type="unfinished"></translation>
++        <translation>بطيء</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="133"/>
+         <source>Fast</source>
+-        <translation type="unfinished"></translation>
++        <translation>صوم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="144"/>
+         <source>Input test</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختبار الإدخال</translation>
+         <extra-contents_path>/Keyboard/Input test</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="152"/>
+         <source>Key tips</source>
+-        <translation type="unfinished"></translation>
++        <translation>نصائح رئيسية</translation>
+         <extra-contents_path>/Keyboard/Key tips</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="161"/>
+         <source>Input settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>إعدادات الإدخال</translation>
+         <extra-contents_path>/Keyboard/Input settings</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="168"/>
+         <source>Edit</source>
+-        <translation type="unfinished"></translation>
++        <translation>حرر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="175"/>
+         <source>Show icon on tray</source>
+-        <translation type="unfinished"></translation>
++        <translation>إظهار الرمز على الدرج</translation>
+         <extra-contents_path>/Keyboard/Show icon on tray</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="182"/>
+         <source>Show icon on desktop</source>
+-        <translation type="unfinished"></translation>
++        <translation>إظهار الرمز على سطح المكتب</translation>
+         <extra-contents_path>/Keyboard/Show icon on desktop</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="189"/>
+         <source>Keyboard Size</source>
+-        <translation type="unfinished"></translation>
++        <translation>حجم لوحة المفاتيح</translation>
+         <extra-contents_path>/Keyboard/Keyboard Size</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="197"/>
+         <source>Text size</source>
+-        <translation type="unfinished"></translation>
++        <translation>حجم النص</translation>
+         <extra-contents_path>/Keyboard/Text size</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="199"/>
+         <source>Small</source>
+-        <translation type="unfinished"></translation>
++        <translation>صغير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="200"/>
+         <source>Medium</source>
+-        <translation type="unfinished"></translation>
++        <translation>متوسط</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="201"/>
+         <source>Large</source>
+-        <translation type="unfinished"></translation>
++        <translation>كبير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
+         <source>Animation</source>
+-        <translation type="unfinished"></translation>
++        <translation>رسم متحرك</translation>
+         <extra-contents_path>/Keyboard/Animation</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="214"/>
+         <source>Input sound effect</source>
+-        <translation type="unfinished"></translation>
++        <translation>إدخال تأثير الصوت</translation>
+         <extra-contents_path>/Keyboard/Input sound effect</extra-contents_path>
+     </message>
+ </context>
+@@ -5971,12 +5972,12 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/time-language/area/languageframe.cpp" line="71"/>
+         <source>Delete</source>
+-        <translation type="unfinished"></translation>
++        <translation>حذف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/languageframe.cpp" line="70"/>
+         <source>Input Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>إعدادات الإدخال</translation>
+     </message>
+ </context>
+ <context>
+@@ -6454,17 +6455,17 @@ Please retry or relogin!</source>
+         <location filename="../../mainwindow.cpp" line="596"/>
+         <location filename="../../mainwindow.cpp" line="954"/>
+         <source>Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>اعدادات</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="481"/>
+         <source>Option</source>
+-        <translation type="unfinished"></translation>
++        <translation>خيار</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="482"/>
+         <source>Minimize</source>
+-        <translation type="unfinished"></translation>
++        <translation>تصغير</translation>
+     </message>
+     <message>
+         <source>Maximize/Normal</source>
+@@ -6473,53 +6474,53 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../mainwindow.cpp" line="154"/>
+         <source>Warnning</source>
+-        <translation type="unfinished"></translation>
++        <translation>تحذير</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="172"/>
+         <source>Restore</source>
+-        <translation type="unfinished"></translation>
++        <translation>يستعيد</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="175"/>
+         <location filename="../../mainwindow.cpp" line="483"/>
+         <source>Maximize</source>
+-        <translation type="unfinished"></translation>
++        <translation>تعظيم</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="455"/>
+         <source>Back home</source>
+-        <translation type="unfinished"></translation>
++        <translation>العودة إلى المنزل</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="484"/>
+         <source>Close</source>
+-        <translation type="unfinished"></translation>
++        <translation>غلق</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="584"/>
+         <source>Help</source>
+-        <translation type="unfinished"></translation>
++        <translation>تعليمات</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="586"/>
+         <source>About</source>
+-        <translation type="unfinished"></translation>
++        <translation>عن</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="588"/>
+         <source>Exit</source>
+-        <translation type="unfinished"></translation>
++        <translation>مخرج</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="597"/>
+         <source>Version: </source>
+-        <translation type="unfinished"></translation>
++        <translation>الإصدار: </translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="736"/>
+         <source>Specified</source>
+-        <translation type="unfinished"></translation>
++        <translation>المحدد</translation>
+     </message>
+     <message>
+         <source>ukcc</source>
+@@ -6528,13 +6529,13 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../mainwindow.cpp" line="1086"/>
+         <source>Warning</source>
+-        <translation type="unfinished"></translation>
++        <translation>تحذير</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="154"/>
+         <location filename="../../mainwindow.cpp" line="1086"/>
+         <source>This function has been controlled</source>
+-        <translation type="unfinished"></translation>
++        <translation>تم التحكم في هذه الوظيفة</translation>
+     </message>
+     <message>
+         <source>Home</source>
+@@ -6700,7 +6701,7 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouse.cpp" line="5"/>
+         <source>Mouse</source>
+-        <translation type="unfinished"></translation>
++        <translation>فأر</translation>
+     </message>
+ </context>
+ <context>
+@@ -6831,57 +6832,57 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="91"/>
+         <source>Mouse</source>
+-        <translation type="unfinished"></translation>
++        <translation>فأر</translation>
+         <extra-contents_path>/Mouse/Mouse</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="113"/>
+         <source>Pointer</source>
+-        <translation type="unfinished"></translation>
++        <translation>مؤشر</translation>
+         <extra-contents_path>/Mouse/Pointer</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="136"/>
+         <source>Cursor</source>
+-        <translation type="unfinished"></translation>
++        <translation>المؤشر</translation>
+         <extra-contents_path>/Mouse/Cursor</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="161"/>
+         <source>Dominant hand</source>
+-        <translation type="unfinished"></translation>
++        <translation>اليد المهيمنة</translation>
+         <extra-contents_path>/Mouse/Dominant hand</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="163"/>
+         <source>Left key</source>
+-        <translation type="unfinished"></translation>
++        <translation>المفتاح الأيسر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="164"/>
+         <source>Right key</source>
+-        <translation type="unfinished"></translation>
++        <translation>المفتاح الأيمن</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="175"/>
+         <source>Scroll direction</source>
+-        <translation type="unfinished"></translation>
++        <translation>اتجاه التمرير</translation>
+         <extra-contents_path>/Mouse/Scroll direction</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="177"/>
+         <source>Forward</source>
+-        <translation type="unfinished"></translation>
++        <translation>أمامي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="178"/>
+         <source>Reverse</source>
+-        <translation type="unfinished"></translation>
++        <translation>عكس</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="188"/>
+         <source>Wheel speed</source>
+-        <translation type="unfinished"></translation>
++        <translation>سرعة العجلة</translation>
+         <extra-contents_path>/Mouse/Wheel speed</extra-contents_path>
+     </message>
+     <message>
+@@ -6889,53 +6890,53 @@ Please retry or relogin!</source>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="224"/>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="314"/>
+         <source>Slow</source>
+-        <translation type="unfinished"></translation>
++        <translation>بطيء</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="191"/>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="225"/>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="315"/>
+         <source>Fast</source>
+-        <translation type="unfinished"></translation>
++        <translation>صوم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="204"/>
+         <source>Double-click interval time</source>
+-        <translation type="unfinished"></translation>
++        <translation>النقر المزدوج على الفاصل الزمني</translation>
+         <extra-contents_path>/Mouse/Double-click interval time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="206"/>
+         <source>Short</source>
+-        <translation type="unfinished"></translation>
++        <translation>قصير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="207"/>
+         <source>Long</source>
+-        <translation type="unfinished"></translation>
++        <translation>طويل</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="222"/>
+         <source>Pointer speed</source>
+-        <translation type="unfinished"></translation>
++        <translation>سرعة المؤشر</translation>
+         <extra-contents_path>/Mouse/Pointer speed</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="238"/>
+         <source>Mouse acceleration</source>
+-        <translation type="unfinished"></translation>
++        <translation>تسريع الماوس</translation>
+         <extra-contents_path>/Mouse/Mouse acceleration</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="246"/>
+         <source>Show pointer position when pressing ctrl</source>
+-        <translation type="unfinished"></translation>
++        <translation>إظهار موضع المؤشر عند الضغط على ctrl</translation>
+         <extra-contents_path>/Mouse/Show pointer position when pressing ctrl</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="255"/>
+         <source>Pointer size</source>
+-        <translation type="unfinished"></translation>
++        <translation>حجم المؤشر</translation>
+         <extra-contents_path>/Mouse/Pointer size</extra-contents_path>
+     </message>
+     <message>
+@@ -6945,28 +6946,28 @@ Please retry or relogin!</source>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="265"/>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="266"/>
+         <source>Small(recommend)</source>
+-        <translation type="unfinished"></translation>
++        <translation>صغير (يوصي)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="271"/>
+         <source>Medium</source>
+-        <translation type="unfinished"></translation>
++        <translation>متوسط</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="272"/>
+         <source>Large</source>
+-        <translation type="unfinished"></translation>
++        <translation>كبير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="303"/>
+         <source>Blinking cursor in text area</source>
+-        <translation type="unfinished"></translation>
++        <translation>المؤشر الوامض في منطقة النص</translation>
+         <extra-contents_path>/Mouse/Blinking cursor in text area</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="312"/>
+         <source>Cursor speed</source>
+-        <translation type="unfinished"></translation>
++        <translation>سرعة المؤشر</translation>
+         <extra-contents_path>/Mouse/Cursor speed</extra-contents_path>
+     </message>
+ </context>
+@@ -7216,7 +7217,7 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/system/notice/notice.cpp" line="43"/>
+         <source>Notice</source>
+-        <translation type="unfinished"></translation>
++        <translation>لاحظ</translation>
+     </message>
+ </context>
+ <context>
+@@ -7224,37 +7225,37 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/system/notice/noticemenu.cpp" line="43"/>
+         <source>Beep sound when notified</source>
+-        <translation type="unfinished"></translation>
++        <translation>صوت صفير عند الإخطار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticemenu.cpp" line="49"/>
+         <source>Show message  on screenlock</source>
+-        <translation type="unfinished"></translation>
++        <translation>إظهار الرسالة على قفل الشاشة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticemenu.cpp" line="55"/>
+         <source>Show noticfication  on screenlock</source>
+-        <translation type="unfinished"></translation>
++        <translation>إظهار الإشعارات على قفل الشاشة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticemenu.cpp" line="59"/>
+         <source>Notification Style</source>
+-        <translation type="unfinished"></translation>
++        <translation>نمط الإخطار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticemenu.cpp" line="67"/>
+         <source>Banner: Appears in the upper right corner of the screen, and disappears automatically</source>
+-        <translation type="unfinished"></translation>
++        <translation>البانر: يظهر في الزاوية العلوية اليمنى من الشاشة، ويختفي تلقائيا</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticemenu.cpp" line="72"/>
+         <source>Tip:It will be kept on the screen until it is closed</source>
+-        <translation type="unfinished"></translation>
++        <translation>نصيحة: سيتم الاحتفاظ بها على الشاشة حتى يتم إغلاقها</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticemenu.cpp" line="77"/>
+         <source>None:Notifications will not be displayed on the screen, but will go to the notification center</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا شيء:لن يتم عرض الإشعارات على الشاشة، ولكنها ستنتقل إلى مركز الإشعارات</translation>
+     </message>
+ </context>
+ <context>
+@@ -7262,47 +7263,47 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/system/notice/noticeui.cpp" line="18"/>
+         <source>Notice Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>إعدادات الإشعار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticeui.cpp" line="19"/>
+         <source>NotFaze Mode</source>
+-        <translation type="unfinished"></translation>
++        <translation>وضع NotFaze</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticeui.cpp" line="23"/>
+         <source>(Notification banners, prompts will be hidden, and notification sounds will be muted)</source>
+-        <translation type="unfinished"></translation>
++        <translation>(سيتم إخفاء لافتات الإشعارات والمطالبات وسيتم كتم أصوات الإشعارات)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticeui.cpp" line="33"/>
+         <source>Get notifications from the app</source>
+-        <translation type="unfinished"></translation>
++        <translation>الحصول على إشعارات من التطبيق</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticeui.cpp" line="51"/>
+         <source>Automatically turn on</source>
+-        <translation type="unfinished"></translation>
++        <translation>التفعيل التلقائي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticeui.cpp" line="70"/>
+         <source>to</source>
+-        <translation type="unfinished"></translation>
++        <translation>ل</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticeui.cpp" line="90"/>
+         <source>Automatically turn on when multiple screens are connected</source>
+-        <translation type="unfinished"></translation>
++        <translation>التشغيل التلقائي عند توصيل شاشات متعددة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticeui.cpp" line="91"/>
+         <source>Automatically open in full screen mode</source>
+-        <translation type="unfinished"></translation>
++        <translation>فتح تلقائيا في وضع ملء الشاشة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/notice/noticeui.cpp" line="92"/>
+         <source>Allow automatic alarm reminders in Do Not Disturb mode</source>
+-        <translation type="unfinished"></translation>
++        <translation>السماح بتذكيرات التنبيه التلقائي في وضع عدم الإزعاج</translation>
+     </message>
+ </context>
+ <context>
+@@ -7317,29 +7318,29 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="84"/>
+         <source>resolution</source>
+-        <translation type="unfinished"></translation>
++        <translation>دقة</translation>
+         <extra-contents_path>/Display/resolution</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="110"/>
+         <source>orientation</source>
+-        <translation type="unfinished"></translation>
++        <translation>اتجاه</translation>
+         <extra-contents_path>/Display/orientation</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="123"/>
+         <source>arrow-up</source>
+-        <translation type="unfinished"></translation>
++        <translation>السهم لأعلى</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="124"/>
+         <source>90° arrow-right</source>
+-        <translation type="unfinished"></translation>
++        <translation>90 درجة سهم لليمين</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="126"/>
+         <source>arrow-down</source>
+-        <translation type="unfinished"></translation>
++        <translation>السهم لأسفل</translation>
+     </message>
+     <message>
+         <source>Information</source>
+@@ -7352,18 +7353,18 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="125"/>
+         <source>90° arrow-left</source>
+-        <translation type="unfinished"></translation>
++        <translation>90 درجة سهم يسار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="137"/>
+         <source>auto rotation</source>
+-        <translation type="unfinished"></translation>
++        <translation>الدوران التلقائي</translation>
+         <extra-contents_path>/Display/auto rotation</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="188"/>
+         <source>frequency</source>
+-        <translation type="unfinished"></translation>
++        <translation>تردد</translation>
+         <extra-contents_path>/Display/frequency</extra-contents_path>
+     </message>
+     <message>
+@@ -7373,18 +7374,18 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="411"/>
+         <source>auto</source>
+-        <translation type="unfinished"></translation>
++        <translation>تلقائي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="222"/>
+         <source>screen zoom</source>
+-        <translation type="unfinished"></translation>
++        <translation>تكبير الشاشة</translation>
+         <extra-contents_path>/Display/screen zoom</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="577"/>
+         <source>%1 Hz</source>
+-        <translation type="unfinished"></translation>
++        <translation>٪1 هرتز</translation>
+     </message>
+ </context>
+ <context>
+@@ -7850,13 +7851,13 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/devices/printer/printer.cpp" line="43"/>
+         <source>Printer</source>
+-        <translation type="unfinished"></translation>
++        <translation>طابعة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/printer/printer.cpp" line="121"/>
+         <source>Printers</source>
+         <translatorcomment>打印机</translatorcomment>
+-        <translation type="unfinished"></translation>
++        <translation>الطابعات</translation>
+     </message>
+     <message>
+         <source>Printers And Scanners</source>
+@@ -7873,22 +7874,22 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="11"/>
+         <source>Set</source>
+-        <translation type="unfinished"></translation>
++        <translation>جبر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="73"/>
+         <source>End User License Agreement and Privacy Policy Statement of openKylin</source>
+-        <translation type="unfinished"></translation>
++        <translation>اتفاقية ترخيص المستخدم النهائي وبيان سياسة الخصوصية ل openKylin</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="75"/>
+         <source>End User License Agreement and Privacy Policy Statement of Kylin</source>
+-        <translation type="unfinished"></translation>
++        <translation>اتفاقية ترخيص المستخدم النهائي وبيان سياسة الخصوصية الخاص ب Kylin</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
+         <source>Openkylin Community.</source>
+-        <translation type="unfinished"></translation>
++        <translation>مجتمع Openkylin.</translation>
+     </message>
+     <message>
+         <source>Dear users of Kylin operating system and relevant products, 
+@@ -8995,7 +8996,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="83"/>
+         <source>Kylinsoft Co., Ltd.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kylinsoft المحدودة</translation>
+     </message>
+ </context>
+ <context>
+@@ -9349,12 +9350,12 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcut.cpp" line="186"/>
+         <source>Customize Shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>تخصيص الاختصار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="463"/>
+         <source>Edit Shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>تحرير الاختصار</translation>
+     </message>
+     <message>
+         <source>Update Shortcut</source>
+@@ -9484,7 +9485,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="75"/>
+         <source>User Info</source>
+-        <translation type="unfinished"></translation>
++        <translation>معلومات المستخدم</translation>
+     </message>
+     <message>
+         <source>Date</source>
+@@ -9705,17 +9706,17 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../main.cpp" line="100"/>
+         <source>ukui-control-center is disabled!</source>
+-        <translation type="unfinished"></translation>
++        <translation>تم تعطيل مركز التحكم في UKUI!</translation>
+     </message>
+     <message>
+         <location filename="../../main.cpp" line="128"/>
+         <source>ukui-control-center</source>
+-        <translation type="unfinished"></translation>
++        <translation>مركز التحكم في UKUI</translation>
+     </message>
+     <message>
+         <location filename="../../main.cpp" line="89"/>
+         <source>ukui-control-center is already running!</source>
+-        <translation type="unfinished"></translation>
++        <translation>مركز التحكم في UKUI يعمل بالفعل!</translation>
+     </message>
+     <message>
+         <source>Pwd input error, re-enter!</source>
+@@ -9857,55 +9858,64 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1221"/>
+         <source>min length %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>الحد الأدنى للطول ٪1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1231"/>
+         <source>min digit num %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>الحد الأدنى لرقم الرقم ٪1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1240"/>
+         <source>min upper num %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>الحد الأدنى للعدد العلوي ٪1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1249"/>
+         <source>min lower num %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>الحد الأدنى للرقم السفلي ٪1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1258"/>
+         <source>min other num %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>الحد الأدنى للرقم الآخر ٪1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1268"/>
+         <source>min char class %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>فئة الفحم الأدنى ٪1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1277"/>
+         <source>max repeat %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>الحد الأقصى للتكرار ٪1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1286"/>
+         <source>max class repeat %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>الحد الأقصى لتكرار الفصل ٪1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1295"/>
+         <source>max sequence %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>الحد الأقصى للتسلسل ٪1
++</translation>
+     </message>
+     <message>
+         <source>system upgrade new backup</source>
+@@ -9918,7 +9928,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="373"/>
+         <source>Programs are not allowed to be added.</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يسمح بإضافة البرامج.</translation>
+     </message>
+     <message>
+         <source>简体中文</source>
+@@ -9984,7 +9994,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="32"/>
+         <source>Screenlock</source>
+-        <translation type="unfinished"></translation>
++        <translation>قفل الشاشة</translation>
+     </message>
+     <message>
+         <source>Screenlock Interface</source>
+@@ -10091,7 +10101,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="172"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
+-        <translation type="unfinished"></translation>
++        <translation>ملفات الخلفيات(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</translation>
+     </message>
+     <message>
+         <source>allFiles(*.*)</source>
+@@ -10132,32 +10142,32 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="213"/>
+         <source>select custom wallpaper file</source>
+-        <translation type="unfinished"></translation>
++        <translation>حدد ملف خلفية مخصص</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="214"/>
+         <source>Select</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="215"/>
+         <source>Position: </source>
+-        <translation type="unfinished"></translation>
++        <translation>موضع: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="216"/>
+         <source>FileName: </source>
+-        <translation type="unfinished"></translation>
++        <translation>اسم الملف: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="217"/>
+         <source>FileType: </source>
+-        <translation type="unfinished"></translation>
++        <translation>نوع الملف: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="218"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <source>Monitor Off</source>
+@@ -10177,84 +10187,84 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="41"/>
+         <source>Show picture of screenlock on screenlogin</source>
+-        <translation type="unfinished"></translation>
++        <translation>إظهار صورة قفل الشاشة على تسجيل الدخول</translation>
+         <extra-contents_path>/Screenlock/Show picture of screenlock on screenlogin</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="43"/>
+         <source>Leave lock (System will be locked when the paired phone gone)</source>
+-        <translation type="unfinished"></translation>
++        <translation>اترك القفل (سيتم قفل النظام عند اختفاء الهاتف المقترن)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="44"/>
+         <source>Specified device</source>
+-        <translation type="unfinished"></translation>
++        <translation>الجهاز المحدد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
+         <source>No paired phone. Please turn to &apos;Bluetooth&apos; to pair.</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يوجد هاتف مقترن. يرجى الرجوع إلى &quot;Bluetooth&quot; للإقران.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="65"/>
+         <source>Screenlock</source>
+-        <translation type="unfinished"></translation>
++        <translation>قفل الشاشة</translation>
+         <extra-contents_path>/Screenlock/Screenlock</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="95"/>
+         <source>Local Pictures</source>
+-        <translation type="unfinished"></translation>
++        <translation>صور محلية</translation>
+         <extra-contents_path>/Screenlock/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="97"/>
+         <source>Online Pictures</source>
+-        <translation type="unfinished"></translation>
++        <translation>صور على الانترنت</translation>
+         <extra-contents_path>/Screenlock/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="99"/>
+         <source>Reset To Default</source>
+-        <translation type="unfinished"></translation>
++        <translation>إعادة التعيين إلى الوضع الافتراضي</translation>
+         <extra-contents_path>/Screenlock/Reset To Default</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="111"/>
+         <source>Bluetooth</source>
+-        <translation type="unfinished"></translation>
++        <translation>بلوتوث</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="116"/>
+         <source>No bluetooth adapter detected, can not use Leave Lock.</source>
+-        <translation type="unfinished"></translation>
++        <translation>لم يتم اكتشاف محول بلوتوث ، لا يمكن استخدام Leave Lock.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="134"/>
+         <source>Monitor Off</source>
+-        <translation type="unfinished"></translation>
++        <translation>إيقاف تشغيل الشاشة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="135"/>
+         <source>Screensaver</source>
+-        <translation type="unfinished"></translation>
++        <translation>شاشة التوقف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="137"/>
+         <source>Related Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>الإعدادات ذات الصلة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="143"/>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="144"/>
+         <source>Set</source>
+-        <translation type="unfinished"></translation>
++        <translation>جبر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="159"/>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="526"/>
+         <source>Please select device</source>
+-        <translation type="unfinished"></translation>
++        <translation>الرجاء تحديد الجهاز</translation>
+     </message>
+ </context>
+ <context>
+@@ -10262,7 +10272,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="37"/>
+         <source>Screensaver</source>
+-        <translation type="unfinished"></translation>
++        <translation>شاشة التوقف</translation>
+     </message>
+     <message>
+         <source>Idle time</source>
+@@ -10317,7 +10327,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="174"/>
+         <source>UKUI</source>
+-        <translation type="unfinished"></translation>
++        <translation>معهد المملكة المتحدة</translation>
+     </message>
+     <message>
+         <source>Blank_Only</source>
+@@ -10326,35 +10336,35 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="174"/>
+         <source>Customize</source>
+-        <translation type="unfinished"></translation>
++        <translation>تخصيص</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
+         <source>5min</source>
+-        <translation type="unfinished"></translation>
++        <translation>5 دقائق</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
+         <source>10min</source>
+-        <translation type="unfinished"></translation>
++        <translation>10 دقائق</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
+         <source>15min</source>
+-        <translation type="unfinished"></translation>
++        <translation>15 دقيقة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
+         <source>30min</source>
+-        <translation type="unfinished"></translation>
++        <translation>30 دقيقة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
+         <source>1hour</source>
+-        <translation type="unfinished"></translation>
++        <translation>1 ساعة</translation>
+     </message>
+     <message>
+         <source>Screensaver source</source>
+@@ -10396,7 +10406,7 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="168"/>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
+         <source>1min</source>
+-        <translation type="unfinished"></translation>
++        <translation>1 دقيقة</translation>
+     </message>
+     <message>
+         <source>Ordinal</source>
+@@ -10465,7 +10475,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
+         <source>Never</source>
+-        <translation type="unfinished"></translation>
++        <translation>أبدا</translation>
+     </message>
+ </context>
+ <context>
+@@ -10473,111 +10483,111 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="40"/>
+         <source>Screensaver</source>
+-        <translation type="unfinished"></translation>
++        <translation>شاشة التوقف</translation>
+         <extra-contents_path>/Screenlock/Screensaver</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="53"/>
+         <source>Idle time</source>
+-        <translation type="unfinished"></translation>
++        <translation>وقت الخمول</translation>
+         <extra-contents_path>/Screensaver/Idle time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="55"/>
+         <source>Screensaver program</source>
+-        <translation type="unfinished"></translation>
++        <translation>برنامج شاشة التوقف</translation>
+         <extra-contents_path>/Screensaver/Screensaver program</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="86"/>
+         <source>Screensaver source</source>
+-        <translation type="unfinished"></translation>
++        <translation>مصدر شاشة التوقف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="91"/>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="449"/>
+         <source>Select</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="112"/>
+         <source>Ordinal</source>
+-        <translation type="unfinished"></translation>
++        <translation>ترتيبي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="113"/>
+         <source>Random</source>
+-        <translation type="unfinished"></translation>
++        <translation>عشوائي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="119"/>
+         <source>Random switching</source>
+-        <translation type="unfinished"></translation>
++        <translation>التبديل العشوائي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="138"/>
+         <source>Switching time</source>
+-        <translation type="unfinished"></translation>
++        <translation>وقت التبديل</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="157"/>
+         <source>Text(up to 30 characters):</source>
+-        <translation type="unfinished"></translation>
++        <translation>النص (حتى 30 حرفا):</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="179"/>
+         <source>Text position</source>
+-        <translation type="unfinished"></translation>
++        <translation>موضع النص</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="187"/>
+         <source>Centered</source>
+-        <translation type="unfinished"></translation>
++        <translation>ممركز</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="188"/>
+         <source>Randow(Bubble text)</source>
+-        <translation type="unfinished"></translation>
++        <translation>راندو(نص فقاعة)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="209"/>
+         <source>Show rest time</source>
+-        <translation type="unfinished"></translation>
++        <translation>إظهار وقت الراحة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="218"/>
+         <source>Lock screen when screensaver boot</source>
+-        <translation type="unfinished"></translation>
++        <translation>قفل الشاشة عند تمهيد شاشة التوقف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="407"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</source>
+-        <translation type="unfinished"></translation>
++        <translation>ملفات الخلفية(* .jpg * .jpeg * .bmp * .dib * .png * .jfif * .jpe * .gif * .tif * .tiff * .wdp * .svg)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="448"/>
+         <source>select custom screensaver dir</source>
+-        <translation type="unfinished"></translation>
++        <translation>حدد شاشة التوقف المخصص dir</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="450"/>
+         <source>Position: </source>
+-        <translation type="unfinished"></translation>
++        <translation>موضع: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="451"/>
+         <source>FileName: </source>
+-        <translation type="unfinished"></translation>
++        <translation>اسم الملف: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="452"/>
+         <source>FileType: </source>
+-        <translation type="unfinished"></translation>
++        <translation>نوع الملف: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="453"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+ </context>
+ <context>
+@@ -10696,7 +10706,7 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../searchwidget.cpp" line="90"/>
+         <location filename="../../searchwidget.cpp" line="95"/>
+         <source>No search results</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا توجد نتائج بحث</translation>
+     </message>
+ </context>
+ <context>
+@@ -10972,7 +10982,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcut.cpp" line="38"/>
+         <source>Shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختصار</translation>
+     </message>
+     <message>
+         <source>Desktop</source>
+@@ -10995,13 +11005,13 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="33"/>
+         <source>System Shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختصار النظام</translation>
+         <extra-contents_path>/Shortcut/System Shortcut</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="46"/>
+         <source>Customize Shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>تخصيص الاختصار</translation>
+         <extra-contents_path>/Shortcut/Customize Shortcut</extra-contents_path>
+     </message>
+     <message>
+@@ -11012,52 +11022,52 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="171"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="260"/>
+         <source>Null</source>
+-        <translation type="unfinished"></translation>
++        <translation>صِفْر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="221"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="353"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="222"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="354"/>
+         <source>Use</source>
+-        <translation type="unfinished"></translation>
++        <translation>استخدام</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="223"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="355"/>
+         <source>Shortcut key conflict, use it?</source>
+-        <translation type="unfinished"></translation>
++        <translation>تعارض مفتاح الاختصار ، استخدمه؟</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="224"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="356"/>
+         <source>%1 occuied, using this combination will invalidate %2</source>
+-        <translation type="unfinished"></translation>
++        <translation>٪1 مشغول، سيؤدي استخدام هذه المجموعة إلى إبطال ٪2</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="247"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="386"/>
+         <source>Shortcut &quot;%1&quot; occuied, please change the key combination</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختصار &quot;٪1&quot; مشغول، يرجى تغيير مجموعة المفاتيح</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="438"/>
+         <source>Edit</source>
+-        <translation type="unfinished"></translation>
++        <translation>حرر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="439"/>
+         <source>Delete</source>
+-        <translation type="unfinished"></translation>
++        <translation>حذف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="598"/>
+         <source> or </source>
+-        <translation type="unfinished"></translation>
++        <translation> أو </translation>
+     </message>
+ </context>
+ <context>
+@@ -11089,60 +11099,60 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="11"/>
+         <source>Splice Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>لصق الشاشة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.ui" line="260"/>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="12"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.ui" line="279"/>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="13"/>
+         <source>Ok</source>
+-        <translation type="unfinished"></translation>
++        <translation>موافق</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.ui" line="118"/>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="16"/>
+         <source>Splicing Method</source>
+-        <translation type="unfinished"></translation>
++        <translation>طريقة الربط</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="91"/>
+         <source>row</source>
+-        <translation type="unfinished"></translation>
++        <translation>صف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="91"/>
+         <source>rows</source>
+-        <translation type="unfinished"></translation>
++        <translation>الصفوف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="92"/>
+         <source>column</source>
+-        <translation type="unfinished"></translation>
++        <translation>عمود</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="92"/>
+         <source>columns</source>
+-        <translation type="unfinished"></translation>
++        <translation>الاعمده</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="93"/>
+         <source>%1 %2, %3 %4</source>
+-        <translation type="unfinished"></translation>
++        <translation>%1 %2, %3 %4</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="130"/>
+         <source>Row %1, Column %2</source>
+-        <translation type="unfinished"></translation>
++        <translation>الصف ٪1، العمود ٪2</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="143"/>
+         <source>Select screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>حدد الشاشة</translation>
+     </message>
+ </context>
+ <context>
+@@ -11150,12 +11160,12 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/about/statusdialog.cpp" line="10"/>
+         <source>About</source>
+-        <translation type="unfinished"></translation>
++        <translation>عن</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/statusdialog.cpp" line="59"/>
+         <source>Activation Code</source>
+-        <translation type="unfinished"></translation>
++        <translation>رمز التفعيل</translation>
+     </message>
+ </context>
+ <context>
+@@ -11573,116 +11583,116 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="111"/>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="534"/>
+         <source>Theme</source>
+-        <translation type="unfinished"></translation>
++        <translation>موضوع</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
+         <source>Default</source>
+-        <translation type="unfinished"></translation>
++        <translation>افتراضي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
+         <source>Light</source>
+-        <translation type="unfinished"></translation>
++        <translation>ضوء</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
+         <source>Dark</source>
+-        <translation type="unfinished"></translation>
++        <translation>داكن</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="190"/>
+         <source>Auto</source>
+-        <translation type="unfinished"></translation>
++        <translation>تلقائي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="423"/>
+         <source>Corlor</source>
+-        <translation type="unfinished"></translation>
++        <translation>كورلور</translation>
+         <extra-contents_path>/Theme/Corlor</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="608"/>
+         <source>Other</source>
+-        <translation type="unfinished"></translation>
++        <translation>آخر</translation>
+         <extra-contents_path>/Theme/Other</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="613"/>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
+         <source>Set</source>
+-        <translation type="unfinished"></translation>
++        <translation>جبر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="611"/>
+         <source>Wallpaper</source>
+-        <translation type="unfinished"></translation>
++        <translation>ورق الجدران</translation>
+         <extra-contents_path>/Theme/Wallpaper</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="224"/>
+         <source>Corner</source>
+-        <translation type="unfinished"></translation>
++        <translation>ركن</translation>
+         <extra-contents_path>/Theme/Corner</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
+         <source>Right angle</source>
+-        <translation type="unfinished"></translation>
++        <translation>الزاوية اليمنى</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
+         <source>Small</source>
+-        <translation type="unfinished"></translation>
++        <translation>صغير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="232"/>
+         <source>Big</source>
+-        <translation type="unfinished"></translation>
++        <translation>كبير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="615"/>
+         <source>Beep</source>
+-        <translation type="unfinished"></translation>
++        <translation>صوت تنبيه</translation>
+         <extra-contents_path>/Theme/Beep</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="968"/>
+         <source>Blue-Crystal</source>
+-        <translation type="unfinished"></translation>
++        <translation>بلو كريستال</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="970"/>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1054"/>
+         <source>Light-Seeking</source>
+-        <translation type="unfinished"></translation>
++        <translation>البحث عن الضوء</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="972"/>
+         <source>DMZ-Black</source>
+-        <translation type="unfinished"></translation>
++        <translation>DMZ-أسود</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="974"/>
+         <source>DMZ-White</source>
+-        <translation type="unfinished"></translation>
++        <translation>DMZ-أبيض</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="976"/>
+         <source>Dark-Sense</source>
+-        <translation type="unfinished"></translation>
++        <translation>الإحساس المظلم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1050"/>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1054"/>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1060"/>
+         <source>basic</source>
+-        <translation type="unfinished"></translation>
++        <translation>أساسي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1052"/>
+         <source>Classic</source>
+-        <translation type="unfinished"></translation>
++        <translation>كلاسيكي</translation>
+     </message>
+     <message>
+         <source>Origins-Tracing</source>
+@@ -11695,57 +11705,57 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1058"/>
+         <source>hp</source>
+-        <translation type="unfinished"></translation>
++        <translation>حصان</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1060"/>
+         <source>ukui</source>
+-        <translation type="unfinished"></translation>
++        <translation>التوقيت العالمي للحياة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1056"/>
+         <source>HeYin</source>
+-        <translation type="unfinished"></translation>
++        <translation>هاي يين</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1052"/>
+         <source>classic</source>
+-        <translation type="unfinished"></translation>
++        <translation>كلاسيكي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1062"/>
+         <source>daybreakBlue</source>
+-        <translation type="unfinished"></translation>
++        <translation>فجرأزرق</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1064"/>
+         <source>jamPurple</source>
+-        <translation type="unfinished"></translation>
++        <translation>مربى بنفسجي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1066"/>
+         <source>magenta</source>
+-        <translation type="unfinished"></translation>
++        <translation>الارجواني</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1068"/>
+         <source>sunRed</source>
+-        <translation type="unfinished"></translation>
++        <translation>أحمر الشمس</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1070"/>
+         <source>sunsetOrange</source>
+-        <translation type="unfinished"></translation>
++        <translation>غروب الشمسبرتقالي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1072"/>
+         <source>dustGold</source>
+-        <translation type="unfinished"></translation>
++        <translation>غبار الذهب</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1074"/>
+         <source>polarGreen</source>
+-        <translation type="unfinished"></translation>
++        <translation>قطبي أخضر</translation>
+     </message>
+     <message>
+         <source>default</source>
+@@ -11758,13 +11768,13 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="248"/>
+         <source>Window Theme</source>
+-        <translation type="unfinished"></translation>
++        <translation>موضوع النافذة</translation>
+         <extra-contents_path>/Theme/Window Theme</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="250"/>
+         <source>Icon theme</source>
+-        <translation type="unfinished"></translation>
++        <translation>موضوع الأيقونة</translation>
+         <extra-contents_path>/Theme/Icon theme</extra-contents_path>
+     </message>
+     <message>
+@@ -11774,19 +11784,19 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="253"/>
+         <source>Cursor theme</source>
+-        <translation type="unfinished"></translation>
++        <translation>موضوع المؤشر</translation>
+         <extra-contents_path>/Theme/Cursor theme</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="215"/>
+         <source>Effect setting</source>
+-        <translation type="unfinished"></translation>
++        <translation>إعداد التأثير</translation>
+         <extra-contents_path>/Theme/Effect setting</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="222"/>
+         <source>Transparency</source>
+-        <translation type="unfinished"></translation>
++        <translation>شفافية</translation>
+         <extra-contents_path>/Theme/Transparency</extra-contents_path>
+     </message>
+     <message>
+@@ -11796,7 +11806,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="220"/>
+         <source>Performance mode</source>
+-        <translation type="unfinished"></translation>
++        <translation>وضع الأداء</translation>
+         <extra-contents_path>/Theme/Performance mode</extra-contents_path>
+     </message>
+     <message>
+@@ -11825,27 +11835,27 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="106"/>
+         <source>Tomorrow</source>
+-        <translation type="unfinished"></translation>
++        <translation>غدا</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="108"/>
+         <source>Yesterday</source>
+-        <translation type="unfinished"></translation>
++        <translation>أمس</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="110"/>
+         <source>Today</source>
+-        <translation type="unfinished"></translation>
++        <translation>اليوم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="128"/>
+         <source>%1 hours earlier than local</source>
+-        <translation type="unfinished"></translation>
++        <translation>٪1 قبل الساعة من الساعات المحلية</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="130"/>
+         <source>%1 hours later than local</source>
+-        <translation type="unfinished"></translation>
++        <translation>٪1 بعد الساعة من الساعة المحلية</translation>
+     </message>
+ </context>
+ <context>
+@@ -11853,12 +11863,12 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="35"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="37"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>أكد</translation>
+     </message>
+     <message>
+         <source>Change time zone</source>
+@@ -11867,7 +11877,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="33"/>
+         <source>Search Timezone</source>
+-        <translation type="unfinished"></translation>
++        <translation>المنطقة الزمنية للبحث</translation>
+     </message>
+     <message>
+         <source>Input what you are looking for</source>
+@@ -11876,7 +11886,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="64"/>
+         <source>To select a time zone, please click where near you on the map and select a city from the nearest city</source>
+-        <translation type="unfinished"></translation>
++        <translation>لتحديد منطقة زمنية ، يرجى النقر على المكان القريب منك على الخريطة وتحديد مدينة من أقرب مدينة</translation>
+     </message>
+     <message>
+         <source>change timezone</source>
+@@ -11889,7 +11899,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="40"/>
+         <source>Change Timezone</source>
+-        <translation type="unfinished"></translation>
++        <translation>تغيير المنطقة الزمنية</translation>
+     </message>
+ </context>
+ <context>
+@@ -12026,19 +12036,21 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/about/trialdialog.cpp" line="12"/>
+         <source>Set</source>
+-        <translation type="unfinished"></translation>
++        <translation>جبر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/trialdialog.cpp" line="37"/>
+         <source>Yinhe Kylin OS(Trail Version) Disclaimer</source>
+-        <translation type="unfinished"></translation>
++        <translation>Yinhe Kylin OS (إصدار المدرب) إخلاء المسؤولية</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/trialdialog.cpp" line="46"/>
+         <source>Dear customer:
+        Thank you for trying Yinhe Kylin OS(trail version)! This version is free for users who only try out, no commercial purpose is permitted. The trail period lasts one year and it starts from the ex-warehouse time of the OS. No after-sales service is provided during the trail stage. If any security problems occurred when user put important files or do any commercial usage in system, all consequences are taken by users. Kylin software Co., Ltd. take no legal risk in trail version.
+        During trail stage,if you want any technology surpport or activate the system, please buy“Yinhe Kylin Operating System”official version or authorization by contacting 400-089-1870.</source>
+-        <translation type="unfinished"></translation>
++        <translation>عزيزي العميل:
++       شكرا لك على تجربة Yinhe Kylin OS (إصدار درب)! هذا الإصدار مجاني للمستخدمين الذين يجربون فقط ، ولا يسمح بأي غرض تجاري. تستمر فترة المسار لمدة عام واحد وتبدأ من وقت المستودع السابق لنظام التشغيل. في حالة حدوث أي مشاكل أمنية عندما يضع المستخدم ملفات مهمة أو يقوم بأي استخدام تجاري في النظام ، يتحمل المستخدمون جميع العواقب. شركة Kylin Software Co.، Ltd. لا تخاطر بأي مخاطر قانونية في إصدار المسار
++       خلال مرحلة المسار ، إذا كنت تريد أي دعم تكنولوجي أو تنشيط النظام ، فيرجى شراء &quot;نظام التشغيل Yinhe Kylin&quot; الإصدار الرسمي أو التفويض عن طريق الاتصال بالرقم 400-089-1870.</translation>
+     </message>
+     <message>
+         <source>Dear customer:
+@@ -12051,7 +12063,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/about/trialdialog.cpp" line="60"/>
+         <source>Kylin software Co., Ltd.</source>
+-        <translation type="unfinished"></translation>
++        <translation>شركة Kylin للبرمجيات المحدودة</translation>
+     </message>
+     <message>
+         <source>www.Kylinos.cn</source>
+@@ -12064,7 +12076,7 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../ukccabout.cpp" line="34"/>
+         <location filename="../../ukccabout.cpp" line="61"/>
+         <source>Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>اعدادات</translation>
+     </message>
+     <message>
+         <source>UKCC</source>
+@@ -12073,12 +12085,12 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../ukccabout.cpp" line="66"/>
+         <source>Version: </source>
+-        <translation type="unfinished"></translation>
++        <translation>الإصدار: </translation>
+     </message>
+     <message>
+         <location filename="../../ukccabout.cpp" line="76"/>
+         <source>Service and Support:</source>
+-        <translation type="unfinished"></translation>
++        <translation>الخدمة والدعم الفنى:</translation>
+     </message>
+     <message>
+         <source>Developer</source>
+@@ -12337,48 +12349,48 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="91"/>
+         <source>resolution</source>
+-        <translation type="unfinished"></translation>
++        <translation>دقة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="118"/>
+         <source>orientation</source>
+-        <translation type="unfinished"></translation>
++        <translation>اتجاه</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="122"/>
+         <source>arrow-up</source>
+-        <translation type="unfinished"></translation>
++        <translation>السهم لأعلى</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="123"/>
+         <source>90° arrow-right</source>
+-        <translation type="unfinished"></translation>
++        <translation>90 درجة سهم لليمين</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="125"/>
+         <source>arrow-down</source>
+-        <translation type="unfinished"></translation>
++        <translation>السهم لأسفل</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="124"/>
+         <source>90° arrow-left</source>
+-        <translation type="unfinished"></translation>
++        <translation>90 درجة سهم يسار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="148"/>
+         <source>auto rotation</source>
+-        <translation type="unfinished"></translation>
++        <translation>الدوران التلقائي</translation>
+         <extra-contents_path>/Display/auto rotation</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="200"/>
+         <source>frequency</source>
+-        <translation type="unfinished"></translation>
++        <translation>تردد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="243"/>
+         <source>screen zoom</source>
+-        <translation type="unfinished"></translation>
++        <translation>تكبير الشاشة</translation>
+         <extra-contents_path>/Display/screen zoom</extra-contents_path>
+     </message>
+     <message>
+@@ -12388,7 +12400,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="406"/>
+         <source>auto</source>
+-        <translation type="unfinished"></translation>
++        <translation>تلقائي</translation>
+     </message>
+ </context>
+ <context>
+@@ -12476,12 +12488,12 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1088"/>
+         <source>root</source>
+-        <translation type="unfinished"></translation>
++        <translation>جذر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1056"/>
+         <source>Hint</source>
+-        <translation type="unfinished"></translation>
++        <translation>تلميح</translation>
+     </message>
+     <message>
+         <source>Modify the account type need to logout to take effect, whether to logout?</source>
+@@ -12490,32 +12502,32 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="956"/>
+         <source>The account type of “%1” has been modified, will take effect after logout, whether to logout?</source>
+-        <translation type="unfinished"></translation>
++        <translation>تم تعديل نوع الحساب &quot;٪1&quot; ، هل سيصبح ساري المفعول بعد تسجيل الخروج ، سواء لتسجيل الخروج؟</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="957"/>
+         <source>logout later</source>
+-        <translation type="unfinished"></translation>
++        <translation>تسجيل الخروج لاحقا</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="958"/>
+         <source>logout now</source>
+-        <translation type="unfinished"></translation>
++        <translation>تسجيل الخروج الآن</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1057"/>
+         <source>The system only allows one user to log in automatically.After it is turned on, the automatic login of other users will be turned off.Is it turned on?</source>
+-        <translation type="unfinished"></translation>
++        <translation>يسمح النظام لمستخدم واحد فقط بتسجيل الدخول تلقائيا. بعد تشغيله ، سيتم إيقاف تسجيل الدخول التلقائي للمستخدمين الآخرين. هل تم تشغيله؟</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1060"/>
+         <source>Trun on</source>
+-        <translation type="unfinished"></translation>
++        <translation>ترون في</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1061"/>
+         <source>Close on</source>
+-        <translation type="unfinished"></translation>
++        <translation>قريب</translation>
+     </message>
+     <message>
+         <source>Add biometric feature</source>
+@@ -12532,12 +12544,12 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1084"/>
+         <source>Standard</source>
+-        <translation type="unfinished"></translation>
++        <translation>معيار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1086"/>
+         <source>Admin</source>
+-        <translation type="unfinished"></translation>
++        <translation>المشرف</translation>
+     </message>
+     <message>
+         <source>Del</source>
+@@ -12546,60 +12558,60 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="161"/>
+         <source>CurrentUser</source>
+-        <translation type="unfinished"></translation>
++        <translation>المستخدم الحالي</translation>
+         <extra-contents_path>/Userinfo/CurrentUser</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="167"/>
+         <source>OthersUser</source>
+-        <translation type="unfinished"></translation>
++        <translation>مستخدم آخرون</translation>
+         <extra-contents_path>/Userinfo/OthersUser</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="169"/>
+         <source>Add</source>
+-        <translation type="unfinished"></translation>
++        <translation>جمع</translation>
+         <extra-contents_path>/Userinfo/Add</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="309"/>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="197"/>
+         <source>Password</source>
+-        <translation type="unfinished"></translation>
++        <translation>شعار</translation>
+         <extra-contents_path>/Userinfo/Password</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="209"/>
+         <source>Groups</source>
+-        <translation type="unfinished"></translation>
++        <translation>المجموعات</translation>
+         <extra-contents_path>/Userinfo/Groups</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="261"/>
+         <source>AutoLoginOnBoot</source>
+-        <translation type="unfinished"></translation>
++        <translation>AutoLoginOnBoot</translation>
+         <extra-contents_path>/Userinfo/AutoLoginOnBoot</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="256"/>
+         <source>LoginWithoutPwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>تسجيل الدخول: بدونPwd</translation>
+         <extra-contents_path>/Userinfo/LoginWithoutPwd</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="570"/>
+         <source>Warning</source>
+-        <translation type="unfinished"></translation>
++        <translation>تحذير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="570"/>
+         <source>The user is logged in, please delete the user after logging out</source>
+-        <translation type="unfinished"></translation>
++        <translation>المستخدم مسجل الدخول ، يرجى حذف المستخدم بعد تسجيل الخروج</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="41"/>
+         <source>Current User</source>
+-        <translation type="unfinished"></translation>
++        <translation>المستخدم الحالي</translation>
+     </message>
+     <message>
+         <source>Change pwd</source>
+@@ -12626,7 +12638,7 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="331"/>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="203"/>
+         <source>Type</source>
+-        <translation type="unfinished"></translation>
++        <translation>نوع</translation>
+         <extra-contents_path>/Userinfo/Type</extra-contents_path>
+     </message>
+     <message>
+@@ -12636,17 +12648,17 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="353"/>
+         <source>Group</source>
+-        <translation type="unfinished"></translation>
++        <translation>مجموعة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="422"/>
+         <source>Login no passwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>تسجيل الدخول بدون passwd</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="500"/>
+         <source>Automatic login at boot</source>
+-        <translation type="unfinished"></translation>
++        <translation>تسجيل الدخول التلقائي عند التمهيد</translation>
+     </message>
+     <message>
+         <source>Currently in Live mode, please create a new user and log out</source>
+@@ -12675,7 +12687,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="568"/>
+         <source>Other Users</source>
+-        <translation type="unfinished"></translation>
++        <translation>مستخدمون آخرون</translation>
+     </message>
+     <message>
+         <source>Add new user</source>
+@@ -12760,27 +12772,27 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="32"/>
+         <source>Password</source>
+-        <translation type="unfinished"></translation>
++        <translation>شعار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="36"/>
+         <source>Type</source>
+-        <translation type="unfinished"></translation>
++        <translation>نوع</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="40"/>
+         <source>Delete</source>
+-        <translation type="unfinished"></translation>
++        <translation>حذف</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="205"/>
+         <source>Standard</source>
+-        <translation type="unfinished"></translation>
++        <translation>معيار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="207"/>
+         <source>Admin</source>
+-        <translation type="unfinished"></translation>
++        <translation>المشرف</translation>
+     </message>
+ </context>
+ <context>
+@@ -12788,7 +12800,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/vino/vino.cpp" line="28"/>
+         <source>Vino</source>
+-        <translation type="unfinished"></translation>
++        <translation>الخمر</translation>
+     </message>
+ </context>
+ <context>
+@@ -12796,7 +12808,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/vino/vinoui.cpp" line="15"/>
+         <source>Remote Desktop</source>
+-        <translation type="unfinished"></translation>
++        <translation>سطح المكتب البعيد</translation>
+     </message>
+     <message>
+         <source>Allow others to view your desktop</source>
+@@ -12805,42 +12817,42 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/vino/vinoui.cpp" line="17"/>
+         <source>Connect to your desktop remotely</source>
+-        <translation type="unfinished"></translation>
++        <translation>الاتصال بسطح المكتب عن بعد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/vinoui.cpp" line="20"/>
+         <source>Allow others to connect to your desktop remotely using RDP</source>
+-        <translation type="unfinished"></translation>
++        <translation>السماح للآخرين بالاتصال بسطح المكتب عن بعد باستخدام RDP</translation>
+         <extra-contents_path>/Vino/Allow others to connect to your desktop remotely using RDP</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/vinoui.cpp" line="23"/>
+         <source>Allow others to connect to your desktop remotely using VNC</source>
+-        <translation type="unfinished"></translation>
++        <translation>السماح للآخرين بالاتصال بسطح المكتب الخاص بك عن بعد باستخدام VNC</translation>
+         <extra-contents_path>/Vino/Allow others to connect to your desktop remotely using VNC</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/vinoui.cpp" line="26"/>
+         <source>Allow connection to control screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>السماح بالاتصال بشاشة التحكم</translation>
+         <extra-contents_path>/Vino/Allow connection to control screen</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/vinoui.cpp" line="28"/>
+         <source>You must confirm every visit for this machine</source>
+-        <translation type="unfinished"></translation>
++        <translation>يجب عليك تأكيد كل زيارة لهذا الجهاز</translation>
+         <extra-contents_path>/Vino/You must confirm every visit for this machine</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/vinoui.cpp" line="30"/>
+         <source>Require user to enter this password: </source>
+-        <translation type="unfinished"></translation>
++        <translation>مطالبة المستخدم بإدخال كلمة المرور هذه: </translation>
+         <extra-contents_path>/Vino/Require user to enter this password:</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/vinoui.cpp" line="39"/>
+         <source>Edit</source>
+-        <translation type="unfinished"></translation>
++        <translation>حرر</translation>
+     </message>
+ </context>
+ <context>
+@@ -12913,19 +12925,19 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="31"/>
+         <source>Background</source>
+-        <translation type="unfinished"></translation>
++        <translation>خلفية</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="156"/>
+         <source>picture</source>
+-        <translation type="unfinished"></translation>
++        <translation>رسم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="153"/>
+         <source>color</source>
+-        <translation type="unfinished"></translation>
++        <translation>لون</translation>
+     </message>
+     <message>
+         <source>Add custom shortcut</source>
+@@ -12939,42 +12951,42 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="167"/>
+         <source>wallpaper</source>
+-        <translation type="unfinished"></translation>
++        <translation>ورق الجدران</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="169"/>
+         <source>centered</source>
+-        <translation type="unfinished"></translation>
++        <translation>ممركز</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="165"/>
+         <source>scaled</source>
+-        <translation type="unfinished"></translation>
++        <translation>تحجيم</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="171"/>
+         <source>stretched</source>
+-        <translation type="unfinished"></translation>
++        <translation>امتدت</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="173"/>
+         <source>zoom</source>
+-        <translation type="unfinished"></translation>
++        <translation>التكبير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="175"/>
+         <source>spanned</source>
+-        <translation type="unfinished"></translation>
++        <translation>موزعه</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="219"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
+-        <translation type="unfinished"></translation>
++        <translation>ملفات الخلفيات(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</translation>
+     </message>
+     <message>
+         <source>allFiles(*.*)</source>
+@@ -12983,32 +12995,32 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="259"/>
+         <source>select custom wallpaper file</source>
+-        <translation type="unfinished"></translation>
++        <translation>حدد ملف خلفية مخصص</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="260"/>
+         <source>Select</source>
+-        <translation type="unfinished"></translation>
++        <translation>اختار</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="261"/>
+         <source>Position: </source>
+-        <translation type="unfinished"></translation>
++        <translation>موضع: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="262"/>
+         <source>FileName: </source>
+-        <translation type="unfinished"></translation>
++        <translation>اسم الملف: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="263"/>
+         <source>FileType: </source>
+-        <translation type="unfinished"></translation>
++        <translation>نوع الملف: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="264"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+ </context>
+ <context>
+@@ -13016,37 +13028,37 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="28"/>
+         <source>Background</source>
+-        <translation type="unfinished"></translation>
++        <translation>خلفية</translation>
+         <extra-contents_path>/Wallpaper/Background</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="30"/>
+         <source>Type</source>
+-        <translation type="unfinished"></translation>
++        <translation>نوع</translation>
+         <extra-contents_path>/Wallpaper/Type</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="66"/>
+         <source>Desktop Background</source>
+-        <translation type="unfinished"></translation>
++        <translation>خلفية سطح المكتب</translation>
+         <extra-contents_path>/Wallpaper/Desktop Background</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="93"/>
+         <source>Local Pictures</source>
+-        <translation type="unfinished"></translation>
++        <translation>صور محلية</translation>
+         <extra-contents_path>/Wallpaper/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="95"/>
+         <source>Online Pictures</source>
+-        <translation type="unfinished"></translation>
++        <translation>صور على الانترنت</translation>
+         <extra-contents_path>/Wallpaper/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="97"/>
+         <source>Reset To Default</source>
+-        <translation type="unfinished"></translation>
++        <translation>إعادة التعيين إلى الوضع الافتراضي</translation>
+         <extra-contents_path>/Wallpaper/Reset To Default</extra-contents_path>
+     </message>
+ </context>
+@@ -13072,7 +13084,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="266"/>
+         <source>Night Mode</source>
+-        <translation type="unfinished"></translation>
++        <translation>الوضع الليلي</translation>
+         <extra-contents_path>/Display/Night Mode</extra-contents_path>
+     </message>
+     <message>
+@@ -13080,46 +13092,46 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1986"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2012"/>
+         <source>Open</source>
+-        <translation type="unfinished"></translation>
++        <translation>مفتوح</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="277"/>
+         <source>When turned on, it will reduce the blue light of the screen.</source>
+-        <translation type="unfinished"></translation>
++        <translation>عند تشغيله ، سيقلل الضوء الأزرق للشاشة.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="282"/>
+         <source>Color Temperature And Eye Care</source>
+-        <translation type="unfinished"></translation>
++        <translation>درجة حرارة اللون والعناية بالعيون</translation>
+         <extra-contents_path>/Display/Color Temperature And Eye Care</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="290"/>
+         <source>Time</source>
+-        <translation type="unfinished"></translation>
++        <translation>الوقت</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="300"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2072"/>
+         <source>Custom Time</source>
+-        <translation type="unfinished"></translation>
++        <translation>الوقت المخصص</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="311"/>
+         <source>to</source>
+-        <translation type="unfinished"></translation>
++        <translation>ل</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="284"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="329"/>
+         <source>Color Temperature</source>
+-        <translation type="unfinished"></translation>
++        <translation>درجة حرارة اللون</translation>
+         <extra-contents_path>/Display/Color Temperature</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="271"/>
+         <source>When turned on, it can reduce blue light to prevent eye, the screen will turn yellow.</source>
+-        <translation type="unfinished"></translation>
++        <translation>عند تشغيله ، يمكن أن يقلل الضوء الأزرق لمنع العين ، وستتحول الشاشة إلى اللون الأصفر.</translation>
+     </message>
+     <message>
+         <source>Night Mode And Eye Care</source>
+@@ -13128,54 +13140,54 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="331"/>
+         <source>Warmer</source>
+-        <translation type="unfinished"></translation>
++        <translation>أدفأ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="332"/>
+         <source>Colder</source>
+-        <translation type="unfinished"></translation>
++        <translation>أبرد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="610"/>
+         <source>Multi-screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>شاشات متعددة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="615"/>
+         <source>First Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>الشاشة الأولى</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="619"/>
+         <source>Clone Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>شاشة استنساخ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="621"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2638"/>
+         <source>Splice Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>لصق الشاشة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1985"/>
+         <source>Turning on &apos;Eye Protection Mode&apos; will turn off &apos;Color Temperature&apos;. Continue turning it on?</source>
+-        <translation type="unfinished"></translation>
++        <translation>سيؤدي تشغيل &quot;وضع حماية العين&quot; إلى إيقاف تشغيل &quot;درجة حرارة اللون&quot;. استمر في تشغيله؟</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1987"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2013"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2011"/>
+         <source>Turning on &apos;Color Temperature&apos; will turn off &apos;Eye Protection Mode&apos;. Continue turning it on?</source>
+-        <translation type="unfinished"></translation>
++        <translation>سيؤدي تشغيل &quot;درجة حرارة اللون&quot; إلى إيقاف تشغيل &quot;وضع حماية العين&quot;. استمر في تشغيله؟</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2744"/>
+         <source>Auto Brightness</source>
+-        <translation type="unfinished"></translation>
++        <translation>سطوع تلقائي</translation>
+         <extra-contents_path>/Display/Auto Brightness</extra-contents_path>
+     </message>
+     <message>
+@@ -13185,48 +13197,48 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="792"/>
+         <source>scale</source>
+-        <translation type="unfinished"></translation>
++        <translation>مِيزَان</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="797"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after 14 seconds&lt;/font&gt;</source>
+-        <translation type="unfinished"></translation>
++        <translation>تم تعديل الشاشة ٪1 ، سواء لحفظها ؟ &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt; ستتم استعادة الإعدادات بعد 14 ثانية &lt;/font&gt;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="808"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after %2 seconds&lt;/font&gt;</source>
+-        <translation type="unfinished"></translation>
++        <translation>تم تعديل الشاشة ٪1 ، سواء لحفظها ؟ &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;ستتم استعادة الإعدادات بعد ٪2 ثانية &lt;/font&gt;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1022"/>
+         <source>The zoom has been modified, it will take effect after you log off</source>
+-        <translation type="unfinished"></translation>
++        <translation>تم تعديل التكبير/التصغير ، وسيصبح ساري المفعول بعد تسجيل الخروج</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1041"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1051"/>
+         <source>(Effective after logout)</source>
+-        <translation type="unfinished"></translation>
++        <translation>(ساري المفعول بعد تسجيل الخروج)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2701"/>
+         <source>Splicing Method</source>
+-        <translation type="unfinished"></translation>
++        <translation>طريقة الربط</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2704"/>
+         <source>Change</source>
+-        <translation type="unfinished"></translation>
++        <translation>تغيير</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2773"/>
+         <source>as main</source>
+-        <translation type="unfinished"></translation>
++        <translation>كرئيسي</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2794"/>
+         <source>open monitor</source>
+-        <translation type="unfinished"></translation>
++        <translation>شاشة مفتوحة</translation>
+     </message>
+     <message>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after 14 seconds&lt;/font&gt;</source>
+@@ -13240,28 +13252,28 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2252"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2258"/>
+         <source>Follow the sunrise and sunset</source>
+-        <translation type="unfinished"></translation>
++        <translation>تابع شروق الشمس وغروبها</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="618"/>
+         <source>Extend Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>توسيع الشاشة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="271"/>
+         <source>Eye Protection Mode</source>
+-        <translation type="unfinished"></translation>
++        <translation>وضع حماية العين</translation>
+         <extra-contents_path>/Display/Eye protection mode</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="616"/>
+         <source>Vice Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>شاشة نائب</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2772"/>
+         <source>monitor</source>
+-        <translation type="unfinished"></translation>
++        <translation>مراقب</translation>
+     </message>
+     <message>
+         <source>Information</source>
+@@ -13274,17 +13286,17 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="783"/>
+         <source>resolution</source>
+-        <translation type="unfinished"></translation>
++        <translation>دقة</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="786"/>
+         <source>orientation</source>
+-        <translation type="unfinished"></translation>
++        <translation>اتجاه</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="789"/>
+         <source>frequency</source>
+-        <translation type="unfinished"></translation>
++        <translation>تردد</translation>
+     </message>
+     <message>
+         <source>Hint</source>
+@@ -13298,12 +13310,12 @@ the settings will be saved after 14 seconds</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="777"/>
+         <source>Save</source>
+-        <translation type="unfinished"></translation>
++        <translation>أنقذ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="776"/>
+         <source>Not Save</source>
+-        <translation type="unfinished"></translation>
++        <translation>لا يحفظ</translation>
+     </message>
+     <message>
+         <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
+@@ -13317,17 +13329,17 @@ the settings will be saved after %1 seconds</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1023"/>
+         <source>Log out now</source>
+-        <translation type="unfinished"></translation>
++        <translation>تسجيل الخروج الآن</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1024"/>
+         <source>Later</source>
+-        <translation type="unfinished"></translation>
++        <translation>فيما بعد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2072"/>
+         <source>All Day</source>
+-        <translation type="unfinished"></translation>
++        <translation>طوال اليوم</translation>
+     </message>
+     <message>
+         <source>Follow the sunrise and sunset(17:55-06:23)</source>
+@@ -13337,7 +13349,7 @@ the settings will be saved after %1 seconds</source>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2283"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2289"/>
+         <source>Brightness</source>
+-        <translation type="unfinished"></translation>
++        <translation>وضح</translation>
+         <extra-contents_path>/Display/Brightness</extra-contents_path>
+     </message>
+     <message>
+@@ -13363,7 +13375,7 @@ If something goes wrong, the settings will be restored after 9 seconds</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2781"/>
+         <source>screen zoom</source>
+-        <translation type="unfinished"></translation>
++        <translation>تكبير الشاشة</translation>
+     </message>
+     <message>
+         <source>Mirror Display</source>
+@@ -13405,14 +13417,14 @@ If something goes wrong, the settings will be restored after %1 seconds</source>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1488"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1788"/>
+         <source>please insure at least one output!</source>
+-        <translation type="unfinished"></translation>
++        <translation>يرجى ضمان إخراج واحد على الأقل!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1488"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1495"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1788"/>
+         <source>Warning</source>
+-        <translation type="unfinished"></translation>
++        <translation>تحذير</translation>
+     </message>
+     <message>
+         <source>The screen resolution has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after 14 seconds&lt;/font&gt;</source>
+@@ -13434,7 +13446,8 @@ If something goes wrong, the settings will be restored after %1 seconds</source>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1496"/>
+         <source>Sorry, your configuration could not be applied.
+ Common reasons are that the overall screen size is too big, or you enabled more displays than supported by your GPU.</source>
+-        <translation type="unfinished"></translation>
++        <translation>عذرا، تعذر تطبيق التكوين الخاص بك.
++الأسباب الشائعة هي أن الحجم الكلي للشاشة كبير جدا ، أو أنك قمت بتمكين شاشات عرض أكثر مما تدعمه وحدة معالجة الرسومات الخاصة بك.</translation>
+     </message>
+     <message>
+         <source>@title:window</source>
+@@ -13620,73 +13633,73 @@ Common reasons are that the overall screen size is too big, or you enabled more
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="33"/>
+         <source>user group</source>
+-        <translation type="unfinished"></translation>
++        <translation>مجموعة المستخدمين</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="122"/>
+         <source>Group:</source>
+-        <translation type="unfinished"></translation>
++        <translation>مجموعة:</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="135"/>
+         <source>GID:</source>
+-        <translation type="unfinished"></translation>
++        <translation>دائرة المخابرات العامة:</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="149"/>
+         <source>GNum:</source>
+-        <translation type="unfinished"></translation>
++        <translation>نوم:</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="193"/>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="610"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>إلغاء الأمر</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="196"/>
+         <source>Save</source>
+-        <translation type="unfinished"></translation>
++        <translation>أنقذ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="611"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>أكد</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="565"/>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="573"/>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="649"/>
+         <source>Tips</source>
+-        <translation type="unfinished"></translation>
++        <translation>النصائح</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="565"/>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="649"/>
+         <source>Invalid Id!</source>
+-        <translation type="unfinished"></translation>
++        <translation>بطاقة هوية غير صالحة!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="568"/>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="576"/>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="652"/>
+         <source>OK</source>
+-        <translation type="unfinished"></translation>
++        <translation>موافق</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="573"/>
+         <source>Invalid Group Name!</source>
+-        <translation type="unfinished"></translation>
++        <translation>اسم المجموعة غير صالح!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="608"/>
+         <source>Whether delete the group: “%1” ?</source>
+-        <translation type="unfinished"></translation>
++        <translation>ما إذا كانت تحذف المجموعة: &quot;٪1&quot; ؟</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="609"/>
+         <source>which will make some file components in the file system invalid!</source>
+-        <translation type="unfinished"></translation>
++        <translation>مما سيجعل بعض مكونات الملفات في نظام الملفات غير صالحة!</translation>
+     </message>
+ </context>
+ <context>
+diff --git a/shell/res/i18n/vi.ts b/shell/res/i18n/vi.ts
+index 13f9f78..c3a7096 100644
+--- a/shell/res/i18n/vi.ts
++++ b/shell/res/i18n/vi.ts
+@@ -22,12 +22,12 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="547"/>
+         <source>Status</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tình trạng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="224"/>
+         <source>DateRes</source>
+-        <translation type="unfinished"></translation>
++        <translation>DateRes</translation>
+     </message>
+     <message>
+         <source>Wechat code scanning obtains HP professional technical support</source>
+@@ -52,7 +52,7 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="56"/>
+         <source>About and Support</source>
+-        <translation type="unfinished"></translation>
++        <translation>Giới thiệu và Hỗ trợ</translation>
+     </message>
+     <message>
+         <source>InterVersion</source>
+@@ -101,19 +101,19 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="229"/>
+         <source>Trial expiration time</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thời gian hết hạn dùng thử</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="457"/>
+         <location filename="../../../plugins/system/about/about.cpp" line="553"/>
+         <source>expired</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hết hạn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="244"/>
+         <location filename="../../../plugins/system/about/about.cpp" line="458"/>
+         <source>Extend</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mở rộng</translation>
+     </message>
+     <message>
+         <source>Installed Date</source>
+@@ -138,27 +138,27 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="279"/>
+         <source>Kylin Linux Desktop (Touch Screen) V10 (SP1)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Máy tính để bàn Kylin Linux (Màn hình cảm ứng) V10 (SP1)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="281"/>
+         <source>Kylin Linux Desktop (Tablet) V10 (SP1)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Máy tính để bàn Kylin Linux (Máy tính bảng) V10 (SP1)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="518"/>
+         <source>The system needs to be restarted to set the HostName, whether to reboot</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hệ thống cần được khởi động lại để đặt HostName, có khởi động lại hay không</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="519"/>
+         <source>Reboot Now</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khởi động lại ngay</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="520"/>
+         <source>Reboot Later</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khởi động lại sau</translation>
+     </message>
+     <message>
+         <source>Technical service has expired</source>
+@@ -172,7 +172,7 @@
+         <location filename="../../../plugins/system/about/about.cpp" line="401"/>
+         <location filename="../../../plugins/system/about/about.cpp" line="410"/>
+         <source>avaliable</source>
+-        <translation type="unfinished"></translation>
++        <translation>có sẵn</translation>
+     </message>
+     <message>
+         <source>version</source>
+@@ -189,12 +189,12 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="545"/>
+         <source>Version</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phiên bản</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="287"/>
+         <source>Kylin Linux Desktop V10 (SP1)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Máy tính để bàn Kylin Linux V10 (SP1)</translation>
+     </message>
+     <message>
+         <source>Copyright @ 2009-2021 KylinSoft. All rights reserved.</source>
+@@ -222,7 +222,7 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="408"/>
+         <source>Disk</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đĩa</translation>
+     </message>
+     <message>
+         <source>Desktop</source>
+@@ -245,7 +245,7 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="549"/>
+         <source>Serial</source>
+-        <translation type="unfinished"></translation>
++        <translation>Serial</translation>
+     </message>
+     <message>
+         <source>Protocol</source>
+@@ -259,7 +259,7 @@
+         <location filename="../../../plugins/system/about/about.cpp" line="231"/>
+         <location filename="../../../plugins/system/about/about.cpp" line="235"/>
+         <source>Active</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hoạt động</translation>
+     </message>
+     <message>
+         <source>Trial version disclaimer</source>
+@@ -276,7 +276,7 @@
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="58"/>
+         <source>About</source>
+-        <translation type="unfinished"></translation>
++        <translation>Về</translation>
+     </message>
+     <message>
+         <source>The system has expired. The expiration time is:</source>
+@@ -294,12 +294,12 @@
+         <location filename="../../../plugins/system/about/about.cpp" line="227"/>
+         <location filename="../../../plugins/system/about/about.cpp" line="233"/>
+         <source>Inactivated</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bất hoạt</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="243"/>
+         <source>Activated</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kích hoạt</translation>
+     </message>
+     <message>
+         <source>UNKNOWN</source>
+@@ -343,7 +343,7 @@
+     <message>
+         <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="233"/>
+         <source>avaliable</source>
+-        <translation type="unfinished"></translation>
++        <translation>có sẵn</translation>
+     </message>
+ </context>
+ <context>
+@@ -351,97 +351,97 @@
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="32"/>
+         <source>System Summary</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tóm tắt hệ thống</translation>
+         <extra-contents_path>/About/System Summary</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="35"/>
+         <source>Privacy and agreement</source>
+-        <translation type="unfinished"></translation>
++        <translation>Quyền riêng tư và thỏa thuận</translation>
+         <extra-contents_path>/About/Privacy and agreement</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="37"/>
+         <source>Support</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hỗ trợ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="51"/>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="381"/>
+         <source>Version</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phiên bản</translation>
+         <extra-contents_path>/About/version</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="56"/>
+         <source>Version Number</source>
+-        <translation type="unfinished"></translation>
++        <translation>Số phiên bản</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="61"/>
+         <source>Patch Version</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phiên bản vá</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="66"/>
+         <source>Installed Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ngày cài đặt</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="71"/>
+         <source>Upgrade Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ngày nâng cấp</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="78"/>
+         <source>HostName</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên máy chủ</translation>
+         <extra-contents_path>/About/HostName</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="90"/>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="383"/>
+         <source>Kernel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhân</translation>
+         <extra-contents_path>/About/Kernel</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="95"/>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="385"/>
+         <source>CPU</source>
+-        <translation type="unfinished"></translation>
++        <translation>CPU</translation>
+         <extra-contents_path>/About/CPU</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="100"/>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="387"/>
+         <source>Memory</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trí nhớ</translation>
+         <extra-contents_path>/About/Memory</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="105"/>
+         <source>Disk</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đĩa</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="110"/>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="389"/>
+         <source>Desktop</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bàn làm việc</translation>
+         <extra-contents_path>/About/Desktop</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="115"/>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="391"/>
+         <source>User</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người dùng</translation>
+         <extra-contents_path>/About/User</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="123"/>
+         <source>Copyright ©%1 %2. All rights reserved.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bản quyền %© 1 %2. Đã đăng ký Bản quyền.</translation>
+     </message>
+     <message>
+         <source>Copyright ©2022 %1. All rights reserved.</source>
+@@ -454,12 +454,12 @@
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="172"/>
+         <source>openKylin</source>
+-        <translation type="unfinished"></translation>
++        <translation>mởKylin</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="169"/>
+         <source>KylinSoft</source>
+-        <translation type="unfinished"></translation>
++        <translation>KylinSoft</translation>
+     </message>
+     <message>
+         <source>Copyright © 2020 KylinSoft. All rights reserved.</source>
+@@ -468,67 +468,67 @@
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="235"/>
+         <source>Wechat code scanning obtains HP professional technical support</source>
+-        <translation type="unfinished"></translation>
++        <translation>Quét mã Wechat nhận được hỗ trợ kỹ thuật chuyên nghiệp của HP</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="236"/>
+         <source>See more about Kylin Tianqi edu platform</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xem thêm về Kylin Tianqi edu platform</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="256"/>
+         <source>Learn more HP user manual&gt;&gt;</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tìm hiểu thêm Hướng dẫn sử dụng HP&gt;&gt;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="261"/>
+         <source>See user manual&gt;&gt;</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xem hướng dẫn sử dụng&gt;&gt;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="339"/>
+         <source>Send optional diagnostic data</source>
+-        <translation type="unfinished"></translation>
++        <translation>Gửi dữ liệu chẩn đoán tùy chọn</translation>
+         <extra-contents_path>/About/Send optional diagnostic data</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="340"/>
+         <source>By sending us diagnostic data, improve the system experience and solve your problems faster</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bằng cách gửi cho chúng tôi dữ liệu chẩn đoán, cải thiện trải nghiệm hệ thống và giải quyết vấn đề của bạn nhanh hơn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="363"/>
+         <source>&lt;&lt;Protocol&gt;&gt;</source>
+-        <translation type="unfinished"></translation>
++        <translation>&lt;&lt;Protocol&gt;&gt;</translation>
+         <extra-contents_path>/About/&lt;&lt;Protocol&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="364"/>
+         <source>and</source>
+-        <translation type="unfinished"></translation>
++        <translation>và</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="366"/>
+         <source>&lt;&lt;Privacy&gt;&gt;</source>
+-        <translation type="unfinished"></translation>
++        <translation>&lt;&lt;Privacy&gt;&gt;</translation>
+         <extra-contents_path>/About/&lt;&lt;Privacy&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="393"/>
+         <source>Status</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tình trạng</translation>
+         <extra-contents_path>/About/Status</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="395"/>
+         <source>Active</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hoạt động</translation>
+         <extra-contents_path>/About/Active</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/aboutui.cpp" line="397"/>
+         <source>Serial</source>
+-        <translation type="unfinished"></translation>
++        <translation>Serial</translation>
+         <extra-contents_path>/About/Serial</extra-contents_path>
+     </message>
+ </context>
+@@ -619,7 +619,7 @@
+     <message>
+         <location filename="../../../libukcc/widgets/AddBtn/addbtn.cpp" line="27"/>
+         <source>Add</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thêm</translation>
+     </message>
+ </context>
+ <context>
+@@ -627,7 +627,7 @@
+     <message>
+         <location filename="../../../libukcc/widgets/SettingWidget/addbutton.cpp" line="25"/>
+         <source>Add</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thêm</translation>
+     </message>
+ </context>
+ <context>
+@@ -640,39 +640,39 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="38"/>
+         <source>Select the input method to add</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn phương thức nhập liệu để thêm</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="94"/>
+         <source>No</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.ui" line="113"/>
+         <source>Yes</source>
+-        <translation type="unfinished"></translation>
++        <translation>Có</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="5"/>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="6"/>
+         <source>keyboard</source>
+-        <translation type="unfinished"></translation>
++        <translation>bàn phím</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="5"/>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="6"/>
+         <source>Tibetan</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tây tạng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="7"/>
+         <source>With ASCII numbers</source>
+-        <translation type="unfinished"></translation>
++        <translation>Với số ASCII</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addinputmethoddialog.cpp" line="15"/>
+         <source>Input Method</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phương thức nhập liệu</translation>
+     </message>
+ </context>
+ <context>
+@@ -685,22 +685,22 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/addlanguagedialog.ui" line="164"/>
+         <source>Yes</source>
+-        <translation type="unfinished"></translation>
++        <translation>Có</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addlanguagedialog.ui" line="145"/>
+         <source>No</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addlanguagedialog.cpp" line="13"/>
+         <source>Add Language</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thêm ngôn ngữ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/addlanguagedialog.cpp" line="14"/>
+         <source>Search</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tìm kiếm</translation>
+     </message>
+ </context>
+ <context>
+@@ -720,17 +720,17 @@
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="94"/>
+         <source>Exec</source>
+-        <translation type="unfinished"></translation>
++        <translation>Exec</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="132"/>
+         <source>Open</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mở</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="180"/>
+         <source>Name</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="228"/>
+@@ -741,81 +741,81 @@
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="254"/>
+         <source>Key</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chìa khoá</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="348"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="266"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="367"/>
+         <source>Save</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cứu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="73"/>
+         <source>Add Shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thêm phím tắt</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="86"/>
+         <source>Please enter a shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>Vui lòng nhập phím tắt</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="224"/>
+         <source>Desktop files(*.desktop)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tệp máy tính để bàn(*.desktop)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
+         <source>select desktop</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn máy tính để bàn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="302"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="323"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="334"/>
+         <source>Invalid application</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đơn đăng ký không hợp lệ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="304"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="319"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="330"/>
+         <source>Shortcut conflict</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xung đột phím tắt</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="306"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="321"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="332"/>
+         <source>Invalid shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phím tắt không hợp lệ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="309"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="316"/>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="337"/>
+         <source>Name repetition</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lặp lại tên</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="343"/>
+         <source>Unknown error</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lỗi không xác định</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="522"/>
+         <source>Shortcut cannot be empty</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phím tắt không được trống</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="526"/>
+         <source>Name cannot be empty</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên không được trống</translation>
+     </message>
+ </context>
+ <context>
+@@ -1012,7 +1012,7 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="28"/>
+         <source>Area</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khu vực</translation>
+     </message>
+     <message>
+         <source>Regional Format</source>
+@@ -1098,23 +1098,23 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="639"/>
+         <source>Simplified Chinese</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Trung giản thể</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="195"/>
+         <source>English  (US)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Việt (Mỹ)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="196"/>
+         <source>Simplified Chinese  (CN)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Trung giản thể (CN)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="198"/>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="200"/>
+         <source>Tibetan  (CN)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Tây Tạng (CN)</translation>
+     </message>
+     <message>
+         <source>First Day Of Week</source>
+@@ -1125,13 +1125,13 @@
+         <location filename="../../../plugins/time-language/area/area.cpp" line="233"/>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="384"/>
+         <source>12 Hours</source>
+-        <translation type="unfinished"></translation>
++        <translation>12 giờ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="234"/>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="385"/>
+         <source>24 Hours</source>
+-        <translation type="unfinished"></translation>
++        <translation>24 giờ</translation>
+     </message>
+     <message>
+         <source>Settings</source>
+@@ -1148,7 +1148,7 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="201"/>
+         <source>Uygur  (CN)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Duy Ngô Nhĩ (CN)</translation>
+     </message>
+     <message>
+         <source>Kirghiz  (CN)</source>
+@@ -1157,143 +1157,143 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="202"/>
+         <source>Traditional Chinese  (CN)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Trung phồn thể (CN)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="203"/>
+         <source>Mongolian  (CN)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Mông Cổ (CN)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="204"/>
+         <source>Kazaqa  (KZ)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kazaqa (KZ)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="205"/>
+         <source>Kirghiz  (KG)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kirghiz (KG)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="206"/>
+         <source>German  (DE)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Đức (DE)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="207"/>
+         <source>Spanish  (ES)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Tây Ban Nha (ES)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="208"/>
+         <source>French  (FR)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Pháp (FR)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="215"/>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="302"/>
+         <source>Solar calendar</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lịch mặt trời</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="216"/>
+         <source>Lunar</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lunar</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="221"/>
+         <source>Monday</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thứ hai</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="222"/>
+         <source>Sunday</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chủ nhật</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="366"/>
+         <source>MMMM dd, yyyy</source>
+-        <translation type="unfinished"></translation>
++        <translation>MMMM dd, yyyy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="369"/>
+         <source>MMMM d, yy</source>
+-        <translation type="unfinished"></translation>
++        <translation>MMMM d, yy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="643"/>
+         <source>Tibetan</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tây tạng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="645"/>
+         <source>Kazaqa</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kazaqa</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="647"/>
+         <source>Uygur</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người Duy Ngô Nhĩ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="649"/>
+         <source>Kirghiz</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kirghiz</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="651"/>
+         <source>Traditional Chinese</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Trung phồn thể</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="653"/>
+         <source>Mongolian</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mông Cổ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="655"/>
+         <source>German</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Đức</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="657"/>
+         <source>Spanish</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Tây Ban Nha</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="659"/>
+         <source>French</source>
+-        <translation type="unfinished"></translation>
++        <translation>Pháp</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="672"/>
+         <source>Modify the current region need to logout to take effect, whether to logout?</source>
+-        <translation type="unfinished"></translation>
++        <translation>Sửa đổi khu vực hiện tại cần đăng xuất để có hiệu lực, có đăng xuất hay không?</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="673"/>
+         <source>Logout later</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đăng xuất sau</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="674"/>
+         <source>Logout now</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đăng xuất ngay</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="676"/>
+         <source>Modify the first language need to reboot to take effect, whether to reboot?</source>
+-        <translation type="unfinished"></translation>
++        <translation>Sửa đổi ngôn ngữ đầu tiên cần khởi động lại để có hiệu lực, có khởi động lại không?</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="677"/>
+         <source>Reboot later</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khởi động lại sau</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="678"/>
+         <source>Reboot now</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khởi động lại ngay bây giờ</translation>
+     </message>
+     <message>
+         <source>calendar</source>
+@@ -1358,7 +1358,7 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/area.cpp" line="641"/>
+         <source>English</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếng Anh</translation>
+     </message>
+     <message>
+         <source>Chinese</source>
+@@ -1409,31 +1409,31 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="38"/>
+         <source>Regional Format</source>
+-        <translation type="unfinished"></translation>
++        <translation>Định dạng khu vực</translation>
+         <extra-contents_path>/Area/Regional Format</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="40"/>
+         <source>Calendar</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lịch</translation>
+         <extra-contents_path>/Area/Calendar</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="42"/>
+         <source>First Day Of Week</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ngày đầu tiên trong tuần</translation>
+         <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="47"/>
+         <source>Long Format Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ngày định dạng dài</translation>
+         <extra-contents_path>/Area/Long Format Date</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="45"/>
+         <source>Short Foramt Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ngày Foramt ngắn</translation>
+         <extra-contents_path>/Area/Short Foramt Date</extra-contents_path>
+     </message>
+     <message>
+@@ -1443,25 +1443,25 @@
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="50"/>
+         <source>Time</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thời gian</translation>
+         <extra-contents_path>/Area/Time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="63"/>
+         <source>Language Format</source>
+-        <translation type="unfinished"></translation>
++        <translation>Định dạng ngôn ngữ</translation>
+         <extra-contents_path>/Area/Language Format</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="74"/>
+         <source>Language Format Example</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ví dụ về định dạng ngôn ngữ</translation>
+         <extra-contents_path>/Area/Language Format Example</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/areaui.cpp" line="103"/>
+         <source>System Language</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ngôn ngữ hệ thống</translation>
+         <extra-contents_path>/Area/System Language</extra-contents_path>
+     </message>
+ </context>
+@@ -1477,27 +1477,27 @@
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="96"/>
+         <source>Auto Start</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tự động khởi động</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="293"/>
+         <source>Desktop files(*.desktop)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tệp máy tính để bàn(*.desktop)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
+         <source>select autoboot desktop</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn Tự động khởi động máy tính để bàn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
+         <source>Select</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lựa</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="303"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <source>Add</source>
+@@ -1536,7 +1536,7 @@
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="231"/>
+         <source>Delete</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xóa</translation>
+     </message>
+ </context>
+ <context>
+@@ -1549,13 +1549,13 @@
+     <message>
+         <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="17"/>
+         <source>Autostart Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cài đặt tự động khởi động</translation>
+         <extra-contents_path>/Autostart/Autostart Settings</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="27"/>
+         <source>Add</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thêm</translation>
+         <extra-contents_path>/Autostart/Add</extra-contents_path>
+     </message>
+ </context>
+@@ -1565,7 +1565,7 @@
+         <location filename="../../../plugins/security-updates/backup/backup.ui" line="53"/>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="115"/>
+         <source>Backup</source>
+-        <translation type="unfinished"></translation>
++        <translation>Sao lưu</translation>
+     </message>
+     <message>
+         <source>Back up your files to other drives, and when the original files are lost, damaged, or deleted, you can restore them to ensure
+@@ -1581,25 +1581,26 @@ you can restore them to ensure the integrity of your system.</source>
+         <location filename="../../../plugins/security-updates/backup/backup.ui" line="69"/>
+         <source>Back up your files to other drives, and when the original files are lost, damaged, or deleted, 
+ you can restore them to ensure the integrity of your system.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Sao lưu tệp của bạn vào các ổ đĩa khác và khi tệp gốc bị mất, hư hỏng hoặc bị xóa, 
++Bạn có thể khôi phục chúng để đảm bảo tính toàn vẹn của hệ thống.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.ui" line="113"/>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="162"/>
+         <source>Begin backup</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bắt đầu sao lưu</translation>
+         <extra-contents_path>/Backup/Begin backup</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.ui" line="157"/>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="139"/>
+         <source>Restore</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khôi phục</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.ui" line="173"/>
+         <source>View a list of backed-upfiles to backed up files to the system</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xem danh sách các tệp đã sao lưu để sao lưu tệp vào hệ thống</translation>
+     </message>
+     <message>
+         <source>View a list of backed-upfiles to restore backed up files to the system</source>
+@@ -1609,7 +1610,7 @@ you can restore them to ensure the integrity of your system.</source>
+         <location filename="../../../plugins/security-updates/backup/backup.ui" line="213"/>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="164"/>
+         <source>Begin restore</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bắt đầu khôi phục</translation>
+         <extra-contents_path>/Backup/Begin restore</extra-contents_path>
+     </message>
+     <message>
+@@ -1639,22 +1640,22 @@ you can restore them to ensure the integrity of your system.</source>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="44"/>
+         <source>Backup Restore</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khôi phục sao lưu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="117"/>
+         <source>Back up your files to other drives and restore them when the source files are lost, damaged, or deleted to ensure the integrity of the system.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Sao lưu các tệp của bạn vào các ổ đĩa khác và khôi phục chúng khi các tệp nguồn bị mất, bị hỏng hoặc bị xóa để đảm bảo tính toàn vẹn của hệ thống.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="141"/>
+         <source>View the backup list and restore the backup file to the system</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xem danh sách sao lưu và khôi phục tệp sao lưu vào hệ thống</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/security-updates/backup/backup.cpp" line="160"/>
+         <source>Backup and Restore</source>
+-        <translation type="unfinished"></translation>
++        <translation>Sao lưu và khôi phục</translation>
+     </message>
+ </context>
+ <context>
+@@ -2078,7 +2079,7 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/boot.cpp" line="7"/>
+         <source>Boot</source>
+-        <translation type="unfinished"></translation>
++        <translation>Giày ống</translation>
+     </message>
+     <message>
+         <source>boot</source>
+@@ -2103,23 +2104,23 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="21"/>
+         <source>boot</source>
+-        <translation type="unfinished"></translation>
++        <translation>giày ống</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="33"/>
+         <source>Grub verify</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác minh grub</translation>
+         <extra-contents_path>/Boot/Grub verify</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="36"/>
+         <source>Password required for Grub editing after enabling</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mật khẩu cần thiết để chỉnh sửa Grub sau khi bật</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/bootui.cpp" line="38"/>
+         <source>Reset password</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đặt lại mật khẩu</translation>
+     </message>
+ </context>
+ <context>
+@@ -2127,7 +2128,7 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="36"/>
+         <source>Failed to get the brightness information of this monitor</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không nhận được thông tin độ sáng của màn hình này</translation>
+     </message>
+ </context>
+ <context>
+@@ -2707,7 +2708,7 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="139"/>
+         <source>System Logos</source>
+-        <translation type="unfinished"></translation>
++        <translation>Logo hệ thống</translation>
+     </message>
+     <message>
+         <source>Local Logo</source>
+@@ -2716,58 +2717,58 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="116"/>
+         <source>User logo</source>
+-        <translation type="unfinished"></translation>
++        <translation>Logo người dùng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="148"/>
+         <source>Select Local Logo</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn logo địa phương</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="158"/>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="161"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác nhận</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="302"/>
+         <source>select custom face file</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn tệp khuôn mặt tùy chỉnh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="303"/>
+         <source>Select</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lựa</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
+         <source>Position: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Vị trí: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
+         <source>FileName: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Filename: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
+         <source>FileType: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Loại tệp: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="322"/>
+         <source>Warning</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cảnh báo</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="323"/>
+         <source>The avatar is larger than 1M, please choose again</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hình đại diện lớn hơn 1M, vui lòng chọn lại</translation>
+     </message>
+ </context>
+ <context>
+@@ -2806,32 +2807,32 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="31"/>
+         <source>Set Nickname</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đặt biệt hiệu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="53"/>
+         <source>UserName</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên người dùng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="70"/>
+         <source>NickName</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên hiệu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="156"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Độ dài của NickName phải từ 1~%1 ký tự!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
+         <source>nickName already in use.</source>
+-        <translation type="unfinished"></translation>
++        <translation>nickName đã được sử dụng.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
+         <source>Can&apos;t contains &apos;:&apos;.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không thể chứa &apos;:&apos;.</translation>
+     </message>
+     <message>
+         <source>The length must be 1~%1 characters!</source>
+@@ -2852,12 +2853,12 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="113"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="116"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác nhận</translation>
+     </message>
+ </context>
+ <context>
+@@ -2865,85 +2866,85 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="98"/>
+         <source>Change password</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thay đổi mật khẩu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="103"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="471"/>
+         <source>Current Pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người khuyết tật hiện tại</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="116"/>
+         <source>Required</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bắt buộc</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="136"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="472"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="480"/>
+         <source>New Pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người khuyết tật mới</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="163"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="473"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="481"/>
+         <source>Sure Pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chắc chắn là người khuyết tật</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="216"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="220"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="305"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="371"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác nhận</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="281"/>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="544"/>
+         <source>Inconsistency with pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không nhất quán với người khuyết tật</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="301"/>
+         <source>Same with old pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tương tự với người khuyết tật cũ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="354"/>
+         <source>Pwd Changed Succes</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người khuyết tật thay đổi thành công</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="361"/>
+         <source>Authentication failed, input authtok again!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác thực không thành công, nhập lại authtok!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="503"/>
+         <source>Contains illegal characters!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chứa các nhân vật bất hợp pháp!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="615"/>
+         <source>current pwd cannot be empty!</source>
+-        <translation type="unfinished"></translation>
++        <translation>NKT hiện tại không thể trống!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="620"/>
+         <source>new pwd cannot be empty!</source>
+-        <translation type="unfinished"></translation>
++        <translation>NKT mới không thể trống!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="625"/>
+         <source>sure pwd cannot be empty!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chắc chắn NKT không thể trống rỗng!</translation>
+     </message>
+ </context>
+ <context>
+@@ -2951,47 +2952,47 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="24"/>
+         <source>UserType</source>
+-        <translation type="unfinished"></translation>
++        <translation>Loại người dùng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="71"/>
+         <source>administrator</source>
+-        <translation type="unfinished"></translation>
++        <translation>quản trị viên</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="73"/>
+         <source>standard user</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người dùng tiêu chuẩn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="61"/>
+         <source>Select account type (Ensure have admin on system):</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn loại tài khoản (Đảm bảo có quản trị viên trên hệ thống):</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="75"/>
+         <source>change system settings, install and upgrade software.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thay đổi cài đặt hệ thống, cài đặt và nâng cấp phần mềm.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="77"/>
+         <source>use most software, cannot change system settings.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Sử dụng hầu hết các phần mềm, không thể thay đổi cài đặt hệ thống.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="130"/>
+         <source>Note: Effective After Logout!!!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lưu ý: Có hiệu lực sau khi đăng xuất!!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="141"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác nhận</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusertype.cpp" line="144"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+ </context>
+ <context>
+@@ -3095,43 +3096,43 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="32"/>
+         <source>Dialog</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thoại</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="86"/>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="89"/>
+         <source>Choose a custom color</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn màu tùy chỉnh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="254"/>
+         <source>HEX</source>
+-        <translation type="unfinished"></translation>
++        <translation>HEX</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="290"/>
+         <source>RGB</source>
+-        <translation type="unfinished"></translation>
++        <translation>RGB</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="457"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="476"/>
+         <source>OK</source>
+-        <translation type="unfinished"></translation>
++        <translation>OK</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="94"/>
+         <source>Custom color</source>
+-        <translation type="unfinished"></translation>
++        <translation>Màu tùy chỉnh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="182"/>
+         <source>Close</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đóng</translation>
+     </message>
+ </context>
+ <context>
+@@ -3143,28 +3144,28 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.ui" line="26"/>
+         <source>Add New Group</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thêm nhóm mới</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="54"/>
+         <source>Name</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="78"/>
+         <source>Id</source>
+-        <translation type="unfinished"></translation>
++        <translation>Id</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="92"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác nhận</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="202"/>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="216"/>
+         <source>GroupName&apos;s length must be between 1 and %1 characters!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Độ dài của GroupName phải từ 1 đến %1 ký tự!</translation>
+     </message>
+     <message>
+         <source>Members</source>
+@@ -3185,7 +3186,7 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="89"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <source>Certain</source>
+@@ -3194,7 +3195,7 @@ Please authenticate yourself to continue</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="50"/>
+         <source>Add user group</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thêm nhóm người dùng</translation>
+     </message>
+ </context>
+ <context>
+@@ -3474,32 +3475,32 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="49"/>
+         <source>CreateUserNew</source>
+-        <translation type="unfinished"></translation>
++        <translation>CreateUserMới</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="55"/>
+         <source>UserName</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên người dùng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="65"/>
+         <source>NickName</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên hiệu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="71"/>
+         <source>HostName</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên máy chủ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="80"/>
+         <source>Pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>Pwd</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="88"/>
+         <source>SurePwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>SurePwd</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="96"/>
+@@ -3507,59 +3508,59 @@ change system settings</source>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="102"/>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="105"/>
+         <source>Required</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bắt buộc</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="109"/>
+         <source>verification</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác minh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="182"/>
+         <source>Select Type</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn loại</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="191"/>
+         <source>Administrator</source>
+-        <translation type="unfinished"></translation>
++        <translation>Quản trị viên</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="194"/>
+         <source>Users can make any changes they need</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người dùng có thể thực hiện bất kỳ thay đổi nào họ cần</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="196"/>
+         <source>Standard User</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người dùng tiêu chuẩn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="199"/>
+         <source>Users cannot change system settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người dùng không thể thay đổi cài đặt hệ thống</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="276"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="279"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác nhận</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="355"/>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="581"/>
+         <source>Inconsistency with pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không nhất quán với người khuyết tật</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="494"/>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="647"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Độ dài của NickName phải từ 1~%1 ký tự!</translation>
+     </message>
+     <message>
+         <source>The nick name cannot be empty</source>
+@@ -3568,7 +3569,7 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
+         <source>nickName already in use.</source>
+-        <translation type="unfinished"></translation>
++        <translation>nickName đã được sử dụng.</translation>
+     </message>
+     <message>
+         <source>nickName length must less than %1 letters!</source>
+@@ -3577,17 +3578,17 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="642"/>
+         <source>Username&apos;s length must be between 1 and %1 characters!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Độ dài của tên người dùng phải từ 1 đến %1 ký tự!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="652"/>
+         <source>new pwd cannot be empty!</source>
+-        <translation type="unfinished"></translation>
++        <translation>NKT mới không thể trống!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="657"/>
+         <source>sure pwd cannot be empty!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chắc chắn NKT không thể trống rỗng!</translation>
+     </message>
+     <message>
+         <source>Name already in use.</source>
+@@ -3616,7 +3617,7 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="526"/>
+         <source>Name corresponds to group already exists.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên tương ứng với nhóm đã tồn tại.</translation>
+     </message>
+     <message>
+         <source>Name length must less than %1 letters!</source>
+@@ -3629,12 +3630,12 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="522"/>
+         <source>Username&apos;s folder exists, change another one</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thư mục của tên người dùng tồn tại, thay đổi một thư mục khác</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="551"/>
+         <source>Contains illegal characters!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chứa các nhân vật bất hợp pháp!</translation>
+     </message>
+ </context>
+ <context>
+@@ -3642,7 +3643,7 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/personalized/theme/globaltheme/customglobaltheme.cpp" line="34"/>
+         <source>custom</source>
+-        <translation type="unfinished"></translation>
++        <translation>phong tục</translation>
+     </message>
+ </context>
+ <context>
+@@ -3765,7 +3766,7 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="28"/>
+         <source>Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ngày</translation>
+     </message>
+     <message>
+         <source>Current Date</source>
+@@ -3801,7 +3802,7 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="341"/>
+         <source>Add Timezone</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thêm múi giờ</translation>
+     </message>
+     <message>
+         <source>Delete</source>
+@@ -3863,7 +3864,7 @@ change system settings</source>
+         <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="201"/>
+         <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="343"/>
+         <source>Change Timezone</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thay đổi múi giờ</translation>
+     </message>
+     <message>
+         <source>Sync failed</source>
+@@ -3891,37 +3892,37 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="53"/>
+         <source>Sync Server</source>
+-        <translation type="unfinished"></translation>
++        <translation>Máy chủ đồng bộ hóa</translation>
+         <extra-contents_path>/Date/Sync Server</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="75"/>
+         <source>Current Date</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ngày hiện tại</translation>
+         <extra-contents_path>/Date/Current Date</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="105"/>
+         <source>Timezone</source>
+-        <translation type="unfinished"></translation>
++        <translation>Múi giờ</translation>
+         <extra-contents_path>/Date/Timezone</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="111"/>
+         <source>Set Time</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đặt thời gian</translation>
+         <extra-contents_path>/Date/Set Time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
+         <source>Manual Time</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thời gian thủ công</translation>
+         <extra-contents_path>/Date/Manual Time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
+         <source>Sync Time</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thời gian đồng bộ hóa</translation>
+         <extra-contents_path>/Date/Sync Time</extra-contents_path>
+     </message>
+     <message>
+@@ -3931,55 +3932,55 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="127"/>
+         <source>Set Time Manually</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đặt thời gian theo cách thủ công</translation>
+         <extra-contents_path>/Date/Set Time Manually</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="162"/>
+         <source>Server Address</source>
+-        <translation type="unfinished"></translation>
++        <translation>Địa chỉ máy chủ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
+         <source>Required</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bắt buộc</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="165"/>
+         <source>Save</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cứu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="169"/>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="313"/>
+         <source>Customize</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tùy chỉnh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="197"/>
+         <source>Other Timezone</source>
+-        <translation type="unfinished"></translation>
++        <translation>Múi giờ khác</translation>
+         <extra-contents_path>/Date/Other Timezone</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="269"/>
+         <source>MMMM d, yy ddd</source>
+-        <translation type="unfinished"></translation>
++        <translation>MMMM d, yy ddd</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
+         <source>MMMM dd, yyyy ddd</source>
+-        <translation type="unfinished"></translation>
++        <translation>MMMM dd, yyyy ddd</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="302"/>
+         <source>Sync failed</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đồng bộ hóa không thành công</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="312"/>
+         <source>Default</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mặc định</translation>
+     </message>
+ </context>
+ <context>
+@@ -3995,17 +3996,17 @@ change system settings</source>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultapp.cpp" line="47"/>
+         <source>Default App</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ứng dụng mặc định</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultapp.cpp" line="172"/>
+         <source>No program available</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không có chương trình nào có sẵn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultapp.cpp" line="173"/>
+         <source>Choose default app</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn ứng dụng mặc định</translation>
+     </message>
+     <message>
+         <source>Reset default apps to system recommended apps</source>
+@@ -4046,55 +4047,55 @@ change system settings</source>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="17"/>
+         <source>DefaultAppWindow</source>
+         <comment>Select Default Application</comment>
+-        <translation type="unfinished"></translation>
++        <translation>Cửa sổ ứng dụng mặc định</translation>
+         <extra-contents_path>/Defaultapp/Select Default Application</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="21"/>
+         <source>Browser</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trình duyệt</translation>
+         <extra-contents_path>/Defaultapp/Browser</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="23"/>
+         <source>Mail</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bưu điện</translation>
+         <extra-contents_path>/Defaultapp/Mail</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="25"/>
+         <source>Image Viewer</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trình xem hình ảnh</translation>
+         <extra-contents_path>/Defaultapp/Image Viewer</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="27"/>
+         <source>Audio Player</source>
+-        <translation type="unfinished"></translation>
++        <translation>Máy nghe nhạc</translation>
+         <extra-contents_path>/Defaultapp/Audio Player</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="29"/>
+         <source>Video Player</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trình phát video</translation>
+         <extra-contents_path>/Defaultapp/Video Player</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="31"/>
+         <source>Text Editor</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trình soạn thảo văn bản</translation>
+         <extra-contents_path>/Defaultapp/Text Editor</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="35"/>
+         <source>Reset default apps to system recommended apps</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đặt lại ứng dụng mặc định thành ứng dụng được hệ thống đề xuất</translation>
+         <extra-contents_path>/Defaultapp/Reset default apps to system recommended apps</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="36"/>
+         <source>Reset</source>
+-        <translation type="unfinished"></translation>
++        <translation>Reset</translation>
+     </message>
+ </context>
+ <context>
+@@ -4297,22 +4298,22 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="26"/>
+         <source>Delete User</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xóa người dùng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="39"/>
+         <source>Delete user &apos;</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xóa người dùng &apos;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="40"/>
+         <source>&apos;? And:</source>
+-        <translation type="unfinished"></translation>
++        <translation>&apos;? Và:</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="65"/>
+         <source>Keep desktop, files, favorites, music of the user</source>
+-        <translation type="unfinished"></translation>
++        <translation>Giữ máy tính để bàn, tệp, yêu thích, nhạc của người dùng</translation>
+     </message>
+     <message>
+         <source>Keep user&apos;s home folder</source>
+@@ -4321,17 +4322,17 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="98"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác nhận</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
+         <source>Delete whole data belong user</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xóa toàn bộ dữ liệu thuộc về người dùng</translation>
+     </message>
+ </context>
+ <context>
+@@ -4705,72 +4706,72 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="26"/>
+         <source>Dialog</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thoại</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="214"/>
+         <source>Display Advanced Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hiển thị cài đặt nâng cao</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="297"/>
+         <source>Performance</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hiệu năng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="376"/>
+         <source>Applicable to machine with discrete graphics, which can accelerate the rendering of 3D graphics.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Áp dụng cho máy có đồ họa rời, có thể tăng tốc độ hiển thị đồ họa 3D.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="392"/>
+         <source>(Note: not support connect graphical with xmanager on windows.)</source>
+-        <translation type="unfinished"></translation>
++        <translation>(Lưu ý: không hỗ trợ kết nối đồ họa với xmanager trên windows.)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="462"/>
+         <source>Compatible</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tương thích</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="538"/>
+         <source>Applicable to machine with integrated graphics,  there is no 3D graphics acceleration. </source>
+-        <translation type="unfinished"></translation>
++        <translation>Áp dụng cho máy có đồ họa tích hợp, không có tăng tốc đồ họa 3D. </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="554"/>
+         <source>(Note: need connect graphical with xmanager on windows, use this option.)</source>
+-        <translation type="unfinished"></translation>
++        <translation>(Lưu ý: cần kết nối đồ họa với xmanager trên windows, sử dụng tùy chọn này.)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="624"/>
+         <source>Automatic</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tự động</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="700"/>
+         <source>Auto select according to environment, delay the login time (about 0.5 sec).</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tự động chọn theo môi trường, trì hoãn thời gian đăng nhập (khoảng 0.5 giây).</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="721"/>
+         <source>Threshold:</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ngưỡng:</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="744"/>
+         <source>Apply</source>
+-        <translation type="unfinished"></translation>
++        <translation>Áp dụng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="757"/>
+         <source>Reset</source>
+-        <translation type="unfinished"></translation>
++        <translation>Reset</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="772"/>
+         <source>(Note: select this option to use 3D graphics acceleration and xmanager.)</source>
+-        <translation type="unfinished"></translation>
++        <translation>(Lưu ý: chọn tùy chọn này để sử dụng tăng tốc đồ họa 3D và xmanager.)</translation>
+     </message>
+ </context>
+ <context>
+@@ -4782,12 +4783,12 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/system/display/display.cpp" line="36"/>
+         <source>Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>Màn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/display.cpp" line="38"/>
+         <source>Display</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trưng bày</translation>
+     </message>
+ </context>
+ <context>
+@@ -4820,7 +4821,7 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/system/display/display.ui" line="32"/>
+         <source>Display</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trưng bày</translation>
+     </message>
+     <message>
+         <source>as main</source>
+@@ -4888,7 +4889,7 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="60"/>
+         <source>double-click to test</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhấp đúp để kiểm tra</translation>
+     </message>
+ </context>
+ <context>
+@@ -5134,35 +5135,35 @@ folder will be deleted!</source>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="46"/>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="121"/>
+         <source>Fonts</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phông chữ</translation>
+         <extra-contents_path>/Fonts/Fonts</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/fonts/fonts.ui" line="264"/>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="125"/>
+         <source>Fonts select</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn phông chữ</translation>
+         <extra-contents_path>/Fonts/Fonts select</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/fonts/fonts.ui" line="146"/>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="123"/>
+         <source>Font size</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kích thước phông chữ</translation>
+         <extra-contents_path>/Fonts/Font size</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/fonts/fonts.ui" line="370"/>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="127"/>
+         <source>Mono font</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phông chữ đơn sắc</translation>
+         <extra-contents_path>/Fonts/Mono font</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/fonts/fonts.ui" line="421"/>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="129"/>
+         <source>Reset to default</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đặt lại về mặc định</translation>
+         <extra-contents_path>/Fonts/Reset to default</extra-contents_path>
+     </message>
+     <message>
+@@ -5224,12 +5225,12 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="142"/>
+         <source>Small</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhỏ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/fonts/fonts.cpp" line="146"/>
+         <source>Large</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lớn</translation>
+     </message>
+ </context>
+ <context>
+@@ -5308,44 +5309,44 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="24"/>
+         <source>Grub verify</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác minh grub</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="29"/>
+         <source>User:</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người dùng:</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="42"/>
+         <source>Pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>Pwd</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="85"/>
+         <source>Sure Pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chắc chắn là người khuyết tật</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="138"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="142"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác nhận</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="197"/>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="235"/>
+         <source>Inconsistency with pwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không nhất quán với người khuyết tật</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="225"/>
+         <location filename="../../../plugins/commoninfo/boot/grubverifydialog.cpp" line="303"/>
+         <source>pwd cannot be empty!</source>
+-        <translation type="unfinished"></translation>
++        <translation>NKT không thể trống!</translation>
+     </message>
+     <message>
+         <source>sure pwd cannot be empty!</source>
+@@ -5368,44 +5369,44 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="17"/>
+         <source>Set HostName</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đặt Tên máy chủ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="47"/>
+         <source>HostName</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên máy chủ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="68"/>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="115"/>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="118"/>
+         <source>Must be 1-64 characters long</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phải dài 1-64 ký tự</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="87"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="82"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác nhận</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="188"/>
+         <source>Hostname must start or end with a number and a letter</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên máy chủ phải bắt đầu hoặc kết thúc bằng một số và một chữ cái</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="199"/>
+         <source>Hostname cannot have consecutive &apos; - &apos; and &apos; . &apos;</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên máy chủ không được có liên tiếp &apos; - &apos; và &apos; . &apos;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/hostnamedialog.cpp" line="206"/>
+         <source>Hostname cannot have consecutive &apos; . &apos;</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên máy chủ không thể có &apos; liên tiếp . &apos;</translation>
+     </message>
+ </context>
+ <context>
+@@ -5421,7 +5422,7 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="92"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <source>Set</source>
+@@ -5430,22 +5431,22 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="39"/>
+         <source>VNC password</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mật khẩu VNC</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="57"/>
+         <source>Password</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mật khẩu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="75"/>
+         <source>Must be 1-8 characters long</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phải dài 1-8 ký tự</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/inputpwddialog.cpp" line="98"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác nhận</translation>
+     </message>
+     <message>
+         <source>less than or equal to 8</source>
+@@ -5638,57 +5639,57 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="46"/>
+         <source>System</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hệ thống</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="49"/>
+         <source>Devices</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thiết bị</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="55"/>
+         <source>Personalized</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cá nhân</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="52"/>
+         <source>Network</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mạng lưới</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="58"/>
+         <source>Account</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tài khoản</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="61"/>
+         <source>Datetime</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ngày/giờ</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="64"/>
+         <source>Update</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cập nhật</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="67"/>
+         <source>Security</source>
+-        <translation type="unfinished"></translation>
++        <translation>An ninh</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="70"/>
+         <source>Application</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ứng dụng</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="73"/>
+         <source>Investigation</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cuộc điều tra</translation>
+     </message>
+     <message>
+         <location filename="../../utils/keyvalueconverter.cpp" line="76"/>
+         <source>Commoninfo</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thông tin chung</translation>
+     </message>
+     <message>
+         <source>Search</source>
+@@ -5807,7 +5808,7 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardmain.cpp" line="25"/>
+         <source>Keyboard</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bàn phím</translation>
+     </message>
+     <message>
+         <source>Short</source>
+@@ -5850,132 +5851,132 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="24"/>
+         <source>Keyboard Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cài đặt bàn phím</translation>
+         <extra-contents_path>/Keyboard/Keyboard Settings</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="35"/>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
+         <source>Input Method</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phương thức nhập liệu</translation>
+         <extra-contents_path>/Keyboard/Input Method</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="51"/>
+         <source>Virtual Keyboard</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bàn phím ảo</translation>
+         <extra-contents_path>/Keyboard/Virtual Keyboard</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="106"/>
+         <source>Key repeat</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lặp lại phím</translation>
+         <extra-contents_path>/Keyboard/Key repeat</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="114"/>
+         <source>Delay</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trì hoãn</translation>
+         <extra-contents_path>/Keyboard/Delay</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="117"/>
+         <source>Short</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thấp</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="118"/>
+         <source>Long</source>
+-        <translation type="unfinished"></translation>
++        <translation>Dài</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="130"/>
+         <source>Speed</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tốc độ</translation>
+         <extra-contents_path>/Keyboard/Speed</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="132"/>
+         <source>Slow</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chậm</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="133"/>
+         <source>Fast</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhanh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="144"/>
+         <source>Input test</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kiểm tra đầu vào</translation>
+         <extra-contents_path>/Keyboard/Input test</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="152"/>
+         <source>Key tips</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mẹo chính</translation>
+         <extra-contents_path>/Keyboard/Key tips</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="161"/>
+         <source>Input settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cài đặt đầu vào</translation>
+         <extra-contents_path>/Keyboard/Input settings</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="168"/>
+         <source>Edit</source>
+-        <translation type="unfinished"></translation>
++        <translation>Biên tập</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="175"/>
+         <source>Show icon on tray</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hiển thị biểu tượng trên khay</translation>
+         <extra-contents_path>/Keyboard/Show icon on tray</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="182"/>
+         <source>Show icon on desktop</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hiển thị biểu tượng trên màn hình</translation>
+         <extra-contents_path>/Keyboard/Show icon on desktop</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="189"/>
+         <source>Keyboard Size</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kích thước bàn phím</translation>
+         <extra-contents_path>/Keyboard/Keyboard Size</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="197"/>
+         <source>Text size</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kích thước văn bản</translation>
+         <extra-contents_path>/Keyboard/Text size</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="199"/>
+         <source>Small</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhỏ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="200"/>
+         <source>Medium</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đau vừa</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="201"/>
+         <source>Large</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lớn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
+         <source>Animation</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hoạt hình</translation>
+         <extra-contents_path>/Keyboard/Animation</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="214"/>
+         <source>Input sound effect</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hiệu ứng âm thanh đầu vào</translation>
+         <extra-contents_path>/Keyboard/Input sound effect</extra-contents_path>
+     </message>
+ </context>
+@@ -5984,12 +5985,12 @@ folder will be deleted!</source>
+     <message>
+         <location filename="../../../plugins/time-language/area/languageframe.cpp" line="71"/>
+         <source>Delete</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xóa</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/area/languageframe.cpp" line="70"/>
+         <source>Input Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cài đặt đầu vào</translation>
+     </message>
+ </context>
+ <context>
+@@ -6467,17 +6468,17 @@ Please retry or relogin!</source>
+         <location filename="../../mainwindow.cpp" line="591"/>
+         <location filename="../../mainwindow.cpp" line="949"/>
+         <source>Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cài đặt</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="479"/>
+         <source>Option</source>
+-        <translation type="unfinished"></translation>
++        <translation>Sự quyết định</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="480"/>
+         <source>Minimize</source>
+-        <translation type="unfinished"></translation>
++        <translation>Giảm thiểu</translation>
+     </message>
+     <message>
+         <source>Maximize/Normal</source>
+@@ -6486,28 +6487,28 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../mainwindow.cpp" line="152"/>
+         <source>Warnning</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cảnh báo</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="170"/>
+         <source>Restore</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khôi phục</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="173"/>
+         <location filename="../../mainwindow.cpp" line="481"/>
+         <source>Maximize</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tối đa hóa</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="453"/>
+         <source>Back home</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trở về nhà</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="482"/>
+         <source>Close</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đóng</translation>
+     </message>
+     <message>
+         <source>Help</source>
+@@ -6524,12 +6525,12 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../mainwindow.cpp" line="592"/>
+         <source>Version: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Phiên bản: </translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="731"/>
+         <source>Specified</source>
+-        <translation type="unfinished"></translation>
++        <translation>Quy định</translation>
+     </message>
+     <message>
+         <source>ukcc</source>
+@@ -6538,13 +6539,13 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../mainwindow.cpp" line="1082"/>
+         <source>Warning</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cảnh báo</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="152"/>
+         <location filename="../../mainwindow.cpp" line="1082"/>
+         <source>This function has been controlled</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chức năng này đã được kiểm soát</translation>
+     </message>
+     <message>
+         <source>Home</source>
+@@ -6710,7 +6711,7 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouse.cpp" line="5"/>
+         <source>Mouse</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chuột</translation>
+     </message>
+ </context>
+ <context>
+@@ -6841,57 +6842,57 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="91"/>
+         <source>Mouse</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chuột</translation>
+         <extra-contents_path>/Mouse/Mouse</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="113"/>
+         <source>Pointer</source>
+-        <translation type="unfinished"></translation>
++        <translation>Con trỏ</translation>
+         <extra-contents_path>/Mouse/Pointer</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="136"/>
+         <source>Cursor</source>
+-        <translation type="unfinished"></translation>
++        <translation>Con trỏ</translation>
+         <extra-contents_path>/Mouse/Cursor</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="161"/>
+         <source>Dominant hand</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tay thuận</translation>
+         <extra-contents_path>/Mouse/Dominant hand</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="163"/>
+         <source>Left key</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phím trái</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="164"/>
+         <source>Right key</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phím bên phải</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="175"/>
+         <source>Scroll direction</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hướng cuộn</translation>
+         <extra-contents_path>/Mouse/Scroll direction</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="177"/>
+         <source>Forward</source>
+-        <translation type="unfinished"></translation>
++        <translation>Về phía trước</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="178"/>
+         <source>Reverse</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đảo ngược</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="188"/>
+         <source>Wheel speed</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tốc độ bánh xe</translation>
+         <extra-contents_path>/Mouse/Wheel speed</extra-contents_path>
+     </message>
+     <message>
+@@ -6899,53 +6900,53 @@ Please retry or relogin!</source>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="224"/>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="314"/>
+         <source>Slow</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chậm</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="191"/>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="225"/>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="315"/>
+         <source>Fast</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhanh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="204"/>
+         <source>Double-click interval time</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhấp đúp vào khoảng thời gian</translation>
+         <extra-contents_path>/Mouse/Double-click interval time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="206"/>
+         <source>Short</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thấp</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="207"/>
+         <source>Long</source>
+-        <translation type="unfinished"></translation>
++        <translation>Dài</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="222"/>
+         <source>Pointer speed</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tốc độ con trỏ</translation>
+         <extra-contents_path>/Mouse/Pointer speed</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="238"/>
+         <source>Mouse acceleration</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tăng tốc chuột</translation>
+         <extra-contents_path>/Mouse/Mouse acceleration</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="246"/>
+         <source>Show pointer position when pressing ctrl</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hiển thị vị trí con trỏ khi nhấn ctrl</translation>
+         <extra-contents_path>/Mouse/Show pointer position when pressing ctrl</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="255"/>
+         <source>Pointer size</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kích thước con trỏ</translation>
+         <extra-contents_path>/Mouse/Pointer size</extra-contents_path>
+     </message>
+     <message>
+@@ -6955,28 +6956,28 @@ Please retry or relogin!</source>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="265"/>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="266"/>
+         <source>Small(recommend)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhỏ(khuyến nghị)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="271"/>
+         <source>Medium</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đau vừa</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="272"/>
+         <source>Large</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lớn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="303"/>
+         <source>Blinking cursor in text area</source>
+-        <translation type="unfinished"></translation>
++        <translation>Con trỏ nhấp nháy trong vùng văn bản</translation>
+         <extra-contents_path>/Mouse/Blinking cursor in text area</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/mouse/mouseui.cpp" line="312"/>
+         <source>Cursor speed</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tốc độ con trỏ</translation>
+         <extra-contents_path>/Mouse/Cursor speed</extra-contents_path>
+     </message>
+ </context>
+@@ -7310,29 +7311,29 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="84"/>
+         <source>resolution</source>
+-        <translation type="unfinished"></translation>
++        <translation>nghị quyết</translation>
+         <extra-contents_path>/Display/resolution</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="110"/>
+         <source>orientation</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hướng</translation>
+         <extra-contents_path>/Display/orientation</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="123"/>
+         <source>arrow-up</source>
+-        <translation type="unfinished"></translation>
++        <translation>mũi tên lên</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="124"/>
+         <source>90° arrow-right</source>
+-        <translation type="unfinished"></translation>
++        <translation>90° mũi tên phải</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="126"/>
+         <source>arrow-down</source>
+-        <translation type="unfinished"></translation>
++        <translation>mũi tên xuống</translation>
+     </message>
+     <message>
+         <source>Information</source>
+@@ -7345,18 +7346,18 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="125"/>
+         <source>90° arrow-left</source>
+-        <translation type="unfinished"></translation>
++        <translation>90° mũi tên trái</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="137"/>
+         <source>auto rotation</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tự động xoay</translation>
+         <extra-contents_path>/Display/auto rotation</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="188"/>
+         <source>frequency</source>
+-        <translation type="unfinished"></translation>
++        <translation>tần số</translation>
+         <extra-contents_path>/Display/frequency</extra-contents_path>
+     </message>
+     <message>
+@@ -7366,18 +7367,18 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="411"/>
+         <source>auto</source>
+-        <translation type="unfinished"></translation>
++        <translation>xe ô tô</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="222"/>
+         <source>screen zoom</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thu phóng màn hình</translation>
+         <extra-contents_path>/Display/screen zoom</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/outputconfig.cpp" line="577"/>
+         <source>%1 Hz</source>
+-        <translation type="unfinished"></translation>
++        <translation>%1 Hz</translation>
+     </message>
+ </context>
+ <context>
+@@ -7843,13 +7844,13 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/devices/printer/printer.cpp" line="43"/>
+         <source>Printer</source>
+-        <translation type="unfinished"></translation>
++        <translation>Máy in</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/printer/printer.cpp" line="121"/>
+         <source>Printers</source>
+         <translatorcomment>打印机</translatorcomment>
+-        <translation type="unfinished"></translation>
++        <translation>Máy in</translation>
+     </message>
+     <message>
+         <source>Printers And Scanners</source>
+@@ -7866,22 +7867,22 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="11"/>
+         <source>Set</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cài</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="73"/>
+         <source>End User License Agreement and Privacy Policy Statement of openKylin</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thỏa thuận cấp phép người dùng cuối và Tuyên bố chính sách bảo mật của openKylin</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="75"/>
+         <source>End User License Agreement and Privacy Policy Statement of Kylin</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thỏa thuận cấp phép người dùng cuối và Tuyên bố chính sách bảo mật của Kylin</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
+         <source>Openkylin Community.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cộng đồng Openkylin.</translation>
+     </message>
+     <message>
+         <source>Dear users of Kylin operating system and relevant products, 
+@@ -8988,7 +8989,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="83"/>
+         <source>Kylinsoft Co., Ltd.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Công ty TNHH Kylinsoft</translation>
+     </message>
+ </context>
+ <context>
+@@ -9342,12 +9343,12 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcut.cpp" line="186"/>
+         <source>Customize Shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tùy chỉnh phím tắt</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="472"/>
+         <source>Edit Shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chỉnh sửa phím tắt</translation>
+     </message>
+     <message>
+         <source>Update Shortcut</source>
+@@ -9477,7 +9478,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="79"/>
+         <source>User Info</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thông tin người dùng</translation>
+     </message>
+     <message>
+         <source>Date</source>
+@@ -9698,17 +9699,17 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../main.cpp" line="100"/>
+         <source>ukui-control-center is disabled!</source>
+-        <translation type="unfinished"></translation>
++        <translation>ukui-control-center bị vô hiệu hóa!</translation>
+     </message>
+     <message>
+         <location filename="../../main.cpp" line="128"/>
+         <source>ukui-control-center</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trung tâm điều khiển</translation>
+     </message>
+     <message>
+         <location filename="../../main.cpp" line="89"/>
+         <source>ukui-control-center is already running!</source>
+-        <translation type="unfinished"></translation>
++        <translation>ukui-control-center đã chạy!</translation>
+     </message>
+     <message>
+         <source>Pwd input error, re-enter!</source>
+@@ -9850,55 +9851,64 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1203"/>
+         <source>min length %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>Chiều dài tối thiểu%1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1213"/>
+         <source>min digit num %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>chữ số tối thiểu số %1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1222"/>
+         <source>min upper num %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>Số trên tối thiểu%1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1231"/>
+         <source>min lower num %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>số thấp hơn tối thiểu%1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1240"/>
+         <source>min other num %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>số tối thiểu khác %1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1250"/>
+         <source>min char class %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>Lớp than tối thiểu %1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1259"/>
+         <source>max repeat %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>Lặp lại tối đa%1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1268"/>
+         <source>max class repeat %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>lớp tối đa lặp lại %1
++</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1277"/>
+         <source>max sequence %1
+ </source>
+-        <translation type="unfinished"></translation>
++        <translation>trình tự tối đa%1
++</translation>
+     </message>
+     <message>
+         <source>system upgrade new backup</source>
+@@ -9911,7 +9921,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="373"/>
+         <source>Programs are not allowed to be added.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Các chương trình không được phép được thêm vào.</translation>
+     </message>
+     <message>
+         <source>简体中文</source>
+@@ -9977,7 +9987,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="32"/>
+         <source>Screenlock</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khóa màn hình</translation>
+     </message>
+     <message>
+         <source>Screenlock Interface</source>
+@@ -10084,7 +10094,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="172"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tệp hình nền (*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</translation>
+     </message>
+     <message>
+         <source>allFiles(*.*)</source>
+@@ -10125,32 +10135,32 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="213"/>
+         <source>select custom wallpaper file</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn tệp hình nền tùy chỉnh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="214"/>
+         <source>Select</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lựa</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="215"/>
+         <source>Position: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Vị trí: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="216"/>
+         <source>FileName: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Filename: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="217"/>
+         <source>FileType: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Loại tệp: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlock.cpp" line="218"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <source>Monitor Off</source>
+@@ -10170,88 +10180,88 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="41"/>
+         <source>Show picture of screenlock on screenlogin</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hiển thị hình ảnh khóa màn hình trên đăng nhập màn hình</translation>
+         <extra-contents_path>/Screenlock/Show picture of screenlock on screenlogin</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="44"/>
+         <source>Leave lock (System will be locked when the paired phone gone)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khóa để lại (Hệ thống sẽ bị khóa khi điện thoại được ghép nối biến mất)</translation>
+         <extra-contents_path>/Screenlock/Leave lock (System will be locked when the paired phone gone)</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
+         <source>Specified device</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thiết bị được chỉ định</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="46"/>
+         <source>No paired phone. Please turn to &apos;Bluetooth&apos; to pair.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không có điện thoại được ghép nối. Vui lòng chuyển sang &apos;Bluetooth&apos; để ghép nối.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="66"/>
+         <source>Screenlock</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khóa màn hình</translation>
+         <extra-contents_path>/Screenlock/Screenlock</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="96"/>
+         <source>Local Pictures</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hình ảnh địa phương</translation>
+         <extra-contents_path>/Screenlock/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="98"/>
+         <source>Online Pictures</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hình ảnh trực tuyến</translation>
+         <extra-contents_path>/Screenlock/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="100"/>
+         <source>Reset To Default</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đặt lại về mặc định</translation>
+         <extra-contents_path>/Screenlock/Reset To Default</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="112"/>
+         <source>Bluetooth</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bluetooth</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="117"/>
+         <source>No bluetooth adapter detected, can not use Leave Lock.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không phát hiện bộ điều hợp bluetooth, không thể sử dụng Bỏ khóa.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="136"/>
+         <source>Monitor Off</source>
+-        <translation type="unfinished"></translation>
++        <translation>Màn hình tắt</translation>
+         <extra-contents_path>/Screenlock/Monitor Off</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="138"/>
+         <source>Screensaver</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trình bảo vệ màn hình</translation>
+         <extra-contents_path>/Screenlock/Screensaver</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="141"/>
+         <source>Related Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cài đặt liên quan</translation>
+         <extra-contents_path>/Screenlock/Related Settings</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="147"/>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="148"/>
+         <source>Set</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cài</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="163"/>
+         <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="530"/>
+         <source>Please select device</source>
+-        <translation type="unfinished"></translation>
++        <translation>Vui lòng chọn thiết bị</translation>
+     </message>
+ </context>
+ <context>
+@@ -10259,7 +10269,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="37"/>
+         <source>Screensaver</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trình bảo vệ màn hình</translation>
+     </message>
+     <message>
+         <source>Idle time</source>
+@@ -10314,7 +10324,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="174"/>
+         <source>UKUI</source>
+-        <translation type="unfinished"></translation>
++        <translation>UKUI</translation>
+     </message>
+     <message>
+         <source>Blank_Only</source>
+@@ -10323,35 +10333,35 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="174"/>
+         <source>Customize</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tùy chỉnh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
+         <source>5min</source>
+-        <translation type="unfinished"></translation>
++        <translation>5 phút</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
+         <source>10min</source>
+-        <translation type="unfinished"></translation>
++        <translation>10 phút</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
+         <source>15min</source>
+-        <translation type="unfinished"></translation>
++        <translation>15 phút</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
+         <source>30min</source>
+-        <translation type="unfinished"></translation>
++        <translation>30 phút</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
+         <source>1hour</source>
+-        <translation type="unfinished"></translation>
++        <translation>1 giờ</translation>
+     </message>
+     <message>
+         <source>Screensaver source</source>
+@@ -10393,7 +10403,7 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="168"/>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="180"/>
+         <source>1min</source>
+-        <translation type="unfinished"></translation>
++        <translation>1 phút</translation>
+     </message>
+     <message>
+         <source>Ordinal</source>
+@@ -10462,7 +10472,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaver.cpp" line="162"/>
+         <source>Never</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không bao giờ</translation>
+     </message>
+ </context>
+ <context>
+@@ -10470,118 +10480,118 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="40"/>
+         <source>Screensaver</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trình bảo vệ màn hình</translation>
+         <extra-contents_path>/Screensaver/Screensaver</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="53"/>
+         <source>Idle time</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thời gian nhàn rỗi</translation>
+         <extra-contents_path>/Screensaver/Idle time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="55"/>
+         <source>Screensaver program</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chương trình bảo vệ màn hình</translation>
+         <extra-contents_path>/Screensaver/Screensaver program</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="87"/>
+         <source>Screensaver source</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nguồn bảo vệ màn hình</translation>
+         <extra-contents_path>/Screensaver/Screensaver source</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="92"/>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="455"/>
+         <source>Select</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lựa</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="113"/>
+         <source>Ordinal</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thứ tự</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="114"/>
+         <source>Random</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ngẫu nhiên</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="121"/>
+         <source>Random switching</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chuyển đổi ngẫu nhiên</translation>
+         <extra-contents_path>/Screensaver/Random switching</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="141"/>
+         <source>Switching time</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thời gian chuyển đổi</translation>
+         <extra-contents_path>/Screensaver/Switching time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="160"/>
+         <source>Text(up to 30 characters):</source>
+-        <translation type="unfinished"></translation>
++        <translation>Văn bản (tối đa 30 ký tự):</translation>
+         <extra-contents_path>/Screensaver/Text(up to 30 characters):</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="183"/>
+         <source>Text position</source>
+-        <translation type="unfinished"></translation>
++        <translation>Vị trí văn bản</translation>
+         <extra-contents_path>/Screensaver/Text position</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="191"/>
+         <source>Centered</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trung tâm</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="192"/>
+         <source>Randow(Bubble text)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Randow(Văn bản bong bóng)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="214"/>
+         <source>Show rest time</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hiển thị thời gian nghỉ ngơi</translation>
+         <extra-contents_path>/Screensaver/Show rest time</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="224"/>
+         <source>Lock screen when screensaver boot</source>
+-        <translation type="unfinished"></translation>
++        <translation>Màn hình khóa khi khởi động trình bảo vệ màn hình</translation>
+         <extra-contents_path>/Screensaver/Lock screen when screensaver boot</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="413"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tệp hình nền (*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="454"/>
+         <source>select custom screensaver dir</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn hướng trình bảo vệ màn hình tùy chỉnh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="456"/>
+         <source>Position: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Vị trí: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="457"/>
+         <source>FileName: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Filename: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="458"/>
+         <source>FileType: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Loại tệp: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="459"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+ </context>
+ <context>
+@@ -10700,7 +10710,7 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../searchwidget.cpp" line="93"/>
+         <location filename="../../searchwidget.cpp" line="98"/>
+         <source>No search results</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không có kết quả tìm kiếm</translation>
+     </message>
+ </context>
+ <context>
+@@ -10824,70 +10834,70 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/vino/sharemain.cpp" line="76"/>
+         <source>Connect to your desktop remotely</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kết nối với máy tính để bàn của bạn từ xa</translation>
+         <extra-contents_path>/Vino/Connect to your desktop remotely</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/sharemain.cpp" line="81"/>
+         <source>Allow others to connect to your desktop remotely using RDP</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cho phép người khác kết nối với máy tính để bàn của bạn từ xa bằng RDP</translation>
+         <extra-contents_path>/Vino/Allow others to connect to your desktop remotely using RDP</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/sharemain.cpp" line="88"/>
+         <source>Allow others to connect to your desktop remotely using VNC</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cho phép người khác kết nối với máy tính để bàn của bạn từ xa bằng VNC</translation>
+         <extra-contents_path>/Vino/Allow others to connect to your desktop remotely using VNC</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/sharemain.cpp" line="106"/>
+         <source>Require user to enter this password while using VNC: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Yêu cầu người dùng nhập mật khẩu này khi sử dụng VNC: </translation>
+         <extra-contents_path>/Vino/Require user to enter this password while using VNC:</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/sharemain.cpp" line="112"/>
+         <source>Edit</source>
+-        <translation type="unfinished"></translation>
++        <translation>Biên tập</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/sharemain.cpp" line="124"/>
+         <source>Displays that allow remote access</source>
+-        <translation type="unfinished"></translation>
++        <translation>Màn hình cho phép truy cập từ xa</translation>
+         <extra-contents_path>/Vino/Displays that allow remote access</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/sharemain.cpp" line="132"/>
+         <source>The number of remote clients allowed to connect</source>
+-        <translation type="unfinished"></translation>
++        <translation>Số lượng máy khách từ xa được phép kết nối</translation>
+         <extra-contents_path>/Vino/The number of remote clients allowed to connect</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/sharemain.cpp" line="227"/>
+         <source>Warning</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cảnh báo</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/sharemain.cpp" line="227"/>
+         <source>please select an output</source>
+-        <translation type="unfinished"></translation>
++        <translation>Vui lòng chọn đầu ra</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/sharemain.cpp" line="72"/>
+         <source>Remote Desktop</source>
+-        <translation type="unfinished"></translation>
++        <translation>Máy tính từ xa</translation>
+         <extra-contents_path>/Vino/Remote Desktop</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/sharemain.cpp" line="94"/>
+         <source>Allow connection to control screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cho phép kết nối với màn hình điều khiển</translation>
+         <extra-contents_path>/Vino/Allow connection to control screen</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/vino/sharemain.cpp" line="100"/>
+         <source>You must confirm every visit for this machine</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bạn phải xác nhận mọi lần truy cập cho máy này</translation>
+         <extra-contents_path>/Vino/You must confirm every visit for this machine</extra-contents_path>
+     </message>
+ </context>
+@@ -10947,7 +10957,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcut.cpp" line="38"/>
+         <source>Shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lối tắt</translation>
+     </message>
+     <message>
+         <source>Desktop</source>
+@@ -10970,13 +10980,13 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="33"/>
+         <source>System Shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phím tắt hệ thống</translation>
+         <extra-contents_path>/Shortcut/System Shortcut</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="46"/>
+         <source>Customize Shortcut</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tùy chỉnh phím tắt</translation>
+         <extra-contents_path>/Shortcut/Customize Shortcut</extra-contents_path>
+     </message>
+     <message>
+@@ -10988,14 +10998,14 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="269"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="481"/>
+         <source>Null</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="230"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="362"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="617"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <source>Use</source>
+@@ -11006,46 +11016,46 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="364"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="619"/>
+         <source>Shortcut key conflict, use it?</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xung đột phím tắt, sử dụng nó?</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="233"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="365"/>
+         <source>%1 occuied, using this combination will invalidate %2</source>
+-        <translation type="unfinished"></translation>
++        <translation>%1 bị chiếm đóng, sử dụng tổ hợp này sẽ làm mất hiệu lực %2</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="256"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="395"/>
+         <source>Shortcut &quot;%1&quot; occuied, please change the key combination</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phím tắt &quot;%1&quot; bị chiếm đóng, vui lòng thay đổi tổ hợp phím</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="447"/>
+         <source>Edit</source>
+-        <translation type="unfinished"></translation>
++        <translation>Biên tập</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="448"/>
+         <source>Delete</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xóa</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="231"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="363"/>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="618"/>
+         <source>Continue</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tiếp tục</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="620"/>
+         <source>&quot;%1&quot; occuied, using this combination will invalidate &quot;%2&quot;.</source>
+-        <translation type="unfinished"></translation>
++        <translation>&quot;%1&quot; bị chiếm dụng, sử dụng tổ hợp này sẽ làm mất hiệu lực &quot;%2&quot;.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="660"/>
+         <source> or </source>
+-        <translation type="unfinished"></translation>
++        <translation> hoặc </translation>
+     </message>
+ </context>
+ <context>
+@@ -11077,60 +11087,60 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="11"/>
+         <source>Splice Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>Màn hình nối</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.ui" line="260"/>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="12"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.ui" line="279"/>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="13"/>
+         <source>Ok</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ok</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.ui" line="118"/>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="16"/>
+         <source>Splicing Method</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phương pháp nối</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="91"/>
+         <source>row</source>
+-        <translation type="unfinished"></translation>
++        <translation>hàng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="91"/>
+         <source>rows</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hàng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="92"/>
+         <source>column</source>
+-        <translation type="unfinished"></translation>
++        <translation>cột</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="92"/>
+         <source>columns</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cột</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="93"/>
+         <source>%1 %2, %3 %4</source>
+-        <translation type="unfinished"></translation>
++        <translation>%1 %2, %3 %4</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="130"/>
+         <source>Row %1, Column %2</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hàng %1, Cột %2</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/splicedialog.cpp" line="143"/>
+         <source>Select screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn màn hình</translation>
+     </message>
+ </context>
+ <context>
+@@ -11138,12 +11148,12 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/about/statusdialog.cpp" line="10"/>
+         <source>About</source>
+-        <translation type="unfinished"></translation>
++        <translation>Về</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/statusdialog.cpp" line="59"/>
+         <source>Activation Code</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mã kích hoạt</translation>
+     </message>
+ </context>
+ <context>
+@@ -11561,116 +11571,116 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="111"/>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="534"/>
+         <source>Theme</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đề tài</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
+         <source>Default</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mặc định</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
+         <source>Light</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ánh sáng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
+         <source>Dark</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tối</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="190"/>
+         <source>Auto</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xe ô tô</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="423"/>
+         <source>Corlor</source>
+-        <translation type="unfinished"></translation>
++        <translation>Corlor</translation>
+         <extra-contents_path>/Theme/Corlor</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="608"/>
+         <source>Other</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khác</translation>
+         <extra-contents_path>/Theme/Other</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="613"/>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
+         <source>Set</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cài</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="611"/>
+         <source>Wallpaper</source>
+-        <translation type="unfinished"></translation>
++        <translation>Giấy dán tường</translation>
+         <extra-contents_path>/Theme/Wallpaper</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="224"/>
+         <source>Corner</source>
+-        <translation type="unfinished"></translation>
++        <translation>Góc</translation>
+         <extra-contents_path>/Theme/Corner</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
+         <source>Right angle</source>
+-        <translation type="unfinished"></translation>
++        <translation>Góc vuông</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
+         <source>Small</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhỏ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="232"/>
+         <source>Big</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lớn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="615"/>
+         <source>Beep</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bíp</translation>
+         <extra-contents_path>/Theme/Beep</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="963"/>
+         <source>Blue-Crystal</source>
+-        <translation type="unfinished"></translation>
++        <translation>Pha lê xanh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="965"/>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
+         <source>Light-Seeking</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tìm kiếm ánh sáng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="967"/>
+         <source>DMZ-Black</source>
+-        <translation type="unfinished"></translation>
++        <translation>DMZ-Đen</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="969"/>
+         <source>DMZ-White</source>
+-        <translation type="unfinished"></translation>
++        <translation>DMZ-Trắng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="971"/>
+         <source>Dark-Sense</source>
+-        <translation type="unfinished"></translation>
++        <translation>Dark-Sense</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1045"/>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
+         <source>basic</source>
+-        <translation type="unfinished"></translation>
++        <translation>cơ bản</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
+         <source>Classic</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cổ điển</translation>
+     </message>
+     <message>
+         <source>Origins-Tracing</source>
+@@ -11683,57 +11693,57 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1053"/>
+         <source>hp</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hp</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
+         <source>ukui</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ukui</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1051"/>
+         <source>HeYin</source>
+-        <translation type="unfinished"></translation>
++        <translation>HeYin</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
+         <source>classic</source>
+-        <translation type="unfinished"></translation>
++        <translation>cổ điển</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1057"/>
+         <source>daybreakBlue</source>
+-        <translation type="unfinished"></translation>
++        <translation>bình minh màu xanh lam</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1059"/>
+         <source>jamPurple</source>
+-        <translation type="unfinished"></translation>
++        <translation>mứtMàu tím</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1061"/>
+         <source>magenta</source>
+-        <translation type="unfinished"></translation>
++        <translation>Magenta</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1063"/>
+         <source>sunRed</source>
+-        <translation type="unfinished"></translation>
++        <translation>mặt trờiđỏ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1065"/>
+         <source>sunsetOrange</source>
+-        <translation type="unfinished"></translation>
++        <translation>hoàng hônMàu cam</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1067"/>
+         <source>dustGold</source>
+-        <translation type="unfinished"></translation>
++        <translation>bụi vàng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="1069"/>
+         <source>polarGreen</source>
+-        <translation type="unfinished"></translation>
++        <translation>polarXanh lá cây</translation>
+     </message>
+     <message>
+         <source>default</source>
+@@ -11746,13 +11756,13 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="248"/>
+         <source>Window Theme</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chủ đề cửa sổ</translation>
+         <extra-contents_path>/Theme/Window Theme</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="250"/>
+         <source>Icon theme</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chủ đề biểu tượng</translation>
+         <extra-contents_path>/Theme/Icon theme</extra-contents_path>
+     </message>
+     <message>
+@@ -11762,19 +11772,19 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="253"/>
+         <source>Cursor theme</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chủ đề con trỏ</translation>
+         <extra-contents_path>/Theme/Cursor theme</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="215"/>
+         <source>Effect setting</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cài đặt hiệu ứng</translation>
+         <extra-contents_path>/Theme/Effect setting</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="222"/>
+         <source>Transparency</source>
+-        <translation type="unfinished"></translation>
++        <translation>Minh bạch</translation>
+         <extra-contents_path>/Theme/Transparency</extra-contents_path>
+     </message>
+     <message>
+@@ -11784,7 +11794,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/theme/theme.cpp" line="220"/>
+         <source>Performance mode</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chế độ hiệu suất</translation>
+         <extra-contents_path>/Theme/Performance mode</extra-contents_path>
+     </message>
+     <message>
+@@ -11813,27 +11823,27 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="106"/>
+         <source>Tomorrow</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mai</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="108"/>
+         <source>Yesterday</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hôm qua</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="110"/>
+         <source>Today</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hôm nay</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="128"/>
+         <source>%1 hours earlier than local</source>
+-        <translation type="unfinished"></translation>
++        <translation>%1 giờ sớm hơn địa phương</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="130"/>
+         <source>%1 hours later than local</source>
+-        <translation type="unfinished"></translation>
++        <translation>%1 giờ muộn hơn địa phương</translation>
+     </message>
+ </context>
+ <context>
+@@ -11841,12 +11851,12 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="35"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="37"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác nhận</translation>
+     </message>
+     <message>
+         <source>Change time zone</source>
+@@ -11855,7 +11865,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="33"/>
+         <source>Search Timezone</source>
+-        <translation type="unfinished"></translation>
++        <translation>Múi giờ tìm kiếm</translation>
+     </message>
+     <message>
+         <source>Input what you are looking for</source>
+@@ -11864,7 +11874,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="64"/>
+         <source>To select a time zone, please click where near you on the map and select a city from the nearest city</source>
+-        <translation type="unfinished"></translation>
++        <translation>Để chọn múi giờ, vui lòng nhấp vào vị trí gần bạn trên bản đồ và chọn một thành phố từ thành phố gần nhất</translation>
+     </message>
+     <message>
+         <source>change timezone</source>
+@@ -11877,7 +11887,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="40"/>
+         <source>Change Timezone</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thay đổi múi giờ</translation>
+     </message>
+ </context>
+ <context>
+@@ -12014,19 +12024,21 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/about/trialdialog.cpp" line="12"/>
+         <source>Set</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cài</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/trialdialog.cpp" line="37"/>
+         <source>Yinhe Kylin OS(Trail Version) Disclaimer</source>
+-        <translation type="unfinished"></translation>
++        <translation>Yinhe Kylin OS (Phiên bản đường mòn) Tuyên bố từ chối trách nhiệm</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/trialdialog.cpp" line="46"/>
+         <source>Dear customer:
+        Thank you for trying Yinhe Kylin OS(trail version)! This version is free for users who only try out, no commercial purpose is permitted. The trail period lasts one year and it starts from the ex-warehouse time of the OS. No after-sales service is provided during the trail stage. If any security problems occurred when user put important files or do any commercial usage in system, all consequences are taken by users. Kylin software Co., Ltd. take no legal risk in trail version.
+        During trail stage,if you want any technology surpport or activate the system, please buy“Yinhe Kylin Operating System”official version or authorization by contacting 400-089-1870.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kính gửi khách hàng:
++       Cảm ơn bạn đã dùng thử hệ điều hành Yinhe Kylin (phiên bản đường mòn)! Phiên bản này miễn phí cho những người dùng chỉ dùng thử, không cho phép mục đích thương mại. Thời gian theo dõi kéo dài một năm và nó bắt đầu từ thời gian xuất kho của hệ điều hành. Không có dịch vụ sau bán hàng nào được cung cấp trong giai đoạn đường mòn. Nếu có bất kỳ sự cố bảo mật nào xảy ra khi người dùng đặt các tệp quan trọng hoặc thực hiện bất kỳ mục đích thương mại nào trong hệ thống, mọi hậu quả đều do người dùng chịu. Kylin software Co., Ltd. không chịu rủi ro pháp lý trong phiên bản đường mòn.
++       Trong giai đoạn đường mòn, nếu bạn muốn có bất kỳ công nghệ nào được hỗ trợ hoặc kích hoạt hệ thống, vui lòng mua &quot;Hệ điều hành Yinhe Kylin&quot; phiên bản chính thức hoặc ủy quyền bằng cách liên hệ với 400-089-1870.</translation>
+     </message>
+     <message>
+         <source>Dear customer:
+@@ -12039,7 +12051,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/about/trialdialog.cpp" line="60"/>
+         <source>Kylin software Co., Ltd.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Công ty TNHH phần mềm Kylin</translation>
+     </message>
+     <message>
+         <source>www.Kylinos.cn</source>
+@@ -12052,7 +12064,7 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../ukccabout.cpp" line="34"/>
+         <location filename="../../ukccabout.cpp" line="61"/>
+         <source>Settings</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cài đặt</translation>
+     </message>
+     <message>
+         <source>UKCC</source>
+@@ -12061,12 +12073,12 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../ukccabout.cpp" line="66"/>
+         <source>Version: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Phiên bản: </translation>
+     </message>
+     <message>
+         <location filename="../../ukccabout.cpp" line="76"/>
+         <source>Service and Support:</source>
+-        <translation type="unfinished"></translation>
++        <translation>Dịch vụ và Hỗ trợ:</translation>
+     </message>
+     <message>
+         <source>Developer</source>
+@@ -12325,48 +12337,48 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="91"/>
+         <source>resolution</source>
+-        <translation type="unfinished"></translation>
++        <translation>nghị quyết</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="118"/>
+         <source>orientation</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hướng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="122"/>
+         <source>arrow-up</source>
+-        <translation type="unfinished"></translation>
++        <translation>mũi tên lên</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="123"/>
+         <source>90° arrow-right</source>
+-        <translation type="unfinished"></translation>
++        <translation>90° mũi tên phải</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="125"/>
+         <source>arrow-down</source>
+-        <translation type="unfinished"></translation>
++        <translation>mũi tên xuống</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="124"/>
+         <source>90° arrow-left</source>
+-        <translation type="unfinished"></translation>
++        <translation>90° mũi tên trái</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="148"/>
+         <source>auto rotation</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tự động xoay</translation>
+         <extra-contents_path>/Display/auto rotation</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="200"/>
+         <source>frequency</source>
+-        <translation type="unfinished"></translation>
++        <translation>tần số</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="243"/>
+         <source>screen zoom</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thu phóng màn hình</translation>
+         <extra-contents_path>/Display/screen zoom</extra-contents_path>
+     </message>
+     <message>
+@@ -12376,7 +12388,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/unifiedoutputconfig.cpp" line="406"/>
+         <source>auto</source>
+-        <translation type="unfinished"></translation>
++        <translation>xe ô tô</translation>
+     </message>
+ </context>
+ <context>
+@@ -12464,12 +12476,12 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1045"/>
+         <source>root</source>
+-        <translation type="unfinished"></translation>
++        <translation>rễ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1013"/>
+         <source>Hint</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kháy</translation>
+     </message>
+     <message>
+         <source>Modify the account type need to logout to take effect, whether to logout?</source>
+@@ -12478,32 +12490,32 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="913"/>
+         <source>The account type of “%1” has been modified, will take effect after logout, whether to logout?</source>
+-        <translation type="unfinished"></translation>
++        <translation>Loại tài khoản &quot;%1&quot; đã được sửa đổi, sẽ có hiệu lực sau khi đăng xuất, có đăng xuất hay không?</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="914"/>
+         <source>logout later</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đăng xuất sau</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="915"/>
+         <source>logout now</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đăng xuất ngay</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1014"/>
+         <source>The system only allows one user to log in automatically.After it is turned on, the automatic login of other users will be turned off.Is it turned on?</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hệ thống chỉ cho phép một người dùng đăng nhập tự động. Sau khi nó được bật, đăng nhập tự động của những người dùng khác sẽ bị tắt. Nó đã được bật chưa?</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1017"/>
+         <source>Trun on</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trun trên</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1018"/>
+         <source>Close on</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đóng vào</translation>
+     </message>
+     <message>
+         <source>Add biometric feature</source>
+@@ -12520,12 +12532,12 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1041"/>
+         <source>Standard</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chuẩn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1043"/>
+         <source>Admin</source>
+-        <translation type="unfinished"></translation>
++        <translation>Admin</translation>
+     </message>
+     <message>
+         <source>Del</source>
+@@ -12534,60 +12546,60 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="171"/>
+         <source>CurrentUser</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người dùng hiện tại</translation>
+         <extra-contents_path>/Userinfo/CurrentUser</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="177"/>
+         <source>OthersUser</source>
+-        <translation type="unfinished"></translation>
++        <translation>KhácNgười dùng</translation>
+         <extra-contents_path>/Userinfo/OthersUser</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="179"/>
+         <source>Add</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thêm</translation>
+         <extra-contents_path>/Userinfo/Add</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="309"/>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="207"/>
+         <source>Password</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mật khẩu</translation>
+         <extra-contents_path>/Userinfo/Password</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="219"/>
+         <source>Groups</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhóm</translation>
+         <extra-contents_path>/Userinfo/Groups</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="271"/>
+         <source>AutoLoginOnBoot</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tự động đăng nhậpKhởi động</translation>
+         <extra-contents_path>/Userinfo/AutoLoginOnBoot</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="266"/>
+         <source>LoginWithoutPwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đăng nhập Không có Pwd</translation>
+         <extra-contents_path>/Userinfo/LoginWithoutPwd</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
+         <source>Warning</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cảnh báo</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
+         <source>The user is logged in, please delete the user after logging out</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người dùng đã đăng nhập, vui lòng xóa người dùng sau khi đăng xuất</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="41"/>
+         <source>Current User</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người dùng hiện tại</translation>
+     </message>
+     <message>
+         <source>Change pwd</source>
+@@ -12614,7 +12626,7 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="331"/>
+         <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="213"/>
+         <source>Type</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kiểu</translation>
+         <extra-contents_path>/Userinfo/Type</extra-contents_path>
+     </message>
+     <message>
+@@ -12624,17 +12636,17 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="353"/>
+         <source>Group</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhóm</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="422"/>
+         <source>Login no passwd</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đăng nhập không có passwd</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="500"/>
+         <source>Automatic login at boot</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đăng nhập tự động khi khởi động</translation>
+     </message>
+     <message>
+         <source>Currently in Live mode, please create a new user and log out</source>
+@@ -12663,7 +12675,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="568"/>
+         <source>Other Users</source>
+-        <translation type="unfinished"></translation>
++        <translation>Người dùng khác</translation>
+     </message>
+     <message>
+         <source>Add new user</source>
+@@ -12748,27 +12760,27 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="32"/>
+         <source>Password</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mật khẩu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="36"/>
+         <source>Type</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kiểu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="40"/>
+         <source>Delete</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xóa</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="216"/>
+         <source>Standard</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chuẩn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/utilsforuserinfo.cpp" line="218"/>
+         <source>Admin</source>
+-        <translation type="unfinished"></translation>
++        <translation>Admin</translation>
+     </message>
+ </context>
+ <context>
+@@ -12776,7 +12788,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/vino/vino.cpp" line="28"/>
+         <source>Vino</source>
+-        <translation type="unfinished"></translation>
++        <translation>Vino</translation>
+     </message>
+ </context>
+ <context>
+@@ -12849,19 +12861,19 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="31"/>
+         <source>Background</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nền</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="156"/>
+         <source>picture</source>
+-        <translation type="unfinished"></translation>
++        <translation>tranh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="153"/>
+         <source>color</source>
+-        <translation type="unfinished"></translation>
++        <translation>màu</translation>
+     </message>
+     <message>
+         <source>Add custom shortcut</source>
+@@ -12875,42 +12887,42 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="167"/>
+         <source>wallpaper</source>
+-        <translation type="unfinished"></translation>
++        <translation>giấy dán tường</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="169"/>
+         <source>centered</source>
+-        <translation type="unfinished"></translation>
++        <translation>Trung tâm</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="165"/>
+         <source>scaled</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thu nhỏ</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="171"/>
+         <source>stretched</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kéo dài</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="173"/>
+         <source>zoom</source>
+-        <translation type="unfinished"></translation>
++        <translation>Zoom</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="175"/>
+         <source>spanned</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kéo dài</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="219"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tệp hình nền (*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</translation>
+     </message>
+     <message>
+         <source>allFiles(*.*)</source>
+@@ -12919,32 +12931,32 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="259"/>
+         <source>select custom wallpaper file</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chọn tệp hình nền tùy chỉnh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="260"/>
+         <source>Select</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lựa</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="261"/>
+         <source>Position: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Vị trí: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="262"/>
+         <source>FileName: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Filename: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="263"/>
+         <source>FileType: </source>
+-        <translation type="unfinished"></translation>
++        <translation>Loại tệp: </translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="264"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+ </context>
+ <context>
+@@ -12952,37 +12964,37 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="28"/>
+         <source>Background</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nền</translation>
+         <extra-contents_path>/Wallpaper/Background</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="30"/>
+         <source>Type</source>
+-        <translation type="unfinished"></translation>
++        <translation>Kiểu</translation>
+         <extra-contents_path>/Wallpaper/Type</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="66"/>
+         <source>Desktop Background</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nền máy tính để bàn</translation>
+         <extra-contents_path>/Wallpaper/Desktop Background</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="93"/>
+         <source>Local Pictures</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hình ảnh địa phương</translation>
+         <extra-contents_path>/Wallpaper/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="95"/>
+         <source>Online Pictures</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hình ảnh trực tuyến</translation>
+         <extra-contents_path>/Wallpaper/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="97"/>
+         <source>Reset To Default</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đặt lại về mặc định</translation>
+         <extra-contents_path>/Wallpaper/Reset To Default</extra-contents_path>
+     </message>
+ </context>
+@@ -13008,7 +13020,7 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="267"/>
+         <source>Night Mode</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chế độ ban đêm</translation>
+         <extra-contents_path>/Display/Night Mode</extra-contents_path>
+     </message>
+     <message>
+@@ -13016,46 +13028,46 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1987"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2013"/>
+         <source>Open</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mở</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
+         <source>When turned on, it will reduce the blue light of the screen.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khi được bật, nó sẽ làm giảm ánh sáng xanh của màn hình.</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="283"/>
+         <source>Color Temperature And Eye Care</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhiệt độ màu và chăm sóc mắt</translation>
+         <extra-contents_path>/Display/Color Temperature And Eye Care</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="291"/>
+         <source>Time</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thời gian</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="301"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
+         <source>Custom Time</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thời gian tùy chỉnh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="312"/>
+         <source>to</source>
+-        <translation type="unfinished"></translation>
++        <translation>đến</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="285"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="330"/>
+         <source>Color Temperature</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhiệt độ màu</translation>
+         <extra-contents_path>/Display/Color Temperature</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
+         <source>When turned on, it can reduce blue light to prevent eye, the screen will turn yellow.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Khi được bật, nó có thể giảm ánh sáng xanh để ngăn mắt, màn hình sẽ chuyển sang màu vàng.</translation>
+     </message>
+     <message>
+         <source>Night Mode And Eye Care</source>
+@@ -13064,54 +13076,54 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="332"/>
+         <source>Warmer</source>
+-        <translation type="unfinished"></translation>
++        <translation>Ấm</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="333"/>
+         <source>Colder</source>
+-        <translation type="unfinished"></translation>
++        <translation>Lạnh</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="611"/>
+         <source>Multi-screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đa màn hình</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="616"/>
+         <source>First Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>Màn hình đầu tiên</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="620"/>
+         <source>Clone Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>Màn hình sao chép</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="622"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2639"/>
+         <source>Splice Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>Màn hình nối</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1986"/>
+         <source>Turning on &apos;Eye Protection Mode&apos; will turn off &apos;Color Temperature&apos;. Continue turning it on?</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bật &apos;Chế độ bảo vệ mắt&apos; sẽ tắt &apos;Nhiệt độ màu&apos;. Tiếp tục bật nó lên?</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1988"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2014"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2012"/>
+         <source>Turning on &apos;Color Temperature&apos; will turn off &apos;Eye Protection Mode&apos;. Continue turning it on?</source>
+-        <translation type="unfinished"></translation>
++        <translation>Bật &apos;Nhiệt độ màu&apos; sẽ tắt &apos;Chế độ bảo vệ mắt&apos;. Tiếp tục bật nó lên?</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2745"/>
+         <source>Auto Brightness</source>
+-        <translation type="unfinished"></translation>
++        <translation>Độ sáng tự động</translation>
+         <extra-contents_path>/Display/Auto Brightness</extra-contents_path>
+     </message>
+     <message>
+@@ -13121,48 +13133,48 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="793"/>
+         <source>scale</source>
+-        <translation type="unfinished"></translation>
++        <translation>vảy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="798"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after 14 seconds&lt;/font&gt;</source>
+-        <translation type="unfinished"></translation>
++        <translation>Màn hình%1 đã được sửa đổi, có lưu nó không? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt; cài đặt sẽ được khôi phục sau 14 giây&lt;/font&gt;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="809"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after %2 seconds&lt;/font&gt;</source>
+-        <translation type="unfinished"></translation>
++        <translation>Màn hình%1 đã được sửa đổi, có lưu nó không? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt; cài đặt sẽ được khôi phục sau%2 giây&lt;/font&gt;</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1023"/>
+         <source>The zoom has been modified, it will take effect after you log off</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thu phóng đã được sửa đổi, nó sẽ có hiệu lực sau khi bạn đăng xuất</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1042"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1052"/>
+         <source>(Effective after logout)</source>
+-        <translation type="unfinished"></translation>
++        <translation>(Có hiệu lực sau khi đăng xuất)</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2702"/>
+         <source>Splicing Method</source>
+-        <translation type="unfinished"></translation>
++        <translation>Phương pháp nối</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2705"/>
+         <source>Change</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thay đổi</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2774"/>
+         <source>as main</source>
+-        <translation type="unfinished"></translation>
++        <translation>như chính</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2795"/>
+         <source>open monitor</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mở màn hình</translation>
+     </message>
+     <message>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after 14 seconds&lt;/font&gt;</source>
+@@ -13176,28 +13188,28 @@ E-mail: support@kylinos.cn</source>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2253"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2259"/>
+         <source>Follow the sunrise and sunset</source>
+-        <translation type="unfinished"></translation>
++        <translation>Theo dõi bình minh và hoàng hôn</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="619"/>
+         <source>Extend Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mở rộng màn hình</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
+         <source>Eye Protection Mode</source>
+-        <translation type="unfinished"></translation>
++        <translation>Chế độ bảo vệ mắt</translation>
+         <extra-contents_path>/Display/Eye protection mode</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="617"/>
+         <source>Vice Screen</source>
+-        <translation type="unfinished"></translation>
++        <translation>Màn hình phó</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2773"/>
+         <source>monitor</source>
+-        <translation type="unfinished"></translation>
++        <translation>màn hình</translation>
+     </message>
+     <message>
+         <source>Information</source>
+@@ -13210,17 +13222,17 @@ E-mail: support@kylinos.cn</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="784"/>
+         <source>resolution</source>
+-        <translation type="unfinished"></translation>
++        <translation>nghị quyết</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="787"/>
+         <source>orientation</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hướng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="790"/>
+         <source>frequency</source>
+-        <translation type="unfinished"></translation>
++        <translation>tần số</translation>
+     </message>
+     <message>
+         <source>Hint</source>
+@@ -13234,12 +13246,12 @@ the settings will be saved after 14 seconds</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="778"/>
+         <source>Save</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cứu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="777"/>
+         <source>Not Save</source>
+-        <translation type="unfinished"></translation>
++        <translation>Không lưu</translation>
+     </message>
+     <message>
+         <source>After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display
+@@ -13253,17 +13265,17 @@ the settings will be saved after %1 seconds</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1024"/>
+         <source>Log out now</source>
+-        <translation type="unfinished"></translation>
++        <translation>Đăng xuất ngay</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1025"/>
+         <source>Later</source>
+-        <translation type="unfinished"></translation>
++        <translation>Sau đó</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
+         <source>All Day</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cả ngày</translation>
+     </message>
+     <message>
+         <source>Follow the sunrise and sunset(17:55-06:23)</source>
+@@ -13273,7 +13285,7 @@ the settings will be saved after %1 seconds</source>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2284"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2290"/>
+         <source>Brightness</source>
+-        <translation type="unfinished"></translation>
++        <translation>Độ sáng</translation>
+         <extra-contents_path>/Display/Brightness</extra-contents_path>
+     </message>
+     <message>
+@@ -13299,7 +13311,7 @@ If something goes wrong, the settings will be restored after 9 seconds</source>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="2782"/>
+         <source>screen zoom</source>
+-        <translation type="unfinished"></translation>
++        <translation>Thu phóng màn hình</translation>
+     </message>
+     <message>
+         <source>Mirror Display</source>
+@@ -13341,14 +13353,14 @@ If something goes wrong, the settings will be restored after %1 seconds</source>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
+         <source>please insure at least one output!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Vui lòng đảm bảo ít nhất một đầu ra!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1496"/>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
+         <source>Warning</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cảnh báo</translation>
+     </message>
+     <message>
+         <source>The screen resolution has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be saved after 14 seconds&lt;/font&gt;</source>
+@@ -13370,7 +13382,8 @@ If something goes wrong, the settings will be restored after %1 seconds</source>
+         <location filename="../../../plugins/system/display/widget.cpp" line="1497"/>
+         <source>Sorry, your configuration could not be applied.
+ Common reasons are that the overall screen size is too big, or you enabled more displays than supported by your GPU.</source>
+-        <translation type="unfinished"></translation>
++        <translation>Rất tiếc, cấu hình của bạn không thể được áp dụng.
++Lý do phổ biến là kích thước màn hình tổng thể quá lớn hoặc bạn đã bật nhiều màn hình hơn mức GPU của bạn hỗ trợ.</translation>
+     </message>
+     <message>
+         <source>@title:window</source>
+@@ -13556,73 +13569,73 @@ Common reasons are that the overall screen size is too big, or you enabled more
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="33"/>
+         <source>user group</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhóm người dùng</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="122"/>
+         <source>Group:</source>
+-        <translation type="unfinished"></translation>
++        <translation>Nhóm:</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="135"/>
+         <source>GID:</source>
+-        <translation type="unfinished"></translation>
++        <translation>GID:</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="149"/>
+         <source>GNum:</source>
+-        <translation type="unfinished"></translation>
++        <translation>GNum:</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="193"/>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="610"/>
+         <source>Cancel</source>
+-        <translation type="unfinished"></translation>
++        <translation>Hủy</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="196"/>
+         <source>Save</source>
+-        <translation type="unfinished"></translation>
++        <translation>Cứu</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="611"/>
+         <source>Confirm</source>
+-        <translation type="unfinished"></translation>
++        <translation>Xác nhận</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="565"/>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="573"/>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="649"/>
+         <source>Tips</source>
+-        <translation type="unfinished"></translation>
++        <translation>Mẹo</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="565"/>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="649"/>
+         <source>Invalid Id!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Id không hợp lệ!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="568"/>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="576"/>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="652"/>
+         <source>OK</source>
+-        <translation type="unfinished"></translation>
++        <translation>OK</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="573"/>
+         <source>Invalid Group Name!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Tên nhóm không hợp lệ!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="608"/>
+         <source>Whether delete the group: “%1” ?</source>
+-        <translation type="unfinished"></translation>
++        <translation>Có xóa nhóm: &quot;%1&quot; hay không?</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeusergroup.cpp" line="609"/>
+         <source>which will make some file components in the file system invalid!</source>
+-        <translation type="unfinished"></translation>
++        <translation>Điều này sẽ làm cho một số thành phần tệp trong hệ thống tệp không hợp lệ!</translation>
+     </message>
+ </context>
+ <context>
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0136-170-fix-ukui-control-center-fix-theme-auto.patch ukui-control-center-4.10.0.0/debian/patches/0136-170-fix-ukui-control-center-fix-theme-auto.patch
--- ukui-control-center-4.10.0.0/debian/patches/0136-170-fix-ukui-control-center-fix-theme-auto.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0136-170-fix-ukui-control-center-fix-theme-auto.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,17029 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Thu, 20 Feb 2025 08:31:24 +0000
+Subject: =?utf-8?q?!170_fix=28ukui-control-center=29=3A_fix_theme_auto_Merg?=
+ =?utf-8?q?e_pull_request_!170_from_=E8=8B=8F=E5=97=A3=E5=85=B8/openkylin/n?=
+ =?utf-8?q?ile-1126?=
+
+---
+ data/Ukcc-Agreement-OK-en_US.txt                   |  170 ---
+ data/Ukcc-Agreement-OK-zh_CN.txt                   |  152 ---
+ data/Ukcc-Agreement-bo_CN.txt                      |   32 -
+ data/Ukcc-Agreement-en_US.txt                      |  170 ---
+ data/Ukcc-Agreement-zh_CN.txt                      |  187 ----
+ plugins/personalized/theme/theme.cpp               |   73 +-
+ plugins/system/about/res/Ukcc-Agreement-en_US.txt  |    3 +-
+ plugins/time-language/area/area.cpp                |    9 +-
+ registeredSession/plugins/area/areainterface.cpp   |    6 +-
+ .../plugins/shortcut/shortcutinterface.cpp         |    9 +
+ registeredSession/plugins/shortcut/type.cpp        |   53 +
+ registeredSession/plugins/shortcut/type.h          |   12 +
+ registeredSession/registeredSession.pro            |    1 +
+ shell/mainwindow.cpp                               |   49 +-
+ shell/mainwindow.h                                 |    3 +
+ shell/res/i18n/bo_CN.ts                            | 1063 +++++++++----------
+ shell/res/i18n/en_US.ts                            | 1094 ++++++++++----------
+ shell/res/i18n/mn.ts                               | 1063 +++++++++----------
+ shell/res/i18n/zh_CN.ts                            | 1063 +++++++++----------
+ shell/res/i18n/zh_HK.ts                            | 1063 +++++++++----------
+ shell/shell.pro                                    |    3 -
+ tests/unit_test_shortcut/unit_test_shortcut.pro    |    1 +
+ 22 files changed, 2823 insertions(+), 3456 deletions(-)
+ delete mode 100644 data/Ukcc-Agreement-OK-en_US.txt
+ delete mode 100644 data/Ukcc-Agreement-OK-zh_CN.txt
+ delete mode 100644 data/Ukcc-Agreement-bo_CN.txt
+ delete mode 100644 data/Ukcc-Agreement-en_US.txt
+ delete mode 100644 data/Ukcc-Agreement-zh_CN.txt
+ create mode 100644 registeredSession/plugins/shortcut/type.cpp
+
+diff --git a/data/Ukcc-Agreement-OK-en_US.txt b/data/Ukcc-Agreement-OK-en_US.txt
+deleted file mode 100644
+index 0a6d127..0000000
+--- a/data/Ukcc-Agreement-OK-en_US.txt
++++ /dev/null
+@@ -1,170 +0,0 @@
+-Dear users of Kylin operating system and relevant products, 
+-         This agreement describes your rights, obligations and prerequisites for your use of this product. Please read the clauses of the Agreement and the supplementary license (hereinafter collectively referred to as “the Agreement”) and the privacy policy statement for Kylin operating system (hereinafter referred to as “the Statement”).
+-        “This product” in the Agreement and the Statement refers to “Kylin operating system software product” developed, produced and released by Kylinsoft Co., Ltd. and used for handling the office work or building the information infrastructure for enterprises and governments. “We” refers to Kylinsoft Co., Ltd. “You” refers to the users who pay the license fee and use the Kylin operating system and relevant products.
+-
+-End User License Agreement of Kylin 
+-Release date of the version: July 30, 2021
+-Effective date of the version: July 30, 2021
+-        The Agreement shall include the following content:
+-        I.     User license 
+-        II.    Java technology limitations
+-        III.   Cookies and other technologies
+-        IV.    Intellectual property clause
+-        V.     Open source code
+-        VI.   The third-party software/services
+-        VII.  Escape clause
+-        VIII. Integrity and severability of the Agreement
+-        IX.    Applicable law and dispute settlement
+-
+-        I.      User license
+-        According to the number of users who have paid for this product and the types of computer hardware, we shall grant the non-exclusive and non-transferable license to you, and shall only allow the licensed unit and the employees signing the labor contracts with the unit to use the attached software (hereinafter referred to as “the Software”) and documents as well as any error correction provided by Kylinsoft.
+-        1.     User license for educational institutions
+-        In the case of observing the clauses and conditions of the Agreement, if you are an educational institution, your institution shall be allowed to use the attached unmodified binary format software and only for internal use. “For internal use” here refers to that the licensed unit and the employees signing the labor contracts with the unit as well as the students enrolled by your institution can use this product.
+-        2.     Use of the font software
+-        Font software refers to the software pre-installed in the product and generating font styles. You cannot separate the font software from the Software and cannot modify the font software in an attempt to add any function that such font software, as a part of this product, does not have when it is delivered to you, or you cannot embed the font software in the files provided as a commercial product for any fee or other remuneration, or cannot use it in equipment where this product is not installed. If you use the font software for other commercial purposes such as external publicity, please contact and negotiate with the font copyright manufacture to obtain the permissions for your relevant acts.
+-
+-        II.    Java technology limitations
+-        You cannot change the “Java Platform Interface” (referred to as “JPI”, that is, the classes in the “java” package or any sub-package of the “java” package), whether by creating additional classes in JPI or by other means to add or change the classes in JPI. If you create an additional class as well as one or multiple relevant APIs, and they (i) expand the functions of Java platform; And (ii) may be used by the third-party software developers to develop additional software that may call the above additional APIs, you must immediately publish the accurate description of such APIs widely for free use by all developers. You cannot create or authorize other licensees to create additional classes, interfaces or sub-packages marked as “java”, “javax” and “sun” in any way, or similar agreements specified by Sun in any naming agreements. See the appropriate version of the Java Runtime Environment Binary Code License (located at http://jdk.java.net at present) to understand the availability of runtime code jointly distributed with Java mini programs and applications.
+-
+-        III.   Cookies and other technologies
+-        In order to help us better understand and serve the users, our website, online services and applications may use the “Cookie” technology. Such Cookies are used to store the network traffic entering and exiting the system and the traffic generated due to detection errors, so they must be set. We shall understand how you interact with our website and online services by using such Cookies.
+-        If you want to disable the Cookie and use the Firefox browser, you may set it in Privacy and Security Center of Firefox. If your use other browsers, please consult the specific schemes from the relevant suppliers.
+-        In accordance with Article 76, paragraph 5 of the Network Security Law of the People's Republic of China, personal information refers to all kinds of information recorded in electronic or other ways, which can identify the natural persons’ personal identity separately or combined with other information, including but not limited to the natural person’s name, date of birth, identity certificate number, personal biological identification information, address and telephone number, etc. If Cookies contain the above information, or the combined information of non-personal information and other personal information collected through Cookie, for the purpose of this privacy policy, we shall regard the combined information as personal privacy information, and shall provide the corresponding security protection measures for your personal information by referring to Kylin Privacy Policy Statement.
+-
+-        IV.   Intellectual property clause
+-        1.    Trademarks and Logos
+-        This product shall be protected by the copyright law, trademark law and other laws and international intellectual property conventions. Title to the product and all associated intellectual property rights are retained by us or its licensors. No right, title or interest in any trademark, service mark, logo or trade name of us or its licensors is granted under the Agreement. Any use of Kylinsoft marked by you shall be in favor of Kylinsoft, and without our consent, you shall not arbitrarily use any trademark or sign of Kylinsoft.
+-        2.    Duplication, modification and distribution
+-        If the Agreement remains valid for all duplicates, you may and must duplicate, modify and distribute software observing GNU GPL-GNU General Public License agreement among the Kylin operating system software products in accordance with GNU GPL-GNU General Public License, and must duplicate, modify and distribute other Kylin operating system software products not observing GNU GPL-GNU General Public License agreement in accordance with relevant laws and other license agreements, but no derivative release version based on the Kylin operating system software products can use any of our trademarks or any other signs without our written consent.
+-        Special notes: Such duplication, modification and distribution shall not include any software, to which GNU GPL-GNU General Public License does not apply, in this product, such as the software store, input method software, font library software and third-party applications contained by the Kylin operating system software products. You shall not duplicate, modify (including decompilation or reverse engineering) or distribute the above software unless prohibited by applicable laws.
+-
+-        V.    Open source code
+-        For any open source codes contained in this product, any clause of the Agreement shall not limit, constrain or otherwise influence any of your corresponding rights or obligations under any applicable open source code license or all kinds of conditions you shall observe.
+-
+-        VI.  The third-party software/services
+-        The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer. This product may contain or be bundled with the third-party software/services to which the separate license agreements are attached. When you use any third-party software/services with separate license agreements, you shall be bound by such separate license agreements.
+-        We shall not have any right to control the third-party software/services in these products and shall not expressly or implicitly ensure or guarantee the legality, accuracy, effectiveness or security of the acts of their providers or users.
+-
+-        VII. Escape clause
+-        1.    Limited warranty
+-        We guarantee to you that within ninety (90) days from the date when you purchase or obtain this product in other legal ways (subject to the date of the sales contract), the storage medium (if any) of this product shall not be involved in any defects in materials or technology when it is normally used. All compensation available to you and our entire liability under this limited warranty will be for us to choose to replace this product media or refund the fee paid for this product.
+-        2.   Disclaimer
+-        In addition to the above limited warranty, the Software is provided “as is” without any express or implied condition statement and warranty, including any implied warranty of merchantability, suitability for a particular purpose or non-infringement, except that this disclaimer is deemed to be legally invalid.
+-        3.   Limitation of responsibility
+-        To the extent permitted by law, under any circumstances, no matter what theory of liability is adopted, no matter how it is caused, for any loss of income, profit or data caused by or related to the use or inability to use the Software, or for special indirect consequential incidental or punitive damages, neither we nor its licensors shall be liable (even if we have been informed of the possibility of such damages). According to the Agreement, in any case, whether in contract tort (including negligence) or otherwise, our liability to you will not exceed the amount you pay for the Software. The above limitations will apply even if the above warranty fails of its essential purpose.
+-
+-        VIII.Integrity and severability of the Agreement
+-        1.    The integrity of the Agreement
+-        The Agreement is an entire agreement on the product use concluded by us with you. It shall replace all oral or written contact information, suggestions, representations and guarantees inconsistent with the Agreement previous or in the same period. During the period of the Agreement, in case of any conflict clauses or additional clauses in the relevant quotations, orders or receipts or in other correspondences regarding the content of the Agreement between the parties, the Agreement shall prevail. No modification of the Agreement will be binding, unless in writing and signed by an authorized representative of each party.
+-        2.   Severability of the Agreement
+-        If any provision of the Agreement is deemed to be unenforceable, the deletion of the corresponding provision will still be effective, unless the deletion will hinder the realization of the fundamental purpose of the parties (in which case, the Agreement will be terminated immediately).
+-
+-        IX.  Applicable law and dispute settlement
+-        1.   Application of governing laws
+-        Any dispute settlement (including but not limited to litigation and arbitration) related to the Agreement shall be governed by the laws of the People’s Republic of China. The legal rules of any other countries and regions shall not apply.
+-        2.  Termination
+-        If the Software becomes or, in the opinion of either party, may become the subject of any claim for intellectual property infringement, either party may terminate the Agreement immediately.
+-        The Agreement is effective until termination. You may terminate the Agreement at any time, but you must destroy all originals and duplicates of the Software. The Agreement will terminate immediately without notice from us if you fail to comply with any provision of the Agreement. At the time of termination, you must destroy all originals and duplicates of such software, and shall be legally liable for not observing the Agreement.
+-        The Agreement shall be in both Chinese and English, and in case of ambiguity between any content above, the Chinese version shall prevail.
+-
+-        Privacy Policy Statement of Kylin Operating System/n        Release date of the version: July 30, 2021
+-        Effective date of the version: July 30, 2021
+-
+-        We attach great importance to personal information and privacy protection. In order to guarantee the legal, reasonable and appropriate collection, storage and use of your personal privacy information and the transmission and storage in the safe and controllable circumstances, we hereby formulate this Statement. We shall provide your personal information with corresponding security protection measures according to the legal requirements and mature security standards in the industry.
+-
+-        The Statement shall include the following content:
+-        I.   Collection and use your personal information
+-        II.  How to store and protect your personal information
+-        III. How to manage your personal information
+-        IV.  Privacy of the third-party software/services
+-        V.   Minors’ use of the products
+-        VI.  How to update this Statement
+-        VII. How to contact us
+-
+-        I.     How to collect and use your personal information
+-        1.    The collection of personal information
+-        We shall collect the relevant information when you use this product mainly to provide you with higher-quality products, more usability and better services. Part of information collected shall be provided by you directly, and other information shall be collected by us through your interaction with the product as well as your use and experience of the product. We shall not actively collect and deal with your personal information unless we have obtained your express consent according to the applicable legal stipulations.
+-        1)   The licensing mechanism for this product allows you to apply for the formal license of the product in accordance with the contract and relevant agreements after you send a machine code to the commercial personnel of Kylinsoft, and the machine code is generated through encryption and conversion according to the information of the computer used by you, such as network card, firmware and motherboard. This machine code shall not directly contain the specific information of the equipment, such as network card, firmware and motherboard, of the computer used by you.
+-        2)   Server of the software store of this product shall connect it according to the CPU type information and IP address of the computer used by you; at the same time, we shall collect the relevant information of your use of the software store of this product, including but not limited to the time of opening the software store, interaction between the pages, search content and downloaded content. The relevant information collected is generally recorded in the log of server system of software store, and the specific storage position may change due to different service scenarios.
+-        3)   Upgrading and updating of this product shall be connected according to the IP address of the computer used by you, so that you can upgrade and update the system;
+-        4)   Your personal information, such as E-mail address, telephone number and name, shall be collected due to business contacts and technical services.
+-        5)   The biological characteristic management tool support system components of this product shall use the biological characteristics for authentication, including fingerprint, finger vein, iris and voiceprint. The biological characteristic information input by you shall be stored in the local computer, and for such part of information, we shall only receive the verification results but shall not collect or upload it. If you do not need to use the biological characteristics for the system authentication, you may disable this function in the biological characteristic management tool.
+-        6)   This product shall provide the recording function. When you use the recording function of this product, we shall only store the audio content when you use the recording in the local computer but shall not collect or upload the content.
+-        7)   The service and support functions of this product shall collect the information provided by you for us, such as log, E-mail, telephone and name, so as to make it convenient to provide the technical services, and we shall properly keep your personal information.
+-        8)   In the upgrading process of this product, if we need to collect additional personal information of yours, we shall timely update this part of content.
+-        2.   Use of personal information
+-        We shall strictly observe the stipulations of laws and regulations and agreements with you to use the information collected for the following purposes. In case of exceeding the scope of following purposes, we shall explain to you again and obtain your consent.
+-        1)   The needs such as product licensing mechanism, use of software store, system updating and maintenance, biological identification and online services shall be involved;
+-        2)   We shall utilize the relevant information to assist in promoting the product security, reliability and sustainable service;
+-        3)   We shall directly utilize the information collected (such as the E-mail address and telephone provided by you) to communicate with you directly, for example, business contact, technical support or follow-up service visit;
+-        4)   We shall utilize the data collected to improve the current usability of the product, promote the product’s user experience (such as the personalized recommendation of software store) and repair the product defects, etc.;
+-        5)   We shall use the user behavior data collected for data analysis. For example, we shall use the information collected to analyze and form the urban thermodynamic chart or industrial insight report excluding any personal information. We may make the information excluding identity identification content upon the statistics and processing public and share it with our partners, to understand how the users use our services or make the public understand the overall use trend of our services;
+-        6)   We may use your relevant information and provide you with the advertising more related to you on relevant websites and in applications andother channels;
+-        7)   In order to follow the relevant requirements of relevant laws and regulations, departmental regulations and rules and governmental instructions.
+-        3.   Information sharing and provision
+-        We shall not share or transfer your personal information to any third party, except for the following circumstances:
+-        1)   After obtaining your clear consent, we shall share your personal information with the third parities;
+-        2)   In order to achieve the purpose of external processing, we may share your personal information with the related companies or other third-party partners (the third-party service providers, contractors, agents and application developers). We shall protect your information security by means like encryption and anonymization;
+-        3)   We shall not publicly disclose the personal information collected. If we must disclose it publicly, we shall notify you of the purpose of such public disclosure, type of information disclosed and the sensitive information that may be involved, and obtain your consent;
+-        4)   With the continuous development of our business, we may carry out the transactions, such as merger, acquisition and asset transfer, and we shall notify you of the relevant circumstances, and continue to protect or require the new controller to continue to protect your personal information according to laws and regulations and the standards no lower than that required by this Statement;
+-        5)   If we use your personal information beyond the purpose claimed at the time of collection and the directly or reasonably associated scope, we shall notify you again and obtain your consent before using your personal information.
+-        4.   Exceptions with authorized consent
+-        1)   It is directly related to national security, national defense security and other national interests; 
+-        2)   It is directly related to public safety, public health and public knowledge and other major public interests; 
+-        3)   It is directly related to crime investigation, prosecution, judgment and execution of judgment; 
+-        4)   It aims to safeguard the life, property and other major legal rights and interests of you or others but it is impossible to obtain your own consent; 
+-        5)   The personal information collected is disclosed to the public by yourself; 
+-        6)   Personal information collected from legally publicly disclosed information, such as legal news reports, government information disclosure and other channels; 
+-        7)   It is necessary to sign and perform of the contract according to your requirement; 
+-        8)   It is necessary to maintain the safe and stable operation of the provided products or services, including finding and handling any fault of products or services;
+-        9)   It is necessary to carry out statistical or academic research for public interest, and when the results of academic research or description are provided, the personal information contained in the results is de-identified;
+-        10) Other circumstances specified in the laws and regulations.
+-
+-        II.   How to store and protect personal information
+-        1.   Information storage place
+-        We shall store the personal information collected and generated in China within the territory of China in accordance with laws and regulations.
+-        2.   Information storage duration 
+-        Generally speaking, we shall retain your personal information for the time necessary to achieve the purpose or for the shortest term stipulated by laws and regulations. Information recorded in the log shall be kept for a specified period and be automatically deleted according to the configuration.
+-        When operation of our product or services stops, we shall notify you in the forms such as notification and announcement, delete your personal information or conduct anonymization within a reasonable period and immediately stop the activities collecting the personal information.
+-        3.   How to protect the information
+-        We shall strive to provide guarantee for the users’ information security, to prevent the loss, improper use, unauthorized access or disclosure of the information.
+-        We shall use the security protection measures within the reasonable security level to protect the information security. For example, we shall protect your system account and password by means like encryption.
+-        We shall establish the special management systems, processes and organizations to protect the information security. For example, we shall strictly restrict the scope of personnel who access to the information, and require them to observe the confidentiality obligation.
+-        4.   Emergency response plan
+-        In case of security incidents, such as personal information disclosure, we shall start the emergency response plan according to law, to prevent the security incidents from spreading, and shall notify you of the situation of the security incidents, the possible influence of the incidents on you and the remedial measures we will take, in the form of pushing the notifications and announcements. We will also report the disposition of the personal information security events according to the laws, regulations and regulatory requirements.
+-
+-        III. How to manage your personal information
+-        If you worry about the personal information disclosure caused by using this product, you may consider suspending or not using the relevant functions involving the personal information, such as the formal license of the product, application store, system updating and upgrading and biological identification, according to the personal and business needs. 
+-        Please pay attention to the personal privacy protection at the time of using the third-party software/services in this product.
+-
+-        IV.  Privacy of the third-party software/services
+-
+-        The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer.
+-        When you install or use the third-party software/services in this product, the privacy protection and legal responsibility of the third-party software/services shall be independently borne by the third-party software/services. Please carefully read and examine the privacy statement or clauses corresponding to the third-party software/services, and pay attention to the personal privacy protection.
+-
+-        V.   Minors’ use of the products
+-        If you are a minor, you shall obtain your guardian’s consent on your use of this product and the relevant service clauses. Except for the information required by the product, we shall not deliberately require the minors to provide more data. With the guardians’ consent or authorization, the accounts created by the minors shall be deemed to be the same as any other accounts. We have formulated special information processing rules to protect the personal information security of minors using this product. The guardians shall also take the appropriate preventive measures to protect the minors and supervise their use of this product.
+-
+-        VI.  How to update this Statement
+-        We may update this Statement at any time, and shall display the updated statement to you through the product installation process or the company’s website at the time of updating. After such updates take effect, if you use such services or any software permitted according to such clauses, you shall be deemed to agree on the new clauses. If you disagree on the new clauses, then you must stop using this product, and please close the accountcreated by you in this product; if you are a guardian, please help your minor child to close the account created by him/her in this product.
+-
+-        VII. How to contact us
+-        If you have any question, or any complaints or opinions on this Statement, you may seek advice through our customer service hotline 400-089-1870, or the official website (www.kylinos.cn), or “service and support” application in this product. You may also contact us by E-mail (market@kylinos.cn). 
+-        We shall timely and properly deal with them. Generally, a reply will be made within 15 working days.
+-        The Statement shall take effect from the date of updating. The Statement shall be in Chinese and English at the same time and in case of any ambiguity of any clause above, the Chinese version shall prevail.
+-        Last date of updating: November 1, 2021
+-
+-Address:
+-        Building 3, Xin’an Entrepreneurship Plaza, Tanggu Marine Science and Technology Park, Binhai High-tech Zone, Tianjin (300450)
+-        Silver Valley Tower, No. 9, North Forth Ring West Road, Haidian District, Beijing (100190)
+-        Building T3, Fuxing World Financial Center, No. 303, Section 1 of Furong Middle Road, Kaifu District, Changsha City (410000)
+-        Digital Entertainment Building, No. 1028, Panyu Road, Xuhui District, Shanghai (200030)
+-Tel.:
+-        Tianjin (022) 58955650      Beijing (010) 51659955
+-        Changsha (0731) 88280170        Shanghai (021) 51098866
+-Fax:
+-        Tianjin (022) 58955651      Beijing (010) 62800607
+-        Changsha (0731) 88280166        Shanghai (021) 51062866
+-
+-        Company website: www.kylinos.cn
+-        E-mail: support@kylinos.cn
+diff --git a/data/Ukcc-Agreement-OK-zh_CN.txt b/data/Ukcc-Agreement-OK-zh_CN.txt
+deleted file mode 100644
+index 65b1488..0000000
+--- a/data/Ukcc-Agreement-OK-zh_CN.txt
++++ /dev/null
+@@ -1,152 +0,0 @@
+-openKylin个人信息保护及隐私政策声明
+-
+-尊敬的openKylin用户:
+-您的信任对我们非常重要。我们非常重视个人信息和隐私保护,为了保证合法、合理、适度的收集、存储、使用您的个人隐私信息,并在安全、可控的情况下进行传输、存储。鉴此,openKylin社区(简称“我们”)制定了《openKylin个人信息保护及隐私政策声明》(以下简称“本声明”),我们将会按照法律要求和业界成熟安全标准,为您的个人信息提供相应的安全保护措施。
+-在向我们提交您的个人信息之前,请您仔细阅读本声明。如果您对于我们处理您个人信息的方式有任何疑问,欢迎与我们联系。
+-本声明将帮助您了解以下内容:
+-一、我们如何收集和使用您的个人信息
+-二、我们如何共享、转让、公开披露您的个人信息
+-三、我们如何保护您的个人信息
+-四、我们如何管理您的个人信息
+-五、您的权利
+-六、我们如何使用Cookie和同类技术
+-七、未成年人用户信息的特别约定
+-八、本声明如何更新
+-九、如何联系我们
+-一、我们如何收集和使用您的个人信息
+-在您使用openKylin操作系统产品的过程中,我们会收集您在使用服务时主动提供或因为服务而产生的信息。此类信息会在您注册和使用我们的服务时被收集,我们仅会出于本声明所述以下目的收集和使用您的个人信息。我们将逐一说明我们收集和使用您的个人信息类型及本声明中涉及的相关术语,以便您更好地理解个人信息的概况。
+-1、收集个人信息情况
+-openKylin系统(以下简称“本系统”)层面:
+-1)本系统在安装/更新期间,可能会收集非个人身份识别的系统信息,如下:
+-·更新系统需要收集:错误码、安装来源、安装包名、安装步骤、安装状态、错误详细信息、事务id、错误信息、上传类型。
+-·安装系统需要收集:安装包旧版本号、错误码、安装包新版本号、安装包名、安装步骤、安装状态、错误详细信息。
+-·更新软件包需要收集:错误代码、更新的包名、更新模式、更新步骤、升级状态。
+-2)使用本系统的控制面板期间,在点击操作、点击首页操作、点击左侧面板操作、设置操作、选择操作、搜索操作、无搜索结果时,需要收集:插件名称、设置名、值信息。
+-3)本系统的daq数据收集信息如下:
+-重要硬件和软件信息:城市、国家、省份、cpu型号、显卡型号、网络类型、内核版本、厂商名、产品名、数据创建时间戳、数据上报时间戳、相同机器不同公共信息版本、dpkg版本、os发布id、os版本。
+-·软件环境信息:libjpeg版本、cups版本、python2版本、java版本、python3版本、libjbig版本、libpng版本、机器id、gcc版本、内核版本、gdb版本、glibc版本、grub版本、daq版本、qt4版本、qt5版本
+-·电脑在线信息:开机时间、关机时间、开机时间段、关机时间段、开机时间段(单位,秒)、开机时间段(单位,秒)
+-4)本系统的开始菜单操作收集信息:模块名、错误输出、错误等级、功能计数、执行的功能。
+-5)本系统的侧边栏操作收集信息:模块名、错误输出、错误等级、功能计数、执行的功能
+-6)本系统的摄像头、手机助手、看图、打印、计算器、录音、字体预览器、显卡控制器、传书、服务与技术支持、网络检查工具、天气、管理、扫描、蓝牙等功能会收集对应的触发动作值、函数调用编号和信息。
+-7)本系统的软件商店使用过程中,在如下操作中,需要收集的信息:
+-·安装过程
+-安装软件名、社区ID信息(需登录社区ID)
+-·卸载过程
+-卸载软件名、社区ID信息(需登录社区ID)
+-·商店客户端启动
+-启动时间、系统版本、商店版本
+-·搜索操作
+-搜索关键字、系统架构
+-·广告操作(V4版本)
+-广告名、广告曝光
+-8)本系统录音功能,在使用本系统录音软件中,仅会将您使用录音时的音频内容存储在本地计算机中,不会进行收集和上传。
+-以上本系统收集的相关信息一般会记录在其各功能对应的服务端系统的日志中,具体存储位置可能因为不同的服务场景有所变动。
+-openKylin社区(以下简称“本社区”)层面:
+-如果您仅仅浏览openKylin社区官网的一般性内容,我们通常并不要求您提供个人信息,但在以下情形,我们会相应收集您的个人信息:
+-1)账号服务,本社区提供ID认证服务,以便提供统一的社区身份和权限,当您注册本社区账号的时候,我们将收集您的邮箱或手机号用于身份校验,收集您的Gitee账号用于社区代码托管平台的权限管理,我们还会使用您的个人信息识别您在社区的身份,并在此基础上进行数据统计,以使我们了解本社区的运行状况。
+-2)贡献者协议签署,当您通过贡献者许可协议(简称“CLA”)签署系统参与代码贡献时,您需要向CLA签署系统提交您的相关个人信息,我们取得这些个人信息用于校验您是否已经签署CLA,并用于贡献统计分析,以生成社区数字看板。当您通过CLA签署系统将完成签署的CLA以pdf格式发送至 contact@openkylin.top 邮箱,我们会将包含您个人信息的CLA存档,作为您对您在本社区所贡献内容授予许可的凭证。如果您是个人或企业员工,我们从您通过邮件发送的CLA中收集您的码云(Gitee、Gitlink、Github)ID、姓名、电子邮件地址,用于校验您的码云(Gitee、Gitlink、Github)账户并与您联系;如果您代表企业签署CLA,我们从您通过邮件发送的CLA中收集您的姓名、职位、公司名称、邮箱,用于您所属的企业校验您的身份及与您联系等。
+-3) 论坛服务,论坛服务为您提供下述业务功能,在您使用相关业务功能的过程中,我们会处理下列提供功能所必需的信息。若您不提供相关信息,会影响到您使用论坛服务的相关功能。
+-·登录与身份认证:您可以使用本社区账号登录论坛服务,我们会使用您本社区账号的用户名、昵称、邮箱、微信扫描账号来认证您的身份、管理您的数据。
+-·个人中心:登录后,我们将在“个人中心”页面展示您在本社区的账号用户名。 您还可以在“个人中心”页面设置在社区论坛使用的昵称、头像、签名,我们会存储并在“个人中心”展示。
+-·信息发布与互动:“论坛服务”为您提供信息发布与互动服务,为此我们会收集并处理您所发布的内容、图片、音频、视频、文档以及评论、点赞、收藏、举报信息,同时会使用并展示您的昵称、头像。 为增强交流和互动,我们会统计和在“个人中心”页面展示您的帖子发布量、获赞量、粉丝数、关注数、收藏夹(收藏夹默认仅本人可见)。为了实时更新并向您展示以上信息,我们会收集使用您的发帖、评论、点赞、收藏以及关注列表、粉丝列表等信息。
+-·产品运营与维护:为了给您提供更丰富的产品体验、改善产品的运营策略、保障产品稳定运行、以及根据法律法规的要求保障网络安全,我们会收集您的登录账号信息、设备的硬件信息、操作系统的设置信息、网络信息(例如IP地址)、运营商信息、您在本论坛的浏览或点击记录、论坛报错信息。
+-4) 社区实习生/就业育人计划,本社区的实习生/就业育人的任务平台将以透明、安全和合规的方式收集、使用和管理个人信息,旨在提供优质的任务合作体验,同时保障您的隐私权益。您在使用平台时应仔细阅读和理解平台的隐私政策,并在必要时联系平台获取更多信息。若您不提供相关信息,会影响到您在领取各项任务时的相关功能权限:
+-·任务发布: 如果您是企业身份,有权在任务平台上发布任务,需要您提供一些企业和个人信息,例如用户名、联系方式和任务详细说明等。这些信息用于任务发布和管理,以便与实习生或爱好者进行沟通和合作。
+-·高校学生/爱好者/就业育人信息审核: 如果您申请成为实习生,平台会要求您提交个人简历、联系方式和相关证明材料。这些信息将用于审核实习申请,确保申请人的资格和合适性。
+-·任务领取信息审核: 您申请参与特定任务时,平台会要求您提供个人信息和任务申请的相关背景、了解程度、方案思路、时间计划。这些信息用于评估申请人的适合度和能力。
+-·任务成果信息审核: 您完成任务后,需要上传相关成果和报告。这些信息可能会包含您的工作成果和创意,用于审核任务的完成情况。
+-·奖励和现金发放: 平台根据任务完成情况可能会给予您奖励,包括现金。在发放奖励和现金时,平台需要收集您的支付信息,例如银行账号、开户行支行等,以便顺利完成奖励发放流程。
+-5) 邮件订阅,当您使用我们的邮件订阅服务时,我们将收集您的电子邮件地址。我们会通过该邮箱为您提供邮件订阅服务,便于您参与社区中的讨论。
+-6) 内容发布,当您参加本社区会议、直播、博客、活动、开发者开源社区贡献时,您的用户名和您发布的信息将对本社区和公众可见;如果您是本社区的SIG成员:我们将要求您提交码云(Gitee、Gitlink、Github)信息,以便在我们的网站上发布。
+-7) 快速提交issue,当您通过社区的小程序或者直接在Gitee平台上提交issue时,我们会收集您的账号、用户名、微信授权信息,issue成功创建后,我们会在该issue页面的描述信息展示您的用户信息。
+-8) “麒麟杯”全国开源应用软件开发大赛,当您申请参加“麒麟杯”大赛,通过您主动填写的申请表,将会收集您的码云(Gitee、Gitlink、Github)信息、红山开源账号、社区ID、姓名、手机号、邮箱、您的作品信息。姓名、手机号、邮箱用于通知评选结果以及与您联系;如果您在大赛中取得了好的成绩,您的姓名将在官网予以公布。
+-9) 服务优化,为持续了解本社区的运行状况,以便我们更好地为您服务,当您访问我们的网站时,我们会收集并记录您的IP地址、访问来源、访问社区的次数、停留时长、访问时间戳、浏览器类型、访问社区所用服务器类型版本以识别您在网站上的访客活动。我们可能会使用第三方Web分析工具(百度统计), 来捕获有关我们网站使用的信息,并在此基础上进行数据统计,以便我们了解本社区的运营状况。web分析工具的提供者通过Cookie和其他技术捕获有关您在我们网站上活动的数据,并以匿名的形式向我们提供此信息。任何网站用户都无法识别此信息。
+-2、使用个人信息情况
+-我们严格遵守法律法规的规定及与您的约定,将收集的信息用于以下用途。若我们超出以下用途,我们将再次向您进行说明,并征得您的同意。
+-1)涉及系统软件商店使用、系统更新维护、生物识别、在线服务等需要;
+-2)我们会利用相关信息协助提升系统和社区的安全性、可靠性和可持续服务;
+-3)我们会利用收集的信息(例如您提供的电子邮件地址、电话等)直接与您沟通。例如,业务联系、技术支持或服务回访;
+-4)我们会利用收集的数据改进产品当前的易用性、提升产品用户体验(例如软件商店的个性化推荐)以及修复产品缺陷等;
+-5)我们会将所收集到的用户行为数据用于大数据分析。例如,我们将收集到的信息用于分析形成不包含任何个人信息的城市热力图或行业洞察报告。我们可能对外公开并与我们的合作伙伴分享经统计加工后不含身份识别内容的信息,用于了解用户如何使用我们服务或让公众了解我们服务的总体使用趋势;
+-6)为了遵从相关法律法规、部门规章、政府指令的相关要求。
+-二、我们如何共享、转让、公开披露您的个人信息
+-我们不会共享或转让您的个人信息至第三方,但以下情况除外:
+-1、获取您的单独明确同意后,我们会与第三方分享您的个人信息;
+-2、为实现外部处理的目的,我们可能与关联公司或其他第三方合作伙伴(第三方服务供应商、承包商、代理、应用开发者等)分享您的个人信息。我们会征得您的明确同意,并将采用加密、匿名化处理等手段来保障您的信息安全;
+-3、我们不会对外公开披露所收集的个人信息,如必须公开披露时,我们会向您告知此次公开披露的目的、披露信息的类型及可能涉及的敏感信息,并征得您的明确同意;
+-4、随着我们业务的持续发展,我们有可能进行合并、收购、资产转让等交易,我们将告知相关情形,并征得您的明确同意,并按照法律法规及不低于本声明所要求的标准继续保护或要求新的控制者继续保护您的个人信息;
+-5、如我们使用您的个人信息,超出了与收集时所声称的目的及具有直接或合理关联的范围,我们将在使用您的个人信息前,再次向您告知并征得您的明确同意。
+-6、共享给业务合作伙伴。我们可能会向合作伙伴等第三方共享您的信息。但我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息,并且只会共享提供服务所必需的个人信息。我们的合作伙伴包括:
+-  	1) 开发者,平台及社交媒体:某些产品或服务由第三方直接向您提供,我们须将交易相关信息共享给第三方来实现您的需求。例如,如果您通过激活或关联使得我们提供的服务或产品与第三方平台或社交媒体相关联(例如通过第三方网站直接登录、虚拟登录或关联登录),我们可能会根据您就此的授权将您的个人信息进行披露。我们不控制第三方对您个人信息的使用。
+-  	2) 服务供应商或专业服务提供商:我们可能会将您的个人信息共享给按照我们指示进行服务或产品提供或支持我们网站运营的第三方,包括为我们供货或提供基础设施技术服务、托管、客户支持、市场推广和分析、信息处理服务的第三方等。我们共享这些信息的目的仅限于本声明披露或在您允许的范围内进行,比如百度。我们可能因获取专业服务,如审计、保险、金融或法律之目的,向相关专业人士共享您的个人信息。
+-在我们根据上述内容向关联公司或合作伙伴共享信息时,我们将通过合同等方式规定其责任和义务,并要求他们采取必要措施保障所处理的个人信息的安全。
+-7、征得授权同意的例外情况
+-根据相关法律法规以及国家标准,在以下情况下我们可能会收集、使用您的个人信息无需征得您的授权同意:
+-1)与国家安全、国防安全等国家利益直接相关的;
+-2) 与公共安全、公共卫生、公众知情等重大社会公共利益直接相关的;
+-3) 与犯罪侦查、起诉、审判和判决执行等有关的相关活动;
+-4) 出于维护您或其他个人的生命、财产等重大合法权益但在紧急情况下所必须;
+-5) 所收集的个人信息是您自行向社会公众公开的;
+-6) 从合法公开披露的信息中收集的个人信息,如合法的新闻报道、政府信息公开等渠道;
+-7) 根据您要求签订和履行合同所必需的;
+-8) 用于维护所提供的产品或服务的安全稳定运行所必需的。如发现、处置产品或服务的故障;
+-9) 出于公共利益开展统计或学术研究所必需,且其对外提供学术研究或描述的结果时,对结果中所包含的个人信息进行去标识化处理的;
+-10) 法律法规规定的其他情形。
+-三、我们如何保护您的个人信息
+-1、信息存储的地点
+-我们会按照法律法规规定,在中华人民共和国境内运营中收集和产生的个人信息,存储在中华人民共和国境内,如果未来为处理跨境业务,需要向境外机构传输境内收集的相关个人信息的,我们会征得您的单独同意,按照法律、行政法规和相关监管部门的规定执行,并通过签订协议、核查等有效措施,要求境外机构为所获得的个人信息采取相关保护措施。
+-2、信息存储的期限
+-一般而言,我们仅为实现目的所必需的时间或法律法规规定最短期限保留您的个人信息。记录在日志中的信息会按配置在一定期限保存及自动删除。
+-当我们的系统或服务发生停止运营的情形时,我们将以通知、公告等形式通知您,在合理的期限内删除您的个人信息或进行匿名化处理,并立即停止收集个人信息的活动。
+-在您主动注销账号时,我们将根据法律法规的要求进行数据处理。
+-3、我们如何保护这些信息
+-我们会采取一切合理可行的措施,确保未收集与我们提供的服务无关的个人信息。我们努力为用户的信息安全提供保障,以防止信息的丢失、不当使用、未经授权访问或披露。
+-我们将在合理的安全水平内使用安全保护措施以保障信息的安全。例如,我们会使用加密技术等手段来保护您的系统级账户密码。
+-我们建立专门的管理制度、流程和组织以保障信息的安全。例如,我们严格限制访问信息的人员范围,要求他们遵守保密义务。
+-4、应急预案
+-若发生个人信息泄露等安全事件,我们会依法启动应急预案,阻止安全事件扩大,并以推送通知、公告等形式告知您安全事件的情况、事件可能对您的影响以及我们将采取的补救措施。我们还将按照法律法规和监管部门要求,上报个人信息安全事件的处置情况。
+-四、我们如何管理您的个人信息
+-我们会遵守各地区法律法规的规定,采取一切合理可行的措施,确保未收集无关的个人信息。
+-您的系统和社区账号基本信息包括但不限于您的个人手机号码将加密传输并保存在服务器中,直至账号注销。我们只会在达成本声明所述目的所必需的最短期限内保留您的个人信息,若存储时间如超出法律的允许范围,我们将进行删除或匿名化处理,若删除相关个人信息从技术上难以实现的,我们将停止除存储和采取必要的安全保护措施之外的处理。但在下列情况下,我们有可能因需符合法律要求,更改个人信息的存储时间:
+-为遵守法院判决、裁定或其他法律程序的规定;
+-为遵守相关政府机关或法定授权组织的要求;
+-我们有理由确信需要遵守法律法规等有关规定。
+-当本服务发生停止运营的情形时,我们将及时停止继续收集您的个人信息,将停止运营的通知以逐一送达或公告的形式通知您,并在合理的期限内删除或匿名化处理您的个人信息。
+-我们通过交互界面的设计,为您提供了可自行访问、获取、更正和删除相关个人信息的渠道,您可通过以下方式进行设置:
+-如果担心因使用系统和访问服务导致个人信息的泄露,您可根据个人及业务需要考虑暂停或不使用涉及个人信息的相关功能,如系统软件商店、系统更新升级、生物识别等。
+-在使用系统之上的第三方软件/服务时,请注意个人隐私保护。
+-在一些业务功能中,我们可能仅依据信息系统、算法在内的非人工自动决策机制作出决定。如果这些决定显著影响您的合法权益,您有权要求我们作出解释,我们也将提供适当的解决方式。
+-如您确有必要访问、修改或依法要求删除该类信息,请将您的问题通过邮件发送至指定的联系邮箱(见文末),我们将尽快审核所涉问题,并在核验您的用户身份后及时予以回复。
+-您可以通过指定的联系邮箱(见文末),提交账号注销申请;在您主动注销账号后,您的个人信息及相关内容将会隐藏、移除或匿名化,但法律法规另有规定的除外。
+-五、您的权利
+-按照各地区相关的法律、法规、标准,以及各地区的通行做法,我们将尽最大努力采取适当的技术手段,保障您对自己的个人信息行使以下权利:
+-如果您希望查阅、复制、更正您的账号的个人基本信息(如用户名、昵称等)或撤回您对个人信息使用权的同意,您可以在社区账号注册网站(id.openkylin.top)登录您的账号,通过“个人中心”执行前述操作。
+-您有权通过本隐私政策公布的联系方式向我们发出书面请求以获取您的个人信息副本。在符合国家网信部门规定条件的且技术可行的前提下,例如数据接口匹配,我们还可按您的要求和现有的通行技术,直接将您的个人信息副本传输给您指定的第三方。若因该等第三方拒绝接收您的个人信息副本而导致传输失败的,您应自行与该等第三方进行协调解决,我们对此不承担任何责任。
+-如果您无法通过上述方式实现您的个人信息权利或某些特殊信息的个人权利行使可能无法自行操作,您可以随时通过本隐私政策或相关产品或服务页面上公布的联系方式联系我们。我们将在十五个工作日内回复您的请求。为保障您的个人信息安全,我们可能会要求您进行身份验证。
+-请您注意,请核对您提交的个人信息的真实、及时、完整和准确,否则会导致我们无法与您进行有效联系、无法向您提供部分服务。若我们有合理理由怀疑您提供的资料发生错误、不完整、不真实,我们有权向您询问或通知您改正,甚至暂停或中止对您提供部分服务。
+-请您注意,当我们决定响应您撤销同意或删除个人信息的请求后,我们将不再处理相应的个人信息,我们还将同时尽可能通知从我们分享获得您的个人信息的第三方,要求该等第三方及时删除您的个人信息,除非法律法规另有规定,或该等第三方已获得您的独立授权。但您撤销同意的决定,不会影响此前基于您的授权而开展的个人信息处理的合法性。若法律、行政法规规定的保存期限未届满,或者删除个人信息从技术上难以实现的,我们将停止除存储和采取必要的安全保护措施之外的处理。
+-对于您合理的请求,我们原则上不收取费用,但对多次重复、超出合理限度的请求,我们将视情收取一定成本费用。对于那些无端重复、需要过多技术手段(例如,需要开发新系统或从根本上改变现行惯例)、给他人合法权益带来风险或者非常不切实际(例如,涉及备份磁盘上存放的信息)的请求,我们可能会予以拒绝。
+-在以下情形中,按照法律法规要求,我们将无法响应您的请求:
+-·与我们履行法律法规规定的义务相关的;
+-·与国家安全、国防安全直接相关的;与公共安全、公共卫生、重大公共利益直接相关的;
+-·与刑事侦查、起诉、审判和判决执行等直接相关的;
+-·有充分证据表明您存在主观恶意或滥用权利的;
+-·响应您的请求将导致您或其他个人、组织的合法权益受到严重损害的。
+-·涉及商业秘密的;
+-·出于维护您或其他个人的生命、财产等重大合法权益但又很难得到您本人同意的;
+-·其他适用法律规定的情形。
+-六、我们如何使用Cookie和同类技术
+-为帮助我们更好地了解并服务用户,我们的网站、在线服务和应用程序可能会使用“Cookie”技术。这些Cookie用于存储进出系统的网络流量以及因检测错误而生成的流量,因此必须设置。 我们通过使用这些Cookie来了解您与我们的网站和在线服务如何进行交互。 
+-如果您想禁用 Cookie 并且使用的是Firefox浏览器,可在Firefox的隐私与安全中心进行设置。如果您使用的是其他浏览器,请向相关供应商咨询具体方案。
+-依照《中华人民共和国网络安全法》第七十六条第五款,个人信息,是指以电子或者其他方式记录的能够单独或者与其他信息结合识别自然人个人身份的各种信息,包括但不限于自然人的姓名、出生日期、身份证件号码、个人生物识别信息、住址、电话号码等。如果Cookie中包含上述信息,或者存在通过Cookie收集的非个人信息与其他个人信息合并后的信息,出于本隐私政策的目的,我们会将合并后的信息视为个人隐私信息,将参照《openKylin个人信息保护及隐私政策声明》,为您的个人信息提供相应的安全保护措施。
+-七、未成年人用户信息的特别约定
+-如果您是未成年人,根据相关法律法规的规定:
+-1、如果没有父母或监护人的同意,未成年人不得创建自己的用户账号使用openKylin操作系统系列产品。如您为未成年人,建议您请您的父母或监护人仔细阅读本政策,并在征得您的父母或监护人同意的前提下使用我们的服务或向我们提供信息。
+-2、对于经父母或监护人同意使用我们的产品或服务而收集未成年人个人信息的情况,我们只会在法律法规允许、父母或监护人明确同意或者保护未成年人所必要的情况下使用、共享、转让或披露此信息。
+-3、监护人也应采取适当的预防措施保护未成年人,监督其对本产品的使用。
+-八、本声明如何更新及适用范围
+-我们可能会随时更新本声明,并且会在变更时通过系统安装过程或公司网站向您展示变更后的声明。在这些变更生效后使用服务或根据这些条款授予许可的任何软件,即表示您同意新的条款。如果您不同意新的条款,则必须停止使用本系统,请关闭您在本系统之上创建的账户;如果您是监护人,请帮助您的未成年子女关闭他或她在本产品之上创建的账户。
+-我们的所有服务均适用本声明。但某些服务有其特定的个人信息和隐私政策,该等特定的个人信息和隐私政策更具体地说明我们在该服务中如何处理您的信息。如本声明与特定服务的个人信息和隐私政策有不一致之处,请以该特定政策为准。
+-九、如何联系我们
+-如果您想联系我们或行使您的相关权利,请通过以下方式与我们联系: contact@openkylin.top
+diff --git a/data/Ukcc-Agreement-bo_CN.txt b/data/Ukcc-Agreement-bo_CN.txt
+deleted file mode 100644
+index 680acf8..0000000
+--- a/data/Ukcc-Agreement-bo_CN.txt
++++ /dev/null
+@@ -1,32 +0,0 @@
+-ཅིན་ལིན་གྱི་བཀོལ་སྤྱོད་མ་ལག་དང་འབྲེལ་ཡོད་ཐོན་རྫས་ཀྱི་སྙིང་ཉེ་བའི་སྤྱོད་མཁན། 
+-         གྲོས་མཐུན་འདིས་ཁྱེད་ཚོས་ཐོན་རྫས་འདི་བཀོལ་སྤྱོད་བྱེད་པའི་ཁེ་དབང་དང་། འོས་འགན། སྔོན་འགྲོའི་ཆ་རྐྱེན་བཅས་གསལ་བཤད་བྱས་ཡོད། ཁྱེད་ཀྱིས་གྲོས་མཐུན་གྱི་དོན་ཚན་དང་ཁ་གསབ་ཆོག་འཐུས་ལག་ཁྱེར་(གཤམ་དུ་ཐུན་མོང་དུ་"གྲོས་མཐུན་"ཞེས་འབོད་པ་)དང་ཁེ་ལིན་གྱི་བཀོལ་སྤྱོད་མ་ལག་གི་གསང་བའི་སྲིད་ཇུས་གསལ་བསྒྲགས་(གཤམ་དུ་"གསལ་བསྒྲགས་"ཞེས་འབོད་རྒྱུ་)ཀློག་རོགས།
+-        《ཆོད་ཡིག་》དང་《གསལ་བསྒྲགས་》ནང་གི་"ཐོན་རྫས་འདི་"ཞེས་པ་ནི་ཁེ་ལིན་སའོ་ཧྥུ་མ་རྐང་ཚད་ཡོད་ཀུང་སིས་གསར་སྤེལ་དང་། ཐོན་སྐྱེད། ཁྱབ་བསྒྲགས་བཅས་བྱས་པའི་"ཁེ་ལིན་གྱི་བཀོལ་སྤྱོད་མ་ལག་གི་མཉེན་ཆས་ཐོན་རྫས་"ལ་ཟེར། "ང་ཚོ་"ཞེས་པ་ནི་ཁེ་ལིན་སའོ་ཧྥུ་མ་རྐང་ཚད་ཡོད་ཀུང་སིའི་"ཁྱོད་"ཞེས་པ་ནི་ཁེ་ལིན་གྱི་བཀོལ་སྤྱོད་མ་ལག་དང་འབྲེལ་ཡོད་ཐོན་རྫས་བེད་སྤྱོད་བྱེད་མཁན་ལ་ཟེར།
+-
+-ཅིན་ལིན་གྱི་སྤྱོད་མཁན་གྱི་ཆོག་འཐུས་གྲོས་མཐུན་མཇུག་བསྒྲིལ 
+-པར་གཞི་ཁྱབ་བསྒྲགས་བྱས་པའི་ཚེས་གྲངས། 2021ལོའི་ཟླ་7ཚེས་30ཉིན།
+-པར་གཞི་འདི་ལག་བསྟར་བྱེད་པའི་དུས་ཚོད། 2021ལོའི་ཟླ་7ཚེས་30ཉིན།
+-        གྲོས་མཐུན་ནང་གཤམ་གསལ་གྱི་ནང་དོན་ཚུད་དགོས་པ་སྟེ།
+-        I.     སྤྱོད་མཁན་གྱི་ལག་ཁྱེར། 
+-        II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+-        གསུམ། བག་ལེབ་ཀོར་མོ་སོགས་ཀྱི་ལག་རྩལ།
+-        IV.ཤེས་བྱའི་ཐོན་དངོས་བདག་དབང་གི་དོན་ཚན།
+-        V.     སྒོ་འབྱེད་འབྱུང་ཁུངས་ཀྱི་ཚབ་རྟགས
+-        དྲུག་པ། ཕྱོགས་གསུམ་པའི་མཉེན་ཆས་དང་ཞབས་ཞུ།
+-        བདུན། བྲོས་བྱོལ་དུ་སོང་བའི་དོན་ཚན།
+-        བརྒྱད། གྲོས་མཐུན་གྱི་ཁ་དན་ཚིག་གནས་རང་བཞིན་དང་ཚབས་ཆེའི་རང་བཞིན།
+-        IX.བཅའ་ཁྲིམས་སྤྱད་འཐུས་པ་དང་རྩོད་གཞི་ཐག་གཅོད་བྱ་དགོས།
+-
+-I.      སྤྱོད་མཁན་གྱི་ལག་ཁྱེར།
+-        ཐོན་རྫས་འདི་དང་རྩིས་འཁོར་གྱི་མཁྲེགས་ཆས་རིགས་ལ་རིན་དོད་སྤྲད་ཟིན་པའི་སྤྱོད་མཁན་གྱི་མི་གྲངས་དང་རྩིས་འཁོར་གྱི་མཁྲེགས་ཆས་རིགས་ལ་གཞིགས་ནས་ང་ཚོས་ཁྱོད་ལ་ཕྱིར་འབུད་དང་སྤོ་སྒྱུར་བྱས་མི་ཆོག་པའི་ལག་ཁྱེར་སྤྲོད་དགོས་
+-        1.སློབ་གསོའི་ལས་ཁུངས་ཀྱི་སྤྱོད་མཁན་གྱི་ལག་ཁྱེར།
+-        གྲོས་མཐུན་གྱི་དོན་ཚན་དང་ཆ་རྐྱེན་ལ་བརྩི་སྲུང་བྱེད་སྐབས་གལ་ཏེ་ཁྱོད་ནི་སློབ་གསོའི་ལས་ཁུངས་ཡིན་ན། ཁྱོད་ཀྱི་ལས་ཁུངས་ཀྱིས་ཟུར་བཀོད་བྱས་མེད་པའི་རྒྱུ་གཉིས་རྣམ་གཞག་གི་མཉེན་ཆས་སྤྱད་དེ་ནང་ཁུལ་དུ་སྤྱོད་དུ་འཇུག་དགོས། འདིར་བཤད་པའི་"ནང་ཁུལ་དུ་སྤྱོད་རྒྱུ་"ཞེས་པ་ནི་ཆོག་མཆན་ཐོབ་པའི་སྡེ་ཚན་དང་སྡེ་ཚན་དེ་གའི་ངལ་རྩོལ་གན་རྒྱ་འཇོག་མཁན་ལས་བཟོ་པ་དང་དེ་བཞིན་ཁྱེད་ཚོའི་ལས་ཁུངས་ཀྱིས་བསྡུ་ལེན་བྱས་པའི་སློབ་མས་ཐོན་རྫས་འདི་བེད་སྤྱོད་བྱས་ཆོག་པར་ཟེར
+-        2.ཡིག་གཟུགས་མཉེན་ཆས་བཀོལ་སྤྱོད་བྱེད་པ།
+-        ཡིག་གཟུགས་མཉེན་ཆས་ཞེས་པ་ནི་ཐོན་རྫས་ནང་སྔོན་ཚུད་ནས་སྒྲིག་སྦྱོར་བྱས་པའི་མཉེན་ཆས་དང་ཡིག་གཟུགས་ཀྱི་རྣམ་པ་ཐོན་སྐྱེད་བྱེད་པར་ཟེར། ཁྱེད་ཚོས་ཡིག་གཟུགས་མཉེན་ཆས་དང་མཉེན་ཆས་ལོགས་སུ་འབྱེད་མི་ཐུབ་པ་དང་། ཡིག་གཟུགས་མཉེན་ཆས་བཟོ་བཅོས་རྒྱག་མི་ཐུབ་པས། ཡིག་གཟུགས་མཉེན་ཆས་དེ་རིགས་ཐོན་རྫས་འདིའི་ཆ་ཤས་ཤིག་ཡིན་པའི་ཆ་ནས་ཁྱེད་ཚོར་སྤྲད་པའི་དུས་སུ་མེད་པའམ་ཡང་ན་རིན་དོད།  ཡང་ན་ཐོན་རྫས་དེ་རིགས་སྒྲིག་སྦྱོར་བྱས་མེད་པའི་སྒྲིག་ཆས་ནང་བེད་སྤྱོད་བྱེད་མི་རུང་། གལ་ཏེ་ཡིག་གཟུགས་མཉེན་ཆས་སྤྱད་དེ་ཕྱི་ཕྱོགས་ལ་དྲིལ་བསྒྲགས་བྱེད་པ་སོགས་ཚོང་ལས་ཀྱི་ཆེད་དུ་ཡིན་ན། ཡིག་གཟུགས་པར་དབང་བཟོ་མཁན་དང་འབྲེལ་གཏུག་དང་གྲོས་མོལ་བྱས་ནས་འབྲེལ་ཡོད་བྱ་སྤྱོད་ཀྱི་ཆོག་མཆན་ཐོབ་རོགས།
+-
+-II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+-        JPIནང་དུ་ཁ་སྣོན་བྱས་པའི་འཛིན་གྲྭ་གསར་སྐྲུན་བྱེད་པའམ་ཡང་ན་བྱེད་ཐབས་གཞན་དག་སྤྱད་དེ་JPIནང་གི་འཛིན་གྲྭ་ཁ་སྣོན་དང་བསྒྱུར་བཅོས་བྱེད་པ་གང་ཡིན་རུང་"Java ལས་སྟེགས་མཐུད་ཁ་"("JPI"ཞེས་འབོད་པ་)བསྒྱུར་མི་རུང་། གལ་ཏེ་ཁྱོད་ཀྱིས་ཟུར་སྣོན་རིགས་ཤིག་གསར་སྐྲུན་བྱས་པ་མ་ཟད། ད་དུང་འབྲེལ་ཡོད་ཀྱི་APIsགཉིས་གསར་སྐྲུན་བྱས་ན། དེ་དག་(i)Javaསྟེགས་བུའི་ནུས་པ་རྒྱ་བསྐྱེད་པ་དང་། (གཉིས། )ཕྱོགས་གསུམ་པའི་མཉེན་ཆས་གསར་སྤེལ་བྱེད་མཁན་གྱིས་གོང་གསལ་གྱི་ཟུར་སྣོན་APIsཞེས་འབོད་སྲིད་པའི་ཟུར་སྣོན་མཉེན་ཆས་གསར་སྤེལ་བྱས་ཆོག་པས། ཁྱེད་ཚོས་ངེས་པར་དུ་འཕྲལ་མར་གསར་སྤེལ་ཚོང་པ་ཚང་མས་ཡོངས་ཁྱབ་ཏུ་APIsདེ་རིགས་རྒྱ་ཁྱབ་ཏུ་ཁྱབ། ཁྱེད་ཚོས་ཆོག་འཐུས་ལག་ཁྱེར་གཞན་དག་གསར་སྐྲུན་དང་དབང་ཆ་བསྐུར་ནས་བྱེད་སྟངས་གང་རུང་གི་ཐོག་ནས་"java"དང་། "javax"། "sun"བཅས་སུ་རྟགས་བརྒྱབ་པའི་འཛིན་གྲྭ་དང་། འབྲེལ་མཐུད། ཡན་ལག་ཁུག་མ་བཅས་གསར་སྐྲུན་བྱེད་མི་ཐུབ་པའམ་ཡང་ན་དབང་ཆ། Javaའཁོར་སྐྱོད་སྐབས་ཀྱི་ཁོར་ཡུག་གཉིས་གོང་འགྲིལ་ལུགས་ཚབ་ཨང་ཆོག་འཐུས་ལག་ཁྱེར་(མིག་སྔར་http://jdk.java.net་གནས་ཡོད་)ཡི་འོས་འཚམ་གྱི་པར་གཞི་ལ་བལྟས་ནས་Java བྱ་རིམ་ཆུང་བ།དང་ཉེར་སྤྱོད་གོ་རིམ་དང་མཉམ་འབྲེལ་གྱིས་འགྲེམ་སྤེལ་བྱས་པའི་འཁོར་སྐྱོད་དུས་ཚོད་ཀྱི་ཚབ་རྟགས་འདོན་སྤྲོད་བྱེད་ཐུབ་མིན་ལ་རྒྱུས་ལོན་བྱེད་དགོས།
+-
+-གསུམ། བག་ལེབ་ཀོར་མོ་སོགས་ཀྱི་ལག་རྩལ།
+-        ང་ཚོས་སྔར་ལས་ལྷག་པའི་སྒོ་ནས་སྤྱོད་མཁན་ལ་རྒྱུས་ལོན་དང་ཞབས་འདེགས་ཞུ་བར་རོགས་རམ་བྱེད་ཆེད། ང་ཚོའི་དྲ་ཚིགས་དང་། དྲ་ཐོག་ཞབས་ཞུ། ཉེར་སྤྱོད་གོ་རིམ་བཅས་ཀྱིས་"ཀ་ར་གོ་རེ་"ལག་རྩལ ཀ་ར་གོ་རེ་འདི་རིགས་ནི་མ་ལག་ནང་དུ་འགྲོ་འོང་བྱེད་པའི་དྲ་རྒྱའི་འགྲིམ་འགྲུལ་དང་ཞིབ་དཔྱད་ཚད་ལེན་གྱི་ནོར་འཁྲུལ་ལས་བྱུང་བའི་འགྲིམ་འགྲུལ་གསོག་ཉར་བྱེད་པར་བཀོལ་བ་ཡིན་པས། ངེས་པར་དུ་གཏན་འཁེལ་བྱ་དགོས། ང་ཚོས་ཁྱོད་ཀྱིས་ཀ་ར་གོ་རེ་འདི་རིགས་བཀོལ་ནས་ང་ཚོའི་དྲ་ཚིགས་དང་དྲ་ཐོག་ཞབས་ཞུ་དང་འབྲེལ་འདྲིས་ཇི་ལྟར་བྱ་རྒྱུར་གོ
+-        གལ་ཏེ་ཁྱོད་ཀྱིས་ཀ་ར་གོ་རེ་མེད་པར་བཟོས་ནས་Firefoxབཤར་ཆས།བཀོལ་སྤྱོད་བྱེད་འདོད་ན། ཁྱོད་ཀྱིས་དེ་མེ་གསོད་མེ་འགོག་གི་གསང་དོན་དང་བདེ་འཇགས་ལྟེ་གནས་སུ་བཞག་ཆོག གལ་ཏེ་ཁྱོད་ཀྱིས་བལྟ་ཆས་གཞན་པ་བཀོལ་སྤྱོད་བྱས་ན། འབྲེལ་ཡོད་མཁོ་འདོན་ཚོང་པའི་བྱེ་བྲག་གི་ཇུས་གཞིར་འདྲི་རྩད་བྱེད་རོགས།
+-        《ཀྲུང་ཧྭ་མི་དམངས་སྤྱི་མཐུན་རྒྱལ་ཁབ་ཀྱི་དྲ་རྒྱའི་བདེ་འཇགས་བཅའ་ཁྲིམས་》ཀྱི་དོན་ཚན་དོན་དྲུག་པའི་ནང་གསེས་དོན་ཚན་ལྔ་པའི་གཏན་འབེབས་གཞིར་བཟུང་མི་སྒེར་གྱི་ཆ་འཕྲིན།
+diff --git a/data/Ukcc-Agreement-en_US.txt b/data/Ukcc-Agreement-en_US.txt
+deleted file mode 100644
+index 0a6d127..0000000
+--- a/data/Ukcc-Agreement-en_US.txt
++++ /dev/null
+@@ -1,170 +0,0 @@
+-Dear users of Kylin operating system and relevant products, 
+-         This agreement describes your rights, obligations and prerequisites for your use of this product. Please read the clauses of the Agreement and the supplementary license (hereinafter collectively referred to as “the Agreement”) and the privacy policy statement for Kylin operating system (hereinafter referred to as “the Statement”).
+-        “This product” in the Agreement and the Statement refers to “Kylin operating system software product” developed, produced and released by Kylinsoft Co., Ltd. and used for handling the office work or building the information infrastructure for enterprises and governments. “We” refers to Kylinsoft Co., Ltd. “You” refers to the users who pay the license fee and use the Kylin operating system and relevant products.
+-
+-End User License Agreement of Kylin 
+-Release date of the version: July 30, 2021
+-Effective date of the version: July 30, 2021
+-        The Agreement shall include the following content:
+-        I.     User license 
+-        II.    Java technology limitations
+-        III.   Cookies and other technologies
+-        IV.    Intellectual property clause
+-        V.     Open source code
+-        VI.   The third-party software/services
+-        VII.  Escape clause
+-        VIII. Integrity and severability of the Agreement
+-        IX.    Applicable law and dispute settlement
+-
+-        I.      User license
+-        According to the number of users who have paid for this product and the types of computer hardware, we shall grant the non-exclusive and non-transferable license to you, and shall only allow the licensed unit and the employees signing the labor contracts with the unit to use the attached software (hereinafter referred to as “the Software”) and documents as well as any error correction provided by Kylinsoft.
+-        1.     User license for educational institutions
+-        In the case of observing the clauses and conditions of the Agreement, if you are an educational institution, your institution shall be allowed to use the attached unmodified binary format software and only for internal use. “For internal use” here refers to that the licensed unit and the employees signing the labor contracts with the unit as well as the students enrolled by your institution can use this product.
+-        2.     Use of the font software
+-        Font software refers to the software pre-installed in the product and generating font styles. You cannot separate the font software from the Software and cannot modify the font software in an attempt to add any function that such font software, as a part of this product, does not have when it is delivered to you, or you cannot embed the font software in the files provided as a commercial product for any fee or other remuneration, or cannot use it in equipment where this product is not installed. If you use the font software for other commercial purposes such as external publicity, please contact and negotiate with the font copyright manufacture to obtain the permissions for your relevant acts.
+-
+-        II.    Java technology limitations
+-        You cannot change the “Java Platform Interface” (referred to as “JPI”, that is, the classes in the “java” package or any sub-package of the “java” package), whether by creating additional classes in JPI or by other means to add or change the classes in JPI. If you create an additional class as well as one or multiple relevant APIs, and they (i) expand the functions of Java platform; And (ii) may be used by the third-party software developers to develop additional software that may call the above additional APIs, you must immediately publish the accurate description of such APIs widely for free use by all developers. You cannot create or authorize other licensees to create additional classes, interfaces or sub-packages marked as “java”, “javax” and “sun” in any way, or similar agreements specified by Sun in any naming agreements. See the appropriate version of the Java Runtime Environment Binary Code License (located at http://jdk.java.net at present) to understand the availability of runtime code jointly distributed with Java mini programs and applications.
+-
+-        III.   Cookies and other technologies
+-        In order to help us better understand and serve the users, our website, online services and applications may use the “Cookie” technology. Such Cookies are used to store the network traffic entering and exiting the system and the traffic generated due to detection errors, so they must be set. We shall understand how you interact with our website and online services by using such Cookies.
+-        If you want to disable the Cookie and use the Firefox browser, you may set it in Privacy and Security Center of Firefox. If your use other browsers, please consult the specific schemes from the relevant suppliers.
+-        In accordance with Article 76, paragraph 5 of the Network Security Law of the People's Republic of China, personal information refers to all kinds of information recorded in electronic or other ways, which can identify the natural persons’ personal identity separately or combined with other information, including but not limited to the natural person’s name, date of birth, identity certificate number, personal biological identification information, address and telephone number, etc. If Cookies contain the above information, or the combined information of non-personal information and other personal information collected through Cookie, for the purpose of this privacy policy, we shall regard the combined information as personal privacy information, and shall provide the corresponding security protection measures for your personal information by referring to Kylin Privacy Policy Statement.
+-
+-        IV.   Intellectual property clause
+-        1.    Trademarks and Logos
+-        This product shall be protected by the copyright law, trademark law and other laws and international intellectual property conventions. Title to the product and all associated intellectual property rights are retained by us or its licensors. No right, title or interest in any trademark, service mark, logo or trade name of us or its licensors is granted under the Agreement. Any use of Kylinsoft marked by you shall be in favor of Kylinsoft, and without our consent, you shall not arbitrarily use any trademark or sign of Kylinsoft.
+-        2.    Duplication, modification and distribution
+-        If the Agreement remains valid for all duplicates, you may and must duplicate, modify and distribute software observing GNU GPL-GNU General Public License agreement among the Kylin operating system software products in accordance with GNU GPL-GNU General Public License, and must duplicate, modify and distribute other Kylin operating system software products not observing GNU GPL-GNU General Public License agreement in accordance with relevant laws and other license agreements, but no derivative release version based on the Kylin operating system software products can use any of our trademarks or any other signs without our written consent.
+-        Special notes: Such duplication, modification and distribution shall not include any software, to which GNU GPL-GNU General Public License does not apply, in this product, such as the software store, input method software, font library software and third-party applications contained by the Kylin operating system software products. You shall not duplicate, modify (including decompilation or reverse engineering) or distribute the above software unless prohibited by applicable laws.
+-
+-        V.    Open source code
+-        For any open source codes contained in this product, any clause of the Agreement shall not limit, constrain or otherwise influence any of your corresponding rights or obligations under any applicable open source code license or all kinds of conditions you shall observe.
+-
+-        VI.  The third-party software/services
+-        The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer. This product may contain or be bundled with the third-party software/services to which the separate license agreements are attached. When you use any third-party software/services with separate license agreements, you shall be bound by such separate license agreements.
+-        We shall not have any right to control the third-party software/services in these products and shall not expressly or implicitly ensure or guarantee the legality, accuracy, effectiveness or security of the acts of their providers or users.
+-
+-        VII. Escape clause
+-        1.    Limited warranty
+-        We guarantee to you that within ninety (90) days from the date when you purchase or obtain this product in other legal ways (subject to the date of the sales contract), the storage medium (if any) of this product shall not be involved in any defects in materials or technology when it is normally used. All compensation available to you and our entire liability under this limited warranty will be for us to choose to replace this product media or refund the fee paid for this product.
+-        2.   Disclaimer
+-        In addition to the above limited warranty, the Software is provided “as is” without any express or implied condition statement and warranty, including any implied warranty of merchantability, suitability for a particular purpose or non-infringement, except that this disclaimer is deemed to be legally invalid.
+-        3.   Limitation of responsibility
+-        To the extent permitted by law, under any circumstances, no matter what theory of liability is adopted, no matter how it is caused, for any loss of income, profit or data caused by or related to the use or inability to use the Software, or for special indirect consequential incidental or punitive damages, neither we nor its licensors shall be liable (even if we have been informed of the possibility of such damages). According to the Agreement, in any case, whether in contract tort (including negligence) or otherwise, our liability to you will not exceed the amount you pay for the Software. The above limitations will apply even if the above warranty fails of its essential purpose.
+-
+-        VIII.Integrity and severability of the Agreement
+-        1.    The integrity of the Agreement
+-        The Agreement is an entire agreement on the product use concluded by us with you. It shall replace all oral or written contact information, suggestions, representations and guarantees inconsistent with the Agreement previous or in the same period. During the period of the Agreement, in case of any conflict clauses or additional clauses in the relevant quotations, orders or receipts or in other correspondences regarding the content of the Agreement between the parties, the Agreement shall prevail. No modification of the Agreement will be binding, unless in writing and signed by an authorized representative of each party.
+-        2.   Severability of the Agreement
+-        If any provision of the Agreement is deemed to be unenforceable, the deletion of the corresponding provision will still be effective, unless the deletion will hinder the realization of the fundamental purpose of the parties (in which case, the Agreement will be terminated immediately).
+-
+-        IX.  Applicable law and dispute settlement
+-        1.   Application of governing laws
+-        Any dispute settlement (including but not limited to litigation and arbitration) related to the Agreement shall be governed by the laws of the People’s Republic of China. The legal rules of any other countries and regions shall not apply.
+-        2.  Termination
+-        If the Software becomes or, in the opinion of either party, may become the subject of any claim for intellectual property infringement, either party may terminate the Agreement immediately.
+-        The Agreement is effective until termination. You may terminate the Agreement at any time, but you must destroy all originals and duplicates of the Software. The Agreement will terminate immediately without notice from us if you fail to comply with any provision of the Agreement. At the time of termination, you must destroy all originals and duplicates of such software, and shall be legally liable for not observing the Agreement.
+-        The Agreement shall be in both Chinese and English, and in case of ambiguity between any content above, the Chinese version shall prevail.
+-
+-        Privacy Policy Statement of Kylin Operating System/n        Release date of the version: July 30, 2021
+-        Effective date of the version: July 30, 2021
+-
+-        We attach great importance to personal information and privacy protection. In order to guarantee the legal, reasonable and appropriate collection, storage and use of your personal privacy information and the transmission and storage in the safe and controllable circumstances, we hereby formulate this Statement. We shall provide your personal information with corresponding security protection measures according to the legal requirements and mature security standards in the industry.
+-
+-        The Statement shall include the following content:
+-        I.   Collection and use your personal information
+-        II.  How to store and protect your personal information
+-        III. How to manage your personal information
+-        IV.  Privacy of the third-party software/services
+-        V.   Minors’ use of the products
+-        VI.  How to update this Statement
+-        VII. How to contact us
+-
+-        I.     How to collect and use your personal information
+-        1.    The collection of personal information
+-        We shall collect the relevant information when you use this product mainly to provide you with higher-quality products, more usability and better services. Part of information collected shall be provided by you directly, and other information shall be collected by us through your interaction with the product as well as your use and experience of the product. We shall not actively collect and deal with your personal information unless we have obtained your express consent according to the applicable legal stipulations.
+-        1)   The licensing mechanism for this product allows you to apply for the formal license of the product in accordance with the contract and relevant agreements after you send a machine code to the commercial personnel of Kylinsoft, and the machine code is generated through encryption and conversion according to the information of the computer used by you, such as network card, firmware and motherboard. This machine code shall not directly contain the specific information of the equipment, such as network card, firmware and motherboard, of the computer used by you.
+-        2)   Server of the software store of this product shall connect it according to the CPU type information and IP address of the computer used by you; at the same time, we shall collect the relevant information of your use of the software store of this product, including but not limited to the time of opening the software store, interaction between the pages, search content and downloaded content. The relevant information collected is generally recorded in the log of server system of software store, and the specific storage position may change due to different service scenarios.
+-        3)   Upgrading and updating of this product shall be connected according to the IP address of the computer used by you, so that you can upgrade and update the system;
+-        4)   Your personal information, such as E-mail address, telephone number and name, shall be collected due to business contacts and technical services.
+-        5)   The biological characteristic management tool support system components of this product shall use the biological characteristics for authentication, including fingerprint, finger vein, iris and voiceprint. The biological characteristic information input by you shall be stored in the local computer, and for such part of information, we shall only receive the verification results but shall not collect or upload it. If you do not need to use the biological characteristics for the system authentication, you may disable this function in the biological characteristic management tool.
+-        6)   This product shall provide the recording function. When you use the recording function of this product, we shall only store the audio content when you use the recording in the local computer but shall not collect or upload the content.
+-        7)   The service and support functions of this product shall collect the information provided by you for us, such as log, E-mail, telephone and name, so as to make it convenient to provide the technical services, and we shall properly keep your personal information.
+-        8)   In the upgrading process of this product, if we need to collect additional personal information of yours, we shall timely update this part of content.
+-        2.   Use of personal information
+-        We shall strictly observe the stipulations of laws and regulations and agreements with you to use the information collected for the following purposes. In case of exceeding the scope of following purposes, we shall explain to you again and obtain your consent.
+-        1)   The needs such as product licensing mechanism, use of software store, system updating and maintenance, biological identification and online services shall be involved;
+-        2)   We shall utilize the relevant information to assist in promoting the product security, reliability and sustainable service;
+-        3)   We shall directly utilize the information collected (such as the E-mail address and telephone provided by you) to communicate with you directly, for example, business contact, technical support or follow-up service visit;
+-        4)   We shall utilize the data collected to improve the current usability of the product, promote the product’s user experience (such as the personalized recommendation of software store) and repair the product defects, etc.;
+-        5)   We shall use the user behavior data collected for data analysis. For example, we shall use the information collected to analyze and form the urban thermodynamic chart or industrial insight report excluding any personal information. We may make the information excluding identity identification content upon the statistics and processing public and share it with our partners, to understand how the users use our services or make the public understand the overall use trend of our services;
+-        6)   We may use your relevant information and provide you with the advertising more related to you on relevant websites and in applications andother channels;
+-        7)   In order to follow the relevant requirements of relevant laws and regulations, departmental regulations and rules and governmental instructions.
+-        3.   Information sharing and provision
+-        We shall not share or transfer your personal information to any third party, except for the following circumstances:
+-        1)   After obtaining your clear consent, we shall share your personal information with the third parities;
+-        2)   In order to achieve the purpose of external processing, we may share your personal information with the related companies or other third-party partners (the third-party service providers, contractors, agents and application developers). We shall protect your information security by means like encryption and anonymization;
+-        3)   We shall not publicly disclose the personal information collected. If we must disclose it publicly, we shall notify you of the purpose of such public disclosure, type of information disclosed and the sensitive information that may be involved, and obtain your consent;
+-        4)   With the continuous development of our business, we may carry out the transactions, such as merger, acquisition and asset transfer, and we shall notify you of the relevant circumstances, and continue to protect or require the new controller to continue to protect your personal information according to laws and regulations and the standards no lower than that required by this Statement;
+-        5)   If we use your personal information beyond the purpose claimed at the time of collection and the directly or reasonably associated scope, we shall notify you again and obtain your consent before using your personal information.
+-        4.   Exceptions with authorized consent
+-        1)   It is directly related to national security, national defense security and other national interests; 
+-        2)   It is directly related to public safety, public health and public knowledge and other major public interests; 
+-        3)   It is directly related to crime investigation, prosecution, judgment and execution of judgment; 
+-        4)   It aims to safeguard the life, property and other major legal rights and interests of you or others but it is impossible to obtain your own consent; 
+-        5)   The personal information collected is disclosed to the public by yourself; 
+-        6)   Personal information collected from legally publicly disclosed information, such as legal news reports, government information disclosure and other channels; 
+-        7)   It is necessary to sign and perform of the contract according to your requirement; 
+-        8)   It is necessary to maintain the safe and stable operation of the provided products or services, including finding and handling any fault of products or services;
+-        9)   It is necessary to carry out statistical or academic research for public interest, and when the results of academic research or description are provided, the personal information contained in the results is de-identified;
+-        10) Other circumstances specified in the laws and regulations.
+-
+-        II.   How to store and protect personal information
+-        1.   Information storage place
+-        We shall store the personal information collected and generated in China within the territory of China in accordance with laws and regulations.
+-        2.   Information storage duration 
+-        Generally speaking, we shall retain your personal information for the time necessary to achieve the purpose or for the shortest term stipulated by laws and regulations. Information recorded in the log shall be kept for a specified period and be automatically deleted according to the configuration.
+-        When operation of our product or services stops, we shall notify you in the forms such as notification and announcement, delete your personal information or conduct anonymization within a reasonable period and immediately stop the activities collecting the personal information.
+-        3.   How to protect the information
+-        We shall strive to provide guarantee for the users’ information security, to prevent the loss, improper use, unauthorized access or disclosure of the information.
+-        We shall use the security protection measures within the reasonable security level to protect the information security. For example, we shall protect your system account and password by means like encryption.
+-        We shall establish the special management systems, processes and organizations to protect the information security. For example, we shall strictly restrict the scope of personnel who access to the information, and require them to observe the confidentiality obligation.
+-        4.   Emergency response plan
+-        In case of security incidents, such as personal information disclosure, we shall start the emergency response plan according to law, to prevent the security incidents from spreading, and shall notify you of the situation of the security incidents, the possible influence of the incidents on you and the remedial measures we will take, in the form of pushing the notifications and announcements. We will also report the disposition of the personal information security events according to the laws, regulations and regulatory requirements.
+-
+-        III. How to manage your personal information
+-        If you worry about the personal information disclosure caused by using this product, you may consider suspending or not using the relevant functions involving the personal information, such as the formal license of the product, application store, system updating and upgrading and biological identification, according to the personal and business needs. 
+-        Please pay attention to the personal privacy protection at the time of using the third-party software/services in this product.
+-
+-        IV.  Privacy of the third-party software/services
+-
+-        The third-party software/services referred to in the Agreement refer to relevant software/services developed by other organizations or individuals other than the Kylin operating system manufacturer.
+-        When you install or use the third-party software/services in this product, the privacy protection and legal responsibility of the third-party software/services shall be independently borne by the third-party software/services. Please carefully read and examine the privacy statement or clauses corresponding to the third-party software/services, and pay attention to the personal privacy protection.
+-
+-        V.   Minors’ use of the products
+-        If you are a minor, you shall obtain your guardian’s consent on your use of this product and the relevant service clauses. Except for the information required by the product, we shall not deliberately require the minors to provide more data. With the guardians’ consent or authorization, the accounts created by the minors shall be deemed to be the same as any other accounts. We have formulated special information processing rules to protect the personal information security of minors using this product. The guardians shall also take the appropriate preventive measures to protect the minors and supervise their use of this product.
+-
+-        VI.  How to update this Statement
+-        We may update this Statement at any time, and shall display the updated statement to you through the product installation process or the company’s website at the time of updating. After such updates take effect, if you use such services or any software permitted according to such clauses, you shall be deemed to agree on the new clauses. If you disagree on the new clauses, then you must stop using this product, and please close the accountcreated by you in this product; if you are a guardian, please help your minor child to close the account created by him/her in this product.
+-
+-        VII. How to contact us
+-        If you have any question, or any complaints or opinions on this Statement, you may seek advice through our customer service hotline 400-089-1870, or the official website (www.kylinos.cn), or “service and support” application in this product. You may also contact us by E-mail (market@kylinos.cn). 
+-        We shall timely and properly deal with them. Generally, a reply will be made within 15 working days.
+-        The Statement shall take effect from the date of updating. The Statement shall be in Chinese and English at the same time and in case of any ambiguity of any clause above, the Chinese version shall prevail.
+-        Last date of updating: November 1, 2021
+-
+-Address:
+-        Building 3, Xin’an Entrepreneurship Plaza, Tanggu Marine Science and Technology Park, Binhai High-tech Zone, Tianjin (300450)
+-        Silver Valley Tower, No. 9, North Forth Ring West Road, Haidian District, Beijing (100190)
+-        Building T3, Fuxing World Financial Center, No. 303, Section 1 of Furong Middle Road, Kaifu District, Changsha City (410000)
+-        Digital Entertainment Building, No. 1028, Panyu Road, Xuhui District, Shanghai (200030)
+-Tel.:
+-        Tianjin (022) 58955650      Beijing (010) 51659955
+-        Changsha (0731) 88280170        Shanghai (021) 51098866
+-Fax:
+-        Tianjin (022) 58955651      Beijing (010) 62800607
+-        Changsha (0731) 88280166        Shanghai (021) 51062866
+-
+-        Company website: www.kylinos.cn
+-        E-mail: support@kylinos.cn
+diff --git a/data/Ukcc-Agreement-zh_CN.txt b/data/Ukcc-Agreement-zh_CN.txt
+deleted file mode 100644
+index c710b44..0000000
+--- a/data/Ukcc-Agreement-zh_CN.txt
++++ /dev/null
+@@ -1,187 +0,0 @@
+-尊敬的银河麒麟操作系统及相关产品用户:
+-        本协议介绍您的权利、义务以及您使用本产品的前提条件。请您仔细阅读本协议条款、补充许可条款(统称“协议”)及银河麒麟操作系统隐私政策声明(以下简称“声明”)。
+-        本协议及声明中的“本产品”是指由麒麟软件有限公司开发并制作发行的用于办公或构建企业及政府的信息化基础设施——“银河麒麟操作系统软件产品”。“我们”是指麒麟软件有限公司。“您”是指支付授权费用并使用银河麒麟操作系统及相关产品的用户。
+-
+-银河麒麟最终用户使用许可协议
+-版本发布日期:【2021】年【7】月【30】日
+-版本生效日期:【2021】年【7】月【30】日
+-
+-        本协议将向您说明以下内容:
+-        一、使用许可
+-        二、Java技术限制
+-        三、Cookie和其他技术
+-        四、知识产权条款
+-        五、开放源代码说明
+-        六、第三方软件/服务说明
+-        七、免责条款
+-        八、协议完整性及可分割性说明
+-        九、适用法律及争议解决
+-
+-        一、使用许可
+-
+-        按照已经为本产品支付费用的用户数目及计算机硬件类型,我们向您授予非排他、不可转让的许可,仅允许被授权人单位及与其签订劳动合同的员工使用由麒麟软件提供的随附软件和文档以及任何错误纠正。
+-        1.教育机构使用许可
+-        在遵守本协议的条款和条件的情况下,如果您是教育机构,允许贵机构仅在内部使用随附的未经修改的二进制格式的软件。此处的“在内部使用”是指被授权人单位及与其签订劳动合同的员工以及在贵机构入学的学生使用本产品。 
+-        2.字型软件使用
+-        字型软件指本产品中预装的和生成字体样式的软件。您不可从软件中分离字型软件,不可改动字型软件,以新增此等字型软件被作为本产品的一部分交付予您时所不具备的任何功能,不可将字型软件嵌入作为商业产品提供以换取收费或其他报酬的文件、不可脱离安装了本产品的机器使用。如将字型软件用于对外宣传等其他商业用途时,请您与字体版权厂商联系协商以获得对您相关行为的许可。
+-
+-        二、Java技术限制
+-
+-        您不可更改“Java平台界面”(简称“JPI”,即指明为“java”包或“java”包的任何子包中的类),无论通过在JPI中创建额外的类,还是通过其他方式导致对JPI中的类进行增添或更动,均为不可。如果您创建一个额外的类以及一个或多个相关的API,而它们(i)扩展Java平台的功能;并且(ii)可供第三方软件开发者用于开发可调用上述额外API的额外软件,则您必须迅即广泛公布对此种API的准确说明,以供所有开发者免费使用。您不可创建、或授权其他被许可人创建以任何方式标示为“java”、“javax”、“sun”的额外的类、界面、子包或Sun在任何命名约定中指明的类似约定。参见Java运行时环境二进制代码许可的适当版本(目前位于http://jdk.java.net),以了解可与Java小程序和应用程序共同分发的运行时代码的可供情况。
+-
+-        三、Cookie和其他技术
+-
+-        为帮助我们更好地了解并服务用户,我们的网站、在线服务和应用程序可能会使用“Cookie”技术。这些Cookie用于存储进出系统的网络流量以及因检测错误而生成的流量,因此必须设置。 我们通过使用这些Cookie来了解您与我们的网站和在线服务如何进行交互。 
+-        如果您想禁用 Cookie 并且使用的是Firefox浏览器,可在Firefox的隐私与安全中心进行设置。如果您使用的是其他浏览器,请向相关供应商咨询具体方案。
+-        依照《中华人民共和国网络安全法》第七十六条第五款,个人信息,是指以电子或者其他方式记录的能够单独或者与其他信息结合识别自然人个人身份的各种信息,包括但不限于自然人的姓名、出生日期、身份证件号码、个人生物识别信息、住址、电话号码等。如果Cookie中包含上述信息,或者存在通过Cookie收集的非个人信息与其他个人信息合并后的信息,出于本隐私政策的目的,我们会将合并后的信息视为个人隐私信息,将参照银河麒麟隐私政策声明,为您的个人信息提供相应的安全保护措施。
+-
+-        四、知识产权条款
+-
+-        1.商标和标识
+-        本产品受到版权(著作权)法、商标法和其他法律及国际知识产权公约的保护。我们或其许可方保留对本产品的所有权及所有相关的知识产权。对于我们或其许可方的任何商标、服务标记、标识或商号的任何权利、所有权或利益,本协议均不作任何授权。您对麒麟软件标记的任何使用都应有利于麒麟软件,未经我们书面同意,不得擅自使用麒麟软件任何商标、标识。 
+-        2.关于复制、修改及分发
+-        如果在所有复制品中维持本协议书不变,您可以且必须根据《GNU GPL-GNU通用公共许可证》复制、修改及分发银河麒麟操作系统软件产品中遵守《GNU GPL-GNU通用公共许可证》协议的软件,其他不遵守《GNU GPL-GNU通用公共许可证》协议的银河麒麟操作系统软件产品必须根据相关法律、其他许可协议进行复制、修改及分发,但任何以银河麒麟操作系统软件产品为基础的衍生发行版未经我们的书面授权不能使用任何我们的商标或其他任何标志。
+-        特别注意:该复制、修改及分发不包括本产品中包含的任何不适用《GNU GPL-GNU通用公共许可证》的软件,如银河麒麟操作系统软件产品中包含的软件商店、输入法软件、字库软件、第三方应用软件等。除非适用法律予以禁止,否则您不得对上述软件进行复制、修改(包括反编译或反向工程)、分发。
+-
+-        五、开放源代码说明
+-
+-        对于本产品中包含的任何开放源代码,本协议的任何条款均不得限制、约束或以其它方式影响任何适用开放源代码许可证赋予您的任何相应的权利或者义务或您应遵守的各种条件。
+-
+-        六、第三方软件/服务说明
+-
+-        本协议所指的第三方软件/服务是指由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。本产品可能包含或捆绑有第三方软件/服务,这些第三方软件/服务附带单独的许可协议,您使用附带单独许可协议的任何第三方软件/服务需受到该单独许可协议的约束。
+-        我们不对本产品中的第三方软件/服务拥有任何控制权,也不对其提供方或用户行为的合法性、准确性、有效性、安全性进行任何明示或默示的保证或担保。
+-
+-        七、免责条款
+-
+-        1.有限担保
+-        我们向您担保,自购买或其他合法取得本产品之日起九十(90)天内(以销售合同日期为准),本产品的存储介质(如果有)在正常使用的情况下无材料和工艺方面的缺陷。在本有限担保项下,您可获得的所有补偿及我们的全部责任为由我们选择更换本产品介质或退还本产品的购买费用。
+-        2.免责声明
+-        除上述有限担保外,本软件按“原样”提供,不提供任何明示或默示的条件、陈述及担保,包括对适销性、对特定用途的适用性或非侵权性的任何默示的担保,均不予负责,但本免责声明被认定为法律上无效的情况除外。
+-        3.责任限制
+-        在法律允许范围内,无论在何种情况下,无论采用何种有关责任的理论,无论因何种方式导致,对于因使用或无法使用本软件引起的或与之相关的任何收益损失、利润或数据损失,或者对于特殊的、间接的、后果性的、偶发的或惩罚性的损害赔偿,我们或其许可方均不承担任何责任(即使我们已被告知可能出现上述损害赔偿)。根据本协议,在任何情况下,无论是在合同、侵权行为(包括过失)方面,还是在其他方面,我们对您的责任将不超过您就本软件所支付的金额。即使上述担保未能达到其基本目的,上述限制仍然适用。
+-
+-        八、协议完整性及可分割性说明
+-
+-        1.协议完整性
+-        本协议是我们就产品使用与您达成的完整协议。它取代此前或同期的所有和本协议不一致的口头或书面往来信息、建议、陈述和担保。在本协议期间,有关报价、订单、回执或各方之间就本协议内容进行的其他往来通信中的任何冲突条款或附加条款,均以本协议为准。对本协议的任何修改均无约束力,除非通过书面进行修改并由每一方的授权代表签字。
+-        2.可分割性
+-        如果本协议中有任何规定被认定为无法执行,则删除相应规定,本协议仍然有效,除非该删除会防碍各方根本目的的实现(在这种情况下,本协议将立即终止)。
+-
+-        九、适用法律及争议解决
+-
+-        1.管辖法律适用
+-        与本协议相关的任何争议解决(包括但不限于诉讼、仲裁等)均受适用中华人民共和国法律管辖。选择其它任何国家和地区的法律规则不予适用。
+-        2.终止
+-        如果本软件成为或在任一方看来可能成为任何知识产权侵权索赔之标的,则任一方可立即终止本协议。
+-        本协议在终止之前有效。您可以随时终止本协议,但必须同时销毁本软件的全部正本和副本。如果您未遵守本协议的任何规定,则本协议将不经我们发出通知立即终止。终止时,您必须销毁本软件的全部正本和副本,并且需承担因未遵守本协议而导致的法律责任。
+-
+-        本协议提供中英文两种版本,以上任何内容如有歧义,以中文版本为准。
+-
+-银河麒麟操作系统隐私政策声明
+-版本发布日期:【2021】年【7】月【30】日
+-版本生效日期:【2021】年【7】月【30】日
+-
+-        我们非常重视个人信息和隐私保护,为了保证合法、合理、适度的收集、存储、使用您的个人隐私信息,并在安全、可控的情况下进行传输、存储,我们制定了本声明。我们将会按照法律要求和业界成熟安全标准,为您的个人信息提供相应的安全保护措施。
+-
+-        本声明将向您说明以下内容:
+-        一、关于收集和使用您的个人信息
+-        二、如何存储和保护您的个人信息
+-        三、如何管理您的个人信息
+-        四、关于第三方软件/服务的隐私说明
+-        五、关于未成年人使用产品
+-        六、本声明如何更新
+-        七、如何联系我们
+-
+-        一、如何收集和使用您的个人信息
+-
+-        1.收集个人信息的情况
+-        我们在您使用本产品过程中收集相关的信息,主要为了向您提供更高质量、更易用的产品和更好的服务。收集的部分信息由您直接提供,其他信息则由我们通过您与产品的交互以及对产品的使用和体验收集而来。除非我们已根据适用的法律规定取得您的明示同意,我们不会主动收集并处理您的个人信息。
+-        1)本产品授权许可机制,会根据您所使用计算机的网卡、固件和主板等信息通过加密机制和转换方法生成申请产品正式授权许可的机器码;您将该机器码发送给麒麟软件商务人员后,可根据合同及相关协议申请正式许可。该机器码不直接包含您所使用计算机的网卡、固件和主板等设备的具体信息。
+-        2)本产品软件商店的服务器端,会根据您所使用计算机的CPU类型信息以及IP地址进行连接,同时我们会收集您使用本产品软件商店的相关信息,包括但不限于打开软件商店的时间、各页面之间的交互、搜索内容、下载的内容等,收集的相关信息一般记录在软件商店的服务端系统的日志中,具体存储位置可能因为不同的服务场景有所变动。
+-        3)本产品的升级更新,会根据您所使用计算机的IP地址进行连接,以便实现您升级更新系统;
+-        4)因业务往来及技术服务等向您收集电子邮箱、电话、姓名等个人信息。
+-        5)本产品的生物特征管理工具支持系统组件使用生物特征进行认证,包括指纹、指静脉、虹膜、声纹等。您录入的生物特征信息将储存在本地计算机,这部分信息我们仅接收验证结果,不会收集和上传。如您不需要使用生物特征进行系统认证,可以在生物特征管理工具中关闭该功能。
+-        6)本产品提供录音功能,您在使用本产品录音软件中,我们仅会将您使用录音时的音频内容存储在本地计算机中,不会进行收集和上传。
+-        7)本产品的服务与支持功能会收集由您提供给我们的日志、电子邮箱、电话、姓名等信息,便于提供技术服务,我们将妥善保管您的个人信息。
+-        8)本产品升级过程中,如需新增收集您的个人信息,我们将及时更新本部分内容。
+-        2.使用个人信息的情况
+-        我们严格遵守法律法规的规定及与您的约定,将收集的信息用于以下用途。若我们超出以下用途,我们将再次向您进行说明,并征得您的同意。
+-        1)涉及产品许可机制、软件商店使用、系统更新维护、生物识别、在线服务等需要;
+-        2)我们会利用相关信息协助提升产品的安全性、可靠性和可持续服务;
+-        3)我们会利用收集的信息(例如您提供的电子邮件地址、电话等)直接与您沟通。例如,业务联系、技术支持或服务回访;
+-        4)我们会利用收集的数据改进产品当前的易用性、提升产品用户体验(例如软件商店的个性化推荐)以及修复产品缺陷等;
+-        5)我们会将所收集到的用户行为数据用于大数据分析。例如,我们将收集到的信息用于分析形成不包含任何个人信息的城市热力图或行业洞察报告。我们可能对外公开并与我们的合作伙伴分享经统计加工后不含身份识别内容的信息,用于了解用户如何使用我们服务或让公众了解我们服务的总体使用趋势;
+-        6)我们可能使用您的相关信息,在相关网站、应用及其他渠道向您提供与您更加相关的广告;
+-        7)为了遵从相关法律法规、部门规章、政府指令的相关要求。
+-        3.信息的分享及对外提供
+-        我们不会共享或转让您的个人信息至第三方,但以下情况除外:
+-        1)获取您的明确同意后,我们会与第三方分享您的个人信息;
+-        2)为实现外部处理的目的,我们可能与关联公司或其他第三方合作伙伴(第三方服务供应商、承包商、代理、应用开发者等)分享您的个人信息。我们将采用加密、匿名化处理等手段来保障您的信息安全;
+-        3)我们不会对外公开披露所收集的个人信息,如必须公开披露时,我们会向您告知此次公开披露的目的、披露信息的类型及可能涉及的敏感信息,并征得您的同意;
+-        4)随着我们业务的持续发展,我们有可能进行合并、收购、资产转让等交易,我们将告知相关情形,按照法律法规及不低于本声明所要求的标准继续保护或要求新的控制者继续保护您的个人信息;
+-        5)如我们使用您的个人信息,超出了与收集时所声称的目的及具有直接或合理关联的范围,我们将在使用您的个人信息前,再次向您告知并征得您的同意。
+-        4.征得授权同意的例外情况
+-        1)与国家安全、国防安全等国家利益直接相关的;
+-        2)与公共安全、公共卫生、公众知情等重大公共利益直接相关的;
+-        3)与犯罪侦查、起诉、审判和判决执行等直接相关的;
+-        4)出于维护您或其他个人的生命、财产等重大合法权益但又无法得到您本人同意的;
+-        5)所收集的个人信息是您自行向社会公众公开的;
+-        6)从合法公开披露的信息中收集的个人信息,如合法的新闻报道、政府信息公开等渠道;
+-        7)根据您要求签订和履行合同所必需的;
+-        8)用于维护所提供的产品或服务的安全稳定运行所必需的。如发现、处置产品或服务的故障;
+-        9)出于公共利益开展统计或学术研究所必需,且其对外提供学术研究或描述的结果时,对结果中所包含的个人信息进行去标识化处理的;
+-        10)法律法规规定的其他情形。
+-
+-        二、我们如何存储和保护您的个人信息
+-
+-        1.信息存储的地点
+-        我们会按照法律法规规定,将在中国境内收集和产生的个人信息存储于中国境内。
+-        2.信息存储的期限
+-        一般而言,我们仅为实现目的所必需的时间或法律法规规定最短期限保留您的个人信息。记录在日志中的信息会按配置在一定期限保存及自动删除。
+-        当我们的产品或服务发生停止运营的情形时,我们将以通知、公告等形式通知您,在合理的期限内删除您的个人信息或进行匿名化处理,并立即停止收集个人信息的活动。
+-        3.我们如何保护这些信息
+-        我们努力为用户的信息安全提供保障,以防止信息的丢失、不当使用、未经授权访问或披露。
+-        我们将在合理的安全水平内使用安全保护措施以保障信息的安全。例如,我们会使用加密技术等手段来保护您的系统级账户密码。
+-        我们建立专门的管理制度、流程和组织以保障信息的安全。例如,我们严格限制访问信息的人员范围,要求他们遵守保密义务。
+-        4.应急预案
+-        若发生个人信息泄露等安全事件,我们会依法启动应急预案,阻止安全事件扩大,并以推送通知、公告等形式告知您安全事件的情况、事件可能对您的影响以及我们将采取的补救措施。我们还将按照法律法规和监管部门要求,上报个人信息安全事件的处置情况。
+-
+-        三、如何管理您的个人信息
+-
+-        如果担心因使用本产品导致个人信息的泄露,您可根据个人及业务需要考虑暂停或不使用涉及个人信息的相关功能,如产品正式授权许可、应用商店、系统更新升级、生物识别等。
+-在使用本产品之上的第三方软件/服务时,请注意个人隐私保护。
+-
+-        四、关于第三方软件/服务的隐私说明
+-
+-        本协议所指的第三方软件/服务是由非银河麒麟操作系统生产商的其他组织或个人开发的相关软件/服务。
+-        您在本产品之上安装或使用第三方软件/服务时,第三方软件/服务的隐私保护和法律责任由第三方软件/服务自行负责,请您仔细阅读和审查第三方软件/服务对应的隐私声明或条款,注意个人隐私保护。
+-
+-        五、关于未成年人使用产品
+-
+-        如果您是未成年人,则需要您的监护人同意您使用本产品并同意相关服务条款。除了提供产品所需要的信息外,我们不会刻意要求未成年人提供其他更多数据。在征得监护人同意或授权后,未成年人所创建的帐户即被视为等同于其他任何帐户。我们制定了专门的信息处理规则以保护使用本产品的未成年人的个人信息安全。监护人也应采取适当的预防措施保护未成年人,监督其对本产品的使用。
+-
+-        六、本声明如何更新
+-
+-        我们可能会随时更新本声明,并且会在变更时通过产品安装过程或公司网站向您展示变更后的声明。在这些变更生效后使用服务或根据这些条款授予许可的任何软件,即表示您同意新的条款。如果您不同意新的条款,则必须停止使用本产品,请关闭您在本产品之上创建的帐户;如果您是监护人,请帮助您的未成年子女关闭他或她在本产品之上创建的帐户。
+-
+-        七、如何联系我们
+-
+-        如您对本声明存在任何疑问,或任何相关的投诉、意见,可通过我们的客服热线400-089-1870、官方网站(www.kylinos.cn)或本产品中“服务与支持”应用进行咨询或反映。您也可以通过发送邮件至market@kylinos.cn与我们联系。
+-        我们会及时、妥善处理您的问题。一般情况下,我们将在15个工作日内给予答复。
+-        本声明自更新之日起生效,同时提供中英文两种版本,以上任何条款如有歧义,以中文版本为准。
+-        最近更新日期:2021年11月1日
+-
+-地址:
+-        天津市滨海高新区塘沽海洋科技园信安创业广场3号楼(300450)
+-        北京市海淀区北四环西路9号银谷大厦(100190)
+-        长沙市开福区芙蓉中路1段303号富兴世界金融中心T3栋(410000)
+-        上海市徐汇区番禺路1028号数娱大厦(200030)
+-电话:
+-        天津(022)58955650    北京(010)51659955  
+-        长沙(0731)88280170    上海(021)51098866
+-传真:
+-        天津(022)58955651    北京(010)62800607 
+-        长沙(0731)88280166    上海(021)51062866
+-公司网站:www.kylinos.cn
+-电子邮件:support@kylinos.cn                                                                                  
+diff --git a/plugins/personalized/theme/theme.cpp b/plugins/personalized/theme/theme.cpp
+index 8e65b3e..db9004a 100644
+--- a/plugins/personalized/theme/theme.cpp
++++ b/plugins/personalized/theme/theme.cpp
+@@ -1168,33 +1168,33 @@ void Theme::themeBtnClickSlot(QAbstractButton *button) {
+     QString currentThemeMode = qtSettings->get(MODE_QT_KEY).toString();
+     QString tmpMode;
+     UkccCommon::buriedSettings(name(), "set theme mode", QString("settings"), themeMode);
+-
+-    if (QString::compare(currentThemeMode, themeMode)) {
+-        if ("ukui-dark" == themeMode) {
+-            tmpMode = "ukui-black";
+-            revokeGlobalThemeSlot("getDefaultLightDarkMode", "dark");
+-            revokeGlobalThemeSlot("getQtDarkThemeName", themeMode);
+-            revokeGlobalThemeSlot("getGtkDarkThemeName", tmpMode);
+-            mAutoSettings->set(COLOR_KEY_AUTO_THEME, false);
+-        } else if ("ukui-light" == themeMode) {
+-            tmpMode = "ukui-white";
+-            revokeGlobalThemeSlot("getDefaultLightDarkMode", "light");
+-            revokeGlobalThemeSlot("getQtLightThemeName", themeMode);
+-            revokeGlobalThemeSlot("getGtkLightThemeName", tmpMode);
+-            mAutoSettings->set(COLOR_KEY_AUTO_THEME, false);
+-        } else if ("ukui-default" == themeMode) {
+-            revokeGlobalThemeSlot("getDefaultLightDarkMode", "light");
+-            revokeGlobalThemeSlot("getQtLightThemeName", themeMode);
+-            revokeGlobalThemeSlot("getGtkLightThemeName", tmpMode);
+-            mAutoSettings->set(COLOR_KEY_AUTO_THEME, false);
+-        } else if (themeMode == "ukui-auto" && button->isChecked()) {
+-            clickedCustomTheme();
+-            mAutoSettings->set(COLOR_KEY_AUTO_THEME, true);
+-            return;
+-        }
+-        gtkSettings->set(MODE_GTK_KEY, tmpMode);
+-        qtSettings->set(MODE_QT_KEY, themeMode);
++    qDebug() << Q_FUNC_INFO << "themeMode" << themeMode << "gsetting currentThemeMode" << currentThemeMode;
++    if ("ukui-dark" == themeMode) {
++        tmpMode = "ukui-black";
++        revokeGlobalThemeSlot("getDefaultLightDarkMode", "dark");
++        revokeGlobalThemeSlot("getQtDarkThemeName", themeMode);
++        revokeGlobalThemeSlot("getGtkDarkThemeName", tmpMode);
++        mAutoSettings->set(COLOR_KEY_AUTO_THEME, false);
++    } else if ("ukui-light" == themeMode) {
++        tmpMode = "ukui-white";
++        revokeGlobalThemeSlot("getDefaultLightDarkMode", "light");
++        revokeGlobalThemeSlot("getQtLightThemeName", themeMode);
++        revokeGlobalThemeSlot("getGtkLightThemeName", tmpMode);
++        mAutoSettings->set(COLOR_KEY_AUTO_THEME, false);
++    } else if ("ukui-default" == themeMode) {
++        revokeGlobalThemeSlot("getDefaultLightDarkMode", "light");
++        revokeGlobalThemeSlot("getQtLightThemeName", themeMode);
++        revokeGlobalThemeSlot("getGtkLightThemeName", tmpMode);
++        mAutoSettings->set(COLOR_KEY_AUTO_THEME, false);
++    } else if (themeMode == "ukui-auto" && button->isChecked()) {
++        revokeGlobalThemeSlot("getDefaultLightDarkMode", "auto");
++        clickedCustomTheme();
++        qDebug() << Q_FUNC_INFO << "themeMode is ukui-auto set DefaultLightDarkMode as auto";
++        mAutoSettings->set(COLOR_KEY_AUTO_THEME, true);
++        return;
+     }
++    gtkSettings->set(MODE_GTK_KEY, tmpMode);
++    qtSettings->set(MODE_QT_KEY, themeMode);
+ }
+ 
+ void Theme::changeGlobalThemeSlot(QAbstractButton *button)
+@@ -1228,6 +1228,7 @@ void Theme::changeGlobalThemeSlot(QAbstractButton *button)
+     QString accentColor= theme->getQtAccentRole();
+     QString gtkColorTheme;
+ 
++    qDebug() << "changeGlobalThemeSlot value" << value << "colorTheme" << colorTheme;
+     if (!colorTheme.compare("light")) {
+         colorTheme = theme->getQtLightThemeName();
+         gtkColorTheme = theme->getGtkLightThemeName();
+@@ -1246,11 +1247,25 @@ void Theme::changeGlobalThemeSlot(QAbstractButton *button)
+ 
+     qtSettings->set(ICON_QT_KEY, iconName);
+     qtSettings->set(WIDGET_QT_KEY, widgetName);
+-    qtSettings->set(MODE_QT_KEY, colorTheme);
+     qtSettings->set(COLOR_QT_KEY, accentColor);
+-
+     gtkSettings->set(ICON_GTK_KEY, iconName);
+-    gtkSettings->set(MODE_GTK_KEY, gtkColorTheme);
++    if (colorTheme.compare("auto")) {
++        qtSettings->set(MODE_QT_KEY, colorTheme);
++        gtkSettings->set(MODE_GTK_KEY, gtkColorTheme);
++    } else {
++        qDebug() << Q_FUNC_INFO << "colorTheme is auto, change to ukui-auto";
++        mAutoSettings->set(COLOR_KEY_AUTO_THEME, true);
++        for (QAbstractButton * button : mThemeModeBtnGroup->buttons()) {
++            QString propertyName = button->property("value").toString();
++            qDebug() << Q_FUNC_INFO << "button propertyName" << propertyName;
++            if ("ukui-auto" != propertyName) {
++                continue;
++            }
++            disconnect(mThemeModeBtnGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(themeBtnClickSlot(QAbstractButton*)));
++            button->click();
++            connect(mThemeModeBtnGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(themeBtnClickSlot(QAbstractButton*)));
++        }
++    }
+ 
+     curSettings->set(CURSOR_THEME_KEY, cursorName);
+ 
+diff --git a/plugins/system/about/res/Ukcc-Agreement-en_US.txt b/plugins/system/about/res/Ukcc-Agreement-en_US.txt
+index 0a6d127..2b372b5 100644
+--- a/plugins/system/about/res/Ukcc-Agreement-en_US.txt
++++ b/plugins/system/about/res/Ukcc-Agreement-en_US.txt
+@@ -91,7 +91,8 @@ Effective date of the version: July 30, 2021
+         5)   The biological characteristic management tool support system components of this product shall use the biological characteristics for authentication, including fingerprint, finger vein, iris and voiceprint. The biological characteristic information input by you shall be stored in the local computer, and for such part of information, we shall only receive the verification results but shall not collect or upload it. If you do not need to use the biological characteristics for the system authentication, you may disable this function in the biological characteristic management tool.
+         6)   This product shall provide the recording function. When you use the recording function of this product, we shall only store the audio content when you use the recording in the local computer but shall not collect or upload the content.
+         7)   The service and support functions of this product shall collect the information provided by you for us, such as log, E-mail, telephone and name, so as to make it convenient to provide the technical services, and we shall properly keep your personal information.
+-        8)   In the upgrading process of this product, if we need to collect additional personal information of yours, we shall timely update this part of content.
++        8)   To ensure the security of your account and provide personalized services, this product may collect your username and password information used to log in to the computer system. These information will be encrypted and used only for identity verification and account management purposes. We promise not to store or transmit your password in plain text and take strict security measures to protect your personal information.
++        9)   In the upgrading process of this product, if we need to collect additional personal information of yours, we shall timely update this part of content.
+         2.   Use of personal information
+         We shall strictly observe the stipulations of laws and regulations and agreements with you to use the information collected for the following purposes. In case of exceeding the scope of following purposes, we shall explain to you again and obtain your consent.
+         1)   The needs such as product licensing mechanism, use of software store, system updating and maintenance, biological identification and online services shall be involved;
+diff --git a/plugins/time-language/area/area.cpp b/plugins/time-language/area/area.cpp
+index f9fb40d..f66cbd4 100644
+--- a/plugins/time-language/area/area.cpp
++++ b/plugins/time-language/area/area.cpp
+@@ -205,7 +205,9 @@ InteractiveInfo Area::initInteractiveInfo(int orderNum)
+                         {QString("ky_KG.UTF-8"), tr("Kirghiz  (KG)")},
+                         {QString("de_DE.UTF-8"), tr("German  (DE)")},
+                         {QString("es_ES.UTF-8"), tr("Spanish  (ES)")},
+-                        {QString("fr_FR.UTF-8"), tr("French  (FR)")}
++                        {QString("fr_FR.UTF-8"), tr("French  (FR)")},
++                        {QString("ar_AE.UTF-8"), tr("Arab  (AE)")},
++                        {QString("vi_VN.UTF-8"), tr("Vietnam  (VN)")}
+ #endif
+                        };
+     } else if (orderNum == AreaUi::CALENDAR) {
+@@ -446,6 +448,7 @@ void Area::initAddLanguage()
+     }
+     const QStringList languageList = areaInterface->property("languageList" ).toStringList();
+     for (QString s : languageList) {
++        qDebug() << "add language" << s;
+         areaWidget->languageDialog()->addRow(showLanguageName(s));
+     }
+ 
+@@ -657,6 +660,10 @@ QString Area::showLanguageName(QString languageCode)
+         languageName = QString("Español") + QString("(%1)").arg(tr("Spanish"));
+     } else if (languageCode == "fr_FR") {
+         languageName = QString("Français") + QString("(%1)").arg(tr("French"));
++    } else if (languageCode == "ar_AE") {
++        languageName = QString("عربي") + QString("(%1)").arg(tr("Arab"));
++    } else if (languageCode == "vi_VN") {
++        languageName = QString("Việt Nam") + QString("(%1)").arg(tr("Vietnam"));
+     } else {
+         languageName = QString("languageCode ") + QString("(%1)").arg("languageCode");
+     }
+diff --git a/registeredSession/plugins/area/areainterface.cpp b/registeredSession/plugins/area/areainterface.cpp
+index d313be5..1c4155f 100644
+--- a/registeredSession/plugins/area/areainterface.cpp
++++ b/registeredSession/plugins/area/areainterface.cpp
+@@ -89,7 +89,8 @@ QStringList AreaInterface::getFormatCountryList()
+ #ifdef Nile
+     formatList << QString("bo_CN.UTF-8") << QString("ug_CN.UTF-8") << QString("ky_KG.UTF-8")
+                << QString("zh_HK.UTF-8") << QString("kk_KZ.UTF-8") << QString("mn_MN.UTF-8")
+-               << QString("de_DE.UTF-8") << QString("es_ES.UTF-8") << QString("fr_FR.UTF-8");
++               << QString("de_DE.UTF-8") << QString("es_ES.UTF-8") << QString("fr_FR.UTF-8")
++               << QString("ar_AE.UTF-8") << QString("vi_VN.UTF-8");
+ #endif
+     }
+ 
+@@ -142,7 +143,8 @@ QStringList AreaInterface::getLanguageList()
+ #ifdef Nile
+     formatList << QString("bo_CN") << QString("ug_CN") << QString("ky_KG")
+                << QString("zh_HK") << QString("kk_KZ") << QString("mn_MN")
+-               << QString("de_DE") << QString("es_ES") << QString("fr_FR");
++               << QString("de_DE") << QString("es_ES") << QString("fr_FR")
++               << QString("ar_AE") << QString("vi_VN");
+     return formatList;
+ #endif
+     }
+diff --git a/registeredSession/plugins/shortcut/shortcutinterface.cpp b/registeredSession/plugins/shortcut/shortcutinterface.cpp
+index 707fb04..c3a4f6b 100644
+--- a/registeredSession/plugins/shortcut/shortcutinterface.cpp
++++ b/registeredSession/plugins/shortcut/shortcutinterface.cpp
+@@ -3,6 +3,15 @@
+ 
+ ShortcutInterface::ShortcutInterface()
+ {
++    qRegisterMetaType<QStringPair>("QStringPair");
++    qDBusRegisterMetaType<QStringPair>();
++    qRegisterMetaType<QStringPairList>("QStringPairList");
++    qDBusRegisterMetaType<QStringPairList>();
++
++    qRegisterMetaType<KeyEntry>("KeyEntry");
++    qDBusRegisterMetaType<KeyEntry>();
++    qRegisterMetaType<KeyEntryList>("KeyEntryList");
++    qDBusRegisterMetaType<KeyEntryList>();
+     getShortcutThread();
+ }
+ 
+diff --git a/registeredSession/plugins/shortcut/type.cpp b/registeredSession/plugins/shortcut/type.cpp
+new file mode 100644
+index 0000000..008fb9f
+--- /dev/null
++++ b/registeredSession/plugins/shortcut/type.cpp
+@@ -0,0 +1,53 @@
++#include "type.h"
++#include <QDBusArgument>
++#include <QDBusMetaType>
++
++const QDBusArgument &operator<<(QDBusArgument &argument, const QStringPair &string)
++{
++    argument.beginStructure();
++    argument << string.name;
++    argument << string.key;
++    argument << string.mediakey;
++    argument.endStructure();
++    return argument;
++}
++
++const QDBusArgument &operator>>(const QDBusArgument &argument, QStringPair &string)
++{
++    argument.beginStructure();
++    argument >> string.name;
++    argument >> string.key;
++    argument >> string.mediakey;
++    argument.endStructure();
++    return argument;
++}
++
++const QDBusArgument &operator<<(QDBusArgument &argument, const KeyEntry &key)
++{
++    argument.beginStructure();
++    argument << key.gsSchema;
++    argument << key.keyStr;
++    argument << key.valueStr;
++    argument << key.descStr;
++    argument << key.gsPath;
++    argument << key.nameStr;
++    argument << key.bindingStr;
++    argument << key.actionStr;
++    argument.endStructure();
++    return argument;
++}
++
++const QDBusArgument &operator>>(const QDBusArgument &argument, KeyEntry &key)
++{
++    argument.beginStructure();
++    argument >> key.gsSchema;
++    argument >> key.keyStr;
++    argument >> key.valueStr;
++    argument >> key.descStr;
++    argument >> key.gsPath;
++    argument >> key.nameStr;
++    argument >> key.bindingStr;
++    argument >> key.actionStr;
++    argument.endStructure();
++    return argument;
++}
+diff --git a/registeredSession/plugins/shortcut/type.h b/registeredSession/plugins/shortcut/type.h
+index 00aa7a3..d8c8bb3 100644
+--- a/registeredSession/plugins/shortcut/type.h
++++ b/registeredSession/plugins/shortcut/type.h
+@@ -1,6 +1,10 @@
+ #ifndef TYPE_H
+ #define TYPE_H
+ 
++#include <QString>
++#include <QDBusArgument>
++#include <QDBusMetaType>
++
+ typedef struct _KeyEntry {
+     QString gsSchema;
+     QString keyStr;
+@@ -12,6 +16,10 @@ typedef struct _KeyEntry {
+     QString actionStr;
+ }KeyEntry;
+ 
++const QDBusArgument &operator<<(QDBusArgument &argument, const KeyEntry &key);
++const QDBusArgument &operator>>(const QDBusArgument &argument, KeyEntry &key);
++Q_DECLARE_METATYPE(KeyEntry)
++
+ typedef struct
+ {
+     QString name;
+@@ -19,6 +27,10 @@ typedef struct
+     QString mediakey;
+ }QStringPair;
+ 
++const QDBusArgument &operator<<(QDBusArgument &argument, const QStringPair &string);
++const QDBusArgument &operator>>(const QDBusArgument &argument, QStringPair &string);
++Q_DECLARE_METATYPE(QStringPair)
++
+ typedef QList<KeyEntry> KeyEntryList;
+ typedef QList<QStringPair> QStringPairList;
+ 
+diff --git a/registeredSession/registeredSession.pro b/registeredSession/registeredSession.pro
+index a2e7b05..90f93ef 100644
+--- a/registeredSession/registeredSession.pro
++++ b/registeredSession/registeredSession.pro
+@@ -52,6 +52,7 @@ SOURCES += \
+         plugins/screensaver/screensaverinterface.cpp \
+         plugins/shortcut/getshortcutworker.cpp \
+         plugins/shortcut/shortcutinterface.cpp \
++        plugins/shortcut/type.cpp \
+         plugins/wallpaper/wallpaperinterface.cpp \
+         plugins/vino/vinointerface.cpp \
+         plugins/wallpaper/workerobject.cpp \
+diff --git a/shell/mainwindow.cpp b/shell/mainwindow.cpp
+index 9d3b584..e9cfd1d 100644
+--- a/shell/mainwindow.cpp
++++ b/shell/mainwindow.cpp
+@@ -290,14 +290,43 @@ void MainWindow::initPageWidgetSlot() {
+ 
+ void MainWindow::initPageWidget(bool isDbus) {
+     QObject::connect(&m_watcher, &QFutureWatcher<void>::finished, [&, isDbus]() {
+-        qDebug() << Q_FUNC_INFO << "dbus request" << isDbus;
+-        this->m_searchWidget->setLanguage(QLocale::system().name());
+-        if (!isDbus) {
+-            initPageWidgetSlot();
+-        }
++        pluginWatchSlot(isDbus);
+     });
+ }
+ 
++void MainWindow::pluginWatchSlot(bool isDbus) {
++    qDebug() << Q_FUNC_INFO << "dbus request" << isDbus;
++    for (int i = 0; i < m_pluginList.size(); ++i) {
++        CommonInterface* pluginInstance = m_pluginList.at(i);
++        if (pluginInstance == nullptr) {
++            continue;
++        }
++        QGSettings* pluginSettings = setGsettingsPath(pluginPathList, pluginInstance->name());
++        if (pluginSettings == nullptr) {
++            continue;
++        }
++        vecGsettins.insert(pluginInstance->name(), pluginSettings);
++        QString plugini18nName = pluginInstance->plugini18nName();
++        QString pluginName = pluginInstance->name();
++        bool show = pluginSettings->get(SHOW_KEY).toBool();
++        connect(pluginSettings, &QGSettings::changed, [=, plugini18nName, pluginName, show](QString key) {
++            pluginSettingChangedSlot(key, plugini18nName, pluginName, show);
++        });
++    }
++    this->m_searchWidget->setLanguage(QLocale::system().name());
++    if (!isDbus) {
++        initPageWidgetSlot();
++    }
++}
++
++void MainWindow::pluginSettingChangedSlot(QString key, QString plugini18nName, QString pluginName, bool show) {
++    if (key == SHOW_KEY) {
++        m_searchWidget->hiddenSearchItem(QLocale::system().name() == "zh_CN" ? plugini18nName : pluginName, show);
++    } else {
++        m_searchWidget->hiddenSearchItem(QLocale::system().name() == "zh_CN" ? plugini18nName : pluginName, show);
++    }
++}
++
+ void MainWindow::initUI() {
+     ui->setupUi(this);
+     QRect screenSize = UkccCommon::sizeOnCursor();
+@@ -680,23 +709,15 @@ void MainWindow::determinePlugin(const QString &fileName, const QDir &dir)
+         if (!pluginInstance || !fileName.endsWith("so")) {
+             return;
+         }
++        m_pluginList.append(pluginInstance);
+ 
+         QGSettings *pluginSettings = setGsettingsPath(pluginPathList, pluginInstance->name());
+-        vecGsettins.insert(pluginInstance->name(), pluginSettings);
+-
+         ModulesFactory::loadPluginInfo(plugin);
+         if (pluginInstance->isEnable() && pluginSettings->get(SHOW_KEY).toBool() &&
+                 (!m_ModuleMap.contains(pluginInstance->name().toLower()) ||
+                  m_ModuleMap[pluginInstance->name().toLower()].toBool())) {
+             m_searchWidget->addModulesName(pluginInstance->name(), pluginInstance->plugini18nName(), pluginInstance->translationPath());
+         }
+-        connect(pluginSettings, &QGSettings::changed,[=](QString key){
+-            if (key == SHOW_KEY) {
+-                m_searchWidget->hiddenSearchItem(QLocale::system().name() == "zh_CN" ? pluginInstance->plugini18nName() : pluginInstance->name(), pluginSettings->get(SHOW_KEY).toBool());
+-            } else {
+-                m_searchWidget->hiddenSearchItem(QLocale::system().name() == "zh_CN" ? pluginInstance->plugini18nName() : pluginInstance->name(), pluginSettings->get(SHOW_KEY).toBool());
+-            }
+-        });
+         })
+         );
+     } else {
+diff --git a/shell/mainwindow.h b/shell/mainwindow.h
+index e1d7f61..3e94aae 100644
+--- a/shell/mainwindow.h
++++ b/shell/mainwindow.h
+@@ -119,6 +119,7 @@ private:
+     bool isLoad;
+     bool loadWidget;
+     QFutureWatcher<void> m_watcher;
++    QList<CommonInterface*> m_pluginList;
+ 
+ private:
+     void preInit();
+@@ -138,6 +139,8 @@ private:
+     void changeSearchSlot();
+     void showGuide(QString pluName);
+     void hideComponent();
++    void pluginWatchSlot(bool isDbus);
++    void pluginSettingChangedSlot(QString key, QString plugini18nName, QString pluginName, bool show);
+ 
+ public slots:
+     void pluginBtnClicked(QObject * plugin);
+diff --git a/shell/res/i18n/bo_CN.ts b/shell/res/i18n/bo_CN.ts
+index ac0206b..d57a92d 100644
+--- a/shell/res/i18n/bo_CN.ts
++++ b/shell/res/i18n/bo_CN.ts
+@@ -23,12 +23,12 @@
+         <extra-contents_path>/About/Memory</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="408"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="409"/>
+         <source>Disk</source>
+         <translation>ཁབ་ལེན་གྱི་ཁབ་ལེན་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="56"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="57"/>
+         <source>About and Support</source>
+         <translation>འབྲེལ་ཡོད་དང་རྒྱབ་སྐྱོར་</translation>
+     </message>
+@@ -101,7 +101,7 @@
+         <translation type="vanished">སྤྱོད་མཁན་གྱི་ལག་དེབ་ལ་གཟིགས&gt;&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="545"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="546"/>
+         <source>Version</source>
+         <translation>པར་གཞི།</translation>
+     </message>
+@@ -128,17 +128,17 @@
+         <translation type="obsolete">པར་དབང ©་2009-%1 བསེ་རུ་མཉེན་པོ།. སོར་ཉར་བྱས་པའི་ཁེ་དབང་ཡོད་ཚད། {2020.?}</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="547"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="548"/>
+         <source>Status</source>
+         <translation>གནས་ཚུལ་གྱི་གནས་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="549"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="550"/>
+         <source>Serial</source>
+         <translation>གོ་རིམ་ལྟར་ན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="224"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="225"/>
+         <source>DateRes</source>
+         <translation>དུས་ཚོད་ཀྱི་དུས་ཚོད།</translation>
+     </message>
+@@ -151,61 +151,61 @@
+         <translation type="vanished">བསེ་རུ་མཉེན་པོ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="244"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="458"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="245"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="459"/>
+         <source>Extend</source>
+         <translation>དུས་འགྱངས་བྱ་དགོས</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="279"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="280"/>
+         <source>Kylin Linux Desktop (Touch Screen) V10 (SP1)</source>
+         <translation>ཆི་ལིན་གྱི་ཅོག་ངོས་ V10(SP1)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="281"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="282"/>
+         <source>Kylin Linux Desktop (Tablet) V10 (SP1)</source>
+         <translation>ཆི་ལིན་གྱི་ཅོག་ངོས་ V10(SP1)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="287"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="288"/>
+         <source>Kylin Linux Desktop V10 (SP1)</source>
+         <translation>ཆི་ལིན་གྱི་ཅོག་ངོས་ V10(SP1)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="401"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="410"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="402"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="411"/>
+         <source>avaliable</source>
+         <translation>འགན་འཁྲི་འཁུར་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="457"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="553"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="458"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="554"/>
+         <source>expired</source>
+         <translation>དུས་བཀག་ཐིམ་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="518"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="519"/>
+         <source>The system needs to be restarted to set the HostName, whether to reboot</source>
+         <translation>མ་ལག་འདི་བསྐྱར་དུ་འགོ་ཚུགས་ནས་གཙོ་སྐྱོང་བྱེད་མཁན་གྱི་མིང་གཏན་འཁེལ་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="519"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="520"/>
+         <source>Reboot Now</source>
+         <translation>ད་ལྟ་བསྐྱར་དུ་ལས་ཀ་བྱེད་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="520"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="521"/>
+         <source>Reboot Later</source>
+         <translation>རྗེས་སུ་ཡང་བསྐྱར་ཐེངས་གཅིག་ལ་བསྐྱར་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="231"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="235"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="232"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="236"/>
+         <source>Active</source>
+         <translation>འཁྲུག་ཆ་དོད་པོ་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="58"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="59"/>
+         <source>About</source>
+         <translation>འབྲེལ་ཡོད་ཀྱི་སྐོར།</translation>
+     </message>
+@@ -214,18 +214,18 @@
+         <translation type="vanished">པར་དབང ©་2009-%1 བསེ་རུ་མཉེན་པོ།. སོར་ཉར་བྱས་པའི་ཁེ་དབང་ཡོད་ཚད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="227"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="233"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="228"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="234"/>
+         <source>Inactivated</source>
+         <translation>འགུལ་སྐྱོད་མ་བྱས་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="229"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="230"/>
+         <source>Trial expiration time</source>
+         <translation>འདྲི་གཅོད་དུས་ཚོད་ཐིམ་པའི་དུས་ཚོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="243"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="244"/>
+         <source>Activated</source>
+         <translation>སྐུལ་སློང་བྱས་པ།</translation>
+     </message>
+@@ -233,7 +233,7 @@
+ <context>
+     <name>AboutInterface</name>
+     <message>
+-        <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="233"/>
++        <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="238"/>
+         <source>avaliable</source>
+         <translation>འགན་འཁྲི་འཁུར་དགོས།</translation>
+     </message>
+@@ -241,97 +241,96 @@
+ <context>
+     <name>AboutUi</name>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="32"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="33"/>
+         <source>System Summary</source>
+         <translation>ལམ་ལུགས་ཕྱོགས་བསྡོམས།</translation>
+         <extra-contents_path>/About/System Summary</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="35"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="37"/>
+         <source>Privacy and agreement</source>
+         <translation>སྒེར་གྱི་གསང་དོན་དང་གྲོས་མཐུན</translation>
+         <extra-contents_path>/About/Privacy and agreement</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="37"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="40"/>
+         <source>Support</source>
+         <translation>རྒྱབ་སྐྱོར།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="51"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="381"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="55"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="399"/>
+         <source>Version</source>
+         <translation>པར་གཞི།</translation>
+         <extra-contents_path>/About/version</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="56"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="61"/>
+         <source>Version Number</source>
+         <translation>པར་གཞིའི་ཨང་གྲངས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="61"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="67"/>
+         <source>Patch Version</source>
+         <translation>པར་གཞི་ཆུང་ཆུང་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="66"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="73"/>
+         <source>Installed Date</source>
+         <translation>སྒྲིག་སྦྱོར་ཚེས་གྲངས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="71"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="79"/>
+         <source>Upgrade Date</source>
+         <translation>རྒྱུད་ཁོངས་གསར་སྒྱུར་དུས་ཚོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="78"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="87"/>
+         <source>HostName</source>
+         <translation>གཙོ་སྐྱོང་བྱེད་མཁན་གྱི་མིང</translation>
+-        <extra-contents_path>/About/HostName</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="90"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="383"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="100"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="401"/>
+         <source>Kernel</source>
+         <translation>ནང་སྙིང་།</translation>
+         <extra-contents_path>/About/Kernel</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="95"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="385"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="106"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="403"/>
+         <source>CPU</source>
+         <translation>CPU</translation>
+         <extra-contents_path>/About/CPU</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="100"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="387"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="112"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="405"/>
+         <source>Memory</source>
+         <translation>དྲན་ཤེས་</translation>
+         <extra-contents_path>/About/Memory</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="105"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="118"/>
+         <source>Disk</source>
+         <translation>ཁབ་ལེན་གྱི་ཁབ་ལེན་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="110"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="389"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="124"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="407"/>
+         <source>Desktop</source>
+         <translation>ཅོག་ཙེའི་སྟེང་གི</translation>
+         <extra-contents_path>/About/Desktop</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="115"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="391"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="130"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="409"/>
+         <source>User</source>
+         <translation>སྤྱོད་མཁན།</translation>
+         <extra-contents_path>/About/User</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="123"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="139"/>
+         <source>Copyright ©%1 %2. All rights reserved.</source>
+         <translation>པར་དབང  ©%1 %2.དབང་ཆ་ཡོད་ཚད་སོར་འཇོག་བྱ།.</translation>
+     </message>
+@@ -344,12 +343,12 @@
+         <translation type="vanished">པར་དབང  © %1 %2.དབང་ཆ་ཡོད་ཚད་སོར་འཇོག་བྱ།.</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="172"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="188"/>
+         <source>openKylin</source>
+         <translation>openkylin</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="169"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="185"/>
+         <source>KylinSoft</source>
+         <translation>བསེ་རུ་མཉེན་པོ།</translation>
+     </message>
+@@ -358,67 +357,66 @@
+         <translation type="vanished">པར་དབང ©་2020 བསེ་རུ་མཉེན་པོ།. སོར་ཉར་བྱས་པའི་ཁེ་དབང་ཡོད་ཚད།.</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="235"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="251"/>
+         <source>Wechat code scanning obtains HP professional technical support</source>
+         <translation>འཕྲིན་ཕྲན་ཨང་གྲངས་ལ་ཞིབ་བཤེར་བྱས་ནས་HPཆམ་ལས་ལག་རྩལ་གྱི་རྒྱབ་སྐྱོར་ཐོབ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="236"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="252"/>
+         <source>See more about Kylin Tianqi edu platform</source>
+         <translation>See more about ཅིན་ལིན་ཐེན་ཆིའི་eduསྟེ་སྟེགས་བུ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="256"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="272"/>
+         <source>Learn more HP user manual&gt;&gt;</source>
+         <translation>སྔར་ལས་ལྷག་པའི་སྒོ་ནས་HPབེད་སྤྱོད་བྱེད་མཁན&gt;&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="261"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="277"/>
+         <source>See user manual&gt;&gt;</source>
+         <translation>སྤྱོད་མཁན་གྱི་ལག་དེབ་ལ་གཟིགས&gt;&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="339"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="356"/>
+         <source>Send optional diagnostic data</source>
+         <translation>བསལ་འདེམས་ཀྱི་བརྟག་དཔྱད་གཞི་གྲངས་སྐུར་སྐྱེལ་བྱ་དགོས།</translation>
+-        <extra-contents_path>/About/Send optional diagnostic data</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="340"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="357"/>
+         <source>By sending us diagnostic data, improve the system experience and solve your problems faster</source>
+         <translation>ང་ཚོར་ནད་གཞི་བརྟག་དཔྱད་ཀྱི་གཞི་གྲངས་བསྐུར་ནས་མ་ལག་གི་ཉམས་མྱོང་ལེགས་བཅོས་བྱས་ཏེ་ཁྱོད་ཀྱི་གནད་དོན་ཐག་གཅོད</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="363"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="380"/>
+         <source>&lt;&lt;Protocol&gt;&gt;</source>
+         <translation>《ཚོད་སྤྱོད་འགན་འཁྲི་མེད་པར་བཟོ་བའི་གྲོས་མཐུན་》</translation>
+         <extra-contents_path>/About/&lt;&lt;Protocol&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="364"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="382"/>
+         <source>and</source>
+         <translation>དེ་བཞིན་དེ་བཞིན་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="366"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="384"/>
+         <source>&lt;&lt;Privacy&gt;&gt;</source>
+         <translation>《སྤྱོད་མཁན་གྱི་གསང་དོན་གྲོས་མཐུན་》</translation>
+         <extra-contents_path>/About/&lt;&lt;Privacy&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="393"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="411"/>
+         <source>Status</source>
+         <translation>གནས་ཚུལ་གྱི་གནས་</translation>
+         <extra-contents_path>/About/Status</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="395"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="413"/>
+         <source>Active</source>
+         <translation>འཁྲུག་ཆ་དོད་པོ་</translation>
+         <extra-contents_path>/About/Active</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="397"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="415"/>
+         <source>Serial</source>
+         <translation>གོ་རིམ་ལྟར་ན།</translation>
+         <extra-contents_path>/About/Serial</extra-contents_path>
+@@ -599,7 +597,7 @@
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="348"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="266"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
+         <source>Cancel</source>
+         <translation>ཕྱིར་འཐེན།</translation>
+     </message>
+@@ -609,65 +607,65 @@
+         <translation>གྲོན་ཆུང་བྱེད་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="73"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="72"/>
+         <source>Add Shortcut</source>
+         <translation>མགྱོགས་ལམ་ཁ་སྣོན་བྱས་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="86"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="85"/>
+         <source>Please enter a shortcut</source>
+         <translation>མྱུར་བགྲོད་གཞུང་ལམ་ནང་དུ་འཛུལ་རོགས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="224"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="223"/>
+         <source>Desktop files(*.desktop)</source>
+         <translation>ཅོག་ངོས་ཡིག་ཆ་(*.desktop)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="264"/>
+         <source>select desktop</source>
+         <translation>ཅོག་ཙེའི་སྟེང་ནས་གདམ་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="302"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="323"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="334"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="301"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="322"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="333"/>
+         <source>Invalid application</source>
+         <translation>གོ་མི་ཆོད་པའི་ཉེར་སྤྱོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="304"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="319"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="330"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="303"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="318"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="329"/>
+         <source>Shortcut conflict</source>
+         <translation>མྱུར་བགྲོད་གདོང་གཏུག</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="306"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="321"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="332"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="305"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="320"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="331"/>
+         <source>Invalid shortcut</source>
+         <translation>གོ་མི་ཆོད་པའི་མྱུར་བགྲོད་གཞུང་ལམ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="309"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="316"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="337"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="308"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="315"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="336"/>
+         <source>Name repetition</source>
+         <translation>མིང་བསྐྱར་ཟློས་བྱེད་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="343"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="342"/>
+         <source>Unknown error</source>
+         <translation>ཤེས་མེད་པའི་ནོར་འཁྲུལ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="522"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="521"/>
+         <source>Shortcut cannot be empty</source>
+         <translation>མྱུར་ལམ་ནི་སྟོང་བ་ཡིན་མི་སྲིད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="526"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="525"/>
+         <source>Name cannot be empty</source>
+         <translation>མིང་སྟོང་པ་ཡིན་མི་སྲིད།</translation>
+     </message>
+@@ -789,14 +787,14 @@
+         <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="233"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="384"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="235"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="386"/>
+         <source>12 Hours</source>
+         <translation>ཆུ་ཚོད་12</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="234"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="385"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="236"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="387"/>
+         <source>24 Hours</source>
+         <translation>ཆུ་ཚོད་24རིང་།</translation>
+     </message>
+@@ -809,7 +807,7 @@
+         <translation type="vanished">བསྡུས་གཟུགས་རྒྱ་ཡིག་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="641"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="644"/>
+         <source>English</source>
+         <translation>དབྱིན་སྐད།</translation>
+     </message>
+@@ -858,113 +856,133 @@
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="215"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="302"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="209"/>
++        <source>Arab  (AE)</source>
++        <translation>ཨ་རབ་ཀྱི་ཝུན། (ཨ་ལ་པོ། )</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="210"/>
++        <source>Vietnam  (VN)</source>
++        <translation>ཡོ་ནན་སྐད། (ཡོ་ནན་རྒྱལ་ཁབ། )</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="217"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="304"/>
+         <source>Solar calendar</source>
+         <translation>ཉི་མའི་ལོ་ཐོ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="216"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="218"/>
+         <source>Lunar</source>
+         <translation>ཟླ་བའི་གོ་ལ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="221"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="223"/>
+         <source>Monday</source>
+         <translation>གཟའ་ཟླ་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="222"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="224"/>
+         <source>Sunday</source>
+         <translation>གཟའ་ཉི་མ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="366"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="368"/>
+         <source>MMMM dd, yyyy</source>
+         <translation>yyyyལོ།MMཟླ།ddཉིན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="369"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="371"/>
+         <source>MMMM d, yy</source>
+         <translation>yyལོ།Mཟླ།dཉིན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="639"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="642"/>
+         <source>Simplified Chinese</source>
+         <translation>བསྡུས་གཟུགས་རྒྱ་ཡིག་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="643"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="646"/>
+         <source>Tibetan</source>
+         <translation>བོད་ཡིག</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="645"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="648"/>
+         <source>Kazaqa</source>
+         <translation>ཧ་སག་སི་ཐན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="647"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="650"/>
+         <source>Uygur</source>
+         <translation>ཡུ་གུར་རིགས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="649"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="652"/>
+         <source>Kirghiz</source>
+         <translation>ཅིར་ཅི་སི་ཡི་སྐད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="651"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="654"/>
+         <source>Traditional Chinese</source>
+         <translation>རྒྱ་ཡིག་གི་ཡིག་གཟུགས་དཀྱིལ་མ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="653"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="656"/>
+         <source>Mongolian</source>
+         <translation>སོག་པོའི་སྐད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="655"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="658"/>
+         <source>German</source>
+         <translation>འཇར་མན་གྱི་སྐད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="657"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="660"/>
+         <source>Spanish</source>
+         <translation>སི་ཕན་གྱི་སྐད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="659"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="662"/>
+         <source>French</source>
+         <translation>ཧྥ་རན་སིའི་སྐད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="672"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="664"/>
++        <source>Arab</source>
++        <translation>ཨ་རབ་ཀྱི་སྐད།</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="666"/>
++        <source>Vietnam</source>
++        <translation>ཡོ་ནན་གྱི་སྐད་</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="679"/>
+         <source>Modify the current region need to logout to take effect, whether to logout?</source>
+         <translation>ད་ལྟའི་ས་ཁོངས་ལ་བཟོ་བཅོས་བརྒྱབ་ན་ད་གཟོད་ནུས་པ་ཐོན་ཐུབ། ཐོ་འགོད་བྱེད་དགོས་སམ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="673"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="680"/>
+         <source>Logout later</source>
+         <translation>རྗེས་སུ་ཐོ་འགོད་བྱེད་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="674"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="681"/>
+         <source>Logout now</source>
+         <translation>ད་ལྟ་ཐོ་འགོད་བྱེད་བཞིན་ཡོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="676"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="683"/>
+         <source>Modify the first language need to reboot to take effect, whether to reboot?</source>
+         <translation>སྐད་རིགས་དང་པོར་བཟོ་བཅོས་བརྒྱབ་ན་ད་གཟོད་ནུས་པ་ཐོན་ཐུབ། བསྐྱར་དུ་ཐོན་ཐུབ་མིན་ལ་བཟོ་བཅོས་རྒྱག་དགོས་སམ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="677"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="684"/>
+         <source>Reboot later</source>
+         <translation>རྗེས་སུ་ཡང་བསྐྱར་ཐེངས་གཅིག་ལ་བསྐྱར་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="678"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="685"/>
+         <source>Reboot now</source>
+         <translation>ད་ལྟ་བསྐྱར་དུ་འཁོར་བ།</translation>
+     </message>
+@@ -976,31 +994,31 @@
+ <context>
+     <name>AreaUi</name>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="38"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="39"/>
+         <source>Regional Format</source>
+         <translation>དུས་ཚོད།དུས་ཚོད།དངུལ་ལོར་གྱི་རྣམ་པ།</translation>
+         <extra-contents_path>/Area/Regional Format</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="40"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="41"/>
+         <source>Calendar</source>
+         <translation>ལོ་ཐོ།</translation>
+         <extra-contents_path>/Area/Calendar</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="42"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="43"/>
+         <source>First Day Of Week</source>
+         <translation>གཟའ་འཁོར་གཅིག་གི་ཉིན་དང་པོ།</translation>
+         <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="45"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="46"/>
+         <source>Short Foramt Date</source>
+         <translation>ཁུང་བུ་ཐུང་ཐུང་གི་དུས་ཚོད།</translation>
+         <extra-contents_path>/Area/Short Foramt Date</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="47"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="48"/>
+         <source>Long Format Date</source>
+         <translation>ཚད་ལྡན་རྣམ་གཞག་གི་ཚེས་གྲངས།</translation>
+         <extra-contents_path>/Area/Long Format Date</extra-contents_path>
+@@ -1010,25 +1028,24 @@
+         <translation type="vanished">དུས་ཚོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="50"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="51"/>
+         <source>Time</source>
+         <translation>དུས་ཚོད།</translation>
+         <extra-contents_path>/Area/Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="63"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="64"/>
+         <source>Language Format</source>
+         <translation>སྐད་ཆའི་རྣམ་གཞག</translation>
+         <extra-contents_path>/Area/Language Format</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="74"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="76"/>
+         <source>Language Format Example</source>
+         <translation>སྐད་ཆའི་རྣམ་བཞག་དཔེ་མཚོན།</translation>
+-        <extra-contents_path>/Area/Language Format Example</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="103"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="106"/>
+         <source>System Language</source>
+         <translation>མ་ལག་གི་སྐད་ཆ།</translation>
+         <extra-contents_path>/Area/System Language</extra-contents_path>
+@@ -1037,27 +1054,27 @@
+ <context>
+     <name>AutoBoot</name>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="96"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="95"/>
+         <source>Auto Start</source>
+         <translation>རང་འགུལ་གྱིས་བྱེད་འགོ་འཛུགས་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="293"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="292"/>
+         <source>Desktop files(*.desktop)</source>
+         <translation>ཅོག་ངོས་ཡིག་ཆ་(*.desktop)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="300"/>
+         <source>select autoboot desktop</source>
+         <translation>རང་འགུལ་གྱིས་མདུན་ངོས་སུ་བདམས་པ་རེད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
+         <source>Select</source>
+         <translation>བདམས་ཐོན་བྱུང་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="303"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
+         <source>Cancel</source>
+         <translation>ཕྱིར་འཐེན།</translation>
+     </message>
+@@ -1076,7 +1093,7 @@
+         <translation type="vanished">རང་འགུལ་གྱིས་ལྷམ་ཡུ་རིང</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="231"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="230"/>
+         <source>Delete</source>
+         <translation>བསུབ་པ།</translation>
+     </message>
+@@ -1089,13 +1106,13 @@
+         <extra-contents_path>/Autoboot/Autoboot Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="17"/>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="18"/>
+         <source>Autostart Settings</source>
+         <translation>རང་འགུལ་གྱིས་བཀོད་སྒྲིག་བྱེད་འགོ་འཛུགས་དགོས།</translation>
+         <extra-contents_path>/Autostart/Autostart Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="27"/>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="28"/>
+         <source>Add</source>
+         <translation>ཁ་སྣོན་བརྒྱབ་པ།</translation>
+         <extra-contents_path>/Autostart/Add</extra-contents_path>
+@@ -1229,7 +1246,7 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>BrightnessFrame</name>
+     <message>
+-        <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="36"/>
++        <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="66"/>
+         <source>Failed to get the brightness information of this monitor</source>
+         <translation>ལྟ་ཞིབ་ཚད་ལེན་འཕྲུལ་ཆས་འདིའི་གསལ་ཚད་ཀྱི་ཆ་འཕྲིན་ཐོབ་མ་ཐུབ།</translation>
+     </message>
+@@ -1536,47 +1553,47 @@ you can restore them to ensure the integrity of your system.</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="158"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="309"/>
+         <source>Cancel</source>
+         <translation>ཕྱིར་འཐེན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="161"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="162"/>
+         <source>Confirm</source>
+         <translation>གཏན་འཁེལ་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="302"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
+         <source>select custom face file</source>
+         <translation>ཡུལ་སྲོལ་གོམས་གཤིས་ཀྱི་ངོ་གདོང་ཡིག་ཆ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="303"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
+         <source>Select</source>
+         <translation>བདམས་ཐོན་བྱུང་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
+         <source>Position: </source>
+         <translation>གོ་གནས་ནི། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
+         <source>FileName: </source>
+         <translation>ཡིག་ཆའི་མིང་ནི། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="308"/>
+         <source>FileType: </source>
+         <translation>ཡིག་ཆའི་རིགས་དབྱིབས་ནི། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="322"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="324"/>
+         <source>Warning</source>
+         <translation>ཐ་ཚིག་སྒྲོག་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="323"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="325"/>
+         <source>The avatar is larger than 1M, please choose again</source>
+         <translation>པར་དབང་དེ་1Mལས་ཆེ་བ་དང་། ཡང་བསྐྱར་གདམ་ག་གནང་རོགས།</translation>
+     </message>
+@@ -1599,17 +1616,17 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation>མིང་འདོགས་མིང་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="156"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+         <translation>བཀོལ་མཁན་གྱི་གཅེས་མིང་རིང་ཚད་ངེས་པར་དུ་1-1%ཡིག་རྟགས་བར་ཡིན་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
+         <source>nickName already in use.</source>
+         <translation>བཀོལ་སྤྱོད་བྱེད་བཞིན་པའི་མཚང་མིང་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="162"/>
+         <source>Can&apos;t contains &apos;:&apos;.</source>
+         <translation>ཚུད་མེད་།&quot;:&quot;。</translation>
+     </message>
+@@ -1619,7 +1636,7 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation>ཕྱིར་འཐེན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="116"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="117"/>
+         <source>Confirm</source>
+         <translation>གཏན་འཁེལ་བྱ་དགོས།</translation>
+     </message>
+@@ -1637,7 +1654,7 @@ you can restore them to ensure the integrity of your system.</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="103"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="471"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="473"/>
+         <source>Current Pwd</source>
+         <translation>མིག་སྔའི་</translation>
+     </message>
+@@ -1648,15 +1665,15 @@ you can restore them to ensure the integrity of your system.</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="136"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="472"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="480"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="474"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="482"/>
+         <source>New Pwd</source>
+         <translation>གསར་པ།</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="163"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="473"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="481"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="475"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="483"/>
+         <source>Sure Pwd</source>
+         <translation>གཏན་འཁེལ་བྱས་པའི་</translation>
+     </message>
+@@ -1666,50 +1683,50 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation>ཕྱིར་འཐེན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="220"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="305"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="371"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="221"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="307"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="373"/>
+         <source>Confirm</source>
+         <translation>གཏན་འཁེལ་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="281"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="544"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="283"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="546"/>
+         <source>Inconsistency with pwd</source>
+         <translation>གསང་གྲངས་གསར་པ་དང་མི་འདྲ་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="301"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="303"/>
+         <source>Same with old pwd</source>
+         <translation>གསང་ཨང་རྙིང་པ་དང་འདྲ་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="354"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="356"/>
+         <source>Pwd Changed Succes</source>
+         <translation>གསང་ཨང་བཟོ་བཅོས་གྲུབ་འབྲས་ཐོབ་པའི་ངང</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="361"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="363"/>
+         <source>Authentication failed, input authtok again!</source>
+         <translation>བདེན་དཔང་ར་སྤྲོད་བྱེད་མ་ཐུབ་པར་ཡང་བསྐྱར་ནང་འཇུག་བྱེད་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="503"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="505"/>
+         <source>Contains illegal characters!</source>
+         <translation>དེའི་ནང་དུ་ཁྲིམས་འགལ་གྱི་མི་སྣ་འདུས་ཡོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="615"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="617"/>
+         <source>current pwd cannot be empty!</source>
+         <translation>ད་ལྟའི་གསང་ཨང་ནི་སྟོང་པ་ཡིན་མི་སྲིད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="620"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="622"/>
+         <source>new pwd cannot be empty!</source>
+         <translation>གསར་དུ་བཏོ་བ་ནི་སྟོང་བ་ཡིན་མི་སྲིད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="625"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="627"/>
+         <source>sure pwd cannot be empty!</source>
+         <translation>གསང་ཨང་ངོས་འཛིན་སྟོང་པ་ཡིན་མི་རུང་།</translation>
+     </message>
+@@ -1821,7 +1838,7 @@ you can restore them to ensure the integrity of your system.</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="86"/>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="89"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="88"/>
+         <source>Choose a custom color</source>
+         <translation>བདམས་པའི་མཚན་ཉིད་ཁ་མདོག</translation>
+     </message>
+@@ -1846,12 +1863,12 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation>འགྲིགས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="94"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="93"/>
+         <source>Custom color</source>
+         <translation>གོམས་སྲོལ་གྱི་ཁ་དོག</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="182"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="181"/>
+         <source>Close</source>
+         <translation>སྒོ་རྒྱག་པ།</translation>
+     </message>
+@@ -1869,28 +1886,28 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation>མིང་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="78"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="79"/>
+         <source>Id</source>
+         <translation>ཐོབ་ཐང་ལག་ཁྱེར།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="92"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="94"/>
+         <source>Confirm</source>
+         <translation>གཏན་འཁེལ་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="202"/>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="216"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="205"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="219"/>
+         <source>GroupName&apos;s length must be between 1 and %1 characters!</source>
+         <translation>ཚོ་མིང་གི་རིང་ཚད་ངེས་པར་དུ་1-1%ཡིག་རྟགས་བར་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="89"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="90"/>
+         <source>Cancel</source>
+         <translation>ཕྱིར་འཐེན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="50"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="49"/>
+         <source>Add user group</source>
+         <translation>སྤྱོད་མཁན་གྱི་ཚོ་ཆུང་ཁ་སྣོན</translation>
+     </message>
+@@ -2091,19 +2108,19 @@ change system settings</source>
+         <translation>ཕྱིར་འཐེན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="279"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="280"/>
+         <source>Confirm</source>
+         <translation>གཏན་འཁེལ་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="355"/>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="581"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="357"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="583"/>
+         <source>Inconsistency with pwd</source>
+         <translation>གསང་གྲངས་གསར་པ་དང་མི་འདྲ་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="494"/>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="647"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="649"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+         <translation>བཀོལ་མཁན་གྱི་གཅེས་མིང་རིང་ཚད་ངེས་པར་དུ་1-1%ཡིག་རྟགས་བར་ཡིན་དགོས།</translation>
+     </message>
+@@ -2112,7 +2129,7 @@ change system settings</source>
+         <translation type="vanished">མིང་འདོགས་པའི་མིང་ནི་སྟོང་བ་ཡིན་མི་སྲིད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="498"/>
+         <source>nickName already in use.</source>
+         <translation>བཀོལ་སྤྱོད་བྱེད་བཞིན་པའི་མཚང་མིང་།</translation>
+     </message>
+@@ -2121,32 +2138,32 @@ change system settings</source>
+         <translation type="vanished">མིང་འདོགས་པའི་རིང་ཚད་ངེས་པར་དུ་བརྒྱ་ཆའི་གཅིག་གི་ཡི་གེ་ལས་ཉུང་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="522"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="524"/>
+         <source>Username&apos;s folder exists, change another one</source>
+         <translation>སྤྱོད་མཁན་གྱི་ཡིག་སྣོད་གནས་པ་དང་། གཞན་ཞིག་ལ་འགྱུར་ལྡོག་གཏོང་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="526"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="528"/>
+         <source>Name corresponds to group already exists.</source>
+         <translation>མིང་དང་ཚོགས་པ་གཉིས་ལ་བབ་མཚུངས་ཀྱི་མིང་ཡོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="551"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="553"/>
+         <source>Contains illegal characters!</source>
+         <translation>དེའི་ནང་དུ་ཁྲིམས་འགལ་གྱི་མི་སྣ་འདུས་ཡོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="642"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="644"/>
+         <source>Username&apos;s length must be between 1 and %1 characters!</source>
+         <translation>སྤྱོད་མཁན་གྱི་མིང་ཡི་རིང་ཚད་ནི་ངེས་པར་དུ་1%ནས་1བར་ཡིན་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="652"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="654"/>
+         <source>new pwd cannot be empty!</source>
+         <translation>གསར་དུ་བཏོ་བ་ནི་སྟོང་བ་ཡིན་མི་སྲིད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="657"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="659"/>
+         <source>sure pwd cannot be empty!</source>
+         <translation>pwdནི་སྟོང་བ་ཡིན་མི་སྲིད་པ་ཐག་གིས་ཆོད།</translation>
+     </message>
+@@ -2266,13 +2283,13 @@ change system settings</source>
+         <translation type="vanished">དུས་ཚོད་བསྒྱུར་བཅོས་བྱ་དགོས</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="341"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="346"/>
+         <source>Add Timezone</source>
+         <translation>དུས་ཚོད་ཀྱི་ཁྱབ་ཁུལ་ཁ་སྣོན</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="201"/>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="343"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="206"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="348"/>
+         <source>Change Timezone</source>
+         <translation>དུས་ཚོད་བསྒྱུར་བཅོས་བྱ་དགོས།</translation>
+     </message>
+@@ -2288,37 +2305,37 @@ change system settings</source>
+ <context>
+     <name>DatetimeUi</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="53"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="54"/>
+         <source>Sync Server</source>
+         <translation>དུས་མཉམ་ཞབས་ཞུའི་ཡོ་བྱད</translation>
+         <extra-contents_path>/Date/Sync Server</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="75"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="77"/>
+         <source>Current Date</source>
+         <translation>ད་ལྟའི་དུས་ཚོད།</translation>
+         <extra-contents_path>/Date/Current Date</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="105"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="107"/>
+         <source>Timezone</source>
+         <translation>དུས་ཚོད་</translation>
+         <extra-contents_path>/Date/Timezone</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="111"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
+         <source>Set Time</source>
+         <translation>དུས་ཚོད་གཏན་འཁེལ་བྱ་</translation>
+         <extra-contents_path>/Date/Set Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
+         <source>Manual Time</source>
+         <translation>ལག་ཤེས་དུས་ཚོད།</translation>
+         <extra-contents_path>/Date/Manual Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="117"/>
+         <source>Sync Time</source>
+         <translation>དུས་ཚོད་གཅིག་མཐུན་ཡོང་བ</translation>
+         <extra-contents_path>/Date/Sync Time</extra-contents_path>
+@@ -2329,55 +2346,55 @@ change system settings</source>
+         <extra-contents_path>/Date/Set Date Manually</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="127"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="129"/>
+         <source>Set Time Manually</source>
+         <translation>ལག་ཤེས་དུས་ཚོད།</translation>
+         <extra-contents_path>/Date/Set Time Manually</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="162"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
+         <source>Server Address</source>
+         <translation>ཞབས་ཞུའི་ས་གནས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="166"/>
+         <source>Required</source>
+         <translation>བླང་བྱ་བཏོན་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="165"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="167"/>
+         <source>Save</source>
+         <translation>གྲོན་ཆུང་བྱེད་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="169"/>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="313"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="171"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="315"/>
+         <source>Customize</source>
+         <translation>ཡུལ་སྲོལ་གོམས་གཤིས་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="197"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="199"/>
+         <source>Other Timezone</source>
+         <translation>དུས་ཚོད་གཞན་དག</translation>
+         <extra-contents_path>/Date/Other Timezone</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="269"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
+         <source>MMMM d, yy ddd</source>
+         <translation>yyལོའི་ཟླ་Mཚེས་dཉིན། ddd</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="273"/>
+         <source>MMMM dd, yyyy ddd</source>
+         <translation>yyyyལོའི་ཟླ་MMཚེས་ddཉིན། ddd</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="302"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="304"/>
+         <source>Sync failed</source>
+         <translation>དུས་མཉམ་དུ་ཕམ་ཉེས་བྱུང་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="312"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="314"/>
+         <source>Default</source>
+         <translation>ཁ་ཆད་དང་འགལ་</translation>
+     </message>
+@@ -2435,56 +2452,56 @@ change system settings</source>
+ <context>
+     <name>DefaultAppUi</name>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="17"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="18"/>
+         <source>DefaultAppWindow</source>
+         <comment>Select Default Application</comment>
+         <translation>ཁ་ཆད་དང་འགལ་བའི་ཉེར་སྤྱད</translation>
+         <extra-contents_path>/Defaultapp/Select Default Application</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="21"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="22"/>
+         <source>Browser</source>
+         <translation>བཤེར་ཆས།</translation>
+         <extra-contents_path>/Defaultapp/Browser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="23"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="24"/>
+         <source>Mail</source>
+         <translation>སྦྲག་རྫས།</translation>
+         <extra-contents_path>/Defaultapp/Mail</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="25"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="26"/>
+         <source>Image Viewer</source>
+         <translation>པར་རིས་ལྟ་མཁན།</translation>
+         <extra-contents_path>/Defaultapp/Image Viewer</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="27"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="28"/>
+         <source>Audio Player</source>
+         <translation>སྒྲ་ཕབ་འཕྲུལ་ཆས།</translation>
+         <extra-contents_path>/Defaultapp/Audio Player</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="29"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="30"/>
+         <source>Video Player</source>
+         <translation>བརྙན་ཕབ་འཕྲུལ་འཁོར།</translation>
+         <extra-contents_path>/Defaultapp/Video Player</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="31"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="32"/>
+         <source>Text Editor</source>
+         <translation>ཡི་གེའི་རྩོམ་སྒྲིག་པ།</translation>
+         <extra-contents_path>/Defaultapp/Text Editor</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="35"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="36"/>
+         <source>Reset default apps to system recommended apps</source>
+         <translation>མ་ལག་གིས་འོས་སྦྱོར་བྱས་པའི་ཉེར་སྤྱོད་གོ་རིམ་ཁྲོད་དུ་ཁ་ཆད་</translation>
+         <extra-contents_path>/Defaultapp/Reset default apps to system recommended apps</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="36"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="37"/>
+         <source>Reset</source>
+         <translation>བསྐྱར་དུ་བཀོད་སྒྲིག་བྱེད་པ</translation>
+     </message>
+@@ -2574,22 +2591,22 @@ change system settings</source>
+         <translation>&apos;? ད་དུང་འདི་ལྟ་སྟེ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="65"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
+         <source>Keep desktop, files, favorites, music of the user</source>
+         <translation>སྤྱོད་མཁན་གྱི་ཅོག་ཙེ་དང་། ཡིག་ཆ། དགའ་ཕྱོགས། རོལ་དབྱངས་བཅས་ཉར་ཚགས་ཡག་པོ་བྱེད་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="68"/>
+         <source>Delete whole data belong user</source>
+         <translation>གཞི་གྲངས་ཧྲིལ་པོ་བེད་སྤྱོད་བྱེད་མཁན་ལ་དབང་བ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="98"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
+         <source>Cancel</source>
+         <translation>ཕྱིར་འཐེན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="102"/>
+         <source>Confirm</source>
+         <translation>གཏན་འཁེལ་བྱ་དགོས།</translation>
+     </message>
+@@ -2647,74 +2664,60 @@ change system settings</source>
+ <context>
+     <name>DisplayPerformanceDialog</name>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="26"/>
+         <source>Dialog</source>
+-        <translation>གླེང་མོལ།</translation>
++        <translation type="vanished">གླེང་མོལ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="214"/>
+         <source>Display Advanced Settings</source>
+-        <translation>སྔོན་ཐོན་གྱི་སྒྲིག་བཀོད་མངོན་པར་བྱས་ཡོད།</translation>
++        <translation type="vanished">སྔོན་ཐོན་གྱི་སྒྲིག་བཀོད་མངོན་པར་བྱས་ཡོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="297"/>
+         <source>Performance</source>
+-        <translation>འཁྲབ་སྟོན་གྱི་ནུས་</translation>
++        <translation type="vanished">འཁྲབ་སྟོན་གྱི་ནུས་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="376"/>
+         <source>Applicable to machine with discrete graphics, which can accelerate the rendering of 3D graphics.</source>
+-        <translation>ཁ་གསལ་གྱི་རི་མོ་སྤྱད་དེ་འཕྲུལ་འཁོར་ལ་སྤྱད་འཐུས་པས་3D图形་མགྱོགས་མྱུར་ངང་ཕྱིར་མངོན་ཐུབ།</translation>
++        <translation type="vanished">ཁ་གསལ་གྱི་རི་མོ་སྤྱད་དེ་འཕྲུལ་འཁོར་ལ་སྤྱད་འཐུས་པས་3D图形་མགྱོགས་མྱུར་ངང་ཕྱིར་མངོན་ཐུབ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="392"/>
+         <source>(Note: not support connect graphical with xmanager on windows.)</source>
+-        <translation>(མཆན། རྒྱབ་སྐྱོར་མི་བྱེད་པར་སྒེའུ་ཁུང་སྟེང་གི་xmanagerདང་འབྲེལ་མཐུད་བྱེད་མི་ཐུབ། )</translation>
++        <translation type="vanished">(མཆན། རྒྱབ་སྐྱོར་མི་བྱེད་པར་སྒེའུ་ཁུང་སྟེང་གི་xmanagerདང་འབྲེལ་མཐུད་བྱེད་མི་ཐུབ། )</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="462"/>
+         <source>Compatible</source>
+-        <translation>ཕན་ཚུན་མཐུན་པ།</translation>
++        <translation type="vanished">ཕན་ཚུན་མཐུན་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="538"/>
+         <source>Applicable to machine with integrated graphics,  there is no 3D graphics acceleration. </source>
+-        <translation>ཕྱོགས་བསྡུས་རི་མོ་ཡོད་པའི་འཕྲུལ་འཁོར་ལ་སྤྱད་འཐུས་པ་ལས་3Dརི་མོའི་མྱུར་ཚད་ཇེ་མགྱོགས་སུ་གཏོང་མི་ཐུབ། </translation>
++        <translation type="vanished">ཕྱོགས་བསྡུས་རི་མོ་ཡོད་པའི་འཕྲུལ་འཁོར་ལ་སྤྱད་འཐུས་པ་ལས་3Dརི་མོའི་མྱུར་ཚད་ཇེ་མགྱོགས་སུ་གཏོང་མི་ཐུབ། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="554"/>
+         <source>(Note: need connect graphical with xmanager on windows, use this option.)</source>
+-        <translation>(མཆན། སྒེའུ་ཁུང་སྟེང་གི་xmanagerདང་འབྲེལ་མཐུད་བྱེད་དགོས་ན། བསལ་འདེམས་འདི་བེད་སྤྱོད་བྱ་དགོས། )</translation>
++        <translation type="vanished">(མཆན། སྒེའུ་ཁུང་སྟེང་གི་xmanagerདང་འབྲེལ་མཐུད་བྱེད་དགོས་ན། བསལ་འདེམས་འདི་བེད་སྤྱོད་བྱ་དགོས། )</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="624"/>
+         <source>Automatic</source>
+-        <translation>རང་འགུལ་གྱིས་རང་</translation>
++        <translation type="vanished">རང་འགུལ་གྱིས་རང་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="700"/>
+         <source>Auto select according to environment, delay the login time (about 0.5 sec).</source>
+-        <translation>ཁོར་ཡུག་ལ་གཞིགས་ནས་རང་འགུལ་གྱིས་གདམ་གསེས་བྱས་ཏེ་ཐོ་འགོད་ཀྱི་དུས་ཚོད་ཕྱིར་འགྱངས་བྱ་དགོས། (ཧ་ལམ་སྐར་མ་0.5ཙམ་འགོར་གྱི་ཡོད། )</translation>
++        <translation type="vanished">ཁོར་ཡུག་ལ་གཞིགས་ནས་རང་འགུལ་གྱིས་གདམ་གསེས་བྱས་ཏེ་ཐོ་འགོད་ཀྱི་དུས་ཚོད་ཕྱིར་འགྱངས་བྱ་དགོས། (ཧ་ལམ་སྐར་མ་0.5ཙམ་འགོར་གྱི་ཡོད། )</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="721"/>
+         <source>Threshold:</source>
+-        <translation>སྒོ་ཐེམ་གཤམ་གསལ།</translation>
++        <translation type="vanished">སྒོ་ཐེམ་གཤམ་གསལ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="744"/>
+         <source>Apply</source>
+-        <translation>རེ་ཞུ་</translation>
++        <translation type="vanished">རེ་ཞུ་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="757"/>
+         <source>Reset</source>
+-        <translation>བསྐྱར་དུ་བཀོད་སྒྲིག་བྱེད་པ</translation>
++        <translation type="vanished">བསྐྱར་དུ་བཀོད་སྒྲིག་བྱེད་པ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="772"/>
+         <source>(Note: select this option to use 3D graphics acceleration and xmanager.)</source>
+-        <translation>(མཆན། བསལ་འདེམས་འདི་བདམས་ནས་3D图形་ཀྱི་མྱུར་ཚད་ཇེ་མགྱོགས་སུ་གཏོང་བ་དང་xmanagerབཀོལ་སྤྱོད་བྱེད་དགོས། )</translation>
++        <translation type="vanished">(མཆན། བསལ་འདེམས་འདི་བདམས་ནས་3D图形་ཀྱི་མྱུར་ཚད་ཇེ་མགྱོགས་སུ་གཏོང་བ་དང་xmanagerབཀོལ་སྤྱོད་བྱེད་དགོས། )</translation>
+     </message>
+ </context>
+ <context>
+@@ -3093,132 +3096,132 @@ change system settings</source>
+ <context>
+     <name>KeyboardUi</name>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="24"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="30"/>
+         <source>Keyboard Settings</source>
+         <translation>གཙོ་གནད་པང་ལེབ་ཀྱི་སྒྲག་བཀོད།</translation>
+         <extra-contents_path>/Keyboard/Keyboard Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="35"/>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="41"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="173"/>
+         <source>Input Method</source>
+         <translation>ནང་འཇུག་བྱེད་ཐབས།</translation>
+         <extra-contents_path>/Keyboard/Input Method</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="51"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="57"/>
+         <source>Virtual Keyboard</source>
+         <translation>རྟོག་བཟོའི་མཐེབ་གཞོང་།</translation>
+         <extra-contents_path>/Keyboard/Virtual Keyboard</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="106"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="112"/>
+         <source>Key repeat</source>
+         <translation>ལྡེ་མིག་བསྐྱར་ཟློས་བྱེད་པ</translation>
+         <extra-contents_path>/Keyboard/Key repeat</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="114"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="120"/>
+         <source>Delay</source>
+         <translation>འགོར་འགྱངས་བྱས་པ</translation>
+         <extra-contents_path>/Keyboard/Delay</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="117"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="123"/>
+         <source>Short</source>
+         <translation>མདོར་ན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="118"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="124"/>
+         <source>Long</source>
+         <translation>རིང་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="130"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="136"/>
+         <source>Speed</source>
+         <translation>མྱུར་ཚད།</translation>
+         <extra-contents_path>/Keyboard/Speed</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="132"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="138"/>
+         <source>Slow</source>
+         <translation>དལ་མོ།དལ་མོ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="133"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="139"/>
+         <source>Fast</source>
+         <translation>མགྱོགས་མྱུར།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="144"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="150"/>
+         <source>Input test</source>
+         <translation>ནང་འཇུག་ཚོད་ལྟ།</translation>
+         <extra-contents_path>/Keyboard/Input test</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="152"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="158"/>
+         <source>Key tips</source>
+         <translation>འགག་རྩའི་མན་ངག</translation>
+         <extra-contents_path>/Keyboard/Key tips</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="161"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
+         <source>Input settings</source>
+         <translation>ནང་འཇུག་གི་སྒྲིག་བཀོད།</translation>
+         <extra-contents_path>/Keyboard/Input settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="168"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="174"/>
+         <source>Edit</source>
+         <translation>རྩོམ་སྒྲིག</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="175"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="181"/>
+         <source>Show icon on tray</source>
+         <translation>སྡེར་མའི་ནང་དུ་རྟོག་བཟོ་བྱས་པའི་མཐེབ་གཞོང་གི་རི་མོ་མངོན་</translation>
+         <extra-contents_path>/Keyboard/Show icon on tray</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="182"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="188"/>
+         <source>Show icon on desktop</source>
+         <translation>ཅོག་ཙེའི་ངོས་སུ་རྟོག་བཟོའི་མཐེབ་གཞོང་གི་རི་མོ་མངོན་པ་རེད།</translation>
+         <extra-contents_path>/Keyboard/Show icon on desktop</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="189"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="195"/>
+         <source>Keyboard Size</source>
+         <translation>མཐེབ་བཀྱག་ཆེ་ཆུང་།</translation>
+         <extra-contents_path>/Keyboard/Keyboard Size</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="197"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="203"/>
+         <source>Text size</source>
+         <translation>མཐེབ་བཀྱག་མནན་ནས་ཆེ་ཆུང་།</translation>
+         <extra-contents_path>/Keyboard/Text size</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="199"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="205"/>
+         <source>Small</source>
+         <translation>ཆུང་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="200"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="206"/>
+         <source>Medium</source>
+         <translation>འབྲིང་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="201"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
+         <source>Large</source>
+         <translation>ཆེ་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="213"/>
+         <source>Animation</source>
+         <translation>འགུལ་རིས་ཀྱི་ཕན་འབྲས།</translation>
+         <extra-contents_path>/Keyboard/Animation</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="214"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="220"/>
+         <source>Input sound effect</source>
+         <translation>མཐེབ་བཀྱག་མནན་ནས་གསལ་བརྡ་གཏོང</translation>
+         <extra-contents_path>/Keyboard/Input sound effect</extra-contents_path>
+@@ -3227,12 +3230,12 @@ change system settings</source>
+ <context>
+     <name>LanguageFrame</name>
+     <message>
+-        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="70"/>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="90"/>
+         <source>Input Settings</source>
+         <translation>ནང་འཇུག་གི་སྒྲིག་བཀོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="71"/>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="91"/>
+         <source>Delete</source>
+         <translation>བསུབ་པ།</translation>
+     </message>
+@@ -3289,15 +3292,15 @@ change system settings</source>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="173"/>
+-        <location filename="../../mainwindow.cpp" line="481"/>
++        <location filename="../../mainwindow.cpp" line="510"/>
+         <source>Maximize</source>
+         <translation>ཚད་གཞི་མཐོ་ཤོས་ཀྱི་སྒོ་ནས</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="441"/>
+-        <location filename="../../mainwindow.cpp" line="459"/>
+-        <location filename="../../mainwindow.cpp" line="591"/>
+-        <location filename="../../mainwindow.cpp" line="949"/>
++        <location filename="../../mainwindow.cpp" line="470"/>
++        <location filename="../../mainwindow.cpp" line="488"/>
++        <location filename="../../mainwindow.cpp" line="620"/>
++        <location filename="../../mainwindow.cpp" line="974"/>
+         <source>Settings</source>
+         <translation>སྒྲིག་བཀོད།</translation>
+     </message>
+@@ -3315,22 +3318,22 @@ change system settings</source>
+         <translation>སླར་གསོ་བྱེད་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="453"/>
++        <location filename="../../mainwindow.cpp" line="482"/>
+         <source>Back home</source>
+         <translation>ཕྱིར་ལོག་མགོ་ངོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="479"/>
++        <location filename="../../mainwindow.cpp" line="508"/>
+         <source>Option</source>
+         <translation>འདེམས་ཚན་</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="480"/>
++        <location filename="../../mainwindow.cpp" line="509"/>
+         <source>Minimize</source>
+         <translation>ཉུང་དུ་གཏོང་གང་ཐུབ་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="482"/>
++        <location filename="../../mainwindow.cpp" line="511"/>
+         <source>Close</source>
+         <translation>སྒོ་རྒྱག་པ།</translation>
+     </message>
+@@ -3347,23 +3350,23 @@ change system settings</source>
+         <translation type="vanished">ཕྱིར་འཐེན་བྱེད་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="592"/>
++        <location filename="../../mainwindow.cpp" line="621"/>
+         <source>Version: </source>
+         <translation>པར་གཞི་འདི་ལྟ་སྟེ།:</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="731"/>
++        <location filename="../../mainwindow.cpp" line="756"/>
+         <source>Specified</source>
+         <translation>གཏན་འབེབས་བྱས་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="1082"/>
++        <location filename="../../mainwindow.cpp" line="1107"/>
+         <source>Warning</source>
+         <translation>ཐ་ཚིག་སྒྲོག་པ།</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="152"/>
+-        <location filename="../../mainwindow.cpp" line="1082"/>
++        <location filename="../../mainwindow.cpp" line="1107"/>
+         <source>This function has been controlled</source>
+         <translation>འགན་ནུས་འདི་ཚོད་འཛིན་བྱས་ཟིན།</translation>
+     </message>
+@@ -4066,7 +4069,7 @@ change system settings</source>
+         <translation>དཔར་འདེབས་འཕྲུལ་འཁོར།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/printer/printer.cpp" line="121"/>
++        <location filename="../../../plugins/devices/printer/printer.cpp" line="122"/>
+         <source>Printers</source>
+         <translation>པར་འདེབས་འཕྲུལ་འཁོར།</translation>
+     </message>
+@@ -4083,22 +4086,22 @@ change system settings</source>
+ <context>
+     <name>PrivacyDialog</name>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="11"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="12"/>
+         <source>Set</source>
+         <translation>གཏན་འཁེལ་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="73"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="74"/>
+         <source>End User License Agreement and Privacy Policy Statement of openKylin</source>
+         <translation>ཅིན་ལིན་གྱི་སྤྱོད་མཁན་གྱི་ཆོག་འཐུས་གྲོས་མཐུན་དང་གསང་བའི་སྲིད་ཇུས་ཀྱི་གསལ་བསྒྲགས་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="75"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="76"/>
+         <source>End User License Agreement and Privacy Policy Statement of Kylin</source>
+         <translation>ཅིན་ལིན་གྱི་སྤྱོད་མཁན་གྱི་ཆོག་འཐུས་གྲོས་མཐུན་དང་གསང་བའི་སྲིད་ཇུས་ཀྱི་གསལ་བསྒྲགས་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="82"/>
+         <source>Openkylin Community.</source>
+         <translation>སྡེ་ཁུལ་ལ་སྒོ་འབྱེད་པ་བཅས་བྱ་དགོས།</translation>
+     </message>
+@@ -4307,7 +4310,7 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         《ཀྲུང་ཧྭ་མི་དམངས་སྤྱི་མཐུན་རྒྱལ་ཁབ་ཀྱི་དྲ་རྒྱའི་བདེ་འཇགས་བཅའ་ཁྲིམས་》ཀྱི་དོན་ཚན་དོན་དྲུག་པའི་ནང་གསེས་དོན་ཚན་ལྔ་པའི་གཏན་འབེབས་གཞིར་བཟུང་མི་སྒེར་གྱི་ཆ་འཕྲིན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="83"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="84"/>
+         <source>Kylinsoft Co., Ltd.</source>
+         <translation>ཅིན་ལིན་སའོ་ཧྥུ་མ་རྐང་ཚད་ཡོད་ཀུང་སི།</translation>
+     </message>
+@@ -4468,7 +4471,7 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">ཉིན་མོ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="79"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="78"/>
+         <source>User Info</source>
+         <translation>སྤྱོད་མཁན་གྱི་ཆ་འཕྲིན།</translation>
+     </message>
+@@ -4525,63 +4528,63 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">ཟླ་བ་བཅུ་གཉིས་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1203"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1201"/>
+         <source>min length %1
+ </source>
+         <translation>རིང་ཐུང་གི་ཚད་ནི་1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1213"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1211"/>
+         <source>min digit num %1
+ </source>
+         <translation>min digit num %1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1222"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1220"/>
+         <source>min upper num %1
+ </source>
+         <translation>min སྟེང་གི་num%1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1231"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1229"/>
+         <source>min lower num %1
+ </source>
+         <translation>min དམའ་རིམ་num %1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1240"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1238"/>
+         <source>min other num %1
+ </source>
+         <translation>གཏེར་ཁ་གཞན་དག%1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1250"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1248"/>
+         <source>min char class %1
+ </source>
+         <translation>གཏེར་ཁ་སྔོག་འདོན་འཛིན་གྲྭ་%1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1259"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1257"/>
+         <source>max repeat %1
+ </source>
+         <translation>ཆེས་ཆེ་བའི་བསྐྱར་ཟློས་ཀྱི་ཚད་གཞི་ནི་1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1268"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1266"/>
+         <source>max class repeat %1
+ </source>
+         <translation>ཆེས་ཆེ་བའི་འཛིན་གྲྭ་བསྐྱར་ཟློས་བྱས་ན་%1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1277"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1275"/>
+         <source>max sequence %1
+ </source>
+         <translation>ཚད་གཞི་མཐོ་ཤོས་ཀྱི་གོ་རིམ་བརྒྱ་ཆ་1
+@@ -4620,12 +4623,12 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation>མགྱོགས་ལམ་གཏན་འཁེལ་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="472"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="474"/>
+         <source>Edit Shortcut</source>
+         <translation>མགྱོགས་ལམ་རྩོམ་སྒྲིག་བྱེད་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="373"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="372"/>
+         <source>Programs are not allowed to be added.</source>
+         <translation>གོ་རིམ་ཁ་སྣོན་བྱས་མི་ཆོག</translation>
+     </message>
+@@ -4767,88 +4770,88 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+ <context>
+     <name>ScreenlockUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="41"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="42"/>
+         <source>Show picture of screenlock on screenlogin</source>
+         <translation>བརྙན་ཤེལ་སྟེང་གི་བརྙན་ཤེལ་གྱི་པར་རིས་འགྲེམས་སྟོན་བྱས།</translation>
+         <extra-contents_path>/Screenlock/Show picture of screenlock on screenlogin</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="44"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
+         <source>Leave lock (System will be locked when the paired phone gone)</source>
+         <translation>ཟྭ་དང་བྲལ་ནས་(ལག་ཁྱེར་ཁ་པར་མེད་པར་གྱུར་རྗེས་མ་ལག་ལ་སྒོ་བརྒྱབ་ནས་གཏན་ཁེལ་བྱེད་ངེས་ )</translation>
+         <extra-contents_path>/Screenlock/Leave lock (System will be locked when the paired phone gone)</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="46"/>
+         <source>Specified device</source>
+         <translation>སྒྲིག་ཆས་དམིགས་འཛུགས་བྱ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="46"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="47"/>
+         <source>No paired phone. Please turn to &apos;Bluetooth&apos; to pair.</source>
+         <translation>ལག་ཁྱེར་ཁ་པར་ཆ་འགྲིག་མེད། &quot;སོ་སྔོན་པོ་&quot;རུ་བསྒྱུར་ནས་སྡེབ་སྒྲིག་བྱེད་རོགས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="66"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="67"/>
+         <source>Screenlock</source>
+         <translation>བརྙན་ཤེལ་གྱི་སྒོ་བརྒྱབ་པ</translation>
+         <extra-contents_path>/Screenlock/Screenlock</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="96"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="97"/>
+         <source>Local Pictures</source>
+         <translation>ས་གནས་ཀྱི་རི་མོ།</translation>
+         <extra-contents_path>/Screenlock/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="98"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="99"/>
+         <source>Online Pictures</source>
+         <translation>དྲ་ཐོག་པར་རིས།</translation>
+         <extra-contents_path>/Screenlock/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="100"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="101"/>
+         <source>Reset To Default</source>
+         <translation>བསྐྱར་དུ་ཁ་ཆད་དང་འགལ་བའི་གནས་</translation>
+         <extra-contents_path>/Screenlock/Reset To Default</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="112"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="113"/>
+         <source>Bluetooth</source>
+         <translation>སོ་སྔོན་པོ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="117"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="118"/>
+         <source>No bluetooth adapter detected, can not use Leave Lock.</source>
+         <translation>སོ་སྔོན་པོའི་སྡེབ་སྦྱོར་ཡོ་བྱད་ལ་ཞིབ་དཔྱད་ཚད་ལེན་མ་བྱས་ན། བཀོད་སྤྱོད་བྱེད་ཐབས་མེད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="136"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="138"/>
+         <source>Monitor Off</source>
+         <translation>སྒོ་རྒྱག་འཆར་ཆས་</translation>
+         <extra-contents_path>/Screenlock/Monitor Off</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="138"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="140"/>
+         <source>Screensaver</source>
+         <translation>བརྙན་ཡོལ་སྲུང་སྐྱོབ་</translation>
+         <extra-contents_path>/Screenlock/Screensaver</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="141"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="143"/>
+         <source>Related Settings</source>
+         <translation>འབྲེལ་ལྡན་སྒྲིག་འགོད་</translation>
+         <extra-contents_path>/Screenlock/Related Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="147"/>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="148"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="149"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="150"/>
+         <source>Set</source>
+         <translation>ཉི་ནུབ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="163"/>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="530"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="165"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="532"/>
+         <source>Please select device</source>
+         <translation>སྒྲིག་ཆས་གདམ་ག་གནང་རོགས།</translation>
+     </message>
+@@ -5007,118 +5010,118 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+ <context>
+     <name>ScreensaverUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="40"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="41"/>
+         <source>Screensaver</source>
+         <translation>བརྙན་ཡོལ་སྲུང་སྐྱོབ་</translation>
+         <extra-contents_path>/Screensaver/Screensaver</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="53"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="54"/>
+         <source>Idle time</source>
+         <translation>སྒྱིད་ལུག་གི་དུས་ཚོད།</translation>
+         <extra-contents_path>/Screensaver/Idle time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="55"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="56"/>
+         <source>Screensaver program</source>
+         <translation>བརྙན་ཤེལ་གྱི་འཆར་གཞི།</translation>
+         <extra-contents_path>/Screensaver/Screensaver program</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="87"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="88"/>
+         <source>Screensaver source</source>
+         <translation>བརྙན་ཤེལ་གྱི་འབྱུང་ཁུངས།</translation>
+         <extra-contents_path>/Screensaver/Screensaver source</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="92"/>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="455"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="93"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="456"/>
+         <source>Select</source>
+         <translation>བདམས་ཐོན་བྱུང་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="113"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="114"/>
+         <source>Ordinal</source>
+         <translation>སྲོལ་ཡིག</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="114"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="115"/>
+         <source>Random</source>
+         <translation>སྐབས་བསྟུན་རང་བཞིན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="121"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="122"/>
+         <source>Random switching</source>
+         <translation>སྐབས་བསྟུན་གྱིས་བརྗེ་རེས་བྱེད་པ</translation>
+         <extra-contents_path>/Screensaver/Random switching</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="141"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="142"/>
+         <source>Switching time</source>
+         <translation>བརྗེ་རེས་བྱེད་པའི་དུས་ཚོད།</translation>
+         <extra-contents_path>/Screensaver/Switching time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="160"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="161"/>
+         <source>Text(up to 30 characters):</source>
+         <translation>ཡི་གེ(ཆེས་མང་ན་ཡི་གེ་30ཡོད་པ་གཤམ་གསལ། )</translation>
+         <extra-contents_path>/Screensaver/Text(up to 30 characters):</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="183"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="184"/>
+         <source>Text position</source>
+         <translation>ཡི་གེའི་གོ་གནས།</translation>
+         <extra-contents_path>/Screensaver/Text position</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="191"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="192"/>
+         <source>Centered</source>
+         <translation>ལྟེ་བར་འཛིན་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="192"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="193"/>
+         <source>Randow(Bubble text)</source>
+         <translation>ལན་ཏུའོ་(ལྦུ་བ་ཅན་གྱི་ཡི་གེ)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="214"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="215"/>
+         <source>Show rest time</source>
+         <translation>ངལ་གསོའི་དུས་ཚོད་མངོན་པ།</translation>
+         <extra-contents_path>/Screensaver/Show rest time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="224"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="225"/>
+         <source>Lock screen when screensaver boot</source>
+         <translation>བརྙན་ཤེལ་གྱི་ལྷམ་ཡུ་རིང་གི་དུས་སུ་བརྙན་ཤེལ་ལ་ཟྭ་རྒྱག</translation>
+         <extra-contents_path>/Screensaver/Lock screen when screensaver boot</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="413"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="414"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</source>
+         <translation>Wallpaper files (*.jpg *.jpeg *.bmp *.dib *.png *.jfif *jpe *.gif *.tif *.tiff *.svg)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="454"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="455"/>
+         <source>select custom screensaver dir</source>
+         <translation>ཡུལ་སྲོལ་གོམས་གཤིས་ཀྱི་བརྙན་ཤེལ་གྲོན་ཆུང་བྱེད་མཁན་བདམས་པ་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="456"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="457"/>
+         <source>Position: </source>
+         <translation>གོ་གནས་ནི། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="457"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="458"/>
+         <source>FileName: </source>
+         <translation>ཡིག་ཆའི་མིང་ནི། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="458"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="459"/>
+         <source>FileType: </source>
+         <translation>ཡིག་ཆའི་རིགས་དབྱིབས་ནི། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="459"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="460"/>
+         <source>Cancel</source>
+         <translation>ཕྱིར་འཐེན།</translation>
+     </message>
+@@ -5256,32 +5259,32 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+ <context>
+     <name>ShortcutUi</name>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="33"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="34"/>
+         <source>System Shortcut</source>
+         <translation>མ་ལག་གི་མྱུར་ལམ།</translation>
+         <extra-contents_path>/Shortcut/System Shortcut</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="46"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="47"/>
+         <source>Customize Shortcut</source>
+         <translation>མགྱོགས་ལམ་གཏན་འཁེལ་བྱ་དགོས།</translation>
+         <extra-contents_path>/Shortcut/Customize Shortcut</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="77"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="81"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="98"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="102"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="180"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="269"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="481"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="79"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="83"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="100"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="104"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="182"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="271"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="483"/>
+         <source>Null</source>
+         <translation>སྟོང། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="230"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="362"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="617"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="232"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="364"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="619"/>
+         <source>Cancel</source>
+         <translation>མེད་པར་བཟོ་བ། </translation>
+     </message>
+@@ -5290,48 +5293,48 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">བཀོལ་སྤྱོད། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="232"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="364"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="619"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="234"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="366"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="621"/>
+         <source>Shortcut key conflict, use it?</source>
+         <translation>བཟུང་སྤྱོད་མིན་བཀོལ་སྤྱོད། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="233"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="365"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="235"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="367"/>
+         <source>%1 occuied, using this combination will invalidate %2</source>
+         <translation>%1བཟུང་སྤྱོད་འགྲོ་བ་གོ་མི་ཆོད་པ། %2</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="256"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="395"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="258"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="397"/>
+         <source>Shortcut &quot;%1&quot; occuied, please change the key combination</source>
+         <translation>&quot;%1&quot;བཟུང་སྤྱོད་ཞུ་བཟོ་བཅོས། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="447"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="449"/>
+         <source>Edit</source>
+         <translation>རྩོམ་སྒྲིག</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="448"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="450"/>
+         <source>Delete</source>
+         <translation>བསུབ་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="231"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="363"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="618"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="233"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="365"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="620"/>
+         <source>Continue</source>
+         <translation>མུ་མཐུད་ནས་ཡོང</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="620"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="622"/>
+         <source>&quot;%1&quot; occuied, using this combination will invalidate &quot;%2&quot;.</source>
+         <translation>“%1”དེ་དག་ཚང་མ་བརླགས་ “%2”བཟུང་སྤྱོད་བྱས་ན་མུ་མཐུད་དུ་བྱེད་ནུས་དེ་མགྱོགས་མྱུར་ངང་མགྱོགས་མྱུར་ངང་ལག་བསྟར་བྱེད་དུ་འཇུག་རྒྱུ.</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="660"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="662"/>
+         <source> or </source>
+         <translation> ཡང་ན་དེ་ལྟར་ </translation>
+     </message>
+@@ -5414,7 +5417,7 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation>འབྲེལ་ཡོད་ཀྱི་སྐོར།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/statusdialog.cpp" line="59"/>
++        <location filename="../../../plugins/system/about/statusdialog.cpp" line="60"/>
+         <source>Activation Code</source>
+         <translation>སྐུལ་སློང་གི་ཚབ་རྟགས།</translation>
+     </message>
+@@ -5422,13 +5425,13 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+ <context>
+     <name>Theme</name>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="248"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="247"/>
+         <source>Window Theme</source>
+         <translation>སྒེའུ་ཁུང་གི་བརྗོད་བྱ་གཙོ</translation>
+         <extra-contents_path>/Theme/Window Theme</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="250"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="249"/>
+         <source>Icon theme</source>
+         <translation>མཚོན་རྟགས་ཀྱི་བརྗོད་བྱ་གཙོ་</translation>
+         <extra-contents_path>/Theme/Icon theme</extra-contents_path>
+@@ -5438,25 +5441,25 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">ཚོད་འཛིན་གྱི་བརྗོད་བྱ་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="253"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="252"/>
+         <source>Cursor theme</source>
+         <translation>བརྗོད་བྱ་གཙོ་བོ།</translation>
+         <extra-contents_path>/Theme/Cursor theme</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="215"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="214"/>
+         <source>Effect setting</source>
+         <translation>ཕན་འབྲས་ཀྱི་སྒྲིག་གཞི།</translation>
+         <extra-contents_path>/Theme/Effect setting</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="220"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="219"/>
+         <source>Performance mode</source>
+         <translation>གྲུབ་འབྲས་ཐོབ་སྟངས།</translation>
+         <extra-contents_path>/Theme/Performance mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="222"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="221"/>
+         <source>Transparency</source>
+         <translation>ཕྱི་གསལ་ནང་གསལ།</translation>
+         <extra-contents_path>/Theme/Transparency</extra-contents_path>
+@@ -5466,172 +5469,172 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">བསྐྱར་དུ་ཁ་ཆད་དང་འགལ་བའི་གནས་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="111"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="534"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="108"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="539"/>
+         <source>Theme</source>
+         <translation>བརྗོད་བྱ་གཙོ་བོ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
+         <source>Default</source>
+         <translation>ཁ་ཆད་དང་འགལ་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="182"/>
+         <source>Light</source>
+         <translation>འོད་སྣང་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
+         <source>Dark</source>
+         <translation>མུན་ནག</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="190"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
+         <source>Auto</source>
+         <translation>རང་འགུལ་གྱིས་རླངས་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="423"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="426"/>
+         <source>Corlor</source>
+         <translation>ཁུ་རུའི་རིགས།</translation>
+         <extra-contents_path>/Theme/Corlor</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="608"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="614"/>
+         <source>Other</source>
+         <translation>དེ་མིན།</translation>
+         <extra-contents_path>/Theme/Other</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="613"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="619"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="623"/>
+         <source>Set</source>
+         <translation>གཏན་འཁེལ་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="611"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
+         <source>Wallpaper</source>
+         <translation>གྱང་ཤོག</translation>
+         <extra-contents_path>/Theme/Wallpaper</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="224"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="223"/>
+         <source>Corner</source>
+         <translation>སྒོར་ཟུར།</translation>
+         <extra-contents_path>/Theme/Corner</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="229"/>
+         <source>Right angle</source>
+         <translation>ཐད་ཟུར།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
+         <source>Small</source>
+         <translation>ཆུང་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="232"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
+         <source>Big</source>
+         <translation>ཆེ་བ་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="615"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="621"/>
+         <source>Beep</source>
+         <translation>སྦྲང་མ།</translation>
+         <extra-contents_path>/Theme/Beep</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="963"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="972"/>
+         <source>Blue-Crystal</source>
+         <translation>ཁ་དོག་སྔོན་པོའི་ཆུ་ཤེལ་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="965"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="974"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1058"/>
+         <source>Light-Seeking</source>
+         <translation>འོད་ཟེར་འཚོལ་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="967"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="976"/>
+         <source>DMZ-Black</source>
+         <translation>DMZ-ནག་པོ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="969"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="978"/>
+         <source>DMZ-White</source>
+         <translation>DMZ-མི་དཀར</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="971"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="980"/>
+         <source>Dark-Sense</source>
+         <translation>མུན་ནག་གི་ཚོར་སྣང་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1045"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1054"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1058"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1064"/>
+         <source>basic</source>
+         <translation>གཞི་རྩའི་ཆ་ནས</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1056"/>
+         <source>Classic</source>
+         <translation>གནའ་གཞུང་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1056"/>
+         <source>classic</source>
+         <translation>གནའ་གཞུང་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1051"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1060"/>
+         <source>HeYin</source>
+         <translation>ཧའེ་དབྱིན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1053"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1062"/>
+         <source>hp</source>
+         <translation>hp</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1064"/>
+         <source>ukui</source>
+         <translation>ཝུའུ་ཁི་ལན་གྱིས་བཤད་རྒྱུར</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1057"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1066"/>
+         <source>daybreakBlue</source>
+         <translation>ཉི་མ་ཤར་བའི་པུའུ་ལའེ་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1059"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1068"/>
+         <source>jamPurple</source>
+         <translation>ཤིང་ཏོག་བསྣུར་མ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1061"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1070"/>
+         <source>magenta</source>
+         <translation>མེ་དམར།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1063"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1072"/>
+         <source>sunRed</source>
+         <translation>ཉི་མ་ཤར་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1065"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1074"/>
+         <source>sunsetOrange</source>
+         <translation>ཉི་མ་ནུབ་པའི་ཨོ་ལན་ཀེ་ལན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1067"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1076"/>
+         <source>dustGold</source>
+         <translation>གད་སྙིགས་བླུགས་སྣ་ཚོགས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1069"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1078"/>
+         <source>polarGreen</source>
+         <translation>གླིང་སྣེའི་ཀེ་ལིན།</translation>
+     </message>
+@@ -5643,27 +5646,27 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+ <context>
+     <name>TimeBtn</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="106"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="107"/>
+         <source>Tomorrow</source>
+         <translation>སང་ཉིན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="108"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="109"/>
+         <source>Yesterday</source>
+         <translation>ཁ་སང་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="110"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="111"/>
+         <source>Today</source>
+         <translation>དེ་རིང་།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="128"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="129"/>
+         <source>%1 hours earlier than local</source>
+         <translation>ས་གནས་དེ་གའི་ཆུ་ཚོད་1ལས་སྔ་བ་ཡོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="130"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="131"/>
+         <source>%1 hours later than local</source>
+         <translation>ས་གནས་དེ་གའི་ཆུ་ཚོད་1ལས་ཆུ་ཚོད་1འ</translation>
+     </message>
+@@ -5671,27 +5674,27 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+ <context>
+     <name>TimeZoneChooser</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="35"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="34"/>
+         <source>Cancel</source>
+         <translation>ཕྱིར་འཐེན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="37"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="36"/>
+         <source>Confirm</source>
+         <translation>གཏན་འཁེལ་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="40"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="39"/>
+         <source>Change Timezone</source>
+         <translation>དུས་ཚོད་བསྒྱུར་བཅོས་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="33"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="32"/>
+         <source>Search Timezone</source>
+         <translation>དུས་ཚོད་འཚོལ་ཞིབ་བྱེད་པའི་དུས་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="64"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="63"/>
+         <source>To select a time zone, please click where near you on the map and select a city from the nearest city</source>
+         <translation>དུས་ཚོད་ཀྱི་ས་ཁོངས་འདེམས་དགོས་ན། ས་བཀྲའི་སྟེང་གི་ཉེ་འདབས་ཀྱི་ས་ཆ་གང་དུ་སོང་ནས་ཆེས་ཉེ་བའི་གྲོང་ཁྱེར་ནས་གྲོང་ཁྱེར་ཞིག་འདེམས་རོགས།</translation>
+     </message>
+@@ -5768,12 +5771,12 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation>གཏན་འཁེལ་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="37"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="38"/>
+         <source>Yinhe Kylin OS(Trail Version) Disclaimer</source>
+         <translation>དབྱིན་ཧོ་ཅིན་ལིན་གྱི་OS(Trail Version)བསྐྱར་གཅོད་ཡོང་རེ་ཞུ་མཁན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="46"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="47"/>
+         <source>Dear customer:
+        Thank you for trying Yinhe Kylin OS(trail version)! This version is free for users who only try out, no commercial purpose is permitted. The trail period lasts one year and it starts from the ex-warehouse time of the OS. No after-sales service is provided during the trail stage. If any security problems occurred when user put important files or do any commercial usage in system, all consequences are taken by users. Kylin software Co., Ltd. take no legal risk in trail version.
+        During trail stage,if you want any technology surpport or activate the system, please buy“Yinhe Kylin Operating System”official version or authorization by contacting 400-089-1870.</source>
+@@ -5782,7 +5785,7 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+        རྗེས་ཤུལ་གྱི་དུས་རིམ་དུ་གལ་ཏེ་ཁྱོད་ལ་ལག་རྩལ་གང་རུང་ཞིག་དགོས་པའམ་ཡང་ན་མ་ལག་འདི་སྐུལ་སློང་བྱེད་དགོས་ན། 400-089-1870ལ་འབྲེལ་གཏུག་བྱས་ནས་&quot;Yinhe Kylin Operating System&quot;ཡི་གཞུང་ཕྱོགས་ཀྱི་པར་གཞིའམ་ཡང་ན་དབང་ཆ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="60"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="61"/>
+         <source>Kylin software Co., Ltd.</source>
+         <translation>ཅིན་ལིན་མཉེན་ཆས་མ་རྐང་ཚད་ཡོད་ཀུང་སི།</translation>
+     </message>
+@@ -5870,14 +5873,14 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="309"/>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="207"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="206"/>
+         <source>Password</source>
+         <translation>གསང་གྲངས།</translation>
+         <extra-contents_path>/Userinfo/Password</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="331"/>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="213"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="212"/>
+         <source>Type</source>
+         <translation>རིགས་དབྱིབས་</translation>
+         <extra-contents_path>/Userinfo/Type</extra-contents_path>
+@@ -5908,98 +5911,98 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation>སྤྱོད་མཁན་གཞན་དག</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1045"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1043"/>
+         <source>root</source>
+         <translation>རྩ་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="171"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="170"/>
+         <source>CurrentUser</source>
+         <translation>གློག་སྒུལ་འཕྲུལ་འཁོར།</translation>
+         <extra-contents_path>/Userinfo/CurrentUser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="177"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="176"/>
+         <source>OthersUser</source>
+         <translation>དེ་མིན་ད་དུང</translation>
+         <extra-contents_path>/Userinfo/OthersUser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="219"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="218"/>
+         <source>Groups</source>
+         <translation>ཚོ་ཆུང་།</translation>
+         <extra-contents_path>/Userinfo/Groups</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="266"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="265"/>
+         <source>LoginWithoutPwd</source>
+         <translation>གསང་རྟགས</translation>
+         <extra-contents_path>/Userinfo/LoginWithoutPwd</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="271"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="270"/>
+         <source>AutoLoginOnBoot</source>
+         <translation>རང་འགུལ་གྱིས་རང་འགུལ་གྱིས་རང་འགུལ་གྱིས་རང་འགུལ་གྱིས</translation>
+         <extra-contents_path>/Userinfo/AutoLoginOnBoot</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="179"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="178"/>
+         <source>Add</source>
+         <translation>ཁ་སྣོན་བརྒྱབ་པ།</translation>
+         <extra-contents_path>/Userinfo/Add</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="540"/>
+         <source>Warning</source>
+         <translation>ཐ་ཚིག་སྒྲོག་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="540"/>
+         <source>The user is logged in, please delete the user after logging out</source>
+         <translation>སྤྱོད་མཁན་གྱིས་ཐོ་འགོད་བྱས་ཚར་རྗེས་སྤྱོད་མཁན་བསུབ་རོགས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="913"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="911"/>
+         <source>The account type of “%1” has been modified, will take effect after logout, whether to logout?</source>
+         <translation>&quot;%1&quot;ཡི་རྩིས་ཐོའི་རིགས་ལ་བཟོ་བཅོས་བརྒྱབ་ཟིན་པས་ཐོ་འགོད་བྱས་རྗེས་ནུས་པ་འཐོན་རྒྱུ་ཡིན་ནམ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="914"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="912"/>
+         <source>logout later</source>
+         <translation>རྗེས་སུ་ཐོ་འགོད་བྱེད་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="915"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="913"/>
+         <source>logout now</source>
+         <translation>ད་ལྟ་ཐོ་འགོད་བྱེད་བཞིན་ཡོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1013"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1011"/>
+         <source>Hint</source>
+         <translation>གསལ་འདེབས་བྱེད་པ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1014"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1012"/>
+         <source>The system only allows one user to log in automatically.After it is turned on, the automatic login of other users will be turned off.Is it turned on?</source>
+         <translation>མ་ལག་འདིས་སྤྱོད་མཁན་གཅིག་གིས་རང་འགུལ་གྱིས་ཐོ་འགོད་བྱེད་དུ་འཇུག་པ་རེད། ཁ་ཕྱེ་རྗེས་སྤྱོད་མཁན་གཞན་དག་གི་རང་འགུལ་ཐོ་འགོད་ཀྱི་སྒོ་རྒྱག་རྒྱུ་རེད། ཁ་ཕྱེ་བ་ཡིན་ནམ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1017"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1015"/>
+         <source>Trun on</source>
+         <translation>ཐེ་ལུན་གྱིས་བཤད་རྒྱུར།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1018"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1016"/>
+         <source>Close on</source>
+         <translation>སྒོ་རྒྱག་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1041"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1039"/>
+         <source>Standard</source>
+         <translation>ཚད་གཞི།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1043"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1041"/>
+         <source>Admin</source>
+         <translation>སྲིད་འཛིན་དོ་དམ།</translation>
+     </message>
+@@ -6144,90 +6147,90 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">དཔེ་དབྱིབས་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="264"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="322"/>
+         <source>Cancel</source>
+         <translation>ཕྱིར་འཐེན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="31"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="48"/>
+         <source>Background</source>
+         <translation>རྒྱབ་ལྗོངས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="156"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="195"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="214"/>
+         <source>picture</source>
+         <translation>པར་རིས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="153"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="195"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="211"/>
+         <source>color</source>
+         <translation>ཁ་དོག</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="167"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="225"/>
+         <source>wallpaper</source>
+         <translation>གྱང་ཤོག</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="169"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="227"/>
+         <source>centered</source>
+         <translation>ལྟེ་བར་བཟུང་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="165"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="223"/>
+         <source>scaled</source>
+         <translation>གཞི་ཁྱོན་ལྡན་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="171"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="229"/>
+         <source>stretched</source>
+         <translation>བརྐྱངས་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="173"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="231"/>
+         <source>zoom</source>
+         <translation>ཆེ་རུ་གཏོང་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="175"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="233"/>
+         <source>spanned</source>
+         <translation>ཁྱབ་ཁོངས་ལས་བརྒལ་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="219"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="277"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
+         <translation>Wallpaper files (*.jpg *.jpeg *.bmp *.dib *.png *.jfif *jpe *.gif *.tif *.tiff *wdp)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="259"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="317"/>
+         <source>select custom wallpaper file</source>
+         <translation>ཡུལ་སྲོལ་གོམས་གཤིས་ཀྱི་གྱང་ཤོག་ཡིག་ཆ་བདམས་པ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="260"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="318"/>
+         <source>Select</source>
+         <translation>བདམས་ཐོན་བྱུང་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="261"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="319"/>
+         <source>Position: </source>
+         <translation>གོ་གནས་ནི། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="262"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="320"/>
+         <source>FileName: </source>
+         <translation>ཡིག་ཆའི་མིང་ནི། </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="263"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="321"/>
+         <source>FileType: </source>
+         <translation>ཡིག་ཆའི་རིགས་དབྱིབས་ནི། </translation>
+     </message>
+@@ -6235,37 +6238,37 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+ <context>
+     <name>WallpaperUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="28"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="29"/>
+         <source>Background</source>
+         <translation>རྒྱབ་ལྗོངས།</translation>
+         <extra-contents_path>/Wallpaper/Background</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="30"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="31"/>
+         <source>Type</source>
+         <translation>དཔེ་དབྱིབས་</translation>
+         <extra-contents_path>/Wallpaper/Type</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="66"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="67"/>
+         <source>Desktop Background</source>
+         <translation>ཅོག་ཙེའི་རྒྱབ་ལྗོངས།</translation>
+         <extra-contents_path>/Wallpaper/Desktop Background</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="93"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="94"/>
+         <source>Local Pictures</source>
+         <translation>ས་གནས་ཀྱི་རི་མོ།</translation>
+         <extra-contents_path>/Wallpaper/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="95"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="96"/>
+         <source>Online Pictures</source>
+         <translation>དྲ་ཐོག་པར་རིས།</translation>
+         <extra-contents_path>/Wallpaper/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="97"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="98"/>
+         <source>Reset To Default</source>
+         <translation>བསྐྱར་དུ་ཁ་ཆད་དང་འགལ་བའི་གནས་</translation>
+         <extra-contents_path>/Wallpaper/Reset To Default</extra-contents_path>
+@@ -6279,12 +6282,12 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <extra-contents_path>/display/night mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2774"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2874"/>
+         <source>as main</source>
+         <translation>གཙོ་བོར་འཛིན་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2782"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2882"/>
+         <source>screen zoom</source>
+         <translation>བརྙན་ཤེལ་ཆེ་རུ་གཏོང་བ།</translation>
+     </message>
+@@ -6310,132 +6313,132 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">ཆ་འཕྲིན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="267"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="288"/>
+         <source>Night Mode</source>
+         <translation>མཚན་མོའི་རྣམ་པ།</translation>
+         <extra-contents_path>/Display/Night Mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1987"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2013"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="299"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2046"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2072"/>
+         <source>Open</source>
+         <translation>སྒོ་ཕྱེ་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="299"/>
+         <source>When turned on, it will reduce the blue light of the screen.</source>
+         <translation>སྤྱོད་འགོ་ཚུགས་རྗེས་བརྙན་ཡོལ་འོད་སྔོན་དམའ་རུ་བཏང་བ།.</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="283"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="304"/>
+         <source>Color Temperature And Eye Care</source>
+         <translation>མདོག་དྲོད་དང་མིག་སྲུང་</translation>
+         <extra-contents_path>/Display/Color Temperature And Eye Care</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="291"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="312"/>
+         <source>Time</source>
+         <translation>དུས་ཚོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="301"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="322"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2132"/>
+         <source>Custom Time</source>
+         <translation>གོམས་སྲོལ་གྱི་དུས་ཚོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="312"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="333"/>
+         <source>to</source>
+         <translation>དེ་ལྟར་བྱས་ན་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="285"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="330"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="306"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="351"/>
+         <source>Color Temperature</source>
+         <translation>ཁ་དོག་གི་དྲོད་ཚད།</translation>
+         <extra-contents_path>/Display/Color Temperature</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="293"/>
+         <source>When turned on, it can reduce blue light to prevent eye, the screen will turn yellow.</source>
+         <translation>ཁ་ཕྱེས་རྗེས་འོད་སྔོན་རྩིབས་འཕྲོ་ཇེ་ཉུང་དུ་བཏང་ནས་མིག་ལ་ཐང་ཆད་པར་སྔོན་འགོག་བྱེད་ཐུབ།འཆར་ངོས་ཅུང་སེར་པོར་འགྱུར།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="293"/>
+         <source>Eye Protection Mode</source>
+         <translation>མིག་སྐྱབ་རྣམ་པ་</translation>
+         <extra-contents_path>/Display/Eye protection mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="332"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="353"/>
+         <source>Warmer</source>
+         <translation>སྔར་ལས་དྲོ་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="333"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="354"/>
+         <source>Colder</source>
+         <translation>གྲང་ངར་ཆེ་བ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="611"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="632"/>
+         <source>Multi-screen</source>
+         <translation>བརྙན་ཤེལ་མང་པོ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="616"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="637"/>
+         <source>First Screen</source>
+         <translation>བརྙན་ཤེལ་དང་པོ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="617"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="638"/>
+         <source>Vice Screen</source>
+         <translation>བརྙན་ཤེལ་གཞོན་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="619"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="640"/>
+         <source>Extend Screen</source>
+         <translation>བརྙན་ཤེལ་རིང་དུ་གཏོང་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="620"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="641"/>
+         <source>Clone Screen</source>
+         <translation>ཁུ་ལོན་གྱི་བརྙན་ཤེལ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="622"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2639"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="643"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2739"/>
+         <source>Splice Screen</source>
+         <translation>སྦྲེལ་མཐུད་བཅས་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1023"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1069"/>
+         <source>The zoom has been modified, it will take effect after you log off</source>
+         <translation>འཆར་ངོས་ཇེ་ཆུང་དུ་བཏང་སྟེ་བཟོ་བཅོས་བྱས།ཐོ་ཁོངས་ནས་སུབ་རྗེས་ནུས་པ་ཐོན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1986"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2045"/>
+         <source>Turning on &apos;Eye Protection Mode&apos; will turn off &apos;Color Temperature&apos;. Continue turning it on?</source>
+         <translation>“མིག་སྲུང་རྣམ་པའི”སྒོ་མོ་ཕྱེ་ཚེ“ཚོས་གཞི་དྲོད་ཚད”ཀྱི་སྒོ་རྒྱག་རྒྱ་དང་མུ་མཐུད་སྒོ་མོ་འབྱེད་རྒྱ་ཡིན་ནམ།?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1988"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2014"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2047"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
+         <source>Cancel</source>
+         <translation>ཕྱིར་འཐེན།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2012"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2071"/>
+         <source>Turning on &apos;Color Temperature&apos; will turn off &apos;Eye Protection Mode&apos;. Continue turning it on?</source>
+         <translation>“ཁ་དོག་དྲོད་ཚད”ཀྱི་སྒོ་མོ་ཕྱེ་ཚེ“མིག་སྲུང་རྣམ་པ”མུ་མཐུད་འབྱེད་སྲིད་དམ།?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2773"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2873"/>
+         <source>monitor</source>
+         <translation>ལྟ་ཞིབ་ཡོ་བྱད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2795"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2895"/>
+         <source>open monitor</source>
+         <translation>སྒོ་འབྱེད་ལྟ་ཞིབ་ཡོ་བྱད</translation>
+     </message>
+@@ -6444,7 +6447,7 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">བརྗོད་བྱ་གཙོ་བོ་ནི་མཚན་མོའི་རྣམ་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2745"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2845"/>
+         <source>Auto Brightness</source>
+         <translation>རང་འགུལ་གྱི་འོད་ཟེར་</translation>
+         <extra-contents_path>/Display/Auto Brightness</extra-contents_path>
+@@ -6454,22 +6457,22 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">ཁོར་ཡུག་གིས་བརྙན་ཤེལ་གྱི་གསལ་ཚད་སྙོམས་སྒྲིག་བྱེད་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="784"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="813"/>
+         <source>resolution</source>
+         <translation>གྲོས་ཆོད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="787"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="816"/>
+         <source>orientation</source>
+         <translation>ཁ་ཕྱོགས་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="790"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="819"/>
+         <source>frequency</source>
+         <translation>ཐེངས་གྲངས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="793"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="822"/>
+         <source>scale</source>
+         <translation>གཞི་ཁྱོན།</translation>
+     </message>
+@@ -6478,12 +6481,12 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">གསལ་འདེབས་བྱེད་པ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2702"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2802"/>
+         <source>Splicing Method</source>
+         <translation>མཐུད་སྦྱོར་བྱེད་སྟངས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2705"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2805"/>
+         <source>Change</source>
+         <translation>བསྒྱུར་བཅོས་བྱ་དགོས།</translation>
+     </message>
+@@ -6492,12 +6495,12 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">བརྙན་ཤེལ་གྱི་%1ལ་བཟོ་བཅོས་བརྒྱབ་ཟིན་པས་ཉར་ཚགས་བྱེད་དགོས་སམ། &lt;br/&gt; &lt;font style= &apos;color:#626c6e&apos;&gt;དུས་ཚོད་སྐར་ཆ་14ཡི་རྗེས་སུ་སྒྲིག་བཀོད་ཉར་ཚགས་བྱེད་རྒྱུ་རེད། &lt;/font&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="778"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="806"/>
+         <source>Save</source>
+         <translation>གྲོན་ཆུང་བྱེད་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="777"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="805"/>
+         <source>Not Save</source>
+         <translation>ཉར་ཚགས་མི་བྱེད་པ།</translation>
+     </message>
+@@ -6510,18 +6513,18 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">ཆེ་རུ་གཏོང་བའི་ནུས་པ་ཐོ་འགོད་བྱས་ནས་ནུས་པ་ཐོན་པར་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1024"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1070"/>
+         <source>Log out now</source>
+         <translation>ད་ལྟ་ཕྱིར་འཐེན་བྱ་དགོས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1025"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1071"/>
+         <source>Later</source>
+         <translation>རྗེས་སུ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1042"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1052"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1088"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1098"/>
+         <source>(Effective after logout)</source>
+         <translation>(ཐོ་ཁོངས་ནས་སུབ་རྗེས་ནུས་པ་འཐོན་རྒྱུ། )</translation>
+     </message>
+@@ -6530,48 +6533,48 @@ II.Javaལག་རྩལ་གྱི་ཚད་བཀག
+         <translation type="vanished">སྒོ་འབྱེད་པའི་དུས་ཚོད་ནི་ཉེ་བའི་དུས་ཚོད་ལས་སྔ་བ་རེད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2132"/>
+         <source>All Day</source>
+         <translation>ཉིན་གང་བོར།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2253"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2259"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2316"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2322"/>
+         <source>Follow the sunrise and sunset</source>
+         <translation>ཉི་མ་ཤར་བ་དང་ཉི་མ་ནུབ་པའི་རྗེས་སུ་</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2284"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2290"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2347"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2353"/>
+         <source>Brightness</source>
+         <translation>འོད་ཆེམ་ཆེམ་དུ་འཕྲོ</translation>
+         <extra-contents_path>/Display/Brightness</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1546"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1846"/>
+         <source>please insure at least one output!</source>
+         <translation>མ་མཐར་ཡང་ཐོན་ཚད་གཅིག་ལ་ཉེན་ཁ་བཟོ་རོགས།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="798"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="827"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after 14 seconds&lt;/font&gt;</source>
+         <translation>བརྙན་ཤེལ་གྱི་%1ལ་བཟོ་བཅོས་བརྒྱབ་ཟིན་པས་ཉར་ཚགས་བྱེད་དགོས་སམ། &lt;br/&gt; &lt;font style= &apos;color:#626c6e&apos;&gt;དུས་ཚོད་སྐར་ཆ་14ཡི་རྗེས་སུ་སྒྲིག་བཀོད་ཉར་ཚགས་བྱེད་རྒྱུ་རེད། &lt;/font&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="809"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="838"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after %2 seconds&lt;/font&gt;</source>
+         <translation>བརྙན་ཤེལ་གྱི་%1ལ་བཟོ་བཅོས་བརྒྱབ་ཟིན་པས་ཉར་ཚགས་བྱེད་དགོས་སམ། &lt;br/&gt; &lt;font style= &apos;color:#626c6e&apos;&gt;སྒྲིག་བཀོད་དེ་%2秒&lt;/font&gt;ཡི་རྗེས་སུ་ཉར་ཚགས་བྱེད་རྒྱུ་རེད།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1496"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1546"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1553"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1846"/>
+         <source>Warning</source>
+         <translation>ཐ་ཚིག་སྒྲོག་པ།</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1497"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1554"/>
+         <source>Sorry, your configuration could not be applied.
+ Common reasons are that the overall screen size is too big, or you enabled more displays than supported by your GPU.</source>
+         <translation>དགོངས་པ་མ་ཚོམ། ཁྱེད་ཚོའི་བཀོད་སྒྲིག་བཀོལ་སྤྱོད་བྱེད་ཐབས་མེད།
+diff --git a/shell/res/i18n/en_US.ts b/shell/res/i18n/en_US.ts
+index 0839a9a..e4c8d16 100644
+--- a/shell/res/i18n/en_US.ts
++++ b/shell/res/i18n/en_US.ts
+@@ -4,107 +4,107 @@
+ <context>
+     <name>About</name>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="56"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="57"/>
+         <source>About and Support</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="58"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="59"/>
+         <source>About</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="545"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="546"/>
+         <source>Version</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="408"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="409"/>
+         <source>Disk</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="547"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="548"/>
+         <source>Status</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="549"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="550"/>
+         <source>Serial</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="224"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="225"/>
+         <source>DateRes</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="227"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="233"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="228"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="234"/>
+         <source>Inactivated</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="229"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="230"/>
+         <source>Trial expiration time</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="231"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="235"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="232"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="236"/>
+         <source>Active</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="243"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="244"/>
+         <source>Activated</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="244"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="458"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="245"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="459"/>
+         <source>Extend</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="279"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="280"/>
+         <source>Kylin Linux Desktop (Touch Screen) V10 (SP1)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="281"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="282"/>
+         <source>Kylin Linux Desktop (Tablet) V10 (SP1)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="287"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="288"/>
+         <source>Kylin Linux Desktop V10 (SP1)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="401"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="410"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="402"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="411"/>
+         <source>avaliable</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="457"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="553"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="458"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="554"/>
+         <source>expired</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="518"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="519"/>
+         <source>The system needs to be restarted to set the HostName, whether to reboot</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="519"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="520"/>
+         <source>Reboot Now</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="520"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="521"/>
+         <source>Reboot Later</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -112,7 +112,7 @@
+ <context>
+     <name>AboutInterface</name>
+     <message>
+-        <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="233"/>
++        <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="238"/>
+         <source>avaliable</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -120,172 +120,170 @@
+ <context>
+     <name>AboutUi</name>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="32"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="33"/>
+         <source>System Summary</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/System Summary</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="35"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="37"/>
+         <source>Privacy and agreement</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/Privacy and agreement</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="37"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="40"/>
+         <source>Support</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="51"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="381"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="55"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="399"/>
+         <source>Version</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/version</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="56"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="61"/>
+         <source>Version Number</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="61"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="67"/>
+         <source>Patch Version</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="66"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="73"/>
+         <source>Installed Date</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="71"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="79"/>
+         <source>Upgrade Date</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="78"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="87"/>
+         <source>HostName</source>
+         <translation type="unfinished"></translation>
+-        <extra-contents_path>/About/HostName</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="90"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="383"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="100"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="401"/>
+         <source>Kernel</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/Kernel</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="95"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="385"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="106"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="403"/>
+         <source>CPU</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/CPU</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="100"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="387"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="112"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="405"/>
+         <source>Memory</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/Memory</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="105"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="118"/>
+         <source>Disk</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="110"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="389"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="124"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="407"/>
+         <source>Desktop</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/Desktop</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="115"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="391"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="130"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="409"/>
+         <source>User</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/User</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="123"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="139"/>
+         <source>Copyright ©%1 %2. All rights reserved.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="172"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="188"/>
+         <source>openKylin</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="169"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="185"/>
+         <source>KylinSoft</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="235"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="251"/>
+         <source>Wechat code scanning obtains HP professional technical support</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="236"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="252"/>
+         <source>See more about Kylin Tianqi edu platform</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="256"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="272"/>
+         <source>Learn more HP user manual&gt;&gt;</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="261"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="277"/>
+         <source>See user manual&gt;&gt;</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="339"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="356"/>
+         <source>Send optional diagnostic data</source>
+         <translation type="unfinished"></translation>
+-        <extra-contents_path>/About/Send optional diagnostic data</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="340"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="357"/>
+         <source>By sending us diagnostic data, improve the system experience and solve your problems faster</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="363"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="380"/>
+         <source>&lt;&lt;Protocol&gt;&gt;</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/&lt;&lt;Protocol&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="364"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="382"/>
+         <source>and</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="366"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="384"/>
+         <source>&lt;&lt;Privacy&gt;&gt;</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/&lt;&lt;Privacy&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="393"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="411"/>
+         <source>Status</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/Status</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="395"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="413"/>
+         <source>Active</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/Active</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="397"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="415"/>
+         <source>Serial</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/About/Serial</extra-contents_path>
+@@ -415,7 +413,7 @@
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="348"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="266"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
+         <source>Cancel</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -425,65 +423,65 @@
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="73"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="72"/>
+         <source>Add Shortcut</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="86"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="85"/>
+         <source>Please enter a shortcut</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="224"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="223"/>
+         <source>Desktop files(*.desktop)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="264"/>
+         <source>select desktop</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="302"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="323"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="334"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="301"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="322"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="333"/>
+         <source>Invalid application</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="304"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="319"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="330"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="303"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="318"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="329"/>
+         <source>Shortcut conflict</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="306"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="321"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="332"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="305"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="320"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="331"/>
+         <source>Invalid shortcut</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="309"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="316"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="337"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="308"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="315"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="336"/>
+         <source>Name repetition</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="343"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="342"/>
+         <source>Unknown error</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="522"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="521"/>
+         <source>Shortcut cannot be empty</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="526"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="525"/>
+         <source>Name cannot be empty</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -552,130 +550,150 @@
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="215"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="302"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="209"/>
++        <source>Arab  (AE)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="210"/>
++        <source>Vietnam  (VN)</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="217"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="304"/>
+         <source>Solar calendar</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="216"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="218"/>
+         <source>Lunar</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="221"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="223"/>
+         <source>Monday</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="222"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="224"/>
+         <source>Sunday</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="233"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="384"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="235"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="386"/>
+         <source>12 Hours</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="234"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="385"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="236"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="387"/>
+         <source>24 Hours</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="366"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="368"/>
+         <source>MMMM dd, yyyy</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="369"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="371"/>
+         <source>MMMM d, yy</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="639"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="642"/>
+         <source>Simplified Chinese</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="641"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="644"/>
+         <source>English</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="643"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="646"/>
+         <source>Tibetan</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="645"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="648"/>
+         <source>Kazaqa</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="647"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="650"/>
+         <source>Uygur</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="649"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="652"/>
+         <source>Kirghiz</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="651"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="654"/>
+         <source>Traditional Chinese</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="653"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="656"/>
+         <source>Mongolian</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="655"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="658"/>
+         <source>German</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="657"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="660"/>
+         <source>Spanish</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="659"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="662"/>
+         <source>French</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="672"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="664"/>
++        <source>Arab</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="666"/>
++        <source>Vietnam</source>
++        <translation type="unfinished"></translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="679"/>
+         <source>Modify the current region need to logout to take effect, whether to logout?</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="673"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="680"/>
+         <source>Logout later</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="674"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="681"/>
+         <source>Logout now</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="676"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="683"/>
+         <source>Modify the first language need to reboot to take effect, whether to reboot?</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="677"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="684"/>
+         <source>Reboot later</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="678"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="685"/>
+         <source>Reboot now</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -683,55 +701,54 @@
+ <context>
+     <name>AreaUi</name>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="38"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="39"/>
+         <source>Regional Format</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Area/Regional Format</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="40"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="41"/>
+         <source>Calendar</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Area/Calendar</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="42"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="43"/>
+         <source>First Day Of Week</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="45"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="46"/>
+         <source>Short Foramt Date</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Area/Short Foramt Date</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="47"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="48"/>
+         <source>Long Format Date</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Area/Long Format Date</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="50"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="51"/>
+         <source>Time</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Area/Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="63"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="64"/>
+         <source>Language Format</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Area/Language Format</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="74"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="76"/>
+         <source>Language Format Example</source>
+         <translation type="unfinished"></translation>
+-        <extra-contents_path>/Area/Language Format Example</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="103"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="106"/>
+         <source>System Language</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Area/System Language</extra-contents_path>
+@@ -740,32 +757,32 @@
+ <context>
+     <name>AutoBoot</name>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="96"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="95"/>
+         <source>Auto Start</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="231"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="230"/>
+         <source>Delete</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="293"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="292"/>
+         <source>Desktop files(*.desktop)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="300"/>
+         <source>select autoboot desktop</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
+         <source>Select</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="303"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
+         <source>Cancel</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -773,13 +790,13 @@
+ <context>
+     <name>AutoBootUi</name>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="17"/>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="18"/>
+         <source>Autostart Settings</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Autostart/Autostart Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="27"/>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="28"/>
+         <source>Add</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Autostart/Add</extra-contents_path>
+@@ -880,7 +897,7 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>BrightnessFrame</name>
+     <message>
+-        <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="36"/>
++        <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="66"/>
+         <source>Failed to get the brightness information of this monitor</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -904,47 +921,47 @@ you can restore them to ensure the integrity of your system.</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="158"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="309"/>
+         <source>Cancel</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="161"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="162"/>
+         <source>Confirm</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="302"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
+         <source>select custom face file</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="303"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
+         <source>Select</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
+         <source>Position: </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
+         <source>FileName: </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="308"/>
+         <source>FileType: </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="322"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="324"/>
+         <source>Warning</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="323"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="325"/>
+         <source>The avatar is larger than 1M, please choose again</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -972,22 +989,22 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="116"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="117"/>
+         <source>Confirm</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="156"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
+         <source>nickName already in use.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="162"/>
+         <source>Can&apos;t contains &apos;:&apos;.</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -1001,7 +1018,7 @@ you can restore them to ensure the integrity of your system.</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="103"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="471"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="473"/>
+         <source>Current Pwd</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -1012,15 +1029,15 @@ you can restore them to ensure the integrity of your system.</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="136"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="472"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="480"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="474"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="482"/>
+         <source>New Pwd</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="163"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="473"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="481"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="475"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="483"/>
+         <source>Sure Pwd</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -1030,50 +1047,50 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="220"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="305"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="371"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="221"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="307"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="373"/>
+         <source>Confirm</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="281"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="544"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="283"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="546"/>
+         <source>Inconsistency with pwd</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="301"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="303"/>
+         <source>Same with old pwd</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="354"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="356"/>
+         <source>Pwd Changed Succes</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="361"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="363"/>
+         <source>Authentication failed, input authtok again!</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="503"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="505"/>
+         <source>Contains illegal characters!</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="615"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="617"/>
+         <source>current pwd cannot be empty!</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="620"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="622"/>
+         <source>new pwd cannot be empty!</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="625"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="627"/>
+         <source>sure pwd cannot be empty!</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -1135,7 +1152,7 @@ you can restore them to ensure the integrity of your system.</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="86"/>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="89"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="88"/>
+         <source>Choose a custom color</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -1160,12 +1177,12 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="94"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="93"/>
+         <source>Custom color</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="182"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="181"/>
+         <source>Close</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -1178,7 +1195,7 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="50"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="49"/>
+         <source>Add user group</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -1188,23 +1205,23 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="78"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="79"/>
+         <source>Id</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="89"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="90"/>
+         <source>Cancel</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="92"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="94"/>
+         <source>Confirm</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="202"/>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="216"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="205"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="219"/>
+         <source>GroupName&apos;s length must be between 1 and %1 characters!</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -1285,54 +1302,54 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="279"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="280"/>
+         <source>Confirm</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="355"/>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="581"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="357"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="583"/>
+         <source>Inconsistency with pwd</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="494"/>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="647"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="649"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="498"/>
+         <source>nickName already in use.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="522"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="524"/>
+         <source>Username&apos;s folder exists, change another one</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="526"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="528"/>
+         <source>Name corresponds to group already exists.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="551"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="553"/>
+         <source>Contains illegal characters!</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="642"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="644"/>
+         <source>Username&apos;s length must be between 1 and %1 characters!</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="652"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="654"/>
+         <source>new pwd cannot be empty!</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="657"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="659"/>
+         <source>sure pwd cannot be empty!</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -1353,13 +1370,13 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="341"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="346"/>
+         <source>Add Timezone</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="201"/>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="343"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="206"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="348"/>
+         <source>Change Timezone</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -1367,91 +1384,91 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>DatetimeUi</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="53"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="54"/>
+         <source>Sync Server</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Date/Sync Server</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="75"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="77"/>
+         <source>Current Date</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Date/Current Date</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="105"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="107"/>
+         <source>Timezone</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Date/Timezone</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="111"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
+         <source>Set Time</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Date/Set Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
+         <source>Manual Time</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Date/Manual Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="117"/>
+         <source>Sync Time</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Date/Sync Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="127"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="129"/>
+         <source>Set Time Manually</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Date/Set Time Manually</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="162"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
+         <source>Server Address</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="166"/>
+         <source>Required</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="165"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="167"/>
+         <source>Save</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="169"/>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="313"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="171"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="315"/>
+         <source>Customize</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="197"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="199"/>
+         <source>Other Timezone</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Date/Other Timezone</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="269"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
+         <source>MMMM d, yy ddd</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="273"/>
+         <source>MMMM dd, yyyy ddd</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="302"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="304"/>
+         <source>Sync failed</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="312"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="314"/>
+         <source>Default</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -1477,56 +1494,56 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>DefaultAppUi</name>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="17"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="18"/>
+         <source>DefaultAppWindow</source>
+         <comment>Select Default Application</comment>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Defaultapp/Select Default Application</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="21"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="22"/>
+         <source>Browser</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Defaultapp/Browser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="23"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="24"/>
+         <source>Mail</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Defaultapp/Mail</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="25"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="26"/>
+         <source>Image Viewer</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Defaultapp/Image Viewer</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="27"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="28"/>
+         <source>Audio Player</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Defaultapp/Audio Player</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="29"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="30"/>
+         <source>Video Player</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Defaultapp/Video Player</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="31"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="32"/>
+         <source>Text Editor</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Defaultapp/Text Editor</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="35"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="36"/>
+         <source>Reset default apps to system recommended apps</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Defaultapp/Reset default apps to system recommended apps</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="36"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="37"/>
+         <source>Reset</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -1549,99 +1566,26 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="65"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
+         <source>Keep desktop, files, favorites, music of the user</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="68"/>
+         <source>Delete whole data belong user</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="98"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
+         <source>Cancel</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="102"/>
+         <source>Confirm</source>
+         <translation type="unfinished"></translation>
+     </message>
+ </context>
+-<context>
+-    <name>DisplayPerformanceDialog</name>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="26"/>
+-        <source>Dialog</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="214"/>
+-        <source>Display Advanced Settings</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="297"/>
+-        <source>Performance</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="376"/>
+-        <source>Applicable to machine with discrete graphics, which can accelerate the rendering of 3D graphics.</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="392"/>
+-        <source>(Note: not support connect graphical with xmanager on windows.)</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="462"/>
+-        <source>Compatible</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="538"/>
+-        <source>Applicable to machine with integrated graphics,  there is no 3D graphics acceleration. </source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="554"/>
+-        <source>(Note: need connect graphical with xmanager on windows, use this option.)</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="624"/>
+-        <source>Automatic</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="700"/>
+-        <source>Auto select according to environment, delay the login time (about 0.5 sec).</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="721"/>
+-        <source>Threshold:</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="744"/>
+-        <source>Apply</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="757"/>
+-        <source>Reset</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-    <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="772"/>
+-        <source>(Note: select this option to use 3D graphics acceleration and xmanager.)</source>
+-        <translation type="unfinished"></translation>
+-    </message>
+-</context>
+ <context>
+     <name>DisplaySet</name>
+     <message>
+@@ -1912,132 +1856,132 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>KeyboardUi</name>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="24"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="30"/>
+         <source>Keyboard Settings</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Keyboard Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="35"/>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="41"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="173"/>
+         <source>Input Method</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Input Method</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="51"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="57"/>
+         <source>Virtual Keyboard</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Virtual Keyboard</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="106"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="112"/>
+         <source>Key repeat</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Key repeat</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="114"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="120"/>
+         <source>Delay</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Delay</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="117"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="123"/>
+         <source>Short</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="118"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="124"/>
+         <source>Long</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="130"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="136"/>
+         <source>Speed</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Speed</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="132"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="138"/>
+         <source>Slow</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="133"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="139"/>
+         <source>Fast</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="144"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="150"/>
+         <source>Input test</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Input test</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="152"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="158"/>
+         <source>Key tips</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Key tips</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="161"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
+         <source>Input settings</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Input settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="168"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="174"/>
+         <source>Edit</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="175"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="181"/>
+         <source>Show icon on tray</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Show icon on tray</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="182"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="188"/>
+         <source>Show icon on desktop</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Show icon on desktop</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="189"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="195"/>
+         <source>Keyboard Size</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Keyboard Size</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="197"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="203"/>
+         <source>Text size</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Text size</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="199"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="205"/>
+         <source>Small</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="200"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="206"/>
+         <source>Medium</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="201"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
+         <source>Large</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="213"/>
+         <source>Animation</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Animation</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="214"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="220"/>
+         <source>Input sound effect</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Keyboard/Input sound effect</extra-contents_path>
+@@ -2046,12 +1990,12 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>LanguageFrame</name>
+     <message>
+-        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="70"/>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="90"/>
+         <source>Input Settings</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="71"/>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="91"/>
+         <source>Delete</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -2065,7 +2009,7 @@ you can restore them to ensure the integrity of your system.</source>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="152"/>
+-        <location filename="../../mainwindow.cpp" line="1082"/>
++        <location filename="../../mainwindow.cpp" line="1107"/>
+         <source>This function has been controlled</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -2076,50 +2020,50 @@ you can restore them to ensure the integrity of your system.</source>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="173"/>
+-        <location filename="../../mainwindow.cpp" line="481"/>
++        <location filename="../../mainwindow.cpp" line="510"/>
+         <source>Maximize</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="441"/>
+-        <location filename="../../mainwindow.cpp" line="459"/>
+-        <location filename="../../mainwindow.cpp" line="591"/>
+-        <location filename="../../mainwindow.cpp" line="949"/>
++        <location filename="../../mainwindow.cpp" line="470"/>
++        <location filename="../../mainwindow.cpp" line="488"/>
++        <location filename="../../mainwindow.cpp" line="620"/>
++        <location filename="../../mainwindow.cpp" line="974"/>
+         <source>Settings</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="453"/>
++        <location filename="../../mainwindow.cpp" line="482"/>
+         <source>Back home</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="479"/>
++        <location filename="../../mainwindow.cpp" line="508"/>
+         <source>Option</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="480"/>
++        <location filename="../../mainwindow.cpp" line="509"/>
+         <source>Minimize</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="482"/>
++        <location filename="../../mainwindow.cpp" line="511"/>
+         <source>Close</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="592"/>
++        <location filename="../../mainwindow.cpp" line="621"/>
+         <source>Version: </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="731"/>
++        <location filename="../../mainwindow.cpp" line="756"/>
+         <source>Specified</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="1082"/>
++        <location filename="../../mainwindow.cpp" line="1107"/>
+         <source>Warning</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -2347,7 +2291,7 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/printer/printer.cpp" line="121"/>
++        <location filename="../../../plugins/devices/printer/printer.cpp" line="122"/>
+         <source>Printers</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -2355,27 +2299,27 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>PrivacyDialog</name>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="11"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="12"/>
+         <source>Set</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="73"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="74"/>
+         <source>End User License Agreement and Privacy Policy Statement of openKylin</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="75"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="76"/>
+         <source>End User License Agreement and Privacy Policy Statement of Kylin</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="82"/>
+         <source>Openkylin Community.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="83"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="84"/>
+         <source>Kylinsoft Co., Ltd.</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -2388,70 +2332,70 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="472"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="474"/>
+         <source>Edit Shortcut</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="373"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="372"/>
+         <source>Programs are not allowed to be added.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="79"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="78"/>
+         <source>User Info</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1203"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1201"/>
+         <source>min length %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1213"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1211"/>
+         <source>min digit num %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1222"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1220"/>
+         <source>min upper num %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1231"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1229"/>
+         <source>min lower num %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1240"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1238"/>
+         <source>min other num %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1250"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1248"/>
+         <source>min char class %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1259"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1257"/>
+         <source>max repeat %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1268"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1266"/>
+         <source>max class repeat %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1277"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1275"/>
+         <source>max sequence %1
+ </source>
+         <translation type="unfinished"></translation>
+@@ -2518,88 +2462,88 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>ScreenlockUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="41"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="42"/>
+         <source>Show picture of screenlock on screenlogin</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screenlock/Show picture of screenlock on screenlogin</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="44"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
+         <source>Leave lock (System will be locked when the paired phone gone)</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screenlock/Leave lock (System will be locked when the paired phone gone)</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="46"/>
+         <source>Specified device</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="46"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="47"/>
+         <source>No paired phone. Please turn to &apos;Bluetooth&apos; to pair.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="66"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="67"/>
+         <source>Screenlock</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screenlock/Screenlock</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="96"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="97"/>
+         <source>Local Pictures</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screenlock/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="98"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="99"/>
+         <source>Online Pictures</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screenlock/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="100"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="101"/>
+         <source>Reset To Default</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screenlock/Reset To Default</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="112"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="113"/>
+         <source>Bluetooth</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="117"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="118"/>
+         <source>No bluetooth adapter detected, can not use Leave Lock.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="136"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="138"/>
+         <source>Monitor Off</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screenlock/Monitor Off</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="138"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="140"/>
+         <source>Screensaver</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screenlock/Screensaver</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="141"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="143"/>
+         <source>Related Settings</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screenlock/Related Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="147"/>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="148"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="149"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="150"/>
+         <source>Set</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="163"/>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="530"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="165"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="532"/>
+         <source>Please select device</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -2664,118 +2608,118 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>ScreensaverUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="40"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="41"/>
+         <source>Screensaver</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screensaver/Screensaver</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="53"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="54"/>
+         <source>Idle time</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screensaver/Idle time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="55"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="56"/>
+         <source>Screensaver program</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screensaver/Screensaver program</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="87"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="88"/>
+         <source>Screensaver source</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screensaver/Screensaver source</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="92"/>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="455"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="93"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="456"/>
+         <source>Select</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="113"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="114"/>
+         <source>Ordinal</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="114"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="115"/>
+         <source>Random</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="121"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="122"/>
+         <source>Random switching</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screensaver/Random switching</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="141"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="142"/>
+         <source>Switching time</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screensaver/Switching time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="160"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="161"/>
+         <source>Text(up to 30 characters):</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screensaver/Text(up to 30 characters):</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="183"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="184"/>
+         <source>Text position</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screensaver/Text position</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="191"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="192"/>
+         <source>Centered</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="192"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="193"/>
+         <source>Randow(Bubble text)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="214"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="215"/>
+         <source>Show rest time</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screensaver/Show rest time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="224"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="225"/>
+         <source>Lock screen when screensaver boot</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Screensaver/Lock screen when screensaver boot</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="413"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="414"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="454"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="455"/>
+         <source>select custom screensaver dir</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="456"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="457"/>
+         <source>Position: </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="457"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="458"/>
+         <source>FileName: </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="458"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="459"/>
+         <source>FileType: </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="459"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="460"/>
+         <source>Cancel</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -2875,78 +2819,78 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>ShortcutUi</name>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="33"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="34"/>
+         <source>System Shortcut</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Shortcut/System Shortcut</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="46"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="47"/>
+         <source>Customize Shortcut</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Shortcut/Customize Shortcut</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="77"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="81"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="98"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="102"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="180"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="269"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="481"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="79"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="83"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="100"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="104"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="182"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="271"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="483"/>
+         <source>Null</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="230"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="362"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="617"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="232"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="364"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="619"/>
+         <source>Cancel</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="232"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="364"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="619"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="234"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="366"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="621"/>
+         <source>Shortcut key conflict, use it?</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="233"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="365"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="235"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="367"/>
+         <source>%1 occuied, using this combination will invalidate %2</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="256"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="395"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="258"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="397"/>
+         <source>Shortcut &quot;%1&quot; occuied, please change the key combination</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="447"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="449"/>
+         <source>Edit</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="448"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="450"/>
+         <source>Delete</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="231"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="363"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="618"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="233"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="365"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="620"/>
+         <source>Continue</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="620"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="622"/>
+         <source>&quot;%1&quot; occuied, using this combination will invalidate &quot;%2&quot;.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="660"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="662"/>
+         <source> or </source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -3025,7 +2969,7 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/statusdialog.cpp" line="59"/>
++        <location filename="../../../plugins/system/about/statusdialog.cpp" line="60"/>
+         <source>Activation Code</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -3033,208 +2977,208 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>Theme</name>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="111"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="534"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="108"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="539"/>
+         <source>Theme</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="182"/>
+         <source>Light</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
+         <source>Dark</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
+         <source>Default</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="190"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
+         <source>Auto</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="215"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="214"/>
+         <source>Effect setting</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Theme/Effect setting</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="220"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="219"/>
+         <source>Performance mode</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Theme/Performance mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="222"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="221"/>
+         <source>Transparency</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Theme/Transparency</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="224"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="223"/>
+         <source>Corner</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Theme/Corner</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="229"/>
+         <source>Right angle</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
+         <source>Small</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="232"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
+         <source>Big</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="248"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="247"/>
+         <source>Window Theme</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Theme/Window Theme</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="250"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="249"/>
+         <source>Icon theme</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Theme/Icon theme</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="253"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="252"/>
+         <source>Cursor theme</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Theme/Cursor theme</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="423"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="426"/>
+         <source>Corlor</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Theme/Corlor</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="608"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="614"/>
+         <source>Other</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Theme/Other</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="611"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
+         <source>Wallpaper</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Theme/Wallpaper</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="613"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="619"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="623"/>
+         <source>Set</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="615"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="621"/>
+         <source>Beep</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Theme/Beep</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="963"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="972"/>
+         <source>Blue-Crystal</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="965"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="974"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1058"/>
+         <source>Light-Seeking</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="967"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="976"/>
+         <source>DMZ-Black</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="969"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="978"/>
+         <source>DMZ-White</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="971"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="980"/>
+         <source>Dark-Sense</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1045"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1054"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1058"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1064"/>
+         <source>basic</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1056"/>
+         <source>classic</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1056"/>
+         <source>Classic</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1051"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1060"/>
+         <source>HeYin</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1053"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1062"/>
+         <source>hp</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1064"/>
+         <source>ukui</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1057"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1066"/>
+         <source>daybreakBlue</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1059"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1068"/>
+         <source>jamPurple</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1061"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1070"/>
+         <source>magenta</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1063"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1072"/>
+         <source>sunRed</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1065"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1074"/>
+         <source>sunsetOrange</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1067"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1076"/>
+         <source>dustGold</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1069"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1078"/>
+         <source>polarGreen</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -3242,27 +3186,27 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>TimeBtn</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="106"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="107"/>
+         <source>Tomorrow</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="108"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="109"/>
+         <source>Yesterday</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="110"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="111"/>
+         <source>Today</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="128"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="129"/>
+         <source>%1 hours earlier than local</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="130"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="131"/>
+         <source>%1 hours later than local</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -3270,27 +3214,27 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>TimeZoneChooser</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="35"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="34"/>
+         <source>Cancel</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="37"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="36"/>
+         <source>Confirm</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="40"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="39"/>
+         <source>Change Timezone</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="33"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="32"/>
+         <source>Search Timezone</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="64"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="63"/>
+         <source>To select a time zone, please click where near you on the map and select a city from the nearest city</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -3303,19 +3247,19 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="37"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="38"/>
+         <source>Yinhe Kylin OS(Trail Version) Disclaimer</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="46"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="47"/>
+         <source>Dear customer:
+        Thank you for trying Yinhe Kylin OS(trail version)! This version is free for users who only try out, no commercial purpose is permitted. The trail period lasts one year and it starts from the ex-warehouse time of the OS. No after-sales service is provided during the trail stage. If any security problems occurred when user put important files or do any commercial usage in system, all consequences are taken by users. Kylin software Co., Ltd. take no legal risk in trail version.
+        During trail stage,if you want any technology surpport or activate the system, please buy“Yinhe Kylin Operating System”official version or authorization by contacting 400-089-1870.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="60"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="61"/>
+         <source>Kylin software Co., Ltd.</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -3403,14 +3347,14 @@ you can restore them to ensure the integrity of your system.</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="309"/>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="207"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="206"/>
+         <source>Password</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Userinfo/Password</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="331"/>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="213"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="212"/>
+         <source>Type</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Userinfo/Type</extra-contents_path>
+@@ -3436,98 +3380,98 @@ you can restore them to ensure the integrity of your system.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="171"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="170"/>
+         <source>CurrentUser</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Userinfo/CurrentUser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="177"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="176"/>
+         <source>OthersUser</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Userinfo/OthersUser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="179"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="178"/>
+         <source>Add</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Userinfo/Add</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="219"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="218"/>
+         <source>Groups</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Userinfo/Groups</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="266"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="265"/>
+         <source>LoginWithoutPwd</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Userinfo/LoginWithoutPwd</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="271"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="270"/>
+         <source>AutoLoginOnBoot</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Userinfo/AutoLoginOnBoot</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="540"/>
+         <source>Warning</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="540"/>
+         <source>The user is logged in, please delete the user after logging out</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="913"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="911"/>
+         <source>The account type of “%1” has been modified, will take effect after logout, whether to logout?</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="914"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="912"/>
+         <source>logout later</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="915"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="913"/>
+         <source>logout now</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1013"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1011"/>
+         <source>Hint</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1014"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1012"/>
+         <source>The system only allows one user to log in automatically.After it is turned on, the automatic login of other users will be turned off.Is it turned on?</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1017"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1015"/>
+         <source>Trun on</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1018"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1016"/>
+         <source>Close on</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1041"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1039"/>
+         <source>Standard</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1043"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1041"/>
+         <source>Admin</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1045"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1043"/>
+         <source>root</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -3571,90 +3515,90 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>Wallpaper</name>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="31"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="48"/>
+         <source>Background</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="156"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="195"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="214"/>
+         <source>picture</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="153"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="195"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="211"/>
+         <source>color</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="165"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="223"/>
+         <source>scaled</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="167"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="225"/>
+         <source>wallpaper</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="169"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="227"/>
+         <source>centered</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="171"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="229"/>
+         <source>stretched</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="173"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="231"/>
+         <source>zoom</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="175"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="233"/>
+         <source>spanned</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="219"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="277"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="259"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="317"/>
+         <source>select custom wallpaper file</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="260"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="318"/>
+         <source>Select</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="261"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="319"/>
+         <source>Position: </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="262"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="320"/>
+         <source>FileName: </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="263"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="321"/>
+         <source>FileType: </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="264"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="322"/>
+         <source>Cancel</source>
+         <translation type="unfinished"></translation>
+     </message>
+@@ -3662,37 +3606,37 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>WallpaperUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="28"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="29"/>
+         <source>Background</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Wallpaper/Background</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="30"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="31"/>
+         <source>Type</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Wallpaper/Type</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="66"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="67"/>
+         <source>Desktop Background</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Wallpaper/Desktop Background</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="93"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="94"/>
+         <source>Local Pictures</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Wallpaper/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="95"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="96"/>
+         <source>Online Pictures</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Wallpaper/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="97"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="98"/>
+         <source>Reset To Default</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Wallpaper/Reset To Default</extra-contents_path>
+@@ -3701,251 +3645,251 @@ you can restore them to ensure the integrity of your system.</source>
+ <context>
+     <name>Widget</name>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1987"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2013"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="299"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2046"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2072"/>
+         <source>Open</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="299"/>
+         <source>When turned on, it will reduce the blue light of the screen.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="291"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="312"/>
+         <source>Time</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="301"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="322"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2132"/>
+         <source>Custom Time</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="312"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="333"/>
+         <source>to</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="285"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="330"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="306"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="351"/>
+         <source>Color Temperature</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Display/Color Temperature</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="283"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="304"/>
+         <source>Color Temperature And Eye Care</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Display/Color Temperature And Eye Care</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="332"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="353"/>
+         <source>Warmer</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="333"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="354"/>
+         <source>Colder</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="611"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="632"/>
+         <source>Multi-screen</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="616"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="637"/>
+         <source>First Screen</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="617"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="638"/>
+         <source>Vice Screen</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="619"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="640"/>
+         <source>Extend Screen</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="620"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="641"/>
+         <source>Clone Screen</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="622"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2639"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="643"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2739"/>
+         <source>Splice Screen</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2745"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2845"/>
+         <source>Auto Brightness</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Display/Auto Brightness</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="777"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="805"/>
+         <source>Not Save</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="267"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="288"/>
+         <source>Night Mode</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Display/Night Mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="293"/>
+         <source>When turned on, it can reduce blue light to prevent eye, the screen will turn yellow.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="293"/>
+         <source>Eye Protection Mode</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Display/Eye protection mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="778"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="806"/>
+         <source>Save</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="784"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="813"/>
+         <source>resolution</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="787"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="816"/>
+         <source>orientation</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="790"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="819"/>
+         <source>frequency</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="793"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="822"/>
+         <source>scale</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="798"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="827"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after 14 seconds&lt;/font&gt;</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="809"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="838"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after %2 seconds&lt;/font&gt;</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1023"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1069"/>
+         <source>The zoom has been modified, it will take effect after you log off</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1024"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1070"/>
+         <source>Log out now</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1025"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1071"/>
+         <source>Later</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1042"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1052"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1088"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1098"/>
+         <source>(Effective after logout)</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1496"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1546"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1553"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1846"/>
+         <source>Warning</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1546"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1846"/>
+         <source>please insure at least one output!</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1497"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1554"/>
+         <source>Sorry, your configuration could not be applied.
+ Common reasons are that the overall screen size is too big, or you enabled more displays than supported by your GPU.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1986"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2045"/>
+         <source>Turning on &apos;Eye Protection Mode&apos; will turn off &apos;Color Temperature&apos;. Continue turning it on?</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1988"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2014"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2047"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
+         <source>Cancel</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2012"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2071"/>
+         <source>Turning on &apos;Color Temperature&apos; will turn off &apos;Eye Protection Mode&apos;. Continue turning it on?</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2132"/>
+         <source>All Day</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2253"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2259"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2316"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2322"/>
+         <source>Follow the sunrise and sunset</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2284"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2290"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2347"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2353"/>
+         <source>Brightness</source>
+         <translation type="unfinished"></translation>
+         <extra-contents_path>/Display/Brightness</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2702"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2802"/>
+         <source>Splicing Method</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2705"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2805"/>
+         <source>Change</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2773"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2873"/>
+         <source>monitor</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2774"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2874"/>
+         <source>as main</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2782"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2882"/>
+         <source>screen zoom</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2795"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2895"/>
+         <source>open monitor</source>
+         <translation type="unfinished"></translation>
+     </message>
+diff --git a/shell/res/i18n/mn.ts b/shell/res/i18n/mn.ts
+index 950d3d8..2ae559d 100644
+--- a/shell/res/i18n/mn.ts
++++ b/shell/res/i18n/mn.ts
+@@ -16,12 +16,12 @@
+         <translation type="vanished">ᠬᠡᠪᠯᠡᠯ ᠤ᠋ᠨ ᠳ᠋ᠤᠭᠠᠷ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="547"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="548"/>
+         <source>Status</source>
+         <translation>ᠰᠢᠰᠲ᠋ᠧᠮ ᠤ᠋ᠨ ᠪᠠᠢᠳᠠᠯ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="224"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="225"/>
+         <source>DateRes</source>
+         <translation>ᠦᠢᠯᠡᠴᠢᠯᠡᠬᠡᠨ ᠤ᠋ ᠬᠤᠭᠤᠴᠠᠭ᠎ᠠ ᠳᠠᠭᠤᠰᠬᠤ ᠴᠠᠭ</translation>
+     </message>
+@@ -42,7 +42,7 @@
+         <translation type="vanished">&lt;&lt; ᠳᠤᠷᠰᠢᠨ ᠬᠡᠷᠡᠭᠯᠡᠬᠦ ᠬᠠᠷᠢᠭᠤᠴᠠᠯᠭ᠎ᠠ ᠡᠴᠡ ᠬᠡᠯᠳᠦᠷᠢᠬᠦᠯᠬᠦ ᠭᠡᠷ᠎ᠡ &gt;&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="56"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="57"/>
+         <source>About and Support</source>
+         <translation>ᠲᠤᠬᠠᠢ ᠬᠢᠬᠡᠳ ᠳᠡᠮᠵᠢᠬᠦ</translation>
+     </message>
+@@ -95,29 +95,29 @@
+         <translation type="vanished">未激活(试用期)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="229"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="230"/>
+         <source>Trial expiration time</source>
+         <translation>ᠳᠤᠷᠰᠢᠨ ᠬᠡᠷᠡᠭᠯᠡᠬᠦ ᠬᠤᠭᠤᠴᠠᠭ᠎ᠠ ᠳᠤᠯᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="279"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="280"/>
+         <source>Kylin Linux Desktop (Touch Screen) V10 (SP1)</source>
+         <translation>ᠶᠢᠨ ᠾᠧ ᠪᠢᠯᠢᠭᠲᠦ ᠭᠥᠷᠥᠭᠡᠰᠦ᠎ᠶ᠋ᠢᠨ ᠰᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ᠎ᠤ᠋ᠨ ᠠᠵᠢᠯᠯᠠᠭᠤᠯᠬᠤ ᠰᠢᠰᠲ᠋ᠧᠮ( ᠲᠣᠮᠣ ᠳᠡᠯᠭᠡᠴᠡ᠎ᠲᠡᠢ ᠬᠡᠪᠯᠡᠯ) V10 (᠎SP1 )</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="281"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="282"/>
+         <source>Kylin Linux Desktop (Tablet) V10 (SP1)</source>
+         <translation>ᠶᠢᠨ ᠾᠧ ᠪᠢᠯᠢᠭᠲᠦ ᠭᠥᠷᠥᠭᠡᠰᠦ᠎ᠶ᠋ᠢᠨ ᠰᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ᠎ᠤ᠋ᠨ ᠠᠵᠢᠯᠯᠠᠭᠤᠯᠬᠤ ᠰᠢᠰᠲ᠋ᠧᠮ(ᠬᠠᠪᠲᠠᠭᠠᠢ ᠬᠡᠪᠯᠡᠯ) V10 (᠎SP1 )</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="457"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="553"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="458"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="554"/>
+         <source>expired</source>
+         <translation>ᠬᠤᠭᠤᠴᠠᠭ᠎ᠠ ᠦᠩᠬᠡᠷᠡᠪᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="244"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="458"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="245"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="459"/>
+         <source>Extend</source>
+         <translation>ᠦᠢᠯᠡᠴᠢᠯᠡᠬᠡ ᠵᠢ ᠤᠷᠳᠤᠳᠬᠠᠬᠤ</translation>
+     </message>
+@@ -126,17 +126,17 @@
+         <translation type="vanished">ᠪᠦᠬᠦᠢᠯᠡ ᠬᠡᠪᠯᠡᠯ᠎ᠦ᠋ᠨ ᠡᠷᠬᠡ © 2020 ᠴᠢ ᠯᠢᠨ ᠰᠤᠹᠲ ᠲᠤ᠌ ᠬᠠᠷᠢᠶᠠᠯᠠᠭᠳᠠᠨ᠎ᠠ᠂ ᠪᠦᠬᠦ ᠡᠷᠬᠡ ᠵᠢ ᠦᠯᠡᠳᠡᠬᠡᠨ᠎ᠡ᠃</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="518"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="519"/>
+         <source>The system needs to be restarted to set the HostName, whether to reboot</source>
+         <translation>ᠺᠣᠮᠫᠢᠦ᠋ᠲ᠋ᠧᠷ ᠤ᠋ᠨ ᠨᠡᠷ᠎ᠡ ᠨᠢᠭᠡᠨᠳᠡ ᠵᠠᠰᠠᠭᠳᠠᠪᠠ᠂ ᠰᠢᠰᠲ᠋ᠧᠮ ᠢ᠋ ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠬᠦᠯᠦᠭᠰᠡᠨ ᠤ᠋ ᠳᠠᠷᠠᠭ᠎ᠠ ᠰᠠᠶᠢ ᠬᠡᠪ ᠤ᠋ᠨ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠪᠣᠯᠤᠨ᠎ᠠ᠃ ᠰᠢᠰᠲ᠋ᠧᠮ ᠢ᠋ ᠳᠠᠷᠤᠢ ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠬᠦᠯᠬᠦ ᠵᠢ ᠵᠦᠪᠯᠡᠵᠤ ᠪᠠᠢᠨ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="519"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="520"/>
+         <source>Reboot Now</source>
+         <translation>ᠳᠠᠷᠤᠢ ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠬᠦᠯᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="520"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="521"/>
+         <source>Reboot Later</source>
+         <translation>ᠤᠳᠠᠰᠬᠢᠭᠠᠳ ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠬᠦᠯᠬᠦ</translation>
+     </message>
+@@ -149,8 +149,8 @@
+         <translation type="vanished">延长服务</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="401"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="410"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="402"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="411"/>
+         <source>avaliable</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠪᠣᠯᠬᠤ</translation>
+     </message>
+@@ -167,12 +167,12 @@
+         <translation type="vanished">版权所有2009-2021@kylinos保留所有权利</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="545"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="546"/>
+         <source>Version</source>
+         <translation>ᠬᠡᠪᠯᠡᠯ ᠤ᠋ᠨ ᠨᠡᠷᠡᠢᠳᠦᠯ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="287"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="288"/>
+         <source>Kylin Linux Desktop V10 (SP1)</source>
+         <translation>ᠳᠡᠭᠷᠢ ᠵᠢᠨ ᠤᠶᠤᠳᠠᠯ ᠴᠢ ᠯᠢᠨ ᠰᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ ᠤ᠋ᠨ ᠠᠵᠢᠯᠯᠬᠠᠤᠢ ᠵᠢᠨ ᠰᠢᠰᠲ᠋ᠧᠮ V10 (SP1)</translation>
+     </message>
+@@ -200,7 +200,7 @@
+         <extra-contents_path>/About/Memory</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="408"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="409"/>
+         <source>Disk</source>
+         <translation>ᠳ᠋ᠢᠰᠺ</translation>
+     </message>
+@@ -223,7 +223,7 @@
+         <translation type="vanished">有效期</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="549"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="550"/>
+         <source>Serial</source>
+         <translation>ᠴᠤᠪᠤᠷᠠᠯ ᠤ᠋ᠨ ᠨᠤᠮᠸᠷ</translation>
+     </message>
+@@ -236,8 +236,8 @@
+         <translation type="vanished">序列号</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="231"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="235"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="232"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="236"/>
+         <source>Active</source>
+         <translation>ᠨᠢᠭᠡᠨᠳᠡ ᠡᠬᠢᠯᠡᠬᠦᠯᠪᠡ</translation>
+     </message>
+@@ -254,7 +254,7 @@
+         <translation type="vanished">关于</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="58"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="59"/>
+         <source>About</source>
+         <translation>ᠲᠤᠬᠠᠢ</translation>
+     </message>
+@@ -271,13 +271,13 @@
+         <translation type="vanished">可用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="227"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="233"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="228"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="234"/>
+         <source>Inactivated</source>
+         <translation>ᠢᠳᠡᠪᠬᠢᠵᠢᠬᠦᠯᠦᠬᠡ ᠥᠬᠡᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="243"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="244"/>
+         <source>Activated</source>
+         <translation>ᠢᠳᠡᠪᠬᠢᠵᠢᠬᠦᠯᠪᠡ</translation>
+     </message>
+@@ -321,7 +321,7 @@
+ <context>
+     <name>AboutInterface</name>
+     <message>
+-        <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="233"/>
++        <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="238"/>
+         <source>avaliable</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠪᠣᠯᠬᠤ</translation>
+     </message>
+@@ -329,97 +329,96 @@
+ <context>
+     <name>AboutUi</name>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="32"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="33"/>
+         <source>System Summary</source>
+         <translation>ᠰᠢᠰᠲ᠋ᠧᠮ ᠤ᠋ᠨ ᠳᠤᠢᠮᠤ</translation>
+         <extra-contents_path>/About/System Summary</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="35"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="37"/>
+         <source>Privacy and agreement</source>
+         <translation>ᠨᠢᠭᠤᠴᠠ ᠬᠢᠬᠡᠳ ᠭᠡᠷ᠎ᠡ</translation>
+         <extra-contents_path>/About/Privacy and agreement</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="37"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="40"/>
+         <source>Support</source>
+         <translation>ᠳᠡᠮᠵᠢᠬᠦ / ᠳᠤᠰᠠᠯᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="51"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="381"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="55"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="399"/>
+         <source>Version</source>
+         <translation>ᠬᠡᠪᠯᠡᠯ ᠤ᠋ᠨ ᠨᠡᠷᠡᠢᠳᠦᠯ</translation>
+         <extra-contents_path>/About/version</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="56"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="61"/>
+         <source>Version Number</source>
+         <translation>ᠬᠡᠪᠯᠡᠯ ᠤ᠋ᠨ ᠳ᠋ᠤᠭᠠᠷ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="61"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="67"/>
+         <source>Patch Version</source>
+         <translation>ᠰᠢᠰᠲ᠋ᠧᠮ ᠤ᠋ᠨ ᠨᠦᠬᠦᠬᠡᠰᠦ ᠵᠢᠨ ᠬᠡᠪᠯᠡᠯ ᠤ᠋ᠨ ᠨᠤᠮᠸᠷ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="66"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="73"/>
+         <source>Installed Date</source>
+         <translation>ᠰᠠᠭᠤᠯᠭᠠᠭᠰᠠᠨ ᠡᠳᠦᠷ ᠬᠤᠭᠤᠴᠠᠭ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="71"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="79"/>
+         <source>Upgrade Date</source>
+         <translation>ᠰᠢᠰᠲ᠋ᠧᠮ ᠰᠢᠨᠡᠳᠬᠡᠬᠦ ᠴᠠᠭ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="78"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="87"/>
+         <source>HostName</source>
+         <translation>ᠺᠣᠮᠫᠢᠦ᠋ᠲ᠋ᠧᠷ ᠤ᠋ᠨ ᠨᠡᠷ᠎ᠡ</translation>
+-        <extra-contents_path>/About/HostName</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="90"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="383"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="100"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="401"/>
+         <source>Kernel</source>
+         <translation>ᠳᠤᠳᠤᠭᠠᠳᠤ ᠴᠦᠮ᠎ᠡ</translation>
+         <extra-contents_path>/About/Kernel</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="95"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="385"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="106"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="403"/>
+         <source>CPU</source>
+         <translation>CPU</translation>
+         <extra-contents_path>/About/CPU</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="100"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="387"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="112"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="405"/>
+         <source>Memory</source>
+         <translation>ᠳᠤᠳᠤᠭᠠᠳᠤ ᠬᠠᠳᠠᠭᠠᠯᠠᠭᠤᠷ</translation>
+         <extra-contents_path>/About/Memory</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="105"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="118"/>
+         <source>Disk</source>
+         <translation>ᠳ᠋ᠢᠰᠺ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="110"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="389"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="124"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="407"/>
+         <source>Desktop</source>
+         <translation>ᠰᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ</translation>
+         <extra-contents_path>/About/Desktop</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="115"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="391"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="130"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="409"/>
+         <source>User</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷ᠎ᠡ</translation>
+         <extra-contents_path>/About/User</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="123"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="139"/>
+         <source>Copyright ©%1 %2. All rights reserved.</source>
+         <translation>ᠬᠡᠪᠯᠡᠯ ᠦᠨ ᠡᠷᠬᠡ ᠶᠢᠨ ᠥᠮᠴᠢᠯᠡᠯ ᠦᠨ ©%1 %2 ᠬᠢ ᠡᠴᠡ ᠃ ᠥᠮᠴᠢᠯᠡᠬᠦ ᠡᠷᠬᠡ ᠶᠢ ᠦᠯᠡᠳᠡᠭᠡᠨ᠎ᠡ ᠃</translation>
+     </message>
+@@ -428,12 +427,12 @@
+         <translation type="vanished">ᠬᠡᠪᠯᠡᠯ ᠦᠨ ᠡᠷᠬᠡ ᠶᠢᠨ ᠥᠮᠴᠢᠯᠡᠯ ᠦᠨ © ᠬᠢ ᠡᠴᠡ 1% 2 ᠃ ᠥᠮᠴᠢᠯᠡᠬᠦ ᠡᠷᠬᠡ ᠶᠢ ᠦᠯᠡᠳᠡᠭᠡᠨ᠎ᠡ ᠃</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="172"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="188"/>
+         <source>openKylin</source>
+         <translation>ᠾᠧ ᠯᠢᠨ ᠢ ᠨᠡᠭᠡᠭᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="169"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="185"/>
+         <source>KylinSoft</source>
+         <translation>ᠵᠢᠢ ᠯᠢᠨ ᠵᠥᠭᠡᠯᠡᠨ ᠲᠣᠨᠣᠭ</translation>
+     </message>
+@@ -442,67 +441,66 @@
+         <translation type="vanished">ᠬᠡᠪᠯᠡᠯ ᠦᠨ ᠡᠷᠬᠡ ᠶᠢᠨ ᠥᠮᠴᠢᠯᠡᠯ ᠦᠨ © ᠬᠢ ᠡᠴᠡ %1 ᠃ ᠥᠮᠴᠢᠯᠡᠬᠦ ᠡᠷᠬᠡ ᠶᠢ ᠦᠯᠡᠳᠡᠭᠡᠨ᠎ᠡ ᠃</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="235"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="251"/>
+         <source>Wechat code scanning obtains HP professional technical support</source>
+         <translation>ᠸᠢᠴᠠᠲ ᠵᠢᠡᠷ ᠰᠢᠷᠪᠢᠵᠤ HP ᠳᠤᠰᠬᠠᠢ ᠮᠡᠷᠭᠡᠵᠢᠯ ᠤ᠋ᠨ ᠳᠡᠮᠵᠢᠯᠭᠡ ᠬᠦᠷᠳᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="236"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="252"/>
+         <source>See more about Kylin Tianqi edu platform</source>
+         <translation>ᠴᠢ ᠯᠢᠨ ᠲᠢᠶᠠᠨ ᠴᠢ ᠰᠤᠷᠭᠠᠨ ᠬᠥᠮᠦᠵᠢᠯ ᠤ᠋ᠨ ᠳᠠᠪᠴᠠᠩ ᠡᠴᠡ ᠨᠡᠩ ᠣᠯᠠᠨ ᠰᠤᠷᠠᠭ ᠵᠠᠩᠬᠢ ᠵᠢ ᠣᠯᠵᠤ ᠦᠵᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="256"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="272"/>
+         <source>Learn more HP user manual&gt;&gt;</source>
+         <translation>ᠨᠡᠩ ᠣᠯᠠᠨ HP ᠢ᠋/ ᠵᠢ ᠤᠢᠯᠠᠭᠠᠬᠤ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠭᠠᠷ ᠤ᠋ᠨ ᠠᠪᠤᠯᠭ᠎ᠠ&gt;&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="261"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="277"/>
+         <source>See user manual&gt;&gt;</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠭᠠᠷ ᠤ᠋ᠨ ᠠᠪᠤᠯᠭ᠎ᠠ ᠵᠢ ᠪᠠᠢᠴᠠᠭᠠᠵᠤ ᠦᠵᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="339"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="356"/>
+         <source>Send optional diagnostic data</source>
+         <translation>ᠰᠣᠩᠭᠣᠵᠤ ᠪᠣᠯᠬᠤ ᠤᠨᠤᠰᠢᠯᠠᠭᠠᠨ ᠤ᠋ ᠳ᠋ᠠᠢᠲ᠋ᠠ ᠵᠢ ᠢᠯᠡᠬᠡᠬᠦ</translation>
+-        <extra-contents_path>/About/Send optional diagnostic data</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="340"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="357"/>
+         <source>By sending us diagnostic data, improve the system experience and solve your problems faster</source>
+         <translation>ᠪᠢᠳᠡᠨ ᠳ᠋ᠤ᠌ ᠣᠨᠣᠰᠢᠯᠠᠬᠤ ᠳ᠋ᠠᠢᠲ᠋ᠠ ᠢᠯᠡᠬᠡᠬᠦ ᠪᠡᠷ ᠳᠠᠮᠵᠢᠭᠤᠯᠤᠨ ᠰᠢᠰᠲ᠋ᠧᠮ ᠤ᠋ᠨ ᠮᠡᠳᠡᠷᠡᠮᠵᠢ ᠵᠢ ᠳᠡᠭᠡᠭᠰᠢᠯᠡᠬᠦᠯᠵᠤ᠂ ᠲᠠᠨ ᠤ᠋ ᠠᠰᠠᠭᠤᠳᠠᠯ ᠢ᠋ ᠨᠡᠩ ᠳᠦᠷᠭᠡᠨ ᠰᠢᠢᠳᠪᠦᠷᠢᠯᠡᠵᠤ ᠪᠣᠯᠤᠨ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="363"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="380"/>
+         <source>&lt;&lt;Protocol&gt;&gt;</source>
+         <translation>&lt;&lt; ᠳᠤᠷᠰᠢᠨ ᠬᠡᠷᠡᠭᠯᠡᠬᠦ ᠬᠠᠷᠢᠭᠤᠴᠠᠯᠭ᠎ᠠ ᠡᠴᠡ ᠬᠡᠯᠳᠦᠷᠢᠬᠦᠯᠬᠦ ᠭᠡᠷ᠎ᠡ &gt;&gt;</translation>
+         <extra-contents_path>/About/&lt;&lt;Protocol&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="364"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="382"/>
+         <source>and</source>
+         <translation>ᠪᠤᠯᠤᠨ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="366"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="384"/>
+         <source>&lt;&lt;Privacy&gt;&gt;</source>
+         <translation>&lt;&lt; ᠬᠡᠷᠡᠭᠡᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠢᠭᠤᠴᠠ ᠵᠢ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠭᠡᠷ᠎ᠡ&gt;&gt;</translation>
+         <extra-contents_path>/About/&lt;&lt;Privacy&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="393"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="411"/>
+         <source>Status</source>
+         <translation>ᠰᠢᠰᠲ᠋ᠧᠮ ᠤ᠋ᠨ ᠪᠠᠢᠳᠠᠯ</translation>
+         <extra-contents_path>/About/Status</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="395"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="413"/>
+         <source>Active</source>
+         <translation>ᠨᠢᠭᠡᠨᠳᠡ ᠡᠬᠢᠯᠡᠬᠦᠯᠪᠡ</translation>
+         <extra-contents_path>/About/Active</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="397"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="415"/>
+         <source>Serial</source>
+         <translation>ᠴᠤᠪᠤᠷᠠᠯ ᠤ᠋ᠨ ᠨᠤᠮᠸᠷ</translation>
+         <extra-contents_path>/About/Serial</extra-contents_path>
+@@ -725,7 +723,7 @@
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="348"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="266"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
+         <source>Cancel</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+@@ -735,65 +733,65 @@
+         <translation>ᠰᠢᠷᠪᠢᠭᠡᠳ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="73"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="72"/>
+         <source>Add Shortcut</source>
+         <translation>ᠳᠦᠳᠡ ᠳᠠᠷᠤᠪᠴᠢ ᠨᠡᠮᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="86"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="85"/>
+         <source>Please enter a shortcut</source>
+         <translation>ᠳᠦᠳᠡ ᠳᠠᠷᠤᠪᠴᠢ ᠣᠷᠣᠭᠤᠯᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="224"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="223"/>
+         <source>Desktop files(*.desktop)</source>
+         <translation>ᠰᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ ᠤ᠋ᠨ ᠹᠠᠢᠯ (*.desktop)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="264"/>
+         <source>select desktop</source>
+         <translation>ᠰᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ ᠢ᠋ ᠰᠣᠩᠭᠣᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="302"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="323"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="334"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="301"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="322"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="333"/>
+         <source>Invalid application</source>
+         <translation>ᠲᠤᠰ ᠬᠡᠷᠡᠭᠯᠡᠭᠡ ᠵᠢ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠪᠣᠯᠬᠤ ᠥᠬᠡᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="304"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="319"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="330"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="303"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="318"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="329"/>
+         <source>Shortcut conflict</source>
+         <translation>ᠲᠤᠰ ᠳᠦᠳᠡ ᠳᠠᠷᠤᠪᠴᠢ ᠵᠢᠨ ᠬᠠᠮᠰᠠᠯ ᠨᠢᠭᠡᠨᠳᠡ ᠡᠵᠡᠯᠡᠭᠳᠡᠪᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="306"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="321"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="332"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="305"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="320"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="331"/>
+         <source>Invalid shortcut</source>
+         <translation>ᠲᠤᠰ ᠳᠦᠳᠡ ᠳᠠᠷᠤᠪᠴᠢ ᠵᠢᠨ ᠬᠠᠮᠰᠠᠯ ᠢ᠋ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠪᠣᠯᠬᠤ ᠥᠬᠡᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="309"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="316"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="337"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="308"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="315"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="336"/>
+         <source>Name repetition</source>
+         <translation>ᠲᠤᠰ ᠳᠦᠳᠡ ᠳᠠᠷᠤᠪᠴᠢ ᠵᠢᠨ ᠨᠠᠷᠡᠢᠳᠦᠯ ᠳᠠᠪᠬᠤᠴᠠᠪᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="343"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="342"/>
+         <source>Unknown error</source>
+         <translation>ᠠᠯᠳᠠᠭ᠎ᠠ ᠪᠤᠷᠤᠭᠤ ᠪᠠᠨ ᠮᠡᠳᠡᠨ᠎ᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="522"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="521"/>
+         <source>Shortcut cannot be empty</source>
+         <translation>ᠳᠦᠳᠡ ᠳᠠᠷᠤᠪᠴᠢ ᠬᠣᠭᠣᠰᠣᠨ ᠪᠠᠢᠵᠤ ᠪᠣᠯᠬᠤ ᠥᠬᠡᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="526"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="525"/>
+         <source>Name cannot be empty</source>
+         <translation>ᠨᠡᠷᠡᠢᠳᠦᠯ ᠬᠣᠭᠣᠰᠣᠨ ᠪᠠᠢᠵᠤ ᠪᠣᠯᠬᠤ ᠥᠬᠡᠢ</translation>
+     </message>
+@@ -1090,17 +1088,17 @@
+         <extra-contents_path>/Area/system language</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="639"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="642"/>
+         <source>Simplified Chinese</source>
+         <translation>ᠳᠦᠬᠦᠮᠴᠢᠯᠡᠭᠰᠡᠨ ᠬᠢᠳᠠᠳ ᠬᠡᠯᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="366"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="368"/>
+         <source>MMMM dd, yyyy</source>
+         <translation>yyyy ᠣᠨ᠎ᠤ᠋ MM ᠰᠠᠷ᠎ᠠ ᠵᠢᠨ d d ᠤ᠋ ᠡᠳᠦᠷ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="369"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="371"/>
+         <source>MMMM d, yy</source>
+         <translation>yy ᠤᠨ ᠤ᠋ M ᠰᠠᠷ᠎ᠠ ᠵᠢᠨ d ᠤ᠋ ᠡᠳᠦᠷ</translation>
+     </message>
+@@ -1161,66 +1159,86 @@
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="215"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="302"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="209"/>
++        <source>Arab  (AE)</source>
++        <translation>ᠠᠷᠠᠪ ᠸᠧᠨ ( ᠠᠷᠠᠪ )</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="210"/>
++        <source>Vietnam  (VN)</source>
++        <translation>ᠸᠢᠶᠧᠲ᠋ᠨᠠᠮ ᠤᠨ ᠬᠡᠯᠡ ( ᠸᠢᠶᠧᠲ᠋ᠨᠠᠮ )</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="217"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="304"/>
+         <source>Solar calendar</source>
+         <translation>ᠨᠠᠷᠠᠰᠤᠨ ᠤ ᠥᠩᠭᠡᠷᠡᠯᠲᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="221"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="223"/>
+         <source>Monday</source>
+         <translation>ᠭᠠᠷᠠᠭ᠎ᠤ᠋ᠨ ᠨᠢᠭᠡᠨ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="222"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="224"/>
+         <source>Sunday</source>
+         <translation>ᠭᠠᠷᠠᠭ᠎ᠤ᠋ᠨ ᠡᠳᠦᠷ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="643"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="646"/>
+         <source>Tibetan</source>
+         <translation>ᠲᠦᠪᠡᠳ ᠬᠡᠯᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="645"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="648"/>
+         <source>Kazaqa</source>
+         <translation>ᠺᠡᠽᠠᠬᠰᠲ᠋ᠠᠨ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="647"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="650"/>
+         <source>Uygur</source>
+         <translation>ᠤᠢᠭᠤᠷ ᠦᠨᠳᠦᠰᠦᠲᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="649"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="652"/>
+         <source>Kirghiz</source>
+         <translation>ᠻᠢᠷᠭᠢᠽ ᠬᠡᠯᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="651"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="654"/>
+         <source>Traditional Chinese</source>
+         <translation>ᠤᠤᠯ ᠬᠢᠳᠠᠳ ᠦᠰᠦᠭ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="653"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="656"/>
+         <source>Mongolian</source>
+         <translation>ᠮᠣᠩᠭ᠋ᠣᠯ ᠬᠡᠯᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="655"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="658"/>
+         <source>German</source>
+         <translation>ᠭᠧᠷᠮᠠᠨ ᠬᠡᠯᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="657"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="660"/>
+         <source>Spanish</source>
+         <translation>ᠢᠰᠫᠠᠨᠢ ᠬᠡᠯᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="659"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="662"/>
+         <source>French</source>
+         <translation>ᠹᠷᠠᠨᠼ ᠬᠡᠯᠡ</translation>
+     </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="664"/>
++        <source>Arab</source>
++        <translation>ᠠᠷᠠᠪ ᠬᠡᠯᠡ</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="666"/>
++        <source>Vietnam</source>
++        <translation>ᠸᠢᠧᠲ᠋ᠨᠠᠮ ᠬᠡᠯᠡ</translation>
++    </message>
+     <message>
+         <source>First Day Of Week</source>
+         <translation type="vanished">ᠨᠢᠭᠡ ᠭᠠᠷᠠᠭ ᠤ᠋ᠨ ᠨᠢᠭᠡᠳᠦᠭᠡᠷ ᠡᠳᠦᠷ</translation>
+@@ -1231,19 +1249,19 @@
+         <translation type="vanished">ᠠᠷᠭ᠎ᠠ ᠵᠢᠨ ᠤᠯᠠᠷᠢᠯ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="216"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="218"/>
+         <source>Lunar</source>
+         <translation>ᠪᠢᠯᠢᠭ ᠤ᠋ᠨ ᠤᠯᠠᠷᠢᠯ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="233"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="384"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="235"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="386"/>
+         <source>12 Hours</source>
+         <translation>12 ᠴᠠᠭ ᠤ᠋ᠨ ᠳᠦᠷᠢᠮ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="234"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="385"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="236"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="387"/>
+         <source>24 Hours</source>
+         <translation>24 ᠴᠠᠭ ᠤ᠋ᠨ ᠳᠦᠷᠢᠮ</translation>
+     </message>
+@@ -1264,32 +1282,32 @@
+         <translation type="vanished">ᠰᠦᠯᠵᠢᠶᠡᠨ ᠤ᠋ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="672"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="679"/>
+         <source>Modify the current region need to logout to take effect, whether to logout?</source>
+         <translation>ᠣᠳᠣᠬᠠᠨ ᠤ᠋ ᠬᠡᠰᠡᠭ ᠢ᠋ ᠵᠠᠰᠠᠪᠠᠯ ᠳᠠᠩᠰᠠᠨ ᠡᠴᠡ ᠬᠠᠰᠤᠭᠰᠠᠨ ᠤ᠋ ᠳᠠᠷᠠᠭ᠎ᠠ ᠬᠦᠴᠦᠨ ᠲᠠᠢ ᠪᠣᠯᠤᠨ᠎ᠠ᠂ ᠳᠠᠩᠰᠠᠨ ᠡᠴᠡ ᠬᠠᠰᠤᠬᠤ ᠤᠤ ?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="673"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="680"/>
+         <source>Logout later</source>
+         <translation>ᠤᠳᠠᠰᠬᠢᠭᠠᠳ ᠳᠠᠩᠰᠠᠨ ᠡᠴᠡ ᠬᠠᠰᠤᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="674"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="681"/>
+         <source>Logout now</source>
+         <translation>ᠳᠠᠷᠤᠢ ᠳᠠᠩᠰᠠᠨ ᠡᠴᠡ ᠬᠠᠰᠤᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="676"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="683"/>
+         <source>Modify the first language need to reboot to take effect, whether to reboot?</source>
+         <translation>ᠡᠬᠢᠨ ᠤ᠋ ᠦᠭᠡ ᠬᠡᠯᠡ ᠵᠢ ᠵᠠᠰᠠᠪᠠᠯ ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠬᠦᠯᠦᠭᠰᠡᠨ ᠤ᠋ ᠳᠠᠷᠠᠭ᠎ᠠ ᠰᠠᠶᠢ ᠬᠦᠴᠦᠨ ᠲᠠᠢ ᠪᠣᠯᠤᠨ᠎ᠠ᠂ ᠳᠠᠬᠢᠵᠤ ᠡᠬᠢᠯᠡᠬᠦᠯᠬᠦ ᠤᠤ ?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="677"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="684"/>
+         <source>Reboot later</source>
+         <translation>ᠤᠳᠠᠰᠬᠢᠭᠠᠳ ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠬᠦᠯᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="678"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="685"/>
+         <source>Reboot now</source>
+         <translation>ᠳᠠᠷᠤᠢ ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠬᠦᠯᠬᠦ</translation>
+     </message>
+@@ -1350,7 +1368,7 @@
+         <translation type="vanished">区域格式数据</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="641"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="644"/>
+         <source>English</source>
+         <translation>ᠠᠩᠭ᠌ᠯᠢ ᠬᠡᠯᠡ</translation>
+     </message>
+@@ -1389,31 +1407,31 @@
+ <context>
+     <name>AreaUi</name>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="38"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="39"/>
+         <source>Regional Format</source>
+         <translation>ᠬᠡᠰᠡᠭ ᠤ᠋ᠨ ᠬᠡᠯᠪᠡᠷᠢ</translation>
+         <extra-contents_path>/Area/Regional Format</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="40"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="41"/>
+         <source>Calendar</source>
+         <translation>ᠴᠠᠭ ᠤᠯᠠᠷᠢᠯ ᠤ᠋ᠨ ᠪᠢᠴᠢᠭ</translation>
+         <extra-contents_path>/Area/Calendar</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="42"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="43"/>
+         <source>First Day Of Week</source>
+         <translation>ᠨᠢᠭᠡ ᠭᠠᠷᠠᠭ ᠤ᠋ᠨ ᠨᠢᠭᠡᠳᠦᠭᠡᠷ ᠡᠳᠦᠷ</translation>
+         <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="45"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="46"/>
+         <source>Short Foramt Date</source>
+         <translation>ᠣᠬᠣᠷ ᠨᠦᠬᠡ ᠶᠢᠨ ᠡᠳᠦᠷ ᠬᠤᠭᠤᠴᠠᠭ᠎ᠠ</translation>
+         <extra-contents_path>/Area/Short Foramt Date</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="47"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="48"/>
+         <source>Long Format Date</source>
+         <translation>ᠡᠳᠦᠷ ᠬᠤᠭᠤᠴᠠᠭᠠᠨ᠎ᠤ᠋ ᠤᠷᠲᠤ ᠬᠡᠯᠪᠡᠷᠢ</translation>
+         <extra-contents_path>/Area/Long Format Date</extra-contents_path>
+@@ -1423,25 +1441,24 @@
+         <translation type="vanished">ᠴᠠᠭ ᠬᠤᠭᠤᠴᠠᠭ᠎ᠠ ᠪᠠ ᠡᠳᠦᠷ ᠰᠠᠷ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="50"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="51"/>
+         <source>Time</source>
+         <translation>ᠤᠷᠳᠤᠳᠬᠠᠬᠤ</translation>
+         <extra-contents_path>/Area/Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="63"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="64"/>
+         <source>Language Format</source>
+         <translation>ᠦᠭᠡ ᠬᠡᠯᠡᠨ ᠤ᠋ ᠬᠡᠯᠪᠡᠷᠢ</translation>
+         <extra-contents_path>/Area/Language Format</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="74"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="76"/>
+         <source>Language Format Example</source>
+         <translation>ᠬᠡᠯᠡᠨ᠎ᠦ᠌ ᠬᠡᠯᠪᠡᠷᠢ᠎ᠶ᠋ᠢᠨ ᠵᠢᠱ᠌ᠢᠶ᠎ᠡ</translation>
+-        <extra-contents_path>/Area/Language Format Example</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="103"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="106"/>
+         <source>System Language</source>
+         <translation>ᠰᠢᠰᠲ᠋ᠧᠮ ᠤ᠋ᠨ ᠦᠭᠡ ᠬᠡᠯᠡ</translation>
+         <extra-contents_path>/Area/System Language</extra-contents_path>
+@@ -1457,17 +1474,17 @@
+ <context>
+     <name>AutoBoot</name>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="96"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="95"/>
+         <source>Auto Start</source>
+         <translation>ᠠᠦᠢᠲ᠋ᠣ᠋ ᠡᠬᠢᠯᠡᠪᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="293"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="292"/>
+         <source>Desktop files(*.desktop)</source>
+         <translation>ᠰᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ ᠤ᠋ᠨ ᠹᠠᠢᠯ (*.desktop)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="300"/>
+         <source>select autoboot desktop</source>
+         <translation>ᠡᠬᠢᠯᠡᠬᠦᠯᠬᠦ ᠫᠷᠣᠭ᠌ᠷᠠᠮ ᠢ᠋ ᠰᠣᠩᠭᠣᠬᠤ</translation>
+     </message>
+@@ -1476,12 +1493,12 @@
+         <translation type="vanished">ᠥᠪᠡᠷ᠎ᠢ᠋ᠶ᠋ᠡᠨ ᠡᠬᠢᠯᠡᠭᠦᠯᠬᠦ ᠫᠷᠤᠭ᠌ᠷᠠᠮ᠎ᠢ᠋ ᠰᠣᠩᠭᠣᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
+         <source>Select</source>
+         <translation>ᠰᠣᠩᠭᠣᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="303"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
+         <source>Cancel</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+@@ -1520,7 +1537,7 @@
+         <translation type="vanished">当前状态</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="231"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="230"/>
+         <source>Delete</source>
+         <translation>ᠰᠢᠯᠵᠢᠬᠦᠯᠵᠤ ᠬᠠᠰᠤᠬᠤ</translation>
+     </message>
+@@ -1533,13 +1550,13 @@
+         <extra-contents_path>/Autoboot/Autoboot Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="17"/>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="18"/>
+         <source>Autostart Settings</source>
+         <translation>ᠮᠠᠰᠢᠨ ᠨᠡᠬᠡᠬᠡᠵᠤ ᠡᠬᠢᠯᠡᠬᠦᠯᠬᠦ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ</translation>
+         <extra-contents_path>/Autostart/Autostart Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="27"/>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="28"/>
+         <source>Add</source>
+         <translation>ᠨᠡᠮᠡᠬᠦ</translation>
+         <extra-contents_path>/Autostart/Add</extra-contents_path>
+@@ -2106,7 +2123,7 @@ Please authenticate yourself to continue</source>
+ <context>
+     <name>BrightnessFrame</name>
+     <message>
+-        <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="36"/>
++        <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="66"/>
+         <source>Failed to get the brightness information of this monitor</source>
+         <translation>ᠲᠤᠰ ᠦᠵᠡᠬᠦᠷ ᠤ᠋ᠨ ᠬᠡᠷᠡᠯᠳᠦᠴᠡ ᠵᠢᠨ ᠰᠤᠷᠠᠭ ᠵᠠᠩᠬᠢ ᠵᠢ ᠣᠯᠵᠤ ᠴᠢᠳᠠᠭᠰᠠᠨ ᠥᠬᠡᠢ</translation>
+     </message>
+@@ -2519,47 +2536,47 @@ Please authenticate yourself to continue</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="158"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="309"/>
+         <source>Cancel</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="161"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="162"/>
+         <source>Confirm</source>
+         <translation>ᠪᠠᠳᠤᠯᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="302"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
+         <source>select custom face file</source>
+         <translation>ᠦᠪᠡᠷᠳᠡᠭᠡᠨ ᠳᠤᠭᠳᠠᠭᠠᠭᠰᠠᠨ ᠲᠣᠯᠣᠭᠠᠢ ᠵᠢᠨ ᠵᠢᠷᠤᠭ ᠤ᠋ᠨ ᠹᠠᠢᠯ ᠢ᠋ ᠰᠣᠩᠭᠣᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="303"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
+         <source>Select</source>
+         <translation>ᠰᠣᠩᠭᠣᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
+         <source>Position: </source>
+         <translation>ᠪᠠᠢᠷᠢ: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
+         <source>FileName: </source>
+         <translation>ᠹᠠᠢᠯ ᠤ᠋ᠨ ᠨᠡᠷ᠎ᠡ: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="308"/>
+         <source>FileType: </source>
+         <translation>ᠹᠠᠢᠯ ᠳᠦᠷᠦᠯ ᠵᠦᠢᠯ: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="322"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="324"/>
+         <source>Warning</source>
+         <translation>ᠰᠡᠷᠡᠮᠵᠢᠯᠡᠬᠦᠯᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="323"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="325"/>
+         <source>The avatar is larger than 1M, please choose again</source>
+         <translation>ᠰᠡᠷᠡᠮᠵᠢᠯᠡᠬᠦᠯᠬᠦ ᠨᠢ ᠲᠣᠯᠣᠭᠠᠢ ᠵᠢᠨ ᠵᠢᠷᠤᠭ 1M ᠡᠴᠡ ᠶᠡᠬᠡ ᠂ ᠳᠠᠬᠢᠵᠤ ᠰᠣᠩᠭᠣᠭᠠᠷᠠᠢ</translation>
+     </message>
+@@ -2613,17 +2630,17 @@ Please authenticate yourself to continue</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠳᠠᠭᠤᠳᠠᠯᠭ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="156"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ᠎ᠶ᠋ᠢᠨ ᠳᠠᠭᠤᠳᠠᠯᠭ᠎ᠠ᠎ᠶ᠋ᠢᠨ ᠤᠷᠲᠤ ᠨᠢ ᠡᠷᠬᠡᠪᠰᠢ 1᠎ᠡᠴᠡ % 1 ᠦᠰᠦᠭ ᠲᠡᠮᠳᠡᠭ᠎ᠦ᠋ᠨ ᠬᠣᠭᠣᠷᠣᠨᠳᠣ ᠪᠠᠢᠬᠤ ᠬᠡᠷᠡᠭᠲᠡᠢ !</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
+         <source>nickName already in use.</source>
+         <translation>ᠲᠤᠰ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠳᠠᠭᠤᠳᠠᠯᠭ᠎ᠠ ᠣᠷᠣᠰᠢᠵᠤ ᠪᠠᠢᠨ᠎ᠠ.</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="162"/>
+         <source>Can&apos;t contains &apos;:&apos;.</source>
+         <translation>&apos;:&apos; ᠢ᠋/ ᠶ᠋ᠢ ᠠᠭᠤᠯᠵᠤ ᠪᠣᠯᠬᠤ ᠥᠬᠡᠢ.</translation>
+     </message>
+@@ -2645,7 +2662,7 @@ Please authenticate yourself to continue</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="116"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="117"/>
+         <source>Confirm</source>
+         <translation>ᠪᠠᠳᠤᠯᠠᠬᠤ</translation>
+     </message>
+@@ -2659,7 +2676,7 @@ Please authenticate yourself to continue</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="103"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="471"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="473"/>
+         <source>Current Pwd</source>
+         <translation>ᠤᠳᠤᠬᠠᠨ ᠤ᠋ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋</translation>
+     </message>
+@@ -2670,15 +2687,15 @@ Please authenticate yourself to continue</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="136"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="472"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="480"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="474"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="482"/>
+         <source>New Pwd</source>
+         <translation>ᠰᠢᠨ᠎ᠡ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="163"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="473"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="481"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="475"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="483"/>
+         <source>Sure Pwd</source>
+         <translation>ᠨᠢᠭᠤᠴᠠ ᠺᠣᠳ᠋᠎ᠢ᠋ ᠪᠠᠳᠤᠯᠠᠬᠤ</translation>
+     </message>
+@@ -2688,50 +2705,50 @@ Please authenticate yourself to continue</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="220"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="305"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="371"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="221"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="307"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="373"/>
+         <source>Confirm</source>
+         <translation>ᠪᠠᠳᠤᠯᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="281"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="544"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="283"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="546"/>
+         <source>Inconsistency with pwd</source>
+         <translation>ᠬᠣᠶᠠᠷ ᠤᠳᠠᠭ᠎ᠠ ᠤᠷᠤᠭᠤᠯᠤᠭᠰᠠᠨ ᠠᠳᠠᠯᠢ ᠪᠤᠰᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="301"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="303"/>
+         <source>Same with old pwd</source>
+         <translation>ᠬᠠᠭᠤᠴᠢᠨ ᠨᠢᠭᠤᠴᠠ ᠺᠣᠳ᠋᠎ᠲᠠᠢ ᠠᠳᠠᠯᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="354"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="356"/>
+         <source>Pwd Changed Succes</source>
+         <translation>ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠢ᠋ ᠵᠠᠰᠠᠪᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="361"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="363"/>
+         <source>Authentication failed, input authtok again!</source>
+         <translation>ᠨᠢᠭᠤᠴᠠ ᠺᠣᠳ᠋ ᠪᠤᠷᠤᠭᠤᠳᠠᠪᠠ᠂ ᠳᠠᠬᠢᠵᠤ ᠣᠷᠣᠭᠤᠯᠤᠭᠠᠷᠠᠢ !</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="503"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="505"/>
+         <source>Contains illegal characters!</source>
+         <translation>ᠬᠠᠤᠯᠢ ᠪᠤᠰᠤ ᠦᠰᠦᠭ ᠳᠡᠮᠳᠡᠭ ᠠᠭᠤᠯᠵᠤ ᠪᠠᠢᠨ᠎ᠠ !</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="615"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="617"/>
+         <source>current pwd cannot be empty!</source>
+         <translation>ᠣᠳᠣᠬᠠᠨ ᠤ᠋ ᠨᠢᠭᠤᠴᠠ ᠺᠣᠳ᠋ ᠬᠣᠭᠣᠰᠣᠨ ᠪᠠᠢᠵᠤ ᠪᠣᠯᠬᠤ ᠥᠬᠡᠢ !</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="620"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="622"/>
+         <source>new pwd cannot be empty!</source>
+         <translation>ᠰᠢᠨ᠎ᠡ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠬᠤᠭᠤᠰᠤᠨ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ !</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="625"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="627"/>
+         <source>sure pwd cannot be empty!</source>
+         <translation>ᠪᠠᠳᠤᠯᠠᠭᠰᠠᠨ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠬᠤᠭᠤᠰᠤᠨ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ !</translation>
+     </message>
+@@ -2885,7 +2902,7 @@ Please authenticate yourself to continue</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="86"/>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="89"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="88"/>
+         <source>Choose a custom color</source>
+         <translation>ᠦᠪᠡᠷᠳᠡᠭᠡᠨ ᠳᠤᠭᠳᠠᠭᠠᠭᠰᠠᠨ ᠥᠩᠭᠡ᠎ᠶ᠋ᠢ ᠰᠣᠩᠭᠣᠬᠤ</translation>
+     </message>
+@@ -2910,12 +2927,12 @@ Please authenticate yourself to continue</source>
+         <translation>ᠲᠣᠭᠲᠠᠭᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="94"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="93"/>
+         <source>Custom color</source>
+         <translation>ᠦᠩᠭᠡ ᠵᠢ ᠦᠪᠡᠷᠳᠡᠭᠡᠨ ᠳᠤᠭᠳᠠᠭᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="182"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="181"/>
+         <source>Close</source>
+         <translation>ᠲᠤᠬᠠᠢ</translation>
+     </message>
+@@ -2937,18 +2954,18 @@ Please authenticate yourself to continue</source>
+         <translation>ᠪᠦᠯᠦᠭ ᠤ᠋ᠨ ᠨᠡᠷᠡᠢᠳᠦᠯ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="78"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="79"/>
+         <source>Id</source>
+         <translation>ᠪᠦᠯᠦᠭ ID</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="92"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="94"/>
+         <source>Confirm</source>
+         <translation>ᠪᠠᠳᠤᠯᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="202"/>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="216"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="205"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="219"/>
+         <source>GroupName&apos;s length must be between 1 and %1 characters!</source>
+         <translation>ᠪᠦᠯᠦᠭ᠎ᠦ᠋ᠨ ᠨᠡᠷ᠎ᠡ᠎ᠶ᠋ᠢᠨ ᠤᠷᠲᠤ ᠨᠢ ᠡᠷᠬᠡᠪᠰᠢ 1᠎ᠡᠴᠡ % 1 ᠦᠰᠦᠭ ᠲᠡᠮᠳᠡᠭ᠎ᠦ᠋ᠨ ᠬᠣᠭᠣᠷᠣᠨᠳᠣ ᠪᠠᠢᠬᠤ ᠬᠡᠷᠡᠭᠲᠡᠢ !</translation>
+     </message>
+@@ -2969,7 +2986,7 @@ Please authenticate yourself to continue</source>
+         <translation type="vanished">组成员</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="89"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="90"/>
+         <source>Cancel</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+@@ -2978,7 +2995,7 @@ Please authenticate yourself to continue</source>
+         <translation type="vanished">确定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="50"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="49"/>
+         <source>Add user group</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠪᠦᠯᠦᠭ ᠰᠢᠨ᠎ᠡ ᠪᠡᠷ ᠪᠠᠢᠭᠤᠯᠬᠤ</translation>
+     </message>
+@@ -3285,39 +3302,39 @@ change system settings</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="279"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="280"/>
+         <source>Confirm</source>
+         <translation>ᠪᠠᠳᠤᠯᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="355"/>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="581"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="357"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="583"/>
+         <source>Inconsistency with pwd</source>
+         <translation>ᠬᠣᠶᠠᠷ ᠤᠳᠠᠭ᠎ᠠ ᠤᠷᠤᠭᠤᠯᠤᠭᠰᠠᠨ ᠠᠳᠠᠯᠢ ᠪᠤᠰᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="494"/>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="647"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="649"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ᠎ᠶ᠋ᠢᠨ ᠳᠠᠭᠤᠳᠠᠯᠭ᠎ᠠ᠎ᠶ᠋ᠢᠨ ᠤᠷᠲᠤ ᠨᠢ ᠡᠷᠬᠡᠪᠰᠢ 1᠎ᠡᠴᠡ % 1 ᠦᠰᠦᠭ ᠲᠡᠮᠳᠡᠭ᠎ᠦ᠋ᠨ ᠬᠣᠭᠣᠷᠣᠨᠳᠣ ᠪᠠᠢᠬᠤ ᠬᠡᠷᠡᠭᠲᠡᠢ !</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="498"/>
+         <source>nickName already in use.</source>
+         <translation>ᠲᠤᠰ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠳᠠᠭᠤᠳᠠᠯᠭ᠎ᠠ ᠣᠷᠣᠰᠢᠵᠤ ᠪᠠᠢᠨ᠎ᠠ.</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="642"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="644"/>
+         <source>Username&apos;s length must be between 1 and %1 characters!</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷ᠎ᠡ ᠵᠢᠨ ᠤᠷᠳᠤ ᠨᠢ ᠡᠷᠬᠡᠪᠰᠢ 1 ᠡᠴᠡ %1 ᠦᠰᠦᠭ ᠳᠡᠮᠳᠡᠭ ᠤ᠋ᠨ ᠬᠣᠭᠣᠷᠣᠨᠳᠣ ᠪᠠᠢᠬᠤ ᠬᠡᠷᠡᠭᠳᠡᠢ !</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="652"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="654"/>
+         <source>new pwd cannot be empty!</source>
+         <translation>ᠰᠢᠨ᠎ᠡ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠬᠤᠭᠤᠰᠤᠨ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ !</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="657"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="659"/>
+         <source>sure pwd cannot be empty!</source>
+         <translation>ᠪᠠᠳᠤᠯᠠᠭᠰᠠᠨ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠬᠤᠭᠤᠰᠤᠨ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ !</translation>
+     </message>
+@@ -3346,7 +3363,7 @@ change system settings</source>
+         <translation type="vanished">该用户名已存在,请更改。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="526"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="528"/>
+         <source>Name corresponds to group already exists.</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠨᠡᠷ᠎ᠡ ᠵᠢ ᠬᠠᠷᠠᠭᠠᠯᠵᠠᠭᠰᠠᠨ ᠪᠦᠯᠦᠭ ᠣᠷᠣᠰᠢᠵᠤ ᠪᠠᠢᠨ᠎ᠠ᠂ ᠦᠬᠡᠷᠡᠴᠢᠯᠡᠬᠡᠷᠡᠢ.</translation>
+     </message>
+@@ -3359,12 +3376,12 @@ change system settings</source>
+         <translation type="vanished">用户名仅能包含字母,数字及下划线</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="522"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="524"/>
+         <source>Username&apos;s folder exists, change another one</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠭᠠᠷᠴᠠᠭ ᠤᠷᠤᠰᠢᠵᠤ ᠪᠠᠢᠨ᠎ᠠ᠂ ᠦᠬᠡᠷᠡᠴᠢᠯᠡᠬᠡᠷᠡᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="551"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="553"/>
+         <source>Contains illegal characters!</source>
+         <translation>ᠬᠠᠤᠯᠢ ᠪᠤᠰᠤ ᠦᠰᠦᠭ ᠳᠡᠮᠳᠡᠭ ᠠᠭᠤᠯᠵᠤ ᠪᠠᠢᠨ᠎ᠠ !</translation>
+     </message>
+@@ -3547,7 +3564,7 @@ change system settings</source>
+         <extra-contents_path>/Date/Sync Server</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="341"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="346"/>
+         <source>Add Timezone</source>
+         <translation>ᠴᠠᠭ ᠤ᠋ᠨ ᠣᠷᠣᠨ ᠢ᠋ ᠨᠡᠮᠡᠬᠦ</translation>
+     </message>
+@@ -3608,8 +3625,8 @@ change system settings</source>
+         <translation type="vanished">ᠰᠢᠷᠪᠢᠭᠡᠳ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="201"/>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="343"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="206"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="348"/>
+         <source>Change Timezone</source>
+         <translation>ᠴᠠᠭ ᠤ᠋ᠨ ᠣᠷᠣᠨ ᠢ᠋ ᠦᠬᠡᠷᠡᠴᠢᠯᠡᠬᠦ</translation>
+     </message>
+@@ -3653,37 +3670,37 @@ change system settings</source>
+ <context>
+     <name>DatetimeUi</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="53"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="54"/>
+         <source>Sync Server</source>
+         <translation>ᠢᠵᠢᠯ ᠠᠯᠬᠤᠮᠴᠢᠯᠠᠭᠰᠠᠨ ᠦᠢᠯᠡᠴᠢᠯᠡᠬᠦᠷ</translation>
+         <extra-contents_path>/Date/Sync Server</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="75"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="77"/>
+         <source>Current Date</source>
+         <translation>ᠣᠳᠣᠬᠠᠨ ᠤ᠋ ᠴᠠᠭ ᠬᠤᠭᠤᠴᠠᠭ᠎ᠠ</translation>
+         <extra-contents_path>/Date/Current Date</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="105"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="107"/>
+         <source>Timezone</source>
+         <translation>ᠴᠠᠭ ᠦᠶ᠎ᠡ ᠶᠢᠨ ᠲᠣᠭᠣᠷᠢᠭ</translation>
+         <extra-contents_path>/Date/Timezone</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="111"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
+         <source>Set Time</source>
+         <translation>ᠴᠠᠭ ᠢ᠋ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
+         <extra-contents_path>/Date/Set Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
+         <source>Manual Time</source>
+         <translation>ᠠᠦ᠋ᠲ᠋ᠣ᠋ ᠪᠤᠰᠤ ᠪᠡᠷ ᠴᠠᠭ ᠬᠤᠭᠤᠴᠠᠭ᠎ᠠ ᠵᠢ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
+         <extra-contents_path>/Date/Manual Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="117"/>
+         <source>Sync Time</source>
+         <translation>ᠠᠦ᠋ᠲ᠋ᠣ᠋ ᠪᠡᠷ ᠢᠵᠢᠯ ᠠᠯᠬᠤᠮᠴᠢᠯᠠᠭᠰᠠᠨ ᠴᠠᠭ ᠬᠤᠭᠤᠴᠠᠭ᠎ᠠ</translation>
+         <extra-contents_path>/Date/Sync Time</extra-contents_path>
+@@ -3694,55 +3711,55 @@ change system settings</source>
+         <extra-contents_path>/Date/Set Date Manually</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="127"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="129"/>
+         <source>Set Time Manually</source>
+         <translation>ᠠᠦ᠋ᠲ᠋ᠣ᠋ ᠪᠤᠰᠤ ᠪᠡᠷ ᠴᠠᠭ ᠬᠤᠭᠤᠴᠠᠭ᠎ᠠ ᠵᠢ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
+         <extra-contents_path>/Date/Set Time Manually</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="162"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
+         <source>Server Address</source>
+         <translation>ᠦᠢᠯᠡᠴᠢᠯᠡᠬᠦᠷ ᠤ᠋ᠨ ᠬᠠᠶᠢᠭ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="166"/>
+         <source>Required</source>
+         <translation>ᠡᠷᠬᠡᠪᠰᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="165"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="167"/>
+         <source>Save</source>
+         <translation>ᠰᠢᠷᠪᠢᠭᠡᠳ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="169"/>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="313"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="171"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="315"/>
+         <source>Customize</source>
+         <translation>ᠦᠪᠡᠷᠳᠡᠭᠡᠨ ᠳᠤᠭᠳᠠᠭᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="197"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="199"/>
+         <source>Other Timezone</source>
+         <translation>ᠪᠤᠰᠤᠳ ᠴᠠᠭ ᠤ᠋ᠨ ᠣᠷᠣᠨ ᠤ᠋ ᠴᠠᠭ ᠬᠤᠭᠤᠴᠠᠭ᠎ᠠ</translation>
+         <extra-contents_path>/Date/Other Timezone</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="269"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
+         <source>MMMM d, yy ddd</source>
+         <translation>yy ᠤᠨ ᠤ᠋ M ᠰᠠᠷ᠎ᠠ᠎ᠶ᠋ᠢᠨ d ᠤ᠋ ᠡᠳᠦᠷ᠎ᠦ᠋ᠨ dd</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="273"/>
+         <source>MMMM dd, yyyy ddd</source>
+         <translation>yyyy ᠣᠨ᠎ᠤ᠋ MM ᠰᠠᠷ᠎ᠠ᠎ᠶ᠋ᠢᠨ dd ᠤ᠋ ᠡᠳᠦᠷ᠎ᠦ᠋ᠨ dd</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="302"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="304"/>
+         <source>Sync failed</source>
+         <translation>ᠢᠵᠢᠯ ᠠᠯᠬᠤᠮᠴᠢᠯᠠᠵᠤ ᠴᠢᠳᠠᠭᠰᠠᠨ ᠥᠬᠡᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="312"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="314"/>
+         <source>Default</source>
+         <translation>ᠭᠦᠨ ᠬᠦᠶᠦᠬᠡᠨ</translation>
+     </message>
+@@ -3814,56 +3831,56 @@ change system settings</source>
+ <context>
+     <name>DefaultAppUi</name>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="17"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="18"/>
+         <source>DefaultAppWindow</source>
+         <comment>Select Default Application</comment>
+         <translation>ᠳᠤᠪ ᠳᠤᠭᠤᠢ ᠪᠠᠷ ᠬᠡᠷᠡᠭᠯᠡᠳᠡᠭ</translation>
+         <extra-contents_path>/Defaultapp/Select Default Application</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="21"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="22"/>
+         <source>Browser</source>
+         <translation>ᠦᠵᠡᠬᠦᠷ</translation>
+         <extra-contents_path>/Defaultapp/Browser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="23"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="24"/>
+         <source>Mail</source>
+         <translation>ᠢᠮᠸᠯ</translation>
+         <extra-contents_path>/Defaultapp/Mail</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="25"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="26"/>
+         <source>Image Viewer</source>
+         <translation>ᠢᠮᠡᠭᠸ ᠵᠢᠷᠤᠭ ᠤ᠋ᠨ ᠪᠠᠢᠴᠠᠭᠠᠭᠤᠷ</translation>
+         <extra-contents_path>/Defaultapp/Image Viewer</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="27"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="28"/>
+         <source>Audio Player</source>
+         <translation>ᠠᠦ᠋ᠳᠢᠤ᠋ ᠨᠡᠪᠳᠡᠷᠡᠬᠦᠯᠦᠬᠦᠷ</translation>
+         <extra-contents_path>/Defaultapp/Audio Player</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="29"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="30"/>
+         <source>Video Player</source>
+         <translation>ᠺᠢᠨᠤ᠋ ᠠᠪᠢᠶ᠎ᠠ</translation>
+         <extra-contents_path>/Defaultapp/Video Player</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="31"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="32"/>
+         <source>Text Editor</source>
+         <translation>ᠲᠸᠺᠰᠲ ᠨᠠᠢᠷᠠᠭᠤᠯᠤᠭᠤᠷ</translation>
+         <extra-contents_path>/Defaultapp/Text Editor</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="35"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="36"/>
+         <source>Reset default apps to system recommended apps</source>
+         <translation>ᠠᠶᠠᠳᠠᠯ ᠬᠡᠷᠡᠭᠯᠡᠭᠡ ᠵᠢ ᠰᠢᠰᠲ᠋ᠧᠮ ᠤ᠋ᠨ ᠳᠠᠨᠢᠯᠴᠠᠭᠤᠯᠬᠤ ᠬᠡᠷᠡᠭᠯᠡᠭᠡ ᠪᠣᠯᠭᠠᠵᠤ ᠳᠠᠬᠢᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
+         <extra-contents_path>/Defaultapp/Reset default apps to system recommended apps</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="36"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="37"/>
+         <source>Reset</source>
+         <translation>ᠳᠠᠬᠢᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
+     </message>
+@@ -4047,7 +4064,7 @@ folder will be deleted!</source>
+         <translation>&apos;? ᠮᠦᠷᠳᠡᠭᠡᠨ ᠬᠦᠢᠴᠡᠳᠬᠡᠬᠦ:</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="65"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
+         <source>Keep desktop, files, favorites, music of the user</source>
+         <translation>ᠲᠤᠰ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠳ᠋ᠤ᠌ ᠬᠠᠷᠢᠶᠠᠯᠠᠭᠳᠠᠬᠤ ᠰᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ᠂ ᠹᠠᠢᠯ᠂ ᠬᠠᠳᠠᠭᠠᠯᠠᠭᠤᠷ᠂ ᠳᠠᠭᠤᠤ ᠬᠥᠭᠵᠢᠮ ᠵᠡᠷᠭᠡ ᠳ᠋ᠠᠢᠲ᠋ᠠ ᠵᠢ ᠦᠯᠡᠳᠡᠬᠡᠵᠤ ᠬᠠᠳᠠᠭᠠᠯᠠᠬᠤ</translation>
+     </message>
+@@ -4056,17 +4073,17 @@ folder will be deleted!</source>
+         <translation type="vanished">保留用户家目录</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="98"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
+         <source>Cancel</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="102"/>
+         <source>Confirm</source>
+         <translation>ᠪᠠᠳᠤᠯᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="68"/>
+         <source>Delete whole data belong user</source>
+         <translation>ᠲᠤᠰ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠪᠦᠬᠦᠢᠯᠡ ᠳ᠋ᠠᠢᠲ᠋ᠠ ᠵᠢ ᠬᠠᠰᠤᠬᠤ</translation>
+     </message>
+@@ -4390,78 +4407,64 @@ folder will be deleted!</source>
+ <context>
+     <name>DisplayPerformanceDialog</name>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="26"/>
+         <source>Dialog</source>
+-        <translation>ᠴᠤᠩᠬᠤ</translation>
++        <translation type="vanished">ᠴᠤᠩᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="214"/>
+         <source>Display Advanced Settings</source>
+-        <translation>ᠥᠨᠳᠥᠷ ᠳᠡᠰ ᠤ᠋ᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ ᠵᠢ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ</translation>
++        <translation type="vanished">ᠥᠨᠳᠥᠷ ᠳᠡᠰ ᠤ᠋ᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ ᠵᠢ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="297"/>
+         <source>Performance</source>
+-        <translation>ᠴᠢᠳᠠᠪᠬᠢ ᠵᠢᠨ ᠵᠠᠭᠪᠤᠷ</translation>
++        <translation type="vanished">ᠴᠢᠳᠠᠪᠬᠢ ᠵᠢᠨ ᠵᠠᠭᠪᠤᠷ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="376"/>
+         <source>Applicable to machine with discrete graphics, which can accelerate the rendering of 3D graphics.</source>
+-        <translation>ᠳᠤᠰᠠᠭᠠᠷ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠺᠠᠷᠲ ᠲᠠᠢ ᠮᠠᠰᠢᠨ ᠳ᠋ᠤ᠌ ᠳᠤᠬᠢᠷᠠᠵᠤ᠂ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠺᠠᠷᠲ ᠤ᠋ᠨ ᠴᠢᠳᠠᠪᠬᠢ ᠵᠢ ᠪᠦᠷᠢᠨ ᠪᠠᠳᠠᠷᠠᠭᠤᠯᠵᠤ᠂ 3D ᠳᠦᠰᠦ ᠵᠢᠷᠤᠵᠤ ᠦᠢᠯᠡᠳᠬᠦ ᠵᠢ ᠬᠤᠷᠳᠤᠳᠬᠠᠨ᠎ᠠ.</translation>
++        <translation type="vanished">ᠳᠤᠰᠠᠭᠠᠷ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠺᠠᠷᠲ ᠲᠠᠢ ᠮᠠᠰᠢᠨ ᠳ᠋ᠤ᠌ ᠳᠤᠬᠢᠷᠠᠵᠤ᠂ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠺᠠᠷᠲ ᠤ᠋ᠨ ᠴᠢᠳᠠᠪᠬᠢ ᠵᠢ ᠪᠦᠷᠢᠨ ᠪᠠᠳᠠᠷᠠᠭᠤᠯᠵᠤ᠂ 3D ᠳᠦᠰᠦ ᠵᠢᠷᠤᠵᠤ ᠦᠢᠯᠡᠳᠬᠦ ᠵᠢ ᠬᠤᠷᠳᠤᠳᠬᠠᠨ᠎ᠠ.</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="392"/>
+         <source>(Note: not support connect graphical with xmanager on windows.)</source>
+-        <translation>( ᠠᠩᠬᠠᠷ᠄ ᠲᠤᠰ ᠵᠠᠭᠪᠤᠷ ᠨᠢ windows ᠳᠡᠭᠡᠷ᠎ᠡ xmanager ᠵᠡᠷᠭᠡ ᠪᠠᠭᠠᠵᠢ ᠵᠢ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠴᠥᠷᠬᠡᠯᠡᠬᠦ ᠳᠦᠷᠰᠦ ᠵᠢ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠵᠢ ᠳᠡᠮᠵᠢᠬᠦ ᠥᠬᠡᠢ.)</translation>
++        <translation type="vanished">( ᠠᠩᠬᠠᠷ᠄ ᠲᠤᠰ ᠵᠠᠭᠪᠤᠷ ᠨᠢ windows ᠳᠡᠭᠡᠷ᠎ᠡ xmanager ᠵᠡᠷᠭᠡ ᠪᠠᠭᠠᠵᠢ ᠵᠢ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠴᠥᠷᠬᠡᠯᠡᠬᠦ ᠳᠦᠷᠰᠦ ᠵᠢ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠵᠢ ᠳᠡᠮᠵᠢᠬᠦ ᠥᠬᠡᠢ.)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="462"/>
+         <source>Compatible</source>
+-        <translation>ᠠᠭᠤᠰᠤᠯᠴᠠᠬᠤ ᠵᠠᠭᠪᠤᠷ</translation>
++        <translation type="vanished">ᠠᠭᠤᠰᠤᠯᠴᠠᠬᠤ ᠵᠠᠭᠪᠤᠷ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="538"/>
+         <source>Applicable to machine with integrated graphics,  there is no 3D graphics acceleration. </source>
+-        <translation>ᠳᠦᠪᠯᠡᠷᠡᠭᠰᠡᠨ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠺᠠᠷᠲ ᠲᠤ᠌ ᠳᠤᠬᠢᠷᠠᠵᠤ᠂ BMC ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠺᠠᠷᠲ ᠵᠡᠷᠭᠡ ᠵᠥᠪᠬᠡᠨ ᠰᠠᠭᠤᠷᠢ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠴᠢᠳᠠᠪᠬᠢ ᠵᠢ ᠪᠤᠢ ᠪᠣᠯᠭᠠᠵᠤ᠂ 3D ᠳᠦᠷᠰᠦ ᠵᠢᠷᠤᠵᠤ ᠦᠢᠯᠡᠳᠬᠦ ᠵᠢ ᠬᠤᠷᠳᠤᠳᠬᠠᠬᠤ ᠥᠬᠡᠢ. </translation>
++        <translation type="vanished">ᠳᠦᠪᠯᠡᠷᠡᠭᠰᠡᠨ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠺᠠᠷᠲ ᠲᠤ᠌ ᠳᠤᠬᠢᠷᠠᠵᠤ᠂ BMC ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠺᠠᠷᠲ ᠵᠡᠷᠭᠡ ᠵᠥᠪᠬᠡᠨ ᠰᠠᠭᠤᠷᠢ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠴᠢᠳᠠᠪᠬᠢ ᠵᠢ ᠪᠤᠢ ᠪᠣᠯᠭᠠᠵᠤ᠂ 3D ᠳᠦᠷᠰᠦ ᠵᠢᠷᠤᠵᠤ ᠦᠢᠯᠡᠳᠬᠦ ᠵᠢ ᠬᠤᠷᠳᠤᠳᠬᠠᠬᠤ ᠥᠬᠡᠢ. </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="554"/>
+         <source>(Note: need connect graphical with xmanager on windows, use this option.)</source>
+-        <translation>( ᠠᠩᠬᠠᠷ᠄windows ᠳᠡᠭᠡᠷᠡᠬᠢ xmanager ᠵᠡᠷᠭᠡ ᠪᠠᠭᠠᠵᠢ ᠵᠢ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠳᠦᠷᠰᠦ ᠵᠢ ᠴᠥᠷᠬᠡᠯᠡᠬᠦ ᠮᠠᠰᠢᠨ ᠵᠢᠡᠷ ᠲᠤᠰ ᠳᠦᠷᠦᠯ ᠢ᠋ ᠰᠣᠩᠭᠣᠬᠤ.)</translation>
++        <translation type="vanished">( ᠠᠩᠬᠠᠷ᠄windows ᠳᠡᠭᠡᠷᠡᠬᠢ xmanager ᠵᠡᠷᠭᠡ ᠪᠠᠭᠠᠵᠢ ᠵᠢ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠳᠦᠷᠰᠦ ᠵᠢ ᠴᠥᠷᠬᠡᠯᠡᠬᠦ ᠮᠠᠰᠢᠨ ᠵᠢᠡᠷ ᠲᠤᠰ ᠳᠦᠷᠦᠯ ᠢ᠋ ᠰᠣᠩᠭᠣᠬᠤ.)</translation>
+     </message>
+     <message>
+         <source>Cancel</source>
+         <translation type="vanished">ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="624"/>
+         <source>Automatic</source>
+-        <translation>ᠠᠦ᠋ᠲ᠋ᠤ᠋</translation>
++        <translation type="vanished">ᠠᠦ᠋ᠲ᠋ᠤ᠋</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="700"/>
+         <source>Auto select according to environment, delay the login time (about 0.5 sec).</source>
+-        <translation>ᠠᠦ᠋ᠲ᠋ᠣ᠋ ᠬᠢᠨᠠᠨ ᠪᠠᠢᠴᠭᠠᠯᠳᠠ ᠣᠷᠴᠢᠨ ᠢ᠋ ᠢᠯᠡᠷᠡᠬᠦᠯᠵᠤ᠂ ᠨᠡᠪᠳᠡᠷᠡᠬᠦ ᠴᠠᠭ ᠢ᠋ ᠬᠤᠢᠰᠢᠯᠠᠭᠤᠯᠬᠤ (0.5 ᠰᠸᠺᠦ᠋ᠨ᠋ᠲ ᠭᠠᠷᠤᠢ).</translation>
++        <translation type="vanished">ᠠᠦ᠋ᠲ᠋ᠣ᠋ ᠬᠢᠨᠠᠨ ᠪᠠᠢᠴᠭᠠᠯᠳᠠ ᠣᠷᠴᠢᠨ ᠢ᠋ ᠢᠯᠡᠷᠡᠬᠦᠯᠵᠤ᠂ ᠨᠡᠪᠳᠡᠷᠡᠬᠦ ᠴᠠᠭ ᠢ᠋ ᠬᠤᠢᠰᠢᠯᠠᠭᠤᠯᠬᠤ (0.5 ᠰᠸᠺᠦ᠋ᠨ᠋ᠲ ᠭᠠᠷᠤᠢ).</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="721"/>
+         <source>Threshold:</source>
+-        <translation>ᠪᠣᠱᠣᠭᠠᠨ ᠬᠡᠮᠵᠢᠭᠳᠡᠯ ᠤ᠋ᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ:</translation>
++        <translation type="vanished">ᠪᠣᠱᠣᠭᠠᠨ ᠬᠡᠮᠵᠢᠭᠳᠡᠯ ᠤ᠋ᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ:</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="744"/>
+         <source>Apply</source>
+-        <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠡ</translation>
++        <translation type="vanished">ᠬᠡᠷᠡᠭᠯᠡᠭᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="757"/>
+         <source>Reset</source>
+-        <translation>ᠳᠠᠬᠢᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
++        <translation type="vanished">ᠳᠠᠬᠢᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="772"/>
+         <source>(Note: select this option to use 3D graphics acceleration and xmanager.)</source>
+-        <translation>( ᠠᠩᠬᠠᠷ᠄ 3D ᠳᠦᠷᠰᠦ ᠵᠢ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠬᠤᠷᠳᠤᠳᠬᠠᠬᠤ᠂ ᠮᠥᠨ xmanager ᠢ᠋/ ᠵᠢ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠳᠦᠷᠰᠦ ᠵᠢ ᠴᠥᠷᠬᠡᠯᠡᠬᠦ ᠦᠶ᠎ᠡ ᠳ᠋ᠤ᠌ ᠲᠤᠰ ᠵᠦᠢᠯ ᠢ᠋ ᠰᠣᠩᠭᠣᠬᠤ.)</translation>
++        <translation type="vanished">( ᠠᠩᠬᠠᠷ᠄ 3D ᠳᠦᠷᠰᠦ ᠵᠢ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠬᠤᠷᠳᠤᠳᠬᠠᠬᠤ᠂ ᠮᠥᠨ xmanager ᠢ᠋/ ᠵᠢ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠳᠦᠷᠰᠦ ᠵᠢ ᠴᠥᠷᠬᠡᠯᠡᠬᠦ ᠦᠶ᠎ᠡ ᠳ᠋ᠤ᠌ ᠲᠤᠰ ᠵᠦᠢᠯ ᠢ᠋ ᠰᠣᠩᠭᠣᠬᠤ.)</translation>
+     </message>
+ </context>
+ <context>
+@@ -5560,132 +5563,132 @@ folder will be deleted!</source>
+ <context>
+     <name>KeyboardUi</name>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="24"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="30"/>
+         <source>Keyboard Settings</source>
+         <translation>ᠲᠠᠷᠤᠭᠤᠯ ᠤᠨ ᠫᠠᠨᠰᠠ ᠶᠢᠨ ᠪᠠᠶᠢᠷᠢᠯᠠᠭᠤᠯᠤᠯᠲᠠ</translation>
+         <extra-contents_path>/Keyboard/Keyboard Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="35"/>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="41"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="173"/>
+         <source>Input Method</source>
+         <translation>ᠤᠷᠤᠭᠤᠯᠬᠤ ᠠᠷᠭ᠎ᠠ</translation>
+         <extra-contents_path>/Keyboard/Input Method</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="51"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="57"/>
+         <source>Virtual Keyboard</source>
+         <translation>ᠬᠡᠢᠰᠪᠦᠷᠢ ᠳᠠᠷᠤᠪᠴᠢ</translation>
+         <extra-contents_path>/Keyboard/Virtual Keyboard</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="106"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="112"/>
+         <source>Key repeat</source>
+         <translation>ᠳᠠᠷᠤᠪᠴᠢ ᠳᠠᠪᠬᠤᠷᠳᠠᠬᠤ</translation>
+         <extra-contents_path>/Keyboard/Key repeat</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="114"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="120"/>
+         <source>Delay</source>
+         <translation>ᠬᠤᠢᠰᠢᠯᠠᠬᠤ</translation>
+         <extra-contents_path>/Keyboard/Delay</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="117"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="123"/>
+         <source>Short</source>
+         <translation>ᠪᠣᠭᠣᠨᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="118"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="124"/>
+         <source>Long</source>
+         <translation>ᠤᠷᠳᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="130"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="136"/>
+         <source>Speed</source>
+         <translation>ᠬᠤᠷᠳᠤᠴᠠ</translation>
+         <extra-contents_path>/Keyboard/Speed</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="132"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="138"/>
+         <source>Slow</source>
+         <translation>ᠤᠳᠠᠭᠠᠨ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="133"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="139"/>
+         <source>Fast</source>
+         <translation>ᠬᠤᠷᠳᠤᠨ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="144"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="150"/>
+         <source>Input test</source>
+         <translation>ᠣᠷᠣᠭᠤᠯᠬᠤ ᠳᠤᠷᠰᠢᠯᠳᠠ</translation>
+         <extra-contents_path>/Keyboard/Input test</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="152"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="158"/>
+         <source>Key tips</source>
+         <translation>ᠳᠠᠷᠤᠪᠴᠢ ᠵᠢᠨ ᠠᠩᠬᠠᠷᠤᠭᠤᠯᠤᠯ</translation>
+         <extra-contents_path>/Keyboard/Key tips</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="161"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
+         <source>Input settings</source>
+         <translation>ᠪᠢᠴᠢᠭᠯᠡᠬᠦ ᠠᠷᠭ᠎ᠠ ᠵᠢᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ</translation>
+         <extra-contents_path>/Keyboard/Input settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="168"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="174"/>
+         <source>Edit</source>
+         <translation>ᠨᠠᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="175"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="181"/>
+         <source>Show icon on tray</source>
+         <translation>ᠲᠣᠯᠣᠫᠠᠨ ᠳᠤ ᠬᠡᠶᠢᠰᠬᠡᠷ ᠦᠨ ᠲᠠᠷᠤᠭᠤᠯ ᠤᠨ ᠵᠢᠷᠤᠭ ᠤᠨ ᠵᠢᠷᠤᠭ ᠢ ᠢᠯᠡᠷᠡᠭᠦᠯᠵᠡᠢ</translation>
+         <extra-contents_path>/Keyboard/Show icon on tray</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="182"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="188"/>
+         <source>Show icon on desktop</source>
+         <translation>ᠰᠢᠷᠡᠭᠡᠨ ᠳᠡᠭᠡᠷ᠎ᠡ ᠬᠡᠶᠢᠰᠬᠡᠷ ᠦᠨ ᠲᠠᠷᠤᠭᠤᠯ ᠤᠨ ᠵᠢᠷᠤᠭ ᠤᠨ ᠵᠢᠷᠤᠭ ᠢ ᠢᠯᠡᠷᠡᠭᠦᠯᠵᠡᠢ</translation>
+         <extra-contents_path>/Keyboard/Show icon on desktop</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="189"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="195"/>
+         <source>Keyboard Size</source>
+         <translation>ᠲᠠᠷᠤᠭᠤᠯ ᠤᠨ ᠶᠡᠬᠡ ᠪᠠᠭ᠎ᠠ</translation>
+         <extra-contents_path>/Keyboard/Keyboard Size</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="197"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="203"/>
+         <source>Text size</source>
+         <translation>ᠳᠠᠷᠤᠭᠤᠯ ᠤᠨ ᠲᠣᠪᠬᠢᠯ ᠤᠨ ᠶᠡᠬᠡ ᠪᠠᠭ᠎ᠠ ᠶᠢ ᠳᠠᠷᠤᠨ᠎ᠠ</translation>
+         <extra-contents_path>/Keyboard/Text size</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="199"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="205"/>
+         <source>Small</source>
+         <translation>ᠪᠠᠭ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="200"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="206"/>
+         <source>Medium</source>
+         <translation>ᠳᠤᠮᠳᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="201"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
+         <source>Large</source>
+         <translation>ᠶᠡᠬᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="213"/>
+         <source>Animation</source>
+         <translation>ᠺᠠᠷᠲ᠋ᠣᠨ ᠤ ᠦᠷ᠎ᠡ ᠳ᠋ᠦᠩ</translation>
+         <extra-contents_path>/Keyboard/Animation</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="214"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="220"/>
+         <source>Input sound effect</source>
+         <translation>ᠳᠠᠷᠤᠭᠤᠯ ᠤᠨ ᠠᠶ᠎ᠠ ᠶᠢ ᠳᠠᠷᠤᠬᠤ ᠬᠡᠷᠡᠭᠲᠡᠢ</translation>
+         <extra-contents_path>/Keyboard/Input sound effect</extra-contents_path>
+@@ -5694,12 +5697,12 @@ folder will be deleted!</source>
+ <context>
+     <name>LanguageFrame</name>
+     <message>
+-        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="71"/>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="91"/>
+         <source>Delete</source>
+         <translation>ᠰᠢᠯᠵᠢᠬᠦᠯᠵᠤ ᠬᠠᠰᠤᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="70"/>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="90"/>
+         <source>Input Settings</source>
+         <translation>ᠪᠢᠴᠢᠭᠯᠡᠬᠦ ᠠᠷᠭ᠎ᠠ ᠵᠢᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ</translation>
+     </message>
+@@ -6174,10 +6177,10 @@ Please retry or relogin!</source>
+         <translation type="vanished">设置</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="441"/>
+-        <location filename="../../mainwindow.cpp" line="459"/>
+-        <location filename="../../mainwindow.cpp" line="591"/>
+-        <location filename="../../mainwindow.cpp" line="949"/>
++        <location filename="../../mainwindow.cpp" line="470"/>
++        <location filename="../../mainwindow.cpp" line="488"/>
++        <location filename="../../mainwindow.cpp" line="620"/>
++        <location filename="../../mainwindow.cpp" line="974"/>
+         <source>Settings</source>
+         <translation>ᠲᠣᠬᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
+     </message>
+@@ -6186,7 +6189,7 @@ Please retry or relogin!</source>
+         <translation type="vanished">ᠲᠤᠪᠶᠤᠭ</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="480"/>
++        <location filename="../../mainwindow.cpp" line="509"/>
+         <source>Minimize</source>
+         <translation>ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠪᠠᠭᠠᠴᠢᠯᠠᠯ</translation>
+     </message>
+@@ -6210,22 +6213,22 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="173"/>
+-        <location filename="../../mainwindow.cpp" line="481"/>
++        <location filename="../../mainwindow.cpp" line="510"/>
+         <source>Maximize</source>
+         <translation>ᠬᠠᠮᠤᠭ᠎ᠤ᠋ᠨ ᠶᠡᠭᠡᠴᠢᠯᠡᠯ</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="453"/>
++        <location filename="../../mainwindow.cpp" line="482"/>
+         <source>Back home</source>
+         <translation>ᠲᠦᠷᠦᠭᠦᠦ ᠨᠢᠭᠤᠷ᠎ᠲᠤ᠌ ᠪᠤᠴᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="479"/>
++        <location filename="../../mainwindow.cpp" line="508"/>
+         <source>Option</source>
+         <translation>ᠰᠤᠩᠭᠤᠭᠳᠠᠬᠤᠨ</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="482"/>
++        <location filename="../../mainwindow.cpp" line="511"/>
+         <source>Close</source>
+         <translation>ᠲᠤᠬᠠᠢ</translation>
+     </message>
+@@ -6242,12 +6245,12 @@ Please retry or relogin!</source>
+         <translation type="vanished">ᠪᠤᠴᠠᠵᠤ ᠭᠠᠷᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="592"/>
++        <location filename="../../mainwindow.cpp" line="621"/>
+         <source>Version: </source>
+         <translation>ᠬᠡᠪᠯᠡᠯ </translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="731"/>
++        <location filename="../../mainwindow.cpp" line="756"/>
+         <source>Specified</source>
+         <translation>ᠳᠤᠭᠳᠠᠭᠰᠠᠨ ᠤᠭᠯᠤᠷᠭ᠎ᠠ ᠲᠣᠨᠣᠭ</translation>
+     </message>
+@@ -6256,13 +6259,13 @@ Please retry or relogin!</source>
+         <translation type="vanished">控制面板</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="1082"/>
++        <location filename="../../mainwindow.cpp" line="1107"/>
+         <source>Warning</source>
+         <translation>ᠰᠡᠷᠡᠮᠵᠢᠯᠡᠬᠦᠯᠬᠦ</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="152"/>
+-        <location filename="../../mainwindow.cpp" line="1082"/>
++        <location filename="../../mainwindow.cpp" line="1107"/>
+         <source>This function has been controlled</source>
+         <translation>ᠲᠤᠰ ᠴᠢᠳᠠᠪᠬᠢ ᠨᠢᠭᠡᠨᠳᠡ ᠬᠠᠮᠢᠶᠠᠷᠤᠭᠳᠠᠪᠠ</translation>
+     </message>
+@@ -7458,7 +7461,7 @@ Please retry or relogin!</source>
+         <translation>ᠫᠠᠷᠢᠨᠲᠸᠷ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/printer/printer.cpp" line="121"/>
++        <location filename="../../../plugins/devices/printer/printer.cpp" line="122"/>
+         <source>Printers</source>
+         <translatorcomment>打印机</translatorcomment>
+         <translation>ᠫᠠᠷᠢᠨᠲᠸᠷ</translation>
+@@ -7476,22 +7479,22 @@ Please retry or relogin!</source>
+ <context>
+     <name>PrivacyDialog</name>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="11"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="12"/>
+         <source>Set</source>
+         <translation>ᠰᠢᠰᠲ᠋ᠧᠮ᠎ᠦ᠋ᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="73"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="74"/>
+         <source>End User License Agreement and Privacy Policy Statement of openKylin</source>
+         <translation>ᠹᠣᠨᠺᠧᠯᠧᠨ ᠦ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢᠳ ᠦᠨ ᠵᠥᠪᠰᠢᠶᠡᠷᠡᠯ ᠦᠨ ᠬᠡᠯᠡᠯᠴᠡᠭᠡᠷ ᠪᠣᠯᠣᠨ ᠨᠢᠭᠤᠴᠠ ᠲᠥᠷᠥ ᠶᠢᠨ ᠪᠣᠳᠣᠯᠭ᠎ᠠ ᠶᠢᠨ ᠢᠯᠡᠷᠬᠡᠶᠢᠯᠡᠯᠲᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="75"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="76"/>
+         <source>End User License Agreement and Privacy Policy Statement of Kylin</source>
+         <translation>ᠳᠡᠭᠷᠢ ᠵᠢᠨ ᠣᠶᠣᠳᠠᠯ ᠴᠢ ᠯᠢᠨ ᠤ᠋ ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠰᠡᠬᠦᠯᠴᠢ ᠵᠢᠨ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠬᠡᠷᠡᠭᠯᠡᠬᠦ ᠵᠥᠪᠰᠢᠶᠡᠷᠡᠯ ᠤ᠋ᠨ ᠭᠡᠷ᠎ᠡ ᠪᠤᠯᠤᠨ ᠨᠢᠭᠤᠴᠠ ᠪᠣᠳᠣᠯᠭ᠎ᠠ ᠵᠢᠨ ᠳᠤᠳᠤᠷᠬᠠᠢᠯᠠᠯᠳᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="82"/>
+         <source>Openkylin Community.</source>
+         <translation>Opeekplinn ᠨᠡᠶᠢᠭᠡᠮ ᠲᠣᠭᠣᠷᠢᠭ</translation>
+     </message>
+@@ -8566,7 +8569,7 @@ E-mail: support@kylinos.cn</source>
+ 长沙(0731)88280170 上海(021)51098866</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="83"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="84"/>
+         <source>Kylinsoft Co., Ltd.</source>
+         <translation>ᠴᠢ ᠯᠢᠨ ᠰᠣᠹᠲ ᠤ᠋ᠨ ᠬᠢᠵᠠᠭᠠᠷᠳᠤ ᠺᠣᠮᠫᠠᠨᠢ.</translation>
+     </message>
+@@ -8948,7 +8951,7 @@ E-mail: support@kylinos.cn</source>
+         <translation>ᠦᠪᠡᠷᠳᠡᠭᠡᠨ ᠳᠤᠭᠳᠠᠭᠠᠬᠤ ᠳᠦᠳᠡ ᠳᠠᠷᠤᠪᠴᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="472"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="474"/>
+         <source>Edit Shortcut</source>
+         <translation>ᠳᠦᠳᠡ ᠳᠠᠷᠤᠪᠴᠢ ᠵᠢ ᠨᠠᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
+     </message>
+@@ -9078,7 +9081,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">远程桌面</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="79"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="78"/>
+         <source>User Info</source>
+         <translation>ᠳᠠᠩᠰᠠᠨ ᠤ᠋ ᠰᠤᠷᠠᠭ ᠵᠠᠩᠬᠢ</translation>
+     </message>
+@@ -9450,63 +9453,63 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">连接失败,尝试重新连接</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1203"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1201"/>
+         <source>min length %1
+ </source>
+         <translation>ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠪᠠᠭ᠎ᠠ ᠤᠷᠳᠤ ᠵᠢᠨ ᠬᠡᠮᠵᠢᠶ᠎ᠡ %1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1213"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1211"/>
+         <source>min digit num %1
+ </source>
+         <translation>ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠪᠠᠭ᠎ᠠ ᠲᠣᠭ᠎ᠠ %1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1222"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1220"/>
+         <source>min upper num %1
+ </source>
+         <translation>ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠪᠠᠭ᠎ᠠ ᠳᠡᠭᠡᠳᠦ ᠬᠢᠵᠠᠭᠠᠷ ᠤ᠋ᠨ ᠲᠣᠭᠠᠨ ᠤ᠋ ᠬᠡᠮᠵᠢᠭᠳᠡᠯ %1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1231"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1229"/>
+         <source>min lower num %1
+ </source>
+         <translation>ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠪᠠᠭ᠎ᠠ ᠳᠤᠤᠷᠠᠳᠤ ᠬᠢᠵᠠᠭᠠᠷ ᠤ᠋ᠨ ᠲᠣᠭᠠᠨ ᠤ᠋ ᠬᠡᠮᠵᠢᠭᠳᠡᠯ %1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1240"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1238"/>
+         <source>min other num %1
+ </source>
+         <translation>ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠪᠠᠭ᠎ᠠ ᠪᠤᠰᠤᠳ ᠲᠣᠭᠠᠨ ᠤ᠋ ᠬᠡᠮᠵᠢᠭᠳᠡᠯ %1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1250"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1248"/>
+         <source>min char class %1
+ </source>
+         <translation>ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠪᠠᠭ᠎ᠠ ᠦᠰᠦᠭ ᠳᠡᠮᠳᠡᠭ ᠤ᠋ᠨ ᠳᠦᠷᠦᠯ %1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1259"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1257"/>
+         <source>max repeat %1
+ </source>
+         <translation>ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠶᠡᠬᠡ ᠳᠠᠪᠬᠤᠷᠳᠠᠬᠤ ᠲᠣᠭ᠎ᠠ %1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1268"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1266"/>
+         <source>max class repeat %1
+ </source>
+         <translation>ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠶᠡᠬᠡ ᠳᠦᠷᠦᠯ ᠤ᠋ᠨ ᠳᠠᠪᠬᠤᠴᠠᠬᠤ ᠲᠣᠭ᠎ᠠ %1
+ </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1277"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1275"/>
+         <source>max sequence %1
+ </source>
+         <translation>ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠶᠡᠬᠡ ᠳᠠᠷᠠᠭᠠᠯᠠᠯ %1
+@@ -9525,7 +9528,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">xxx ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠦᠵᠦᠬᠦᠷ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="373"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="372"/>
+         <source>Programs are not allowed to be added.</source>
+         <translation>ᠲᠤᠰ ᠫᠷᠣᠭ᠌ᠷᠠᠮ ᠨᠡᠮᠡᠬᠦ ᠵᠢ ᠵᠥᠪᠰᠢᠶᠡᠷᠡᠬᠦ ᠥᠬᠡᠢ.</translation>
+     </message>
+@@ -9812,88 +9815,88 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>ScreenlockUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="41"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="42"/>
+         <source>Show picture of screenlock on screenlogin</source>
+         <translation>ᠣᠨᠢᠰᠤᠯᠠᠭᠰᠠᠨ ᠳᠡᠯᠭᠡᠴᠡᠨ ᠤ᠋ ᠬᠠᠨᠠᠨ ᠵᠢᠷᠤᠭ ᠨᠡᠪᠳᠡᠷᠡᠬᠦ ᠵᠠᠭᠠᠭ ᠭᠠᠳᠠᠷᠭᠤ ᠳᠡᠭᠡᠷ᠎ᠡ ᠢᠯᠡᠷᠡᠬᠦ</translation>
+         <extra-contents_path>/Screenlock/Show picture of screenlock on screenlogin</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="44"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
+         <source>Leave lock (System will be locked when the paired phone gone)</source>
+         <translation>ᠣᠨᠢᠰᠤᠯᠠᠯ ᠠᠴᠠ ᠰᠠᠯᠬᠤ ( ᠭᠠᠷ ᠤᠲᠠᠰᠤ ᠠᠷᠢᠯᠤᠭᠰᠠᠨ ᠤ ᠳᠠᠷᠠᠭᠠᠬᠢ ᠰᠢᠰᠲ᠋ᠧᠮ ᠢ ᠲᠣᠭᠲᠠᠭᠠᠨ᠎ᠠ )</translation>
+         <extra-contents_path>/Screenlock/Leave lock (System will be locked when the paired phone gone)</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="46"/>
+         <source>Specified device</source>
+         <translation>ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠶᠢ ᠵᠢᠭᠠᠨ ᠲᠣᠭᠲᠠᠭᠠᠨ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="46"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="47"/>
+         <source>No paired phone. Please turn to &apos;Bluetooth&apos; to pair.</source>
+         <translation>ᠲᠣᠬᠢᠷᠠᠯᠴᠠᠭᠰᠠᠨ ᠭᠠᠷ ᠤᠲᠠᠰᠤ ᠪᠠᠢ᠌ᠬᠤ ᠦᠭᠡᠢ “ ᠬᠥᠬᠡ ᠰᠢᠳᠦ “ᠳᠦ ᠰᠢᠯᠵᠢᠭᠦᠯᠦᠨ ᠲᠣᠬᠢᠷᠠᠭᠤᠯᠤᠭᠠᠷᠠᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="66"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="67"/>
+         <source>Screenlock</source>
+         <translation>ᠳᠡᠯᠭᠡᠴᠡ ᠣᠨᠢᠰᠤᠯᠠᠬᠤ</translation>
+         <extra-contents_path>/Screenlock/Screenlock</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="96"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="97"/>
+         <source>Local Pictures</source>
+         <translation>ᠲᠤᠰ ᠭᠠᠵᠠᠷ᠎ᠤ᠋ᠨ ᠵᠢᠷᠤᠭ</translation>
+         <extra-contents_path>/Screenlock/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="98"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="99"/>
+         <source>Online Pictures</source>
+         <translation>ᠱᠤᠭᠤᠮ ᠳᠡᠭᠡᠷᠡᠬᠢ ᠵᠢᠷᠤᠭ</translation>
+         <extra-contents_path>/Screenlock/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="100"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="101"/>
+         <source>Reset To Default</source>
+         <translation>ᠠᠶᠠᠳᠠᠯ ᠢ᠋ ᠰᠡᠷᠬᠦᠬᠡᠬᠦ</translation>
+         <extra-contents_path>/Screenlock/Reset To Default</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="112"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="113"/>
+         <source>Bluetooth</source>
+         <translation>ᠬᠥᠬᠡ ᠰᠢᠳᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="117"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="118"/>
+         <source>No bluetooth adapter detected, can not use Leave Lock.</source>
+         <translation>ᠬᠥᠬᠡ ᠰᠢᠳᠦᠨ ᠦ ᠲᠣᠬᠢᠷᠠᠬᠤ ᠪᠠᠭᠠᠵᠢ ᠶᠢ ᠪᠠᠶᠢᠴᠠᠭᠠᠨ ᠰᠢᠯᠭᠠᠭᠰᠠᠨ ᠦᠭᠡᠶ ᠪᠣᠯ Leave Lock ᠶᠢ ᠬᠡᠷᠡᠭᠯᠡᠬᠦ ᠶᠢᠨ ᠠᠷᠭ᠎ᠠ ᠦᠭᠡᠶ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="136"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="138"/>
+         <source>Monitor Off</source>
+         <translation>ᠦᠵᠡᠬᠦᠷ ᠢ᠋ ᠬᠠᠭᠠᠬᠤ</translation>
+         <extra-contents_path>/Screenlock/Monitor Off</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="138"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="140"/>
+         <source>Screensaver</source>
+         <translation>ᠳᠡᠯᠭᠡᠴᠡ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ</translation>
+         <extra-contents_path>/Screenlock/Screensaver</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="141"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="143"/>
+         <source>Related Settings</source>
+         <translation>ᠬᠠᠮᠢᠶ᠎ᠠ ᠪᠦᠬᠦᠢ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ</translation>
+         <extra-contents_path>/Screenlock/Related Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="147"/>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="148"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="149"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="150"/>
+         <source>Set</source>
+         <translation>ᠰᠢᠰᠲ᠋ᠧᠮ᠎ᠦ᠋ᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="163"/>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="530"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="165"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="532"/>
+         <source>Please select device</source>
+         <translation>ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠶᠢ ᠰᠣᠩᠭᠣᠭᠠᠷᠠᠢ</translation>
+     </message>
+@@ -10112,118 +10115,118 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>ScreensaverUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="40"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="41"/>
+         <source>Screensaver</source>
+         <translation>ᠳᠡᠯᠭᠡᠴᠡ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ</translation>
+         <extra-contents_path>/Screensaver/Screensaver</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="53"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="54"/>
+         <source>Idle time</source>
+         <translation>ᠲᠤᠰ ᠴᠠᠭ ᠤ᠋ᠨ ᠬᠡᠰᠡᠭ ᠤ᠋ᠨ ᠳᠠᠷᠠᠭ᠎ᠠ ᠳᠡᠯᠭᠡᠴᠡᠨ ᠤ᠋ ᠬᠠᠮᠠᠭᠠᠯᠠᠯᠳᠠ ᠵᠢ ᠡᠬᠢᠯᠡᠬᠦᠯᠬᠦ</translation>
+         <extra-contents_path>/Screensaver/Idle time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="55"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="56"/>
+         <source>Screensaver program</source>
+         <translation>ᠳᠡᠯᠭᠡᠴᠡ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠫᠷᠣᠭ᠌ᠷᠠᠮ</translation>
+         <extra-contents_path>/Screensaver/Screensaver program</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="87"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="88"/>
+         <source>Screensaver source</source>
+         <translation>ᠳᠡᠯᠭᠡᠴᠡ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠢᠷᠡᠯᠳᠡ</translation>
+         <extra-contents_path>/Screensaver/Screensaver source</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="92"/>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="455"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="93"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="456"/>
+         <source>Select</source>
+         <translation>ᠰᠣᠩᠭᠣᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="113"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="114"/>
+         <source>Ordinal</source>
+         <translation>ᠳᠠᠷᠠᠭᠠᠯᠠᠯ ᠵᠢᠡᠷ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="114"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="115"/>
+         <source>Random</source>
+         <translation>ᠳᠠᠰᠢᠷᠠᠮ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="121"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="122"/>
+         <source>Random switching</source>
+         <translation>ᠳᠠᠰᠢᠷᠠᠮ ᠵᠢᠡᠷ ᠰᠣᠯᠢᠬᠤ</translation>
+         <extra-contents_path>/Screensaver/Random switching</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="141"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="142"/>
+         <source>Switching time</source>
+         <translation>ᠳᠠᠪᠳᠠᠮᠵᠢ ᠵᠢ ᠰᠣᠯᠢᠬᠤ</translation>
+         <extra-contents_path>/Screensaver/Switching time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="160"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="161"/>
+         <source>Text(up to 30 characters):</source>
+         <translation>ᠳᠡᠯᠭᠡᠴᠡ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠲᠸᠺᠰᠲ ( ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠣᠯᠠᠨ ᠳ᠋ᠤ᠌ ᠪᠡᠨ 30 ᠦᠰᠦᠭ):</translation>
+         <extra-contents_path>/Screensaver/Text(up to 30 characters):</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="183"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="184"/>
+         <source>Text position</source>
+         <translation>ᠲᠸᠺᠰᠲ ᠤ᠋ᠨ ᠪᠠᠢᠷᠢ</translation>
+         <extra-contents_path>/Screensaver/Text position</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="191"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="192"/>
+         <source>Centered</source>
+         <translation>ᠳᠦᠪᠯᠡᠷᠡᠬᠦᠯᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="192"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="193"/>
+         <source>Randow(Bubble text)</source>
+         <translation>ᠳᠠᠰᠢᠷᠠᠮ ( ᠬᠦᠬᠡᠰᠦ ᠲᠸᠺᠰᠲ)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="214"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="215"/>
+         <source>Show rest time</source>
+         <translation>ᠠᠮᠠᠷᠠᠬᠤ ᠴᠠᠭ ᠢ᠋ ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ</translation>
+         <extra-contents_path>/Screensaver/Show rest time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="224"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="225"/>
+         <source>Lock screen when screensaver boot</source>
+         <translation>ᠳᠡᠯᠭᠡᠴᠡᠨ ᠤ᠋ ᠬᠠᠮᠠᠭᠠᠯᠠᠯᠳᠠ ᠵᠢ ᠡᠬᠢᠯᠡᠬᠦᠯᠬᠦ ᠦᠶ᠎ᠡ ᠳ᠋ᠤ᠌ ᠳᠡᠯᠭᠡᠴᠡ ᠵᠢ ᠣᠨᠢᠰᠤᠯᠠᠬᠤ</translation>
+         <extra-contents_path>/Screensaver/Lock screen when screensaver boot</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="413"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="414"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</source>
+         <translation>ᠬᠠᠨᠠᠨ ᠵᠢᠷᠤᠭ ᠤ᠋ᠨ ᠹᠠᠢᠯ (*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="454"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="455"/>
+         <source>select custom screensaver dir</source>
+         <translation>ᠦᠪᠡᠷᠳᠡᠭᠡᠨ ᠳᠤᠭᠳᠠᠭᠠᠬᠤ ᠳᠡᠯᠭᠡᠴᠡᠨ ᠤ᠋ ᠬᠠᠮᠠᠭᠠᠯᠠᠯᠳᠠ ᠵᠢᠨ ᠵᠢᠮ ᠢ᠋ ᠰᠣᠩᠭᠣᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="456"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="457"/>
+         <source>Position: </source>
+         <translation>ᠪᠠᠢᠷᠢ: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="457"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="458"/>
+         <source>FileName: </source>
+         <translation>ᠹᠠᠢᠯ ᠤ᠋ᠨ ᠨᠡᠷ᠎ᠡ: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="458"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="459"/>
+         <source>FileType: </source>
+         <translation>ᠹᠠᠢᠯ ᠳᠦᠷᠦᠯ ᠵᠦᠢᠯ: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="459"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="460"/>
+         <source>Cancel</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+@@ -10629,32 +10632,32 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>ShortcutUi</name>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="33"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="34"/>
+         <source>System Shortcut</source>
+         <translation>ᠰᠢᠰᠲ᠋ᠧᠮ ᠤ᠋ᠨ ᠳᠦᠳᠡ ᠳᠠᠷᠤᠪᠴᠢ</translation>
+         <extra-contents_path>/Shortcut/System Shortcut</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="46"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="47"/>
+         <source>Customize Shortcut</source>
+         <translation>ᠦᠪᠡᠷᠳᠡᠭᠡᠨ ᠳᠤᠭᠳᠠᠭᠠᠬᠤ ᠳᠦᠳᠡ ᠳᠠᠷᠤᠪᠴᠢ</translation>
+         <extra-contents_path>/Shortcut/Customize Shortcut</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="77"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="81"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="98"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="102"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="180"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="269"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="481"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="79"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="83"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="100"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="104"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="182"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="271"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="483"/>
+         <source>Null</source>
+         <translation>ᠦᠭᠡᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="230"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="362"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="617"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="232"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="364"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="619"/>
+         <source>Cancel</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+@@ -10663,48 +10666,48 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">ᠬᠡᠷᠡᠭᠯᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="232"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="364"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="619"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="234"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="366"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="621"/>
+         <source>Shortcut key conflict, use it?</source>
+         <translation>ᠳᠠᠷᠤᠪᠴᠢ᠎ᠶ᠋ᠢᠨ ᠨᠡᠢᠯᠡᠮᠡᠯ᠎ᠦ᠋ᠨ ᠮᠥᠷᠭᠦᠯᠳᠦᠯ ᠂ ᠲᠤᠰ ᠨᠡᠢᠯᠡᠮᠡᠯ᠎ᠢ᠋ ᠬᠡᠷᠡᠭᠯᠡᠬᠦ ᠦᠦ ?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="233"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="365"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="235"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="367"/>
+         <source>%1 occuied, using this combination will invalidate %2</source>
+         <translation>% 1 ᠨᠢ ᠨᠢᠭᠡᠨᠲᠡ ᠡᠵᠡᠯᠡᠭᠳᠡᠭᠰᠡᠨ ᠂ ᠲᠤᠰ ᠨᠡᠢᠯᠡᠮᠡᠯ ᠨᠡᠢᠭᠡᠮᠯᠢᠭ ᠨᠢ “ % 2 ” ᠢ᠋/ ᠵᠢ ᠳᠠᠷᠤᠪᠴᠢ᠎ᠶ᠋ᠢᠨ ᠬᠠᠮᠰᠠᠯ ᠥᠬᠡᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="256"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="395"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="258"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="397"/>
+         <source>Shortcut &quot;%1&quot; occuied, please change the key combination</source>
+         <translation>ᠲᠦᠳᠡ ᠳᠠᠷᠤᠪᠴᠢ “ % 1 ” ᠨᠢ ᠨᠢᠭᠡᠨᠲᠡ ᠰᠢᠰᠲ᠋ᠧᠮ᠎ᠳ᠋ᠦ᠍ ᠡᠵᠡᠯᠡᠭᠳᠡᠭᠰᠡᠨ ᠂ ᠳᠠᠷᠤᠪᠴᠢ᠎ᠶ᠋ᠢᠨ ᠨᠡᠢᠯᠡᠮᠡᠯ᠎ᠢ᠋ ᠥᠭᠡᠷᠡᠴᠢᠯᠡᠬᠦ ᠪᠣᠯᠪᠠᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="447"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="449"/>
+         <source>Edit</source>
+         <translation>ᠨᠠᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="448"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="450"/>
+         <source>Delete</source>
+         <translation>ᠰᠢᠯᠵᠢᠬᠦᠯᠵᠤ ᠬᠠᠰᠤᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="231"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="363"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="618"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="233"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="365"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="620"/>
+         <source>Continue</source>
+         <translation>ᠦᠷᠭᠦᠯᠵᠢᠯᠡᠨ᠎ᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="620"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="622"/>
+         <source>&quot;%1&quot; occuied, using this combination will invalidate &quot;%2&quot;.</source>
+         <translation>“%1” ᠨᠢᠭᠡᠨᠲᠡ ᠬᠥᠨᠵᠢᠯᠡ ᠳᠡᠢ᠌ᠯ“ %2”ᠡᠵᠡᠯᠡᠨ ᠬᠡᠷᠡᠭᠯᠡᠪᠡᠯ ᠂ ᠦᠷᠭᠦᠯᠵᠢᠯᠡᠨ ᠲᠤᠰ ᠴᠢᠳᠠᠮᠵᠢ ᠶᠢ ᠲᠦᠷᠭᠡᠨ ᠳᠠᠷᠤᠭᠤᠯ ᠦᠭᠡᠢ ᠪᠣᠯᠭᠠᠨ᠎.</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="660"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="662"/>
+         <source> or </source>
+         <translation> ᠡᠰᠡᠬᠦᠯ᠎ᠡ </translation>
+     </message>
+@@ -10802,7 +10805,7 @@ E-mail: support@kylinos.cn</source>
+         <translation>ᠲᠤᠬᠠᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/statusdialog.cpp" line="59"/>
++        <location filename="../../../plugins/system/about/statusdialog.cpp" line="60"/>
+         <source>Activation Code</source>
+         <translation>ᠢᠳᠡᠪᠬᠢᠵᠢᠬᠦᠯᠬᠦ ᠺᠣᠳ᠋</translation>
+     </message>
+@@ -11219,117 +11222,117 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">主题模式</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="111"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="534"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="108"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="539"/>
+         <source>Theme</source>
+         <translation>ᠭᠣᠤᠯ ᠰᠡᠳᠦᠪ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
+         <source>Default</source>
+         <translation>ᠭᠦᠨ ᠬᠦᠶᠦᠬᠡᠨ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="182"/>
+         <source>Light</source>
+         <translation>ᠬᠦᠶᠦᠭᠡᠨ ᠦᠩᠭᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
+         <source>Dark</source>
+         <translation>ᠭᠦᠨ ᠦᠩᠭᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="190"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
+         <source>Auto</source>
+         <translation>ᠭᠤᠤᠯ ᠰᠡᠳᠦᠪ ᠢ᠋ ᠳᠠᠭᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="423"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="426"/>
+         <source>Corlor</source>
+         <translation>ᠳᠤᠳᠤᠳᠬᠠᠬᠤ ᠦᠩᠭᠡ</translation>
+         <extra-contents_path>/Theme/Corlor</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="608"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="614"/>
+         <source>Other</source>
+         <translation>ᠪᠤᠰᠤᠳ</translation>
+         <extra-contents_path>/Theme/Other</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="613"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="619"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="623"/>
+         <source>Set</source>
+         <translation>ᠰᠢᠰᠲ᠋ᠧᠮ᠎ᠦ᠋ᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="611"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
+         <source>Wallpaper</source>
+         <translation>ᠰᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ ᠤ᠋ᠨ ᠬᠠᠨᠠᠨ ᠵᠢᠷᠤᠭ</translation>
+         <extra-contents_path>/Theme/Wallpaper</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="224"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="223"/>
+         <source>Corner</source>
+         <translation>ᠪᠤᠯᠤᠩ</translation>
+         <extra-contents_path>/Theme/Corner</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="229"/>
+         <source>Right angle</source>
+         <translation>ᠰᠢᠭᠤᠳ ᠪᠤᠯᠤᠩ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
+         <source>Small</source>
+         <translation>ᠪᠠᠭ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="232"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
+         <source>Big</source>
+         <translation>ᠶᠡᠬᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="615"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="621"/>
+         <source>Beep</source>
+         <translation>ᠰᠠᠨᠠᠭᠤᠯᠬᠤ ᠳᠠᠭᠤ</translation>
+         <extra-contents_path>/Theme/Beep</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="963"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="972"/>
+         <source>Blue-Crystal</source>
+         <translation>ᠳ᠋ᠢᠶᠠᠨ ᠯᠠᠨ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="965"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="974"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1058"/>
+         <source>Light-Seeking</source>
+         <translation>ᠭᠡᠷᠡᠯ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="967"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="976"/>
+         <source>DMZ-Black</source>
+         <translation>DMZ- ᠬᠠᠷ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="969"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="978"/>
+         <source>DMZ-White</source>
+         <translation>ᠴᠠᠭᠠᠨ ᠳᠠᠷᠤᠮᠯᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="971"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="980"/>
+         <source>Dark-Sense</source>
+         <translation>ᠬᠢᠯᠤᠬᠡᠷ ᠬᠠᠷ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1045"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1054"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1058"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1064"/>
+         <source>basic</source>
+         <translation>ᠰᠠᠭᠤᠷᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1056"/>
+         <source>Classic</source>
+         <translation>ᠰᠤᠩᠭᠤᠳᠠᠭ</translation>
+     </message>
+@@ -11342,57 +11345,57 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">时尚</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1053"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1062"/>
+         <source>hp</source>
+         <translation>ᠬᠤᠢ ᠫᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1064"/>
+         <source>ukui</source>
+         <translation>ukui</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1051"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1060"/>
+         <source>HeYin</source>
+         <translation>ᠶᠢᠨ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1056"/>
+         <source>classic</source>
+         <translation>ᠰᠤᠩᠭᠤᠳᠠᠭ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1057"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1066"/>
+         <source>daybreakBlue</source>
+         <translation>ᠬᠥᠬᠡ ᠦᠩᠭᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1059"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1068"/>
+         <source>jamPurple</source>
+         <translation>ᠬᠦᠷᠡᠩ ᠦᠩᠭᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1061"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1070"/>
+         <source>magenta</source>
+         <translation>ᠮᠠᠨᠳᠠᠷᠸ᠎ᠠ ᠤᠯᠠᠭᠠᠨ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1063"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1072"/>
+         <source>sunRed</source>
+         <translation>ᠤᠯᠠᠭᠠᠨ ᠦᠩᠭᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1065"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1074"/>
+         <source>sunsetOrange</source>
+         <translation>ᠰᠢᠷ᠎ᠠ ᠦᠩᠭᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1067"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1076"/>
+         <source>dustGold</source>
+         <translation>ᠰᠢᠷ᠎ᠠ ᠦᠩᠭᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1069"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1078"/>
+         <source>polarGreen</source>
+         <translation>ᠨᠣᠭᠣᠭᠠᠨ ᠦᠩᠭᠡ</translation>
+     </message>
+@@ -11405,13 +11408,13 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">中</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="248"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="247"/>
+         <source>Window Theme</source>
+         <translation>ᠴᠣᠩᠬᠣᠨ ᠤ᠋ ᠭᠠᠳᠠᠷ ᠦᠵᠡᠮᠵᠢ</translation>
+         <extra-contents_path>/Theme/Window Theme</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="250"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="249"/>
+         <source>Icon theme</source>
+         <translation>ᠢᠺᠦᠨ ᠵᠢᠷᠤᠭ</translation>
+         <extra-contents_path>/Theme/Icon theme</extra-contents_path>
+@@ -11421,19 +11424,19 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">控件主题</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="253"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="252"/>
+         <source>Cursor theme</source>
+         <translation>ᠺᠸᠰᠸ</translation>
+         <extra-contents_path>/Theme/Cursor theme</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="215"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="214"/>
+         <source>Effect setting</source>
+         <translation>ᠴᠣᠩᠬᠣᠨ ᠤ᠋ ᠣᠨᠴᠠᠭᠠᠢ ᠦᠷ᠎ᠡ ᠳ᠋ᠦᠩ</translation>
+         <extra-contents_path>/Theme/Effect setting</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="222"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="221"/>
+         <source>Transparency</source>
+         <translation>ᠳᠤᠩᠭᠠᠯᠠᠭ ᠤ᠋ᠨ ᠬᠡᠮᠵᠢᠶ᠎ᠡ</translation>
+         <extra-contents_path>/Theme/Transparency</extra-contents_path>
+@@ -11443,7 +11446,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">透明特效</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="220"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="219"/>
+         <source>Performance mode</source>
+         <translation>ᠣᠨᠴᠠᠭᠠᠢ ᠦᠷ᠎ᠡ ᠳ᠋ᠦᠩ ᠤ᠋ᠨ ᠵᠠᠭᠪᠤᠷ</translation>
+         <extra-contents_path>/Theme/Performance mode</extra-contents_path>
+@@ -11472,27 +11475,27 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>TimeBtn</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="106"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="107"/>
+         <source>Tomorrow</source>
+         <translation>ᠮᠠᠷᠭᠠᠰᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="108"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="109"/>
+         <source>Yesterday</source>
+         <translation>ᠥᠴᠥᠭᠡᠳᠦᠷ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="110"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="111"/>
+         <source>Today</source>
+         <translation>ᠥᠨᠥᠳᠥᠷ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="128"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="129"/>
+         <source>%1 hours earlier than local</source>
+         <translation>ᠲᠤᠰ ᠭᠠᠵᠠᠷ ᠡᠴᠡ %1 ᠴᠠᠭ ᠡᠷᠲᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="130"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="131"/>
+         <source>%1 hours later than local</source>
+         <translation>ᠲᠤᠰ ᠭᠠᠵᠠᠷ ᠡᠴᠡ %1 ᠴᠠᠭ ᠤᠷᠤᠢ</translation>
+     </message>
+@@ -11500,12 +11503,12 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>TimeZoneChooser</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="35"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="34"/>
+         <source>Cancel</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="37"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="36"/>
+         <source>Confirm</source>
+         <translation>ᠪᠠᠳᠤᠯᠠᠬᠤ</translation>
+     </message>
+@@ -11514,7 +11517,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">更改时区</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="33"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="32"/>
+         <source>Search Timezone</source>
+         <translation>ᠴᠠᠭ ᠤ᠋ᠨ ᠣᠷᠣᠨ ᠢ᠋ ᠬᠠᠢᠬᠤ</translation>
+     </message>
+@@ -11523,7 +11526,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">搜索时区</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="64"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="63"/>
+         <source>To select a time zone, please click where near you on the map and select a city from the nearest city</source>
+         <translation>ᠴᠠᠭ ᠤ᠋ᠨ ᠣᠷᠣᠨ ᠢ᠋ ᠰᠣᠩᠭᠣᠬᠤ ᠳ᠋ᠤ᠌ ᠬᠦᠷᠪᠡᠯ᠂ ᠭᠠᠵᠠᠷ ᠤ᠋ᠨ ᠵᠢᠷᠤᠭ ᠳᠡᠭᠡᠷ᠎ᠡ ᠥᠪᠡᠷ ᠤ᠋ᠨ ᠪᠠᠢᠭ᠎ᠠ ᠪᠠᠢᠷᠢ ᠵᠢ ᠳᠤᠪᠴᠢᠳᠠᠵᠤ᠂ ᠬᠠᠮᠤᠭ ᠤ᠋ᠨ ᠤᠢᠷᠠᠯᠴᠠᠭ᠎ᠠ ᠬᠤᠳᠠ ᠡᠴᠡ ᠨᠢᠭᠡ ᠬᠤᠳᠠ ᠵᠢ ᠰᠣᠩᠭᠣᠭᠠᠷᠠᠢ</translation>
+     </message>
+@@ -11536,7 +11539,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">更改时区</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="40"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="39"/>
+         <source>Change Timezone</source>
+         <translation>ᠴᠠᠭ ᠤ᠋ᠨ ᠣᠷᠣᠨ ᠢ᠋ ᠦᠬᠡᠷᠡᠴᠢᠯᠡᠬᠦ</translation>
+     </message>
+@@ -11678,12 +11681,12 @@ E-mail: support@kylinos.cn</source>
+         <translation>ᠰᠢᠰᠲ᠋ᠧᠮ᠎ᠦ᠋ᠨ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="37"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="38"/>
+         <source>Yinhe Kylin OS(Trail Version) Disclaimer</source>
+         <translation>ᠳᠡᠭᠷᠢ ᠵᠢᠨ ᠣᠶᠣᠳᠠᠯ ᠴᠢ ᠯᠢᠨ ᠠᠵᠢᠯᠯᠠᠬᠤᠢ ᠵᠢᠨ ᠰᠢᠰᠲ᠋ᠧᠮ ( ᠳᠤᠷᠰᠢᠨ ᠬᠡᠷᠡᠭᠯᠡᠬᠦ) ᠤ᠋ᠨ ᠬᠠᠷᠢᠭᠤᠴᠠᠯᠭ᠎ᠠ ᠡᠴᠡ ᠬᠡᠯᠳᠦᠷᠢᠬᠦᠯᠬᠦ ᠳᠤᠳᠤᠷᠬᠠᠢᠯᠠᠯᠳᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="46"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="47"/>
+         <source>Dear customer:
+        Thank you for trying Yinhe Kylin OS(trail version)! This version is free for users who only try out, no commercial purpose is permitted. The trail period lasts one year and it starts from the ex-warehouse time of the OS. No after-sales service is provided during the trail stage. If any security problems occurred when user put important files or do any commercial usage in system, all consequences are taken by users. Kylin software Co., Ltd. take no legal risk in trail version.
+        During trail stage,if you want any technology surpport or activate the system, please buy“Yinhe Kylin Operating System”official version or authorization by contacting 400-089-1870.</source>
+@@ -11700,7 +11703,7 @@ E-mail: support@kylinos.cn</source>
+     在试用过程中,如希望激活或者得到专业的技术服务支持,请您购买“银河麒麟操作系统”正式版本或授权,联系方式如下:400-089-1870。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="60"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="61"/>
+         <source>Kylin software Co., Ltd.</source>
+         <translation>ᠴᠢ ᠯᠢᠨ ᠰᠣᠹᠲ ᠤ᠋ᠨ ᠬᠢᠵᠠᠭᠠᠷᠳᠤ ᠺᠣᠮᠫᠠᠨᠢ.</translation>
+     </message>
+@@ -12125,12 +12128,12 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">管理员用户</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1045"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1043"/>
+         <source>root</source>
+         <translation>ᠦᠨᠳᠦᠰᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1013"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1011"/>
+         <source>Hint</source>
+         <translation>ᠠᠩᠬᠠᠷᠤᠭᠤᠯᠬᠤ</translation>
+     </message>
+@@ -12139,32 +12142,32 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">更改账户类型需要注销后生效,是否注销?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="913"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="911"/>
+         <source>The account type of “%1” has been modified, will take effect after logout, whether to logout?</source>
+         <translation>“%1” ᠳᠠᠩᠰᠠᠨ ᠤ᠋ ᠳᠦᠷᠦᠯ ᠵᠦᠢᠯ ᠨᠢᠭᠡᠨᠳᠡ ᠵᠠᠰᠠᠭᠳᠠᠪᠠ᠂ ᠰᠢᠰᠲ᠋ᠧᠮ ᠢ᠋ ᠳᠠᠩᠰᠠᠨ ᠡᠴᠡ ᠬᠠᠰᠤᠭᠰᠠᠨ ᠤ᠋ ᠳᠠᠷᠠᠭ᠎ᠠ ᠬᠦᠴᠦᠨ ᠲᠠᠢ ᠪᠣᠯᠤᠨ᠎ᠠ᠂ ᠰᠢᠰᠲ᠋ᠧᠮ ᠢ᠋ ᠳᠠᠩᠰᠠᠨ ᠡᠴᠡ ᠬᠠᠰᠤᠬᠤ ᠤᠤ ?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="914"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="912"/>
+         <source>logout later</source>
+         <translation>ᠤᠳᠠᠰᠬᠢᠭᠠᠳ ᠳᠠᠩᠰᠠᠨ ᠡᠴᠡ ᠬᠠᠰᠤᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="915"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="913"/>
+         <source>logout now</source>
+         <translation>ᠳᠠᠷᠤᠢ ᠳᠠᠩᠰᠠᠨ ᠡᠴᠡ ᠬᠠᠰᠤᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1014"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1012"/>
+         <source>The system only allows one user to log in automatically.After it is turned on, the automatic login of other users will be turned off.Is it turned on?</source>
+         <translation>ᠰᠢᠰᠲ᠋ᠧᠮ ᠵᠥᠪᠬᠡᠨ ᠨᠢᠭᠡ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠠᠦ᠋ᠲ᠋ᠣ᠋ ᠪᠡᠷ ᠨᠡᠪᠳᠡᠷᠡᠬᠦ ᠵᠢ ᠵᠥᠪᠰᠢᠶᠡᠷᠡᠨ᠎ᠡ᠂ ᠡᠬᠢᠯᠡᠬᠦᠯᠦᠭᠰᠡᠨ ᠤ᠋ ᠳᠠᠷᠠᠭ᠎ᠠ ᠪᠤᠰᠤᠳ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠠᠦ᠋ᠲ᠋ᠣ᠋ ᠪᠡᠷ ᠨᠡᠪᠳᠡᠷᠡᠬᠦ ᠵᠢ ᠬᠠᠭᠠᠨ᠎ᠠ᠂ ᠡᠬᠢᠯᠡᠬᠦᠯᠬᠦ ᠤᠤ ?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1017"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1015"/>
+         <source>Trun on</source>
+         <translation>ᠡᠬᠢᠯᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1018"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1016"/>
+         <source>Close on</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+@@ -12181,12 +12184,12 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">验证</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1041"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1039"/>
+         <source>Standard</source>
+         <translation>ᠪᠠᠷᠢᠮᠵᠢᠶ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1043"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1041"/>
+         <source>Admin</source>
+         <translation>ᠬᠠᠮᠢᠶᠠᠷᠤᠭᠴᠢ</translation>
+     </message>
+@@ -12195,19 +12198,19 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">删除</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="171"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="170"/>
+         <source>CurrentUser</source>
+         <translation>ᠣᠳᠣᠬᠠᠨ ᠤ᠋ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ</translation>
+         <extra-contents_path>/Userinfo/CurrentUser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="177"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="176"/>
+         <source>OthersUser</source>
+         <translation>ᠪᠤᠰᠤᠳ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ</translation>
+         <extra-contents_path>/Userinfo/OthersUser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="179"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="178"/>
+         <source>Add</source>
+         <translation>ᠨᠡᠮᠡᠬᠦ</translation>
+         <extra-contents_path>/Userinfo/Add</extra-contents_path>
+@@ -12217,19 +12220,19 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">ᠨᠢᠭᠤᠴᠠ ᠺᠣᠳ᠋ ᠢ᠋ ᠵᠠᠰᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="219"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="218"/>
+         <source>Groups</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠪᠦᠯᠦᠭ</translation>
+         <extra-contents_path>/Userinfo/Groups</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="271"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="270"/>
+         <source>AutoLoginOnBoot</source>
+         <translation>ᠮᠠᠰᠢᠨ ᠨᠡᠬᠡᠬᠡᠬᠦ ᠳ᠋ᠤ᠌ ᠠᠦ᠋ᠲ᠋ᠣ᠋ ᠪᠡᠷ ᠨᠡᠪᠳᠡᠷᠡᠬᠦ</translation>
+         <extra-contents_path>/Userinfo/AutoLoginOnBoot</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="266"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="265"/>
+         <source>LoginWithoutPwd</source>
+         <translation>ᠨᠢᠭᠤᠴᠠ ᠺᠣᠳ᠋ ᠥᠬᠡᠢ ᠪᠡᠷ ᠨᠡᠪᠳᠡᠷᠡᠬᠦ</translation>
+         <extra-contents_path>/Userinfo/LoginWithoutPwd</extra-contents_path>
+@@ -12240,12 +12243,12 @@ E-mail: support@kylinos.cn</source>
+         <extra-contents_path>/Userinfo/enable autoLogin</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="540"/>
+         <source>Warning</source>
+         <translation>ᠰᠡᠷᠡᠮᠵᠢᠯᠡᠬᠦᠯᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="540"/>
+         <source>The user is logged in, please delete the user after logging out</source>
+         <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠨᠢᠭᠡᠨᠳᠡ ᠨᠡᠪᠳᠡᠷᠡᠪᠡ᠂ ᠳᠠᠩᠰᠠᠨ ᠡᠴᠡ ᠬᠠᠰᠤᠭᠰᠠᠨ ᠤ᠋ ᠳᠠᠷᠠᠭ᠎ᠠ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢ ᠬᠠᠰᠤᠭᠠᠷᠠᠢ</translation>
+     </message>
+@@ -12277,14 +12280,14 @@ E-mail: support@kylinos.cn</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="309"/>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="207"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="206"/>
+         <source>Password</source>
+         <translation>ᠨᠢᠭᠤᠴᠠ ᠺᠣᠳ᠋᠎ᠢ᠋ ᠵᠠᠰᠠᠬᠤ</translation>
+         <extra-contents_path>/Userinfo/Password</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="331"/>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="213"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="212"/>
+         <source>Type</source>
+         <translation>ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠠᠷᠭ᠎ᠠ</translation>
+         <extra-contents_path>/Userinfo/Type</extra-contents_path>
+@@ -12566,19 +12569,19 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">背景</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="31"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="48"/>
+         <source>Background</source>
+         <translation>ᠠᠷᠤ ᠦᠵᠡᠭᠳᠡᠯ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="156"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="195"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="214"/>
+         <source>picture</source>
+         <translation>ᠵᠢᠷᠤᠭ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="153"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="195"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="211"/>
+         <source>color</source>
+         <translation>ᠦᠩᠭᠡ</translation>
+     </message>
+@@ -12591,43 +12594,43 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">自定义颜色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="167"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="225"/>
+         <source>wallpaper</source>
+         <translation>ᠬᠡᠪᠳᠡᠭᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="169"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="227"/>
+         <source>centered</source>
+         <translation>ᠳᠦᠪᠯᠡᠷᠡᠬᠦᠯᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="165"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="223"/>
+         <source>scaled</source>
+         <translation>ᠳᠠᠭᠯᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="171"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="229"/>
+         <source>stretched</source>
+         <translation>ᠰᠤᠩᠭᠠᠭᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="173"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="231"/>
+         <source>zoom</source>
+         <translation>ᠵᠣᠬᠢᠴᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="175"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="233"/>
+         <source>spanned</source>
+         <translation>ᠠᠯᠤᠰᠯᠠᠭᠰᠠᠨ ᠬᠡᠰᠡᠭ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="219"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="277"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
+         <translation>ᠵᠢᠷᠤᠭ ᠤ᠋ᠨ ᠹᠠᠢᠯ (*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</translation>
+     </message>
+@@ -12636,32 +12639,32 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">所有文件(*.*)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="259"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="317"/>
+         <source>select custom wallpaper file</source>
+         <translation>ᠦᠪᠡᠷᠳᠡᠭᠡᠨ ᠳᠤᠭᠳᠠᠭᠠᠬᠤ ᠬᠠᠨᠠᠨ ᠵᠢᠷᠤᠭ ᠤ᠋ᠨ ᠹᠠᠢᠯ ᠢ᠋ ᠰᠣᠩᠭᠣᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="260"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="318"/>
+         <source>Select</source>
+         <translation>ᠰᠣᠩᠭᠣᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="261"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="319"/>
+         <source>Position: </source>
+         <translation>ᠪᠠᠢᠷᠢ: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="262"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="320"/>
+         <source>FileName: </source>
+         <translation>ᠹᠠᠢᠯ ᠤ᠋ᠨ ᠨᠡᠷ᠎ᠡ: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="263"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="321"/>
+         <source>FileType: </source>
+         <translation>ᠹᠠᠢᠯ ᠳᠦᠷᠦᠯ ᠵᠦᠢᠯ: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="264"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="322"/>
+         <source>Cancel</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+@@ -12669,37 +12672,37 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>WallpaperUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="28"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="29"/>
+         <source>Background</source>
+         <translation>ᠠᠷᠤ ᠦᠵᠡᠭᠳᠡᠯ</translation>
+         <extra-contents_path>/Wallpaper/Background</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="30"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="31"/>
+         <source>Type</source>
+         <translation>ᠢᠯᠡᠷᠡᠬᠦᠯᠬᠦ ᠠᠷᠭ᠎ᠠ</translation>
+         <extra-contents_path>/Wallpaper/Type</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="66"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="67"/>
+         <source>Desktop Background</source>
+         <translation>ᠰᠢᠷᠡᠭᠡᠨ ᠨᠢᠭᠤᠷ ᠤ᠋ᠨ ᠠᠷᠤ ᠦᠵᠡᠭᠳᠡᠯ</translation>
+         <extra-contents_path>/Wallpaper/Desktop Background</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="93"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="94"/>
+         <source>Local Pictures</source>
+         <translation>ᠲᠤᠰ ᠭᠠᠵᠠᠷ᠎ᠤ᠋ᠨ ᠵᠢᠷᠤᠭ</translation>
+         <extra-contents_path>/Wallpaper/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="95"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="96"/>
+         <source>Online Pictures</source>
+         <translation>ᠱᠤᠭᠤᠮ ᠳᠡᠭᠡᠷᠡᠬᠢ ᠵᠢᠷᠤᠭ</translation>
+         <extra-contents_path>/Wallpaper/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="97"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="98"/>
+         <source>Reset To Default</source>
+         <translation>ᠠᠶᠠᠳᠠᠯ ᠢ᠋ ᠰᠡᠷᠬᠦᠬᠡᠬᠦ</translation>
+         <extra-contents_path>/Wallpaper/Reset To Default</extra-contents_path>
+@@ -12721,85 +12724,85 @@ E-mail: support@kylinos.cn</source>
+         <extra-contents_path>/display/night mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="267"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="288"/>
+         <source>Night Mode</source>
+         <translation>ᠦᠩᠭᠡ ᠵᠢᠨ ᠳᠤᠯᠠᠭᠠᠴᠠ</translation>
+         <extra-contents_path>/Display/Night Mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1987"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2013"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="299"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2046"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2072"/>
+         <source>Open</source>
+         <translation>ᠰᠣᠩᠭᠣᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="291"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="312"/>
+         <source>Time</source>
+         <translation>ᠤᠷᠳᠤᠳᠬᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="301"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="322"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2132"/>
+         <source>Custom Time</source>
+         <translation>ᠦᠪᠡᠷᠳᠡᠭᠡᠨ ᠳᠤᠭᠳᠠᠭᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="312"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="333"/>
+         <source>to</source>
+         <translation>ᠬᠦᠷᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="285"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="330"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="306"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="351"/>
+         <source>Color Temperature</source>
+         <translation>ᠳᠡᠯᠭᠡᠴᠡᠨ ᠤ᠋ ᠦᠩᠭᠡ ᠵᠢᠨ ᠳᠤᠯᠠᠭᠠᠴᠠ</translation>
+         <extra-contents_path>/Display/Color Temperature</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="293"/>
+         <source>Eye Protection Mode</source>
+         <translation>ᠨᠢᠳᠦ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠬᠡᠯᠪᠡᠷᠢ</translation>
+         <extra-contents_path>/Display/Eye protection mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="293"/>
+         <source>When turned on, it can reduce blue light to prevent eye, the screen will turn yellow.</source>
+         <translation>ᠨᠡᠬᠡᠬᠡᠭᠰᠡᠨ ᠤ᠋ ᠳᠠᠷᠠᠭ᠎ᠠ ᠴᠡᠩᠬᠡᠷ ᠭᠡᠷᠡᠯ ᠰᠠᠴᠤᠷᠠᠭ᠎ᠢ᠋ ᠪᠠᠭᠠᠰᠬᠠᠵᠤ᠂ ᠨᠢᠳᠦᠨ᠎ᠦ᠌ ᠶᠠᠳᠠᠷᠠᠭ᠎ᠠ᠎ᠶ᠋ᠢ ᠳᠠᠢᠯᠵᠤ᠂ ᠳᠡᠯᠭᠡᠴᠡ ᠲᠣᠳᠣᠷᠬᠠᠢ ᠬᠡᠮᠵᠢᠶ᠎ᠡ ᠪᠡᠷ ᠰᠢᠷ᠎ᠠ ᠪᠤᠯᠤᠨ᠎ᠠ.</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="299"/>
+         <source>When turned on, it will reduce the blue light of the screen.</source>
+         <translation>ᠳᠠᠷᠠᠭ᠎ᠠ ᠨᠢ ᠳᠡᠯᠭᠡᠴᠡᠨ᠎ᠦ᠌ ᠥᠩᠭᠡ᠎ᠶ᠋ᠢᠨ ᠳᠤᠯᠠᠭᠠᠨ᠎ᠢ᠋ ᠲᠤᠶᠠᠭᠠᠨ᠎ᠳ᠋ᠤ᠌ ᠵᠣᠬᠢᠴᠠᠭᠤᠯᠤᠭᠠᠳ ᠳᠡᠯᠭᠡᠴᠡ᠎ᠶ᠋ᠢᠨ ᠴᠡᠩᠬᠡᠷ ᠭᠡᠷᠡᠯ᠎ᠢ᠋ ᠪᠠᠭᠤᠷᠠᠭᠤᠯᠤᠭᠠᠷᠠᠢ.</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="283"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="304"/>
+         <source>Color Temperature And Eye Care</source>
+         <translation>ᠬᠠᠷ᠎ᠠ ᠨᠢᠳᠦ</translation>
+         <extra-contents_path>/Display/Color Temperature And Eye Care</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="332"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="353"/>
+         <source>Warmer</source>
+         <translation>ᠨᠡᠯᠢᠶᠡᠳ ᠳᠤᠯᠠᠭᠠᠨ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="333"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="354"/>
+         <source>Colder</source>
+         <translation>ᠨᠡᠯᠢᠶᠡᠳ ᠬᠦᠢᠳᠡᠨ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="611"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="632"/>
+         <source>Multi-screen</source>
+         <translation>ᠣᠯᠠᠨ ᠳᠡᠯᠭᠡᠴᠡ ᠪᠡᠷ ᠢᠯᠡᠷᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="616"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="637"/>
+         <source>First Screen</source>
+         <translation>ᠨᠢᠭᠡᠳᠦᠬᠡᠷ ᠳᠡᠯᠭᠡᠴᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="620"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="641"/>
+         <source>Clone Screen</source>
+         <translation>ᠳᠤᠯᠢᠳᠠᠰᠤ</translation>
+     </message>
+@@ -12816,7 +12819,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">ᠭᠣᠣᠯ ᠳᠡᠯᠭᠡᠴᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2745"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2845"/>
+         <source>Auto Brightness</source>
+         <translation>ᠬᠡᠷᠡᠯᠳᠦᠴᠡ ᠵᠢ ᠠᠦ᠋ᠲ᠋ᠣ᠋ ᠪᠡᠷ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
+         <extra-contents_path>/Display/Auto Brightness</extra-contents_path>
+@@ -12826,32 +12829,32 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">ᠣᠷᠴᠢᠨ ᠲᠣᠭᠣᠷᠢᠨ ᠤ᠋ ᠬᠡᠷᠡᠯᠳᠦᠴᠡ ᠵᠢ ᠮᠡᠳᠡᠷᠡᠬᠦ ᠪᠡᠷ ᠳᠠᠮᠵᠢᠭᠤᠯᠤᠨ ᠳᠡᠯᠭᠡᠴᠡᠨ ᠤ᠋ ᠬᠡᠷᠡᠯᠳᠦᠴᠡ ᠵᠢ ᠠᠦ᠋ᠲ᠋ᠣ᠋ ᠪᠡᠷ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠬᠤ ᠪᠣᠯᠤᠨ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="793"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="822"/>
+         <source>scale</source>
+         <translation>ᠠᠪᠴᠢᠭᠤᠯᠬᠤ ᠨᠣᠷᠮ᠎ᠠ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="798"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="827"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after 14 seconds&lt;/font&gt;</source>
+         <translation>ᠳᠡᠯᠭᠡᠴᠡ %1 ᠢ᠋/ ᠵᠢ ᠨᠢᠭᠡᠨᠳᠡ ᠵᠠᠰᠠᠪᠠ᠂ ᠬᠠᠳᠠᠭᠠᠯᠠᠬᠤ ᠤᠤ ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt; ᠰᠢᠰᠲ᠋ᠧᠮ ᠨᠢ 14 ᠰᠸᠺᠦ᠋ᠨ᠋ᠲ ᠤ᠋ᠨ ᠳᠠᠷᠠᠭ᠎ᠠ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ ᠵᠢ ᠰᠡᠷᠬᠦᠬᠡᠨ᠎ᠡ᠃&lt;/font&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="809"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="838"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after %2 seconds&lt;/font&gt;</source>
+         <translation>ᠳᠡᠯᠭᠡᠴᠡ %1 ᠢ᠋/ ᠵᠢ ᠨᠢᠭᠡᠨᠳᠡ ᠵᠠᠰᠠᠪᠠ᠂ ᠬᠠᠳᠠᠭᠠᠯᠠᠬᠤ ᠤᠤ ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt; ᠰᠢᠰᠲ᠋ᠧᠮ ᠨᠢ %2 ᠰᠸᠺᠦ᠋ᠨ᠋ᠲ ᠤ᠋ᠨ ᠳᠠᠷᠠᠭ᠎ᠠ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ ᠵᠢ ᠰᠡᠷᠬᠦᠬᠡᠨ᠎ᠡ᠃&lt;/font&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1023"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1069"/>
+         <source>The zoom has been modified, it will take effect after you log off</source>
+         <translation>ᠳᠡᠯᠭᠡᠴᠡ᠎ᠶ᠋ᠢᠨ ᠶᠡᠬᠡᠰᠬᠡᠯ ᠨᠢᠭᠡᠨᠲᠡ ᠥᠭᠡᠷᠡᠴᠢᠯᠡᠭᠳᠡᠪᠡ ᠂ ᠳᠠᠩᠰᠠᠨ᠎ᠠ᠋ᠴᠠ ᠬᠠᠰᠤᠭᠰᠠᠨ᠎ᠤ᠋ ᠳᠠᠷᠠᠭ᠎ᠠ ᠬᠦᠴᠦᠨ᠎ᠲᠡᠢ ᠪᠣᠯᠬᠤ ᠴᠢᠬᠤᠯᠠᠲᠠᠢ ᠃</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2774"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2874"/>
+         <source>as main</source>
+         <translation>ᠭᠤᠤᠯ ᠳᠡᠯᠭᠡᠴᠡ ᠪᠡᠷ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2795"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2895"/>
+         <source>open monitor</source>
+         <translation>ᠢᠯᠡᠷᠡᠬᠦᠯᠦᠭᠴᠢ ᠵᠢ ᠨᠡᠬᠡᠬᠡᠬᠦ</translation>
+     </message>
+@@ -12864,39 +12867,39 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">ᠳᠡᠯᠭᠡᠴᠡ %1 ᠢ᠋/ ᠵᠢ ᠨᠢᠭᠡᠨᠳᠡ ᠵᠠᠰᠠᠪᠠ᠂ ᠬᠠᠳᠠᠭᠠᠯᠠᠬᠤ ᠤᠤ ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt; ᠰᠢᠰᠲ᠋ᠧᠮ ᠨᠢ %2 ᠰᠸᠺᠦ᠋ᠨ᠋ᠲ ᠤ᠋ᠨ ᠳᠠᠷᠠᠭ᠎ᠠ ᠠᠦ᠋ᠲ᠋ᠣ᠋ ᠪᠡᠷ ᠬᠠᠳᠠᠭᠠᠯᠠᠨ᠎ᠠ᠃&lt;/font&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2253"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2259"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2316"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2322"/>
+         <source>Follow the sunrise and sunset</source>
+         <translation>ᠨᠠᠷᠠ ᠭᠠᠷᠬᠤ ᠬᠢᠭᠡᠳ ᠨᠠᠷᠠ ᠤᠨᠠᠬᠤ᠎ᠶᠢ ᠳᠠᠭᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="619"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="640"/>
+         <source>Extend Screen</source>
+         <translation>ᠦᠷᠬᠡᠳᠬᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="617"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="638"/>
+         <source>Vice Screen</source>
+         <translation>ᠪᠤᠰᠤᠳ ᠳᠡᠯᠭᠡᠴᠡ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="622"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2639"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="643"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2739"/>
+         <source>Splice Screen</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2702"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2802"/>
+         <source>Splicing Method</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2705"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2805"/>
+         <source>Change</source>
+         <translation>ᠦᠬᠡᠷᠡᠴᠢᠯᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2773"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2873"/>
+         <source>monitor</source>
+         <translation>ᠦᠵᠡᠬᠦᠷ</translation>
+     </message>
+@@ -12909,17 +12912,17 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">ᠭᠤᠤᠯ ᠰᠡᠳᠦᠪ ᠰᠥᠨᠢ ᠵᠢᠨ ᠵᠠᠭᠪᠤᠷ ᠢ᠋ ᠳᠠᠭᠠᠵᠤ ᠬᠤᠪᠢᠷᠠᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="784"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="813"/>
+         <source>resolution</source>
+         <translation>ᠢᠯᠭᠠᠮᠵᠢ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="787"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="816"/>
+         <source>orientation</source>
+         <translation>ᠴᠢᠭᠯᠡᠯ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="790"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="819"/>
+         <source>frequency</source>
+         <translation>ᠰᠢᠨᠡᠳᠬᠡᠬᠦ ᠨᠣᠷᠮ᠎ᠠ</translation>
+     </message>
+@@ -12933,12 +12936,12 @@ the settings will be saved after 14 seconds</source>
+         <translation type="vanished">是否保留当前修改的配置?将在14秒后自动保存配置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="778"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="806"/>
+         <source>Save</source>
+         <translation>ᠰᠢᠷᠪᠢᠭᠡᠳ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="777"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="805"/>
+         <source>Not Save</source>
+         <translation>ᠬᠠᠳᠠᠭᠠᠯᠠᠬᠤ ᠬᠡᠢ</translation>
+     </message>
+@@ -12948,18 +12951,18 @@ the settings will be saved after %1 seconds</source>
+         <translation type="vanished">是否保留当前修改的配置?将在%1秒后自动保存配置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1024"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1070"/>
+         <source>Log out now</source>
+         <translation>ᠳᠠᠷᠤᠢ ᠳᠠᠩᠰᠠᠨ ᠡᠴᠡ ᠬᠠᠰᠤᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1025"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1071"/>
+         <source>Later</source>
+         <translation>ᠤᠳᠠᠰᠬᠢᠭᠠᠳ ᠳᠠᠩᠰᠠᠨ ᠡᠴᠡ ᠬᠠᠰᠤᠬᠤ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1042"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1052"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1088"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1098"/>
+         <source>(Effective after logout)</source>
+         <translation>(᠎ᠳᠠᠩᠰᠠᠨ᠎ᠠ᠋ᠴᠠ ᠬᠠᠰᠤᠭᠰᠠᠨ᠎ᠤ᠋ ᠳᠠᠷᠠᠭ᠎ᠠ ᠬᠦᠴᠦᠨ᠎ᠲᠡᠢ )</translation>
+     </message>
+@@ -12990,23 +12993,23 @@ the settings will be saved after %1 seconds</source>
+         <translation type="vanished">ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1986"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2045"/>
+         <source>Turning on &apos;Eye Protection Mode&apos; will turn off &apos;Color Temperature&apos;. Continue turning it on?</source>
+         <translation>&apos;ᠨᠢᠳᠦ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠵᠠᠭᠪᠤᠷ&apos; ᠢ᠋ ᠨᠡᠭᠡᠭᠡᠪᠡᠯ &apos;ᠥᠩᠭᠡᠨ ᠳᠤᠯᠠᠭᠠᠨ&apos; ᠢ᠋ ᠬᠠᠭᠠᠵᠤ ᠦᠷᠭᠦᠯᠵᠢᠯᠡᠨ ᠨᠡᠭᠡᠭᠡᠬᠦ ᠦᠦ ?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1988"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2014"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2047"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
+         <source>Cancel</source>
+         <translation>ᠦᠬᠡᠢᠰᠬᠡᠬᠦ</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2012"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2071"/>
+         <source>Turning on &apos;Color Temperature&apos; will turn off &apos;Eye Protection Mode&apos;. Continue turning it on?</source>
+         <translation>&apos;ᠥᠩᠭᠡᠨ ᠳᠤᠯᠠᠭᠠᠨ&apos; ᠢ᠋ ᠨᠡᠭᠡᠭᠡᠪᠡᠯ &apos; ᠨᠢᠳᠦ ᠬᠠᠮᠠᠭᠠᠯᠠᠬᠤ ᠵᠠᠭᠪᠤᠷ&apos; ᠢ᠋ ᠬᠠᠭᠠᠨ᠎ᠠ᠂ ᠦᠷᠭᠦᠯᠵᠢᠯᠡᠨ ᠨᠡᠭᠡᠭᠡᠬᠦ ᠦᠦ ?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2132"/>
+         <source>All Day</source>
+         <translation>ᠪᠦᠳᠦᠨ ᠡᠳᠦᠷ</translation>
+     </message>
+@@ -13015,8 +13018,8 @@ the settings will be saved after %1 seconds</source>
+         <translation type="vanished">跟随日出日落(17:55-06:23)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2284"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2290"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2347"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2353"/>
+         <source>Brightness</source>
+         <translation>ᠬᠡᠷᠡᠯᠳᠦᠴᠡ</translation>
+         <extra-contents_path>/Display/Brightness</extra-contents_path>
+@@ -13042,7 +13045,7 @@ If something goes wrong, the settings will be restored after 9 seconds</source>
+         <translation type="vanished">修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在9秒后还原设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2782"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2882"/>
+         <source>screen zoom</source>
+         <translation>ᠠᠪᠴᠢᠭᠤᠯᠤᠭᠰᠠᠨ ᠳᠡᠯᠭᠡᠴᠡ</translation>
+     </message>
+@@ -13083,15 +13086,15 @@ If something goes wrong, the settings will be restored after %1 seconds</source>
+         <translation type="vanished">修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在%1秒后还原设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1546"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1846"/>
+         <source>please insure at least one output!</source>
+         <translation>ᠠᠳᠠᠭ ᠲᠤ᠌ ᠪᠡᠨ ᠨᠢᠭᠡ ᠳᠡᠯᠭᠡᠴᠡ ᠨᠡᠬᠡᠬᠡᠭᠰᠡᠨ ᠪᠠᠢᠬᠤ ᠵᠢ ᠪᠠᠳᠤᠯᠠᠭᠠᠷᠠᠢ !</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1496"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1546"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1553"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1846"/>
+         <source>Warning</source>
+         <translation>ᠰᠡᠷᠡᠮᠵᠢᠯᠡᠬᠦᠯᠬᠦ</translation>
+     </message>
+@@ -13112,7 +13115,7 @@ If something goes wrong, the settings will be restored after %1 seconds</source>
+         <translation type="vanished">早晨时刻应早于晚上的时刻!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1497"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1554"/>
+         <source>Sorry, your configuration could not be applied.
+ Common reasons are that the overall screen size is too big, or you enabled more displays than supported by your GPU.</source>
+         <translation>ᠠᠭᠤᠴᠢᠯᠠᠭᠠᠷᠠᠢ᠂ ᠳᠤᠬᠢᠷᠠᠭᠤᠯᠭ᠎ᠠ ᠵᠢ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠪᠣᠯᠬᠤ ᠥᠬᠡᠢ.</translation>
+diff --git a/shell/res/i18n/zh_CN.ts b/shell/res/i18n/zh_CN.ts
+index 67c5f9b..3f99409 100644
+--- a/shell/res/i18n/zh_CN.ts
++++ b/shell/res/i18n/zh_CN.ts
+@@ -20,12 +20,12 @@
+         <translation type="obsolete">版权所有 @ 2009-%1%2 保留所有权利。 {2020.?}</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="547"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="548"/>
+         <source>Status</source>
+         <translation>系统状态</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="224"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="225"/>
+         <source>DateRes</source>
+         <translation>服务到期时间</translation>
+     </message>
+@@ -50,7 +50,7 @@
+         <translation type="vanished">《试用免责协议》</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="56"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="57"/>
+         <source>About and Support</source>
+         <translation>关于与支持</translation>
+     </message>
+@@ -99,19 +99,19 @@
+         <translation type="vanished">未激活(试用期)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="229"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="230"/>
+         <source>Trial expiration time</source>
+         <translation>试用到期时间</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="457"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="553"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="458"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="554"/>
+         <source>expired</source>
+         <translation>已过期</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="244"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="458"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="245"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="459"/>
+         <source>Extend</source>
+         <translation>延长服务</translation>
+     </message>
+@@ -136,27 +136,27 @@
+         <translation type="vanished">麒麟软件</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="279"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="280"/>
+         <source>Kylin Linux Desktop (Touch Screen) V10 (SP1)</source>
+         <translation>银河麒麟桌面操作系统(大屏版)V10 (SP1)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="281"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="282"/>
+         <source>Kylin Linux Desktop (Tablet) V10 (SP1)</source>
+         <translation>银河麒麟桌面操作系统(平板版)V10 (SP1)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="518"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="519"/>
+         <source>The system needs to be restarted to set the HostName, whether to reboot</source>
+         <translation>计算机名已被修改,需要重启系统才可正常使用。建议立即重启系统!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="519"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="520"/>
+         <source>Reboot Now</source>
+         <translation>立即重启</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="520"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="521"/>
+         <source>Reboot Later</source>
+         <translation>稍后重启</translation>
+     </message>
+@@ -169,8 +169,8 @@
+         <translation type="vanished">延长服务</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="401"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="410"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="402"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="411"/>
+         <source>avaliable</source>
+         <translation>可用</translation>
+     </message>
+@@ -187,12 +187,12 @@
+         <translation type="vanished">版权所有2009-2021@kylinos保留所有权利</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="545"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="546"/>
+         <source>Version</source>
+         <translation>版本名称</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="287"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="288"/>
+         <source>Kylin Linux Desktop V10 (SP1)</source>
+         <translation>银河麒麟桌面操作系统V10 (SP1)</translation>
+     </message>
+@@ -220,7 +220,7 @@
+         <extra-contents_path>/About/Memory</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="408"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="409"/>
+         <source>Disk</source>
+         <translation>硬盘</translation>
+     </message>
+@@ -243,7 +243,7 @@
+         <translation type="vanished">有效期</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="549"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="550"/>
+         <source>Serial</source>
+         <translation>序列号</translation>
+     </message>
+@@ -256,8 +256,8 @@
+         <translation type="vanished">序列号</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="231"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="235"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="232"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="236"/>
+         <source>Active</source>
+         <translation>激活</translation>
+     </message>
+@@ -274,7 +274,7 @@
+         <translation type="vanished">关于</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="58"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="59"/>
+         <source>About</source>
+         <translation>关于</translation>
+     </message>
+@@ -291,13 +291,13 @@
+         <translation type="vanished">可用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="227"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="233"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="228"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="234"/>
+         <source>Inactivated</source>
+         <translation>未激活</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="243"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="244"/>
+         <source>Activated</source>
+         <translation>已激活</translation>
+     </message>
+@@ -341,7 +341,7 @@
+ <context>
+     <name>AboutInterface</name>
+     <message>
+-        <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="233"/>
++        <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="238"/>
+         <source>avaliable</source>
+         <translation>可用</translation>
+     </message>
+@@ -349,97 +349,96 @@
+ <context>
+     <name>AboutUi</name>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="32"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="33"/>
+         <source>System Summary</source>
+         <translation>系统概述</translation>
+         <extra-contents_path>/About/System Summary</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="35"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="37"/>
+         <source>Privacy and agreement</source>
+         <translation>隐私和协议</translation>
+         <extra-contents_path>/About/Privacy and agreement</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="37"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="40"/>
+         <source>Support</source>
+         <translation>支持</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="51"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="381"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="55"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="399"/>
+         <source>Version</source>
+         <translation>版本名称</translation>
+         <extra-contents_path>/About/version</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="56"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="61"/>
+         <source>Version Number</source>
+         <translation>版本号</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="61"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="67"/>
+         <source>Patch Version</source>
+         <translation>系统补丁版本号</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="66"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="73"/>
+         <source>Installed Date</source>
+         <translation>安装日期</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="71"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="79"/>
+         <source>Upgrade Date</source>
+         <translation>系统更新时间</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="78"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="87"/>
+         <source>HostName</source>
+         <translation>计算机名</translation>
+-        <extra-contents_path>/About/HostName</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="90"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="383"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="100"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="401"/>
+         <source>Kernel</source>
+         <translation>内核</translation>
+         <extra-contents_path>/About/Kernel</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="95"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="385"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="106"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="403"/>
+         <source>CPU</source>
+         <translation>CPU</translation>
+         <extra-contents_path>/About/CPU</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="100"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="387"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="112"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="405"/>
+         <source>Memory</source>
+         <translation>内存</translation>
+         <extra-contents_path>/About/Memory</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="105"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="118"/>
+         <source>Disk</source>
+         <translation>硬盘</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="110"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="389"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="124"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="407"/>
+         <source>Desktop</source>
+         <translation>桌面</translation>
+         <extra-contents_path>/About/Desktop</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="115"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="391"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="130"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="409"/>
+         <source>User</source>
+         <translation>用户名</translation>
+         <extra-contents_path>/About/User</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="123"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="139"/>
+         <source>Copyright ©%1 %2. All rights reserved.</source>
+         <translation>版权所有 © %1 %2. 保留所有权利。</translation>
+     </message>
+@@ -452,12 +451,12 @@
+         <translation type="vanished">版权所有 © %1 %2. 保留所有权利。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="172"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="188"/>
+         <source>openKylin</source>
+         <translation>openKylin</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="169"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="185"/>
+         <source>KylinSoft</source>
+         <translation>麒麟软件</translation>
+     </message>
+@@ -466,67 +465,66 @@
+         <translation type="vanished">版权所有 © 2020 麒麟软件 保留所有权利。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="235"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="251"/>
+         <source>Wechat code scanning obtains HP professional technical support</source>
+         <translation>微信扫码获得HP专业技术支持</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="236"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="252"/>
+         <source>See more about Kylin Tianqi edu platform</source>
+         <translation>查看麒麟天启教育平台更多信息</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="256"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="272"/>
+         <source>Learn more HP user manual&gt;&gt;</source>
+         <translation>了解更多 Hp用户手册&gt;&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="261"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="277"/>
+         <source>See user manual&gt;&gt;</source>
+         <translation>查看用户手册</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="339"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="356"/>
+         <source>Send optional diagnostic data</source>
+         <translation>发送可选诊断数据</translation>
+-        <extra-contents_path>/About/Send optional diagnostic data</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="340"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="357"/>
+         <source>By sending us diagnostic data, improve the system experience and solve your problems faster</source>
+         <translation>通过向我们发送诊断数据,提升系统体验以及更快的解决你的问题</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="363"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="380"/>
+         <source>&lt;&lt;Protocol&gt;&gt;</source>
+         <translation>《试用免责协议》</translation>
+         <extra-contents_path>/About/&lt;&lt;Protocol&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="364"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="382"/>
+         <source>and</source>
+         <translation>和</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="366"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="384"/>
+         <source>&lt;&lt;Privacy&gt;&gt;</source>
+         <translation>《用户隐私协议》</translation>
+         <extra-contents_path>/About/&lt;&lt;Privacy&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="393"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="411"/>
+         <source>Status</source>
+         <translation>系统状态</translation>
+         <extra-contents_path>/About/Status</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="395"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="413"/>
+         <source>Active</source>
+         <translation>激活</translation>
+         <extra-contents_path>/About/Active</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="397"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="415"/>
+         <source>Serial</source>
+         <translation>序列号</translation>
+         <extra-contents_path>/About/Serial</extra-contents_path>
+@@ -745,7 +743,7 @@
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="348"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="266"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+@@ -755,65 +753,65 @@
+         <translation>确定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="73"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="72"/>
+         <source>Add Shortcut</source>
+         <translation>添加快捷键</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="86"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="85"/>
+         <source>Please enter a shortcut</source>
+         <translation>请输入快捷键</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="224"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="223"/>
+         <source>Desktop files(*.desktop)</source>
+         <translation>桌面文件(*.desktop)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="264"/>
+         <source>select desktop</source>
+         <translation>选择桌面</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="302"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="323"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="334"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="301"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="322"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="333"/>
+         <source>Invalid application</source>
+         <translation>此应用不可用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="304"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="319"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="330"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="303"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="318"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="329"/>
+         <source>Shortcut conflict</source>
+         <translation>此快捷键组合已被占用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="306"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="321"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="332"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="305"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="320"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="331"/>
+         <source>Invalid shortcut</source>
+         <translation>此快捷键组合不可用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="309"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="316"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="337"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="308"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="315"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="336"/>
+         <source>Name repetition</source>
+         <translation>此快捷键名称重复</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="343"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="342"/>
+         <source>Unknown error</source>
+         <translation>未知错误</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="522"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="521"/>
+         <source>Shortcut cannot be empty</source>
+         <translation>快捷键不能为空</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="526"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="525"/>
+         <source>Name cannot be empty</source>
+         <translation>名称不能为空</translation>
+     </message>
+@@ -1096,7 +1094,7 @@
+         <extra-contents_path>/Area/system language</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="639"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="642"/>
+         <source>Simplified Chinese</source>
+         <translation>简体中文</translation>
+     </message>
+@@ -1122,14 +1120,14 @@
+         <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="233"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="384"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="235"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="386"/>
+         <source>12 Hours</source>
+         <translation>12小时制</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="234"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="385"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="236"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="387"/>
+         <source>24 Hours</source>
+         <translation>24小时制</translation>
+     </message>
+@@ -1190,108 +1188,128 @@
+         <translation>法文  (法国)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="215"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="302"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="209"/>
++        <source>Arab  (AE)</source>
++        <translation>阿拉伯文  (阿拉伯)</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="210"/>
++        <source>Vietnam  (VN)</source>
++        <translation>越南语  (越南)</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="217"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="304"/>
+         <source>Solar calendar</source>
+         <translation>公历</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="216"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="218"/>
+         <source>Lunar</source>
+         <translation>农历</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="221"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="223"/>
+         <source>Monday</source>
+         <translation>星期一</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="222"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="224"/>
+         <source>Sunday</source>
+         <translation>星期日</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="366"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="368"/>
+         <source>MMMM dd, yyyy</source>
+         <translation>yyyy年MM月dd日</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="369"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="371"/>
+         <source>MMMM d, yy</source>
+         <translation>yy年M月d日</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="643"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="646"/>
+         <source>Tibetan</source>
+         <translation>藏语</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="645"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="648"/>
+         <source>Kazaqa</source>
+         <translation>哈萨克语</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="647"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="650"/>
+         <source>Uygur</source>
+         <translation>维吾尔语</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="649"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="652"/>
+         <source>Kirghiz</source>
+         <translation>柯尔克孜语</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="651"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="654"/>
+         <source>Traditional Chinese</source>
+         <translation>繁体</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="653"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="656"/>
+         <source>Mongolian</source>
+         <translation>蒙古语</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="655"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="658"/>
+         <source>German</source>
+         <translation>德语</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="657"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="660"/>
+         <source>Spanish</source>
+         <translation>西班牙语</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="659"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="662"/>
+         <source>French</source>
+         <translation>法语</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="672"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="664"/>
++        <source>Arab</source>
++        <translation>阿拉伯语</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="666"/>
++        <source>Vietnam</source>
++        <translation>越南语</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="679"/>
+         <source>Modify the current region need to logout to take effect, whether to logout?</source>
+         <translation>修改当前区域需要注销后生效,是否注销?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="673"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="680"/>
+         <source>Logout later</source>
+         <translation>稍后注销</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="674"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="681"/>
+         <source>Logout now</source>
+         <translation>立即注销</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="676"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="683"/>
+         <source>Modify the first language need to reboot to take effect, whether to reboot?</source>
+         <translation>修改首选语言需要重启后生效,是否重启?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="677"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="684"/>
+         <source>Reboot later</source>
+         <translation>稍后重启</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="678"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="685"/>
+         <source>Reboot now</source>
+         <translation>立即重启</translation>
+     </message>
+@@ -1356,7 +1374,7 @@
+         <translation type="vanished">区域格式数据</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="641"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="644"/>
+         <source>English</source>
+         <translation>英语</translation>
+     </message>
+@@ -1407,31 +1425,31 @@
+ <context>
+     <name>AreaUi</name>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="38"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="39"/>
+         <source>Regional Format</source>
+         <translation>显示日期、时间和货币格式</translation>
+         <extra-contents_path>/Area/Regional Format</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="40"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="41"/>
+         <source>Calendar</source>
+         <translation>日历</translation>
+         <extra-contents_path>/Area/Calendar</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="42"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="43"/>
+         <source>First Day Of Week</source>
+         <translation>一周的第一天</translation>
+         <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="47"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="48"/>
+         <source>Long Format Date</source>
+         <translation>日期长格式</translation>
+         <extra-contents_path>/Area/Long Format Date</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="45"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="46"/>
+         <source>Short Foramt Date</source>
+         <translation>日期短格式</translation>
+         <extra-contents_path>/Area/Short Foramt Date</extra-contents_path>
+@@ -1441,25 +1459,24 @@
+         <translation type="vanished">日期</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="50"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="51"/>
+         <source>Time</source>
+         <translation>时间</translation>
+         <extra-contents_path>/Area/Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="63"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="64"/>
+         <source>Language Format</source>
+         <translation>语言格式</translation>
+         <extra-contents_path>/Area/Language Format</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="74"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="76"/>
+         <source>Language Format Example</source>
+         <translation>语言格式示例</translation>
+-        <extra-contents_path>/Area/Language Format Example</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="103"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="106"/>
+         <source>System Language</source>
+         <translation>系统语言</translation>
+         <extra-contents_path>/Area/System Language</extra-contents_path>
+@@ -1475,27 +1492,27 @@
+ <context>
+     <name>AutoBoot</name>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="96"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="95"/>
+         <source>Auto Start</source>
+         <translation>开机启动</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="293"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="292"/>
+         <source>Desktop files(*.desktop)</source>
+         <translation>桌面文件(*.desktop)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="300"/>
+         <source>select autoboot desktop</source>
+         <translation>选择自启动程序</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
+         <source>Select</source>
+         <translation>选择</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="303"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+@@ -1534,7 +1551,7 @@
+         <translation type="vanished">当前状态</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="231"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="230"/>
+         <source>Delete</source>
+         <translation>删除</translation>
+     </message>
+@@ -1547,13 +1564,13 @@
+         <extra-contents_path>/Autoboot/Autoboot Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="17"/>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="18"/>
+         <source>Autostart Settings</source>
+         <translation>开机启动设置</translation>
+         <extra-contents_path>/Autostart/Autostart Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="27"/>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="28"/>
+         <source>Add</source>
+         <translation>添加</translation>
+         <extra-contents_path>/Autostart/Add</extra-contents_path>
+@@ -2125,7 +2142,7 @@ Please authenticate yourself to continue</source>
+ <context>
+     <name>BrightnessFrame</name>
+     <message>
+-        <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="36"/>
++        <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="66"/>
+         <source>Failed to get the brightness information of this monitor</source>
+         <translation>未能获得该显示器的亮度信息</translation>
+     </message>
+@@ -2725,47 +2742,47 @@ Please authenticate yourself to continue</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="158"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="309"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="161"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="162"/>
+         <source>Confirm</source>
+         <translation>确定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="302"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
+         <source>select custom face file</source>
+         <translation>选择自定义头像文件</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="303"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
+         <source>Select</source>
+         <translation>选择</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
+         <source>Position: </source>
+         <translation>位置:</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
+         <source>FileName: </source>
+         <translation>文件名:</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="308"/>
+         <source>FileType: </source>
+         <translation>文件类型:</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="322"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="324"/>
+         <source>Warning</source>
+         <translation>警告</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="323"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="325"/>
+         <source>The avatar is larger than 1M, please choose again</source>
+         <translation>警告,头像大于1M请重新选择</translation>
+     </message>
+@@ -2819,17 +2836,17 @@ Please authenticate yourself to continue</source>
+         <translation>用户昵称</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="156"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+         <translation>用户昵称长度必须介于1到%1个字符之间!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
+         <source>nickName already in use.</source>
+         <translation>该用户昵称已存在。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="162"/>
+         <source>Can&apos;t contains &apos;:&apos;.</source>
+         <translation>不能包含&quot;:&quot;。</translation>
+     </message>
+@@ -2855,7 +2872,7 @@ Please authenticate yourself to continue</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="116"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="117"/>
+         <source>Confirm</source>
+         <translation>确定</translation>
+     </message>
+@@ -2869,7 +2886,7 @@ Please authenticate yourself to continue</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="103"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="471"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="473"/>
+         <source>Current Pwd</source>
+         <translation>当前密码</translation>
+     </message>
+@@ -2880,15 +2897,15 @@ Please authenticate yourself to continue</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="136"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="472"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="480"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="474"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="482"/>
+         <source>New Pwd</source>
+         <translation>新密码</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="163"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="473"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="481"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="475"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="483"/>
+         <source>Sure Pwd</source>
+         <translation>确认新密码</translation>
+     </message>
+@@ -2898,50 +2915,50 @@ Please authenticate yourself to continue</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="220"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="305"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="371"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="221"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="307"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="373"/>
+         <source>Confirm</source>
+         <translation>确定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="281"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="544"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="283"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="546"/>
+         <source>Inconsistency with pwd</source>
+         <translation>与新密码不同</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="301"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="303"/>
+         <source>Same with old pwd</source>
+         <translation>与旧密码相同</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="354"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="356"/>
+         <source>Pwd Changed Succes</source>
+         <translation>密码修改成功</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="361"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="363"/>
+         <source>Authentication failed, input authtok again!</source>
+         <translation>密码输入错误,重新输入!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="503"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="505"/>
+         <source>Contains illegal characters!</source>
+         <translation>含有非法字符!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="615"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="617"/>
+         <source>current pwd cannot be empty!</source>
+         <translation>当前密码不能为空!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="620"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="622"/>
+         <source>new pwd cannot be empty!</source>
+         <translation>新密码不能为空!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="625"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="627"/>
+         <source>sure pwd cannot be empty!</source>
+         <translation>确认密码不能为空!</translation>
+     </message>
+@@ -3099,7 +3116,7 @@ Please authenticate yourself to continue</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="86"/>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="89"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="88"/>
+         <source>Choose a custom color</source>
+         <translation>选择自定义颜色</translation>
+     </message>
+@@ -3124,12 +3141,12 @@ Please authenticate yourself to continue</source>
+         <translation>确定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="94"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="93"/>
+         <source>Custom color</source>
+         <translation>自定颜色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="182"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="181"/>
+         <source>Close</source>
+         <translation>关闭</translation>
+     </message>
+@@ -3151,18 +3168,18 @@ Please authenticate yourself to continue</source>
+         <translation>组名称</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="78"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="79"/>
+         <source>Id</source>
+         <translation>组ID</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="92"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="94"/>
+         <source>Confirm</source>
+         <translation>确定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="202"/>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="216"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="205"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="219"/>
+         <source>GroupName&apos;s length must be between 1 and %1 characters!</source>
+         <translation>组名长度必须介于1到%1个字符之间!</translation>
+     </message>
+@@ -3183,7 +3200,7 @@ Please authenticate yourself to continue</source>
+         <translation type="vanished">组成员</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="89"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="90"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+@@ -3192,7 +3209,7 @@ Please authenticate yourself to continue</source>
+         <translation type="vanished">确定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="50"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="49"/>
+         <source>Add user group</source>
+         <translation>新建用户组</translation>
+     </message>
+@@ -3545,19 +3562,19 @@ change system settings</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="279"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="280"/>
+         <source>Confirm</source>
+         <translation>确定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="355"/>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="581"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="357"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="583"/>
+         <source>Inconsistency with pwd</source>
+         <translation>与新密码不同</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="494"/>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="647"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="649"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+         <translation>用户昵称长度必须介于1到%1个字符之间!</translation>
+     </message>
+@@ -3566,7 +3583,7 @@ change system settings</source>
+         <translation type="vanished">用户昵称不能为空</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="498"/>
+         <source>nickName already in use.</source>
+         <translation>该用户昵称已存在。</translation>
+     </message>
+@@ -3575,17 +3592,17 @@ change system settings</source>
+         <translation type="vanished">用户昵称长度必须小于%1!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="642"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="644"/>
+         <source>Username&apos;s length must be between 1 and %1 characters!</source>
+         <translation>用户名长度必须介于1到%1个字符之间!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="652"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="654"/>
+         <source>new pwd cannot be empty!</source>
+         <translation>新密码不能为空!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="657"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="659"/>
+         <source>sure pwd cannot be empty!</source>
+         <translation>确认密码不能为空!</translation>
+     </message>
+@@ -3614,7 +3631,7 @@ change system settings</source>
+         <translation type="vanished">该用户名已存在,请更改。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="526"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="528"/>
+         <source>Name corresponds to group already exists.</source>
+         <translation>用户名对应组已存在,请更改。</translation>
+     </message>
+@@ -3627,12 +3644,12 @@ change system settings</source>
+         <translation type="vanished">用户名仅能包含字母,数字及下划线</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="522"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="524"/>
+         <source>Username&apos;s folder exists, change another one</source>
+         <translation>用户目录已存在,请更改</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="551"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="553"/>
+         <source>Contains illegal characters!</source>
+         <translation>含有非法字符!</translation>
+     </message>
+@@ -3799,7 +3816,7 @@ change system settings</source>
+         <extra-contents_path>/Date/Sync Server</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="341"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="346"/>
+         <source>Add Timezone</source>
+         <translation>添加时区</translation>
+     </message>
+@@ -3860,8 +3877,8 @@ change system settings</source>
+         <translation type="vanished">确定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="201"/>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="343"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="206"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="348"/>
+         <source>Change Timezone</source>
+         <translation>修改时区</translation>
+     </message>
+@@ -3889,37 +3906,37 @@ change system settings</source>
+ <context>
+     <name>DatetimeUi</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="53"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="54"/>
+         <source>Sync Server</source>
+         <translation>同步服务器</translation>
+         <extra-contents_path>/Date/Sync Server</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="75"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="77"/>
+         <source>Current Date</source>
+         <translation>当前时间</translation>
+         <extra-contents_path>/Date/Current Date</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="105"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="107"/>
+         <source>Timezone</source>
+         <translation>修改时区</translation>
+         <extra-contents_path>/Date/Timezone</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="111"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
+         <source>Set Time</source>
+         <translation>设置时间</translation>
+         <extra-contents_path>/Date/Set Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
+         <source>Manual Time</source>
+         <translation>手动设置时间</translation>
+         <extra-contents_path>/Date/Manual Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="117"/>
+         <source>Sync Time</source>
+         <translation>自动同步时间</translation>
+         <extra-contents_path>/Date/Sync Time</extra-contents_path>
+@@ -3929,55 +3946,55 @@ change system settings</source>
+         <translation type="vanished">手动设置日期</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="127"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="129"/>
+         <source>Set Time Manually</source>
+         <translation>手动设置时间</translation>
+         <extra-contents_path>/Date/Set Time Manually</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="162"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
+         <source>Server Address</source>
+         <translation>服务器地址</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="166"/>
+         <source>Required</source>
+         <translation>必需</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="165"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="167"/>
+         <source>Save</source>
+         <translation>保存</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="169"/>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="313"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="171"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="315"/>
+         <source>Customize</source>
+         <translation>自定义</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="197"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="199"/>
+         <source>Other Timezone</source>
+         <translation>其他时区时间</translation>
+         <extra-contents_path>/Date/Other Timezone</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="269"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
+         <source>MMMM d, yy ddd</source>
+         <translation>yy年M月d日 ddd</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="273"/>
+         <source>MMMM dd, yyyy ddd</source>
+         <translation>yyyy年MM月dd日 ddd</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="302"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="304"/>
+         <source>Sync failed</source>
+         <translation>同步失败</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="312"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="314"/>
+         <source>Default</source>
+         <translation>系统默认</translation>
+     </message>
+@@ -4043,56 +4060,56 @@ change system settings</source>
+ <context>
+     <name>DefaultAppUi</name>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="17"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="18"/>
+         <source>DefaultAppWindow</source>
+         <comment>Select Default Application</comment>
+         <translation>默认应用</translation>
+         <extra-contents_path>/Defaultapp/Select Default Application</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="21"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="22"/>
+         <source>Browser</source>
+         <translation>浏览器</translation>
+         <extra-contents_path>/Defaultapp/Browser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="23"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="24"/>
+         <source>Mail</source>
+         <translation>电子邮件</translation>
+         <extra-contents_path>/Defaultapp/Mail</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="25"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="26"/>
+         <source>Image Viewer</source>
+         <translation>图像查看器</translation>
+         <extra-contents_path>/Defaultapp/Image Viewer</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="27"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="28"/>
+         <source>Audio Player</source>
+         <translation>音频播放器</translation>
+         <extra-contents_path>/Defaultapp/Audio Player</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="29"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="30"/>
+         <source>Video Player</source>
+         <translation>视频播放器</translation>
+         <extra-contents_path>/Defaultapp/Video Player</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="31"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="32"/>
+         <source>Text Editor</source>
+         <translation>文档编辑器</translation>
+         <extra-contents_path>/Defaultapp/Text Editor</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="35"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="36"/>
+         <source>Reset default apps to system recommended apps</source>
+         <translation>将默认应用重置为系统推荐应用</translation>
+         <extra-contents_path>/Defaultapp/Reset default apps to system recommended apps</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="36"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="37"/>
+         <source>Reset</source>
+         <translation>重置</translation>
+     </message>
+@@ -4310,7 +4327,7 @@ folder will be deleted!</source>
+         <translation>”?并执行:</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="65"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
+         <source>Keep desktop, files, favorites, music of the user</source>
+         <translation>保留该用户下所属的桌面、文件、收藏夹、音乐等数据</translation>
+     </message>
+@@ -4319,17 +4336,17 @@ folder will be deleted!</source>
+         <translation type="vanished">保留用户家目录</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="98"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="102"/>
+         <source>Confirm</source>
+         <translation>删除</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="68"/>
+         <source>Delete whole data belong user</source>
+         <translation>删除该用户所有数据</translation>
+     </message>
+@@ -4703,74 +4720,60 @@ folder will be deleted!</source>
+ <context>
+     <name>DisplayPerformanceDialog</name>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="26"/>
+         <source>Dialog</source>
+-        <translation>更改时间</translation>
++        <translation type="vanished">更改时间</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="214"/>
+         <source>Display Advanced Settings</source>
+-        <translation>显示高级设置</translation>
++        <translation type="vanished">显示高级设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="297"/>
+         <source>Performance</source>
+-        <translation>性能模式</translation>
++        <translation type="vanished">性能模式</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="376"/>
+         <source>Applicable to machine with discrete graphics, which can accelerate the rendering of 3D graphics.</source>
+-        <translation>适用于具有独立显卡的机器,能够充分发挥显卡的性能,对3D图形绘制进行加速。</translation>
++        <translation type="vanished">适用于具有独立显卡的机器,能够充分发挥显卡的性能,对3D图形绘制进行加速。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="392"/>
+         <source>(Note: not support connect graphical with xmanager on windows.)</source>
+-        <translation>(注意:本模式不支持Windows上个使用Xmanager等工具连接图形显示)</translation>
++        <translation type="vanished">(注意:本模式不支持Windows上个使用Xmanager等工具连接图形显示)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="462"/>
+         <source>Compatible</source>
+-        <translation>兼容模式</translation>
++        <translation type="vanished">兼容模式</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="538"/>
+         <source>Applicable to machine with integrated graphics,  there is no 3D graphics acceleration. </source>
+-        <translation>适用于集成显卡,BMC显卡等只具备基础显示功能,无3D图形绘制加速。</translation>
++        <translation type="vanished">适用于集成显卡,BMC显卡等只具备基础显示功能,无3D图形绘制加速。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="554"/>
+         <source>(Note: need connect graphical with xmanager on windows, use this option.)</source>
+-        <translation>(注意:需要使用Windows上Xmanager等工具连接图形的机器请选择本项)</translation>
++        <translation type="vanished">(注意:需要使用Windows上Xmanager等工具连接图形的机器请选择本项)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="624"/>
+         <source>Automatic</source>
+-        <translation>自动检测</translation>
++        <translation type="vanished">自动检测</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="700"/>
+         <source>Auto select according to environment, delay the login time (about 0.5 sec).</source>
+-        <translation>自动检测显示环境,会增加登录延时(0.5秒左右)</translation>
++        <translation type="vanished">自动检测显示环境,会增加登录延时(0.5秒左右)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="721"/>
+         <source>Threshold:</source>
+-        <translation>阈值设置:</translation>
++        <translation type="vanished">阈值设置:</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="744"/>
+         <source>Apply</source>
+-        <translation>应用</translation>
++        <translation type="vanished">应用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="757"/>
+         <source>Reset</source>
+-        <translation>重置</translation>
++        <translation type="vanished">重置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="772"/>
+         <source>(Note: select this option to use 3D graphics acceleration and xmanager.)</source>
+-        <translation>(注意:使用3D图形加速,且用Xmanager连接图形时选择本项)</translation>
++        <translation type="vanished">(注意:使用3D图形加速,且用Xmanager连接图形时选择本项)</translation>
+     </message>
+ </context>
+ <context>
+@@ -5848,132 +5851,132 @@ folder will be deleted!</source>
+ <context>
+     <name>KeyboardUi</name>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="24"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="30"/>
+         <source>Keyboard Settings</source>
+         <translation>键盘设置</translation>
+         <extra-contents_path>/Keyboard/Keyboard Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="35"/>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="41"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="173"/>
+         <source>Input Method</source>
+         <translation>输入法</translation>
+         <extra-contents_path>/Keyboard/Input Method</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="51"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="57"/>
+         <source>Virtual Keyboard</source>
+         <translation>虚拟键盘</translation>
+         <extra-contents_path>/Keyboard/Virtual Keyboard</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="106"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="112"/>
+         <source>Key repeat</source>
+         <translation>按键重复</translation>
+         <extra-contents_path>/Keyboard/Key repeat</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="114"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="120"/>
+         <source>Delay</source>
+         <translation>延迟</translation>
+         <extra-contents_path>/Keyboard/Delay</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="117"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="123"/>
+         <source>Short</source>
+         <translation>短</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="118"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="124"/>
+         <source>Long</source>
+         <translation>长</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="130"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="136"/>
+         <source>Speed</source>
+         <translation>速度</translation>
+         <extra-contents_path>/Keyboard/Speed</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="132"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="138"/>
+         <source>Slow</source>
+         <translation>慢</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="133"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="139"/>
+         <source>Fast</source>
+         <translation>快</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="144"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="150"/>
+         <source>Input test</source>
+         <translation>输入测试</translation>
+         <extra-contents_path>/Keyboard/Input test</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="152"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="158"/>
+         <source>Key tips</source>
+         <translation>按键提示</translation>
+         <extra-contents_path>/Keyboard/Key tips</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="161"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
+         <source>Input settings</source>
+         <translation>输入法设置</translation>
+         <extra-contents_path>/Keyboard/Input settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="168"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="174"/>
+         <source>Edit</source>
+         <translation>编辑</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="175"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="181"/>
+         <source>Show icon on tray</source>
+         <translation>在托盘显示虚拟键盘图标</translation>
+         <extra-contents_path>/Keyboard/Show icon on tray</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="182"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="188"/>
+         <source>Show icon on desktop</source>
+         <translation>在桌面显示虚拟键盘图标</translation>
+         <extra-contents_path>/Keyboard/Show icon on desktop</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="189"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="195"/>
+         <source>Keyboard Size</source>
+         <translation>键盘大小</translation>
+         <extra-contents_path>/Keyboard/Keyboard Size</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="197"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="203"/>
+         <source>Text size</source>
+         <translation>按键文本大小</translation>
+         <extra-contents_path>/Keyboard/Text size</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="199"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="205"/>
+         <source>Small</source>
+         <translation>小</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="200"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="206"/>
+         <source>Medium</source>
+         <translation>中</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="201"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
+         <source>Large</source>
+         <translation>大</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="213"/>
+         <source>Animation</source>
+         <translation>动画效果</translation>
+         <extra-contents_path>/Keyboard/Animation</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="214"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="220"/>
+         <source>Input sound effect</source>
+         <translation>按键提示音</translation>
+         <extra-contents_path>/Keyboard/Input sound effect</extra-contents_path>
+@@ -5982,12 +5985,12 @@ folder will be deleted!</source>
+ <context>
+     <name>LanguageFrame</name>
+     <message>
+-        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="71"/>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="91"/>
+         <source>Delete</source>
+         <translation>移除</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="70"/>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="90"/>
+         <source>Input Settings</source>
+         <translation>输入法设置</translation>
+     </message>
+@@ -6462,20 +6465,20 @@ Please retry or relogin!</source>
+         <translation type="vanished">设置</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="441"/>
+-        <location filename="../../mainwindow.cpp" line="459"/>
+-        <location filename="../../mainwindow.cpp" line="591"/>
+-        <location filename="../../mainwindow.cpp" line="949"/>
++        <location filename="../../mainwindow.cpp" line="470"/>
++        <location filename="../../mainwindow.cpp" line="488"/>
++        <location filename="../../mainwindow.cpp" line="620"/>
++        <location filename="../../mainwindow.cpp" line="974"/>
+         <source>Settings</source>
+         <translation>设置</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="479"/>
++        <location filename="../../mainwindow.cpp" line="508"/>
+         <source>Option</source>
+         <translation>选项</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="480"/>
++        <location filename="../../mainwindow.cpp" line="509"/>
+         <source>Minimize</source>
+         <translation>最小化</translation>
+     </message>
+@@ -6495,17 +6498,17 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="173"/>
+-        <location filename="../../mainwindow.cpp" line="481"/>
++        <location filename="../../mainwindow.cpp" line="510"/>
+         <source>Maximize</source>
+         <translation>最大化</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="453"/>
++        <location filename="../../mainwindow.cpp" line="482"/>
+         <source>Back home</source>
+         <translation>返回首页</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="482"/>
++        <location filename="../../mainwindow.cpp" line="511"/>
+         <source>Close</source>
+         <translation>关闭</translation>
+     </message>
+@@ -6522,12 +6525,12 @@ Please retry or relogin!</source>
+         <translation type="vanished">退出</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="592"/>
++        <location filename="../../mainwindow.cpp" line="621"/>
+         <source>Version: </source>
+         <translation>版本:</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="731"/>
++        <location filename="../../mainwindow.cpp" line="756"/>
+         <source>Specified</source>
+         <translation>指定插件</translation>
+     </message>
+@@ -6536,13 +6539,13 @@ Please retry or relogin!</source>
+         <translation type="vanished">控制面板</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="1082"/>
++        <location filename="../../mainwindow.cpp" line="1107"/>
+         <source>Warning</source>
+         <translation>警告</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="152"/>
+-        <location filename="../../mainwindow.cpp" line="1082"/>
++        <location filename="../../mainwindow.cpp" line="1107"/>
+         <source>This function has been controlled</source>
+         <translation>该功能已被管控</translation>
+     </message>
+@@ -7846,7 +7849,7 @@ Please retry or relogin!</source>
+         <translation>打印机</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/printer/printer.cpp" line="121"/>
++        <location filename="../../../plugins/devices/printer/printer.cpp" line="122"/>
+         <source>Printers</source>
+         <translatorcomment>打印机</translatorcomment>
+         <translation>打印机</translation>
+@@ -7864,22 +7867,22 @@ Please retry or relogin!</source>
+ <context>
+     <name>PrivacyDialog</name>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="11"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="12"/>
+         <source>Set</source>
+         <translation>系统设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="73"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="74"/>
+         <source>End User License Agreement and Privacy Policy Statement of openKylin</source>
+         <translation>openKylin最终用户使用许可协议和隐私政策声明</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="75"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="76"/>
+         <source>End User License Agreement and Privacy Policy Statement of Kylin</source>
+         <translation>银河麒麟最终用户使用许可协议和隐私政策声明</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="82"/>
+         <source>Openkylin Community.</source>
+         <translation>Openkylin 社区</translation>
+     </message>
+@@ -8986,7 +8989,7 @@ E-mail: support@kylinos.cn</source>
+ 长沙(0731)88280170 上海(021)51098866</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="83"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="84"/>
+         <source>Kylinsoft Co., Ltd.</source>
+         <translation>麒麟软件有限公司</translation>
+     </message>
+@@ -9345,7 +9348,7 @@ E-mail: support@kylinos.cn</source>
+         <translation>自定义快捷键</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="472"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="474"/>
+         <source>Edit Shortcut</source>
+         <translation>编辑快捷键</translation>
+     </message>
+@@ -9475,7 +9478,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">远程桌面</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="79"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="78"/>
+         <source>User Info</source>
+         <translation>账户信息</translation>
+     </message>
+@@ -9847,55 +9850,55 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">连接失败,尝试重新连接</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1203"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1201"/>
+         <source>min length %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1213"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1211"/>
+         <source>min digit num %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1222"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1220"/>
+         <source>min upper num %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1231"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1229"/>
+         <source>min lower num %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1240"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1238"/>
+         <source>min other num %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1250"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1248"/>
+         <source>min char class %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1259"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1257"/>
+         <source>max repeat %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1268"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1266"/>
+         <source>max class repeat %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1277"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1275"/>
+         <source>max sequence %1
+ </source>
+         <translation type="unfinished"></translation>
+@@ -9909,7 +9912,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">系统升级增量备份</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="373"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="372"/>
+         <source>Programs are not allowed to be added.</source>
+         <translation>该程序不允许添加。</translation>
+     </message>
+@@ -10168,88 +10171,88 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>ScreenlockUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="41"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="42"/>
+         <source>Show picture of screenlock on screenlogin</source>
+         <translation>显示锁屏壁纸在登录界面</translation>
+         <extra-contents_path>/Screenlock/Show picture of screenlock on screenlogin</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="44"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
+         <source>Leave lock (System will be locked when the paired phone gone)</source>
+         <translation>动态锁 (系统将在已配对的蓝牙手机离开时自动锁定屏幕)</translation>
+         <extra-contents_path>/Screenlock/Leave lock (System will be locked when the paired phone gone)</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="46"/>
+         <source>Specified device</source>
+         <translation>指定设备</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="46"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="47"/>
+         <source>No paired phone. Please turn to &apos;Bluetooth&apos; to pair.</source>
+         <translation>无配对手机,请转到 &quot;蓝牙&quot; 以连接手机。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="66"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="67"/>
+         <source>Screenlock</source>
+         <translation>锁屏</translation>
+         <extra-contents_path>/Screenlock/Screenlock</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="96"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="97"/>
+         <source>Local Pictures</source>
+         <translation>本地图片</translation>
+         <extra-contents_path>/Screenlock/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="98"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="99"/>
+         <source>Online Pictures</source>
+         <translation>线上图片</translation>
+         <extra-contents_path>/Screenlock/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="100"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="101"/>
+         <source>Reset To Default</source>
+         <translation>恢复默认</translation>
+         <extra-contents_path>/Screenlock/Reset To Default</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="112"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="113"/>
+         <source>Bluetooth</source>
+         <translation>蓝牙设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="117"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="118"/>
+         <source>No bluetooth adapter detected, can not use Leave Lock.</source>
+         <translation>未检测到蓝牙适配器,无法使用动态锁功能。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="136"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="138"/>
+         <source>Monitor Off</source>
+         <translation>关闭显示器</translation>
+         <extra-contents_path>/Screenlock/Monitor Off</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="138"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="140"/>
+         <source>Screensaver</source>
+         <translation>屏幕保护</translation>
+         <extra-contents_path>/Screenlock/Screensaver</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="141"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="143"/>
+         <source>Related Settings</source>
+         <translation>相关设置</translation>
+         <extra-contents_path>/Screenlock/Related Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="147"/>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="148"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="149"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="150"/>
+         <source>Set</source>
+         <translation>去设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="163"/>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="530"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="165"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="532"/>
+         <source>Please select device</source>
+         <translation>请选择指定设备</translation>
+     </message>
+@@ -10468,118 +10471,118 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>ScreensaverUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="40"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="41"/>
+         <source>Screensaver</source>
+         <translation>屏保</translation>
+         <extra-contents_path>/Screensaver/Screensaver</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="53"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="54"/>
+         <source>Idle time</source>
+         <translation>此时间段后开启屏保</translation>
+         <extra-contents_path>/Screensaver/Idle time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="55"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="56"/>
+         <source>Screensaver program</source>
+         <translation>屏幕保护程序</translation>
+         <extra-contents_path>/Screensaver/Screensaver program</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="87"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="88"/>
+         <source>Screensaver source</source>
+         <translation>屏保来源</translation>
+         <extra-contents_path>/Screensaver/Screensaver source</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="92"/>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="455"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="93"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="456"/>
+         <source>Select</source>
+         <translation>选择</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="113"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="114"/>
+         <source>Ordinal</source>
+         <translation>按顺序</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="114"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="115"/>
+         <source>Random</source>
+         <translation>随机</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="121"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="122"/>
+         <source>Random switching</source>
+         <translation>随机切换</translation>
+         <extra-contents_path>/Screensaver/Random switching</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="141"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="142"/>
+         <source>Switching time</source>
+         <translation>切换频率</translation>
+         <extra-contents_path>/Screensaver/Switching time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="160"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="161"/>
+         <source>Text(up to 30 characters):</source>
+         <translation>屏保文本(最多 30 个字):</translation>
+         <extra-contents_path>/Screensaver/Text(up to 30 characters):</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="183"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="184"/>
+         <source>Text position</source>
+         <translation>文本位置</translation>
+         <extra-contents_path>/Screensaver/Text position</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="191"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="192"/>
+         <source>Centered</source>
+         <translation>居中</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="192"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="193"/>
+         <source>Randow(Bubble text)</source>
+         <translation>随机(气泡文本)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="214"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="215"/>
+         <source>Show rest time</source>
+         <translation>显示休息时间</translation>
+         <extra-contents_path>/Screensaver/Show rest time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="224"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="225"/>
+         <source>Lock screen when screensaver boot</source>
+         <translation>激活屏保时锁定屏幕</translation>
+         <extra-contents_path>/Screensaver/Lock screen when screensaver boot</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="413"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="414"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</source>
+         <translation>壁纸文件(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="454"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="455"/>
+         <source>select custom screensaver dir</source>
+         <translation>选择自定义屏保路径</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="456"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="457"/>
+         <source>Position: </source>
+         <translation>位置: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="457"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="458"/>
+         <source>FileName: </source>
+         <translation>文件名: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="458"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="459"/>
+         <source>FileType: </source>
+         <translation>文件类型: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="459"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="460"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+@@ -10968,32 +10971,32 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>ShortcutUi</name>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="33"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="34"/>
+         <source>System Shortcut</source>
+         <translation>系统快捷键</translation>
+         <extra-contents_path>/Shortcut/System Shortcut</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="46"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="47"/>
+         <source>Customize Shortcut</source>
+         <translation>自定义快捷键</translation>
+         <extra-contents_path>/Shortcut/Customize Shortcut</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="77"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="81"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="98"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="102"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="180"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="269"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="481"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="79"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="83"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="100"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="104"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="182"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="271"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="483"/>
+         <source>Null</source>
+         <translation>无</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="230"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="362"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="617"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="232"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="364"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="619"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+@@ -11002,48 +11005,48 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">使用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="232"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="364"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="619"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="234"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="366"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="621"/>
+         <source>Shortcut key conflict, use it?</source>
+         <translation>快捷键组合冲突,是否使用该组合?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="233"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="365"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="235"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="367"/>
+         <source>%1 occuied, using this combination will invalidate %2</source>
+         <translation>%1已被占用,使用该组合会使“%2”无按键组合</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="256"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="395"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="258"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="397"/>
+         <source>Shortcut &quot;%1&quot; occuied, please change the key combination</source>
+         <translation>快捷键“%1”已被系统占用,请更改按键组合</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="447"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="449"/>
+         <source>Edit</source>
+         <translation>编辑</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="448"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="450"/>
+         <source>Delete</source>
+         <translation>删除</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="231"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="363"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="618"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="233"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="365"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="620"/>
+         <source>Continue</source>
+         <translation>继续</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="620"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="622"/>
+         <source>&quot;%1&quot; occuied, using this combination will invalidate &quot;%2&quot;.</source>
+         <translation>“%1”已被“ %2”占用,继续将使该功能无快捷键。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="660"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="662"/>
+         <source> or </source>
+         <translation> 或 </translation>
+     </message>
+@@ -11141,7 +11144,7 @@ E-mail: support@kylinos.cn</source>
+         <translation>关于本机</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/statusdialog.cpp" line="59"/>
++        <location filename="../../../plugins/system/about/statusdialog.cpp" line="60"/>
+         <source>Activation Code</source>
+         <translation>激活码</translation>
+     </message>
+@@ -11558,117 +11561,117 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">主题模式</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="111"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="534"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="108"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="539"/>
+         <source>Theme</source>
+         <translation>主题</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
+         <source>Default</source>
+         <translation>深浅</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="182"/>
+         <source>Light</source>
+         <translation>浅色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
+         <source>Dark</source>
+         <translation>深色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="190"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
+         <source>Auto</source>
+         <translation>自动</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="423"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="426"/>
+         <source>Corlor</source>
+         <translation>强调色</translation>
+         <extra-contents_path>/Theme/Corlor</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="608"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="614"/>
+         <source>Other</source>
+         <translation>相关设置</translation>
+         <extra-contents_path>/Theme/Other</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="613"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="619"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="623"/>
+         <source>Set</source>
+         <translation>去设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="611"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
+         <source>Wallpaper</source>
+         <translation>桌面壁纸</translation>
+         <extra-contents_path>/Theme/Wallpaper</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="224"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="223"/>
+         <source>Corner</source>
+         <translation>窗口圆角</translation>
+         <extra-contents_path>/Theme/Corner</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="229"/>
+         <source>Right angle</source>
+         <translation>直角</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
+         <source>Small</source>
+         <translation>小</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="232"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
+         <source>Big</source>
+         <translation>大</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="615"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="621"/>
+         <source>Beep</source>
+         <translation>提示音</translation>
+         <extra-contents_path>/Theme/Beep</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="963"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="972"/>
+         <source>Blue-Crystal</source>
+         <translation>典蓝</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="965"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="974"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1058"/>
+         <source>Light-Seeking</source>
+         <translation>光</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="967"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="976"/>
+         <source>DMZ-Black</source>
+         <translation>DMZ-黑</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="969"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="978"/>
+         <source>DMZ-White</source>
+         <translation>印白</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="971"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="980"/>
+         <source>Dark-Sense</source>
+         <translation>耀黑</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1045"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1054"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1058"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1064"/>
+         <source>basic</source>
+         <translation>基础</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1056"/>
+         <source>Classic</source>
+         <translation>典</translation>
+     </message>
+@@ -11681,57 +11684,57 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">时尚</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1053"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1062"/>
+         <source>hp</source>
+         <translation>惠普</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1064"/>
+         <source>ukui</source>
+         <translation>寻光</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1051"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1060"/>
+         <source>HeYin</source>
+         <translation>印</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1056"/>
+         <source>classic</source>
+         <translation>经典</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1057"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1066"/>
+         <source>daybreakBlue</source>
+         <translation>蓝色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1059"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1068"/>
+         <source>jamPurple</source>
+         <translation>紫色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1061"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1070"/>
+         <source>magenta</source>
+         <translation>玫红色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1063"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1072"/>
+         <source>sunRed</source>
+         <translation>红色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1065"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1074"/>
+         <source>sunsetOrange</source>
+         <translation>橙色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1067"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1076"/>
+         <source>dustGold</source>
+         <translation>黄色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1069"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1078"/>
+         <source>polarGreen</source>
+         <translation>绿色</translation>
+     </message>
+@@ -11744,13 +11747,13 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">中</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="248"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="247"/>
+         <source>Window Theme</source>
+         <translation>窗口外观</translation>
+         <extra-contents_path>/Theme/Window Theme</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="250"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="249"/>
+         <source>Icon theme</source>
+         <translation>图标</translation>
+         <extra-contents_path>/Theme/Icon theme</extra-contents_path>
+@@ -11760,19 +11763,19 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">控件主题</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="253"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="252"/>
+         <source>Cursor theme</source>
+         <translation>光标</translation>
+         <extra-contents_path>/Theme/Cursor theme</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="215"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="214"/>
+         <source>Effect setting</source>
+         <translation>窗口特效</translation>
+         <extra-contents_path>/Theme/Effect setting</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="222"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="221"/>
+         <source>Transparency</source>
+         <translation>透明度</translation>
+         <extra-contents_path>/Theme/Transparency</extra-contents_path>
+@@ -11782,7 +11785,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">透明特效</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="220"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="219"/>
+         <source>Performance mode</source>
+         <translation>特效模式</translation>
+         <extra-contents_path>/Theme/Performance mode</extra-contents_path>
+@@ -11811,27 +11814,27 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>TimeBtn</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="106"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="107"/>
+         <source>Tomorrow</source>
+         <translation>明天</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="108"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="109"/>
+         <source>Yesterday</source>
+         <translation>昨天</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="110"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="111"/>
+         <source>Today</source>
+         <translation>今天</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="128"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="129"/>
+         <source>%1 hours earlier than local</source>
+         <translation>比本地早%1小时</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="130"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="131"/>
+         <source>%1 hours later than local</source>
+         <translation>比本地晚%1小时</translation>
+     </message>
+@@ -11839,12 +11842,12 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>TimeZoneChooser</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="35"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="34"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="37"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="36"/>
+         <source>Confirm</source>
+         <translation>确定</translation>
+     </message>
+@@ -11853,7 +11856,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">更改时区</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="33"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="32"/>
+         <source>Search Timezone</source>
+         <translation>搜索时区</translation>
+     </message>
+@@ -11862,7 +11865,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">搜索时区</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="64"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="63"/>
+         <source>To select a time zone, please click where near you on the map and select a city from the nearest city</source>
+         <translation>若要选择时区,请点击地图上靠近你所在的位置,从最接近的城市中选取一个城市</translation>
+     </message>
+@@ -11875,7 +11878,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">更改时区</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="40"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="39"/>
+         <source>Change Timezone</source>
+         <translation>更改时区</translation>
+     </message>
+@@ -12017,12 +12020,12 @@ E-mail: support@kylinos.cn</source>
+         <translation>系统设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="37"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="38"/>
+         <source>Yinhe Kylin OS(Trail Version) Disclaimer</source>
+         <translation>银河麒麟操作系统(试用版)免责声明</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="46"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="47"/>
+         <source>Dear customer:
+        Thank you for trying Yinhe Kylin OS(trail version)! This version is free for users who only try out, no commercial purpose is permitted. The trail period lasts one year and it starts from the ex-warehouse time of the OS. No after-sales service is provided during the trail stage. If any security problems occurred when user put important files or do any commercial usage in system, all consequences are taken by users. Kylin software Co., Ltd. take no legal risk in trail version.
+        During trail stage,if you want any technology surpport or activate the system, please buy“Yinhe Kylin Operating System”official version or authorization by contacting 400-089-1870.</source>
+@@ -12039,7 +12042,7 @@ E-mail: support@kylinos.cn</source>
+     在试用过程中,如希望激活或者得到专业的技术服务支持,请您购买“银河麒麟操作系统”正式版本或授权,联系方式如下:400-089-1870。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="60"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="61"/>
+         <source>Kylin software Co., Ltd.</source>
+         <translation>麒麟软件有限公司</translation>
+     </message>
+@@ -12464,12 +12467,12 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">管理员用户</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1045"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1043"/>
+         <source>root</source>
+         <translation>Root</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1013"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1011"/>
+         <source>Hint</source>
+         <translation>提示</translation>
+     </message>
+@@ -12478,32 +12481,32 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">更改账户类型需要注销后生效,是否注销?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="913"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="911"/>
+         <source>The account type of “%1” has been modified, will take effect after logout, whether to logout?</source>
+         <translation>“%1”账户类型已被修改,将在注销系统后生效。是否注销系统?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="914"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="912"/>
+         <source>logout later</source>
+         <translation>稍后注销</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="915"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="913"/>
+         <source>logout now</source>
+         <translation>立即注销</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1014"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1012"/>
+         <source>The system only allows one user to log in automatically.After it is turned on, the automatic login of other users will be turned off.Is it turned on?</source>
+         <translation>系统只允许一个用户自动登录,开启后将关闭其他用户的自动登录,是否开启?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1017"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1015"/>
+         <source>Trun on</source>
+         <translation>开启</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1018"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1016"/>
+         <source>Close on</source>
+         <translation>取消</translation>
+     </message>
+@@ -12520,12 +12523,12 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">验证</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1041"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1039"/>
+         <source>Standard</source>
+         <translation>标准用户</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1043"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1041"/>
+         <source>Admin</source>
+         <translation>管理员</translation>
+     </message>
+@@ -12534,55 +12537,55 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">删除</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="171"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="170"/>
+         <source>CurrentUser</source>
+         <translation>当前用户</translation>
+         <extra-contents_path>/Userinfo/CurrentUser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="177"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="176"/>
+         <source>OthersUser</source>
+         <translation>其他用户</translation>
+         <extra-contents_path>/Userinfo/OthersUser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="179"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="178"/>
+         <source>Add</source>
+         <translation>添加</translation>
+         <extra-contents_path>/Userinfo/Add</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="309"/>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="207"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="206"/>
+         <source>Password</source>
+         <translation>修改密码</translation>
+         <extra-contents_path>/Userinfo/Password</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="219"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="218"/>
+         <source>Groups</source>
+         <translation>用户组</translation>
+         <extra-contents_path>/Userinfo/Groups</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="271"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="270"/>
+         <source>AutoLoginOnBoot</source>
+         <translation>开机自动登录</translation>
+         <extra-contents_path>/Userinfo/AutoLoginOnBoot</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="266"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="265"/>
+         <source>LoginWithoutPwd</source>
+         <translation>免密登录</translation>
+         <extra-contents_path>/Userinfo/LoginWithoutPwd</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="540"/>
+         <source>Warning</source>
+         <translation>警告</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="540"/>
+         <source>The user is logged in, please delete the user after logging out</source>
+         <translation>用户已经登录,请注销后删除用户</translation>
+     </message>
+@@ -12614,7 +12617,7 @@ E-mail: support@kylinos.cn</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="331"/>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="213"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="212"/>
+         <source>Type</source>
+         <translation>账户类型</translation>
+         <extra-contents_path>/Userinfo/Type</extra-contents_path>
+@@ -12849,19 +12852,19 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">背景</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="31"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="48"/>
+         <source>Background</source>
+         <translation>背景</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="156"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="195"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="214"/>
+         <source>picture</source>
+         <translation>图片</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="153"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="195"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="211"/>
+         <source>color</source>
+         <translation>颜色</translation>
+     </message>
+@@ -12874,43 +12877,43 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">自定义颜色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="167"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="225"/>
+         <source>wallpaper</source>
+         <translation>平铺</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="169"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="227"/>
+         <source>centered</source>
+         <translation>居中</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="165"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="223"/>
+         <source>scaled</source>
+         <translation>填充</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="171"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="229"/>
+         <source>stretched</source>
+         <translation>拉伸</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="173"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="231"/>
+         <source>zoom</source>
+         <translation>适应</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="175"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="233"/>
+         <source>spanned</source>
+         <translation>跨区</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="219"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="277"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
+         <translation>图片文件(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</translation>
+     </message>
+@@ -12919,32 +12922,32 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">所有文件(*.*)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="259"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="317"/>
+         <source>select custom wallpaper file</source>
+         <translation>选择自定义壁纸文件</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="260"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="318"/>
+         <source>Select</source>
+         <translation>选择</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="261"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="319"/>
+         <source>Position: </source>
+         <translation>位置: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="262"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="320"/>
+         <source>FileName: </source>
+         <translation>文件名: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="263"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="321"/>
+         <source>FileType: </source>
+         <translation>文件类型: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="264"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="322"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+@@ -12952,37 +12955,37 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>WallpaperUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="28"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="29"/>
+         <source>Background</source>
+         <translation>背景</translation>
+         <extra-contents_path>/Wallpaper/Background</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="30"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="31"/>
+         <source>Type</source>
+         <translation>显示方式</translation>
+         <extra-contents_path>/Wallpaper/Type</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="66"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="67"/>
+         <source>Desktop Background</source>
+         <translation>桌面背景</translation>
+         <extra-contents_path>/Wallpaper/Desktop Background</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="93"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="94"/>
+         <source>Local Pictures</source>
+         <translation>本地图片</translation>
+         <extra-contents_path>/Wallpaper/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="95"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="96"/>
+         <source>Online Pictures</source>
+         <translation>线上图片</translation>
+         <extra-contents_path>/Wallpaper/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="97"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="98"/>
+         <source>Reset To Default</source>
+         <translation>恢复默认</translation>
+         <extra-contents_path>/Wallpaper/Reset To Default</extra-contents_path>
+@@ -13008,54 +13011,54 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">部分程序需要注销生效</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="267"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="288"/>
+         <source>Night Mode</source>
+         <translation>色温</translation>
+         <extra-contents_path>/Display/Night Mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1987"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2013"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="299"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2046"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2072"/>
+         <source>Open</source>
+         <translation>打开</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="299"/>
+         <source>When turned on, it will reduce the blue light of the screen.</source>
+         <translation>启用后会将屏幕色温调至偏暖的一端,降低屏幕蓝光。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="283"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="304"/>
+         <source>Color Temperature And Eye Care</source>
+         <translation>色温与护眼</translation>
+         <extra-contents_path>/Display/Color Temperature And Eye Care</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="291"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="312"/>
+         <source>Time</source>
+         <translation>时间</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="301"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="322"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2132"/>
+         <source>Custom Time</source>
+         <translation>自定义</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="312"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="333"/>
+         <source>to</source>
+         <translation>至</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="285"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="330"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="306"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="351"/>
+         <source>Color Temperature</source>
+         <translation>色温</translation>
+         <extra-contents_path>/Display/Color Temperature</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="293"/>
+         <source>When turned on, it can reduce blue light to prevent eye, the screen will turn yellow.</source>
+         <translation>开启后可减少蓝光辐射预防用眼疲劳,屏幕显示将会偏黄。</translation>
+     </message>
+@@ -13064,54 +13067,54 @@ E-mail: support@kylinos.cn</source>
+         <translation type="obsolete">色温与护眼</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="332"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="353"/>
+         <source>Warmer</source>
+         <translation>较暖</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="333"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="354"/>
+         <source>Colder</source>
+         <translation>较冷</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="611"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="632"/>
+         <source>Multi-screen</source>
+         <translation>多屏显示</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="616"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="637"/>
+         <source>First Screen</source>
+         <translation>第一屏</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="620"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="641"/>
+         <source>Clone Screen</source>
+         <translation>镜像</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="622"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2639"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="643"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2739"/>
+         <source>Splice Screen</source>
+         <translation>拼接屏</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1986"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2045"/>
+         <source>Turning on &apos;Eye Protection Mode&apos; will turn off &apos;Color Temperature&apos;. Continue turning it on?</source>
+         <translation>开启“护眼模式”将会关闭“色温”,是否继续开启?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1988"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2014"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2047"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2012"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2071"/>
+         <source>Turning on &apos;Color Temperature&apos; will turn off &apos;Eye Protection Mode&apos;. Continue turning it on?</source>
+         <translation>开启“色温”将会关闭“护眼模式”,是否继续开启?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2745"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2845"/>
+         <source>Auto Brightness</source>
+         <translation>自动调整亮度</translation>
+         <extra-contents_path>/Display/Auto Brightness</extra-contents_path>
+@@ -13121,48 +13124,48 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">通过感应周围环境亮度,自动调整屏幕亮度</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="793"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="822"/>
+         <source>scale</source>
+         <translation>缩放率</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="798"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="827"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after 14 seconds&lt;/font&gt;</source>
+         <translation>屏幕%1已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在14秒后恢复配置&lt;/font&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="809"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="838"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after %2 seconds&lt;/font&gt;</source>
+         <translation>屏幕%1已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在%2秒后恢复配置&lt;/font&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1023"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1069"/>
+         <source>The zoom has been modified, it will take effect after you log off</source>
+         <translation>屏幕缩放已被修改,需要注销后生效。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1042"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1052"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1088"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1098"/>
+         <source>(Effective after logout)</source>
+         <translation>(在注销后生效)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2702"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2802"/>
+         <source>Splicing Method</source>
+         <translation>拼接方式</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2705"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2805"/>
+         <source>Change</source>
+         <translation>修改</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2774"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2874"/>
+         <source>as main</source>
+         <translation>设为主屏</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2795"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2895"/>
+         <source>open monitor</source>
+         <translation>打开显示器</translation>
+     </message>
+@@ -13175,29 +13178,29 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">屏幕%1已修改,是否保存?&lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系统将在%2秒后自动保存。&lt;/font&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2253"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2259"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2316"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2322"/>
+         <source>Follow the sunrise and sunset</source>
+         <translation>跟随日出日落</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="619"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="640"/>
+         <source>Extend Screen</source>
+         <translation>扩展</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="293"/>
+         <source>Eye Protection Mode</source>
+         <translation>护眼模式</translation>
+         <extra-contents_path>/Display/Eye protection mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="617"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="638"/>
+         <source>Vice Screen</source>
+         <translation>其他屏</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2773"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2873"/>
+         <source>monitor</source>
+         <translation>显示器</translation>
+     </message>
+@@ -13210,17 +13213,17 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">主题跟随夜间模式变化</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="784"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="813"/>
+         <source>resolution</source>
+         <translation>分辨率</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="787"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="816"/>
+         <source>orientation</source>
+         <translation>方向</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="790"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="819"/>
+         <source>frequency</source>
+         <translation>刷新率</translation>
+     </message>
+@@ -13234,12 +13237,12 @@ the settings will be saved after 14 seconds</source>
+         <translation type="vanished">是否保留当前修改的配置?将在14秒后自动保存配置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="778"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="806"/>
+         <source>Save</source>
+         <translation>保存</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="777"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="805"/>
+         <source>Not Save</source>
+         <translation>不保存</translation>
+     </message>
+@@ -13253,17 +13256,17 @@ the settings will be saved after %1 seconds</source>
+         <translation type="vanished">修改系统缩放后需要注销生效,是否注销?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1024"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1070"/>
+         <source>Log out now</source>
+         <translation>立即注销</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1025"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1071"/>
+         <source>Later</source>
+         <translation>稍后注销</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2132"/>
+         <source>All Day</source>
+         <translation>全天</translation>
+     </message>
+@@ -13272,8 +13275,8 @@ the settings will be saved after %1 seconds</source>
+         <translation type="vanished">跟随日出日落(17:55-06:23)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2284"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2290"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2347"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2353"/>
+         <source>Brightness</source>
+         <translation>亮度</translation>
+         <extra-contents_path>/Display/Brightness</extra-contents_path>
+@@ -13299,7 +13302,7 @@ If something goes wrong, the settings will be restored after 9 seconds</source>
+         <translation type="vanished">修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在9秒后还原设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2782"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2882"/>
+         <source>screen zoom</source>
+         <translation>缩放屏幕</translation>
+     </message>
+@@ -13340,15 +13343,15 @@ If something goes wrong, the settings will be restored after %1 seconds</source>
+         <translation type="vanished">修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在%1秒后还原设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1546"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1846"/>
+         <source>please insure at least one output!</source>
+         <translation>请确保至少开启一个屏幕!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1496"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1546"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1553"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1846"/>
+         <source>Warning</source>
+         <translation>警告</translation>
+     </message>
+@@ -13369,7 +13372,7 @@ If something goes wrong, the settings will be restored after %1 seconds</source>
+         <translation type="vanished">早晨时刻应早于晚上的时刻!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1497"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1554"/>
+         <source>Sorry, your configuration could not be applied.
+ Common reasons are that the overall screen size is too big, or you enabled more displays than supported by your GPU.</source>
+         <translation>抱歉,配置不能应用.</translation>
+diff --git a/shell/res/i18n/zh_HK.ts b/shell/res/i18n/zh_HK.ts
+index 8dfcc69..b53e25d 100644
+--- a/shell/res/i18n/zh_HK.ts
++++ b/shell/res/i18n/zh_HK.ts
+@@ -19,12 +19,12 @@
+         <extra-contents_path>/About/Version Number</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="547"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="548"/>
+         <source>Status</source>
+         <translation>系統狀態</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="224"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="225"/>
+         <source>DateRes</source>
+         <translation>服務到期時間</translation>
+     </message>
+@@ -47,7 +47,7 @@
+         <extra-contents_path>/About/&lt;&lt;Protocol&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="56"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="57"/>
+         <source>About and Support</source>
+         <translation>關於與支援</translation>
+     </message>
+@@ -108,29 +108,29 @@
+         <translation type="vanished">未激活(试用期)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="229"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="230"/>
+         <source>Trial expiration time</source>
+         <translation>試用到期時間</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="279"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="280"/>
+         <source>Kylin Linux Desktop (Touch Screen) V10 (SP1)</source>
+         <translation>銀河麒麟桌面操作系統V10(大屏) (SP1)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="281"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="282"/>
+         <source>Kylin Linux Desktop (Tablet) V10 (SP1)</source>
+         <translation>銀河麒麟桌面操作系統V10(平板) (SP1)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="457"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="553"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="458"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="554"/>
+         <source>expired</source>
+         <translation>已過期</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="244"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="458"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="245"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="459"/>
+         <source>Extend</source>
+         <translation>延長服務</translation>
+     </message>
+@@ -139,17 +139,17 @@
+         <translation type="vanished">版權所有 © 2020 麒麟軟體 保留所有權利。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="518"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="519"/>
+         <source>The system needs to be restarted to set the HostName, whether to reboot</source>
+         <translation>計算機名已被修改,需要重啟系統才可正常使用。 建議立即重啟系統!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="519"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="520"/>
+         <source>Reboot Now</source>
+         <translation>立即重啟</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="520"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="521"/>
+         <source>Reboot Later</source>
+         <translation>稍後重啟</translation>
+     </message>
+@@ -162,8 +162,8 @@
+         <translation type="vanished">延长服务</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="401"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="410"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="402"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="411"/>
+         <source>avaliable</source>
+         <translation>可用</translation>
+     </message>
+@@ -180,12 +180,12 @@
+         <translation type="vanished">版权所有2009-2021@kylinos保留所有权利</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="545"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="546"/>
+         <source>Version</source>
+         <translation>版本名稱</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="287"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="288"/>
+         <source>Kylin Linux Desktop V10 (SP1)</source>
+         <translation>銀河麒麟桌面操作系統V10 (SP1)</translation>
+     </message>
+@@ -213,7 +213,7 @@
+         <extra-contents_path>/About/Memory</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="408"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="409"/>
+         <source>Disk</source>
+         <translation>硬碟</translation>
+     </message>
+@@ -236,7 +236,7 @@
+         <translation type="vanished">有效期</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="549"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="550"/>
+         <source>Serial</source>
+         <translation>序列號</translation>
+     </message>
+@@ -249,8 +249,8 @@
+         <translation type="vanished">序列号</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="231"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="235"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="232"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="236"/>
+         <source>Active</source>
+         <translation>啟動</translation>
+     </message>
+@@ -267,7 +267,7 @@
+         <translation type="vanished">关于</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="58"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="59"/>
+         <source>About</source>
+         <translation>關於</translation>
+     </message>
+@@ -284,13 +284,13 @@
+         <translation type="vanished">可用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="227"/>
+-        <location filename="../../../plugins/system/about/about.cpp" line="233"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="228"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="234"/>
+         <source>Inactivated</source>
+         <translation>未啟動</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/about.cpp" line="243"/>
++        <location filename="../../../plugins/system/about/about.cpp" line="244"/>
+         <source>Activated</source>
+         <translation>已啟動</translation>
+     </message>
+@@ -334,7 +334,7 @@
+ <context>
+     <name>AboutInterface</name>
+     <message>
+-        <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="233"/>
++        <location filename="../../../registeredSession/plugins/about/aboutinterface.cpp" line="238"/>
+         <source>avaliable</source>
+         <translation>可用</translation>
+     </message>
+@@ -342,97 +342,96 @@
+ <context>
+     <name>AboutUi</name>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="32"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="33"/>
+         <source>System Summary</source>
+         <translation>系統概述</translation>
+         <extra-contents_path>/About/System Summary</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="35"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="37"/>
+         <source>Privacy and agreement</source>
+         <translation>隱私和協定</translation>
+         <extra-contents_path>/About/Privacy and agreement</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="37"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="40"/>
+         <source>Support</source>
+         <translation>支援</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="51"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="381"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="55"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="399"/>
+         <source>Version</source>
+         <translation>版本名稱</translation>
+         <extra-contents_path>/About/version</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="56"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="61"/>
+         <source>Version Number</source>
+         <translation>版本號</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="61"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="67"/>
+         <source>Patch Version</source>
+         <translation>系統補丁版本號</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="66"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="73"/>
+         <source>Installed Date</source>
+         <translation>安裝日期</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="71"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="79"/>
+         <source>Upgrade Date</source>
+         <translation>系統更新時間</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="78"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="87"/>
+         <source>HostName</source>
+         <translation>計算機名</translation>
+-        <extra-contents_path>/About/HostName</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="90"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="383"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="100"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="401"/>
+         <source>Kernel</source>
+         <translation>內核</translation>
+         <extra-contents_path>/About/Kernel</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="95"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="385"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="106"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="403"/>
+         <source>CPU</source>
+         <translation>CPU</translation>
+         <extra-contents_path>/About/CPU</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="100"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="387"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="112"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="405"/>
+         <source>Memory</source>
+         <translation>記憶體</translation>
+         <extra-contents_path>/About/Memory</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="105"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="118"/>
+         <source>Disk</source>
+         <translation>硬碟</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="110"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="389"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="124"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="407"/>
+         <source>Desktop</source>
+         <translation>桌面</translation>
+         <extra-contents_path>/About/Desktop</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="115"/>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="391"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="130"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="409"/>
+         <source>User</source>
+         <translation>使用者名</translation>
+         <extra-contents_path>/About/User</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="123"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="139"/>
+         <source>Copyright ©%1 %2. All rights reserved.</source>
+         <translation>版權所有 © %1 %2. 保留所有權利.</translation>
+     </message>
+@@ -441,12 +440,12 @@
+         <translation type="vanished">版權所有 © %1 %2. 麒麟軟件 保留所有權利.</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="172"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="188"/>
+         <source>openKylin</source>
+         <translation>開放麒麟</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="169"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="185"/>
+         <source>KylinSoft</source>
+         <translation>麒麟軟件</translation>
+     </message>
+@@ -455,67 +454,66 @@
+         <translation type="vanished">版權所有 ©2022 %1  保留所有權利.</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="235"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="251"/>
+         <source>Wechat code scanning obtains HP professional technical support</source>
+         <translation>微信掃碼獲得HP專業技術支援</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="236"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="252"/>
+         <source>See more about Kylin Tianqi edu platform</source>
+         <translation>查看麒麟天啟教育平臺更多資訊</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="256"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="272"/>
+         <source>Learn more HP user manual&gt;&gt;</source>
+         <translation>瞭解更多 Hp用戶手冊&gt;&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="261"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="277"/>
+         <source>See user manual&gt;&gt;</source>
+         <translation>查看使用者手冊</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="339"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="356"/>
+         <source>Send optional diagnostic data</source>
+         <translation>發送可選診斷數據</translation>
+-        <extra-contents_path>/About/Send optional diagnostic data</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="340"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="357"/>
+         <source>By sending us diagnostic data, improve the system experience and solve your problems faster</source>
+         <translation>通過向我們發送診斷數據,提升系統體驗以及更快的解決你的問題</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="363"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="380"/>
+         <source>&lt;&lt;Protocol&gt;&gt;</source>
+         <translation>《試用免責協定》</translation>
+         <extra-contents_path>/About/&lt;&lt;Protocol&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="364"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="382"/>
+         <source>and</source>
+         <translation>和</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="366"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="384"/>
+         <source>&lt;&lt;Privacy&gt;&gt;</source>
+         <translation>《用戶隱私協定》</translation>
+         <extra-contents_path>/About/&lt;&lt;Privacy&gt;&gt;</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="393"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="411"/>
+         <source>Status</source>
+         <translation>狀態</translation>
+         <extra-contents_path>/About/Status</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="395"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="413"/>
+         <source>Active</source>
+         <translation>啟動</translation>
+         <extra-contents_path>/About/Active</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/aboutui.cpp" line="397"/>
++        <location filename="../../../plugins/system/about/aboutui.cpp" line="415"/>
+         <source>Serial</source>
+         <translation>序列號</translation>
+         <extra-contents_path>/About/Serial</extra-contents_path>
+@@ -773,7 +771,7 @@
+     </message>
+     <message>
+         <location filename="../../../plugins/devices/shortcut/addshortcutdialog.ui" line="348"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="266"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+@@ -783,65 +781,65 @@
+         <translation>保存</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="73"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="72"/>
+         <source>Add Shortcut</source>
+         <translation>添加快捷鍵</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="86"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="85"/>
+         <source>Please enter a shortcut</source>
+         <translation>請輸入快速鍵</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="224"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="223"/>
+         <source>Desktop files(*.desktop)</source>
+         <translation>桌面檔(*.desktop)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="265"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="264"/>
+         <source>select desktop</source>
+         <translation>選擇桌面</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="302"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="323"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="334"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="301"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="322"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="333"/>
+         <source>Invalid application</source>
+         <translation>此應用不可用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="304"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="319"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="330"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="303"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="318"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="329"/>
+         <source>Shortcut conflict</source>
+         <translation>此快捷鍵組合已被佔用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="306"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="321"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="332"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="305"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="320"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="331"/>
+         <source>Invalid shortcut</source>
+         <translation>此快捷鍵組合不可用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="309"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="316"/>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="337"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="308"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="315"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="336"/>
+         <source>Name repetition</source>
+         <translation>此快捷鍵名稱重複</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="343"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="342"/>
+         <source>Unknown error</source>
+         <translation>未知錯誤</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="522"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="521"/>
+         <source>Shortcut cannot be empty</source>
+         <translation>快捷鍵不能為空</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="526"/>
++        <location filename="../../../plugins/devices/shortcut/addshortcutdialog.cpp" line="525"/>
+         <source>Name cannot be empty</source>
+         <translation>名稱不能為空</translation>
+     </message>
+@@ -1130,17 +1128,17 @@
+         <extra-contents_path>/Area/system language</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="639"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="642"/>
+         <source>Simplified Chinese</source>
+         <translation>简体中文</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="366"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="368"/>
+         <source>MMMM dd, yyyy</source>
+         <translation>yyyy年MM月dd日</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="369"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="371"/>
+         <source>MMMM d, yy</source>
+         <translation>yy年M月d日</translation>
+     </message>
+@@ -1201,66 +1199,86 @@
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="215"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="302"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="209"/>
++        <source>Arab  (AE)</source>
++        <translation>阿拉伯文  (阿拉伯)</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="210"/>
++        <source>Vietnam  (VN)</source>
++        <translation>越南文  (越南)</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="217"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="304"/>
+         <source>Solar calendar</source>
+         <translation>公曆</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="221"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="223"/>
+         <source>Monday</source>
+         <translation>星期一</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="222"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="224"/>
+         <source>Sunday</source>
+         <translation>星期日</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="643"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="646"/>
+         <source>Tibetan</source>
+         <translation>藏語</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="645"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="648"/>
+         <source>Kazaqa</source>
+         <translation>哈萨克</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="647"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="650"/>
+         <source>Uygur</source>
+         <translation>維吾爾語</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="649"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="652"/>
+         <source>Kirghiz</source>
+         <translation>柯爾克孜語</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="651"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="654"/>
+         <source>Traditional Chinese</source>
+         <translation>繁體</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="653"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="656"/>
+         <source>Mongolian</source>
+         <translation>蒙古語</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="655"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="658"/>
+         <source>German</source>
+         <translation>德語</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="657"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="660"/>
+         <source>Spanish</source>
+         <translation>西班牙語</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="659"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="662"/>
+         <source>French</source>
+         <translation>法語</translation>
+     </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="664"/>
++        <source>Arab</source>
++        <translation>阿拉伯文</translation>
++    </message>
++    <message>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="666"/>
++        <source>Vietnam</source>
++        <translation>越南文</translation>
++    </message>
+     <message>
+         <source>First Day Of Week</source>
+         <translation type="vanished">一周的第一天</translation>
+@@ -1271,19 +1289,19 @@
+         <translation type="vanished">公曆</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="216"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="218"/>
+         <source>Lunar</source>
+         <translation>農曆</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="233"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="384"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="235"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="386"/>
+         <source>12 Hours</source>
+         <translation>12小時制</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="234"/>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="385"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="236"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="387"/>
+         <source>24 Hours</source>
+         <translation>24小時制</translation>
+     </message>
+@@ -1304,32 +1322,32 @@
+         <translation type="vanished">设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="672"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="679"/>
+         <source>Modify the current region need to logout to take effect, whether to logout?</source>
+         <translation>修改當前區域需要註銷後生效,是否註銷?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="673"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="680"/>
+         <source>Logout later</source>
+         <translation>稍後註銷</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="674"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="681"/>
+         <source>Logout now</source>
+         <translation>立即註銷</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="676"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="683"/>
+         <source>Modify the first language need to reboot to take effect, whether to reboot?</source>
+         <translation>修改首选语言需要重启后生效,是否重启?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="677"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="684"/>
+         <source>Reboot later</source>
+         <translation>稍后重启</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="678"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="685"/>
+         <source>Reboot now</source>
+         <translation>立即重启</translation>
+     </message>
+@@ -1394,7 +1412,7 @@
+         <translation type="vanished">区域格式数据</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/area.cpp" line="641"/>
++        <location filename="../../../plugins/time-language/area/area.cpp" line="644"/>
+         <source>English</source>
+         <translation>English</translation>
+     </message>
+@@ -1445,31 +1463,31 @@
+ <context>
+     <name>AreaUi</name>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="38"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="39"/>
+         <source>Regional Format</source>
+         <translation>顯示日期、時間和貨幣格式</translation>
+         <extra-contents_path>/Area/Regional Format</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="40"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="41"/>
+         <source>Calendar</source>
+         <translation>日曆</translation>
+         <extra-contents_path>/Area/Calendar</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="42"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="43"/>
+         <source>First Day Of Week</source>
+         <translation>一周的第一天</translation>
+         <extra-contents_path>/Area/First Day Of Week</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="45"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="46"/>
+         <source>Short Foramt Date</source>
+         <translation>短日期格式</translation>
+         <extra-contents_path>/Area/Short Foramt Date</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="47"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="48"/>
+         <source>Long Format Date</source>
+         <translation>日期長格式</translation>
+         <extra-contents_path>/Area/Long Format Date</extra-contents_path>
+@@ -1479,25 +1497,24 @@
+         <translation type="vanished">日期</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="50"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="51"/>
+         <source>Time</source>
+         <translation>時間</translation>
+         <extra-contents_path>/Area/Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="63"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="64"/>
+         <source>Language Format</source>
+         <translation>語言格式</translation>
+         <extra-contents_path>/Area/Language Format</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="74"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="76"/>
+         <source>Language Format Example</source>
+         <translation>語言格式示例</translation>
+-        <extra-contents_path>/Area/Language Format Example</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/areaui.cpp" line="103"/>
++        <location filename="../../../plugins/time-language/area/areaui.cpp" line="106"/>
+         <source>System Language</source>
+         <translation>系統語言</translation>
+         <extra-contents_path>/Area/System Language</extra-contents_path>
+@@ -1513,12 +1530,12 @@
+ <context>
+     <name>AutoBoot</name>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="293"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="292"/>
+         <source>Desktop files(*.desktop)</source>
+         <translation>桌面檔(*.desktop)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="300"/>
+         <source>select autoboot desktop</source>
+         <translation>選擇自啟動程式</translation>
+     </message>
+@@ -1527,7 +1544,7 @@
+         <translation type="vanished">選擇自啟動程式</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="96"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="95"/>
+         <source>Auto Start</source>
+         <translation>開機啟動</translation>
+     </message>
+@@ -1536,12 +1553,12 @@
+         <translation type="vanished">選擇自啟動程式</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="301"/>
+         <source>Select</source>
+         <translation>選擇</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="303"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="302"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+@@ -1585,7 +1602,7 @@
+         <translation type="vanished">当前状态</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="231"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="230"/>
+         <source>Delete</source>
+         <translation>刪除</translation>
+     </message>
+@@ -1598,13 +1615,13 @@
+         <extra-contents_path>/Autoboot/Autoboot Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="17"/>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="18"/>
+         <source>Autostart Settings</source>
+         <translation>開機啟動設置</translation>
+         <extra-contents_path>/Autostart/Autostart Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="27"/>
++        <location filename="../../../plugins/application/autoboot/autobootui.cpp" line="28"/>
+         <source>Add</source>
+         <translation>添加</translation>
+         <extra-contents_path>/Autostart/Add</extra-contents_path>
+@@ -2172,7 +2189,7 @@ Please authenticate yourself to continue</source>
+ <context>
+     <name>BrightnessFrame</name>
+     <message>
+-        <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="36"/>
++        <location filename="../../../plugins/system/display/brightnessFrame.cpp" line="66"/>
+         <source>Failed to get the brightness information of this monitor</source>
+         <translation>未能獲得該顯示器的亮度資訊</translation>
+     </message>
+@@ -2772,47 +2789,47 @@ Please authenticate yourself to continue</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="158"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="309"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="161"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="162"/>
+         <source>Confirm</source>
+         <translation>確定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="302"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
+         <source>select custom face file</source>
+         <translation>選擇自訂頭像檔</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="303"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
+         <source>Select</source>
+         <translation>選擇</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="304"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
+         <source>Position: </source>
+         <translation>位置: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="305"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="307"/>
+         <source>FileName: </source>
+         <translation>檔案名稱: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="306"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="308"/>
+         <source>FileType: </source>
+         <translation>檔案類型: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="322"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="324"/>
+         <source>Warning</source>
+         <translation>警告</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="323"/>
++        <location filename="../../../plugins/account/userinfo/changeuserlogo.cpp" line="325"/>
+         <source>The avatar is larger than 1M, please choose again</source>
+         <translation>警告,頭像大於1M請重新選擇</translation>
+     </message>
+@@ -2866,17 +2883,17 @@ Please authenticate yourself to continue</source>
+         <translation>用戶暱稱</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="156"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+         <translation>用戶昵稱長度必須介於1到%1個字元之間!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="158"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
+         <source>nickName already in use.</source>
+         <translation>該用戶暱稱已存在。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="160"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="162"/>
+         <source>Can&apos;t contains &apos;:&apos;.</source>
+         <translation>不能包含“:”。</translation>
+     </message>
+@@ -2902,7 +2919,7 @@ Please authenticate yourself to continue</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="116"/>
++        <location filename="../../../plugins/account/userinfo/changeusernickname.cpp" line="117"/>
+         <source>Confirm</source>
+         <translation>確定</translation>
+     </message>
+@@ -2916,7 +2933,7 @@ Please authenticate yourself to continue</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="103"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="471"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="473"/>
+         <source>Current Pwd</source>
+         <translation>當前密碼</translation>
+     </message>
+@@ -2927,15 +2944,15 @@ Please authenticate yourself to continue</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="136"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="472"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="480"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="474"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="482"/>
+         <source>New Pwd</source>
+         <translation>新密碼</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="163"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="473"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="481"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="475"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="483"/>
+         <source>Sure Pwd</source>
+         <translation>確認新密碼</translation>
+     </message>
+@@ -2945,50 +2962,50 @@ Please authenticate yourself to continue</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="220"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="305"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="371"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="221"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="307"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="373"/>
+         <source>Confirm</source>
+         <translation>確定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="281"/>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="544"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="283"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="546"/>
+         <source>Inconsistency with pwd</source>
+         <translation>與新密碼不同</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="301"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="303"/>
+         <source>Same with old pwd</source>
+         <translation>與舊密碼相同</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="354"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="356"/>
+         <source>Pwd Changed Succes</source>
+         <translation>密碼修改成功</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="361"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="363"/>
+         <source>Authentication failed, input authtok again!</source>
+         <translation>密碼輸入錯誤,重新輸入!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="503"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="505"/>
+         <source>Contains illegal characters!</source>
+         <translation>含有非法字元!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="615"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="617"/>
+         <source>current pwd cannot be empty!</source>
+         <translation>當前密碼不能為空!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="620"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="622"/>
+         <source>new pwd cannot be empty!</source>
+         <translation>新密碼不能為空!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="625"/>
++        <location filename="../../../plugins/account/userinfo/changeuserpwd.cpp" line="627"/>
+         <source>sure pwd cannot be empty!</source>
+         <translation>確認密碼不能為空!</translation>
+     </message>
+@@ -3146,7 +3163,7 @@ Please authenticate yourself to continue</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/personalized/wallpaper/colordialog.ui" line="86"/>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="89"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="88"/>
+         <source>Choose a custom color</source>
+         <translation>選擇自訂顏色</translation>
+     </message>
+@@ -3171,12 +3188,12 @@ Please authenticate yourself to continue</source>
+         <translation>確定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="94"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="93"/>
+         <source>Custom color</source>
+         <translation>自定顏色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="182"/>
++        <location filename="../../../plugins/personalized/wallpaper/colordialog.cpp" line="181"/>
+         <source>Close</source>
+         <translation>關閉</translation>
+     </message>
+@@ -3198,18 +3215,18 @@ Please authenticate yourself to continue</source>
+         <translation>組名稱</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="78"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="79"/>
+         <source>Id</source>
+         <translation>組ID</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="92"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="94"/>
+         <source>Confirm</source>
+         <translation>確定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="202"/>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="216"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="205"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="219"/>
+         <source>GroupName&apos;s length must be between 1 and %1 characters!</source>
+         <translation>組名長度必須介於1到%1個字元之間!</translation>
+     </message>
+@@ -3230,7 +3247,7 @@ Please authenticate yourself to continue</source>
+         <translation type="vanished">组成员</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="89"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="90"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+@@ -3239,7 +3256,7 @@ Please authenticate yourself to continue</source>
+         <translation type="vanished">确定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="50"/>
++        <location filename="../../../plugins/account/userinfo/creategroupdialog.cpp" line="49"/>
+         <source>Add user group</source>
+         <translation>新建使用者組</translation>
+     </message>
+@@ -3592,19 +3609,19 @@ change system settings</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="279"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="280"/>
+         <source>Confirm</source>
+         <translation>確定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="355"/>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="581"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="357"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="583"/>
+         <source>Inconsistency with pwd</source>
+         <translation>與新密碼不同</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="494"/>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="647"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="649"/>
+         <source>NickName&apos;s length must between 1~%1 characters!</source>
+         <translation>用戶昵稱長度必須介於1到%1個字元之間!</translation>
+     </message>
+@@ -3617,7 +3634,7 @@ change system settings</source>
+         <translation type="vanished">用户昵称不能为空</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="496"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="498"/>
+         <source>nickName already in use.</source>
+         <translation>該用戶暱稱已存在。</translation>
+     </message>
+@@ -3626,17 +3643,17 @@ change system settings</source>
+         <translation type="vanished">用户昵称长度必须小于%1!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="642"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="644"/>
+         <source>Username&apos;s length must be between 1 and %1 characters!</source>
+         <translation>使用者名長度必須介於1到%1個字元之間</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="652"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="654"/>
+         <source>new pwd cannot be empty!</source>
+         <translation>新密碼不能為空!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="657"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="659"/>
+         <source>sure pwd cannot be empty!</source>
+         <translation>確認密碼不能為空!</translation>
+     </message>
+@@ -3665,7 +3682,7 @@ change system settings</source>
+         <translation type="vanished">该用户名已存在,请更改。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="526"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="528"/>
+         <source>Name corresponds to group already exists.</source>
+         <translation>用戶名對應組已存在,請更改。</translation>
+     </message>
+@@ -3678,12 +3695,12 @@ change system settings</source>
+         <translation type="vanished">用户名仅能包含字母,数字及下划线</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="522"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="524"/>
+         <source>Username&apos;s folder exists, change another one</source>
+         <translation>用戶目錄已存在,請更改</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="551"/>
++        <location filename="../../../plugins/account/userinfo/createusernew.cpp" line="553"/>
+         <source>Contains illegal characters!</source>
+         <translation>含有非法字元!</translation>
+     </message>
+@@ -3849,7 +3866,7 @@ change system settings</source>
+         <extra-contents_path>/Date/Sync Server</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="341"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="346"/>
+         <source>Add Timezone</source>
+         <translation>添加時區</translation>
+     </message>
+@@ -3907,8 +3924,8 @@ change system settings</source>
+         <translation type="vanished">確定</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="201"/>
+-        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="343"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="206"/>
++        <location filename="../../../plugins/time-language/datetime/datetime.cpp" line="348"/>
+         <source>Change Timezone</source>
+         <translation>修改時區</translation>
+     </message>
+@@ -3948,37 +3965,37 @@ change system settings</source>
+ <context>
+     <name>DatetimeUi</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="53"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="54"/>
+         <source>Sync Server</source>
+         <translation>同步伺服器</translation>
+         <extra-contents_path>/Date/Sync Server</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="75"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="77"/>
+         <source>Current Date</source>
+         <translation>當前時間</translation>
+         <extra-contents_path>/Date/Current Date</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="105"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="107"/>
+         <source>Timezone</source>
+         <translation>時區</translation>
+         <extra-contents_path>/Date/Timezone</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="111"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
+         <source>Set Time</source>
+         <translation>設置時間</translation>
+         <extra-contents_path>/Date/Set Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="113"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
+         <source>Manual Time</source>
+         <translation>手動設置時間</translation>
+         <extra-contents_path>/Date/Manual Time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="115"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="117"/>
+         <source>Sync Time</source>
+         <translation>自動同步時間</translation>
+         <extra-contents_path>/Date/Sync Time</extra-contents_path>
+@@ -3988,55 +4005,55 @@ change system settings</source>
+         <translation type="vanished">手動設置日期</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="127"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="129"/>
+         <source>Set Time Manually</source>
+         <translation>手動設置時間</translation>
+         <extra-contents_path>/Date/Set Time Manually</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="162"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
+         <source>Server Address</source>
+         <translation>服務器地址</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="164"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="166"/>
+         <source>Required</source>
+         <translation></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="165"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="167"/>
+         <source>Save</source>
+         <translation>保存</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="169"/>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="313"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="171"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="315"/>
+         <source>Customize</source>
+         <translation>自訂</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="197"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="199"/>
+         <source>Other Timezone</source>
+         <translation>其他時區時間</translation>
+         <extra-contents_path>/Date/Other Timezone</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="269"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
+         <source>MMMM d, yy ddd</source>
+         <translation>yy年M月d日 ddd</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="271"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="273"/>
+         <source>MMMM dd, yyyy ddd</source>
+         <translation>yyyy年MM月dd日 ddd</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="302"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="304"/>
+         <source>Sync failed</source>
+         <translation>同步失敗</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="312"/>
++        <location filename="../../../plugins/time-language/datetime/datetimeui.cpp" line="314"/>
+         <source>Default</source>
+         <translation>默認</translation>
+     </message>
+@@ -4109,56 +4126,56 @@ change system settings</source>
+ <context>
+     <name>DefaultAppUi</name>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="17"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="18"/>
+         <source>DefaultAppWindow</source>
+         <comment>Select Default Application</comment>
+         <translation></translation>
+         <extra-contents_path>/Defaultapp/Select Default Application</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="21"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="22"/>
+         <source>Browser</source>
+         <translation>瀏覽器</translation>
+         <extra-contents_path>/Defaultapp/Browser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="23"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="24"/>
+         <source>Mail</source>
+         <translation>電子郵件</translation>
+         <extra-contents_path>/Defaultapp/Mail</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="25"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="26"/>
+         <source>Image Viewer</source>
+         <translation>圖像查看器</translation>
+         <extra-contents_path>/Defaultapp/Image Viewer</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="27"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="28"/>
+         <source>Audio Player</source>
+         <translation>音頻播放器</translation>
+         <extra-contents_path>/Defaultapp/Audio Player</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="29"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="30"/>
+         <source>Video Player</source>
+         <translation>視頻播放器</translation>
+         <extra-contents_path>/Defaultapp/Video Player</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="31"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="32"/>
+         <source>Text Editor</source>
+         <translation></translation>
+         <extra-contents_path>/Defaultapp/Text Editor</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="35"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="36"/>
+         <source>Reset default apps to system recommended apps</source>
+         <translation>將預設應用重置為系統推薦應用</translation>
+         <extra-contents_path>/Defaultapp/Reset default apps to system recommended apps</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="36"/>
++        <location filename="../../../plugins/application/defaultapp/defaultappui.cpp" line="37"/>
+         <source>Reset</source>
+         <translation>重置</translation>
+     </message>
+@@ -4377,7 +4394,7 @@ folder will be deleted!</source>
+         <translation>”? 並執行:</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="65"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
+         <source>Keep desktop, files, favorites, music of the user</source>
+         <translation>保留該使用者下所屬的桌面、檔、我的最愛、音樂等數據</translation>
+     </message>
+@@ -4386,17 +4403,17 @@ folder will be deleted!</source>
+         <translation type="vanished">保留用户家目录</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="98"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="100"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="102"/>
+         <source>Confirm</source>
+         <translation>刪除</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="66"/>
++        <location filename="../../../plugins/account/userinfo/deleteuserexists.cpp" line="68"/>
+         <source>Delete whole data belong user</source>
+         <translation>刪除該使用者所有數據</translation>
+     </message>
+@@ -4770,78 +4787,64 @@ folder will be deleted!</source>
+ <context>
+     <name>DisplayPerformanceDialog</name>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="26"/>
+         <source>Dialog</source>
+-        <translation>更改時間</translation>
++        <translation type="vanished">更改時間</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="214"/>
+         <source>Display Advanced Settings</source>
+-        <translation>顯示高級設置</translation>
++        <translation type="vanished">顯示高級設置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="297"/>
+         <source>Performance</source>
+-        <translation>性能模式</translation>
++        <translation type="vanished">性能模式</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="376"/>
+         <source>Applicable to machine with discrete graphics, which can accelerate the rendering of 3D graphics.</source>
+-        <translation>適用於具有獨立顯卡的機器,能夠充分發揮顯卡的性能,對3D圖形繪製進行加速。</translation>
++        <translation type="vanished">適用於具有獨立顯卡的機器,能夠充分發揮顯卡的性能,對3D圖形繪製進行加速。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="392"/>
+         <source>(Note: not support connect graphical with xmanager on windows.)</source>
+-        <translation>(注意:本模式不支援Windows上個使用Xmanager等工具連接圖形顯示)</translation>
++        <translation type="vanished">(注意:本模式不支援Windows上個使用Xmanager等工具連接圖形顯示)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="462"/>
+         <source>Compatible</source>
+-        <translation>相容模式</translation>
++        <translation type="vanished">相容模式</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="538"/>
+         <source>Applicable to machine with integrated graphics,  there is no 3D graphics acceleration. </source>
+-        <translation>適用於集成顯卡,BMC顯卡等只具備基礎顯示功能,無3D圖形繪製加速。 </translation>
++        <translation type="vanished">適用於集成顯卡,BMC顯卡等只具備基礎顯示功能,無3D圖形繪製加速。 </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="554"/>
+         <source>(Note: need connect graphical with xmanager on windows, use this option.)</source>
+-        <translation>(注意:需要使用Windows上Xmanager等工具連接圖形的機器請選擇本項)</translation>
++        <translation type="vanished">(注意:需要使用Windows上Xmanager等工具連接圖形的機器請選擇本項)</translation>
+     </message>
+     <message>
+         <source>Cancel</source>
+         <translation type="vanished">取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="624"/>
+         <source>Automatic</source>
+-        <translation>自動檢測</translation>
++        <translation type="vanished">自動檢測</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="700"/>
+         <source>Auto select according to environment, delay the login time (about 0.5 sec).</source>
+-        <translation>自動檢測顯示環境,會增加登錄延時(0.5秒左右)</translation>
++        <translation type="vanished">自動檢測顯示環境,會增加登錄延時(0.5秒左右)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="721"/>
+         <source>Threshold:</source>
+-        <translation>閾值設置:</translation>
++        <translation type="vanished">閾值設置:</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="744"/>
+         <source>Apply</source>
+-        <translation>應用</translation>
++        <translation type="vanished">應用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="757"/>
+         <source>Reset</source>
+-        <translation>重置</translation>
++        <translation type="vanished">重置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/displayperformancedialog.ui" line="772"/>
+         <source>(Note: select this option to use 3D graphics acceleration and xmanager.)</source>
+-        <translation>(注意:使用3D圖形加速,且用Xmanager連接圖形時選擇本項)</translation>
++        <translation type="vanished">(注意:使用3D圖形加速,且用Xmanager連接圖形時選擇本項)</translation>
+     </message>
+ </context>
+ <context>
+@@ -5929,132 +5932,132 @@ folder will be deleted!</source>
+ <context>
+     <name>KeyboardUi</name>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="24"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="30"/>
+         <source>Keyboard Settings</source>
+         <translation>鍵盤設置</translation>
+         <extra-contents_path>/Keyboard/Keyboard Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="35"/>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="41"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="173"/>
+         <source>Input Method</source>
+         <translation>輸入法</translation>
+         <extra-contents_path>/Keyboard/Input Method</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="51"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="57"/>
+         <source>Virtual Keyboard</source>
+         <translation>虛擬鍵盤</translation>
+         <extra-contents_path>/Keyboard/Virtual Keyboard</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="106"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="112"/>
+         <source>Key repeat</source>
+         <translation>按鍵重複</translation>
+         <extra-contents_path>/Keyboard/Key repeat</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="114"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="120"/>
+         <source>Delay</source>
+         <translation>延遲</translation>
+         <extra-contents_path>/Keyboard/Delay</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="117"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="123"/>
+         <source>Short</source>
+         <translation>短</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="118"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="124"/>
+         <source>Long</source>
+         <translation>長</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="130"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="136"/>
+         <source>Speed</source>
+         <translation>速度</translation>
+         <extra-contents_path>/Keyboard/Speed</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="132"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="138"/>
+         <source>Slow</source>
+         <translation>慢</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="133"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="139"/>
+         <source>Fast</source>
+         <translation>快</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="144"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="150"/>
+         <source>Input test</source>
+         <translation>輸入測試</translation>
+         <extra-contents_path>/Keyboard/Input test</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="152"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="158"/>
+         <source>Key tips</source>
+         <translation>按鍵提示</translation>
+         <extra-contents_path>/Keyboard/Key tips</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="161"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="167"/>
+         <source>Input settings</source>
+         <translation>輸入設置</translation>
+         <extra-contents_path>/Keyboard/Input settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="168"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="174"/>
+         <source>Edit</source>
+         <translation>編輯</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="175"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="181"/>
+         <source>Show icon on tray</source>
+         <translation>顯示圖標在托盤</translation>
+         <extra-contents_path>/Keyboard/Show icon on tray</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="182"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="188"/>
+         <source>Show icon on desktop</source>
+         <translation>顯示圖標在桌面</translation>
+         <extra-contents_path>/Keyboard/Show icon on desktop</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="189"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="195"/>
+         <source>Keyboard Size</source>
+         <translation>鍵盤大小</translation>
+         <extra-contents_path>/Keyboard/Keyboard Size</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="197"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="203"/>
+         <source>Text size</source>
+         <translation></translation>
+         <extra-contents_path>/Keyboard/Text size</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="199"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="205"/>
+         <source>Small</source>
+         <translation>小</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="200"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="206"/>
+         <source>Medium</source>
+         <translation>中</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="201"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
+         <source>Large</source>
+         <translation>大</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="207"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="213"/>
+         <source>Animation</source>
+         <translation>動畫</translation>
+         <extra-contents_path>/Keyboard/Animation</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="214"/>
++        <location filename="../../../plugins/devices/keyboard/keyboardui.cpp" line="220"/>
+         <source>Input sound effect</source>
+         <translation>輸入音效</translation>
+         <extra-contents_path>/Keyboard/Input sound effect</extra-contents_path>
+@@ -6063,12 +6066,12 @@ folder will be deleted!</source>
+ <context>
+     <name>LanguageFrame</name>
+     <message>
+-        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="71"/>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="91"/>
+         <source>Delete</source>
+         <translation>拿掉</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="70"/>
++        <location filename="../../../plugins/time-language/area/languageframe.cpp" line="90"/>
+         <source>Input Settings</source>
+         <translation>輸入法設置</translation>
+     </message>
+@@ -6543,10 +6546,10 @@ Please retry or relogin!</source>
+         <translation type="vanished">设置</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="441"/>
+-        <location filename="../../mainwindow.cpp" line="459"/>
+-        <location filename="../../mainwindow.cpp" line="591"/>
+-        <location filename="../../mainwindow.cpp" line="949"/>
++        <location filename="../../mainwindow.cpp" line="470"/>
++        <location filename="../../mainwindow.cpp" line="488"/>
++        <location filename="../../mainwindow.cpp" line="620"/>
++        <location filename="../../mainwindow.cpp" line="974"/>
+         <source>Settings</source>
+         <translation>設置</translation>
+     </message>
+@@ -6555,7 +6558,7 @@ Please retry or relogin!</source>
+         <translation type="vanished">主菜单</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="480"/>
++        <location filename="../../mainwindow.cpp" line="509"/>
+         <source>Minimize</source>
+         <translation>最小化</translation>
+     </message>
+@@ -6575,22 +6578,22 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="173"/>
+-        <location filename="../../mainwindow.cpp" line="481"/>
++        <location filename="../../mainwindow.cpp" line="510"/>
+         <source>Maximize</source>
+         <translation>最大化</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="453"/>
++        <location filename="../../mainwindow.cpp" line="482"/>
+         <source>Back home</source>
+         <translation>返回首頁</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="479"/>
++        <location filename="../../mainwindow.cpp" line="508"/>
+         <source>Option</source>
+         <translation>選項</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="482"/>
++        <location filename="../../mainwindow.cpp" line="511"/>
+         <source>Close</source>
+         <translation>關閉</translation>
+     </message>
+@@ -6607,12 +6610,12 @@ Please retry or relogin!</source>
+         <translation type="vanished">退出</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="592"/>
++        <location filename="../../mainwindow.cpp" line="621"/>
+         <source>Version: </source>
+         <translation>版本: </translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="731"/>
++        <location filename="../../mainwindow.cpp" line="756"/>
+         <source>Specified</source>
+         <translation>指定外掛程式</translation>
+     </message>
+@@ -6621,13 +6624,13 @@ Please retry or relogin!</source>
+         <translation type="vanished">控制面板</translation>
+     </message>
+     <message>
+-        <location filename="../../mainwindow.cpp" line="1082"/>
++        <location filename="../../mainwindow.cpp" line="1107"/>
+         <source>Warning</source>
+         <translation>警告</translation>
+     </message>
+     <message>
+         <location filename="../../mainwindow.cpp" line="152"/>
+-        <location filename="../../mainwindow.cpp" line="1082"/>
++        <location filename="../../mainwindow.cpp" line="1107"/>
+         <source>This function has been controlled</source>
+         <translation>該功能已被管控</translation>
+     </message>
+@@ -7995,7 +7998,7 @@ Please retry or relogin!</source>
+         <translation>印表機</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/printer/printer.cpp" line="121"/>
++        <location filename="../../../plugins/devices/printer/printer.cpp" line="122"/>
+         <source>Printers</source>
+         <translatorcomment>打印机</translatorcomment>
+         <translation>印表機</translation>
+@@ -8013,22 +8016,22 @@ Please retry or relogin!</source>
+ <context>
+     <name>PrivacyDialog</name>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="11"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="12"/>
+         <source>Set</source>
+         <translation>系統設置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="73"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="74"/>
+         <source>End User License Agreement and Privacy Policy Statement of openKylin</source>
+         <translation>Openkylin最終使用者使用許可協議和隱私政策聲明</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="75"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="76"/>
+         <source>End User License Agreement and Privacy Policy Statement of Kylin</source>
+         <translation>銀河麒麟最終使用者使用許可協議和隱私政策聲明</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="82"/>
+         <source>Openkylin Community.</source>
+         <translation>Openkylin</translation>
+     </message>
+@@ -9051,7 +9054,7 @@ E-mail: support@kylinos.cn</source>
+ 长沙(0731)88280170 上海(021)51098866</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/privacydialog.cpp" line="83"/>
++        <location filename="../../../plugins/system/about/privacydialog.cpp" line="84"/>
+         <source>Kylinsoft Co., Ltd.</source>
+         <translation>麒麟軟體有限公司</translation>
+     </message>
+@@ -9441,7 +9444,7 @@ E-mail: support@kylinos.cn</source>
+         <translation>自訂快速鍵</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="472"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="474"/>
+         <source>Edit Shortcut</source>
+         <translation>編輯快速鍵</translation>
+     </message>
+@@ -9571,7 +9574,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">远程桌面</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="79"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="78"/>
+         <source>User Info</source>
+         <translation>帳戶資訊</translation>
+     </message>
+@@ -9943,55 +9946,55 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">连接失败,尝试重新连接</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1203"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1201"/>
+         <source>min length %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1213"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1211"/>
+         <source>min digit num %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1222"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1220"/>
+         <source>min upper num %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1231"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1229"/>
+         <source>min lower num %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1240"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1238"/>
+         <source>min other num %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1250"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1248"/>
+         <source>min char class %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1259"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1257"/>
+         <source>max repeat %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1268"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1266"/>
+         <source>max class repeat %1
+ </source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1277"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1275"/>
+         <source>max sequence %1
+ </source>
+         <translation type="unfinished"></translation>
+@@ -10005,7 +10008,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">系统升级增量备份</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="373"/>
++        <location filename="../../../plugins/application/autoboot/autoboot.cpp" line="372"/>
+         <source>Programs are not allowed to be added.</source>
+         <translation>該程式不允許添加。</translation>
+     </message>
+@@ -10285,88 +10288,88 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>ScreenlockUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="41"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="42"/>
+         <source>Show picture of screenlock on screenlogin</source>
+         <translation>顯示鎖屏壁紙在登錄介面</translation>
+         <extra-contents_path>/Screenlock/Show picture of screenlock on screenlogin</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="44"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
+         <source>Leave lock (System will be locked when the paired phone gone)</source>
+         <translation>動態鎖(系統將在已配對的藍牙手機離開時自動鎖定屏幕)</translation>
+         <extra-contents_path>/Screenlock/Leave lock (System will be locked when the paired phone gone)</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="45"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="46"/>
+         <source>Specified device</source>
+         <translation></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="46"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="47"/>
+         <source>No paired phone. Please turn to &apos;Bluetooth&apos; to pair.</source>
+         <translation>無配對手機,請轉到“藍牙”以鏈接手機</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="66"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="67"/>
+         <source>Screenlock</source>
+         <translation>鎖屏</translation>
+         <extra-contents_path>/Screenlock/Screenlock</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="96"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="97"/>
+         <source>Local Pictures</source>
+         <translation>本地圖片</translation>
+         <extra-contents_path>/Screenlock/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="98"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="99"/>
+         <source>Online Pictures</source>
+         <translation>線上圖片</translation>
+         <extra-contents_path>/Screenlock/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="100"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="101"/>
+         <source>Reset To Default</source>
+         <translation>恢復預設</translation>
+         <extra-contents_path>/Screenlock/Reset To Default</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="112"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="113"/>
+         <source>Bluetooth</source>
+         <translation>蓝牙設置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="117"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="118"/>
+         <source>No bluetooth adapter detected, can not use Leave Lock.</source>
+         <translation>無藍牙適配器,不能使用動態鎖</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="136"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="138"/>
+         <source>Monitor Off</source>
+         <translation>關閉顯示器</translation>
+         <extra-contents_path>/Screenlock/Monitor Off</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="138"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="140"/>
+         <source>Screensaver</source>
+         <translation>屏保</translation>
+         <extra-contents_path>/Screenlock/Screensaver</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="141"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="143"/>
+         <source>Related Settings</source>
+         <translation>相關設置</translation>
+         <extra-contents_path>/Screenlock/Related Settings</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="147"/>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="148"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="149"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="150"/>
+         <source>Set</source>
+         <translation>設置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="163"/>
+-        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="530"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="165"/>
++        <location filename="../../../plugins/personalized/screenlock/screenlockui.cpp" line="532"/>
+         <source>Please select device</source>
+         <translation>請選擇設備</translation>
+     </message>
+@@ -10592,118 +10595,118 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>ScreensaverUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="40"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="41"/>
+         <source>Screensaver</source>
+         <translation>屏保</translation>
+         <extra-contents_path>/Screensaver/Screensaver</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="53"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="54"/>
+         <source>Idle time</source>
+         <translation>此時間段后開啟屏保</translation>
+         <extra-contents_path>/Screensaver/Idle time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="55"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="56"/>
+         <source>Screensaver program</source>
+         <translation>屏幕保護程式</translation>
+         <extra-contents_path>/Screensaver/Screensaver program</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="87"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="88"/>
+         <source>Screensaver source</source>
+         <translation>屏保來源</translation>
+         <extra-contents_path>/Screensaver/Screensaver source</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="92"/>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="455"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="93"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="456"/>
+         <source>Select</source>
+         <translation>選擇</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="113"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="114"/>
+         <source>Ordinal</source>
+         <translation>按順序</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="114"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="115"/>
+         <source>Random</source>
+         <translation>隨機</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="121"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="122"/>
+         <source>Random switching</source>
+         <translation>隨機切換</translation>
+         <extra-contents_path>/Screensaver/Random switching</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="141"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="142"/>
+         <source>Switching time</source>
+         <translation>切換頻率</translation>
+         <extra-contents_path>/Screensaver/Switching time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="160"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="161"/>
+         <source>Text(up to 30 characters):</source>
+         <translation>屏保文本(最多 30 個字):</translation>
+         <extra-contents_path>/Screensaver/Text(up to 30 characters):</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="183"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="184"/>
+         <source>Text position</source>
+         <translation>文本位置</translation>
+         <extra-contents_path>/Screensaver/Text position</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="191"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="192"/>
+         <source>Centered</source>
+         <translation>居中</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="192"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="193"/>
+         <source>Randow(Bubble text)</source>
+         <translation>隨機(氣泡文字)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="214"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="215"/>
+         <source>Show rest time</source>
+         <translation>顯示休息時間</translation>
+         <extra-contents_path>/Screensaver/Show rest time</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="224"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="225"/>
+         <source>Lock screen when screensaver boot</source>
+         <translation>開啓屏保時鎖定屏幕</translation>
+         <extra-contents_path>/Screensaver/Lock screen when screensaver boot</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="413"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="414"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</source>
+         <translation>壁紙檔(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp *.svg)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="454"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="455"/>
+         <source>select custom screensaver dir</source>
+         <translation>選擇自訂屏保路徑</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="456"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="457"/>
+         <source>Position: </source>
+         <translation>位置:</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="457"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="458"/>
+         <source>FileName: </source>
+         <translation>文件名:</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="458"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="459"/>
+         <source>FileType: </source>
+         <translation>文件類型:</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="459"/>
++        <location filename="../../../plugins/personalized/screensaver/screensaverui.cpp" line="460"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+@@ -11117,32 +11120,32 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>ShortcutUi</name>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="33"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="34"/>
+         <source>System Shortcut</source>
+         <translation>系統快捷鍵</translation>
+         <extra-contents_path>/Shortcut/System Shortcut</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="46"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="47"/>
+         <source>Customize Shortcut</source>
+         <translation>自訂快速鍵</translation>
+         <extra-contents_path>/Shortcut/Customize Shortcut</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="77"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="81"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="98"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="102"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="180"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="269"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="481"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="79"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="83"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="100"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="104"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="182"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="271"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="483"/>
+         <source>Null</source>
+         <translation>無</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="230"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="362"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="617"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="232"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="364"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="619"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+@@ -11151,48 +11154,48 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">使用</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="232"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="364"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="619"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="234"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="366"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="621"/>
+         <source>Shortcut key conflict, use it?</source>
+         <translation>按鍵組合衝突,是否使用該組合?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="233"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="365"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="235"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="367"/>
+         <source>%1 occuied, using this combination will invalidate %2</source>
+         <translation>%1已被佔用,使用該組合會使「 %2」無按鍵組合</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="256"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="395"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="258"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="397"/>
+         <source>Shortcut &quot;%1&quot; occuied, please change the key combination</source>
+         <translation>快速鍵“%1”已被系統佔用,請更改按鍵組合</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="447"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="449"/>
+         <source>Edit</source>
+         <translation>編輯</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="448"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="450"/>
+         <source>Delete</source>
+         <translation>刪除</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="231"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="363"/>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="618"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="233"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="365"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="620"/>
+         <source>Continue</source>
+         <translation>繼續</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="620"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="622"/>
+         <source>&quot;%1&quot; occuied, using this combination will invalidate &quot;%2&quot;.</source>
+         <translation>“%1”已被“ %2”佔用,繼續將使該功能無快捷鍵。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="660"/>
++        <location filename="../../../plugins/devices/shortcut/shortcutui.cpp" line="662"/>
+         <source> or </source>
+         <translation> 或 </translation>
+     </message>
+@@ -11290,7 +11293,7 @@ E-mail: support@kylinos.cn</source>
+         <translation>關於本機</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/statusdialog.cpp" line="59"/>
++        <location filename="../../../plugins/system/about/statusdialog.cpp" line="60"/>
+         <source>Activation Code</source>
+         <translation>啟動碼</translation>
+     </message>
+@@ -11707,117 +11710,117 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">主题模式</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="111"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="534"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="108"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="539"/>
+         <source>Theme</source>
+         <translation>主題</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
+         <source>Default</source>
+         <translation>深淺</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="182"/>
+         <source>Light</source>
+         <translation>淺色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="186"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="184"/>
+         <source>Dark</source>
+         <translation>深色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="190"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="188"/>
+         <source>Auto</source>
+         <translation>自動</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="423"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="426"/>
+         <source>Corlor</source>
+         <translation>強調色</translation>
+         <extra-contents_path>/Theme/Corlor</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="608"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="614"/>
+         <source>Other</source>
+         <translation>相關設置</translation>
+         <extra-contents_path>/Theme/Other</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="613"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="619"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="623"/>
+         <source>Set</source>
+         <translation>去設置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="611"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="617"/>
+         <source>Wallpaper</source>
+         <translation>桌面壁紙</translation>
+         <extra-contents_path>/Theme/Wallpaper</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="224"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="223"/>
+         <source>Corner</source>
+         <translation>圓角</translation>
+         <extra-contents_path>/Theme/Corner</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="229"/>
+         <source>Right angle</source>
+         <translation>直角</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="230"/>
+         <source>Small</source>
+         <translation>小</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="232"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="231"/>
+         <source>Big</source>
+         <translation>大</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="615"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="621"/>
+         <source>Beep</source>
+         <translation>提示音</translation>
+         <extra-contents_path>/Theme/Beep</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="963"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="972"/>
+         <source>Blue-Crystal</source>
+         <translation>典藍</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="965"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="974"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1058"/>
+         <source>Light-Seeking</source>
+         <translation>光</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="967"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="976"/>
+         <source>DMZ-Black</source>
+         <translation>DMZ-黑</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="969"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="978"/>
+         <source>DMZ-White</source>
+         <translation>印白</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="971"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="980"/>
+         <source>Dark-Sense</source>
+         <translation>耀黑</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1045"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1049"/>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1054"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1058"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1064"/>
+         <source>basic</source>
+         <translation>基礎</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1056"/>
+         <source>Classic</source>
+         <translation>典</translation>
+     </message>
+@@ -11830,57 +11833,57 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">时尚</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1053"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1062"/>
+         <source>hp</source>
+         <translation>惠普</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1055"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1064"/>
+         <source>ukui</source>
+         <translation>尋光</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1051"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1060"/>
+         <source>HeYin</source>
+         <translation>印</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1047"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1056"/>
+         <source>classic</source>
+         <translation>經典</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1057"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1066"/>
+         <source>daybreakBlue</source>
+         <translation>藍色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1059"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1068"/>
+         <source>jamPurple</source>
+         <translation>紫色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1061"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1070"/>
+         <source>magenta</source>
+         <translation>玫紅色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1063"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1072"/>
+         <source>sunRed</source>
+         <translation>紅色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1065"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1074"/>
+         <source>sunsetOrange</source>
+         <translation>橙色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1067"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1076"/>
+         <source>dustGold</source>
+         <translation>黃色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1069"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="1078"/>
+         <source>polarGreen</source>
+         <translation>綠色</translation>
+     </message>
+@@ -11893,13 +11896,13 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">中</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="248"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="247"/>
+         <source>Window Theme</source>
+         <translation>窗口外觀</translation>
+         <extra-contents_path>/Theme/Window Theme</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="250"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="249"/>
+         <source>Icon theme</source>
+         <translation>圖示</translation>
+         <extra-contents_path>/Theme/Icon theme</extra-contents_path>
+@@ -11909,19 +11912,19 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">控件主题</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="253"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="252"/>
+         <source>Cursor theme</source>
+         <translation>游標</translation>
+         <extra-contents_path>/Theme/Cursor theme</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="215"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="214"/>
+         <source>Effect setting</source>
+         <translation>視窗特效</translation>
+         <extra-contents_path>/Theme/Effect setting</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="222"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="221"/>
+         <source>Transparency</source>
+         <translation>透明度</translation>
+         <extra-contents_path>/Theme/Transparency</extra-contents_path>
+@@ -11931,7 +11934,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">透明特效</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/theme/theme.cpp" line="220"/>
++        <location filename="../../../plugins/personalized/theme/theme.cpp" line="219"/>
+         <source>Performance mode</source>
+         <translation>特效模式</translation>
+         <extra-contents_path>/Theme/Performance mode</extra-contents_path>
+@@ -11960,27 +11963,27 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>TimeBtn</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="106"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="107"/>
+         <source>Tomorrow</source>
+         <translation>明天</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="108"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="109"/>
+         <source>Yesterday</source>
+         <translation>昨天</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="110"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="111"/>
+         <source>Today</source>
+         <translation>今天</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="128"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="129"/>
+         <source>%1 hours earlier than local</source>
+         <translation>比本地早%1小時</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="130"/>
++        <location filename="../../../plugins/time-language/datetime/timeBtn.cpp" line="131"/>
+         <source>%1 hours later than local</source>
+         <translation>比本地晚%1小時</translation>
+     </message>
+@@ -11988,12 +11991,12 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>TimeZoneChooser</name>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="35"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="34"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="37"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="36"/>
+         <source>Confirm</source>
+         <translation>確定</translation>
+     </message>
+@@ -12002,7 +12005,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">更改时区</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="33"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="32"/>
+         <source>Search Timezone</source>
+         <translation>搜索時區</translation>
+     </message>
+@@ -12011,7 +12014,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">搜索时区</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="64"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="63"/>
+         <source>To select a time zone, please click where near you on the map and select a city from the nearest city</source>
+         <translation>若要選擇時區,請點擊地圖上靠近你所在的位置,從最接近的城市中選取一個城市</translation>
+     </message>
+@@ -12024,7 +12027,7 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">更改时区</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="40"/>
++        <location filename="../../../plugins/time-language/datetime/worldMap/timezonechooser.cpp" line="39"/>
+         <source>Change Timezone</source>
+         <translation>更改時區</translation>
+     </message>
+@@ -12166,12 +12169,12 @@ E-mail: support@kylinos.cn</source>
+         <translation>系統設置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="37"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="38"/>
+         <source>Yinhe Kylin OS(Trail Version) Disclaimer</source>
+         <translation>銀河麒麟操作系統(試用版)免責聲明</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="46"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="47"/>
+         <source>Dear customer:
+        Thank you for trying Yinhe Kylin OS(trail version)! This version is free for users who only try out, no commercial purpose is permitted. The trail period lasts one year and it starts from the ex-warehouse time of the OS. No after-sales service is provided during the trail stage. If any security problems occurred when user put important files or do any commercial usage in system, all consequences are taken by users. Kylin software Co., Ltd. take no legal risk in trail version.
+        During trail stage,if you want any technology surpport or activate the system, please buy“Yinhe Kylin Operating System”official version or authorization by contacting 400-089-1870.</source>
+@@ -12188,7 +12191,7 @@ E-mail: support@kylinos.cn</source>
+     在试用过程中,如希望激活或者得到专业的技术服务支持,请您购买“银河麒麟操作系统”正式版本或授权,联系方式如下:400-089-1870。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/about/trialdialog.cpp" line="60"/>
++        <location filename="../../../plugins/system/about/trialdialog.cpp" line="61"/>
+         <source>Kylin software Co., Ltd.</source>
+         <translation>麒麟軟體有限公司</translation>
+     </message>
+@@ -12613,12 +12616,12 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">管理员用户</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1045"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1043"/>
+         <source>root</source>
+         <translation>Root</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1013"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1011"/>
+         <source>Hint</source>
+         <translation>提示</translation>
+     </message>
+@@ -12627,32 +12630,32 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">更改账户类型需要注销后生效,是否注销?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="913"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="911"/>
+         <source>The account type of “%1” has been modified, will take effect after logout, whether to logout?</source>
+         <translation>“%1”帳戶類型已被修改,將在註銷系統後生效。 是否註銷系統?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="914"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="912"/>
+         <source>logout later</source>
+         <translation>稍後註銷</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="915"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="913"/>
+         <source>logout now</source>
+         <translation>立即註銷</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1014"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1012"/>
+         <source>The system only allows one user to log in automatically.After it is turned on, the automatic login of other users will be turned off.Is it turned on?</source>
+         <translation>系統只允許一個使用者自動登錄,開啟后將關閉其他使用者的自動登錄,是否開啟?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1017"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1015"/>
+         <source>Trun on</source>
+         <translation>開啟</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1018"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1016"/>
+         <source>Close on</source>
+         <translation>取消</translation>
+     </message>
+@@ -12669,12 +12672,12 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">验证</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1041"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1039"/>
+         <source>Standard</source>
+         <translation>標準使用者</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1043"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="1041"/>
+         <source>Admin</source>
+         <translation>管理員</translation>
+     </message>
+@@ -12683,55 +12686,55 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">删除</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="171"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="170"/>
+         <source>CurrentUser</source>
+         <translation>當前使用者</translation>
+         <extra-contents_path>/Userinfo/CurrentUser</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="177"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="176"/>
+         <source>OthersUser</source>
+         <translation>其他使用者</translation>
+         <extra-contents_path>/Userinfo/OthersUser</extra-contents_path>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="309"/>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="207"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="206"/>
+         <source>Password</source>
+         <translation>修改密碼</translation>
+         <extra-contents_path>/Userinfo/Password</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="219"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="218"/>
+         <source>Groups</source>
+         <translation>使用者組</translation>
+         <extra-contents_path>/Userinfo/Groups</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="271"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="270"/>
+         <source>AutoLoginOnBoot</source>
+         <translation>開機自動登錄</translation>
+         <extra-contents_path>/Userinfo/AutoLoginOnBoot</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="266"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="265"/>
+         <source>LoginWithoutPwd</source>
+         <translation>免密登錄</translation>
+         <extra-contents_path>/Userinfo/LoginWithoutPwd</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="179"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="178"/>
+         <source>Add</source>
+         <translation>添加</translation>
+         <extra-contents_path>/Userinfo/Add</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="540"/>
+         <source>Warning</source>
+         <translation>警告</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="542"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="540"/>
+         <source>The user is logged in, please delete the user after logging out</source>
+         <translation>用戶已經登錄,請註銷后刪除使用者</translation>
+     </message>
+@@ -12763,7 +12766,7 @@ E-mail: support@kylinos.cn</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/account/userinfo/userinfo.ui" line="331"/>
+-        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="213"/>
++        <location filename="../../../plugins/account/userinfo/userinfo.cpp" line="212"/>
+         <source>Type</source>
+         <translation>帳戶類型</translation>
+         <extra-contents_path>/Userinfo/Type</extra-contents_path>
+@@ -13021,19 +13024,19 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">背景</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="31"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="48"/>
+         <source>Background</source>
+         <translation>背景</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="156"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="195"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="214"/>
+         <source>picture</source>
+         <translation>圖片</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="137"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="153"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="195"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="211"/>
+         <source>color</source>
+         <translation>顏色</translation>
+     </message>
+@@ -13046,43 +13049,43 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">自定义颜色</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="167"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="225"/>
+         <source>wallpaper</source>
+         <translation>平鋪</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="169"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="227"/>
+         <source>centered</source>
+         <translation>居中</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="165"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="223"/>
+         <source>scaled</source>
+         <translation>填充</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="171"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="229"/>
+         <source>stretched</source>
+         <translation>拉伸</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="173"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="231"/>
+         <source>zoom</source>
+         <translation>適應</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="144"/>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="175"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="202"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="233"/>
+         <source>spanned</source>
+         <translation>跨區</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="219"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="277"/>
+         <source>Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</source>
+         <translation>圖片檔(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp)</translation>
+     </message>
+@@ -13091,32 +13094,32 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">所有文件(*.*)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="259"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="317"/>
+         <source>select custom wallpaper file</source>
+         <translation>選擇自訂壁紙檔</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="260"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="318"/>
+         <source>Select</source>
+         <translation>選擇</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="261"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="319"/>
+         <source>Position: </source>
+         <translation>位置: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="262"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="320"/>
+         <source>FileName: </source>
+         <translation>檔案名稱: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="263"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="321"/>
+         <source>FileType: </source>
+         <translation>檔案類型: </translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="264"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaper.cpp" line="322"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+@@ -13124,37 +13127,37 @@ E-mail: support@kylinos.cn</source>
+ <context>
+     <name>WallpaperUi</name>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="28"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="29"/>
+         <source>Background</source>
+         <translation>背景</translation>
+         <extra-contents_path>/Wallpaper/Background</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="30"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="31"/>
+         <source>Type</source>
+         <translation>帳戶類型</translation>
+         <extra-contents_path>/Wallpaper/Type</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="66"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="67"/>
+         <source>Desktop Background</source>
+         <translation>桌面背景</translation>
+         <extra-contents_path>/Wallpaper/Desktop Background</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="93"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="94"/>
+         <source>Local Pictures</source>
+         <translation>本地圖片</translation>
+         <extra-contents_path>/Wallpaper/Local Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="95"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="96"/>
+         <source>Online Pictures</source>
+         <translation>線上圖片</translation>
+         <extra-contents_path>/Wallpaper/Online Pictures</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="97"/>
++        <location filename="../../../plugins/personalized/wallpaper/wallpaperui.cpp" line="98"/>
+         <source>Reset To Default</source>
+         <translation>恢復預設</translation>
+         <extra-contents_path>/Wallpaper/Reset To Default</extra-contents_path>
+@@ -13180,15 +13183,15 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">部分程序需要注销生效</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="267"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="288"/>
+         <source>Night Mode</source>
+         <translation>色溫</translation>
+         <extra-contents_path>/Display/Night Mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1987"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2013"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="299"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2046"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2072"/>
+         <source>Open</source>
+         <translation>開啟</translation>
+     </message>
+@@ -13197,24 +13200,24 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">启用后会将屏幕色温调至偏暖的一端,降低屏幕蓝光。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="291"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="312"/>
+         <source>Time</source>
+         <translation>時間</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="301"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="322"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2132"/>
+         <source>Custom Time</source>
+         <translation>自訂</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="312"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="333"/>
+         <source>to</source>
+         <translation>至</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="285"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="330"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="306"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="351"/>
+         <source>Color Temperature</source>
+         <translation>螢幕色溫</translation>
+         <extra-contents_path>/Display/Color Temperature</extra-contents_path>
+@@ -13224,27 +13227,27 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">護眼模式</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="332"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="353"/>
+         <source>Warmer</source>
+         <translation>較暖</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="333"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="354"/>
+         <source>Colder</source>
+         <translation>較冷</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="611"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="632"/>
+         <source>Multi-screen</source>
+         <translation>多屏顯示</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="616"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="637"/>
+         <source>First Screen</source>
+         <translation>第一屏</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="620"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="641"/>
+         <source>Clone Screen</source>
+         <translation>鏡像</translation>
+     </message>
+@@ -13254,7 +13257,7 @@ E-mail: support@kylinos.cn</source>
+         <extra-contents_path>/Display/Network Display</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2745"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2845"/>
+         <source>Auto Brightness</source>
+         <translation>自動調節亮度</translation>
+         <extra-contents_path>/Display/Auto Brightness</extra-contents_path>
+@@ -13273,22 +13276,22 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">通過優化顯示內容來延長電池壽命</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="793"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="822"/>
+         <source>scale</source>
+         <translation>縮放率</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="798"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="827"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after 14 seconds&lt;/font&gt;</source>
+         <translation>螢幕%1已修改,是否保存? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系統將在14秒后恢復配置&lt;/font&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="809"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="838"/>
+         <source>The screen %1 has been modified, whether to save it ? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;the settings will be restore after %2 seconds&lt;/font&gt;</source>
+         <translation>螢幕%1已修改,是否保存? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系統將在%2秒后恢復配置&lt;/font&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1023"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1069"/>
+         <source>The zoom has been modified, it will take effect after you log off</source>
+         <translation>屏幕縮放已被修改,需要註銷後生效。</translation>
+     </message>
+@@ -13301,54 +13304,54 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">螢幕%1已修改,是否保存? &lt;br/&gt;&lt;font style= &apos;color:#626c6e&apos;&gt;系統將在%2秒後自動保存。 &lt;/font&gt;</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2253"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2259"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2316"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2322"/>
+         <source>Follow the sunrise and sunset</source>
+         <translation>跟隨日出日落</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="619"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="640"/>
+         <source>Extend Screen</source>
+         <translation>擴展</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="278"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="299"/>
+         <source>When turned on, it will reduce the blue light of the screen.</source>
+         <translation>啟用後會將螢幕色溫調至偏暖的一端,降低螢幕藍光。</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="617"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="638"/>
+         <source>Vice Screen</source>
+         <translation>其他屏</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="622"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2639"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="643"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2739"/>
+         <source>Splice Screen</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2702"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2802"/>
+         <source>Splicing Method</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2705"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2805"/>
+         <source>Change</source>
+         <translation>更換</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2773"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2873"/>
+         <source>monitor</source>
+         <translation>顯示器</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2774"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2874"/>
+         <source>as main</source>
+         <translation>設為主屏</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2795"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2895"/>
+         <source>open monitor</source>
+         <translation>打開顯示器</translation>
+     </message>
+@@ -13361,17 +13364,17 @@ E-mail: support@kylinos.cn</source>
+         <translation type="vanished">主題跟隨夜間模式變化</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="784"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="813"/>
+         <source>resolution</source>
+         <translation>解析度</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="787"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="816"/>
+         <source>orientation</source>
+         <translation>方向</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="790"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="819"/>
+         <source>frequency</source>
+         <translation>刷新率</translation>
+     </message>
+@@ -13385,12 +13388,12 @@ the settings will be saved after 14 seconds</source>
+         <translation type="vanished">是否保留当前修改的配置?将在14秒后自动保存配置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="778"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="806"/>
+         <source>Save</source>
+         <translation>保存</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="777"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="805"/>
+         <source>Not Save</source>
+         <translation>不保存</translation>
+     </message>
+@@ -13404,19 +13407,19 @@ the settings will be saved after %1 seconds</source>
+         <translation type="vanished">修改系统缩放后需要注销生效,是否注销?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="283"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="304"/>
+         <source>Color Temperature And Eye Care</source>
+         <translation>色溫與護眼</translation>
+         <extra-contents_path>/Display/Color Temperature And Eye Care</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="293"/>
+         <source>Eye Protection Mode</source>
+         <translation>護眼模式</translation>
+         <extra-contents_path>/Display/Eye protection mode</extra-contents_path>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="272"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="293"/>
+         <source>When turned on, it can reduce blue light to prevent eye, the screen will turn yellow.</source>
+         <translation>開啟後可减少藍光輻射預防用眼疲勞,螢幕顯示將會偏黃。</translation>
+     </message>
+@@ -13434,18 +13437,18 @@ the settings will be saved after %1 seconds</source>
+         <translation type="vanished">主荧幕</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1024"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1070"/>
+         <source>Log out now</source>
+         <translation>立即註銷</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1025"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1071"/>
+         <source>Later</source>
+         <translation>稍後註銷</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1042"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1052"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1088"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1098"/>
+         <source>(Effective after logout)</source>
+         <translation>(在註銷後生效)</translation>
+     </message>
+@@ -13476,23 +13479,23 @@ the settings will be saved after %1 seconds</source>
+         <translation type="vanished">取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1986"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2045"/>
+         <source>Turning on &apos;Eye Protection Mode&apos; will turn off &apos;Color Temperature&apos;. Continue turning it on?</source>
+         <translation>開啟“護眼模式”將會關閉“色溫”,是否繼續開啟?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1988"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2014"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2047"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
+         <source>Cancel</source>
+         <translation>取消</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2012"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2071"/>
+         <source>Turning on &apos;Color Temperature&apos; will turn off &apos;Eye Protection Mode&apos;. Continue turning it on?</source>
+         <translation>開啟“色溫”將會關閉“護眼模式”,是否繼續開啟?</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2073"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2132"/>
+         <source>All Day</source>
+         <translation>全天</translation>
+     </message>
+@@ -13501,8 +13504,8 @@ the settings will be saved after %1 seconds</source>
+         <translation type="vanished">跟随日出日落(17:55-06:23)</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2284"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2290"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2347"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2353"/>
+         <source>Brightness</source>
+         <translation>亮度</translation>
+         <extra-contents_path>/Display/Brightness</extra-contents_path>
+@@ -13528,7 +13531,7 @@ If something goes wrong, the settings will be restored after 9 seconds</source>
+         <translation type="vanished">修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在9秒后还原设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="2782"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="2882"/>
+         <source>screen zoom</source>
+         <translation>縮放螢幕</translation>
+     </message>
+@@ -13569,15 +13572,15 @@ If something goes wrong, the settings will be restored after %1 seconds</source>
+         <translation type="vanished">修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在%1秒后还原设置</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1546"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1846"/>
+         <source>please insure at least one output!</source>
+         <translation>請確保至少開啟一個螢幕!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1489"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1496"/>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1789"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1546"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1553"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1846"/>
+         <source>Warning</source>
+         <translation>警告</translation>
+     </message>
+@@ -13598,7 +13601,7 @@ If something goes wrong, the settings will be restored after %1 seconds</source>
+         <translation type="vanished">早晨时刻应早于晚上的时刻!</translation>
+     </message>
+     <message>
+-        <location filename="../../../plugins/system/display/widget.cpp" line="1497"/>
++        <location filename="../../../plugins/system/display/widget.cpp" line="1554"/>
+         <source>Sorry, your configuration could not be applied.
+ Common reasons are that the overall screen size is too big, or you enabled more displays than supported by your GPU.</source>
+         <translation>抱歉,配置不能應用.</translation>
+diff --git a/shell/shell.pro b/shell/shell.pro
+index fa1880d..dcc1788 100644
+--- a/shell/shell.pro
++++ b/shell/shell.pro
+@@ -79,9 +79,6 @@ search.path = /usr/share/dbus-1/services/
+ modules.files += $$PROJECT_ROOTDIR/data/ukui-control-center-config.json
+ modules.path += /usr/share/ukui-control-center/data/
+ 
+-protocol.files += $$PROJECT_ROOTDIR/data/*.txt
+-protocol.path += /usr/share/protocol/
+-
+ ukccYaml.files +=  $$PROJECT_ROOTDIR/data/*.yaml
+ ukccYaml.path += /etc/kylin-config/basic/
+ 
+diff --git a/tests/unit_test_shortcut/unit_test_shortcut.pro b/tests/unit_test_shortcut/unit_test_shortcut.pro
+index 7e0df90..a114f40 100644
+--- a/tests/unit_test_shortcut/unit_test_shortcut.pro
++++ b/tests/unit_test_shortcut/unit_test_shortcut.pro
+@@ -38,6 +38,7 @@ INCLUDEPATH += $$PROJECT_ROOTDIR \
+ 
+ SOURCES += ../../registeredSession/plugins/shortcut/shortcutinterface.cpp \
+ 	   ../../registeredSession/plugins/shortcut/getshortcutworker.cpp \
++           ../../registeredSession/plugins/shortcut/type.cpp \
+            unit_test_shortcut.cpp \
+            main.cpp
+ 
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0137-171-fix-ukui-control-center-fix-display-frame.patch ukui-control-center-4.10.0.0/debian/patches/0137-171-fix-ukui-control-center-fix-display-frame.patch
--- ukui-control-center-4.10.0.0/debian/patches/0137-171-fix-ukui-control-center-fix-display-frame.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0137-171-fix-ukui-control-center-fix-display-frame.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,23 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Mon, 24 Feb 2025 11:54:51 +0000
+Subject: =?utf-8?q?!171_fix=28ukui-control-center=29=3A_fix_display_frame_M?=
+ =?utf-8?q?erge_pull_request_!171_from_=E8=8B=8F=E5=97=A3=E5=85=B8/openkyli?=
+ =?utf-8?q?n/nile-1126?=
+
+---
+ plugins/system/display/brightnessFrame.cpp | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/plugins/system/display/brightnessFrame.cpp b/plugins/system/display/brightnessFrame.cpp
+index d563d34..09b43b4 100644
+--- a/plugins/system/display/brightnessFrame.cpp
++++ b/plugins/system/display/brightnessFrame.cpp
+@@ -43,8 +43,6 @@ using namespace ukcc;
+ BrightnessFrame::BrightnessFrame(const QString &name, const bool &isBattery, const QString &edidHash,const KScreen::OutputPtr &output, QWidget *parent)
+     : UkccFrame(parent, UkccFrame::BorderRadiusStyle::None, false)
+ {
+-    this->setFrameShape(QFrame::Shape::NoFrame);
+-
+     m_powerGSettings = new QGSettings(QByteArray(POWER_SCHMES), QByteArray(), this);
+ 
+     QHBoxLayout *layout = new QHBoxLayout;
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0138-172-fix-mainwindow-second-widget.patch ukui-control-center-4.10.0.0/debian/patches/0138-172-fix-mainwindow-second-widget.patch
--- ukui-control-center-4.10.0.0/debian/patches/0138-172-fix-mainwindow-second-widget.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0138-172-fix-mainwindow-second-widget.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,273 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Mon, 24 Feb 2025 12:03:06 +0000
+Subject: =?utf-8?q?!172_fix=28mainwindow=29=3A_second_widget_Merge_pull_req?=
+ =?utf-8?q?uest_!172_from_=E4=BD=95=E6=80=9D=E8=83=9C/nile-0212?=
+
+---
+ plugins/devices/keyboard/keyboardmain.cpp | 14 ++++++++++
+ plugins/devices/keyboard/keyboardmain.h   | 18 +++++++++++++
+ shell/main.cpp                            |  6 ++++-
+ shell/mainwindow.cpp                      | 45 ++++++++++++++++++++++++++++---
+ shell/mainwindow.h                        | 21 +++++++++++++++
+ shell/modulepagewidget.cpp                |  6 ++++-
+ 6 files changed, 104 insertions(+), 6 deletions(-)
+
+diff --git a/plugins/devices/keyboard/keyboardmain.cpp b/plugins/devices/keyboard/keyboardmain.cpp
+index e561a03..4d5b8c7 100644
+--- a/plugins/devices/keyboard/keyboardmain.cpp
++++ b/plugins/devices/keyboard/keyboardmain.cpp
+@@ -48,6 +48,7 @@ QWidget *KeyboardMain::pluginUi()
+         keyBoardWidget->delayFrame()->slider()->installEventFilter(this);
+         keyBoardWidget->speedFrame()->slider()->installEventFilter(this);
+         keyBoardWidget->virtualKeyboardSizeFrame()->slider()->installEventFilter(this);
++        this->installEventFilter(this);
+         keyBoardDbus = new QDBusInterface("org.ukui.ukcc.session",
+                                            "/KeyBoard",
+                                            "org.ukui.ukcc.session.KeyBoard",
+@@ -67,6 +68,7 @@ QWidget *KeyboardMain::pluginUi()
+ 
+         }
+     }
++
+     return keyBoardWidget;
+ }
+ 
+@@ -332,6 +334,8 @@ void KeyboardMain::inputMethodSetSlot()
+ #endif
+     QProcess process;
+     QString cmd = getInputMethodSetCmd();
++
++    qDebug() << "The cmd of input method is : " << cmd;
+     process.startDetached(cmd);
+ }
+ 
+@@ -387,6 +391,16 @@ bool KeyboardMain::eventFilter(QObject *watched, QEvent *event)
+             UkccCommon::buriedSettings(name(), keyBoardWidget->virtualKeyboardSizeFrame()->objectName(), QString("settings"), QString::number(value));
+         }
+     }
++
++    if(event->type()== UkccArgEvent::TYPE) {
++        UkccArgEvent *str = dynamic_cast<UkccArgEvent* >(event);
++        if (str != nullptr) {
++            qDebug() << "event string = " << str->str();
++            if (str->str() == "inputmethod") {
++                // 提供给键盘显示输入法设置相关界面
++            }
++        }
++    }
+     return QObject::eventFilter(watched, event);
+ }
+ 
+diff --git a/plugins/devices/keyboard/keyboardmain.h b/plugins/devices/keyboard/keyboardmain.h
+index 61002dd..eb92887 100644
+--- a/plugins/devices/keyboard/keyboardmain.h
++++ b/plugins/devices/keyboard/keyboardmain.h
+@@ -12,11 +12,29 @@
+ #include <QProcess>
+ #include <QDebug>
+ #include <QtDBus/QDBusInterface>
++#include <QEvent>
+ #include "shell/interface.h"
+ #include "keyboardui.h"
+ #include "ukcccommon.h"
+ using namespace ukcc;
+ 
++class UkccArgEvent : public QEvent
++{
++private:
++    QString mstr;
++
++public:
++    const static Type TYPE = static_cast<Type>(QEvent::User+0x10);
++    explicit UkccArgEvent(QString s) : QEvent(TYPE)
++    {
++        mstr = s;
++    }
++
++    QString str()
++    {
++        return mstr;
++    }
++};
+ 
+ class KeyboardMain : public QWidget, CommonInterface
+ {
+diff --git a/shell/main.cpp b/shell/main.cpp
+index c8325cf..1afb601 100644
+--- a/shell/main.cpp
++++ b/shell/main.cpp
+@@ -85,7 +85,11 @@ int main(int argc, char *argv[])
+ 
+     if (a.isRunning()) {
+         int agr_length = QApplication::arguments().length();
+-        a.sendMessage(QApplication::arguments().length() > 1 ? QApplication::arguments().at(agr_length-1) : a.applicationFilePath());
++        QString msg = QApplication::arguments().length() > 1 ? QApplication::arguments().at(agr_length-1) : a.applicationFilePath();
++        if (agr_length >3 && QApplication::arguments().at(1) == "-m") {
++            msg = QApplication::arguments().at(agr_length-2) + "##" + msg;
++        }
++        a.sendMessage(msg);
+         qDebug() << QObject::tr("ukui-control-center is already running!");
+         return EXIT_SUCCESS;
+     } else {
+diff --git a/shell/mainwindow.cpp b/shell/mainwindow.cpp
+index e9cfd1d..a52449b 100644
+--- a/shell/mainwindow.cpp
++++ b/shell/mainwindow.cpp
+@@ -118,7 +118,10 @@ void MainWindow::preInit() {
+     m_ModuleMap = UkccCommon::getModuleHideStatus();
+ }
+ 
+-void MainWindow::bootOptionsFilter(QString opt, bool firstIn) {
++void MainWindow::bootOptionsFilter(QString opt, bool firstIn)
++{
++    qDebug() << "bootOptions opt = " << opt;
++
+     PluginInfo* pluginInfo = ModulesFactory::getPluginInfoByName(opt);
+     if (pluginInfo == nullptr) {
+         //避免无限循环的风险
+@@ -436,6 +439,7 @@ void MainWindow::initUI() {
+         } else if (QApplication::arguments().at(1) == "-m") {
+             QTimer::singleShot(2, this, [=](){  //延时保证菜单栏选中插件居中,控件未画出来,无法准确居中
+                 bootOptionsFilter(QApplication::arguments().at(2));
++
+             });
+         }
+     }
+@@ -1046,7 +1050,8 @@ void MainWindow::pluginBtnClicked(QObject *plugin) {
+     functionBtnClicked(plugin);
+ }
+ 
+-void MainWindow::functionBtnClicked(QObject *plugin, QString jumpText) {
++void MainWindow::functionBtnClicked(QObject *plugin, QString jumpText)
++{
+     if (!scrollArea)
+         return;
+ 
+@@ -1066,9 +1071,23 @@ void MainWindow::functionBtnClicked(QObject *plugin, QString jumpText) {
+     } else {
+         scrollArea->verticalScrollBar()->setValue(value);
+     }
++
++    qDebug() << QApplication::arguments().length() << QApplication::arguments();
++    if (QApplication::arguments().length() > 3 && QApplication::arguments().at(1) == "-m") {
++        UkccArgEvent *event = new UkccArgEvent(QString(QApplication::arguments().at(3)));
++        QApplication::sendEvent(plugin, event);         //发送自定义事件
++    }
++
++    qDebug() << "m_secondWidgetName = " << m_secondWidgetName;
++    if (!m_secondWidgetName.isEmpty()) {
++        UkccArgEvent *event = new UkccArgEvent(QString(m_secondWidgetName));
++        QApplication::sendEvent(plugin, event);         //发送自定义事件
++        m_secondWidgetName = "";
++    }
+ }
+ 
+-void MainWindow::sltMessageReceived(const QString &msg) {
++void MainWindow::sltMessageReceived(const QString &msg)
++{
+     QString platform = QGuiApplication::platformName();
+     qDebug() << Q_FUNC_INFO << "Message received" << msg << "platform" << platform;
+     if(platform.startsWith(QLatin1String("wayland"),Qt::CaseInsensitive)) {
+@@ -1080,7 +1099,25 @@ void MainWindow::sltMessageReceived(const QString &msg) {
+     }
+     this->initPageWidgetSlot();
+     this->show();
+-    bootOptionsFilter(msg, false);
++
++    // 获取所有顶级窗口
++    QList<QWindow*> topLevelWindows = QApplication::topLevelWindows();
++    // 遍历并打印窗口标题
++    for (QWindow *window : topLevelWindows) {
++        qDebug() << "topLevelWindows " << window->modality() << window->title();
++        if (window->modality() == Qt::WindowModal || window->modality() == Qt::ApplicationModal) {
++            return;
++        };
++    }
++
++    if (msg.contains("##")) {
++        if (msg.split("##").count() > 1) {
++            m_secondWidgetName = msg.split("##").at(1);
++            bootOptionsFilter(msg.split("##").at(0), false);
++        }
++    } else {
++        bootOptionsFilter(msg, false);
++    }
+ }
+ 
+ QVariantMap MainWindow::getSearchItems() {
+diff --git a/shell/mainwindow.h b/shell/mainwindow.h
+index 3e94aae..95f9b6e 100644
+--- a/shell/mainwindow.h
++++ b/shell/mainwindow.h
+@@ -44,6 +44,7 @@
+ #include "knavigationbar.h"
+ #include "windowmanager/windowmanager.h"
+ #include <QFutureWatcher>
++#include <QEvent>
+ 
+ class QLabel;
+ class QPushButton;
+@@ -54,6 +55,24 @@ namespace Ui {
+ class MainWindow;
+ }
+ 
++class UkccArgEvent : public QEvent
++{
++private:
++    QString mstr;
++
++public:
++    const static Type TYPE = static_cast<Type>(QEvent::User+0x10);
++    explicit UkccArgEvent(QString s) : QEvent(TYPE)
++    {
++        mstr = s;
++    }
++
++    QString str()
++    {
++        return mstr;
++    }
++};
++
+ class MainWindow : public QMainWindow
+ {
+     Q_OBJECT
+@@ -121,6 +140,8 @@ private:
+     QFutureWatcher<void> m_watcher;
+     QList<CommonInterface*> m_pluginList;
+ 
++    QString m_secondWidgetName;
++
+ private:
+     void preInit();
+     void initUI();
+diff --git a/shell/modulepagewidget.cpp b/shell/modulepagewidget.cpp
+index e33294c..fd90d11 100644
+--- a/shell/modulepagewidget.cpp
++++ b/shell/modulepagewidget.cpp
+@@ -77,13 +77,16 @@ void ModulePageWidget::initUI() {
+     ui->scrollArea->verticalScrollBar()->setProperty("drawScrollBarGroove", false);
+ }
+ 
+-void ModulePageWidget::switchPage(QObject *plugin, bool recorded, QString jumpText){
++void ModulePageWidget::switchPage(QObject *plugin, bool recorded, QString jumpText)
++{
+     Q_UNUSED(recorded);
+     CommonInterface * pluginInstance = qobject_cast<CommonInterface *>(plugin);
+     refreshPluginWidget(pluginInstance);
++
+     if (jumpText.isEmpty() || !pluginwidget) {
+         return;
+     }
++
+     for (QLabel *o : pluginwidget->findChildren<QLabel*>()) {
+         if (o->text() == jumpText) {
+             QPoint pos = o->mapTo(ui->scrollArea->widget(), o->pos());
+@@ -121,6 +124,7 @@ void ModulePageWidget::refreshPluginWidget(CommonInterface *plu){
+     delete(ui->scrollArea->widget());
+ 
+     pluginwidget =  plu->pluginUi();
++
+     if (pluginwidget && UkccCommon::isV11()) {
+         pluginwidget->update();
+         qDebug() << Q_FUNC_INFO << "update plugin ui";
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0139-chore-OpenKylin-openkylin.patch ukui-control-center-4.10.0.0/debian/patches/0139-chore-OpenKylin-openkylin.patch
--- ukui-control-center-4.10.0.0/debian/patches/0139-chore-OpenKylin-openkylin.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0139-chore-OpenKylin-openkylin.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,300 @@
+From: zhoubin <zhoubin@kylinos.cn>
+Date: Tue, 25 Feb 2025 16:28:52 +0800
+Subject: =?utf-8?b?Y2hvcmU6IOabtOaUuU9wZW5LeWxpbuS4um9wZW5reWxpbg==?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+Description: 更改OpenKylin为openkylin
+
+Log: 更改署名
+---
+ data/zh_CN/index.md                    | 4 ++--
+ plugins/system/about/privacydialog.cpp | 2 +-
+ shell/res/i18n/ar.ts                   | 4 ++--
+ shell/res/i18n/bo_CN.ts                | 4 ++--
+ shell/res/i18n/de.ts                   | 2 +-
+ shell/res/i18n/en.ts                   | 2 +-
+ shell/res/i18n/en_US.ts                | 2 +-
+ shell/res/i18n/es.ts                   | 2 +-
+ shell/res/i18n/fr.ts                   | 2 +-
+ shell/res/i18n/kk.ts                   | 4 ++--
+ shell/res/i18n/ky.ts                   | 4 ++--
+ shell/res/i18n/mn.ts                   | 2 +-
+ shell/res/i18n/tr.ts                   | 2 +-
+ shell/res/i18n/ug.ts                   | 4 ++--
+ shell/res/i18n/vi.ts                   | 4 ++--
+ shell/res/i18n/zh_CN.ts                | 4 ++--
+ shell/res/i18n/zh_HK.ts                | 6 +++---
+ shell/res/i18n/zh_Hant.ts              | 2 +-
+ 18 files changed, 28 insertions(+), 28 deletions(-)
+
+diff --git a/data/zh_CN/index.md b/data/zh_CN/index.md
+index 02d8dc7..1923949 100644
+--- a/data/zh_CN/index.md
++++ b/data/zh_CN/index.md
+@@ -624,9 +624,9 @@ Kylin-OS与Kylin-OS连接过程:
+      在麒麟软件官网上申请的试用版本可以一直使用,但是不享受售后服务。
+ - 怎么查看内核版本?
+      可右键任务栏空白区域,选择关于麒麟查看系统内核版本。
+-- Openkylin桌面操作系统不同大版本之间有什么区别?
++- openKylin桌面操作系统不同大版本之间有什么区别?
+      不同大版本之间会有内核或者其他的层面的不同,具体可咨询商务或者参考官网对不同版本的系统介绍。
+-- 电脑装了Windows 10和Openkylin桌面操作系统双系统数据盘可以共用吗?
++- 电脑装了Windows 10和openKylin桌面操作系统双系统数据盘可以共用吗?
+      可以共用。
+ #### 显示问题
+ - Ctrl+alt+T无法打开终端怎么办?
+diff --git a/plugins/system/about/privacydialog.cpp b/plugins/system/about/privacydialog.cpp
+index 3716733..ada8f9d 100644
+--- a/plugins/system/about/privacydialog.cpp
++++ b/plugins/system/about/privacydialog.cpp
+@@ -79,7 +79,7 @@ QString PrivacyDialog::getProtocolTitle()
+ QString PrivacyDialog::getCompanyName()
+ {
+     if (UkccCommon::isOpenkylin()) {
+-        return QString(tr("Openkylin Community."));
++        return QString(tr("openKylin Community."));
+     }
+     return QString(tr("Kylinsoft Co., Ltd."));
+ }
+diff --git a/shell/res/i18n/ar.ts b/shell/res/i18n/ar.ts
+index 7ddff74..36cf952 100644
+--- a/shell/res/i18n/ar.ts
++++ b/shell/res/i18n/ar.ts
+@@ -7888,8 +7888,8 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
+-        <source>Openkylin Community.</source>
+-        <translation>مجتمع Openkylin.</translation>
++        <source>openKylin Community.</source>
++        <translation>مجتمع openKylin.</translation>
+     </message>
+     <message>
+         <source>Dear users of Kylin operating system and relevant products, 
+diff --git a/shell/res/i18n/bo_CN.ts b/shell/res/i18n/bo_CN.ts
+index d57a92d..512de35 100644
+--- a/shell/res/i18n/bo_CN.ts
++++ b/shell/res/i18n/bo_CN.ts
+@@ -143,7 +143,7 @@
+         <translation>དུས་ཚོད་ཀྱི་དུས་ཚོད།</translation>
+     </message>
+     <message>
+-        <source>Openkylin</source>
++        <source>openKylin</source>
+         <translation type="vanished">བསེ་རུ་</translation>
+     </message>
+     <message>
+@@ -4102,7 +4102,7 @@ change system settings</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="82"/>
+-        <source>Openkylin Community.</source>
++        <source>openKylin Community.</source>
+         <translation>སྡེ་ཁུལ་ལ་སྒོ་འབྱེད་པ་བཅས་བྱ་དགོས།</translation>
+     </message>
+     <message>
+diff --git a/shell/res/i18n/de.ts b/shell/res/i18n/de.ts
+index 23db0fa..2e6e693 100644
+--- a/shell/res/i18n/de.ts
++++ b/shell/res/i18n/de.ts
+@@ -7964,7 +7964,7 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
+-        <source>Openkylin Community.</source>
++        <source>openKylin Community.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+diff --git a/shell/res/i18n/en.ts b/shell/res/i18n/en.ts
+index cd876a3..677ccd6 100644
+--- a/shell/res/i18n/en.ts
++++ b/shell/res/i18n/en.ts
+@@ -159,7 +159,7 @@
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/about.cpp" line="536"/>
+-        <source>Openkylin</source>
++        <source>openKylin</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+diff --git a/shell/res/i18n/en_US.ts b/shell/res/i18n/en_US.ts
+index e4c8d16..018a8de 100644
+--- a/shell/res/i18n/en_US.ts
++++ b/shell/res/i18n/en_US.ts
+@@ -2315,7 +2315,7 @@ you can restore them to ensure the integrity of your system.</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="82"/>
+-        <source>Openkylin Community.</source>
++        <source>openKylin Community.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+diff --git a/shell/res/i18n/es.ts b/shell/res/i18n/es.ts
+index c86b3f4..4605614 100644
+--- a/shell/res/i18n/es.ts
++++ b/shell/res/i18n/es.ts
+@@ -7988,7 +7988,7 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
+-        <source>Openkylin Community.</source>
++        <source>openKylin Community.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+diff --git a/shell/res/i18n/fr.ts b/shell/res/i18n/fr.ts
+index 27071d3..6e4278c 100644
+--- a/shell/res/i18n/fr.ts
++++ b/shell/res/i18n/fr.ts
+@@ -7964,7 +7964,7 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
+-        <source>Openkylin Community.</source>
++        <source>openKylin Community.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+diff --git a/shell/res/i18n/kk.ts b/shell/res/i18n/kk.ts
+index 53cc464..e3f1158 100644
+--- a/shell/res/i18n/kk.ts
++++ b/shell/res/i18n/kk.ts
+@@ -7875,8 +7875,8 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
+-        <source>Openkylin Community.</source>
+-        <translation>Openkylin مەھەللىسى.</translation>
++        <source>openKylin Community.</source>
++        <translation>openKylin مەھەللىسى.</translation>
+     </message>
+     <message>
+         <source>Dear users of Kylin operating system and relevant products, 
+diff --git a/shell/res/i18n/ky.ts b/shell/res/i18n/ky.ts
+index ba4ef88..3bbe23e 100644
+--- a/shell/res/i18n/ky.ts
++++ b/shell/res/i18n/ky.ts
+@@ -7875,8 +7875,8 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
+-        <source>Openkylin Community.</source>
+-        <translation>Openkylin مەھەللىسى.</translation>
++        <source>openKylin Community.</source>
++        <translation>openKylin مەھەللىسى.</translation>
+     </message>
+     <message>
+         <source>Dear users of Kylin operating system and relevant products, 
+diff --git a/shell/res/i18n/mn.ts b/shell/res/i18n/mn.ts
+index 2ae559d..8cae87e 100644
+--- a/shell/res/i18n/mn.ts
++++ b/shell/res/i18n/mn.ts
+@@ -7495,7 +7495,7 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="82"/>
+-        <source>Openkylin Community.</source>
++        <source>openKylin Community.</source>
+         <translation>Opeekplinn ᠨᠡᠶᠢᠭᠡᠮ ᠲᠣᠭᠣᠷᠢᠭ</translation>
+     </message>
+     <message>
+diff --git a/shell/res/i18n/tr.ts b/shell/res/i18n/tr.ts
+index 9b3bc42..24581f9 100644
+--- a/shell/res/i18n/tr.ts
++++ b/shell/res/i18n/tr.ts
+@@ -5794,7 +5794,7 @@ Lütfen giriş için tekrar deneyin!</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
+-        <source>Openkylin Community.</source>
++        <source>openKylin Community.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
+diff --git a/shell/res/i18n/ug.ts b/shell/res/i18n/ug.ts
+index 730c9a7..93f9cf3 100644
+--- a/shell/res/i18n/ug.ts
++++ b/shell/res/i18n/ug.ts
+@@ -7867,8 +7867,8 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
+-        <source>Openkylin Community.</source>
+-        <translation>Openkylin مەھەللىسى.</translation>
++        <source>openKylin Community.</source>
++        <translation>openKylin مەھەللىسى.</translation>
+     </message>
+     <message>
+         <source>Dear users of Kylin operating system and relevant products,
+diff --git a/shell/res/i18n/vi.ts b/shell/res/i18n/vi.ts
+index c3a7096..8070dd0 100644
+--- a/shell/res/i18n/vi.ts
++++ b/shell/res/i18n/vi.ts
+@@ -7881,8 +7881,8 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
+-        <source>Openkylin Community.</source>
+-        <translation>Cộng đồng Openkylin.</translation>
++        <source>openKylin Community.</source>
++        <translation>Cộng đồng openKylin.</translation>
+     </message>
+     <message>
+         <source>Dear users of Kylin operating system and relevant products, 
+diff --git a/shell/res/i18n/zh_CN.ts b/shell/res/i18n/zh_CN.ts
+index 3f99409..af2063f 100644
+--- a/shell/res/i18n/zh_CN.ts
++++ b/shell/res/i18n/zh_CN.ts
+@@ -7883,8 +7883,8 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="82"/>
+-        <source>Openkylin Community.</source>
+-        <translation>Openkylin 社区</translation>
++        <source>openKylin Community.</source>
++        <translation>openKylin 社区</translation>
+     </message>
+     <message>
+         <source>Dear users of Kylin operating system and relevant products, 
+diff --git a/shell/res/i18n/zh_HK.ts b/shell/res/i18n/zh_HK.ts
+index b53e25d..db753a2 100644
+--- a/shell/res/i18n/zh_HK.ts
++++ b/shell/res/i18n/zh_HK.ts
+@@ -8023,7 +8023,7 @@ Please retry or relogin!</source>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="74"/>
+         <source>End User License Agreement and Privacy Policy Statement of openKylin</source>
+-        <translation>Openkylin最終使用者使用許可協議和隱私政策聲明</translation>
++        <translation>openKylin最終使用者使用許可協議和隱私政策聲明</translation>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="76"/>
+@@ -8032,8 +8032,8 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="82"/>
+-        <source>Openkylin Community.</source>
+-        <translation>Openkylin</translation>
++        <source>openKylin Community.</source>
++        <translation>openKylin</translation>
+     </message>
+     <message>
+         <source>Dear users of Kylin operating system and relevant products, 
+diff --git a/shell/res/i18n/zh_Hant.ts b/shell/res/i18n/zh_Hant.ts
+index 7cdd529..5ebd7a3 100644
+--- a/shell/res/i18n/zh_Hant.ts
++++ b/shell/res/i18n/zh_Hant.ts
+@@ -7963,7 +7963,7 @@ Please retry or relogin!</source>
+     </message>
+     <message>
+         <location filename="../../../plugins/system/about/privacydialog.cpp" line="81"/>
+-        <source>Openkylin Community.</source>
++        <source>openKylin Community.</source>
+         <translation type="unfinished"></translation>
+     </message>
+     <message>
diff -Nru ukui-control-center-4.10.0.0/debian/patches/0140-175-fix-mainwindow.patch ukui-control-center-4.10.0.0/debian/patches/0140-175-fix-mainwindow.patch
--- ukui-control-center-4.10.0.0/debian/patches/0140-175-fix-mainwindow.patch	1970-01-01 08:00:00.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/0140-175-fix-mainwindow.patch	2025-02-27 10:16:00.000000000 +0800
@@ -0,0 +1,21 @@
+From: nil <zhoubin@kylinos.cn>
+Date: Wed, 26 Feb 2025 05:55:21 +0000
+Subject: =?utf-8?q?!175_fix=3A_mainwindow_Merge_pull_request_!175_from_?=
+ =?utf-8?q?=E4=BD=95=E6=80=9D=E8=83=9C/nile-0212?=
+
+---
+ shell/mainwindow.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/shell/mainwindow.cpp b/shell/mainwindow.cpp
+index a52449b..b9d761c 100644
+--- a/shell/mainwindow.cpp
++++ b/shell/mainwindow.cpp
+@@ -48,6 +48,7 @@ using namespace ukcc;
+ #include "utils/functionselect.h"
+ #include <QFuture>
+ #include <QScreen>
++#include <QWindow>
+ #include <windowmanager/windowmanager.h>
+ 
+ #define THEME_QT_SCHEMA "org.ukui.style"
diff -Nru ukui-control-center-4.10.0.0/debian/patches/series ukui-control-center-4.10.0.0/debian/patches/series
--- ukui-control-center-4.10.0.0/debian/patches/series	2025-01-01 16:22:05.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/patches/series	2025-02-27 10:16:00.000000000 +0800
@@ -108,3 +108,33 @@
 0108-124-bug.patch
 0109-125-277741.patch
 0110-chore-changelog.patch
+0111-128-316417.patch
+0112-fix-theme.patch
+0113-fix-theme.patch
+0114-127-bug.patch
+0115-131-290807.patch
+0116-chore-md.patch
+0117-133-v11-2501.patch
+0118-135-291185.patch
+0119-139-bug.patch
+0120-140-fix-panel-bug-278913.patch
+0121-141-380937-2024-OEM-v11-2501.patch
+0122-142-vino.patch
+0123-143-380927-v11-2501.patch
+0124-146-326999-core.patch
+0125-145-update-display-log.patch
+0126-152-sdk.patch
+0127-154-fix-ukui-control-center-update-agreement.patch
+0128-155-fix-font.patch
+0129-162-fix-ukui-control-center-fix-about-getCpuinfo.patch
+0130-164-fix-mainwindow-loadplugin.patch
+0131-Added-translation-using-Weblate-Arabic.patch
+0132-Added-translation-using-Weblate-Vietnamese.patch
+0133-165-fix-sonar-security.patch
+0134-Translated-using-Weblate-Vietnamese.patch
+0135-Translated-using-Weblate-Vietnamese.patch
+0136-170-fix-ukui-control-center-fix-theme-auto.patch
+0137-171-fix-ukui-control-center-fix-display-frame.patch
+0138-172-fix-mainwindow-second-widget.patch
+0139-chore-OpenKylin-openkylin.patch
+0140-175-fix-mainwindow.patch
diff -Nru ukui-control-center-4.10.0.0/debian/source/include-binaries ukui-control-center-4.10.0.0/debian/source/include-binaries
--- ukui-control-center-4.10.0.0/debian/source/include-binaries	2025-01-01 16:22:05.000000000 +0800
+++ ukui-control-center-4.10.0.0/debian/source/include-binaries	2025-02-27 10:16:00.000000000 +0800
@@ -22,3 +22,5 @@
 debian/patches/0095-102-bug.patch
 debian/patches/0103-118-291281.patch
 debian/patches/0106-122-md.patch
+debian/patches/0116-chore-md.patch
+debian/patches/0120-140-fix-panel-bug-278913.patch