From 586b583063ce6e6e11de1015238fd6dc82c1d125 Mon Sep 17 00:00:00 2001 From: tanyulong2021 Date: Thu, 8 Jul 2021 10:10:44 +0800 Subject: [PATCH 01/11] add judgment when Bluetooth does not exist --- ...dgment-when-Bluetooth-does-not-exist.patch | 82 +++++++++++++++++++ ukui-control-center.spec | 9 +- 2 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 0001-add-judgment-when-Bluetooth-does-not-exist.patch diff --git a/0001-add-judgment-when-Bluetooth-does-not-exist.patch b/0001-add-judgment-when-Bluetooth-does-not-exist.patch new file mode 100644 index 0000000..123f813 --- /dev/null +++ b/0001-add-judgment-when-Bluetooth-does-not-exist.patch @@ -0,0 +1,82 @@ +From 28369c2426ec8ed4c3e8dad596a1e24ade5161de Mon Sep 17 00:00:00 2001 +From: tanyulong +Date: Thu, 8 Jul 2021 09:58:50 +0800 +Subject: [PATCH] add judgment when Bluetooth does not exist + +--- + shell/mainwindow.cpp | 30 +++++++++++++++++++----------- + shell/mainwindow.h | 2 +- + 2 files changed, 20 insertions(+), 12 deletions(-) + +diff --git a/shell/mainwindow.cpp b/shell/mainwindow.cpp +index ed872de..a85b68a 100755 +--- a/shell/mainwindow.cpp ++++ b/shell/mainwindow.cpp +@@ -547,7 +547,6 @@ void MainWindow::loadPlugins(){ + pluginsDir = QDir(qApp->applicationDirPath() + "/plugins"); + } + +- bool isExistCloud = isExitsCloudAccount(); + foreach (QString fileName, pluginsDir.entryList(QDir::Files)){ + //三权分立开启 + #ifdef WITHKYSEC +@@ -558,17 +557,17 @@ void MainWindow::loadPlugins(){ + continue; + } + #endif +- +- if (!fileName.endsWith(".so")) +- continue; +- if (fileName == "libexperienceplan.so") +- continue; +- if ("libnetworkaccount.so" == fileName && !isExistCloud) { +- continue; +- } +- +- if (!QGSettings::isSchemaInstalled(kVinoSchemas) && "libvino.so" == fileName) { ++ ++ if (!fileName.endsWith(".so")) { + continue; ++ } else if (fileName == "libexperienceplan.so") { ++ continue; ++ } else if ("libnetworkaccount.so" == fileName && !isExitsCloudAccount()) { ++ continue; ++ } else if (!QGSettings::isSchemaInstalled(kVinoSchemas) && "libvino.so" == fileName) { ++ continue; ++ } else if ("libbluetooth.so" == fileName && !isExitBluetooth()) { ++ continue; + } + + qDebug() << "Scan Plugin: " << fileName; +@@ -822,6 +821,15 @@ void MainWindow::initStyleSheet() { + "QPushButton:hover:pressed#closeBtn{background: #E54A50; border-radius: 4px;width:32px;height:32px;}"); + } + ++bool MainWindow::isExitBluetooth() { ++ QProcess process; ++ process.start("rfkill list"); ++ process.waitForFinished(); ++ QByteArray output = process.readAllStandardOutput(); ++ QString str_output = output; ++ return str_output.contains(QString("bluetooth"), Qt::CaseInsensitive); ++} ++ + void MainWindow::setModuleBtnHightLight(int id) { + leftBtnGroup->button(id)->setChecked(true); + leftMicBtnGroup->button(id)->setChecked(true); +diff --git a/shell/mainwindow.h b/shell/mainwindow.h +index d14f1ef..bb44d7e 100755 +--- a/shell/mainwindow.h ++++ b/shell/mainwindow.h +@@ -107,7 +107,7 @@ private: + + bool dblOnEdge(QMouseEvent *event); + void initStyleSheet(); +- ++ bool isExitBluetooth(); + public slots: + void functionBtnClicked(QObject * plugin); + void sltMessageReceived(const QString &msg); +-- +2.23.0 + diff --git a/ukui-control-center.spec b/ukui-control-center.spec index eb16df9..b69dfa7 100644 --- a/ukui-control-center.spec +++ b/ukui-control-center.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-control-center Version: 3.0.1 -Release: 4 +Release: 5 Summary: utilities to configure the UKUI desktop License: GPL-2+ URL: http://www.ukui.org @@ -74,7 +74,7 @@ patch1: 0002-fix-autologin-nopasswdlogin-failed.patch patch2: 0003-fix-dialog-pop-twice-after-modifying-resolution-bug.patch patch3: 0004-fix-effects-mode-not-available-bug.patch patch4: 0005-fix-blueman-tray-and-groupadd-autologin.patch - +patch5: 0001-add-judgment-when-Bluetooth-does-not-exist.patch Recommends: qt5-qtquickcontrols Suggests: gsettings-desktop-schemas @@ -99,7 +99,7 @@ Suggests: ukui-settings-daemon %patch2 -p1 %patch3 -p1 %patch4 -p1 - +%patch5 -p1 %build qmake-qt5 make @@ -142,6 +142,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/polkit-1/actions/org.ukui.groupmanager.policy %changelog +* Thu Jul 08 2021 tanyulong - 3.0.1-5 +- add-judgment-when-Bluetooth-does-not-exist.patch + * Thu Jan 21 2021 lvhan - 3.0.1-4 - fix-blueman-tray-and-groupadd-autologin -- Gitee From 4bb76a17abc084107032f7ca54854a7da2e9d460 Mon Sep 17 00:00:00 2001 From: tanyulong2021 Date: Thu, 8 Jul 2021 14:05:03 +0800 Subject: [PATCH 02/11] Fix Group members are not displayed --- ...-fix-Group-members-are-not-displayed.patch | 248 ++++++++++++++++++ ukui-control-center.spec | 9 +- 2 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 0006-fix-Group-members-are-not-displayed.patch diff --git a/0006-fix-Group-members-are-not-displayed.patch b/0006-fix-Group-members-are-not-displayed.patch new file mode 100644 index 0000000..6a983eb --- /dev/null +++ b/0006-fix-Group-members-are-not-displayed.patch @@ -0,0 +1,248 @@ +From 1113ae6574950d672514621e0f8090d1f1241a72 Mon Sep 17 00:00:00 2001 +From: tanyulong +Date: Thu, 8 Jul 2021 13:46:27 +0800 +Subject: [PATCH] Fix Group members are not displayed + +--- + .../account/userinfo/creategroupdialog.cpp | 61 +++++++++++++++++- + plugins/account/userinfo/creategroupdialog.h | 22 ++++++- + plugins/account/userinfo/editgroupdialog.cpp | 62 ++++++++++++++++++- + plugins/account/userinfo/editgroupdialog.h | 19 +++++- + 4 files changed, 155 insertions(+), 9 deletions(-) + +diff --git a/plugins/account/userinfo/creategroupdialog.cpp b/plugins/account/userinfo/creategroupdialog.cpp +index 56f7b2c..4507260 100755 +--- a/plugins/account/userinfo/creategroupdialog.cpp ++++ b/plugins/account/userinfo/creategroupdialog.cpp +@@ -70,12 +70,67 @@ void CreateGroupDialog::refreshCertainBtnStatus(){ + ui->certainBtn->setEnabled(_nameHasModified || _idHasModified); + } + ++UserInfomationss CreateGroupDialog::_acquireUserInfo(QString objpath){ ++ UserInfomationss 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 > reply = iproperty->call("GetAll", "org.freedesktop.Accounts.User"); ++ if (reply.isValid()){ ++ QMap propertyMap; ++ propertyMap = reply.value(); ++ user.username = propertyMap.find("UserName").value().toString(); ++ if (user.username == QString(g_get_user_name())) { ++ user.current = true; ++ user.logined = true; ++ } ++ } ++ else ++ qDebug() << "reply failed"; ++ ++ delete iproperty; ++ ++ return user; ++} ++ + void CreateGroupDialog::getUsersList() + { + qDebug() << "当前文件 :" << __FILE__ << "当前函数 :" << __FUNCTION__ << "当前行号 :" << __LINE__; +- UserInfo * userinfo = new UserInfo; +- QStringList usersList = userinfo->getUsersList(); +-// qDebug() << "CreateGroupDialog::getUsersList" << usersList.at(0) << usersList.at(1); ++ QStringList allUsers; ++ sysdispatcher = new SystemDbusDispatcher(this); ++ ++ QStringList objectpaths = sysdispatcher->list_cached_users(); ++ allUserInfoMap.clear(); ++ //root ++ if (!getuid()){ ++ UserInfomationss root; ++ root.username = g_get_user_name(); ++ root.current = true; ++ root.logined = true; ++ root.autologin = false; ++ root.uid = 0; ++ root.accounttype = ADMINISTRATOR; ++ // root.iconfile = DEFAULTFACE; ++ allUserInfoMap.insert(root.username, root); ++ } ++ for (QString objectpath : objectpaths){ ++ UserInfomationss user; ++ user = _acquireUserInfo(objectpath); ++ allUserInfoMap.insert(user.username, user); ++ } ++ for (QVariant tmp : allUserInfoMap.keys()){ ++ allUsers << tmp.toString(); ++ ++ } ++ QStringList usersList = allUsers; ++ + for(int i = 0; i < usersList.size(); i++){ + QListWidgetItem * item = new QListWidgetItem(ui->listWidget); + item->setSizeHint(QSize(ui->listWidget->width(), 36)); +diff --git a/plugins/account/userinfo/creategroupdialog.h b/plugins/account/userinfo/creategroupdialog.h +index e0432fc..1ca0225 100755 +--- a/plugins/account/userinfo/creategroupdialog.h ++++ b/plugins/account/userinfo/creategroupdialog.h +@@ -30,7 +30,22 @@ + #include + #include + +-class UserInfo; ++#include "qtdbus/systemdbusdispatcher.h" ++ ++typedef struct _UserInfomationss { ++ QString objpath; ++ QString username; ++ QString iconfile; ++ QString passwd; ++ int accounttype; ++ int passwdtype; ++ bool current; ++ bool logined; ++ bool autologin; ++ bool noPwdLogin; ++ qint64 uid; ++}UserInfomationss; ++ + class ChangeGroupDialog; + namespace Ui { + class CreateGroupDialog; +@@ -62,9 +77,12 @@ private: + bool _nameHasModified; + bool _idHasModified; + bool _boxModified; +- ++ QMap allUserInfoMap; ++ SystemDbusDispatcher * sysdispatcher; ++ + void setupInit(); + void signalsBind(); ++ UserInfomationss _acquireUserInfo(QString objpath); + }; + + #endif // CREATEGROUPDIALOG_H +diff --git a/plugins/account/userinfo/editgroupdialog.cpp b/plugins/account/userinfo/editgroupdialog.cpp +index a90b9cd..d3971cd 100755 +--- a/plugins/account/userinfo/editgroupdialog.cpp ++++ b/plugins/account/userinfo/editgroupdialog.cpp +@@ -73,11 +73,67 @@ void EditGroupDialog::refreshCertainBtnStatus(){ + ui->certainBtn->setEnabled(_nameHasModified || _idHasModified || _boxModified); + } + ++UserInfomations EditGroupDialog::_acquireUserInfo(QString objpath){ ++ UserInfomations 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 > reply = iproperty->call("GetAll", "org.freedesktop.Accounts.User"); ++ if (reply.isValid()){ ++ QMap propertyMap; ++ propertyMap = reply.value(); ++ user.username = propertyMap.find("UserName").value().toString(); ++ if (user.username == QString(g_get_user_name())) { ++ user.current = true; ++ user.logined = true; ++ } ++ } ++ else ++ qDebug() << "reply failed"; ++ ++ delete iproperty; ++ ++ return user; ++} ++ ++ + void EditGroupDialog::getUsersList(QString usergroup) + { +- UserInfo * userinfo = new UserInfo; +- QStringList usersList = userinfo->getUsersList(); +- qDebug() << "EditGroupDialog::getUsersList"; ++ QStringList usergroupList = usergroup.split(","); ++ QStringList allUsers; ++ sysdispatcher = new SystemDbusDispatcher(this); ++ ++ QStringList objectpaths = sysdispatcher->list_cached_users(); ++ allUserInfoMap.clear(); ++ //root ++ if (!getuid()){ ++ UserInfomations root; ++ root.username = g_get_user_name(); ++ root.current = true; ++ root.logined = true; ++ root.autologin = false; ++ root.uid = 0; ++ root.accounttype = ADMINISTRATOR; ++ // root.iconfile = DEFAULTFACE; ++ allUserInfoMap.insert(root.username, root); ++ } ++ for (QString objectpath : objectpaths){ ++ UserInfomations user; ++ user = _acquireUserInfo(objectpath); ++ allUserInfoMap.insert(user.username, user); ++ } ++ for (QVariant tmp : allUserInfoMap.keys()){ ++ allUsers << tmp.toString(); ++ ++ } ++ QStringList usersList = allUsers; + QStringList usergroupList = usergroup.split(","); + + for(int i = 0; i < usersList.size(); i++){ +diff --git a/plugins/account/userinfo/editgroupdialog.h b/plugins/account/userinfo/editgroupdialog.h +index 9a065fb..b66ea55 100755 +--- a/plugins/account/userinfo/editgroupdialog.h ++++ b/plugins/account/userinfo/editgroupdialog.h +@@ -29,8 +29,22 @@ + #include + #include + #include ++#include "qtdbus/systemdbusdispatcher.h" ++ ++typedef struct _UserInfomations { ++ QString objpath; ++ QString username; ++ QString iconfile; ++ QString passwd; ++ int accounttype; ++ int passwdtype; ++ bool current; ++ bool logined; ++ bool autologin; ++ bool noPwdLogin; ++ qint64 uid; ++}UserInfomations; + +-class UserInfo; + class ChangeGroupDialog; + namespace Ui { + class EditGroupDialog; +@@ -63,9 +77,12 @@ private: + bool _boxModified; + QString userGroup; + QString groupId; ++ QMap allUserInfoMap; ++ SystemDbusDispatcher * sysdispatcher; + + void setupInit(); + void signalsBind(); ++ UserInfomations _acquireUserInfo(QString objpath); + + signals: + void needRefresh(); +-- +2.23.0 + diff --git a/ukui-control-center.spec b/ukui-control-center.spec index b69dfa7..90e0784 100644 --- a/ukui-control-center.spec +++ b/ukui-control-center.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-control-center Version: 3.0.1 -Release: 5 +Release: 6 Summary: utilities to configure the UKUI desktop License: GPL-2+ URL: http://www.ukui.org @@ -75,6 +75,8 @@ patch2: 0003-fix-dialog-pop-twice-after-modifying-resolution-bug.patch patch3: 0004-fix-effects-mode-not-available-bug.patch patch4: 0005-fix-blueman-tray-and-groupadd-autologin.patch patch5: 0001-add-judgment-when-Bluetooth-does-not-exist.patch +patch6: 0006-fix-Group-members-are-not-displayed.patch + Recommends: qt5-qtquickcontrols Suggests: gsettings-desktop-schemas @@ -100,6 +102,8 @@ Suggests: ukui-settings-daemon %patch3 -p1 %patch4 -p1 %patch5 -p1 +%patch6 -p1 + %build qmake-qt5 make @@ -142,6 +146,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/polkit-1/actions/org.ukui.groupmanager.policy %changelog +* Thu Jul 08 2021 tanyulong - 3.0.1-6 +- fix-Group-members-are-not-displayed + * Thu Jul 08 2021 tanyulong - 3.0.1-5 - add-judgment-when-Bluetooth-does-not-exist.patch -- Gitee From b4e6ca0df6e909f2f77dd458c3fcc6ea4c1780f5 Mon Sep 17 00:00:00 2001 From: tanyulong2021 Date: Fri, 9 Jul 2021 17:07:45 +0800 Subject: [PATCH 03/11] fix(display): vnc crashed --- 0007-fix-vnc-crashed.patch | 86 ++++++++++++++++++++++++++++++++++++++ ukui-control-center.spec | 7 +++- 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 0007-fix-vnc-crashed.patch diff --git a/0007-fix-vnc-crashed.patch b/0007-fix-vnc-crashed.patch new file mode 100644 index 0000000..7e1a435 --- /dev/null +++ b/0007-fix-vnc-crashed.patch @@ -0,0 +1,86 @@ +From 575c32022d326eb391054c0608d5fc82cebb9281 Mon Sep 17 00:00:00 2001 +From: tanyulong +Date: Fri, 9 Jul 2021 16:55:22 +0800 +Subject: [PATCH] fix vnc crashed + +--- + plugins/system/display/display.cpp | 30 ++++++++++++++++++++++++++++++ + plugins/system/display/display.h | 4 +++- + 2 files changed, 33 insertions(+), 1 deletion(-) + +diff --git a/plugins/system/display/display.cpp b/plugins/system/display/display.cpp +index de931b6..383c564 100755 +--- a/plugins/system/display/display.cpp ++++ b/plugins/system/display/display.cpp +@@ -25,6 +25,8 @@ + #include + #include + #include ++#include ++#include + + DisplaySet::DisplaySet(){ + pluginWidget = new Widget; +@@ -43,6 +45,15 @@ DisplaySet::~DisplaySet(){ + } + + QWidget *DisplaySet::get_plugin_ui(){ ++ if (mFirstLoad) { ++ requestBackend(); ++ mFirstLoad = false; ++ pluginWidget = new Widget; ++ QObject::connect(new KScreen::GetConfigOperation(), &KScreen::GetConfigOperation::finished, ++ [&](KScreen::ConfigOperation *op) { ++ pluginWidget->setConfig(qobject_cast(op)->config()); ++ }); ++ } + return pluginWidget; + } + +@@ -63,3 +74,22 @@ const QString DisplaySet::name() const { + return QStringLiteral("display"); + } + ++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/display.h b/plugins/system/display/display.h +index e4f4fbd..b30e9bb 100755 +--- a/plugins/system/display/display.h ++++ b/plugins/system/display/display.h +@@ -47,13 +47,15 @@ public: + void plugin_delay_control() Q_DECL_OVERRIDE; + const QString name() const Q_DECL_OVERRIDE; + +- ++private: ++ void requestBackend(); + private: + Ui::DisplayWindow * ui; + QString pluginName; + int pluginType; + Widget * pluginWidget; + ++ bool mFirstLoad; + }; + + #endif // DISPLAYSET_H +-- +2.23.0 + diff --git a/ukui-control-center.spec b/ukui-control-center.spec index 90e0784..b597d30 100644 --- a/ukui-control-center.spec +++ b/ukui-control-center.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-control-center Version: 3.0.1 -Release: 6 +Release: 7 Summary: utilities to configure the UKUI desktop License: GPL-2+ URL: http://www.ukui.org @@ -76,6 +76,7 @@ patch3: 0004-fix-effects-mode-not-available-bug.patch patch4: 0005-fix-blueman-tray-and-groupadd-autologin.patch patch5: 0001-add-judgment-when-Bluetooth-does-not-exist.patch patch6: 0006-fix-Group-members-are-not-displayed.patch +patch7: 0007-fix-vnc-crashed.patch Recommends: qt5-qtquickcontrols @@ -103,6 +104,7 @@ Suggests: ukui-settings-daemon %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 %build qmake-qt5 @@ -146,6 +148,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/polkit-1/actions/org.ukui.groupmanager.policy %changelog +* Fri Jul 09 2021 tanyulong - 3.0.1-7 +- fix vnc crashed + * Thu Jul 08 2021 tanyulong - 3.0.1-6 - fix-Group-members-are-not-displayed -- Gitee From 334a23dded0c66a50d34383780530ae0c26bdc54 Mon Sep 17 00:00:00 2001 From: tanyulong2021 Date: Fri, 9 Jul 2021 17:54:44 +0800 Subject: [PATCH 04/11] fix redeclaration of QStringList usergroupList --- ...n-of-QStringList-usergroupList-in-ed.patch | 25 +++++++++++++++++++ ukui-control-center.spec | 8 ++++-- 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 0008-fix-redeclaration-of-QStringList-usergroupList-in-ed.patch diff --git a/0008-fix-redeclaration-of-QStringList-usergroupList-in-ed.patch b/0008-fix-redeclaration-of-QStringList-usergroupList-in-ed.patch new file mode 100644 index 0000000..3c7d1c5 --- /dev/null +++ b/0008-fix-redeclaration-of-QStringList-usergroupList-in-ed.patch @@ -0,0 +1,25 @@ +From 56214c5b07f2917c6128b3d923d80af49f1b05c3 Mon Sep 17 00:00:00 2001 +From: tanyulong +Date: Fri, 9 Jul 2021 17:44:31 +0800 +Subject: [PATCH] fix redeclaration of 'QStringList usergroupList in + editgroupdialog.cpp + +--- + plugins/account/userinfo/editgroupdialog.cpp | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/plugins/account/userinfo/editgroupdialog.cpp b/plugins/account/userinfo/editgroupdialog.cpp +index d3971cd..4cc3bc6 100755 +--- a/plugins/account/userinfo/editgroupdialog.cpp ++++ b/plugins/account/userinfo/editgroupdialog.cpp +@@ -134,7 +134,6 @@ void EditGroupDialog::getUsersList(QString usergroup) + + } + QStringList usersList = allUsers; +- QStringList usergroupList = usergroup.split(","); + + for(int i = 0; i < usersList.size(); i++){ + QListWidgetItem * item = new QListWidgetItem(ui->listWidget); +-- +2.23.0 + diff --git a/ukui-control-center.spec b/ukui-control-center.spec index b597d30..1b17ec9 100644 --- a/ukui-control-center.spec +++ b/ukui-control-center.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-control-center Version: 3.0.1 -Release: 7 +Release: 8 Summary: utilities to configure the UKUI desktop License: GPL-2+ URL: http://www.ukui.org @@ -77,7 +77,7 @@ patch4: 0005-fix-blueman-tray-and-groupadd-autologin.patch patch5: 0001-add-judgment-when-Bluetooth-does-not-exist.patch patch6: 0006-fix-Group-members-are-not-displayed.patch patch7: 0007-fix-vnc-crashed.patch - +patch8: 0008-fix-redeclaration-of-QStringList-usergroupList-in-ed.patch Recommends: qt5-qtquickcontrols Suggests: gsettings-desktop-schemas @@ -105,6 +105,7 @@ Suggests: ukui-settings-daemon %patch5 -p1 %patch6 -p1 %patch7 -p1 +%patch8 -p1 %build qmake-qt5 @@ -148,6 +149,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/polkit-1/actions/org.ukui.groupmanager.policy %changelog +* Fri Jul 09 2021 tanyulong - 3.0.1-8 +- fix redeclaration of QStringList usergroupList + * Fri Jul 09 2021 tanyulong - 3.0.1-7 - fix vnc crashed -- Gitee From 04b70dd49a8a207621184e1fec4e3775f9bf4469 Mon Sep 17 00:00:00 2001 From: tanyulong2021 Date: Mon, 12 Jul 2021 09:58:19 +0800 Subject: [PATCH 05/11] fix(autoboot): layout optimization --- 0009-fix-layout-optimization.patch | 50 ++++++++++++++++++++++++++++++ ukui-control-center.spec | 8 ++++- 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 0009-fix-layout-optimization.patch diff --git a/0009-fix-layout-optimization.patch b/0009-fix-layout-optimization.patch new file mode 100644 index 0000000..7edb0a9 --- /dev/null +++ b/0009-fix-layout-optimization.patch @@ -0,0 +1,50 @@ +From d5fb1fd93c7733ca0a2111c349149a8fe44926d2 Mon Sep 17 00:00:00 2001 +From: tanyulong +Date: Mon, 12 Jul 2021 09:26:23 +0800 +Subject: [PATCH] fix layout optimization + +--- + plugins/system/autoboot/addautoboot.ui | 20 ++------------------ + 1 file changed, 2 insertions(+), 18 deletions(-) + +diff --git a/plugins/system/autoboot/addautoboot.ui b/plugins/system/autoboot/addautoboot.ui +index 4e04bfa..e778c84 100755 +--- a/plugins/system/autoboot/addautoboot.ui ++++ b/plugins/system/autoboot/addautoboot.ui +@@ -255,8 +255,8 @@ + + + +- 182 +- 28 ++ 190 ++ 28 + + + +@@ -346,22 +346,6 @@ + + + +- +- +- +- Qt::Vertical +- +- +- QSizePolicy::Fixed +- +- +- +- 20 +- 48 +- +- +- +- + + + +-- +2.23.0 + diff --git a/ukui-control-center.spec b/ukui-control-center.spec index 1b17ec9..b19a65b 100644 --- a/ukui-control-center.spec +++ b/ukui-control-center.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-control-center Version: 3.0.1 -Release: 8 +Release: 9 Summary: utilities to configure the UKUI desktop License: GPL-2+ URL: http://www.ukui.org @@ -78,6 +78,8 @@ patch5: 0001-add-judgment-when-Bluetooth-does-not-exist.patch patch6: 0006-fix-Group-members-are-not-displayed.patch patch7: 0007-fix-vnc-crashed.patch patch8: 0008-fix-redeclaration-of-QStringList-usergroupList-in-ed.patch +patch9: 0009-fix-layout-optimization.patch + Recommends: qt5-qtquickcontrols Suggests: gsettings-desktop-schemas @@ -106,6 +108,7 @@ Suggests: ukui-settings-daemon %patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 %build qmake-qt5 @@ -149,6 +152,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/polkit-1/actions/org.ukui.groupmanager.policy %changelog +* Mon Jul 12 2021 tanyulong - 3.0.1-9 +- fix layout optimization + * Fri Jul 09 2021 tanyulong - 3.0.1-8 - fix redeclaration of QStringList usergroupList -- Gitee From 15ec0d1030033c4cdc3a72bcb3e07e4f733986c7 Mon Sep 17 00:00:00 2001 From: tanyulong2021 Date: Mon, 12 Jul 2021 11:38:43 +0800 Subject: [PATCH 06/11] Added translation using Weblate --- ...ed-translation-using-Weblate-Tibetan.patch | 5374 +++++++++++++++++ ukui-control-center.spec | 8 +- 2 files changed, 5380 insertions(+), 2 deletions(-) create mode 100644 0010-Added-translation-using-Weblate-Tibetan.patch diff --git a/0010-Added-translation-using-Weblate-Tibetan.patch b/0010-Added-translation-using-Weblate-Tibetan.patch new file mode 100644 index 0000000..8997604 --- /dev/null +++ b/0010-Added-translation-using-Weblate-Tibetan.patch @@ -0,0 +1,5374 @@ +From 30ecd755b522965140e82d7beeeb0b0aaed64fbc Mon Sep 17 00:00:00 2001 +From: tanyulong +Date: Mon, 12 Jul 2021 10:20:24 +0800 +Subject: [PATCH] Added translation using Weblate (Tibetan) + +--- + shell/res/i18n/bo_CN.ts | 5355 +++++++++++++++++++++++++++++++++++++++ + 1 file changed, 5355 insertions(+) + create mode 100644 shell/res/i18n/bo_CN.ts + +diff --git a/shell/res/i18n/bo_CN.ts b/shell/res/i18n/bo_CN.ts +new file mode 100644 +index 0000000..769f0fe +--- /dev/null ++++ b/shell/res/i18n/bo_CN.ts +@@ -0,0 +1,5355 @@ ++ ++ ++ ++ ++ About ++ ++ ++ System Summary ++ ++ ++ ++ ++ ++ version ++ ++ /about/version ++ ++ ++ ++ TextLabel ++ ++ ++ ++ ++ Copyright 2009-2020 @ Kylinos All rights reserved ++ ++ ++ ++ ++ ++ Kernel ++ ++ /about/Kernel ++ ++ ++ ++ ++ CPU ++ ++ /about/CPU ++ ++ ++ ++ ++ Memory ++ ++ /about/Memory ++ ++ ++ ++ ++ ++ Disk ++ ++ /about/Disk ++ ++ ++ ++ Desktop ++ ++ ++ ++ ++ User ++ ++ ++ ++ ++ Active Status ++ ++ ++ ++ ++ Service serial number ++ ++ ++ ++ ++ Active ++ ++ ++ ++ ++ Trial version disclaimer ++ ++ ++ ++ ++ About ++ ++ ++ ++ ++ available ++ ++ ++ ++ ++ Inactivated ++ ++ ++ ++ ++ Activated ++ ++ ++ ++ ++ AddAppDialog ++ ++ ++ OK ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ AddAutoBoot ++ ++ ++ Add AutoBoot ++ ++ ++ ++ ++ Add autoboot program ++ ++ ++ ++ ++ ++ Program name ++ ++ ++ ++ ++ ++ Program exec ++ ++ ++ ++ ++ Open ++ ++ ++ ++ ++ ++ Program comment ++ ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Certain ++ ++ ++ ++ ++ desktop file not exist ++ ++ ++ ++ ++ select autoboot desktop ++ ++ ++ ++ ++ Select ++ ++ ++ ++ ++ AppDetail ++ ++ ++ Dialog ++ ++ ++ ++ ++ TextLabel ++ ++ ++ ++ ++ Allow notification ++ ++ ++ ++ ++ Number of notification centers ++ ++ ++ ++ ++ cancel ++ ++ ++ ++ ++ confirm ++ ++ ++ ++ ++ Area ++ ++ ++ ++ Area ++ ++ ++ ++ ++ ++ current area ++ ++ /area/current area ++ ++ ++ ++ Area showing time currency format ++ ++ ++ ++ ++ Regional format data ++ ++ ++ ++ ++ ++ calendar ++ ++ ++ ++ ++ ++ lunar ++ ++ ++ ++ ++ First day of the week ++ ++ ++ ++ ++ ++ monday ++ ++ ++ ++ ++ ++ date ++ ++ ++ ++ ++ 2019/12/17 ++ ++ ++ ++ ++ ++ time ++ ++ ++ ++ ++ 9:52 ++ ++ ++ ++ ++ ++ change format of data ++ ++ ++ ++ ++ ++ TextLabel ++ ++ ++ ++ ++ ++ Need to log off to take effect ++ ++ ++ ++ ++ display format area ++ ++ ++ ++ ++ US ++ ++ ++ ++ ++ CN ++ ++ ++ ++ ++ format of area ++ ++ /area/format of area ++ ++ ++ ++ first day of week ++ ++ ++ ++ ++ first language ++ ++ /area/first language ++ ++ ++ ++ system language ++ ++ ++ ++ ++ English ++ ++ ++ ++ ++ Chinese ++ ++ ++ ++ ++ addwgt ++ ++ ++ ++ ++ Add main language ++ ++ ++ ++ ++ solar calendar ++ ++ ++ ++ ++ sunday ++ ++ ++ ++ ++ change data format ++ ++ ++ ++ ++ AreaCodeLineEdit ++ ++ ++ Sign up by Phone ++ ++ ++ ++ ++ Audio ++ ++ ++ ++ Audio ++ ++ ++ ++ ++ AutoBoot ++ ++ ++ ++ Autoboot Settings ++ ++ /autoboot/Autoboot Settings ++ ++ ++ ++ Add autoboot app ++ ++ ++ ++ ++ Auto Boot ++ ++ ++ ++ ++ Name ++ ++ ++ ++ ++ Status ++ ++ ++ ++ ++ Delete ++ ++ ++ ++ ++ Backup ++ ++ ++ ++ ++ Backup ++ ++ /backup/Backup ++ ++ ++ ++ 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. ++ ++ ++ ++ ++ Begin backup ++ ++ ++ ++ ++ ++ Restore ++ ++ /backup/Restore ++ ++ ++ ++ View a list of backed-upfiles to restore backed up files to the system ++ ++ ++ ++ ++ Begin restore ++ ++ ++ ++ ++ BindPhoneDialog ++ ++ ++ Your code here ++ ++ ++ ++ ++ Get ++ ++ ++ ++ ++ BlueToothMain ++ ++ ++ ++ ++ Turn off Bluetooth ++ ++ ++ ++ ++ ++ ++ Turn on Bluetooth ++ ++ ++ ++ ++ Bluetooth ++ ++ ++ ++ ++ Show icon on taskbar ++ ++ ++ ++ ++ ++ Can now be found as ++ ++ ++ ++ ++ Other Devices ++ ++ ++ ++ ++ Refresh ++ ++ ++ ++ ++ Can now be found as " ++ ++ ++ ++ ++ " ++ ++ ++ ++ ++ Bluetooth ++ ++ ++ Bluetooth ++ ++ ++ ++ ++ CertificationDialog ++ ++ ++ ++ UserCertification ++ ++ ++ ++ ++ User: ++ ++ ++ ++ ++ Passwd: ++ ++ ++ ++ ++ Close ++ ++ ++ ++ ++ Certification ++ ++ ++ ++ ++ ChangeFaceDialog ++ ++ ++ Change User Face ++ ++ ++ ++ ++ Select face from local ++ ++ ++ ++ ++ select custom face file ++ ++ ++ ++ ++ Select ++ ++ ++ ++ ++ Position: ++ ++ ++ ++ ++ FileName: ++ ++ ++ ++ ++ FileType: ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Warning ++ ++ ++ ++ ++ The avatar is larger than 1M, please choose again ++ ++ ++ ++ ++ ChangeGroupDialog ++ ++ ++ Dialog ++ ++ ++ ++ ++ User Group Settings ++ ++ ++ ++ ++ User groups available in the system ++ ++ ++ ++ ++ User group ++ ++ ++ ++ ++ Add user group ++ ++ ++ ++ ++ ++ Tips ++ ++ ++ ++ ++ Invalid Id! ++ ++ ++ ++ ++ ++ OK ++ ++ ++ ++ ++ Invalid Group Name! ++ ++ ++ ++ ++ ChangePwdDialog ++ ++ ++ Change Pwd ++ ++ ++ ++ ++ Pwd type ++ ++ ++ ++ ++ Cur pwd ++ ++ ++ ++ ++ New pwd ++ ++ ++ ++ ++ New pwd sure ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Confirm ++ ++ ++ ++ ++ Change pwd ++ ++ ++ ++ ++ Cur pwd checking! ++ ++ ++ ++ ++ General Pwd ++ ++ ++ ++ ++ ++ Current Password ++ ++ ++ ++ ++ ++ ++ New Password ++ ++ ++ ++ ++ ++ ++ New Password Identify ++ ++ ++ ++ ++ ++ Inconsistency with pwd ++ ++ ++ ++ ++ Contains illegal characters! ++ ++ ++ ++ ++ Same with old pwd ++ ++ ++ ++ ++ ChangeTypeDialog ++ ++ ++ Change Account Type ++ ++ ++ ++ ++ Make sure that there is at least one administrator on the computer ++ ++ ++ ++ ++ standard user ++ ++ ++ ++ ++ Standard users can use most software, but cannot install software and change system settings ++ ++ ++ ++ ++ administrator ++ ++ ++ ++ ++ Administrators can make any changes they need ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Confirm ++ ++ ++ ++ ++ Change type ++ ++ ++ ++ ++ ChangeValidDialog ++ ++ ++ Dialog ++ ++ ++ ++ ++ Password Validity Setting ++ ++ ++ ++ ++ Current passwd validity: ++ ++ ++ ++ ++ Adjust date to: ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Certain ++ ++ ++ ++ ++ Change valid ++ ++ ++ ++ ++ ChangtimeDialog ++ ++ ++ time ++ ++ ++ ++ ++ year ++ ++ ++ ++ ++ month ++ ++ ++ ++ ++ day ++ ++ ++ ++ ++ ColorDialog ++ ++ ++ Dialog ++ ++ ++ ++ ++ B ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ OK ++ ++ ++ ++ ++ R ++ ++ ++ ++ ++ G ++ ++ ++ ++ ++ Custom color ++ ++ ++ ++ ++ CreateGroupDialog ++ ++ ++ Dialog ++ ++ ++ ++ ++ Add New Group ++ ++ ++ ++ ++ Name ++ ++ ++ ++ ++ Id ++ ++ ++ ++ ++ Members ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Certain ++ ++ ++ ++ ++ Add user group ++ ++ ++ ++ ++ CreateUserDialog ++ ++ ++ Add New Account ++ ++ ++ ++ ++ ++ UserName ++ ++ ++ ++ ++ PwdType ++ ++ ++ ++ ++ ++ Password ++ ++ ++ ++ ++ PasswordSure ++ ++ ++ ++ ++ Account Type ++ ++ ++ ++ ++ standard user ++ ++ ++ ++ ++ Standard users can use most software, but cannot install the software and ++change system settings ++ ++ ++ ++ ++ administrator ++ ++ ++ ++ ++ Administrators can make any changes they need ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Confirm ++ ++ ++ ++ ++ Add new user ++ ++ ++ ++ ++ Password Identify ++ ++ ++ ++ ++ General Password ++ ++ ++ ++ ++ ++ Inconsistency with pwd ++ ++ ++ ++ ++ Contains illegal characters! ++ ++ ++ ++ ++ The user name cannot be empty ++ ++ ++ ++ ++ The first character must be lowercase letters! ++ ++ ++ ++ ++ User name can not contain capital letters! ++ ++ ++ ++ ++ The user name is already in use, please use a different one. ++ ++ ++ ++ ++ The name corresponds to the group already exists. ++ ++ ++ ++ ++ User name length need to less than %1 letters! ++ ++ ++ ++ ++ The user name can only be composed of letters, numbers and underline! ++ ++ ++ ++ ++ The username is configured, please change the username ++ ++ ++ ++ ++ CustomLineEdit ++ ++ ++ New Shortcut... ++ ++ ++ ++ ++ DataFormat ++ ++ ++ Dialog ++ ++ ++ ++ ++ change format of data ++ ++ ++ ++ ++ ++ calendar ++ ++ ++ ++ ++ first day ++ ++ ++ ++ ++ ++ date ++ ++ ++ ++ ++ ++ time ++ ++ ++ ++ ++ cancel ++ ++ ++ ++ ++ confirm ++ ++ ++ ++ ++ first day of week ++ ++ ++ ++ ++ solar calendar ++ ++ ++ ++ ++ lunar ++ ++ ++ ++ ++ monday ++ ++ ++ ++ ++ sunday ++ ++ ++ ++ ++ DateTime ++ ++ ++ DateTime ++ ++ ++ ++ ++ current date ++ ++ ++ ++ ++ ++ ++ TextLabel ++ ++ ++ ++ ++ timezone ++ ++ ++ ++ ++ ++ Sync network time ++ ++ /datetime/Sync network time ++ ++ ++ ++ ++ Change time ++ ++ /datetime/Change time ++ ++ ++ ++ ++ Change time zone ++ ++ /datetime/Change time zone ++ ++ ++ ++ Sync complete ++ ++ ++ ++ ++ Dat ++ ++ ++ ++ ++ 24-hour clock ++ ++ /datetime/24-hour clock ++ ++ ++ ++ change time ++ ++ ++ ++ ++ DefaultApp ++ ++ ++ Default App ++ ++ ++ ++ ++ Browser ++ ++ /defaultapp/Browser ++ ++ ++ ++ Mail ++ ++ /defaultapp/Mail ++ ++ ++ ++ Image Viewer ++ ++ /defaultapp/Image Viewer ++ ++ ++ ++ Audio Player ++ ++ /defaultapp/Audio Player ++ ++ ++ ++ Video Player ++ ++ /defaultapp/Video Player ++ ++ ++ ++ Text Editor ++ ++ /defaultapp/Text Editor ++ ++ ++ ++ DefaultAppWindow ++ ++ ++ Select Default Application ++ ++ ++ ++ ++ Browser ++ ++ ++ ++ ++ Mail ++ ++ ++ ++ ++ Image Viewer ++ ++ ++ ++ ++ Audio Player ++ ++ ++ ++ ++ Video Player ++ ++ ++ ++ ++ Text Editor ++ ++ ++ ++ ++ Reset to default ++ ++ ++ ++ ++ DefineGroupItem ++ ++ ++ Edit ++ ++ ++ ++ ++ Delete ++ ++ ++ ++ ++ DefineShortcutItem ++ ++ ++ Delete ++ ++ ++ ++ ++ DelGroupDialog ++ ++ ++ Dialog ++ ++ ++ ++ ++ Delete ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Remind ++ ++ ++ ++ ++ Delete user group ++ ++ ++ ++ ++ Are you sure to delete the group, which will make some file components in the file system invalid! ++ ++ ++ ++ ++ DelUserDialog ++ ++ ++ Delete the user, belonging to the user's desktop, ++documents, favorites, music, pictures and video ++folder will be deleted! ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ KeepFile ++ ++ ++ ++ ++ RemoveFile ++ ++ ++ ++ ++ Desktop ++ ++ ++ ++ Icon Show On Desktop ++ ++ /desktop/Icon Show On Desktop ++ ++ ++ ++ Computerdesktop ++ ++ ++ ++ ++ Trashdesktop ++ ++ ++ ++ ++ Homedesktop ++ ++ ++ ++ ++ Volumedesktop ++ ++ ++ ++ ++ Networkdesktop ++ ++ ++ ++ ++ Set Start Menu ++ ++ ++ ++ ++ Always use the start menu in full screen ++ ++ ++ ++ ++ Icon Lock on Menu ++ ++ ++ ++ ++ Computermenu ++ ++ ++ ++ ++ Settingmenu ++ ++ ++ ++ ++ Filesystemmenu ++ ++ ++ ++ ++ Trashmenu ++ ++ ++ ++ ++ ++ Tray icon ++ ++ /desktop/Tray icon ++ ++ ++ ++ Desktop ++ ++ ++ ++ ++ DeviceInfoItem ++ ++ ++ Connect ++ ++ ++ ++ ++ Disconnect ++ ++ ++ ++ ++ Remove ++ ++ ++ ++ ++ DisplayPerformanceDialog ++ ++ ++ Dialog ++ ++ ++ ++ ++ Display Advanced Settings ++ ++ ++ ++ ++ Performance ++ ++ ++ ++ ++ Applicable to machine with discrete graphics, which can accelerate the rendering of 3D graphics. ++ ++ ++ ++ ++ (Note: not support connect graphical with xmanager on windows.) ++ ++ ++ ++ ++ Compatible ++ ++ ++ ++ ++ Applicable to machine with integrated graphics, there is no 3D graphics acceleration. ++ ++ ++ ++ ++ (Note: need connect graphical with xmanager on windows, use this option.) ++ ++ ++ ++ ++ Automatic ++ ++ ++ ++ ++ Auto select according to environment, delay the login time (about 0.5 sec). ++ ++ ++ ++ ++ Threshold: ++ ++ ++ ++ ++ Apply ++ ++ ++ ++ ++ Reset ++ ++ ++ ++ ++ (Note: select this option to use 3D graphics acceleration and xmanager.) ++ ++ ++ ++ ++ DisplaySet ++ ++ ++ Display ++ ++ ++ ++ ++ DisplayWindow ++ ++ ++ Form ++ ++ ++ ++ ++ Display ++ ++ ++ ++ ++ monitor ++ ++ ++ ++ ++ set as home screen ++ ++ ++ ++ ++ open monitor ++ ++ ++ ++ ++ Advanced ++ ++ ++ ++ ++ unify output ++ ++ ++ ++ ++ screen brightness adjustment ++ ++ ++ ++ ++ dark ++ ++ ++ ++ ++ bright ++ ++ ++ ++ ++ follow the sunrise and sunset(17:55-05:04) ++ ++ ++ ++ ++ custom time ++ ++ ++ ++ ++ opening time ++ ++ ++ ++ ++ closing time ++ ++ ++ ++ ++ color temperature ++ ++ ++ ++ ++ warm ++ ++ ++ ++ ++ cold ++ ++ ++ ++ ++ apply ++ ++ ++ ++ ++ EditGroupDialog ++ ++ ++ Dialog ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Certain ++ ++ ++ ++ ++ Edit User Group ++ ++ ++ ++ ++ Name ++ ++ ++ ++ ++ Id ++ ++ ++ ++ ++ Members ++ ++ ++ ++ ++ Tips ++ ++ ++ ++ ++ Invalid Id! ++ ++ ++ ++ ++ OK ++ ++ ++ ++ ++ Edit user group ++ ++ ++ ++ ++ EditPassDialog ++ ++ ++ Edit Password ++ ++ ++ ++ ++ Your new password here ++ ++ ++ ++ ++ Your code ++ ++ ++ ++ ++ Get phone code ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Confirm ++ ++ ++ ++ ++ Confirm your new password ++ ++ ++ ++ ++ ++ ++ ++ At least 6 bit, include letters and digt ++ ++ ++ ++ ++ Your password is valid! ++ ++ ++ ++ ++ Please check your password! ++ ++ ++ ++ ++ Resend( ++ ++ ++ ++ ++ ) ++ ++ ++ ++ ++ ++ Send ++ ++ ++ ++ ++ Reback sign in ++ ++ ++ ++ ++ Error code: ++ ++ ++ ++ ++ ! ++ ++ ++ ++ ++ Internal error occurring! ++ ++ ++ ++ ++ Failed to sign up! ++ ++ ++ ++ ++ Failed attempt to return value! ++ ++ ++ ++ ++ Check your connection! ++ ++ ++ ++ ++ Failed to get by phone! ++ ++ ++ ++ ++ Failed to get by user! ++ ++ ++ ++ ++ Failed to reset password! ++ ++ ++ ++ ++ ++ ++ Please check your information! ++ ++ ++ ++ ++ Please check your account! ++ ++ ++ ++ ++ Failed due to server error! ++ ++ ++ ++ ++ User existing! ++ ++ ++ ++ ++ Phone number already in used! ++ ++ ++ ++ ++ Please check your format! ++ ++ ++ ++ ++ Your are reach the limit! ++ ++ ++ ++ ++ Please check your phone number! ++ ++ ++ ++ ++ Please check your code! ++ ++ ++ ++ ++ Account doesn't exist! ++ ++ ++ ++ ++ Sending code error occurring! ++ ++ ++ ++ ++ EditPushButton ++ ++ ++ Reset ++ ++ ++ ++ ++ ExperiencePlan ++ ++ ++ User Experience ++ ++ ++ ++ ++ Join in user Experience plan ++ ++ ++ ++ ++ User experience plan terms, see ++ ++ ++ ++ ++ 《User Experience plan》 ++ ++ ++ ++ ++ Experienceplan ++ ++ ++ ++ ++ Fonts ++ ++ ++ ++ Fonts ++ ++ ++ ++ ++ ++ ++ Font size ++ ++ /fonts/Font size ++ ++ ++ ++ ++ Fonts select ++ ++ /fonts/Fonts select ++ ++ ++ ++ ++ Monospace font ++ ++ ++ ++ ++ Advanced settings ++ ++ ++ ++ ++ Gtk default font ++ ++ ++ ++ ++ Document font ++ ++ ++ ++ ++ titlebar font ++ ++ ++ ++ ++ Select text sample that looks clearest ++ ++ ++ ++ ++ Reset to default ++ ++ ++ ++ ++ 11 ++ ++ ++ ++ ++ 12 ++ ++ ++ ++ ++ 13 ++ ++ ++ ++ ++ 14 ++ ++ ++ ++ ++ 15 ++ ++ ++ ++ ++ 16 ++ ++ ++ ++ ++ Thanks For Using The ukcc ++ ++ ++ ++ ++ FrameItem ++ ++ ++ Sync failed, please login out to retry! ++ ++ ++ ++ ++ Change configuration file failed, please login out to retry! ++ ++ ++ ++ ++ Configuration file not exist, please login out to retry! ++ ++ ++ ++ ++ Cloud verifyed file download failed, please login out to retry! ++ ++ ++ ++ ++ OSS access failed, please login out to retry! ++ ++ ++ ++ ++ Sync failed, please retry or login out to get a better experience! ++ ++ ++ ++ ++ ItemList ++ ++ ++ Walpaper ++ ++ ++ ++ ++ ScreenSaver ++ ++ ++ ++ ++ Menu ++ ++ ++ ++ ++ Quick Start ++ ++ ++ ++ ++ Avatar ++ ++ ++ ++ ++ Tab ++ ++ ++ ++ ++ Font ++ ++ ++ ++ ++ Mouse ++ ++ ++ ++ ++ TouchPad ++ ++ ++ ++ ++ KeyBoard ++ ++ ++ ++ ++ ShortCut ++ ++ ++ ++ ++ Themes ++ ++ ++ ++ ++ Area ++ ++ ++ ++ ++ Date/Time ++ ++ ++ ++ ++ Default Open ++ ++ ++ ++ ++ Notice ++ ++ ++ ++ ++ Option ++ ++ ++ ++ ++ Peony ++ ++ ++ ++ ++ Weather ++ ++ ++ ++ ++ Media ++ ++ ++ ++ ++ Boot ++ ++ ++ ++ ++ Power ++ ++ ++ ++ ++ Editor ++ ++ ++ ++ ++ Terminal ++ ++ ++ ++ ++ KbPreviewFrame ++ ++ ++ No preview found ++ ++ ++ ++ ++ Unable to open Preview ! ++ ++ ++ ++ ++ KbdLayoutManager ++ ++ ++ C ++ ++ ++ ++ ++ L ++ ++ ++ ++ ++ Variant ++ ++ ++ ++ ++ Add ++ ++ ++ ++ ++ Add Layout ++ ++ ++ ++ ++ Del ++ ++ ++ ++ ++ Keyboard Preview ++ ++ ++ ++ ++ KeyValueConverter ++ ++ ++ System ++ ++ ++ ++ ++ Devices ++ ++ ++ ++ ++ Personalized ++ ++ ++ ++ ++ Network ++ ++ ++ ++ ++ Account ++ ++ ++ ++ ++ Datetime ++ ++ ++ ++ ++ Update ++ ++ ++ ++ ++ Messages ++ ++ ++ ++ ++ KeyboardControl ++ ++ ++ Keys Settings ++ ++ ++ ++ ++ ++ Enable repeat key ++ ++ /keyboard/Enable repeat key ++ ++ ++ ++ ++ Delay ++ ++ /keyboard/Delay ++ ++ ++ ++ Short ++ ++ ++ ++ ++ Long ++ ++ ++ ++ ++ ++ Speed ++ ++ /keyboard/Speed ++ ++ ++ ++ Slow ++ ++ ++ ++ ++ Fast ++ ++ ++ ++ ++ ++ Tip of keyboard ++ ++ /keyboard/Tip of keyboard ++ ++ ++ ++ Reset layout ++ ++ ++ ++ ++ Enable numlock ++ ++ ++ ++ ++ Input characters to test the repetition effect: ++ ++ ++ ++ ++ Keyboard Layout ++ ++ ++ ++ ++ ++ Keyboard layout ++ ++ /keyboard/Keyboard layout ++ ++ ++ ++ Input characters to test the repetition effect: ++ ++ /keyboard/Input characters to test the repetition effect: ++ ++ ++ ++ Install layouts ++ ++ ++ ++ ++ Keyboard ++ ++ ++ ++ ++ KeyboardPainter ++ ++ ++ Close ++ ++ ++ ++ ++ ++ Keyboard layout levels ++ ++ ++ ++ ++ ++ Level %1, %2 ++ ++ ++ ++ ++ LayoutManager ++ ++ ++ Dialog ++ ++ ++ ++ ++ Manager Keyboard Layout ++ ++ ++ ++ ++ Language ++ ++ ++ ++ ++ Country ++ ++ ++ ++ ++ Variant ++ ++ ++ ++ ++ Layout installed ++ ++ ++ ++ ++ Preview ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Install ++ ++ ++ ++ ++ LoginDialog ++ ++ ++ Forget ++ ++ ++ ++ ++ Send ++ ++ ++ ++ ++ User Sign in ++ ++ ++ ++ ++ Quick Sign in ++ ++ ++ ++ ++ ++ Your account/phone here ++ ++ ++ ++ ++ ++ Your code here ++ ++ ++ ++ ++ Your phone number here ++ ++ ++ ++ ++ Your password here ++ ++ ++ ++ ++ MCodeWidget ++ ++ ++ SongTi ++ ++ ++ ++ ++ MainDialog ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Sign in ++ ++ ++ ++ ++ ++ ++ ++ ++ Sign up ++ ++ ++ ++ ++ Login in progress ++ ++ ++ ++ ++ Error code: ++ ++ ++ ++ ++ ! ++ ++ ++ ++ ++ Internal error occurred! ++ ++ ++ ++ ++ Failed to sign up! ++ ++ ++ ++ ++ Failed attempt to return value! ++ ++ ++ ++ ++ Check your connection! ++ ++ ++ ++ ++ Failed to get by phone! ++ ++ ++ ++ ++ Failed to get by user! ++ ++ ++ ++ ++ Failed to reset password! ++ ++ ++ ++ ++ Timeout! ++ ++ ++ ++ ++ Phone binding falied! ++ ++ ++ ++ ++ ++ ++ Please check your information! ++ ++ ++ ++ ++ Please check your account! ++ ++ ++ ++ ++ Failed due to server error! ++ ++ ++ ++ ++ User existing! ++ ++ ++ ++ ++ Phone number already in used! ++ ++ ++ ++ ++ Please check your format! ++ ++ ++ ++ ++ Your are reach the limit! ++ ++ ++ ++ ++ Please check your phone number! ++ ++ ++ ++ ++ Please check your code! ++ ++ ++ ++ ++ Account doesn't exist! ++ ++ ++ ++ ++ User has bound the phone! ++ ++ ++ ++ ++ Sending code error occurred! ++ ++ ++ ++ ++ Your code is wrong! ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Please check your phone! ++ ++ ++ ++ ++ ++ Please check your password! ++ ++ ++ ++ ++ ++ ++ ++ ++ Sign in Cloud ++ ++ ++ ++ ++ Forget ++ ++ ++ ++ ++ Set ++ ++ ++ ++ ++ ++ ++ Back ++ ++ ++ ++ ++ Create Account ++ ++ ++ ++ ++ Sign up now ++ ++ ++ ++ ++ ++ Please confirm your password! ++ ++ ++ ++ ++ ++ ++ ++ Resend ( %1 ) ++ ++ ++ ++ ++ ++ ++ Get ++ ++ ++ ++ ++ Get phone code ++ ++ ++ ++ ++ ++ ++ ++ ++ Send ++ ++ ++ ++ ++ Binding Phone ++ ++ ++ ++ ++ ++ ++ ++ Please make sure your password is safety! ++ ++ ++ ++ ++ Bind now ++ ++ ++ ++ ++ MainWidget ++ ++ ++ ++ ++ Your account:%1 ++ ++ ++ ++ ++ ++ ++ Exit ++ ++ ++ ++ ++ Sync ++ ++ ++ ++ ++ Sign in ++ ++ ++ ++ ++ Stop sync ++ ++ ++ ++ ++ Sync your settings ++ ++ ++ ++ ++ Your account:%1 ++ ++ ++ ++ ++ Auto sync ++ ++ ++ ++ ++ Synchronize your personalized settings and data ++ ++ ++ ++ ++ ++ ++ ++ The latest time sync is: ++ ++ ++ ++ ++ Unauthorized device or OSS falied. ++Please retry for login! ++ ++ ++ ++ ++ Your account is sign on on other device already! ++ ++ ++ ++ ++ This operation may cover your settings! ++ ++ ++ ++ ++ %1, ++ ++ ++ ++ ++ Cloud ID desktop message ++ ++ ++ ++ ++ Disconnected ++ ++ ++ ++ ++ MainWindow ++ ++ ++ Search ++ ++ ++ ++ ++ ++ UKCC ++ ++ ++ ++ ++ Home ++ ++ ++ ++ ++ ukcc ++ ++ ++ ++ ++ MouseControl ++ ++ ++ Mouse Key Settings ++ ++ ++ ++ ++ ++ Hand habit ++ ++ /mouse/Hand habit ++ ++ ++ ++ Pointer Settings ++ ++ ++ ++ ++ ++ Speed ++ ++ /mouse/Speed ++ ++ ++ ++ ++ ++ Slow ++ ++ ++ ++ ++ mouse wheel speed ++ ++ ++ ++ ++ ++ ++ Fast ++ ++ ++ ++ ++ ++ Doubleclick delay ++ ++ /mouse/Doubleclick delay ++ ++ ++ ++ Short ++ ++ ++ ++ ++ Long ++ ++ ++ ++ ++ ++ Acceleration ++ ++ /mouse/Acceleration ++ ++ ++ ++ ++ Visibility ++ ++ /mouse/Visibility ++ ++ ++ ++ ++ Pointer size ++ ++ /mouse/Pointer size ++ ++ ++ ++ Cursor Settings ++ ++ ++ ++ ++ Cursor weight ++ ++ ++ ++ ++ Thin ++ ++ ++ ++ ++ Coarse ++ ++ ++ ++ ++ ++ Cursor speed ++ ++ /mouse/Cursor speed ++ ++ ++ ++ ++ Enable flashing on text area ++ ++ /mouse/Enable flashing on text area ++ ++ ++ ++ Mouse ++ ++ ++ ++ ++ Lefthand ++ ++ ++ ++ ++ Righthand ++ ++ ++ ++ ++ Default(Recommended) ++ ++ ++ ++ ++ Medium ++ ++ ++ ++ ++ Large ++ ++ ++ ++ ++ NetConnect ++ ++ ++ ++ Netconnect Status ++ ++ /netconnect/Netconnect Status ++ ++ ++ ++ Available Network ++ ++ ++ ++ ++ ++ Refresh ++ ++ ++ ++ ++ ++ open wifi ++ ++ /netconnect/open wifi ++ ++ ++ ++ ++ Network settings ++ ++ ++ ++ ++ Connect ++ ++ ++ ++ ++ ++ Refreshing... ++ ++ ++ ++ ++ connected ++ ++ ++ ++ ++ No network ++ ++ ++ ++ ++ Notice ++ ++ ++ Notice Settings ++ ++ ++ ++ ++ ++ Set the type of notice in the operation center ++ ++ /notice/Set the type of notice in the operation center ++ ++ ++ ++ Show new feature ater system upgrade ++ ++ ++ ++ ++ Get notifications from the app ++ ++ ++ ++ ++ Show notifications on the lock screen ++ ++ ++ ++ ++ ++ Notice Origin ++ ++ /notice/Notice Origin ++ ++ ++ ++ Notice ++ ++ ++ ++ ++ OutputConfig ++ ++ ++ resolution ++ ++ /display/resolution ++ ++ ++ ++ orientation ++ ++ ++ ++ ++ arrow-up ++ ++ ++ ++ ++ 90° arrow-right ++ ++ ++ ++ ++ arrow-down ++ ++ ++ ++ ++ 90° arrow-left ++ ++ ++ ++ ++ refresh rate ++ ++ ++ ++ ++ auto ++ ++ ++ ++ ++ 100% ++ ++ ++ ++ ++ 200% ++ ++ ++ ++ ++ screen zoom ++ ++ /display/screen zoom ++ ++ ++ ++ %1 Hz ++ ++ ++ ++ ++ PassDialog ++ ++ ++ Get the phone binding code ++ ++ ++ ++ ++ Your account here ++ ++ ++ ++ ++ Your new password here ++ ++ ++ ++ ++ Confirm your new password ++ ++ ++ ++ ++ Your code here ++ ++ ++ ++ ++ ++ At least 6 bit, include letters and digt ++ ++ ++ ++ ++ Your password is valid! ++ ++ ++ ++ ++ PinCodeWidget ++ ++ ++ Is it paired with " ++ ++ ++ ++ ++ " ++ ++ ++ ++ ++ Please make sure the number displayed on " ++ ++ ++ ++ ++ " matches the number below. Please do not enter this code on any other accessories. ++ ++ ++ ++ ++ Accept ++ ++ ++ ++ ++ Refush ++ ++ ++ ++ ++ Power ++ ++ ++ select power plan ++ ++ ++ ++ ++ ++ Balance (suggest) ++ ++ /power/Balance (suggest) ++ ++ ++ ++ Autobalance energy and performance with available hardware ++ ++ ++ ++ ++ ++ Saving ++ ++ /power/Saving ++ ++ ++ ++ Minimize performance ++ ++ ++ ++ ++ ++ Custom ++ ++ /power/Custom ++ ++ ++ ++ Users develop personalized power plans ++ ++ ++ ++ ++ Power supply ++ ++ ++ ++ ++ Battery powered ++ ++ ++ ++ ++ ++ ++ Change PC sleep time: ++ ++ ++ ++ ++ ++ ++ Change DP close time: ++ ++ ++ ++ ++ When close lid: ++ ++ ++ ++ ++ Screen darkens use battery: ++ ++ ++ ++ ++ Power Other Settings ++ ++ ++ ++ ++ S3 to S4 when: ++ ++ ++ ++ ++ Power icon: ++ ++ ++ ++ ++ Power ++ ++ ++ ++ ++ ++ ++ Enter idle state %1 min and sleep after %2 min : ++ ++ ++ ++ ++ ++ ++ Enter idle state %1 min and close after %2 min : ++ ++ ++ ++ ++ ++ ++ never ++ ++ ++ ++ ++ ++ ++ 10 min ++ ++ ++ ++ ++ ++ ++ 20 min ++ ++ ++ ++ ++ ++ 30 min ++ ++ ++ ++ ++ ++ 60 min ++ ++ ++ ++ ++ ++ 120 min ++ ++ ++ ++ ++ 300 min ++ ++ ++ ++ ++ ++ 1 min ++ ++ ++ ++ ++ ++ 5 min ++ ++ ++ ++ ++ nothing ++ ++ ++ ++ ++ blank ++ ++ ++ ++ ++ suspend ++ ++ ++ ++ ++ hibernate ++ ++ ++ ++ ++ shutdown ++ ++ ++ ++ ++ always ++ ++ ++ ++ ++ present ++ ++ ++ ++ ++ charge ++ ++ ++ ++ ++ Printer ++ ++ ++ ++ Add Printers And Scanners ++ ++ /printer/Add Printers And Scanners ++ ++ ++ ++ Add printers and scanners ++ ++ ++ ++ ++ List Of Existing Printers ++ ++ ++ ++ ++ Printer ++ ++ ++ ++ ++ Proxy ++ ++ ++ Auto Proxy ++ ++ ++ ++ ++ ++ Auto proxy ++ ++ /proxy/Auto proxy ++ ++ ++ ++ Auto url ++ ++ ++ ++ ++ Manual Proxy ++ ++ ++ ++ ++ ++ Manual proxy ++ ++ /proxy/Manual proxy ++ ++ ++ ++ Http Proxy ++ ++ ++ ++ ++ ++ ++ ++ Port ++ ++ ++ ++ ++ Cetification ++ ++ ++ ++ ++ Https Proxy ++ ++ ++ ++ ++ Ftp Proxy ++ ++ ++ ++ ++ Socks Proxy ++ ++ ++ ++ ++ List of ignored hosts. more than one entry, please separate with english semicolon(;) ++ ++ ++ ++ ++ Proxy ++ ++ ++ ++ ++ QObject ++ ++ ++ Add Shortcut ++ ++ ++ ++ ++ Update Shortcut ++ ++ ++ ++ ++ basic ++ ++ ++ ++ ++ classical ++ ++ ++ ++ ++ default ++ ++ ++ ++ ++ ++ Unknown ++ ++ ++ ++ ++ Display ++ ++ ++ ++ ++ Power ++ ++ ++ ++ ++ Default App ++ ++ ++ ++ ++ Auto Boot ++ ++ ++ ++ ++ Printer ++ ++ ++ ++ ++ Mouse ++ ++ ++ ++ ++ Touchpad ++ ++ ++ ++ ++ Keyboard ++ ++ ++ ++ ++ Shortcut ++ ++ ++ ++ ++ Audio ++ ++ ++ ++ ++ Bluetooth ++ ++ ++ ++ ++ Background ++ ++ ++ ++ ++ Theme ++ ++ ++ ++ ++ Screenlock ++ ++ ++ ++ ++ Fonts ++ ++ ++ ++ ++ Screensaver ++ ++ ++ ++ ++ Desktop ++ ++ ++ ++ ++ Connect ++ ++ ++ ++ ++ Vino ++ ++ ++ ++ ++ User Info ++ ++ ++ ++ ++ Dat ++ ++ ++ ++ ++ Security Center ++ ++ ++ ++ ++ Vpn ++ ++ ++ ++ ++ Proxy ++ ++ ++ ++ ++ Cloud Account ++ ++ ++ ++ ++ Area ++ ++ ++ ++ ++ Update ++ ++ ++ ++ ++ Backup ++ ++ ++ ++ ++ Notice ++ ++ ++ ++ ++ About ++ ++ ++ ++ ++ Experienceplan ++ ++ ++ ++ ++ ++ Never ++ ++ ++ ++ ++ May ++ ++ ++ ++ ++ January ++ ++ ++ ++ ++ February ++ ++ ++ ++ ++ March ++ ++ ++ ++ ++ April ++ ++ ++ ++ ++ June ++ ++ ++ ++ ++ July ++ ++ ++ ++ ++ August ++ ++ ++ ++ ++ September ++ ++ ++ ++ ++ October ++ ++ ++ ++ ++ Novermber ++ ++ ++ ++ ++ December ++ ++ ++ ++ ++ min length %1 ++ ++ ++ ++ ++ ++ min digit num %1 ++ ++ ++ ++ ++ ++ min upper num %1 ++ ++ ++ ++ ++ ++ min lower num %1 ++ ++ ++ ++ ++ ++ min other num %1 ++ ++ ++ ++ ++ ++ min char class %1 ++ ++ ++ ++ ++ ++ max repeat %1 ++ ++ ++ ++ ++ ++ max class repeat %1 ++ ++ ++ ++ ++ ++ max sequence %1 ++ ++ ++ ++ ++ ++ ukui-control-center is already running! ++ ++ ++ ++ ++ ++ Pwd input error, re-enter! ++ ++ ++ ++ ++ PulseAudio Volume Control ++ ++ ++ ++ ++ Connection to PulseAudio failed. Automatic retry in 5s ++ ++In this case this is likely because PULSE_SERVER in the Environment/X11 Root Window Properties ++or default-server in client.conf is misconfigured. ++This situation can also arrise when PulseAudio crashed and left stale details in the X11 Root Window. ++If this is the case, then PulseAudio should autospawn again, or if this is not configured you should ++run start-pulseaudio-x11 manually. ++ ++ ++ ++ ++ pa_context_subscribe() failed ++ ++ ++ ++ ++ Failed to initialize stream_restore extension: %s ++ ++ ++ ++ ++ pa_ext_stream_restore_read() failed ++ ++ ++ ++ ++ Error ++ ++ ++ ++ ++ Go to monitor settings page ++ ++ ++ ++ ++ Go to defaultapp settings page ++ ++ ++ ++ ++ Go to power settings page ++ ++ ++ ++ ++ Go to autoboot settings page ++ ++ ++ ++ ++ Go to printer settings page ++ ++ ++ ++ ++ Go to mouse settings page ++ ++ ++ ++ ++ Go to touchpad settings page ++ ++ ++ ++ ++ Go to keyboard settings page ++ ++ ++ ++ ++ Go to shortcut settings page ++ ++ ++ ++ ++ Go to audio settings page ++ ++ ++ ++ ++ Go to background settings page ++ ++ ++ ++ ++ Go to theme settings page ++ ++ ++ ++ ++ Go to screenlock settings page ++ ++ ++ ++ ++ Go to screensaver settings page ++ ++ ++ ++ ++ Go to fonts settings page ++ ++ ++ ++ ++ Go to desktop settings page ++ ++ ++ ++ ++ Go to netconnect settings page ++ ++ ++ ++ ++ Go to vpn settings page ++ ++ ++ ++ ++ Go to proxy settings page ++ ++ ++ ++ ++ Go to userinfo settings page ++ ++ ++ ++ ++ Go to cloudaccount settings page ++ ++ ++ ++ ++ Go to datetime settings page ++ ++ ++ ++ ++ Go to area settings page ++ ++ ++ ++ ++ Go to update settings page ++ ++ ++ ++ ++ Go to backup settings page ++ ++ ++ ++ ++ Go to notice settings page ++ ++ ++ ++ ++ Go to about settings page ++ ++ ++ ++ ++ RegDialog ++ ++ ++ Get ++ ++ ++ ++ ++ Your password here ++ ++ ++ ++ ++ Your account here ++ ++ ++ ++ ++ Confirm your password ++ ++ ++ ++ ++ Your code here ++ ++ ++ ++ ++ This operation is permanent ++ ++ ++ ++ ++ ++ At least 6 bit, include letters and digt ++ ++ ++ ++ ++ Your password is valid! ++ ++ ++ ++ ++ ResolutionSlider ++ ++ ++ No available resolutions ++ ++ ++ ++ ++ Screenlock ++ ++ ++ ++ Screenlock ++ ++ ++ ++ ++ Screenlock Interface ++ ++ ++ ++ ++ Screenlock Set ++ ++ ++ ++ ++ ++ Show picture of screenlock on screenlogin ++ ++ /screenlock/Show picture of screenlock on screenlogin ++ ++ ++ ++ ++ Lock screen when screensaver boot ++ ++ /screenlock/Lock screen when screensaver boot ++ ++ ++ ++ Lock screen delay ++ ++ ++ ++ ++ Select screenlock background ++ ++ ++ ++ ++ Browser online wp ++ ++ ++ ++ ++ Browser local wp ++ ++ ++ ++ ++ 5m ++ ++ ++ ++ ++ 10m ++ ++ ++ ++ ++ 30m ++ ++ ++ ++ ++ 45m ++ ++ ++ ++ ++ 1m ++ ++ ++ ++ ++ 1h ++ ++ ++ ++ ++ 1.5h ++ ++ ++ ++ ++ 3h ++ ++ ++ ++ ++ Screensaver ++ ++ ++ ++ Screensaver ++ ++ ++ ++ ++ ++ Enable screensaver ++ ++ /screensaver/Enable screensaver ++ ++ ++ ++ ++ Screensaver program ++ ++ /screensaver/Screensaver program ++ ++ ++ ++ ++ idle time ++ ++ /screensaver/idle time ++ ++ ++ ++ Lock screen when screensaver boot ++ ++ ++ ++ ++ Default_ukui ++ ++ ++ ++ ++ Blank_Only ++ ++ ++ ++ ++ 5m ++ ++ ++ ++ ++ 10m ++ ++ ++ ++ ++ 30m ++ ++ ++ ++ ++ 45m ++ ++ ++ ++ ++ 1m ++ ++ ++ ++ ++ 1h ++ ++ ++ ++ ++ 1.5h ++ ++ ++ ++ ++ 3h ++ ++ ++ ++ ++ SecurityCenter ++ ++ ++ SecurityCenter ++ ++ ++ ++ ++ Summarize ++ ++ ++ ++ ++ Recognize the current security of the system, and can take the necessary settings ++ ++ ++ ++ ++ Run Security Center ++ ++ ++ ++ ++ Security Center ++ ++ ++ ++ ++ Virus Protection ++ ++ ++ ++ ++ Protect system from threats ++ ++ ++ ++ ++ Network Protection ++ ++ ++ ++ ++ Setup app that can access web ++ ++ ++ ++ ++ App Execution Control ++ ++ ++ ++ ++ App install and exe protection ++ ++ ++ ++ ++ Account Security ++ ++ ++ ++ ++ Protect account and login security ++ ++ ++ ++ ++ ShareMain ++ ++ ++ Share ++ ++ ++ ++ ++ Allow others to view your desktop ++ ++ ++ ++ ++ Allow connection to control screen ++ ++ ++ ++ ++ Security ++ ++ ++ ++ ++ You must confirm every visit for this machine ++ ++ ++ ++ ++ Require user to enter this password: ++ ++ ++ ++ ++ Shortcut ++ ++ ++ ++ System Shortcut ++ ++ /shortcut/System Shortcut ++ ++ ++ ++ Show all shortcut ++ ++ ++ ++ ++ Reset default ++ ++ ++ ++ ++ ++ Custom Shortcut ++ ++ /shortcut/Custom Shortcut ++ ++ ++ ++ Add custom shortcut ++ ++ /shortcut/Add custom shortcut ++ ++ ++ ++ ++ disable ++ ++ ++ ++ ++ Shortcut ++ ++ ++ ++ ++ ShowAllShortcut ++ ++ ++ Dialog ++ ++ ++ ++ ++ System Shortcuts ++ ++ ++ ++ ++ Show all shortcut ++ ++ ++ ++ ++ ++ Desktop ++ ++ ++ ++ ++ SuccessDiaolog ++ ++ ++ Reback sign in ++ ++ ++ ++ ++ Sign up success! ++ ++ ++ ++ ++ ++ ++ ++ Confirm ++ ++ ++ ++ ++ Reset success! ++ ++ ++ ++ ++ Sign in success! ++ ++ ++ ++ ++ Binding phone success! ++ ++ ++ ++ ++ Theme ++ ++ ++ ++ Theme Mode ++ ++ /theme/Theme Mode ++ ++ ++ ++ ++ Icon theme ++ ++ /theme/Icon theme ++ ++ ++ ++ Control theme ++ ++ ++ ++ ++ ++ Cursor theme ++ ++ /theme/Cursor theme ++ ++ ++ ++ Effect setting ++ ++ ++ ++ ++ ++ Performance mode ++ ++ /theme/Performance mode ++ ++ ++ ++ ++ Transparency ++ ++ /theme/Transparency ++ ++ ++ ++ Reset to default ++ ++ ++ ++ ++ Theme ++ ++ ++ ++ ++ Default ++ ++ ++ ++ ++ Light ++ ++ ++ ++ ++ Dark ++ ++ ++ ++ ++ TimeZoneChooser ++ ++ ++ Cancel ++ ++ ++ ++ ++ Confirm ++ ++ ++ ++ ++ Change time zone ++ ++ ++ ++ ++ ++ change timezone ++ ++ ++ ++ ++ Touchpad ++ ++ ++ ++ Touchpad Settings ++ ++ /touchpad/Touchpad Settings ++ ++ ++ ++ Enabled touchpad ++ ++ ++ ++ ++ Disable touchpad while typing ++ ++ ++ ++ ++ Enable mouse clicks with touchpad ++ ++ ++ ++ ++ Scrolling ++ ++ ++ ++ ++ No touchpad found ++ ++ ++ ++ ++ Touchpad ++ ++ ++ ++ ++ Disable rolling ++ ++ ++ ++ ++ Vertical edge scrolling ++ ++ ++ ++ ++ Horizontal edge scrolling ++ ++ ++ ++ ++ Vertical two-finger scrolling ++ ++ ++ ++ ++ Horizontal two-finger scrolling ++ ++ ++ ++ ++ UkmediaInputWidget ++ ++ ++ Input ++ ++ ++ ++ ++ Input Device ++ ++ /audio/Input Device ++ ++ ++ ++ Volume ++ ++ /audio/Volume ++ ++ ++ ++ Input Level ++ ++ /audio/Input Level ++ ++ ++ ++ Low ++ ++ ++ ++ ++ High ++ ++ ++ ++ ++ Connector ++ ++ ++ ++ ++ UkmediaMainWidget ++ ++ ++ sound error ++ ++ ++ ++ ++ load sound failed ++ ++ ++ ++ ++ Establishing connection to PulseAudio. Please wait... ++ ++ ++ ++ ++ pa_ext_stream_restore_write() failed ++ ++ ++ ++ ++ UkmediaOutputWidget ++ ++ ++ Output ++ ++ ++ ++ ++ Output Device ++ ++ /audio/Output Device ++ ++ ++ ++ Master Volume ++ ++ /audio/Master Volume ++ ++ ++ ++ Balance ++ ++ /audio/Balance ++ ++ ++ ++ Right ++ ++ ++ ++ ++ Connector ++ ++ ++ ++ ++ Profile ++ ++ /audio/Profile ++ ++ ++ ++ Card ++ ++ /audio/Card ++ ++ ++ ++ Left ++ ++ ++ ++ ++ UkmediaSoundEffectsWidget ++ ++ ++ System Sound ++ ++ /audio/System Sound ++ ++ ++ ++ Sound Theme ++ ++ /audio/Sound Theme ++ ++ ++ ++ Alert Sound ++ ++ /audio/Alert Sound ++ ++ ++ ++ Alert Volume ++ ++ /audio/Alert Volume ++ ++ ++ ++ Boot Music ++ ++ /audio/Boot Music ++ ++ ++ ++ Beep Switch ++ ++ /audio/Beep Switch ++ ++ ++ ++ Window Closed ++ ++ ++ ++ ++ Volume Change ++ ++ ++ ++ ++ Setting Menu ++ ++ ++ ++ ++ UnifiedOutputConfig ++ ++ ++ resolution ++ ++ ++ ++ ++ orientation ++ ++ ++ ++ ++ arrow-up ++ ++ ++ ++ ++ 90° arrow-right ++ ++ ++ ++ ++ arrow-down ++ ++ ++ ++ ++ 90° arrow-left ++ ++ ++ ++ ++ refresh rate ++ ++ ++ ++ ++ auto ++ ++ ++ ++ ++ Update ++ ++ ++ ++ Update ++ ++ ++ ++ ++ ++ System Update ++ ++ /update/System Update ++ ++ ++ ++ Last check time: ++ ++ ++ ++ ++ Check for updates ++ ++ ++ ++ ++ UserInfo ++ ++ ++ Current User ++ ++ ++ ++ ++ ++ ++ Change pwd ++ ++ /userinfo/Change pwd ++ ++ ++ ++ ++ ++ Change type ++ ++ /userinfo/Change type ++ ++ ++ ++ ++ Change valid ++ ++ /userinfo/Change valid ++ ++ ++ ++ User group ++ ++ ++ ++ ++ ++ Login no passwd ++ ++ /userinfo/Login no passwd ++ ++ ++ ++ ++ enable autoLogin ++ ++ /userinfo/enable autoLogin ++ ++ ++ ++ Currently in Live mode, please create a new user and log out ++ ++ ++ ++ ++ Other Users ++ ++ ++ ++ ++ Add new user ++ ++ ++ ++ ++ User Info ++ ++ ++ ++ ++ standard user ++ ++ ++ ++ ++ administrator ++ ++ ++ ++ ++ root ++ ++ ++ ++ ++ Delete ++ ++ ++ ++ ++ Warning ++ ++ ++ ++ ++ The user is logged in, please delete the user after logging out ++ ++ ++ ++ ++ Vino ++ ++ ++ ++ Vino ++ ++ ++ ++ ++ Vpn ++ ++ ++ Add Vpn Connect ++ ++ ++ ++ ++ Add vpn connect ++ ++ /vpn/Add vpn connect ++ ++ ++ ++ Vpn ++ ++ ++ ++ ++ Wallpaper ++ ++ ++ Desktop Background ++ ++ ++ ++ ++ ++ Select from ++ ++ /wallpaper/Select from ++ ++ ++ ++ Picture options ++ ++ ++ ++ ++ ++ Browser online wp ++ ++ /wallpaper/Browser online wp ++ ++ ++ ++ ++ Browser local wp ++ ++ /wallpaper/Browser local wp ++ ++ ++ ++ ++ Reset to default ++ ++ /wallpaper/Reset to default ++ ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Ok ++ ++ ++ ++ ++ Background ++ ++ ++ ++ ++ picture ++ ++ ++ ++ ++ color ++ ++ ++ ++ ++ Custom color ++ ++ ++ ++ ++ wallpaper ++ ++ ++ ++ ++ centered ++ ++ ++ ++ ++ scaled ++ ++ ++ ++ ++ stretched ++ ++ ++ ++ ++ zoom ++ ++ ++ ++ ++ spanned ++ ++ ++ ++ ++ Wallpaper files(*.jpg *.jpeg *.bmp *.dib *.png *.jfif *.jpe *.gif *.tif *.tiff *.wdp) ++ ++ ++ ++ ++ allFiles(*.*) ++ ++ ++ ++ ++ ++ select custom wallpaper file ++ ++ ++ ++ ++ ++ Select ++ ++ ++ ++ ++ ++ Position: ++ ++ ++ ++ ++ ++ FileName: ++ ++ ++ ++ ++ ++ FileType: ++ ++ ++ ++ ++ Widget ++ ++ ++ unify output ++ ++ /display/unify output ++ ++ ++ ++ night mode ++ ++ /display/night mode ++ ++ ++ ++ Some applications need to be logouted to take effect ++ ++ ++ ++ ++ Information ++ ++ ++ ++ ++ Theme follow night mode ++ ++ ++ ++ ++ Hint ++ ++ ++ ++ ++ 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 ++ ++ ++ ++ ++ Save Config ++ ++ ++ ++ ++ Restore Config ++ ++ ++ ++ ++ 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 ++ ++ ++ ++ ++ please insure at least one output! ++ ++ ++ ++ ++ ++ Warning ++ ++ ++ ++ ++ Morning time should be earlier than evening time! ++ ++ ++ ++ ++ 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. ++ ++ ++ ++ ++ @title:window ++ Unsupported Configuration ++ ++ ++ ++ ++ addShortcutDialog ++ ++ ++ Dialog ++ ++ ++ ++ ++ Shortcut name ++ ++ ++ ++ ++ Shortcut exec ++ ++ ++ ++ ++ Open ++ ++ ++ ++ ++ Invalid executable, please re-enter ++ ++ ++ ++ ++ ++ Cancel ++ ++ ++ ++ ++ Certain ++ ++ ++ ++ ++ Add custom shortcut ++ ++ ++ ++ ++ select desktop ++ ++ ++ ++ ++ changtimedialog ++ ++ ++ Dialog ++ ++ ++ ++ ++ current date ++ ++ ++ ++ ++ time ++ ++ ++ ++ ++ year ++ ++ ++ ++ ++ month ++ ++ ++ ++ ++ day ++ ++ ++ ++ ++ cancel ++ ++ ++ ++ ++ confirm ++ ++ ++ ++ ++ networkaccount ++ ++ ++ Cloud Account ++ ++ ++ ++ +-- +2.23.0 + diff --git a/ukui-control-center.spec b/ukui-control-center.spec index b19a65b..288a64a 100644 --- a/ukui-control-center.spec +++ b/ukui-control-center.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-control-center Version: 3.0.1 -Release: 9 +Release: 10 Summary: utilities to configure the UKUI desktop License: GPL-2+ URL: http://www.ukui.org @@ -79,7 +79,7 @@ patch6: 0006-fix-Group-members-are-not-displayed.patch patch7: 0007-fix-vnc-crashed.patch patch8: 0008-fix-redeclaration-of-QStringList-usergroupList-in-ed.patch patch9: 0009-fix-layout-optimization.patch - +patch10:0010-Added-translation-using-Weblate-Tibetan.patch Recommends: qt5-qtquickcontrols Suggests: gsettings-desktop-schemas @@ -109,6 +109,7 @@ Suggests: ukui-settings-daemon %patch7 -p1 %patch8 -p1 %patch9 -p1 +%patch10 -p1 %build qmake-qt5 @@ -152,6 +153,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/polkit-1/actions/org.ukui.groupmanager.policy %changelog +* Mon Jul 12 2021 tanyulong - 3.0.1-10 +- Added translation using Weblate Tibetan add bo_CN.ts file + * Mon Jul 12 2021 tanyulong - 3.0.1-9 - fix layout optimization -- Gitee From ade516afb190c33aac39640bbab60afde56f53e5 Mon Sep 17 00:00:00 2001 From: tanyulong2021 Date: Mon, 12 Jul 2021 14:07:29 +0800 Subject: [PATCH 07/11] feat(power): add sleep function --- 0011-power-add-sleep-function.patch | 453 ++++++++++++++++++++++++++++ ukui-control-center.spec | 8 +- 2 files changed, 460 insertions(+), 1 deletion(-) create mode 100644 0011-power-add-sleep-function.patch diff --git a/0011-power-add-sleep-function.patch b/0011-power-add-sleep-function.patch new file mode 100644 index 0000000..1b89112 --- /dev/null +++ b/0011-power-add-sleep-function.patch @@ -0,0 +1,453 @@ +From 1ed0391590fb670596523e2ce1df224c1f105769 Mon Sep 17 00:00:00 2001 +From: tanyulong +Date: Mon, 12 Jul 2021 13:59:08 +0800 +Subject: [PATCH] power add sleep function + +--- + commonComponent/ComboxFrame/comboxframe.cpp | 21 ++++++ + commonComponent/ComboxFrame/comboxframe.h | 29 ++++++++ + commonComponent/comboxframe.pri | 7 ++ + plugins/system/power/power.cpp | 78 ++++++++++++++++++++- + plugins/system/power/power.h | 16 +++++ + plugins/system/power/power.pro | 3 +- + plugins/system/power/power.ui | 15 +--- + plugins/system/power/powermacrodata.h | 1 + + registeredQDbus/sysdbusregister.cpp | 44 ++++++++---- + registeredQDbus/sysdbusregister.h | 13 ++-- + 10 files changed, 193 insertions(+), 34 deletions(-) + create mode 100644 commonComponent/ComboxFrame/comboxframe.cpp + create mode 100644 commonComponent/ComboxFrame/comboxframe.h + create mode 100644 commonComponent/comboxframe.pri + +diff --git a/commonComponent/ComboxFrame/comboxframe.cpp b/commonComponent/ComboxFrame/comboxframe.cpp +new file mode 100644 +index 0000000..aba3553 +--- /dev/null ++++ b/commonComponent/ComboxFrame/comboxframe.cpp +@@ -0,0 +1,21 @@ ++#include "comboxframe.h" ++ ++ComboxFrame::ComboxFrame(QString labelStr, QWidget *parent) : mTitleName(labelStr), QFrame(parent) { ++ ++ this->setMinimumSize(550, 50); ++ this->setMaximumSize(960, 50); ++ this->setFrameShape(QFrame::Shape::Box); ++ ++ mTitleLabel = new QLabel(mTitleName, this); ++ mCombox = new QComboBox(this); ++ ++ mHLayout = new QHBoxLayout(this); ++ mHLayout->addWidget(mTitleLabel); ++ mHLayout->addWidget(mCombox); ++ ++ this->setLayout(mHLayout); ++} ++ ++ComboxFrame::~ComboxFrame() { ++ ++} +diff --git a/commonComponent/ComboxFrame/comboxframe.h b/commonComponent/ComboxFrame/comboxframe.h +new file mode 100644 +index 0000000..d6f2679 +--- /dev/null ++++ b/commonComponent/ComboxFrame/comboxframe.h +@@ -0,0 +1,29 @@ ++#ifndef COMBOXFRAME_H ++#define COMBOXFRAME_H ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++class ComboxFrame : public QFrame ++{ ++ Q_OBJECT ++public: ++ ComboxFrame(QString labelStr, QWidget *parent = nullptr); ++ ~ComboxFrame(); ++ ++public: ++ QComboBox *mCombox; ++ ++private: ++ QLabel *mTitleLabel; ++ QHBoxLayout *mHLayout; ++ QString mTitleName; ++ ++signals: ++}; ++ ++#endif // COMBOXFRAME_H +diff --git a/commonComponent/comboxframe.pri b/commonComponent/comboxframe.pri +new file mode 100644 +index 0000000..e1399d5 +--- /dev/null ++++ b/commonComponent/comboxframe.pri +@@ -0,0 +1,7 @@ ++#LIBINTERFACE_NAME = $$qtLibraryTarget(comboxframe) ++ ++SOURCES += \ ++ $$PWD/ComboxFrame/comboxframe.cpp \ ++ ++HEADERS += \ ++ $$PWD/ComboxFrame/comboxframe.h \ +diff --git a/plugins/system/power/power.cpp b/plugins/system/power/power.cpp +index ac35f93..52d1168 100755 +--- a/plugins/system/power/power.cpp ++++ b/plugins/system/power/power.cpp +@@ -22,6 +22,10 @@ + #include "powermacrodata.h" + + #include ++#include ++#include ++#include ++#include + + typedef enum { + BALANCE, +@@ -45,6 +49,9 @@ const int COMPUTER_BALANCE = 30 * 60; + const int DISPLAY_SAVING = 20 * 60; + const int COMPUTER_SAVING = 2 * 60 * 60; + ++const QStringList kHibernate { QObject::tr("Never"),QObject::tr("10min"), QObject::tr("20min"), ++ QObject::tr("40min"), QObject::tr("80min")}; ++ + Power::Power() { + ui = new Ui::Power; + pluginWidget = new QWidget; +@@ -59,11 +66,17 @@ Power::Power() { + + const QByteArray id(POWERMANAGER_SCHEMA); + ++ initDbus(); + setupComponent(); + isPowerSupply(); + if (QGSettings::isSchemaInstalled(id)) { + settings = new QGSettings(id, QByteArray(), this); +- initModeStatus(); ++ ++ mPowerKeys = settings->keys(); ++ ++ initGeneralSet(); ++ ++ initModeStatus(); + setupConnect(); + initPowerOtherStatus(); + } else { +@@ -126,6 +139,7 @@ void Power::isPowerSupply() { + ui->closeLidFrame->setVisible(false); + ui->title2Label->setVisible(false); + ui->iconFrame->setVisible(false); ++ ui->verticalSpacer_2->changeSize(0, 0); + } else { + qDebug() << "brightness info is valid"; + isExitsPower = true ; +@@ -134,6 +148,10 @@ void Power::isPowerSupply() { + } + } + ++void Power::setHibernateTime(QString hibernate) { ++ mUkccInterface->call("setSuspendThenHibernate", hibernate); ++} ++ + void Power::setupComponent() { + // + ui->powerModeBtnGroup->setId(ui->balanceRadioBtn, BALANCE); +@@ -453,3 +471,61 @@ void Power::refreshUI() { + // ui->customWidget->setStyleSheet("QWidget{background: #F4F4F4; border-top-left-radius: 6px; border-top-right-radius: 6px;}"); + } + } ++ ++void Power::initGeneralSet() { ++ if (getHibernateStatus() && mPowerKeys.contains("afterIdleAction")) { ++ mHibernate = new ComboxFrame(tr("After suspending this time, the system will go to sleep:"), pluginWidget); ++ ++ ui->powerLayout->addWidget(new QLabel(tr("General Settings"))); ++ ui->powerLayout->addWidget(mHibernate); ++ ++ ui->powerLayout->addStretch(); ++ ++ for(int i = 0; i < kHibernate.length(); i++) { ++ mHibernate->mCombox->addItem(kHibernate.at(i)); ++ } ++ ++ if (getHibernateTime().isEmpty()) { ++ mHibernate->mCombox->setCurrentIndex(0); ++ } else { ++ mHibernate->mCombox->setCurrentText(getHibernateTime()); ++ } ++ ++ connect(mHibernate->mCombox, QOverload::of(&QComboBox::currentIndexChanged), this, [=](int index) { ++ setHibernateTime(mHibernate->mCombox->currentText()); ++ if (index) { ++ settings->set(HIBERNATE_KEY, "suspend-then-hibernate"); ++ } else { ++ settings->set(HIBERNATE_KEY, "suspend"); ++ } ++ }); ++ } ++} ++ ++bool Power::getHibernateStatus() { ++ ++ QDBusInterface loginInterface("org.freedesktop.login1", ++ "/org/freedesktop/login1", ++ "org.freedesktop.login1.Manager", ++ QDBusConnection::systemBus()); ++ ++ if (loginInterface.isValid()) { ++ QDBusReply reply = loginInterface.call("CanSuspendThenHibernate"); ++ return reply.value() == "yes" ? true : false; ++ } ++} ++ ++QString Power::getHibernateTime() { ++ QDBusReply hibernateTime = mUkccInterface->call("getSuspendThenHibernate"); ++ if (hibernateTime.isValid()) { ++ return hibernateTime.value(); ++ } ++ return ""; ++} ++ ++void Power::initDbus() { ++ mUkccInterface = new QDBusInterface("com.control.center.qt.systemdbus", ++ "/", ++ "com.control.center.interface", ++ QDBusConnection::systemBus()); ++} +diff --git a/plugins/system/power/power.h b/plugins/system/power/power.h +index d6d5d1d..b4da6e4 100755 +--- a/plugins/system/power/power.h ++++ b/plugins/system/power/power.h +@@ -29,6 +29,8 @@ + + #include "shell/interface.h" + ++#include "commonComponent/ComboxFrame/comboxframe.h" ++ + namespace Ui { + class Power; + } +@@ -78,9 +80,23 @@ private: + QStringList lidStringList; + QStringList buttonStringList; + QStringList iconShowList; ++ ++ QStringList mPowerKeys; + + bool settingsCreate; + bool isExitsPower; ++ ++ ComboxFrame *mHibernate; ++ QDBusInterface *mUkccInterface; ++ ++private: ++ void initGeneralSet(); ++ bool getHibernateStatus(); ++ QString getHibernateTime(); ++ void initDbus(); ++ ++private slots: ++ void setHibernateTime(QString hibernate); + }; + + #endif // POWER_H +diff --git a/plugins/system/power/power.pro b/plugins/system/power/power.pro +index f417bc4..795ac94 100755 +--- a/plugins/system/power/power.pro ++++ b/plugins/system/power/power.pro +@@ -1,8 +1,9 @@ ++include(../../../env.pri) + QT += widgets dbus + TEMPLATE = lib + CONFIG += plugin + +-include(../../../env.pri) ++include($$PROJECT_COMPONENTSOURCE/comboxframe.pri) + + TARGET = $$qtLibraryTarget(power) + DESTDIR = ../.. +diff --git a/plugins/system/power/power.ui b/plugins/system/power/power.ui +index aea2b2a..e8be31d 100755 +--- a/plugins/system/power/power.ui ++++ b/plugins/system/power/power.ui +@@ -72,7 +72,7 @@ + 0 + + +- ++ + + 8 + +@@ -1127,19 +1127,6 @@ + + + +- +- +- +- Qt::Vertical +- +- +- +- 20 +- 40 +- +- +- +- + + + +diff --git a/plugins/system/power/powermacrodata.h b/plugins/system/power/powermacrodata.h +index 65fc099..208d8c7 100755 +--- a/plugins/system/power/powermacrodata.h ++++ b/plugins/system/power/powermacrodata.h +@@ -32,6 +32,7 @@ + #define BUTTON_SUSPEND_KEY "button-suspend" + #define BUTTON_POWER_KEY "button-power" + #define IDLE_DIM_TIME_KEY "idle-dim-time" ++#define HIBERNATE_KEY "after-idle-action" + + #define PRESENT_VALUE "present" + #define ALWAYS_VALUE "always" +diff --git a/registeredQDbus/sysdbusregister.cpp b/registeredQDbus/sysdbusregister.cpp +index 58d31db..54c2509 100755 +--- a/registeredQDbus/sysdbusregister.cpp ++++ b/registeredQDbus/sysdbusregister.cpp +@@ -20,30 +20,26 @@ + #include "sysdbusregister.h" + + #include +-#include + #include ++#include ++#include + + SysdbusRegister::SysdbusRegister() + { ++ mHibernateFile = "/etc/systemd/sleep.conf"; ++ mHibernateSet = new QSettings(mHibernateFile, QSettings::IniFormat, this); ++ mHibernateSet->setIniCodec("UTF-8"); + } + + SysdbusRegister::~SysdbusRegister() + { + } + +-//QString SysdbusRegister::name () const{ +-// return m_name; +-//} +- +-//void SysdbusRegister::SetName(QString name){ +-// m_name = name; +-//} +- +-void SysdbusRegister::exitService(){ ++void SysdbusRegister::exitService() { + qApp->exit(0); + } + +-QString SysdbusRegister::GetComputerInfo(){ ++QString SysdbusRegister::GetComputerInfo() { + QByteArray ba; + FILE * fp = NULL; + char cmd[128]; +@@ -86,7 +82,7 @@ QString SysdbusRegister::getNoPwdLoginStatus(){ + } + + //设置免密登录状态 +-void SysdbusRegister::setNoPwdLoginStatus(bool status,QString username){ ++void SysdbusRegister::setNoPwdLoginStatus(bool status,QString username) { + QString filename = "/etc/lightdm/lightdm.conf"; + QSettings Settings(filename, QSettings::IniFormat); + +@@ -105,8 +101,7 @@ void SysdbusRegister::setNoPwdLoginStatus(bool status,QString username){ + } + + // 设置自动登录状态 +-void SysdbusRegister::setAutoLoginStatus(QString username) +-{ ++void SysdbusRegister::setAutoLoginStatus(QString username) { + QString filename = "/etc/lightdm/lightdm.conf"; + QSettings Settings(filename, QSettings::IniFormat); + +@@ -118,3 +113,24 @@ void SysdbusRegister::setAutoLoginStatus(QString username) + systemRun("sudo groupadd -r autologin"); + systemRun(QString("sudo gpasswd -a %1 autologin").arg(username)); + } ++ ++ ++QString SysdbusRegister::getSuspendThenHibernate() { ++ mHibernateSet->beginGroup("Sleep"); ++ ++ QString time = mHibernateSet->value("HibernateDelaySec").toString(); ++ ++ mHibernateSet->endGroup(); ++ mHibernateSet->sync(); ++ ++ return time; ++} ++ ++void SysdbusRegister::setSuspendThenHibernate(QString time) { ++ mHibernateSet->beginGroup("Sleep"); ++ ++ mHibernateSet->setValue("HibernateDelaySec", time); ++ ++ mHibernateSet->endGroup(); ++ mHibernateSet->sync(); ++} +diff --git a/registeredQDbus/sysdbusregister.h b/registeredQDbus/sysdbusregister.h +index 8bfc94f..df75d2d 100755 +--- a/registeredQDbus/sysdbusregister.h ++++ b/registeredQDbus/sysdbusregister.h +@@ -23,8 +23,8 @@ + #include + #include + #include +- + #include ++#include + + class SysdbusRegister : public QObject + { +@@ -37,15 +37,15 @@ public: + ~SysdbusRegister(); + + private: +-// QString m_name; ++ QString mHibernateFile; ++ ++ QSettings *mHibernateSet; + + signals: + Q_SCRIPTABLE void nameChanged(QString); + Q_SCRIPTABLE void computerinfo(QString); + + public slots: +-// Q_SCRIPTABLE QString name() const; +-// Q_SCRIPTABLE void SetName(QString name); + + Q_SCRIPTABLE void exitService(); + Q_SCRIPTABLE QString GetComputerInfo(); +@@ -59,7 +59,12 @@ public slots: + + //设置自动登录状态 + Q_SCRIPTABLE void setAutoLoginStatus(QString username); ++ ++ // 获取挂起到休眠时间 ++ Q_SCRIPTABLE QString getSuspendThenHibernate(); + ++ // 设置挂起到休眠时间 ++ Q_SCRIPTABLE void setSuspendThenHibernate(QString time); + }; + + #endif // SYSDBUSREGISTER_H +-- +2.23.0 + diff --git a/ukui-control-center.spec b/ukui-control-center.spec index 288a64a..5c1301a 100644 --- a/ukui-control-center.spec +++ b/ukui-control-center.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-control-center Version: 3.0.1 -Release: 10 +Release: 11 Summary: utilities to configure the UKUI desktop License: GPL-2+ URL: http://www.ukui.org @@ -80,6 +80,8 @@ patch7: 0007-fix-vnc-crashed.patch patch8: 0008-fix-redeclaration-of-QStringList-usergroupList-in-ed.patch patch9: 0009-fix-layout-optimization.patch patch10:0010-Added-translation-using-Weblate-Tibetan.patch +patch11:0011-power-add-sleep-function.patch + Recommends: qt5-qtquickcontrols Suggests: gsettings-desktop-schemas @@ -110,6 +112,7 @@ Suggests: ukui-settings-daemon %patch8 -p1 %patch9 -p1 %patch10 -p1 +%patch11 -p1 %build qmake-qt5 @@ -153,6 +156,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/polkit-1/actions/org.ukui.groupmanager.policy %changelog +* Mon Jul 12 2021 tanyulong - 3.0.1-11 +- power add sleep function + * Mon Jul 12 2021 tanyulong - 3.0.1-10 - Added translation using Weblate Tibetan add bo_CN.ts file -- Gitee From 60827322d6895ecd8f31844514ea9fb71afeb049 Mon Sep 17 00:00:00 2001 From: tanyulong2021 Date: Tue, 13 Jul 2021 09:59:57 +0800 Subject: [PATCH 08/11] add title icon --- 0012-window-add-title-icon.patch | 230 +++++++++++++++++++++++++++++++ ukui-control-center.spec | 7 +- 2 files changed, 236 insertions(+), 1 deletion(-) create mode 100644 0012-window-add-title-icon.patch diff --git a/0012-window-add-title-icon.patch b/0012-window-add-title-icon.patch new file mode 100644 index 0000000..beb345c --- /dev/null +++ b/0012-window-add-title-icon.patch @@ -0,0 +1,230 @@ +From 4488d85f9e7326a021ed2bed6811bd20c3c05dba Mon Sep 17 00:00:00 2001 +From: tanyulong +Date: Tue, 13 Jul 2021 09:50:49 +0800 +Subject: [PATCH] window add title icon + +--- + shell/customstyle.cpp | 10 +++++++++- + shell/mainwindow.cpp | 44 +++++++++++++++++++++++++------------------ + shell/mainwindow.h | 1 + + shell/mainwindow.ui | 4 ++-- + shell/prescene.cpp | 14 +++++++++++++- + shell/prescene.h | 1 + + 6 files changed, 52 insertions(+), 22 deletions(-) + +diff --git a/shell/customstyle.cpp b/shell/customstyle.cpp +index 0718c2e..82ae674 100755 +--- a/shell/customstyle.cpp ++++ b/shell/customstyle.cpp +@@ -138,7 +138,6 @@ void InternalStyle::drawComplexControl(QStyle::ComplexControl control, const QSt + void InternalStyle::polish(QPalette &pal) + { + QProxyStyle::polish(pal); +- pal.setColor(QPalette::Window, pal.base().color()); + pal.setColor(QPalette::Inactive, QPalette::Base, pal.base().color()); + // pal.setColor(QPalette::Button, pal.alternateBase().color()); + } +@@ -151,4 +150,13 @@ void InternalStyle::polish(QWidget *widget) + pal.setColor(QPalette::Base, pal.alternateBase().color()); + widget->setPalette(pal); + } ++ ++ // 跳过左侧边栏处理 ++ if (widget && widget->objectName() == "leftsidebarWidget") { ++ ++ } else if (widget){ ++ QPalette paltte = widget->palette(); ++ paltte.setColor(QPalette::Window, paltte.base().color()); ++ widget->setPalette(paltte); ++ } + } +diff --git a/shell/mainwindow.cpp b/shell/mainwindow.cpp +index a85b68a..9a602ef 100755 +--- a/shell/mainwindow.cpp ++++ b/shell/mainwindow.cpp +@@ -368,6 +368,7 @@ void MainWindow::initUI() { + //左上角显示字符/返回按钮 + backBtn->setVisible(index); + titleLabel->setHidden(index); ++ mTitleIcon->setHidden(index); + + if (index){ //首页部分组件样式 + //中部内容区域 +@@ -416,7 +417,8 @@ void MainWindow::initUI() { + + void MainWindow::initTileBar() { + +- ui->titleLayout->setContentsMargins(9, 9, 9, 0); ++ ui->titleLayout->setContentsMargins(4, 4, 4, 0); ++ ui->titleLayout->setSpacing(0); + m_searchWidget = new SearchWidget(this); + // char style[100]; + // sprintf(style, "SearchWidget{border:0px;background-color:palette(base);border-radius:8px;}", +@@ -428,10 +430,9 @@ void MainWindow::initTileBar() { + m_queryWid=new QWidget; + m_queryWid->setParent(m_searchWidget); + m_queryWid->setFocusPolicy(Qt::NoFocus); +-// m_queryWid->setStyleSheet("border:0px;background:transparent"); + + QHBoxLayout* queryWidLayout = new QHBoxLayout; +- queryWidLayout->setContentsMargins(4,4,0,0); ++ queryWidLayout->setContentsMargins(0, 0, 0, 0); + queryWidLayout->setAlignment(Qt::AlignJustify); + queryWidLayout->setSpacing(0); + m_queryWid->setLayout(queryWidLayout); +@@ -463,22 +464,29 @@ void MainWindow::initTileBar() { + backBtn = new QPushButton(this); + minBtn = new QPushButton(this); + maxBtn = new QPushButton(this); +- closeBtn = new QPushButton(this); ++ closeBtn = new QPushButton(this); ++ mTitleIcon = new QLabel(this); + titleLabel = new QLabel(tr("UKCC"), this); + +- backBtn->setFixedSize(32, 32); +- minBtn->setFixedSize(32, 32); +- maxBtn->setFixedSize(32, 32); + // titleLabel->setFixedSize(32, 32); +- titleLabel->setFixedHeight(32); +- titleLabel->setMinimumWidth(32); ++ backBtn->setFixedSize(30, 30); ++ minBtn->setFixedSize(30, 30); ++ maxBtn->setFixedSize(30, 30); ++ closeBtn->setFixedSize(30, 30); ++ mTitleIcon->setFixedSize(30, 30); ++ ++ QIcon titleIcon = QIcon::fromTheme("ukui-control-center"); ++ mTitleIcon->setPixmap(titleIcon.pixmap(titleIcon.actualSize(QSize(24, 24)))); ++ ++ titleLabel->setFixedSize(30, 30); + titleLabel->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + m_searchWidget->setMinimumWidth(350); +- m_searchWidget->setMinimumHeight(40); ++ m_searchWidget->setMinimumHeight(35); + m_searchWidget->setMaximumWidth(350); +- m_searchWidget->setMaximumHeight(40); +- +- ui->titleLayout->addSpacing(9); ++ m_searchWidget->setMaximumHeight(35); ++ ++ ui->titleLayout->addWidget(mTitleIcon); ++ ui->titleLayout->addSpacing(8); + ui->titleLayout->addWidget(titleLabel); + ui->titleLayout->addWidget(backBtn); + ui->titleLayout->addStretch(); +@@ -621,7 +629,7 @@ void MainWindow::initLeftsideBar(){ + connect(hBtn, &QPushButton::clicked, this, [=]{ + ui->stackedWidget->setCurrentIndex(0); + }); +- hBtn->setStyleSheet("QPushButton#homepage{background: palette(button); border: none;}"); ++ hBtn->setStyleSheet("QPushButton#homepage{background: palette(window); border: none;}"); + // hBtn->setStyleSheet("QPushButton#homepage{background: palette(base);}"); + ui->leftsidebarVerLayout->addStretch(); + ui->leftsidebarVerLayout->addWidget(hBtn); +@@ -646,7 +654,7 @@ void MainWindow::initLeftsideBar(){ + // button->setStyleSheet("QPushButton::checked{background: palette(button); border: none; border-image: url('://img/primaryleftmenu/checked.png');}" + // "QPushButton::!checked{background: palette(button);border: none;}"); + button->setStyleSheet("QPushButton::checked{background: palette(base); border-top-left-radius: 6px;border-bottom-left-radius: 6px;}" +- "QPushButton::!checked{background: palette(button);border: none;}"); ++ "QPushButton::!checked{background: palette(window);border: none;}"); + + connect(button, &QPushButton::clicked, this, [=]{ + QPushButton * btn = dynamic_cast(QObject::sender()); +@@ -688,9 +696,9 @@ QPushButton * MainWindow::buildLeftsideBtn(QString bname,QString tipName){ + iconBtn->setFocusPolicy(Qt::NoFocus); + + +- QString iconHomePageBtnQss = QString("QPushButton{background: palette(button); border: none;}"); ++ QString iconHomePageBtnQss = QString("QPushButton{background: palette(window); border: none;}"); + QString iconBtnQss = QString("QPushButton:checked{background: palette(base); border: none;}" +- "QPushButton:!checked{background: palette(button); border: none;}"); ++ "QPushButton:!checked{background: palette(window); border: none;}"); + QString path = QString("://img/primaryleftmenu/%1.svg").arg(iname); + QPixmap pix = ImageUtil::loadSvg(path, "default"); + //单独设置HomePage按钮样式 +@@ -806,7 +814,7 @@ void MainWindow::initStyleSheet() { + closeBtn->setFlat(true); + closeBtn->installEventFilter(this); + +- ui->leftsidebarWidget->setStyleSheet("QWidget#leftsidebarWidget{background-color: palette(button);border: none; border-top-left-radius: 6px; border-bottom-left-radius: 6px;}"); ++ ui->leftsidebarWidget->setStyleSheet("QWidget#leftsidebarWidget{background-color: palette(window);border: none; border-top-left-radius: 6px; border-bottom-left-radius: 6px;}"); + + // 设置左上角按钮图标 + backBtn->setIcon(QIcon("://img/titlebar/back.svg")); +diff --git a/shell/mainwindow.h b/shell/mainwindow.h +index bb44d7e..d01158f 100755 +--- a/shell/mainwindow.h ++++ b/shell/mainwindow.h +@@ -88,6 +88,7 @@ private: + QPushButton * maxBtn; + QPushButton * closeBtn; + QLabel * titleLabel; ++ QLabel * mTitleIcon; + QTimer * timer; + QLabel * logoLabel; + QLabel *m_queryIcon; +diff --git a/shell/mainwindow.ui b/shell/mainwindow.ui +index e1d9b44..1a6cd22 100755 +--- a/shell/mainwindow.ui ++++ b/shell/mainwindow.ui +@@ -66,8 +66,8 @@ + 0 + + +- 3 +- ++ 0 ++ + + 30 + +diff --git a/shell/prescene.cpp b/shell/prescene.cpp +index 7451c2c..dd04531 100755 +--- a/shell/prescene.cpp ++++ b/shell/prescene.cpp +@@ -15,6 +15,14 @@ PreScene::PreScene(QLabel *label, QSize size, QWidget *parent) : titleLabel(labe + m_vlayout = new QVBoxLayout; + m_logoLayout = new QHBoxLayout; + ++ mTitleIcon = new QLabel(this); ++ QIcon titleIcon = QIcon::fromTheme("ukui-control-center"); ++ mTitleIcon->setPixmap(titleIcon.pixmap(titleIcon.actualSize(QSize(24, 24)))); ++ ++ mTitleIcon->setFixedSize(30, 30); ++ titleLabel->setFixedSize(28, 28); ++ ++ + titlebar = new QWidget(this); + logoLabel = new QLabel(this); + logoLabel->setFixedSize(200,200); +@@ -23,10 +31,14 @@ PreScene::PreScene(QLabel *label, QSize size, QWidget *parent) : titleLabel(labe + m_logoLayout->addWidget(logoLabel); + + m_hlayout = new QHBoxLayout; +- m_hlayout->setContentsMargins(9, 9, 9, 0); ++ m_hlayout->setContentsMargins(4, 6, 0, 0); ++ m_hlayout->addWidget(mTitleIcon); + m_hlayout->addWidget(titleLabel); ++ m_hlayout->addStretch(); + titlebar->setLayout(m_hlayout); + ++ m_vlayout->setSpacing(0); ++ m_vlayout->setContentsMargins(0, 0, 0, 0); + m_vlayout->addWidget(titlebar); + m_vlayout->addLayout(m_logoLayout); + m_vlayout->addStretch(); +diff --git a/shell/prescene.h b/shell/prescene.h +index 49e497a..d02650e 100755 +--- a/shell/prescene.h ++++ b/shell/prescene.h +@@ -23,6 +23,7 @@ private: + QVBoxLayout * m_vlayout; + QWidget * titlebar; + ++ QLabel * mTitleIcon; + QLabel * titleLabel; + QLabel * logoLabel; + QHBoxLayout * m_logoLayout = nullptr; +-- +2.23.0 + diff --git a/ukui-control-center.spec b/ukui-control-center.spec index 5c1301a..1f26180 100644 --- a/ukui-control-center.spec +++ b/ukui-control-center.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-control-center Version: 3.0.1 -Release: 11 +Release: 12 Summary: utilities to configure the UKUI desktop License: GPL-2+ URL: http://www.ukui.org @@ -81,6 +81,7 @@ patch8: 0008-fix-redeclaration-of-QStringList-usergroupList-in-ed.patch patch9: 0009-fix-layout-optimization.patch patch10:0010-Added-translation-using-Weblate-Tibetan.patch patch11:0011-power-add-sleep-function.patch +patch12:0012-window-add-title-icon.patch Recommends: qt5-qtquickcontrols @@ -113,6 +114,7 @@ Suggests: ukui-settings-daemon %patch9 -p1 %patch10 -p1 %patch11 -p1 +%patch12 -p1 %build qmake-qt5 @@ -156,6 +158,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/polkit-1/actions/org.ukui.groupmanager.policy %changelog +* Tue Jul 13 2021 tanyulong - 3.0.1-12 +- window add title icon + * Mon Jul 12 2021 tanyulong - 3.0.1-11 - power add sleep function -- Gitee From 45865de3e83a024408abce9c2aa364f935ccaab4 Mon Sep 17 00:00:00 2001 From: tanyulong2021 Date: Fri, 16 Jul 2021 14:27:17 +0800 Subject: [PATCH 09/11] fix failed to view remote desktop --- 0013-fix-failed-to-view-remote-desktop.patch | 238 +++++++++++++++++++ ukui-control-center.spec | 7 +- 2 files changed, 244 insertions(+), 1 deletion(-) create mode 100644 0013-fix-failed-to-view-remote-desktop.patch diff --git a/0013-fix-failed-to-view-remote-desktop.patch b/0013-fix-failed-to-view-remote-desktop.patch new file mode 100644 index 0000000..9b00d17 --- /dev/null +++ b/0013-fix-failed-to-view-remote-desktop.patch @@ -0,0 +1,238 @@ +From bd8712c40eedb0e5fa065f2619a52afc77885d42 Mon Sep 17 00:00:00 2001 +From: tanyulong +Date: Fri, 16 Jul 2021 14:17:00 +0800 +Subject: [PATCH] fix failed to view remote desktop + +--- + plugins/network/vino/sharemain.cpp | 71 ++++++++++++++++++++++++++---- + plugins/network/vino/sharemain.h | 6 +++ + plugins/network/vino/vino.cpp | 15 ++++--- + plugins/network/vino/vino.h | 1 + + 4 files changed, 79 insertions(+), 14 deletions(-) + +diff --git a/plugins/network/vino/sharemain.cpp b/plugins/network/vino/sharemain.cpp +index c80b9ec..5579c77 100755 +--- a/plugins/network/vino/sharemain.cpp ++++ b/plugins/network/vino/sharemain.cpp +@@ -18,6 +18,7 @@ + * + */ + #include "sharemain.h" ++#include + + #include + #include +@@ -41,6 +42,22 @@ void ShareMain::initUI() { + mShareTitleLabel = new QLabel(tr("Share"), this); + mShareTitleLabel->setStyleSheet("QLabel{font-size: 18px; color: palette(windowText);}"); + ++ mEnableFrame = new QFrame(this); ++ mEnableFrame->setFrameShape(QFrame::Shape::Box); ++ mEnableFrame->setMinimumSize(550, 50); ++ mEnableFrame->setMaximumSize(960, 50); ++ ++ QHBoxLayout * enableHLayout = new QHBoxLayout(); ++ ++ mEnableBox = new QCheckBox(this); ++ mEnableLabel = new QLabel(tr("Allow others to view your desktop"), this); ++ enableHLayout->addWidget(mEnableBox); ++ enableHLayout->addWidget(mEnableLabel); ++ enableHLayout->addStretch(); ++ ++ mEnableFrame->setLayout(enableHLayout); ++ ++ + mViewFrame = new QFrame(this); + mViewFrame->setFrameShape(QFrame::Shape::Box); + mViewFrame->setMinimumSize(550, 50); +@@ -49,7 +66,8 @@ void ShareMain::initUI() { + QHBoxLayout * viewHLayout = new QHBoxLayout(); + + mViewBox = new QCheckBox(this); +- mViewLabel = new QLabel(tr("Allow others to view your desktop"), this); ++ mViewLabel = new QLabel(tr("Allow connection to control screen"), this); ++ + viewHLayout->addWidget(mViewBox); + viewHLayout->addWidget(mViewLabel); + viewHLayout->addStretch(); +@@ -90,6 +108,7 @@ void ShareMain::initUI() { + mSecurityPwdFrame->setLayout(pwdHLayout); + + mVlayout->addWidget(mShareTitleLabel); ++ mVlayout->addWidget(mEnableFrame); + mVlayout->addWidget(mViewFrame); + + mVlayout->addWidget(mSecurityTitleLabel); +@@ -109,7 +128,14 @@ void ShareMain::initConnection() { + QByteArray id(kVinoSchemas); + if (QGSettings::isSchemaInstalled(id)) { + mVinoGsetting = new QGSettings(kVinoSchemas, QByteArray(), this); ++ ++ bool isShared = mVinoGsetting->get(kVinoViewOnlyKey).toBool(); ++ bool secPwd = mVinoGsetting->get(kVinoPromptKey).toBool(); + ++ initShareStatus(!isShared, secPwd); ++ initEnableStatus(); ++ ++ connect(mEnableBox, &QCheckBox::clicked, this, &ShareMain::enableSlot); + connect(mViewBox, &QCheckBox::clicked, this, &ShareMain::viewBoxSlot); + connect(mPwdLineEdit, &QLineEdit::textChanged, this, &ShareMain::pwdInputSlot); + connect(mBtnGroup, QOverload::of(&QButtonGroup::buttonClicked), +@@ -117,9 +143,6 @@ void ShareMain::initConnection() { + accessSlot(index); + }); + +- bool isShared = mVinoGsetting->get(kVinoViewOnlyKey).toBool(); +- bool secPwd = mVinoGsetting->get(kVinoPromptKey).toBool(); +- initShareStatus(!isShared, secPwd); + } + } + +@@ -132,11 +155,41 @@ void ShareMain::initShareStatus(bool isConnnect, bool isPwd) { + } + } + +-void ShareMain::viewBoxSlot(bool status) { +- Q_UNUSED(status); +- if (status) { +- mVinoGsetting->set(kVinoViewOnlyKey, status); ++void ShareMain::initEnableStatus() { ++ QProcess *process = new QProcess; ++ ++ process->start("systemctl", QStringList() << "--user" << "is-active" << "vino-server.service"); ++ process->waitForFinished(); ++ setFrameVisible((process->readAllStandardOutput().replace("\n","") == "active")); ++ ++ process->close(); ++} ++ ++void ShareMain::setFrameVisible(bool visible) { ++ mEnableBox->setChecked(visible); ++ ++ mViewFrame->setVisible(visible); ++ mSecurityFrame->setVisible(visible); ++ mSecurityPwdFrame->setVisible(visible); ++ mSecurityTitleLabel->setVisible(visible); ++} ++ ++void ShareMain::enableSlot(bool status) { ++ QProcess process; ++ QString cmd; ++ ++ if(status) { ++ cmd = "start"; ++ } else { ++ cmd = "stop"; + } ++ process.startDetached("systemctl", QStringList() << "--user" << cmd << "vino-server.service"); ++ ++ setFrameVisible(status); ++} ++ ++void ShareMain::viewBoxSlot(bool status) { ++ mVinoGsetting->set(kVinoViewOnlyKey, !status); + } + + void ShareMain::accessSlot(int index) { +@@ -151,7 +204,7 @@ void ShareMain::accessSlot(int index) { + mPwdsLabel->setEnabled(true); + mPwdLineEdit->setEnabled(true); + mVinoGsetting->set(kVinoPromptKey, false); +- mVinoGsetting->reset(kAuthenticationKey), 'vnc'; ++ mVinoGsetting->reset(kAuthenticationKey); + } + } + +diff --git a/plugins/network/vino/sharemain.h b/plugins/network/vino/sharemain.h +index e7681c9..49697c4 100755 +--- a/plugins/network/vino/sharemain.h ++++ b/plugins/network/vino/sharemain.h +@@ -51,6 +51,7 @@ public: + ~ShareMain(); + + private: ++ QFrame * mEnableFrame; + QFrame * mViewFrame; + QFrame * mSecurityFrame; + QFrame * mSecurityPwdFrame; +@@ -58,6 +59,7 @@ private: + QFrame * mNoticeOFrame; + QFrame * mNoticeNFrame; + ++ QCheckBox * mEnableBox; + QCheckBox * mViewBox; + QRadioButton * mAccessBox; + QRadioButton * mPwdBox; +@@ -67,6 +69,7 @@ private: + QRadioButton * mNoticeNBtn; + + QLabel * mShareTitleLabel; ++ QLabel * mEnableLabel; + QLabel * mViewLabel; + QLabel * mSecurityTitleLabel; + QLabel * mAccessLabel; +@@ -87,8 +90,11 @@ private: + void initUI(); + void initConnection(); + void initShareStatus(bool isConnnect, bool isPwd); ++ void initEnableStatus(); ++ void setFrameVisible(bool visible); + + private slots: ++ void enableSlot(bool status); + void viewBoxSlot(bool status); + void accessSlot(int index); + void pwdInputSlot(QString pwd); +diff --git a/plugins/network/vino/vino.cpp b/plugins/network/vino/vino.cpp +index 504b6e0..dc16312 100755 +--- a/plugins/network/vino/vino.cpp ++++ b/plugins/network/vino/vino.cpp +@@ -20,16 +20,15 @@ + #include "vino.h" + #include "ui_vino.h" + +-Vino::Vino() : ui(new Ui::Vino) { +- pluginWidget = new ShareMain; +- ui->setupUi(pluginWidget); +- ++Vino::Vino() : ui(new Ui::Vino), mFirstLoad(true) { + pluginName = tr("Vino"); + pluginType = NETWORK; + } + + Vino::~Vino() { +- delete ui; ++ if (!mFirstLoad) { ++ delete ui; ++ } + } + + QString Vino::get_plugin_name() { +@@ -41,6 +40,12 @@ int Vino::get_plugin_type() { + } + + QWidget *Vino::get_plugin_ui() { ++ if (mFirstLoad) { ++ mFirstLoad = false; ++ pluginWidget = new ShareMain; ++ ui->setupUi(pluginWidget); ++ } ++ + return pluginWidget; + } + +diff --git a/plugins/network/vino/vino.h b/plugins/network/vino/vino.h +index 272fa0d..6ea603f 100755 +--- a/plugins/network/vino/vino.h ++++ b/plugins/network/vino/vino.h +@@ -52,6 +52,7 @@ private: + QString pluginName; + int pluginType; + ShareMain* pluginWidget; ++ bool mFirstLoad; + + }; + #endif // VINO_H +-- +2.23.0 + diff --git a/ukui-control-center.spec b/ukui-control-center.spec index 1f26180..1d051d8 100644 --- a/ukui-control-center.spec +++ b/ukui-control-center.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-control-center Version: 3.0.1 -Release: 12 +Release: 13 Summary: utilities to configure the UKUI desktop License: GPL-2+ URL: http://www.ukui.org @@ -82,6 +82,7 @@ patch9: 0009-fix-layout-optimization.patch patch10:0010-Added-translation-using-Weblate-Tibetan.patch patch11:0011-power-add-sleep-function.patch patch12:0012-window-add-title-icon.patch +patch13:0013-fix-failed-to-view-remote-desktop.patch Recommends: qt5-qtquickcontrols @@ -115,6 +116,7 @@ Suggests: ukui-settings-daemon %patch10 -p1 %patch11 -p1 %patch12 -p1 +%patch13 -p1 %build qmake-qt5 @@ -158,6 +160,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/polkit-1/actions/org.ukui.groupmanager.policy %changelog +* Fri Jul 16 2021 tanyulong - 3.0.1-13 +- fix failed to view remote desktop + * Tue Jul 13 2021 tanyulong - 3.0.1-12 - window add title icon -- Gitee From 532860db2c5093e2333506b0714588e123949322 Mon Sep 17 00:00:00 2001 From: tanyulong2021 Date: Thu, 29 Jul 2021 20:03:47 +0800 Subject: [PATCH 10/11] fix compile build error --- 0001-fix-compile-extern-C-error.patch | 32 +++ 0013-fix-failed-to-view-remote-desktop.patch | 238 ------------------- ukui-control-center.spec | 7 +- 3 files changed, 37 insertions(+), 240 deletions(-) create mode 100644 0001-fix-compile-extern-C-error.patch delete mode 100644 0013-fix-failed-to-view-remote-desktop.patch diff --git a/0001-fix-compile-extern-C-error.patch b/0001-fix-compile-extern-C-error.patch new file mode 100644 index 0000000..d91aeae --- /dev/null +++ b/0001-fix-compile-extern-C-error.patch @@ -0,0 +1,32 @@ +From 32fe5a8b9b8e31e396e52a8121fb1286f838e39a Mon Sep 17 00:00:00 2001 +From: tanyulong +Date: Thu, 29 Jul 2021 19:46:40 +0800 +Subject: [PATCH] fix compile extern C error + +--- + plugins/account/userinfo/run-passwd.cpp | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/plugins/account/userinfo/run-passwd.cpp b/plugins/account/userinfo/run-passwd.cpp +index 6407929..80da0d0 100755 +--- a/plugins/account/userinfo/run-passwd.cpp ++++ b/plugins/account/userinfo/run-passwd.cpp +@@ -7,7 +7,6 @@ + #undef signals + #endif + +-extern "C" { + #include + #include + +@@ -16,7 +15,6 @@ extern "C" { + #include + #include + +-} + + #include "run-passwd.h" + +-- +2.27.0 + diff --git a/0013-fix-failed-to-view-remote-desktop.patch b/0013-fix-failed-to-view-remote-desktop.patch deleted file mode 100644 index 9b00d17..0000000 --- a/0013-fix-failed-to-view-remote-desktop.patch +++ /dev/null @@ -1,238 +0,0 @@ -From bd8712c40eedb0e5fa065f2619a52afc77885d42 Mon Sep 17 00:00:00 2001 -From: tanyulong -Date: Fri, 16 Jul 2021 14:17:00 +0800 -Subject: [PATCH] fix failed to view remote desktop - ---- - plugins/network/vino/sharemain.cpp | 71 ++++++++++++++++++++++++++---- - plugins/network/vino/sharemain.h | 6 +++ - plugins/network/vino/vino.cpp | 15 ++++--- - plugins/network/vino/vino.h | 1 + - 4 files changed, 79 insertions(+), 14 deletions(-) - -diff --git a/plugins/network/vino/sharemain.cpp b/plugins/network/vino/sharemain.cpp -index c80b9ec..5579c77 100755 ---- a/plugins/network/vino/sharemain.cpp -+++ b/plugins/network/vino/sharemain.cpp -@@ -18,6 +18,7 @@ - * - */ - #include "sharemain.h" -+#include - - #include - #include -@@ -41,6 +42,22 @@ void ShareMain::initUI() { - mShareTitleLabel = new QLabel(tr("Share"), this); - mShareTitleLabel->setStyleSheet("QLabel{font-size: 18px; color: palette(windowText);}"); - -+ mEnableFrame = new QFrame(this); -+ mEnableFrame->setFrameShape(QFrame::Shape::Box); -+ mEnableFrame->setMinimumSize(550, 50); -+ mEnableFrame->setMaximumSize(960, 50); -+ -+ QHBoxLayout * enableHLayout = new QHBoxLayout(); -+ -+ mEnableBox = new QCheckBox(this); -+ mEnableLabel = new QLabel(tr("Allow others to view your desktop"), this); -+ enableHLayout->addWidget(mEnableBox); -+ enableHLayout->addWidget(mEnableLabel); -+ enableHLayout->addStretch(); -+ -+ mEnableFrame->setLayout(enableHLayout); -+ -+ - mViewFrame = new QFrame(this); - mViewFrame->setFrameShape(QFrame::Shape::Box); - mViewFrame->setMinimumSize(550, 50); -@@ -49,7 +66,8 @@ void ShareMain::initUI() { - QHBoxLayout * viewHLayout = new QHBoxLayout(); - - mViewBox = new QCheckBox(this); -- mViewLabel = new QLabel(tr("Allow others to view your desktop"), this); -+ mViewLabel = new QLabel(tr("Allow connection to control screen"), this); -+ - viewHLayout->addWidget(mViewBox); - viewHLayout->addWidget(mViewLabel); - viewHLayout->addStretch(); -@@ -90,6 +108,7 @@ void ShareMain::initUI() { - mSecurityPwdFrame->setLayout(pwdHLayout); - - mVlayout->addWidget(mShareTitleLabel); -+ mVlayout->addWidget(mEnableFrame); - mVlayout->addWidget(mViewFrame); - - mVlayout->addWidget(mSecurityTitleLabel); -@@ -109,7 +128,14 @@ void ShareMain::initConnection() { - QByteArray id(kVinoSchemas); - if (QGSettings::isSchemaInstalled(id)) { - mVinoGsetting = new QGSettings(kVinoSchemas, QByteArray(), this); -+ -+ bool isShared = mVinoGsetting->get(kVinoViewOnlyKey).toBool(); -+ bool secPwd = mVinoGsetting->get(kVinoPromptKey).toBool(); - -+ initShareStatus(!isShared, secPwd); -+ initEnableStatus(); -+ -+ connect(mEnableBox, &QCheckBox::clicked, this, &ShareMain::enableSlot); - connect(mViewBox, &QCheckBox::clicked, this, &ShareMain::viewBoxSlot); - connect(mPwdLineEdit, &QLineEdit::textChanged, this, &ShareMain::pwdInputSlot); - connect(mBtnGroup, QOverload::of(&QButtonGroup::buttonClicked), -@@ -117,9 +143,6 @@ void ShareMain::initConnection() { - accessSlot(index); - }); - -- bool isShared = mVinoGsetting->get(kVinoViewOnlyKey).toBool(); -- bool secPwd = mVinoGsetting->get(kVinoPromptKey).toBool(); -- initShareStatus(!isShared, secPwd); - } - } - -@@ -132,11 +155,41 @@ void ShareMain::initShareStatus(bool isConnnect, bool isPwd) { - } - } - --void ShareMain::viewBoxSlot(bool status) { -- Q_UNUSED(status); -- if (status) { -- mVinoGsetting->set(kVinoViewOnlyKey, status); -+void ShareMain::initEnableStatus() { -+ QProcess *process = new QProcess; -+ -+ process->start("systemctl", QStringList() << "--user" << "is-active" << "vino-server.service"); -+ process->waitForFinished(); -+ setFrameVisible((process->readAllStandardOutput().replace("\n","") == "active")); -+ -+ process->close(); -+} -+ -+void ShareMain::setFrameVisible(bool visible) { -+ mEnableBox->setChecked(visible); -+ -+ mViewFrame->setVisible(visible); -+ mSecurityFrame->setVisible(visible); -+ mSecurityPwdFrame->setVisible(visible); -+ mSecurityTitleLabel->setVisible(visible); -+} -+ -+void ShareMain::enableSlot(bool status) { -+ QProcess process; -+ QString cmd; -+ -+ if(status) { -+ cmd = "start"; -+ } else { -+ cmd = "stop"; - } -+ process.startDetached("systemctl", QStringList() << "--user" << cmd << "vino-server.service"); -+ -+ setFrameVisible(status); -+} -+ -+void ShareMain::viewBoxSlot(bool status) { -+ mVinoGsetting->set(kVinoViewOnlyKey, !status); - } - - void ShareMain::accessSlot(int index) { -@@ -151,7 +204,7 @@ void ShareMain::accessSlot(int index) { - mPwdsLabel->setEnabled(true); - mPwdLineEdit->setEnabled(true); - mVinoGsetting->set(kVinoPromptKey, false); -- mVinoGsetting->reset(kAuthenticationKey), 'vnc'; -+ mVinoGsetting->reset(kAuthenticationKey); - } - } - -diff --git a/plugins/network/vino/sharemain.h b/plugins/network/vino/sharemain.h -index e7681c9..49697c4 100755 ---- a/plugins/network/vino/sharemain.h -+++ b/plugins/network/vino/sharemain.h -@@ -51,6 +51,7 @@ public: - ~ShareMain(); - - private: -+ QFrame * mEnableFrame; - QFrame * mViewFrame; - QFrame * mSecurityFrame; - QFrame * mSecurityPwdFrame; -@@ -58,6 +59,7 @@ private: - QFrame * mNoticeOFrame; - QFrame * mNoticeNFrame; - -+ QCheckBox * mEnableBox; - QCheckBox * mViewBox; - QRadioButton * mAccessBox; - QRadioButton * mPwdBox; -@@ -67,6 +69,7 @@ private: - QRadioButton * mNoticeNBtn; - - QLabel * mShareTitleLabel; -+ QLabel * mEnableLabel; - QLabel * mViewLabel; - QLabel * mSecurityTitleLabel; - QLabel * mAccessLabel; -@@ -87,8 +90,11 @@ private: - void initUI(); - void initConnection(); - void initShareStatus(bool isConnnect, bool isPwd); -+ void initEnableStatus(); -+ void setFrameVisible(bool visible); - - private slots: -+ void enableSlot(bool status); - void viewBoxSlot(bool status); - void accessSlot(int index); - void pwdInputSlot(QString pwd); -diff --git a/plugins/network/vino/vino.cpp b/plugins/network/vino/vino.cpp -index 504b6e0..dc16312 100755 ---- a/plugins/network/vino/vino.cpp -+++ b/plugins/network/vino/vino.cpp -@@ -20,16 +20,15 @@ - #include "vino.h" - #include "ui_vino.h" - --Vino::Vino() : ui(new Ui::Vino) { -- pluginWidget = new ShareMain; -- ui->setupUi(pluginWidget); -- -+Vino::Vino() : ui(new Ui::Vino), mFirstLoad(true) { - pluginName = tr("Vino"); - pluginType = NETWORK; - } - - Vino::~Vino() { -- delete ui; -+ if (!mFirstLoad) { -+ delete ui; -+ } - } - - QString Vino::get_plugin_name() { -@@ -41,6 +40,12 @@ int Vino::get_plugin_type() { - } - - QWidget *Vino::get_plugin_ui() { -+ if (mFirstLoad) { -+ mFirstLoad = false; -+ pluginWidget = new ShareMain; -+ ui->setupUi(pluginWidget); -+ } -+ - return pluginWidget; - } - -diff --git a/plugins/network/vino/vino.h b/plugins/network/vino/vino.h -index 272fa0d..6ea603f 100755 ---- a/plugins/network/vino/vino.h -+++ b/plugins/network/vino/vino.h -@@ -52,6 +52,7 @@ private: - QString pluginName; - int pluginType; - ShareMain* pluginWidget; -+ bool mFirstLoad; - - }; - #endif // VINO_H --- -2.23.0 - diff --git a/ukui-control-center.spec b/ukui-control-center.spec index 1d051d8..bcacb97 100644 --- a/ukui-control-center.spec +++ b/ukui-control-center.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-control-center Version: 3.0.1 -Release: 13 +Release: 14 Summary: utilities to configure the UKUI desktop License: GPL-2+ URL: http://www.ukui.org @@ -82,7 +82,7 @@ patch9: 0009-fix-layout-optimization.patch patch10:0010-Added-translation-using-Weblate-Tibetan.patch patch11:0011-power-add-sleep-function.patch patch12:0012-window-add-title-icon.patch -patch13:0013-fix-failed-to-view-remote-desktop.patch +patch13:0001-fix-compile-extern-C-error.patch Recommends: qt5-qtquickcontrols @@ -160,6 +160,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/polkit-1/actions/org.ukui.groupmanager.policy %changelog +* Tue Jul 29 2021 tanyulong - 3.0.1-14 +- solve compile build error + * Fri Jul 16 2021 tanyulong - 3.0.1-13 - fix failed to view remote desktop -- Gitee From 7a3dc4aec4516327d1caf758383949ce72825b33 Mon Sep 17 00:00:00 2001 From: dou33 Date: Thu, 2 Sep 2021 09:33:15 +0800 Subject: [PATCH 11/11] fix arm version root user crash --- fix_arm_root_user_crash.patch | 26 ++++++++++++++++++++++++++ ukui-control-center.spec | 17 +++++++++++------ 2 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 fix_arm_root_user_crash.patch diff --git a/fix_arm_root_user_crash.patch b/fix_arm_root_user_crash.patch new file mode 100644 index 0000000..197152f --- /dev/null +++ b/fix_arm_root_user_crash.patch @@ -0,0 +1,26 @@ +diff -Naur ukui-control-center-3.0.1/plugins/system/display/display.cpp ukui-control-center-3.0.1~/plugins/system/display/display.cpp +--- ukui-control-center-3.0.1/plugins/system/display/display.cpp 2021-09-01 16:38:36.839491260 +0800 ++++ ukui-control-center-3.0.1~/plugins/system/display/display.cpp 2021-09-01 16:42:42.542192296 +0800 +@@ -29,6 +29,10 @@ + #include + + DisplaySet::DisplaySet(){ ++ mFirstLoad = true; ++ //make sure backend start ++ requestBackend(); ++ + pluginWidget = new Widget; + pluginName = tr("Display"); + QObject::connect(new KScreen::GetConfigOperation(), &KScreen::GetConfigOperation::finished, +@@ -87,8 +91,9 @@ + QString output = process.readAll(); + output = output.simplified(); + +- QString command = "/usr/lib/" + output + "-linux-gnu" +"/libexec/kf5/kscreen_backend_launcher"; +- QProcess::startDetached(command); ++ //QString command = "/usr/lib/" + output + "-linux-gnu" +"/libexec/kf5/kscreen_backend_launcher"; ++ QString command = "/usr/libexec/kf5/kscreen_backend_launcher"; ++ QProcess::startDetached(command); + } + } + diff --git a/ukui-control-center.spec b/ukui-control-center.spec index bcacb97..b228a84 100644 --- a/ukui-control-center.spec +++ b/ukui-control-center.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: ukui-control-center Version: 3.0.1 -Release: 14 +Release: 15 Summary: utilities to configure the UKUI desktop License: GPL-2+ URL: http://www.ukui.org @@ -79,10 +79,11 @@ patch6: 0006-fix-Group-members-are-not-displayed.patch patch7: 0007-fix-vnc-crashed.patch patch8: 0008-fix-redeclaration-of-QStringList-usergroupList-in-ed.patch patch9: 0009-fix-layout-optimization.patch -patch10:0010-Added-translation-using-Weblate-Tibetan.patch -patch11:0011-power-add-sleep-function.patch -patch12:0012-window-add-title-icon.patch -patch13:0001-fix-compile-extern-C-error.patch +patch10: 0010-Added-translation-using-Weblate-Tibetan.patch +patch11: 0011-power-add-sleep-function.patch +patch12: 0012-window-add-title-icon.patch +patch13: 0001-fix-compile-extern-C-error.patch +patch14: fix_arm_root_user_crash.patch Recommends: qt5-qtquickcontrols @@ -117,6 +118,7 @@ Suggests: ukui-settings-daemon %patch11 -p1 %patch12 -p1 %patch13 -p1 +%patch14 -p1 %build qmake-qt5 @@ -160,7 +162,10 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/polkit-1/actions/org.ukui.groupmanager.policy %changelog -* Tue Jul 29 2021 tanyulong - 3.0.1-14 +* Wed Sep 1 2021 douyan - 3.0.1-15 +- fix arm verion root user open ukui-control-center crash issue + +* Thu Jul 29 2021 tanyulong - 3.0.1-14 - solve compile build error * Fri Jul 16 2021 tanyulong - 3.0.1-13 -- Gitee