diff --git a/0001-fix-auth-Verify-the-current-password-when-logging-fe.patch b/0001-fix-auth-Verify-the-current-password-when-logging-fe.patch deleted file mode 100644 index 1d1d0a7..0000000 --- a/0001-fix-auth-Verify-the-current-password-when-logging-fe.patch +++ /dev/null @@ -1,815 +0,0 @@ -From 7fe0be8d4bca4bc59f755bc2ec521b0c750e95b0 Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Mon, 29 May 2023 20:12:06 +0800 -Subject: [PATCH 1/3] fix(auth): Verify the current password when logging - features -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 录入特征时,校验当前密码 - -Closes #I795QI ---- - CMakeLists.txt | 1 + - .../input-dialog/input-dialog.cpp | 45 ++++--- - .../input-dialog/input-dialog.h | 20 ++-- - plugins/authentication/CMakeLists.txt | 1 + - .../authentication/src/checkpasswd-dialog.cpp | 110 ++++++++++++++++++ - ...n-rename-dialog.h => checkpasswd-dialog.h} | 28 +---- - .../src/identification-rename-dialog.cpp | 108 ----------------- - .../src/pages/face/face-page.cpp | 2 +- - .../src/pages/finger/finger-page.cpp | 3 +- - .../src/pages/iris/iris-page.cpp | 2 +- - .../src/pages/ukey/ukey-page.cpp | 11 +- - .../src/widgets/general-bio-page.cpp | 44 +++++-- - .../src/widgets/general-bio-page.h | 5 +- - .../kiran-cpanel-authentication.zh_CN.ts | 27 ++++- - translations/kiran-control-panel.zh_CN.ts | 26 +++++ - 15 files changed, 254 insertions(+), 179 deletions(-) - rename plugins/authentication/src/ukey-pin-input-dialog.cpp => lib/common-widgets/input-dialog/input-dialog.cpp (74%) - rename plugins/authentication/src/ukey-pin-input-dialog.h => lib/common-widgets/input-dialog/input-dialog.h (72%) - create mode 100644 plugins/authentication/src/checkpasswd-dialog.cpp - rename plugins/authentication/src/{identification-rename-dialog.h => checkpasswd-dialog.h} (51%) - delete mode 100644 plugins/authentication/src/identification-rename-dialog.cpp - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index f5b2cce..bdffa50 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -41,6 +41,7 @@ configure_file(${CMAKE_SOURCE_DIR}/data/${PROJECT_NAME}.pc.in ${CMAKE_BINARY_DIR - - file(GLOB_RECURSE INCLUDE_SRC "./include/*") - file(GLOB_RECURSE CONTROL_PANEL_SRC "./src/*") -+file(GLOB_RECURSE LIB_SRC "./lib/*") - set(RESOURCE ./resources/control-panel-resources.qrc) #资源文件名不能与插件资源名相同,否则会导致插件中部分图片无法正常加载显示。 - - file(GLOB TS_FILES "translations/*.ts") -diff --git a/plugins/authentication/src/ukey-pin-input-dialog.cpp b/lib/common-widgets/input-dialog/input-dialog.cpp -similarity index 74% -rename from plugins/authentication/src/ukey-pin-input-dialog.cpp -rename to lib/common-widgets/input-dialog/input-dialog.cpp -index 312043b..e7305c3 100644 ---- a/plugins/authentication/src/ukey-pin-input-dialog.cpp -+++ b/lib/common-widgets/input-dialog/input-dialog.cpp -@@ -1,16 +1,15 @@ --#include "ukey-pin-input-dialog.h" -+#include "input-dialog.h" - #include --#include - #include -+#include - #include - #include - #include - #include - #include - #include --#include "utils/kiran-auth-dbus-proxy.h" - --UKeyPinCodeDialog::UKeyPinCodeDialog(QWidget* parent) -+InputDialog::InputDialog(QWidget* parent) - : KiranTitlebarWindow(parent,Qt::Dialog), - m_success(false) - { -@@ -18,31 +17,42 @@ UKeyPinCodeDialog::UKeyPinCodeDialog(QWidget* parent) - initUI(); - } - --UKeyPinCodeDialog::~UKeyPinCodeDialog() -+InputDialog::~InputDialog() - { - } - --QString UKeyPinCodeDialog::getPinCode() -+QString InputDialog::getText() - { - return m_edit->lineEdit()->text(); - } - --int UKeyPinCodeDialog::exec() -+void InputDialog::setDesc(const QString&desc) -+{ -+ m_labelDesc->setText(desc); -+} -+ -+void InputDialog::setInputMode(QLineEdit::EchoMode mode,qint32 maxLength) -+{ -+ m_edit->setEchoMode(mode); -+ m_edit->lineEdit()->setMaxLength(maxLength); -+} -+ -+int InputDialog::exec() - { - QEventLoop loop; -- connect(this, &UKeyPinCodeDialog::completed, &loop, &QEventLoop::quit); -+ connect(this, &InputDialog::completed, &loop, &QEventLoop::quit); - this->show(); - loop.exec(QEventLoop::DialogExec); - return m_success; - } - --void UKeyPinCodeDialog::closeEvent(QCloseEvent* event) -+void InputDialog::closeEvent(QCloseEvent* event) - { -- emit completed(QPrivateSignal()); -+ emit completed(); - return KiranTitlebarWindow::closeEvent(event); - } - --void UKeyPinCodeDialog::onConfirmClicked() -+void InputDialog::onConfirmClicked() - { - QString text = m_edit->lineEdit()->text(); - if (text.isEmpty()) -@@ -50,15 +60,14 @@ void UKeyPinCodeDialog::onConfirmClicked() - return; - } - m_success = true; -- emit completed(QPrivateSignal()); -+ emit completed(); - } - --void UKeyPinCodeDialog::initUI() -+void InputDialog::initUI() - { - setTitlebarColorBlockEnable(true); - setButtonHints(TitlebarCloseButtonHint); - setResizeable(false); -- setTitle(tr("UKey Enroll")); - - auto container = new QWidget(this); - auto containerLayout = new QBoxLayout(QBoxLayout::TopToBottom, container); -@@ -71,8 +80,8 @@ void UKeyPinCodeDialog::initUI() - auto layout = new QBoxLayout(QBoxLayout::TopToBottom, colorBlock); - layout->setContentsMargins(24, 24, 24, 24); - -- auto label = new QLabel(tr("Please enter the ukey pin code"), this); -- layout->addWidget(label); -+ m_labelDesc = new QLabel(this); -+ layout->addWidget(m_labelDesc); - - layout->addSpacerItem(new QSpacerItem(10, 16, QSizePolicy::Minimum, QSizePolicy::Fixed)); - -@@ -92,7 +101,7 @@ void UKeyPinCodeDialog::initUI() - confirmButton->setFixedSize(QSize(110, 40)); - confirmButton->setText(tr("Confirm")); - Kiran::StylePropertyHelper::setButtonType(confirmButton, Kiran::BUTTON_Default); -- connect(confirmButton, &QPushButton::clicked, this, &UKeyPinCodeDialog::onConfirmClicked); -+ connect(confirmButton, &QPushButton::clicked, this, &InputDialog::onConfirmClicked); - boxlayout->addWidget(confirmButton); - - boxlayout->addSpacerItem(new QSpacerItem(40, 10, QSizePolicy::Fixed, QSizePolicy::Minimum)); -@@ -101,7 +110,7 @@ void UKeyPinCodeDialog::initUI() - cancelButton->setFixedSize(QSize(110, 40)); - cancelButton->setText(tr("Cancel")); - connect(cancelButton, &QPushButton::clicked, this, [this]() -- { emit completed(QPrivateSignal()); }); -+ { emit completed(); }); - boxlayout->addWidget(cancelButton); - - boxlayout->addStretch(); -diff --git a/plugins/authentication/src/ukey-pin-input-dialog.h b/lib/common-widgets/input-dialog/input-dialog.h -similarity index 72% -rename from plugins/authentication/src/ukey-pin-input-dialog.h -rename to lib/common-widgets/input-dialog/input-dialog.h -index 064577d..39e1cd1 100644 ---- a/plugins/authentication/src/ukey-pin-input-dialog.h -+++ b/lib/common-widgets/input-dialog/input-dialog.h -@@ -13,21 +13,24 @@ - */ - #pragma once - #include -+#include - --class KiranAuthDBusProxy; - class KiranPasswdEdit; --class UKeyPinCodeDialog : public KiranTitlebarWindow -+class QLabel; -+class InputDialog : public KiranTitlebarWindow - { - Q_OBJECT - public: -- UKeyPinCodeDialog(QWidget* parent = nullptr); -- ~UKeyPinCodeDialog(); -+ InputDialog(QWidget* parent = nullptr); -+ ~InputDialog(); - -- QString getPinCode(); -- int exec(); -+ void setDesc(const QString&desc); -+ void setInputMode(QLineEdit::EchoMode mode,qint32 maxLength); -+ virtual int exec(); - -+ QString getText(); - signals: -- void completed(QPrivateSignal); -+ void completed(); - - private: - virtual void closeEvent(QCloseEvent* event) override; -@@ -38,7 +41,6 @@ private: - - private: - bool m_success; -+ QLabel* m_labelDesc; - KiranPasswdEdit* m_edit; -- QString m_iid; -- KiranAuthDBusProxy* m_proxy; - }; -\ No newline at end of file -diff --git a/plugins/authentication/CMakeLists.txt b/plugins/authentication/CMakeLists.txt -index d86b032..952df96 100644 ---- a/plugins/authentication/CMakeLists.txt -+++ b/plugins/authentication/CMakeLists.txt -@@ -41,6 +41,7 @@ target_link_libraries(${TARGET_NAME} - Qt5::Widgets - Qt5::DBus - Qt5::Svg -+ pam - ${KIRAN_WIDGETS_LIBRARIES} - ${KLOG_LIBRARIES} - ${KIRAN_STYLE_LIBRARIES} -diff --git a/plugins/authentication/src/checkpasswd-dialog.cpp b/plugins/authentication/src/checkpasswd-dialog.cpp -new file mode 100644 -index 0000000..f116966 ---- /dev/null -+++ b/plugins/authentication/src/checkpasswd-dialog.cpp -@@ -0,0 +1,110 @@ -+#include "checkpasswd-dialog.h" -+#include -+#include -+#include -+#include -+ -+int conv_func(int num_msg, const struct pam_message **msg, -+ struct pam_response **resp, void *appdata_ptr) -+{ -+ struct pam_response *reply = NULL; -+ int ret; -+ int replies; -+ char *passwd = (char *)appdata_ptr; -+ -+ ///分配回复包 -+ reply = (struct pam_response *)calloc(num_msg, sizeof(*reply)); -+ if (reply == nullptr) -+ { -+ return PAM_CONV_ERR; -+ } -+ -+ ret = PAM_SUCCESS; -+ //给每个ECHO_OFF消息填充密码,若出现ECHO_ON消息认证失败,释放 -+ for (replies = 0; replies < num_msg && ret == PAM_SUCCESS; replies++) -+ { -+ if (msg[replies]->msg_style == PAM_PROMPT_ECHO_ON) -+ { -+ goto failed; -+ } -+ reply[replies].resp = new char[strlen(passwd) + 1](); -+ strcpy(reply[replies].resp, passwd); -+ reply[replies].resp_retcode = PAM_SUCCESS; -+ } -+ *resp = reply; -+ return PAM_SUCCESS; -+ -+failed: -+ ///释放之前分配的内存 -+ for (int i = 0; i < replies; i++) -+ { -+ if (reply[i].resp != nullptr) -+ { -+ delete reply[i].resp; -+ } -+ } -+ free(reply); -+ return PAM_CONV_ERR; -+} -+ -+void no_fail_delay(int status, unsigned int delay, void *appdata_ptr) -+{ -+} -+ -+bool _checkUserPassword(const QString &user, const QString &pwd) -+{ -+ KLOG_DEBUG() << "start check user passwd"; -+ std::string sPwd = pwd.toStdString(); -+ struct pam_conv conv = { -+ &conv_func, -+ (void *)sPwd.c_str()}; -+ -+ pam_handle *handler; -+ int res; -+ -+ res = pam_start("password-auth", user.toStdString().c_str(), -+ &conv, -+ &handler); -+ -+ pam_set_item(handler, PAM_FAIL_DELAY, (void *)no_fail_delay); -+ -+ res = pam_authenticate(handler, 0); -+ if (res != PAM_SUCCESS) -+ { -+ KLOG_DEBUG() << "check user passwd:"<< pam_strerror(handler, res) << res; -+ } -+ -+ pam_end(handler, res); -+ KLOG_DEBUG() << "end check user passwd"; -+ return res == PAM_SUCCESS; -+} -+ -+QString getCurrentUser() -+{ -+ auto pwd = getpwuid(getuid()); -+ return pwd?pwd->pw_name:""; -+} -+ -+CheckpasswdDialog::CheckpasswdDialog(QWidget* parent) -+ :InputDialog(parent) -+{ -+ setTitle(tr("Check password")); -+ setDesc(tr("Check the current password before you enroll the feature")); -+ setInputMode(QLineEdit::Password,32); -+} -+ -+CheckpasswdDialog::~CheckpasswdDialog() -+{ -+ -+} -+ -+bool CheckpasswdDialog::checkPasswd(const QString& passwd) -+{ -+ auto currentUser = getCurrentUser(); -+ if( currentUser.isEmpty() ) -+ { -+ return false; -+ } -+ -+ return _checkUserPassword(currentUser,passwd); -+} -\ No newline at end of file -diff --git a/plugins/authentication/src/identification-rename-dialog.h b/plugins/authentication/src/checkpasswd-dialog.h -similarity index 51% -rename from plugins/authentication/src/identification-rename-dialog.h -rename to plugins/authentication/src/checkpasswd-dialog.h -index f692fb9..f482345 100644 ---- a/plugins/authentication/src/identification-rename-dialog.h -+++ b/plugins/authentication/src/checkpasswd-dialog.h -@@ -12,32 +12,14 @@ - * Author: liuxinhao - */ - #pragma once --#include -+#include "input-dialog/input-dialog.h" - --class KiranAuthDBusProxy; --class QLineEdit; --class IdentificationRenameDialog : public KiranTitlebarWindow -+class CheckpasswdDialog:public InputDialog - { - Q_OBJECT - public: -- IdentificationRenameDialog(const QString& iid, KiranAuthDBusProxy* proxy, QWidget* parent = nullptr); -- ~IdentificationRenameDialog(); -+ CheckpasswdDialog(QWidget* parent = nullptr); -+ ~CheckpasswdDialog(); - -- int exec(); -- --signals: -- void completed(QPrivateSignal); -- --private: -- virtual void closeEvent(QCloseEvent* event) override; -- Q_INVOKABLE void onConfirmClicked(); -- --private: -- void initUI(); -- --private: -- bool m_success; -- QLineEdit* m_edit; -- QString m_iid; -- KiranAuthDBusProxy* m_proxy; -+ static bool checkPasswd(const QString& passwd); - }; -\ No newline at end of file -diff --git a/plugins/authentication/src/identification-rename-dialog.cpp b/plugins/authentication/src/identification-rename-dialog.cpp -deleted file mode 100644 -index a554283..0000000 ---- a/plugins/authentication/src/identification-rename-dialog.cpp -+++ /dev/null -@@ -1,108 +0,0 @@ --#include "identification-rename-dialog.h" --#include --#include --#include --#include --#include --#include --#include --#include --#include "utils/kiran-auth-dbus-proxy.h" -- --IdentificationRenameDialog::IdentificationRenameDialog(const QString& iid, KiranAuthDBusProxy* proxy, QWidget* parent) -- : KiranTitlebarWindow(parent,Qt::Dialog), -- m_iid(iid), -- m_proxy(proxy), -- m_success(false) --{ -- setAttribute(Qt::WA_ShowModal, true); -- initUI(); --} -- --IdentificationRenameDialog::~IdentificationRenameDialog() --{ --} -- --int IdentificationRenameDialog::exec() --{ -- QEventLoop loop; -- connect(this, &IdentificationRenameDialog::completed, &loop, &QEventLoop::quit); -- this->show(); -- loop.exec(QEventLoop::DialogExec); -- return m_success; --} -- --void IdentificationRenameDialog::closeEvent(QCloseEvent* event) --{ -- emit completed(QPrivateSignal()); -- return KiranTitlebarWindow::closeEvent(event); --} -- --void IdentificationRenameDialog::onConfirmClicked() --{ -- QString text = m_edit->text(); -- if (text.isEmpty()) -- { -- return; -- } -- m_proxy->renameIdentification(m_iid, text); -- m_success = true; -- emit completed(QPrivateSignal()); --} -- --void IdentificationRenameDialog::initUI() --{ -- setTitlebarColorBlockEnable(true); -- setButtonHints(TitlebarCloseButtonHint); -- setResizeable(false); -- setTitle(tr("Rename Feature")); -- -- auto container = new QWidget(this); -- auto containerLayout = new QBoxLayout(QBoxLayout::TopToBottom, container); -- containerLayout->setContentsMargins(4, 4, 4, 4); -- -- auto colorBlock = new KiranColorBlock(container); -- colorBlock->setDrawBackground(true); -- containerLayout->addWidget(colorBlock); -- -- auto layout = new QBoxLayout(QBoxLayout::TopToBottom, colorBlock); -- layout->setContentsMargins(24, 24, 24, 24); -- -- auto label = new QLabel(tr("Please enter the renamed feature name"), this); -- layout->addWidget(label); -- -- layout->addSpacerItem(new QSpacerItem(10, 16, QSizePolicy::Minimum, QSizePolicy::Fixed)); -- -- m_edit = new QLineEdit(this); -- m_edit->setMaxLength(30); -- layout->addWidget(m_edit); -- -- layout->addSpacerItem(new QSpacerItem(10, 16, QSizePolicy::Minimum, QSizePolicy::Fixed)); -- -- auto boxlayout = new QBoxLayout(QBoxLayout::LeftToRight); -- boxlayout->setContentsMargins(0, 0, 0, 0); -- -- boxlayout->addStretch(); -- -- auto confirmButton = new QPushButton(this); -- confirmButton->setFixedSize(QSize(110, 40)); -- confirmButton->setText(tr("Confirm")); -- Kiran::StylePropertyHelper::setButtonType(confirmButton, Kiran::BUTTON_Default); -- connect(confirmButton, &QPushButton::clicked, this, &IdentificationRenameDialog::onConfirmClicked); -- boxlayout->addWidget(confirmButton); -- -- boxlayout->addSpacerItem(new QSpacerItem(40, 10, QSizePolicy::Fixed, QSizePolicy::Minimum)); -- -- auto cancelButton = new QPushButton(this); -- cancelButton->setFixedSize(QSize(110, 40)); -- cancelButton->setText(tr("Cancel")); -- connect(cancelButton, &QPushButton::clicked, this, [this]() -- { emit completed(QPrivateSignal()); }); -- boxlayout->addWidget(cancelButton); -- -- boxlayout->addStretch(); -- -- layout->addLayout(boxlayout); -- -- setWindowContentWidget(container); --} -diff --git a/plugins/authentication/src/pages/face/face-page.cpp b/plugins/authentication/src/pages/face/face-page.cpp -index 6d042e2..5e0a0db 100644 ---- a/plugins/authentication/src/pages/face/face-page.cpp -+++ b/plugins/authentication/src/pages/face/face-page.cpp -@@ -65,7 +65,7 @@ QWidget* FacePage::initFeatureManagerPage() - m_featureManager->setFeatureNamePrefix(tr("face")); - m_featureManager->setDefaultDeviceLabelDesc(tr("Default face device")); - m_featureManager->setDeviceFeatureListDesc(tr("face feature list")); -- connect(m_featureManager, &GeneralBioPage::enrollFeatureClicked, this, &FacePage::onEnrollFeatureClicked); -+ connect(m_featureManager, &GeneralBioPage::enrollFeature, this, &FacePage::onEnrollFeatureClicked); - - return m_featureManager; - } -diff --git a/plugins/authentication/src/pages/finger/finger-page.cpp b/plugins/authentication/src/pages/finger/finger-page.cpp -index beeb9ae..86513a6 100644 ---- a/plugins/authentication/src/pages/finger/finger-page.cpp -+++ b/plugins/authentication/src/pages/finger/finger-page.cpp -@@ -14,7 +14,6 @@ - - #include "finger-page.h" - #include "auxiliary.h" --#include "identification-rename-dialog.h" - #include "utils/kiran-auth-dbus-proxy.h" - #include "widgets/auth-setting-container.h" - #include "widgets/auth-setting-item.h" -@@ -90,7 +89,7 @@ QWidget* FingerPage::initFeatureManager() - m_featureManager->setFeatureNamePrefix(desc); - m_featureManager->setDefaultDeviceLabelDesc(QString(tr("Default %1 device")).arg(desc)); - m_featureManager->setDeviceFeatureListDesc(QString(tr("%1 list").arg(desc))); -- connect(m_featureManager, &GeneralBioPage::enrollFeatureClicked, this, &FingerPage::onAddIdentificationClicked); -+ connect(m_featureManager, &GeneralBioPage::enrollFeature, this, &FingerPage::onAddIdentificationClicked); - return m_featureManager; - } - -diff --git a/plugins/authentication/src/pages/iris/iris-page.cpp b/plugins/authentication/src/pages/iris/iris-page.cpp -index 65a3670..714c9c0 100644 ---- a/plugins/authentication/src/pages/iris/iris-page.cpp -+++ b/plugins/authentication/src/pages/iris/iris-page.cpp -@@ -65,7 +65,7 @@ QWidget* IrisPage::initFeatureManagerPage() - m_featureManager->setFeatureNamePrefix(tr("iris")); - m_featureManager->setDefaultDeviceLabelDesc(tr("Default Iris device")); - m_featureManager->setDeviceFeatureListDesc(tr("Iris feature list")); -- connect(m_featureManager, &GeneralBioPage::enrollFeatureClicked, this, &IrisPage::onEnrollFeatureClicked); -+ connect(m_featureManager, &GeneralBioPage::enrollFeature, this, &IrisPage::onEnrollFeatureClicked); - - return m_featureManager; - } -diff --git a/plugins/authentication/src/pages/ukey/ukey-page.cpp b/plugins/authentication/src/pages/ukey/ukey-page.cpp -index 2879d61..38051ca 100644 ---- a/plugins/authentication/src/pages/ukey/ukey-page.cpp -+++ b/plugins/authentication/src/pages/ukey/ukey-page.cpp -@@ -12,7 +12,7 @@ - * Author: liuxinhao - */ - #include "ukey-page.h" --#include "ukey-pin-input-dialog.h" -+#include "input-dialog/input-dialog.h" - #include "utils/kiran-auth-dbus-proxy.h" - #include "widgets/auth-setting-container.h" - #include "widgets/auth-setting-item.h" -@@ -52,7 +52,7 @@ void UKeyPage::initUI() - m_featureManager->setFeatureNamePrefix(tr("Ukey")); - m_featureManager->setDefaultDeviceLabelDesc(tr("Default Ukey device")); - m_featureManager->setDeviceFeatureListDesc(tr("List of devices bound to the Ukey")); -- connect(m_featureManager, &GeneralBioPage::enrollFeatureClicked, this, &UKeyPage::onEnrollFeatureClicked); -+ connect(m_featureManager, &GeneralBioPage::enrollFeature, this, &UKeyPage::onEnrollFeatureClicked); - - mainLayout->addWidget(m_featureManager); - } -@@ -88,13 +88,16 @@ void UKeyPage::onEnrollFeatureClicked() - return; - } - -- UKeyPinCodeDialog dialog; -+ InputDialog dialog; -+ dialog.setTitle(tr("UKey Enroll")); -+ dialog.setDesc(tr("Please enter the ukey pin code")); -+ dialog.setInputMode(QLineEdit::Password,32); - if (!dialog.exec()) - { - return; - } - -- m_pinCode = dialog.getPinCode(); -+ m_pinCode = dialog.getText(); - doEnroll(false); - } - -diff --git a/plugins/authentication/src/widgets/general-bio-page.cpp b/plugins/authentication/src/widgets/general-bio-page.cpp -index 443f3c1..36d0ef9 100644 ---- a/plugins/authentication/src/widgets/general-bio-page.cpp -+++ b/plugins/authentication/src/widgets/general-bio-page.cpp -@@ -1,7 +1,8 @@ - #include "general-bio-page.h" - #include "auth-setting-container.h" - #include "auth-setting-item.h" --#include "identification-rename-dialog.h" -+#include "checkpasswd-dialog.h" -+#include "input-dialog/input-dialog.h" - #include "utils/kiran-auth-dbus-proxy.h" - - #include -@@ -138,11 +139,18 @@ void GeneralBioPage::onFeatureRenameClicked() - auto iid = settingItem->getUserData().toString(); - auto name = settingItem->getText(); - -- QScopedPointer renameDialog(new IdentificationRenameDialog(iid, m_proxy, this)); -- if (renameDialog->exec()) -+ InputDialog renameDialog(this); -+ renameDialog.setTitle(tr("Rename Feature")); -+ renameDialog.setDesc(tr("Please enter the renamed feature name")); -+ renameDialog.setInputMode(QLineEdit::Normal,32); -+ if (!renameDialog.exec()) - { -- refreshFeature(); -+ return; - } -+ -+ QString newName = renameDialog.getText(); -+ m_proxy->renameIdentification(iid, newName); -+ refreshFeature(); - } - - void GeneralBioPage::onFeatureTrashClicked() -@@ -155,8 +163,9 @@ void GeneralBioPage::onFeatureTrashClicked() - if (m_authType == KAD_AUTH_TYPE_UKEY) - { - text = QString(tr("Are you sure you want to delete the feature called %1, " -- "Ensure that the Ukey device is inserted; " -- "otherwise the information stored in the Ukey will not be deleted")).arg(name); -+ "Ensure that the Ukey device is inserted; " -+ "otherwise the information stored in the Ukey will not be deleted")) -+ .arg(name); - } - else - { -@@ -172,6 +181,27 @@ void GeneralBioPage::onFeatureTrashClicked() - refreshFeature(); - } - -+void GeneralBioPage::onEnrollFeatureClicked() -+{ -+ CheckpasswdDialog dialog; -+ if (!dialog.exec()) -+ { -+ return; -+ } -+ dialog.hide(); -+ -+ auto passwd = dialog.getText(); -+ if (!dialog.checkPasswd(passwd)) -+ { -+ KiranMessageBox::message(this, tr("Error"), -+ tr(" Failed to enroll feature because the password verification failed!"), -+ KiranMessageBox::Ok); -+ return; -+ } -+ -+ emit enrollFeature(); -+} -+ - void GeneralBioPage::initUI() - { - auto featureManagerLayout = new QBoxLayout(QBoxLayout::TopToBottom, this); -@@ -204,7 +234,7 @@ void GeneralBioPage::initUI() - featureManagerLayout->addWidget(addButton); - addButton->setIcon(QPixmap(":/kcp-keyboard/images/addition.svg")); - Kiran::StylePropertyHelper::setButtonType(addButton, Kiran::BUTTON_Default); -- connect(addButton, &QPushButton::clicked, this, &GeneralBioPage::enrollFeatureClicked); -+ connect(addButton, &QPushButton::clicked, this, &GeneralBioPage::onEnrollFeatureClicked); - - featureManagerLayout->addStretch(); - } -diff --git a/plugins/authentication/src/widgets/general-bio-page.h b/plugins/authentication/src/widgets/general-bio-page.h -index 9108dbe..fe2a0a1 100644 ---- a/plugins/authentication/src/widgets/general-bio-page.h -+++ b/plugins/authentication/src/widgets/general-bio-page.h -@@ -38,13 +38,14 @@ public: - int getDeviceCount(); - - signals: -- void enrollFeatureClicked(); -+ void enrollFeature(); - - private slots: - void onDefaultDeviceComboBoxCurrentIndexChanged(int idx); - void onFeatureRenameClicked(); - void onFeatureTrashClicked(); -- -+ void onEnrollFeatureClicked(); -+ - private: - void initUI(); - void addFeature(const QString& featureName,const QString& featureIID); -diff --git a/plugins/authentication/translations/kiran-cpanel-authentication.zh_CN.ts b/plugins/authentication/translations/kiran-cpanel-authentication.zh_CN.ts -index afd7b5a..1856b82 100644 ---- a/plugins/authentication/translations/kiran-cpanel-authentication.zh_CN.ts -+++ b/plugins/authentication/translations/kiran-cpanel-authentication.zh_CN.ts -@@ -32,6 +32,17 @@ - 人脸 - - -+ -+ CheckpasswdDialog -+ -+ Check password -+ 校验当前用户密码 -+ -+ -+ Check the current password before you enroll the feature -+ 录入特征之前需要校验当前密码 -+ -+ - - DriverPage - -@@ -179,6 +190,14 @@ - tips - 提示 - -+ -+ Error -+ 错误 -+ -+ -+ Failed to enroll feature because the password verification failed! -+ 由于密码校验失败,录入特征失败! -+ - - - IdentificationRenameDialog -@@ -192,11 +211,11 @@ - - - Confirm -- 确认 -+ 确认 - - - Cancel -- 取消 -+ 取消 - - - -@@ -324,11 +343,11 @@ - - - Confirm -- 确认 -+ 确认 - - - Cancel -- 取消 -+ 取消 - - - -diff --git a/translations/kiran-control-panel.zh_CN.ts b/translations/kiran-control-panel.zh_CN.ts -index 96393c2..2116ffd 100644 ---- a/translations/kiran-control-panel.zh_CN.ts -+++ b/translations/kiran-control-panel.zh_CN.ts -@@ -1,6 +1,19 @@ - - - -+ -+ InputDialog -+ -+ -+ Confirm -+ 确认 -+ -+ -+ -+ Cancel -+ 取消 -+ -+ - - KiranModuleWidget - -@@ -11,6 +24,19 @@ - The edited content in %1 is not saved. After switching, the edited content will be lost. Are you sure you want to save? - %1中编辑的内容未保存,切换后编辑的内容将会丢失。您确定要保存吗? - -+ -+ -+ Form -+ -+ -+ -+ -+ KiranTips -+ -+ -+ Form -+ -+ - - - PanelWindow --- -2.33.0 - diff --git a/0001-fix-keyboard-change-describtion-of-enter-repeat-char.patch b/0001-fix-keyboard-change-describtion-of-enter-repeat-char.patch deleted file mode 100644 index 61a06df..0000000 --- a/0001-fix-keyboard-change-describtion-of-enter-repeat-char.patch +++ /dev/null @@ -1,62 +0,0 @@ -From a70b1c1eeaa23437c3d3fed61cd5b60751e1f43d Mon Sep 17 00:00:00 2001 -From: yuanxing -Date: Fri, 11 Aug 2023 17:10:10 +0800 -Subject: [PATCH] fix(keyboard):change describtion of enter repeat chars to - test -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修改键盘设置描述:输入重复按键测试 - -Fixes #7581 ---- - plugins/keyboard/src/pages/general/general-page.cpp | 2 +- - plugins/keyboard/src/pages/general/general-page.ui | 2 +- - plugins/keyboard/translation/kiran-cpanel-keyboard.zh_CN.ts | 4 ++-- - 3 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/plugins/keyboard/src/pages/general/general-page.cpp b/plugins/keyboard/src/pages/general/general-page.cpp -index dceb93f..a9d8cd2 100644 ---- a/plugins/keyboard/src/pages/general/general-page.cpp -+++ b/plugins/keyboard/src/pages/general/general-page.cpp -@@ -51,7 +51,7 @@ void GeneralPage::init() - m_timer->setSingleShot(true); - connect(m_timer, &QTimer::timeout, this, &GeneralPage::handleSaverTimerTimeOut); - -- ui->lineEdit_key->setPlaceholderText(tr("Enter characters to test the settings")); -+ ui->lineEdit_key->setPlaceholderText(tr("Enter repeat characters to test")); - - #ifdef MODIFIER_LOCK_TIPS - // 修饰键提示开关 -diff --git a/plugins/keyboard/src/pages/general/general-page.ui b/plugins/keyboard/src/pages/general/general-page.ui -index 62337f4..00bf186 100644 ---- a/plugins/keyboard/src/pages/general/general-page.ui -+++ b/plugins/keyboard/src/pages/general/general-page.ui -@@ -335,7 +335,7 @@ - - - -- Enter characters to test the settings -+ Enter repeat characters to test - - - -diff --git a/plugins/keyboard/translation/kiran-cpanel-keyboard.zh_CN.ts b/plugins/keyboard/translation/kiran-cpanel-keyboard.zh_CN.ts -index 8eb7cbe..da04b9c 100644 ---- a/plugins/keyboard/translation/kiran-cpanel-keyboard.zh_CN.ts -+++ b/plugins/keyboard/translation/kiran-cpanel-keyboard.zh_CN.ts -@@ -84,8 +84,8 @@ - - - -- Enter characters to test the settings -- 输入字符来测试设置 -+ Enter repeat characters to test -+ 输入重复字符测试 - - - --- -2.27.0 - diff --git a/0001-fix-mouse-add-mouse-wheel-direction-test-if-compile-.patch b/0001-fix-mouse-add-mouse-wheel-direction-test-if-compile-.patch deleted file mode 100644 index 7968a4f..0000000 --- a/0001-fix-mouse-add-mouse-wheel-direction-test-if-compile-.patch +++ /dev/null @@ -1,1124 +0,0 @@ -From 727ab7006e1f7c458534d6835671451ef35b1195 Mon Sep 17 00:00:00 2001 -From: yuanxing -Date: Thu, 6 Jul 2023 17:00:01 +0800 -Subject: [PATCH 1/2] fix(mouse):add mouse wheel direction test if compile with - MOUSE_WHEEL_TEST_VISIBLE=ON -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 当编译选项MOUSE_WHEEL_TEST_VISIBLE=ON时,显示文本框用于测试鼠标滚轮方向 - -Fix #9124 ---- - plugins/mouse/CMakeLists.txt | 6 + - plugins/mouse/src/mouse-page.cpp | 28 +++- - plugins/mouse/src/mouse-page.ui | 137 ++++++++++++++++++ - .../translations/kiran-cpanel-mouse.bo_CN.ts | 118 ++++++++++++++- - .../translations/kiran-cpanel-mouse.kk_KG.ts | 118 ++++++++++++++- - .../translations/kiran-cpanel-mouse.kk_KZ.ts | 118 ++++++++++++++- - .../translations/kiran-cpanel-mouse.mn_MN.ts | 118 ++++++++++++++- - .../translations/kiran-cpanel-mouse.ug_CN.ts | 118 ++++++++++++++- - .../translations/kiran-cpanel-mouse.zh_CN.ts | 112 +++++++++++++- - 9 files changed, 843 insertions(+), 30 deletions(-) - -diff --git a/plugins/mouse/CMakeLists.txt b/plugins/mouse/CMakeLists.txt -index 4323f80..307ec7a 100644 ---- a/plugins/mouse/CMakeLists.txt -+++ b/plugins/mouse/CMakeLists.txt -@@ -1,5 +1,7 @@ - set(TARGET_NAME kiran-cpanel-mouse) - -+option(MOUSE_WHEEL_TEST_VISIBLE "Is mouse wheel direction test visible" OFF) -+ - file(GLOB_RECURSE MOUSE_SRC "./*.cpp" "./*.h" "./*.ui" "./*.qrc" ) - - file(GLOB TS_FILES "translations/*.ts") -@@ -39,6 +41,10 @@ target_link_libraries(${TARGET_NAME} - ${KIRANWIDGETS_LIBRARIES} - ${KLOG_LIBRARIES}) - -+if (MOUSE_WHEEL_TEST_VISIBLE) -+ add_definitions(-DMOUSE_WHEEL_DIRECTION_TEST) -+endif () -+ - install(TARGETS ${TARGET_NAME} - DESTINATION ${PLUGIN_LIBS_INSTALL_DIR}/) - -diff --git a/plugins/mouse/src/mouse-page.cpp b/plugins/mouse/src/mouse-page.cpp -index 468093c..9e82621 100644 ---- a/plugins/mouse/src/mouse-page.cpp -+++ b/plugins/mouse/src/mouse-page.cpp -@@ -35,7 +35,8 @@ MousePage::MousePage(QWidget *parent) : QWidget(parent), - //创建定时器,在用户拖动滑动条时,滑动条值停止变化0.1s后才会设置新的鼠标移动速度 - m_timer = new QTimer(this); - connect(m_timer, &QTimer::timeout, -- [this] { -+ [this] -+ { - int value = ui->slider_speed->value(); - auto scrollSpeed = (value / (SLIDER_MAXIMUN * 1.0)) * 2.0 - 1.0; - m_mouseMotionAcceleration = scrollSpeed; -@@ -84,6 +85,10 @@ void MousePage::initUI() - ui->slider_speed->setPageStep((SLIDER_MAXIMUN - SLIDER_MINIMUM) / 20); - ui->slider_speed->setSingleStep((SLIDER_MAXIMUN - SLIDER_MINIMUM) / 20); - -+#ifndef MOUSE_WHEEL_DIRECTION_TEST -+ ui->testWidget->hide(); -+#endif -+ - initComponent(); - } - -@@ -95,13 +100,15 @@ void MousePage::initComponent() - m_mouseLeftHand = m_mouseInterface->left_handed(); - ui->comboBox_hand_mode->setCurrentIndex(m_mouseLeftHand); - connect(ui->comboBox_hand_mode, QOverload::of(&QComboBox::currentIndexChanged), -- [this](int currentIntex) { -+ [this](int currentIntex) -+ { - m_mouseLeftHand = currentIntex; - m_mouseInterface->setLeft_handed(m_mouseLeftHand); - }); - connect( - m_mouseInterface.data(), &MouseBackEndProxy::left_handedChanged, this, -- [this](bool value) { -+ [this](bool value) -+ { - if (m_mouseLeftHand != value) - { - m_mouseLeftHand = value; -@@ -120,7 +127,8 @@ void MousePage::initComponent() - - connect( - m_mouseInterface.data(), &MouseBackEndProxy::motion_accelerationChanged, this, -- [this](double value) { -+ [this](double value) -+ { - if (m_mouseMotionAcceleration != value) - { - m_mouseMotionAcceleration = value; -@@ -135,13 +143,15 @@ void MousePage::initComponent() - m_mouseNaturalScroll = m_mouseInterface->natural_scroll(); - ui->checkBox_natural_scroll->setChecked(m_mouseNaturalScroll); - connect(ui->checkBox_natural_scroll, &KiranSwitchButton::toggled, -- [this](bool ischecked) { -+ [this](bool ischecked) -+ { - m_mouseNaturalScroll = ischecked; - m_mouseInterface->setNatural_scroll(ischecked); - }); - connect( - m_mouseInterface.data(), &MouseBackEndProxy::natural_scrollChanged, this, -- [this](bool value) { -+ [this](bool value) -+ { - if (m_mouseNaturalScroll != value) - { - m_mouseNaturalScroll = value; -@@ -155,13 +165,15 @@ void MousePage::initComponent() - m_middleEmulationEnabled = m_mouseInterface->middle_emulation_enabled(); - ui->checkBox_middle_emulation->setChecked(m_middleEmulationEnabled); - connect(ui->checkBox_middle_emulation, &KiranSwitchButton::toggled, -- [this](bool ischecked) { -+ [this](bool ischecked) -+ { - m_middleEmulationEnabled = ischecked; - m_mouseInterface->setMiddle_emulation_enabled(ischecked); - }); - connect( - m_mouseInterface.data(), &MouseBackEndProxy::middle_emulation_enabledChanged, this, -- [this](bool value) { -+ [this](bool value) -+ { - if (m_middleEmulationEnabled != value) - { - m_middleEmulationEnabled = value; -diff --git a/plugins/mouse/src/mouse-page.ui b/plugins/mouse/src/mouse-page.ui -index ac241bf..0e20c3a 100644 ---- a/plugins/mouse/src/mouse-page.ui -+++ b/plugins/mouse/src/mouse-page.ui -@@ -295,6 +295,143 @@ - - - -+ -+ -+ -+ Qt::Vertical -+ -+ -+ QSizePolicy::Fixed -+ -+ -+ -+ 20 -+ 8 -+ -+ -+ -+ -+ -+ -+ -+ -+ 0 -+ -+ -+ 0 -+ -+ -+ 0 -+ -+ -+ 0 -+ -+ -+ 0 -+ -+ -+ -+ -+ Test mouse wheel direction -+ -+ -+ -+ -+ -+ -+ true -+ -+ -+ -+ -+ 0 -+ 0 -+ 569 -+ 900 -+ -+ -+ -+ -+ 0 -+ -+ -+ 0 -+ -+ -+ 0 -+ -+ -+ 0 -+ -+ -+ 0 -+ -+ -+ -+ -+ This is line 1 of the test text -+This is line 2 of the test text -+This is line 3 of the test text -+This is line 4 of the test text -+This is line 5 of the test text -+This is line 6 of the test text -+This is line 7 of the test text -+This is line 8 of the test text -+This is line 9 of the test text -+This is line 10 of the test text -+This is line 11 of the test text -+This is line 12 of the test text -+This is line 13 of the test text -+This is line 14 of the test text -+This is line 15 of the test text -+This is line 16 of the test text -+This is line 17 of the test text -+This is line 18 of the test text -+This is line 19 of the test text -+This is line 20 of the test text -+This is line 21 of the test text -+This is line 22 of the test text -+This is line 23 of the test text -+This is line 24 of the test text -+This is line 25 of the test text -+This is line 26 of the test text -+This is line 27 of the test text -+This is line 28 of the test text -+This is line 29 of the test text -+This is line 30 of the test text -+This is line 31 of the test text -+This is line 32 of the test text -+This is line 33 of the test text -+This is line 34 of the test text -+This is line 35 of the test text -+This is line 36 of the test text -+This is line 37 of the test text -+This is line 38 of the test text -+This is line 39 of the test text -+This is line 40 of the test text -+This is line 41 of the test text -+This is line 42 of the test text -+This is line 43 of the test text -+This is line 44 of the test text -+This is line 45 of the test text -+This is line 46 of the test text -+This is line 47 of the test text -+This is line 48 of the test text -+This is line 49 of the test text -+This is line 50 of the test text -+ -+ -+ true -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -diff --git a/plugins/mouse/translations/kiran-cpanel-mouse.bo_CN.ts b/plugins/mouse/translations/kiran-cpanel-mouse.bo_CN.ts -index d1ff462..8456c43 100644 ---- a/plugins/mouse/translations/kiran-cpanel-mouse.bo_CN.ts -+++ b/plugins/mouse/translations/kiran-cpanel-mouse.bo_CN.ts -@@ -1,4 +1,6 @@ -- -+ -+ -+ - - KiranCPanelMouse - -@@ -171,12 +173,120 @@ - SwitchMidleEmulomon - - -- -+ -+ Test mouse wheel direction -+ བྱི་བའི་འཁོར་ལོའི་ཁ་ཕྱོགས་ལ་ཚོད -+ -+ -+ -+ This is line 1 of the test text -+This is line 2 of the test text -+This is line 3 of the test text -+This is line 4 of the test text -+This is line 5 of the test text -+This is line 6 of the test text -+This is line 7 of the test text -+This is line 8 of the test text -+This is line 9 of the test text -+This is line 10 of the test text -+This is line 11 of the test text -+This is line 12 of the test text -+This is line 13 of the test text -+This is line 14 of the test text -+This is line 15 of the test text -+This is line 16 of the test text -+This is line 17 of the test text -+This is line 18 of the test text -+This is line 19 of the test text -+This is line 20 of the test text -+This is line 21 of the test text -+This is line 22 of the test text -+This is line 23 of the test text -+This is line 24 of the test text -+This is line 25 of the test text -+This is line 26 of the test text -+This is line 27 of the test text -+This is line 28 of the test text -+This is line 29 of the test text -+This is line 30 of the test text -+This is line 31 of the test text -+This is line 32 of the test text -+This is line 33 of the test text -+This is line 34 of the test text -+This is line 35 of the test text -+This is line 36 of the test text -+This is line 37 of the test text -+This is line 38 of the test text -+This is line 39 of the test text -+This is line 40 of the test text -+This is line 41 of the test text -+This is line 42 of the test text -+This is line 43 of the test text -+This is line 44 of the test text -+This is line 45 of the test text -+This is line 46 of the test text -+This is line 47 of the test text -+This is line 48 of the test text -+This is line 49 of the test text -+This is line 50 of the test text -+ འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་དང་པོ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་གཉིས་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་གསུམ་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་བཞི་བ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་5་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ནང་གི་ཐིག་དྲུག་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་7པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་8པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་9པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་བཅུ་བ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་བཅུ་གཅིག་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་བཅུ་གཉིས་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་བཅུ་གསུམ་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་བཅུ་བཞི་བ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་བཅོ་ལྔ་བ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་བཅུ་དྲུག་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་བཅུ་བདུན་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་བཅོ་བརྒྱད་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་བཅུ་དགུ་བ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་20་་་ -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་21་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་22་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་23པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་24པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་25་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་26པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་ཉེར་བདུན་པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་28པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་29པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་30པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་31པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་32པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་33པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་34པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་35པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་36པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་37པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་38པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་39པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཐིག་40ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་41པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་42པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་43པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་44པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་45པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་46པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་47པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་48པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་49པ་ཡིན། -+འདི་ནི་རྒྱུགས་ལེན་ཡི་གེའི་ཨང་50་་་ -+ -+ -+ - Right Hand Mode - གཡས་ལག་རྣམ་པ་ - - -- -+ - Left Hand Mode - ལག་གཡོན་མའི་རྣམ་པ། - -@@ -474,4 +584,4 @@ - རེག་པང་སྒྲིག་བཀོད། - - -- -\ No newline at end of file -+ -diff --git a/plugins/mouse/translations/kiran-cpanel-mouse.kk_KG.ts b/plugins/mouse/translations/kiran-cpanel-mouse.kk_KG.ts -index 388644d..8a668f4 100644 ---- a/plugins/mouse/translations/kiran-cpanel-mouse.kk_KG.ts -+++ b/plugins/mouse/translations/kiran-cpanel-mouse.kk_KG.ts -@@ -1,4 +1,6 @@ -- -+ -+ -+ - - KiranCPanelMouse - -@@ -171,12 +173,120 @@ - SwitchMiddleEmulation - - -- -+ -+ Test mouse wheel direction -+ Сыноо чычкан дөңгөлөк багыты -+ -+ -+ -+ This is line 1 of the test text -+This is line 2 of the test text -+This is line 3 of the test text -+This is line 4 of the test text -+This is line 5 of the test text -+This is line 6 of the test text -+This is line 7 of the test text -+This is line 8 of the test text -+This is line 9 of the test text -+This is line 10 of the test text -+This is line 11 of the test text -+This is line 12 of the test text -+This is line 13 of the test text -+This is line 14 of the test text -+This is line 15 of the test text -+This is line 16 of the test text -+This is line 17 of the test text -+This is line 18 of the test text -+This is line 19 of the test text -+This is line 20 of the test text -+This is line 21 of the test text -+This is line 22 of the test text -+This is line 23 of the test text -+This is line 24 of the test text -+This is line 25 of the test text -+This is line 26 of the test text -+This is line 27 of the test text -+This is line 28 of the test text -+This is line 29 of the test text -+This is line 30 of the test text -+This is line 31 of the test text -+This is line 32 of the test text -+This is line 33 of the test text -+This is line 34 of the test text -+This is line 35 of the test text -+This is line 36 of the test text -+This is line 37 of the test text -+This is line 38 of the test text -+This is line 39 of the test text -+This is line 40 of the test text -+This is line 41 of the test text -+This is line 42 of the test text -+This is line 43 of the test text -+This is line 44 of the test text -+This is line 45 of the test text -+This is line 46 of the test text -+This is line 47 of the test text -+This is line 48 of the test text -+This is line 49 of the test text -+This is line 50 of the test text -+ Бул сыноо текстинин 1-сап -+Бул сыноо текстинин 2-сап -+Бул сыноо текстинин 3-сап -+Бул сыноо текстинин 4-сызыгы -+Бул сыноо текстинин 5-сап -+Бул сыноо текстинин 6-сызыгы -+Бул сыноо текстинин 7-сап -+Бул сыноо текстинин 8-сап -+Бул сыноо текстинин 9-сызыгы -+Бул сыноо текстинин 10 сап -+Бул сыноо текстинин 11 сап -+Бул сыноо текстинин 12 сап -+Бул сыноо текстинин 13 сап -+Бул сыноо текстинин 14 сап -+Бул сыноо текстинин 15 сап -+Бул сыноо текстинин 16 сап -+Бул сыноо текстинин 17 сап -+Бул сыноо текстинин 18 сап -+Бул сызык 19 сыноо тексти -+Бул сызык 20 сыноо тексти -+Бул сыноо текстинин 21 сап -+Бул сыноо текстинин 22 сап -+Бул сыноо текстинин 23 сап -+Бул сыноо текстинин 24 сап -+Бул сыноо текстинин 25 сап -+Бул сыноо текстинин 26 сап -+Бул сыноо текстинин 27 сап -+Бул сызык 28 сыноо тексти -+Бул сыноо текстинин 29 сап -+Бул сыноо текстинин 30 сап -+Бул сыноо текстинин 31 сап -+Бул сыноо текстинин 32 сап -+Бул сыноо текстинин 33 сап -+Бул сыноо текстинин 34 сап -+Бул сыноо текстинин 35 сап -+Бул сыноо текстинин 36 сап -+Бул сыноо текстинин 37 сап -+Бул сыноо текстинин 38 сап -+Бул сыноо текстинин 39 сап -+Бул сыноо текстинин 40 сап -+Бул сыноо текстинин 41 сап -+Бул сыноо текстинин 42 сап -+Бул сыноо текстинин 43 сап -+Бул сыноо текстинин 44 сап -+Бул сыноо текстинин 45 сап -+Бул сыноо текстинин 46 сап -+Бул сыноо текстинин 47 сап -+Бул сыноо текстинин 48 сап -+Бул сыноо текстинин 49 сап -+Бул сыноо текстинин 50 сап -+ -+ -+ - Right Hand Mode - Оң кол режими - - -- -+ - Left Hand Mode - Сол кол режими - -@@ -474,4 +584,4 @@ - TouchPad Жөндөөлөрү - - -- -\ No newline at end of file -+ -diff --git a/plugins/mouse/translations/kiran-cpanel-mouse.kk_KZ.ts b/plugins/mouse/translations/kiran-cpanel-mouse.kk_KZ.ts -index dc0deb0..e38f436 100644 ---- a/plugins/mouse/translations/kiran-cpanel-mouse.kk_KZ.ts -+++ b/plugins/mouse/translations/kiran-cpanel-mouse.kk_KZ.ts -@@ -1,4 +1,6 @@ -- -+ -+ -+ - - KiranCPanelMouse - -@@ -171,12 +173,120 @@ - SwitchMiddleEmulation - - -- -+ -+ Test mouse wheel direction -+ Тестмос-Вирлирексин -+ -+ -+ -+ This is line 1 of the test text -+This is line 2 of the test text -+This is line 3 of the test text -+This is line 4 of the test text -+This is line 5 of the test text -+This is line 6 of the test text -+This is line 7 of the test text -+This is line 8 of the test text -+This is line 9 of the test text -+This is line 10 of the test text -+This is line 11 of the test text -+This is line 12 of the test text -+This is line 13 of the test text -+This is line 14 of the test text -+This is line 15 of the test text -+This is line 16 of the test text -+This is line 17 of the test text -+This is line 18 of the test text -+This is line 19 of the test text -+This is line 20 of the test text -+This is line 21 of the test text -+This is line 22 of the test text -+This is line 23 of the test text -+This is line 24 of the test text -+This is line 25 of the test text -+This is line 26 of the test text -+This is line 27 of the test text -+This is line 28 of the test text -+This is line 29 of the test text -+This is line 30 of the test text -+This is line 31 of the test text -+This is line 32 of the test text -+This is line 33 of the test text -+This is line 34 of the test text -+This is line 35 of the test text -+This is line 36 of the test text -+This is line 37 of the test text -+This is line 38 of the test text -+This is line 39 of the test text -+This is line 40 of the test text -+This is line 41 of the test text -+This is line 42 of the test text -+This is line 43 of the test text -+This is line 44 of the test text -+This is line 45 of the test text -+This is line 46 of the test text -+This is line 47 of the test text -+This is line 48 of the test text -+This is line 49 of the test text -+This is line 50 of the test text -+ Бұл сынақ мәтінінің 1-жолы -+Бұл тест мәтінінің 2-жолы -+Бұл тест мәтінінің 3-жолы -+Бұл тест мәтінінің 4-жолы -+Бұл тест мәтінінің 5-жолы -+Бұл тест мәтінінің 6-жолы -+Бұл тест мәтінінің 7-жолы -+Бұл тест мәтінінің 8-жолы -+Бұл тест мәтінінің 9-жолы -+Бұл тест мәтінінің 10-жолы -+Бұл тест мәтінінің 11-жолы -+Бұл тест мәтінінің 12-жолы -+Бұл тест мәтінінің 13-жолы -+Бұл тест мәтінінің 14-жолы -+Бұл тест мәтінінің 15-жолы -+Бұл тест мәтінінің 16-жолы -+Бұл тест мәтінінің 17-жолы -+Бұл тест мәтінінің 18-жолы -+Бұл тест мәтінінің 19-жолы -+Бұл тест мәтінінің 20-жолы -+Бұл тест мәтінінің 21-жолы -+Бұл тест мәтінінің 22-жолы -+Бұл тест мәтінінің 23-жолы -+Бұл тест мәтінінің 24-жолы -+Бұл тест мәтінінің 25-жолы -+Бұл тест мәтінінің 26-жолы -+Бұл тест мәтінінің 27-жолы -+Бұл тест мәтінінің 28-жолы -+Бұл тест мәтінінің 29-жолы -+Бұл тест мәтінінің 30-жолы -+Бұл тест мәтінінің 31-жолы -+Бұл тест мәтінінің 32-жолы -+Бұл тест мәтінінің 33-жолы -+Бұл тест мәтінінің 34-жолы -+Бұл тест мәтінінің 35-жолы -+Бұл тест мәтінінің 36-жолы -+Бұл тест мәтінінің 37-жолы -+Бұл тест мәтінінің 38-жолы -+Бұл тест мәтінінің 39-жолы -+Бұл тест мәтінінің 40-жолы -+Бұл тест мәтінінің 41-жолы -+Бұл тест мәтінінің 42-жолы -+Бұл тест мәтінінің 43-жолы -+Бұл тест мәтінінің 44-жолы -+Бұл тест мәтінінің 45-жолы -+Бұл тест мәтінінің 46-жолы -+Бұл тест мәтінінің 47-жолы -+Бұл тест мәтінінің 48-жолы -+Бұл тест мәтінінің 49-жолы -+Бұл тест мәтінінің 50-жолы -+ -+ -+ - Right Hand Mode - Оң қол режимі - - -- -+ - Left Hand Mode - Сол жақ қол режімі - -@@ -474,4 +584,4 @@ - Сенсорлық тақта параметрлері - - -- -\ No newline at end of file -+ -diff --git a/plugins/mouse/translations/kiran-cpanel-mouse.mn_MN.ts b/plugins/mouse/translations/kiran-cpanel-mouse.mn_MN.ts -index 8fafb44..c084a73 100644 ---- a/plugins/mouse/translations/kiran-cpanel-mouse.mn_MN.ts -+++ b/plugins/mouse/translations/kiran-cpanel-mouse.mn_MN.ts -@@ -1,4 +1,6 @@ -- -+ -+ -+ - - KiranCPanelMouse - -@@ -171,12 +173,120 @@ - SwitchMiddleEmulation - - -- -+ -+ Test mouse wheel direction -+ Хулганы дугуйны чиглэлийг шалгах -+ -+ -+ -+ This is line 1 of the test text -+This is line 2 of the test text -+This is line 3 of the test text -+This is line 4 of the test text -+This is line 5 of the test text -+This is line 6 of the test text -+This is line 7 of the test text -+This is line 8 of the test text -+This is line 9 of the test text -+This is line 10 of the test text -+This is line 11 of the test text -+This is line 12 of the test text -+This is line 13 of the test text -+This is line 14 of the test text -+This is line 15 of the test text -+This is line 16 of the test text -+This is line 17 of the test text -+This is line 18 of the test text -+This is line 19 of the test text -+This is line 20 of the test text -+This is line 21 of the test text -+This is line 22 of the test text -+This is line 23 of the test text -+This is line 24 of the test text -+This is line 25 of the test text -+This is line 26 of the test text -+This is line 27 of the test text -+This is line 28 of the test text -+This is line 29 of the test text -+This is line 30 of the test text -+This is line 31 of the test text -+This is line 32 of the test text -+This is line 33 of the test text -+This is line 34 of the test text -+This is line 35 of the test text -+This is line 36 of the test text -+This is line 37 of the test text -+This is line 38 of the test text -+This is line 39 of the test text -+This is line 40 of the test text -+This is line 41 of the test text -+This is line 42 of the test text -+This is line 43 of the test text -+This is line 44 of the test text -+This is line 45 of the test text -+This is line 46 of the test text -+This is line 47 of the test text -+This is line 48 of the test text -+This is line 49 of the test text -+This is line 50 of the test text -+ Энэ бол туршилтын текстийн эхний мөр юм -+Энэ бол туршилтын текстийн хоёр дахь мөр юм -+Энэ бол туршилтын текстийн 3-р мөр юм -+Энэ бол туршилтын текстийн 4-р мөр юм -+Энэ бол туршилтын текстийн 5-р мөр юм -+Энэ бол туршилтын текстийн 6-р мөр юм -+Энэ бол туршилтын текстийн 7-р мөр юм -+Энэ бол туршилтын текстийн 8-р мөр юм -+Энэ бол туршилтын текстийн 9-р мөр юм -+Энэ бол туршилтын текстийн 10-р мөр юм -+Энэ бол туршилтын текстийн 11-р мөр юм -+Энэ бол туршилтын текстийн 12-р мөр юм -+Энэ бол туршилтын текстийн 13-р мөр юм -+Энэ бол туршилтын текстийн 14-р мөр юм -+Энэ бол туршилтын текстийн 15-р мөр юм -+Энэ бол туршилтын текстийн 16-р мөр юм -+Энэ бол туршилтын текстийн 17-р мөр юм -+Энэ бол туршилтын текстийн 18-р мөр юм -+Энэ бол туршилтын текстийн 19-р мөр юм -+Энэ бол туршилтын текстийн 20-р мөр юм -+Энэ бол туршилтын текстийн 21-р мөр юм -+Энэ бол туршилтын текстийн 22-р мөр юм -+Энэ бол туршилтын текстийн 23-р мөр юм -+Энэ бол туршилтын текстийн 24-р мөр юм -+Энэ бол туршилтын текстийн 25-р мөр юм -+Энэ бол туршилтын текстийн 26-р мөр юм -+Энэ бол туршилтын текстийн 27-р мөр юм -+Энэ бол туршилтын текстийн 28-р мөр юм -+Энэ бол туршилтын текстийн 29-р мөр юм -+Энэ бол туршилтын текстийн 30-р мөр юм -+Энэ бол туршилтын текстийн 31-р мөр юм -+Энэ бол туршилтын текстийн 32-р мөр юм -+Энэ бол туршилтын текстийн 33-р мөр юм -+Энэ бол туршилтын текстийн 34-р мөр юм -+Энэ бол туршилтын текстийн 35-р мөр юм -+Энэ бол туршилтын текстийн 36-р мөр юм -+Энэ бол туршилтын текстийн 37-р мөр юм -+Энэ бол туршилтын текстийн 38-р мөр юм -+Энэ бол туршилтын текстийн 39-р мөр юм -+Энэ бол туршилтын текстийн 40-р мөр юм -+Энэ бол туршилтын текстийн 41-р мөр юм -+Энэ бол туршилтын текстийн 42-р мөр юм -+Энэ бол туршилтын текстийн 43-р мөр юм -+Энэ бол туршилтын текстийн 44-р мөр юм -+Энэ бол туршилтын текстийн 45-р мөр юм -+Энэ бол туршилтын текстийн 46-р мөр юм -+Энэ бол туршилтын текстийн 47-р мөр юм -+Энэ бол туршилтын текстийн 48-р мөр юм -+Энэ бол туршилтын текстийн 49-р мөр юм -+Энэ бол туршилтын текстийн 50-р мөр юм -+ -+ -+ - Right Hand Mode - Баруун гар горим - - -- -+ - Left Hand Mode - Зүүн гар - -@@ -474,4 +584,4 @@ - TouchPad тохиргоо - - -- -\ No newline at end of file -+ -diff --git a/plugins/mouse/translations/kiran-cpanel-mouse.ug_CN.ts b/plugins/mouse/translations/kiran-cpanel-mouse.ug_CN.ts -index b5bf156..0fb80b4 100644 ---- a/plugins/mouse/translations/kiran-cpanel-mouse.ug_CN.ts -+++ b/plugins/mouse/translations/kiran-cpanel-mouse.ug_CN.ts -@@ -1,4 +1,6 @@ -- -+ -+ -+ - - KiranCPanelMouse - -@@ -171,12 +173,120 @@ - SwitchMiddleEmulation - - -- -+ -+ Test mouse wheel direction -+ تېستموس خۇير دىلېكېن -+ -+ -+ -+ This is line 1 of the test text -+This is line 2 of the test text -+This is line 3 of the test text -+This is line 4 of the test text -+This is line 5 of the test text -+This is line 6 of the test text -+This is line 7 of the test text -+This is line 8 of the test text -+This is line 9 of the test text -+This is line 10 of the test text -+This is line 11 of the test text -+This is line 12 of the test text -+This is line 13 of the test text -+This is line 14 of the test text -+This is line 15 of the test text -+This is line 16 of the test text -+This is line 17 of the test text -+This is line 18 of the test text -+This is line 19 of the test text -+This is line 20 of the test text -+This is line 21 of the test text -+This is line 22 of the test text -+This is line 23 of the test text -+This is line 24 of the test text -+This is line 25 of the test text -+This is line 26 of the test text -+This is line 27 of the test text -+This is line 28 of the test text -+This is line 29 of the test text -+This is line 30 of the test text -+This is line 31 of the test text -+This is line 32 of the test text -+This is line 33 of the test text -+This is line 34 of the test text -+This is line 35 of the test text -+This is line 36 of the test text -+This is line 37 of the test text -+This is line 38 of the test text -+This is line 39 of the test text -+This is line 40 of the test text -+This is line 41 of the test text -+This is line 42 of the test text -+This is line 43 of the test text -+This is line 44 of the test text -+This is line 45 of the test text -+This is line 46 of the test text -+This is line 47 of the test text -+This is line 48 of the test text -+This is line 49 of the test text -+This is line 50 of the test text -+ بۇ بىرىنچى قۇر سىناق يېزىقى -+بۇ ئىككىنچى قۇر سىناق يېزىقى -+بۇ ئۈچىنچى قۇر سىناق يېزىقى -+بۇ تۆتىنچى قۇر سىناق يېزىقى -+بۇ بەشىنچى قۇر سىناق يېزىقى -+بۇ ئالتىنچى قۇر سىناق يېزىقى -+بۇ يەتتىنچى قۇر سىناق يېزىقى -+بۇ سەككىزىنچى قۇر سىناق يېزىقى -+بۇ توققۇزىنچى قۇر سىناق يېزىقى -+بۇ 10-قېتىملىق سىناق يېزىقى -+بۇ 11-قۇر سىناق يېزىقى -+بۇ 12-قۇر سىناق يېزىقى -+بۇ 13-قۇر سىناق يېزىقى -+بۇ 14-قۇر سىناق يېزىقى -+بۇ 15-قۇر سىناق يېزىقى -+بۇ 16-قۇر سىناق يېزىقى -+بۇ 17-قۇر سىناق يېزىقى -+بۇ 18-قۇر سىناق يېزىقى -+بۇ 19-قۇر سىناق يېزىقى -+بۇ 20-قېتىملىق سىناق يېزىقى -+بۇ 21-قۇر سىناق خېتى -+بۇ 22-قۇر سىناق يېزىقى -+بۇ 23-قۇر سىناق يېزىقى -+بۇ 24-قۇر سىناق يېزىقى -+بۇ 25-قېتىملىق سىناق يېزىقى -+بۇ 26-قۇر سىناق يېزىقى -+بۇ 27-قېتىملىق سىناق يېزىقى -+بۇ 28-قۇر سىناق يېزىقى -+بۇ 29-قۇر سىناق يېزىقى -+بۇ 30-قېتىملىق سىناق يېزىقى -+بۇ 31-قۇر سىناق يېزىقى -+بۇ 32-قۇر سىناق يېزىقى -+بۇ 33- قۇر سىناق يېزىقى -+بۇ 34-قۇر سىناق يېزىقى -+بۇ 35-قۇر سىناق يېزىقى -+بۇ 36-قۇر سىناق يېزىقى -+بۇ 37-قۇر سىناق يېزىقى -+بۇ 38-قۇر سىناق يېزىقى -+بۇ 39-قۇر سىناق يېزىقى -+بۇ 40-قېتىملىق سىناق يېزىقى -+بۇ 41-قۇر سىناق يېزىقى -+بۇ 42-قۇر سىناق يېزىقى -+بۇ 43- قۇر سىناق يېزىقى -+بۇ 44-قۇر سىناق يېزىقى -+بۇ 45-قۇر سىناق يېزىقى -+بۇ 46-قۇر سىناق يېزىقى -+بۇ 47-قۇر سىناق يېزىقى -+بۇ 48-قۇر سىناق يېزىقى -+بۇ 49-قۇر سىناق يېزىقى -+بۇ 50-قېتىملىق سىناق يېزىقى -+ -+ -+ - Right Hand Mode - ئوڭ قول ھالىتى - - -- -+ - Left Hand Mode - سول قول ھالىتى - -@@ -474,4 +584,4 @@ - TouchPad تەڭشەكلىرى - - -- -\ No newline at end of file -+ -diff --git a/plugins/mouse/translations/kiran-cpanel-mouse.zh_CN.ts b/plugins/mouse/translations/kiran-cpanel-mouse.zh_CN.ts -index 2b73339..6994a2a 100644 ---- a/plugins/mouse/translations/kiran-cpanel-mouse.zh_CN.ts -+++ b/plugins/mouse/translations/kiran-cpanel-mouse.zh_CN.ts -@@ -173,12 +173,120 @@ - - - -- -+ -+ Test mouse wheel direction -+ 鼠标滚轮方向测试 -+ -+ -+ -+ This is line 1 of the test text -+This is line 2 of the test text -+This is line 3 of the test text -+This is line 4 of the test text -+This is line 5 of the test text -+This is line 6 of the test text -+This is line 7 of the test text -+This is line 8 of the test text -+This is line 9 of the test text -+This is line 10 of the test text -+This is line 11 of the test text -+This is line 12 of the test text -+This is line 13 of the test text -+This is line 14 of the test text -+This is line 15 of the test text -+This is line 16 of the test text -+This is line 17 of the test text -+This is line 18 of the test text -+This is line 19 of the test text -+This is line 20 of the test text -+This is line 21 of the test text -+This is line 22 of the test text -+This is line 23 of the test text -+This is line 24 of the test text -+This is line 25 of the test text -+This is line 26 of the test text -+This is line 27 of the test text -+This is line 28 of the test text -+This is line 29 of the test text -+This is line 30 of the test text -+This is line 31 of the test text -+This is line 32 of the test text -+This is line 33 of the test text -+This is line 34 of the test text -+This is line 35 of the test text -+This is line 36 of the test text -+This is line 37 of the test text -+This is line 38 of the test text -+This is line 39 of the test text -+This is line 40 of the test text -+This is line 41 of the test text -+This is line 42 of the test text -+This is line 43 of the test text -+This is line 44 of the test text -+This is line 45 of the test text -+This is line 46 of the test text -+This is line 47 of the test text -+This is line 48 of the test text -+This is line 49 of the test text -+This is line 50 of the test text -+ 这是第1行测试文字 -+这是第2行测试文字 -+这是第3行测试文字 -+这是第4行测试文字 -+这是第5行测试文字 -+这是第6行测试文字 -+这是第7行测试文字 -+这是第8行测试文字 -+这是第9行测试文字 -+这是第10行测试文字 -+这是第11行测试文字 -+这是第12行测试文字 -+这是第13行测试文字 -+这是第14行测试文字 -+这是第15行测试文字 -+这是第16行测试文字 -+这是第17行测试文字 -+这是第18行测试文字 -+这是第19行测试文字 -+这是第20行测试文字 -+这是第21行测试文字 -+这是第22行测试文字 -+这是第23行测试文字 -+这是第24行测试文字 -+这是第25行测试文字 -+这是第26行测试文字 -+这是第27行测试文字 -+这是第28行测试文字 -+这是第29行测试文字 -+这是第30行测试文字 -+这是第31行测试文字 -+这是第32行测试文字 -+这是第33行测试文字 -+这是第34行测试文字 -+这是第35行测试文字 -+这是第36行测试文字 -+这是第37行测试文字 -+这是第38行测试文字 -+这是第39行测试文字 -+这是第40行测试文字 -+这是第41行测试文字 -+这是第42行测试文字 -+这是第43行测试文字 -+这是第44行测试文字 -+这是第45行测试文字 -+这是第46行测试文字 -+这是第47行测试文字 -+这是第48行测试文字 -+这是第49行测试文字 -+这是第50行测试文字 -+ -+ -+ - Right Hand Mode - 右手模式 - - -- -+ - Left Hand Mode - 左手模式 - --- -2.27.0 - diff --git a/0002-fix-keybord-add-modifier-lock-tip-with-option-MODIFI.patch b/0002-fix-keybord-add-modifier-lock-tip-with-option-MODIFI.patch deleted file mode 100644 index 6eb956c..0000000 --- a/0002-fix-keybord-add-modifier-lock-tip-with-option-MODIFI.patch +++ /dev/null @@ -1,474 +0,0 @@ -From 7b743193e9baf70403f29d90cf7f0cd280adba67 Mon Sep 17 00:00:00 2001 -From: yuanxing -Date: Thu, 13 Jul 2023 10:42:11 +0800 -Subject: [PATCH 2/2] fix(keybord):add modifier lock tip with option - MODIFIER_LOCK_TIPS_VISIBLE -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 添加编译选项MODIFIER_LOCK_TIPS_VISIBLE来显示修饰键锁定提示 - -Fix #9379 ---- - plugins/keyboard/CMakeLists.txt | 7 ++ - ....kylinsec.Kiran.SessionDaemon.Keyboard.xml | 29 ++++++ - .../src/pages/general/general-page.cpp | 98 ++++++++++++++++--- - .../keyboard/src/pages/general/general-page.h | 7 +- - .../src/pages/general/general-page.ui | 87 +++++++++++++++- - .../kiran-cpanel-keyboard.zh_CN.ts | 38 ++++--- - 6 files changed, 233 insertions(+), 33 deletions(-) - -diff --git a/plugins/keyboard/CMakeLists.txt b/plugins/keyboard/CMakeLists.txt -index f00f095..1d14652 100644 ---- a/plugins/keyboard/CMakeLists.txt -+++ b/plugins/keyboard/CMakeLists.txt -@@ -1,5 +1,7 @@ - set(TARGET_NAME kiran-cpanel-keyboard) - -+option(MODIFIER_LOCK_TIPS_VISIBLE "Is modifire lock tips visible" OFF) -+ - file(GLOB TS_FILES "translation/*.ts") - qt5_create_translation(KEYBOARD_QM ${CMAKE_CURRENT_SOURCE_DIR} ${TS_FILES}) - -@@ -36,6 +38,11 @@ target_link_libraries(${TARGET_NAME} - ${KLOG_LIBRARIES} - ${KIRAN_STYLE_LIBRARIES}) - -+if (MODIFIER_LOCK_TIPS_VISIBLE) -+ add_definitions(-DMODIFIER_LOCK_TIPS) -+endif () -+ -+ - install(TARGETS ${TARGET_NAME} - DESTINATION ${PLUGIN_LIBS_INSTALL_DIR}/) - -diff --git a/plugins/keyboard/data/com.kylinsec.Kiran.SessionDaemon.Keyboard.xml b/plugins/keyboard/data/com.kylinsec.Kiran.SessionDaemon.Keyboard.xml -index 4c7c1a9..9f535fa 100644 ---- a/plugins/keyboard/data/com.kylinsec.Kiran.SessionDaemon.Keyboard.xml -+++ b/plugins/keyboard/data/com.kylinsec.Kiran.SessionDaemon.Keyboard.xml -@@ -48,6 +48,35 @@ - clear layout option. - - -+ -+ -+ enable option. -+ -+ Switch CapsLock Tips option. -+ -+ -+ -+ -+ enable option. -+ -+ Switch NumLock tips option. -+ -+ -+ -+ -+ Whether capslock and numlock is enabled. -+ -+ -+ -+ -+ Whether capslock tips is enabled. -+ -+ -+ -+ -+ Whether numlock tips is enabled. -+ -+ - - - Whether repeat to trigger KeyPress and KeyRelease event when key is pressed. -diff --git a/plugins/keyboard/src/pages/general/general-page.cpp b/plugins/keyboard/src/pages/general/general-page.cpp -index 39608a9..dceb93f 100644 ---- a/plugins/keyboard/src/pages/general/general-page.cpp -+++ b/plugins/keyboard/src/pages/general/general-page.cpp -@@ -12,19 +12,22 @@ - * Author: yuanxing - */ - --#include "ui_general-page.h" - #include "general-page.h" - #include "keyboard_backEnd_proxy.h" -+#include "ui_general-page.h" - - #include -+#include - #include - #include --#include - - GeneralPage::GeneralPage(QWidget *parent) - : QWidget(parent), -- ui(new Ui::GeneralPage), -- m_keyboardInterface(new KeyboardBackEndProxy(KEYBOARD_DBUS_NAME,KEYBOARD_OBJECT_PATH,QDBusConnection::sessionBus(),this)) -+ ui(new Ui::GeneralPage), -+ m_keyboardInterface(new KeyboardBackEndProxy(KEYBOARD_DBUS_NAME, KEYBOARD_OBJECT_PATH, QDBusConnection::sessionBus(), this)), -+ m_modifierLockEnabled(false), -+ m_capslockTipsEnabled(false), -+ m_numlockTipsEnabled(false) - { - ui->setupUi(this); - -@@ -46,17 +49,62 @@ void GeneralPage::init() - m_timer = new QTimer(this); - m_timer->setInterval(100); - m_timer->setSingleShot(true); -- connect(m_timer, &QTimer::timeout,this,&GeneralPage::handleSaverTimerTimeOut); -+ connect(m_timer, &QTimer::timeout, this, &GeneralPage::handleSaverTimerTimeOut); - - ui->lineEdit_key->setPlaceholderText(tr("Enter characters to test the settings")); - -+#ifdef MODIFIER_LOCK_TIPS -+ // 修饰键提示开关 -+ m_modifierLockEnabled = m_keyboardInterface->modifier_lock_enabled(); -+ connect(m_keyboardInterface, &KeyboardBackEndProxy::modifier_lock_enabledChanged, [this](bool enabled) { -+ KLOG_DEBUG() << "keyboard general setting modifier lock enable changed:" << enabled; -+ m_modifierLockEnabled = enabled; -+ ui->widget_modifier_lock->setVisible(enabled); -+ ui->switch_capsLock_tip->setChecked(m_keyboardInterface->capslock_tips_enabled()); -+ ui->switch_numLock_tip->setChecked(m_keyboardInterface->numlock_tips_enabled()); -+ }); -+ -+ if (m_modifierLockEnabled) -+ { -+ //大小写锁定提示 -+ m_capslockTipsEnabled = m_keyboardInterface->capslock_tips_enabled(); -+ ui->switch_capsLock_tip->setChecked(m_capslockTipsEnabled); -+ -+ connect(ui->switch_capsLock_tip, &KiranSwitchButton::toggled, -+ this, &GeneralPage::handleSwitchCapsLockTipToggled); -+ connect(m_keyboardInterface, &KeyboardBackEndProxy::capslock_tips_enabledChanged, [this](bool enabled) { -+ KLOG_DEBUG() << "keyboard general setting capslock tips enable changed:" << enabled; -+ m_capslockTipsEnabled = enabled; -+ ui->switch_capsLock_tip->setChecked(enabled); -+ }); -+ -+ //数字键盘锁定提示 -+ m_numlockTipsEnabled = m_keyboardInterface->numlock_tips_enabled(); -+ ui->switch_numLock_tip->setChecked(m_numlockTipsEnabled); -+ -+ connect(ui->switch_numLock_tip, &KiranSwitchButton::toggled, -+ this, &GeneralPage::handleSwitchNumLockTipsToggled); -+ connect(m_keyboardInterface, &KeyboardBackEndProxy::numlock_tips_enabledChanged, [this](bool enabled) { -+ KLOG_DEBUG() << "keyboard general setting numlock tips enable changed:" << enabled; -+ m_numlockTipsEnabled = enabled; -+ ui->switch_numLock_tip->setChecked(enabled); -+ }); -+ } -+ else -+ { -+ ui->widget_modifier_lock->hide(); -+ } -+#else -+ ui->widget_modifier_lock->hide(); -+#endif -+ - // 重复键开关 - m_repeateEnabled = m_keyboardInterface->repeat_enabled(); - ui->switch_repeatKey->setChecked(m_repeateEnabled); - handleSwitchRepeatKeyToggled(m_repeateEnabled); -- connect(ui->switch_repeatKey,&KiranSwitchButton::toggled, -- this,&GeneralPage::handleSwitchRepeatKeyToggled); -- connect(m_keyboardInterface,&KeyboardBackEndProxy::repeat_enabledChanged,[this](bool enabled){ -+ connect(ui->switch_repeatKey, &KiranSwitchButton::toggled, -+ this, &GeneralPage::handleSwitchRepeatKeyToggled); -+ connect(m_keyboardInterface, &KeyboardBackEndProxy::repeat_enabledChanged, [this](bool enabled) { - KLOG_DEBUG() << "keyboard general setting repeat enable changed:" << enabled; - m_repeateEnabled = enabled; - ui->switch_repeatKey->setChecked(enabled); -@@ -65,30 +113,30 @@ void GeneralPage::init() - // 重复键延时设置 - m_delay = m_keyboardInterface->repeat_delay(); - ui->hslider_delay->setValue(m_delay); -- connect(ui->hslider_delay,&QSlider::valueChanged,[this](int value){ -+ connect(ui->hslider_delay, &QSlider::valueChanged, [this](int value) { - m_timer->start(); - }); -- connect(m_keyboardInterface,&KeyboardBackEndProxy::repeat_delayChanged,[this](int delay){ -- if( m_delay!=delay ) -+ connect(m_keyboardInterface, &KeyboardBackEndProxy::repeat_delayChanged, [this](int delay) { -+ if (m_delay != delay) - { - KLOG_DEBUG() << "keyboard general setting repeat delay changed:" << delay; -- m_delay=delay; -+ m_delay = delay; - ui->hslider_delay->setValue(m_delay); - } - }); - -- - // 重复键间隔设置 - m_interval = m_keyboardInterface->repeat_interval(); - ui->hslider_interval->setValue(m_interval); -- connect(ui->hslider_interval,&QSlider::valueChanged,[this](int value){ -+ connect(ui->hslider_interval, &QSlider::valueChanged, [this](int value) { - m_timer->start(); - }); -- connect(m_keyboardInterface,&KeyboardBackEndProxy::repeat_intervalChanged,[this](int interval){ -+ connect(m_keyboardInterface, &KeyboardBackEndProxy::repeat_intervalChanged, [this](int interval) { - if (m_interval != (ui->hslider_interval->maximum() - interval + 10)) - { - KLOG_DEBUG() << "keyboard general setting repeat interval changed:" << interval; -- m_interval = ui->hslider_interval->maximum() - interval + 10;; -+ m_interval = ui->hslider_interval->maximum() - interval + 10; -+ ; - ui->hslider_interval->setValue(m_interval); - } - }); -@@ -127,3 +175,21 @@ void GeneralPage::handleSwitchRepeatKeyToggled(bool checked) - m_keyboardInterface->setRepeat_enabled(checked); - } - } -+ -+void GeneralPage::handleSwitchCapsLockTipToggled(bool checked) -+{ -+ if (m_capslockTipsEnabled != checked) -+ { -+ m_capslockTipsEnabled = checked; -+ m_keyboardInterface->setCapslock_tips_enabled(checked); -+ } -+} -+ -+void GeneralPage::handleSwitchNumLockTipsToggled(bool checked) -+{ -+ if (m_numlockTipsEnabled != checked) -+ { -+ m_numlockTipsEnabled = checked; -+ m_keyboardInterface->setNumlock_tips_enabled(checked); -+ } -+} -diff --git a/plugins/keyboard/src/pages/general/general-page.h b/plugins/keyboard/src/pages/general/general-page.h -index e7cce52..985c6dd 100644 ---- a/plugins/keyboard/src/pages/general/general-page.h -+++ b/plugins/keyboard/src/pages/general/general-page.h -@@ -38,14 +38,19 @@ private: - private slots: - void handleSaverTimerTimeOut(); - void handleSwitchRepeatKeyToggled(bool checked); -+ void handleSwitchCapsLockTipToggled(bool checked); -+ void handleSwitchNumLockTipsToggled(bool checked); - - private: - Ui::GeneralPage *ui; -- KeyboardBackEndProxy* m_keyboardInterface; -+ KeyboardBackEndProxy *m_keyboardInterface; - QTimer *m_timer = nullptr; - bool m_repeateEnabled = false; - qint32 m_delay; - qint32 m_interval; -+ bool m_modifierLockEnabled; -+ bool m_capslockTipsEnabled; -+ bool m_numlockTipsEnabled; - }; - - #endif // GENERALPAGE_H -diff --git a/plugins/keyboard/src/pages/general/general-page.ui b/plugins/keyboard/src/pages/general/general-page.ui -index e5e12aa..62337f4 100644 ---- a/plugins/keyboard/src/pages/general/general-page.ui -+++ b/plugins/keyboard/src/pages/general/general-page.ui -@@ -6,8 +6,8 @@ - - 0 - 0 -- 556 -- 425 -+ 605 -+ 497 - - - -@@ -29,6 +29,89 @@ - - 40 - -+ -+ -+ -+ -+ 16 -+ -+ -+ 0 -+ -+ -+ 0 -+ -+ -+ 0 -+ -+ -+ 0 -+ -+ -+ -+ -+ -+ -+ Capslock Tip -+ -+ -+ -+ -+ -+ -+ Qt::Horizontal -+ -+ -+ -+ 40 -+ 20 -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ Numlock Tip -+ -+ -+ -+ -+ -+ -+ Qt::Horizontal -+ -+ -+ -+ 40 -+ 20 -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -diff --git a/plugins/keyboard/translation/kiran-cpanel-keyboard.zh_CN.ts b/plugins/keyboard/translation/kiran-cpanel-keyboard.zh_CN.ts -index 882cf4b..8eb7cbe 100644 ---- a/plugins/keyboard/translation/kiran-cpanel-keyboard.zh_CN.ts -+++ b/plugins/keyboard/translation/kiran-cpanel-keyboard.zh_CN.ts -@@ -17,68 +17,78 @@ - - - -- -+ -+ Capslock Tip -+ 大写锁定提示 -+ -+ -+ -+ Numlock Tip -+ 数字键盘锁定提示 -+ -+ -+ - Repeat Key - 重复键 - - -- -+ - (Repeat a key while holding it down) - (按住某一键时重复该键) - - -- -+ - SwitchRepeatKey - - - -- -+ - Delay - 延时 - - -- -+ - SliderRepeatDelay - - - -- -+ - Short - - - -- -+ - Long - - - -- -+ - Interval - 速度 - - -- -+ - SliderRepeatInterval - - - -- -+ - Slow - - - -- -+ - Fast - - - -- -- -+ -+ - Enter characters to test the settings - 输入字符来测试设置 - - -- -+ - EditTestRepeatKey - - --- -2.27.0 - diff --git a/0002-refactor-kiran-auth-Update-the-DBus-invocation-metho.patch b/0002-refactor-kiran-auth-Update-the-DBus-invocation-metho.patch deleted file mode 100644 index 017100d..0000000 --- a/0002-refactor-kiran-auth-Update-the-DBus-invocation-metho.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 5d3070ff4a72ef31c364fec618e5277287191842 Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Tue, 30 May 2023 11:09:17 +0800 -Subject: [PATCH 2/3] refactor(kiran auth): Update the DBus invocation method -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 更新Kiran认证服务 DBus调用方法 ---- - .../com.kylinsec.Kiran.Authentication.xml | 66 +++++++++---------- - .../src/utils/kiran-auth-dbus-proxy.cpp | 2 +- - 2 files changed, 34 insertions(+), 34 deletions(-) - -diff --git a/plugins/authentication/data/com.kylinsec.Kiran.Authentication.xml b/plugins/authentication/data/com.kylinsec.Kiran.Authentication.xml -index 026c4fa..12b077f 100644 ---- a/plugins/authentication/data/com.kylinsec.Kiran.Authentication.xml -+++ b/plugins/authentication/data/com.kylinsec.Kiran.Authentication.xml -@@ -51,7 +51,7 @@ - - - -- -+ - - driver name - -@@ -74,7 +74,7 @@ - The auth type. Refer to KADAuthType in kas-authentication-i.h - - -- The device ID. -+ The default device ID. - - - -@@ -83,37 +83,7 @@ - The auth type. Refer to KADAuthType in kas-authentication-i.h - - -- The device ID. -- -- -- -- -- -- The auth type. Refer to KADAuthType in kas-authentication-i.h -- -- -- Whether the authentication type is enabled -- -- -- -- -- -- The auth type. Refer to KADAuthType in kas-authentication-i.h -- -- -- Whether the authentication type is enabled -- -- -- -- -- -- The auth type. Refer to KADAuthType in kas-authentication-i.h -- -- -- Authentication application, Refer to KADAuthApplication in kas-authentication-i.h -- -- -- Whether to enable the authentication type in this application -+ The default device ID. - - - -@@ -148,6 +118,36 @@ - - - -+ -+ -+ The auth type. Refer to KADAuthType in kas-authentication-i.h -+ -+ -+ Whether the authentication type is enabled -+ -+ -+ -+ -+ -+ The auth type. Refer to KADAuthType in kas-authentication-i.h -+ -+ -+ Whether the authentication type is enabled -+ -+ -+ -+ -+ -+ The auth type. Refer to KADAuthType in kas-authentication-i.h -+ -+ -+ Authentication application, Refer to KADAuthApplication in kas-authentication-i.h -+ -+ -+ Whether to enable the authentication type in this application -+ -+ -+ - - The authentication mode contains AND and OR. Refer to enum AuthMode in file kas-authentication-i.h. - -diff --git a/plugins/authentication/src/utils/kiran-auth-dbus-proxy.cpp b/plugins/authentication/src/utils/kiran-auth-dbus-proxy.cpp -index 0bd77b5..09a60d8 100644 ---- a/plugins/authentication/src/utils/kiran-auth-dbus-proxy.cpp -+++ b/plugins/authentication/src/utils/kiran-auth-dbus-proxy.cpp -@@ -151,7 +151,7 @@ KiranAuthDBusProxy::getDriversByType(KADAuthType type) - - void KiranAuthDBusProxy::setDriverEnalbe(const QString& driverName,bool enable) - { -- auto reply = m_authProxy->SetDrivereEanbled(driverName,enable); -+ auto reply = m_authProxy->SetDrivereEnabled(driverName,enable); - reply.waitForFinished(); - } - --- -2.33.0 - diff --git a/0003-fix-plugins-group-Fix-problem-rename-group-name-inpu.patch b/0003-fix-plugins-group-Fix-problem-rename-group-name-inpu.patch deleted file mode 100644 index 8aa9d8a..0000000 --- a/0003-fix-plugins-group-Fix-problem-rename-group-name-inpu.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 732efe36e3826ef53492b08b16f3d13fdd3f0f07 Mon Sep 17 00:00:00 2001 -From: xiaowen -Date: Tue, 30 May 2023 16:16:17 +0800 -Subject: [PATCH 3/3] fix(plugins/group):Fix problem rename group name input - box display incomplete -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修复组名成输入框显示不全的问题 - -close #67654 - -Signed-off-by: xiaowen ---- - .../src/pages/group-info-page/group-info-page.ui | 13 ++++++++----- - 1 file changed, 8 insertions(+), 5 deletions(-) - -diff --git a/plugins/group/src/pages/group-info-page/group-info-page.ui b/plugins/group/src/pages/group-info-page/group-info-page.ui -index 09aad41..8526c55 100644 ---- a/plugins/group/src/pages/group-info-page/group-info-page.ui -+++ b/plugins/group/src/pages/group-info-page/group-info-page.ui -@@ -82,7 +82,7 @@ - 0 - - -- -+ - - - 16777215 -@@ -154,7 +154,7 @@ - - - -- -+ - - - 16777215 -@@ -168,6 +168,9 @@ - - 16 - -+ -+ 0 -+ - - - -@@ -293,7 +296,7 @@ - - - -- -+ - - - 16777215 -@@ -366,7 +369,7 @@ - - - -- -+ - - - 16777215 -@@ -516,7 +519,7 @@ - 0 - - -- -+ - - - 16777215 --- -2.33.0 - diff --git a/kiran-control-panel-2.5.3.tar.gz b/kiran-control-panel-2.5.5.tar.gz similarity index 66% rename from kiran-control-panel-2.5.3.tar.gz rename to kiran-control-panel-2.5.5.tar.gz index 32be0c4..1a8d82f 100644 Binary files a/kiran-control-panel-2.5.3.tar.gz and b/kiran-control-panel-2.5.5.tar.gz differ diff --git a/kiran-control-panel.spec b/kiran-control-panel.spec index fecd2b5..36a43b7 100644 --- a/kiran-control-panel.spec +++ b/kiran-control-panel.spec @@ -1,18 +1,12 @@ Name: kiran-control-panel -Version: 2.5.3 -Release: 4 +Version: 2.5.5 +Release: 1 Summary: Kiran Control Panel Summary(zh_CN): Kiran桌面控制面板 License: MulanPSL-2.0 Source0: %{name}-%{version}.tar.gz -Patch0001: 0001-fix-auth-Verify-the-current-password-when-logging-fe.patch -Patch0002: 0002-refactor-kiran-auth-Update-the-DBus-invocation-metho.patch -Patch0003: 0003-fix-plugins-group-Fix-problem-rename-group-name-inpu.patch -Patch0004: 0001-fix-mouse-add-mouse-wheel-direction-test-if-compile-.patch -Patch0005: 0002-fix-keybord-add-modifier-lock-tip-with-option-MODIFI.patch -Patch0006: 0001-fix-keyboard-change-describtion-of-enter-repeat-char.patch BuildRequires: gcc-c++ BuildRequires: cmake >= 3.2 @@ -168,6 +162,18 @@ make %{?_smp_mflags} rm -rf %{buildroot} %changelog +* Tue Aug 15 2023 luoqing - 2.5.5-1 +- KYOS-F: Added pop-up prompt when inserting or removing a network cable (#11814) +- KYOS-F: Change the name "Wired Network 1" in the left column to the name of the network card, corresponding to the network tray(10429) + +* Fri Jul 14 2023 yuanxing - 2.5.4-2.gc +- KYOS-F: add mouse wheel direction test with MOUSE_WHEEL_TEST_VISIBLE=ON (#9124) +- KYOS-F: add modifier lock tips with MODIFIER_LOCK_TIPS_VISIBLE=ON (#9379) + +* Sun Jul 09 2023 liuxinhao - 2.5.4-1.gc +- KYOS-F: KYOS-F: Add specific screensaver settings to the GC version(#9381) +- KYOS-F: using kiran-cc-daemon backend to set computer mode for GC version + * Mon Aug 14 2023 yuanxing - 2.5.3-4 - KYOS-F: chang the keyborad test describtion to enter repeat char to test (#7581)