fix(network):Change the name "Wired Network 1" in the left column to the name of the network card, corresponding to the network tray;Added pop-up prompt when inserting or removing a network cable

- 将左列“有线网络1”等名称改为网卡名称,和网络托盘对应
  将标题“有线网卡”改为有线网络配置
  增加插拔网线时的弹窗提示

Related #11814,#10429
This commit is contained in:
luoqing 2023-08-15 17:10:53 +08:00
parent b4776462f1
commit 58b4c04030
8 changed files with 14 additions and 2691 deletions

View File

@ -1,815 +0,0 @@
From 7fe0be8d4bca4bc59f755bc2ec521b0c750e95b0 Mon Sep 17 00:00:00 2001
From: liuxinhao <liuxinhao@kylinsec.com.cn>
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 <kiran-color-block.h>
-#include <kiran-passwd-edit.h>
#include <style-property.h>
+#include <kiran-passwd-edit.h>
#include <QBoxLayout>
#include <QEventLoop>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <qt5-log-i.h>
-#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 <kiranwidgets-qt5/kiran-titlebar-window.h>
+#include <QLineEdit>
-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 <security/pam_appl.h>
+#include <qt5-log-i.h>
+#include <pwd.h>
+#include <unistd.h>
+
+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 <liuxinhao@kylinsec.com.cn>
*/
#pragma once
-#include <kiranwidgets-qt5/kiran-titlebar-window.h>
+#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 <kiran-color-block.h>
-#include <style-property.h>
-#include <QBoxLayout>
-#include <QEventLoop>
-#include <QLabel>
-#include <QLineEdit>
-#include <QPushButton>
-#include <qt5-log-i.h>
-#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 <liuxinhao@kylinsec.com.cn>
*/
#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 <kiran-message-box.h>
@@ -138,11 +139,18 @@ void GeneralBioPage::onFeatureRenameClicked()
auto iid = settingItem->getUserData().toString();
auto name = settingItem->getText();
- QScopedPointer<IdentificationRenameDialog> 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 @@
<translation>人脸</translation>
</message>
</context>
+<context>
+ <name>CheckpasswdDialog</name>
+ <message>
+ <source>Check password</source>
+ <translation>校验当前用户密码</translation>
+ </message>
+ <message>
+ <source>Check the current password before you enroll the feature</source>
+ <translation>录入特征之前需要校验当前密码</translation>
+ </message>
+</context>
<context>
<name>DriverPage</name>
<message>
@@ -179,6 +190,14 @@
<source>tips</source>
<translation>提示</translation>
</message>
+ <message>
+ <source>Error</source>
+ <translation>错误</translation>
+ </message>
+ <message>
+ <source> Failed to enroll feature because the password verification failed</source>
+ <translation>由于密码校验失败,录入特征失败!</translation>
+ </message>
</context>
<context>
<name>IdentificationRenameDialog</name>
@@ -192,11 +211,11 @@
</message>
<message>
<source>Confirm</source>
- <translation>确认</translation>
+ <translation type="vanished">确认</translation>
</message>
<message>
<source>Cancel</source>
- <translation>取消</translation>
+ <translation type="vanished">取消</translation>
</message>
</context>
<context>
@@ -324,11 +343,11 @@
</message>
<message>
<source>Confirm</source>
- <translation>确认</translation>
+ <translation type="vanished">确认</translation>
</message>
<message>
<source>Cancel</source>
- <translation>取消</translation>
+ <translation type="vanished">取消</translation>
</message>
</context>
</TS>
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 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
+<context>
+ <name>InputDialog</name>
+ <message>
+ <location filename="../lib/common-widgets/input-dialog/input-dialog.cpp" line="102"/>
+ <source>Confirm</source>
+ <translation>确认</translation>
+ </message>
+ <message>
+ <location filename="../lib/common-widgets/input-dialog/input-dialog.cpp" line="111"/>
+ <source>Cancel</source>
+ <translation>取消</translation>
+ </message>
+</context>
<context>
<name>KiranModuleWidget</name>
<message>
@@ -11,6 +24,19 @@
<source>The edited content in %1 is not saved. After switching, the edited content will be lost. Are you sure you want to save</source>
<translation type="vanished">%1中编辑的内容未保存切换后编辑的内容将会丢失。您确定要保存吗?</translation>
</message>
+ <message>
+ <location filename="../lib/common-widgets/kiran-module-widget/kiran-module-widget.ui" line="14"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>KiranTips</name>
+ <message>
+ <location filename="../lib/common-widgets/kiran-tips/kiran-tips.ui" line="29"/>
+ <source>Form</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PanelWindow</name>
--
2.33.0

View File

@ -1,62 +0,0 @@
From a70b1c1eeaa23437c3d3fed61cd5b60751e1f43d Mon Sep 17 00:00:00 2001
From: yuanxing <yuanxing@kylinos.com.cn>
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 @@
<item>
<widget class="QLabel" name="label_6">
<property name="text">
- <string>Enter characters to test the settings</string>
+ <string>Enter repeat characters to test</string>
</property>
</widget>
</item>
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 @@
<message>
<location filename="../src/pages/general/general-page.ui" line="338"/>
<location filename="../src/pages/general/general-page.cpp" line="54"/>
- <source>Enter characters to test the settings</source>
- <translation>输入字符来测试设置</translation>
+ <source>Enter repeat characters to test</source>
+ <translation>输入重复字符测试</translation>
</message>
<message>
<location filename="../src/pages/general/general-page.ui" line="357"/>
--
2.27.0

File diff suppressed because it is too large Load Diff

View File

@ -1,474 +0,0 @@
From 7b743193e9baf70403f29d90cf7f0cd280adba67 Mon Sep 17 00:00:00 2001
From: yuanxing <yuanxing@kylinsec.com.cn>
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 @@
<description>clear layout option.</description>
</method>
+ <method name="SwitchCapsLockTips">
+ <arg type="b" name="enabled" direction="in">
+ <summary>enable option.</summary>
+ </arg>
+ <description>Switch CapsLock Tips option.</description>
+ </method>
+
+ <method name="SwitchNumLockTips">
+ <arg type="b" name="enabled" direction="in">
+ <summary>enable option.</summary>
+ </arg>
+ <description>Switch NumLock tips option.</description>
+ </method>
+
+ <property name="modifier_lock_enabled" type="b" access="readwrite">
+ <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="true"/>
+ <description>Whether capslock and numlock is enabled.</description>
+ </property>
+
+ <property name="capslock_tips_enabled" type="b" access="readwrite">
+ <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="true"/>
+ <description>Whether capslock tips is enabled.</description>
+ </property>
+
+ <property name="numlock_tips_enabled" type="b" access="readwrite">
+ <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="true"/>
+ <description>Whether numlock tips is enabled.</description>
+ </property>
+
<property name="repeat_enabled" type="b" access="readwrite">
<annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="true"/>
<description>Whether repeat to trigger KeyPress and KeyRelease event when key is pressed.</description>
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 <yuanxing@kylinsec.com.cn>
*/
-#include "ui_general-page.h"
#include "general-page.h"
#include "keyboard_backEnd_proxy.h"
+#include "ui_general-page.h"
#include <kiran-log/qt5-log-i.h>
+#include <kiran-session-daemon/keyboard-i.h>
#include <QSharedPointer>
#include <iostream>
-#include <kiran-session-daemon/keyboard-i.h>
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 @@
<rect>
<x>0</x>
<y>0</y>
- <width>556</width>
- <height>425</height>
+ <width>605</width>
+ <height>497</height>
</rect>
</property>
<property name="windowTitle">
@@ -29,6 +29,89 @@
<property name="bottomMargin">
<number>40</number>
</property>
+ <item>
+ <widget class="QWidget" name="widget_modifier_lock" native="true">
+ <layout class="QVBoxLayout" name="verticalLayout_5">
+ <property name="spacing">
+ <number>16</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_7">
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Capslock Tip</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_6">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="KiranSwitchButton" name="switch_capsLock_tip">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_8">
+ <item>
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>Numlock Tip</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_7">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="KiranSwitchButton" name="switch_numLock_tip">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
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 @@
<translation></translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="40"/>
+ <location filename="../src/pages/general/general-page.ui" line="55"/>
+ <source>Capslock Tip</source>
+ <translation>大写锁定提示</translation>
+ </message>
+ <message>
+ <location filename="../src/pages/general/general-page.ui" line="86"/>
+ <source>Numlock Tip</source>
+ <translation>数字键盘锁定提示</translation>
+ </message>
+ <message>
+ <location filename="../src/pages/general/general-page.ui" line="123"/>
<source>Repeat Key</source>
<translation>重复键</translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="47"/>
+ <location filename="../src/pages/general/general-page.ui" line="130"/>
<source>(Repeat a key while holding it down)</source>
<translation>(按住某一键时重复该键)</translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="67"/>
+ <location filename="../src/pages/general/general-page.ui" line="150"/>
<source>SwitchRepeatKey</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="86"/>
+ <location filename="../src/pages/general/general-page.ui" line="169"/>
<source>Delay</source>
<translation>延时</translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="108"/>
+ <location filename="../src/pages/general/general-page.ui" line="191"/>
<source>SliderRepeatDelay</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="132"/>
+ <location filename="../src/pages/general/general-page.ui" line="215"/>
<source>Short</source>
<translation>短</translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="152"/>
+ <location filename="../src/pages/general/general-page.ui" line="235"/>
<source>Long</source>
<translation>长</translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="170"/>
+ <location filename="../src/pages/general/general-page.ui" line="253"/>
<source>Interval</source>
<translation>速度</translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="192"/>
+ <location filename="../src/pages/general/general-page.ui" line="275"/>
<source>SliderRepeatInterval</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="219"/>
+ <location filename="../src/pages/general/general-page.ui" line="302"/>
<source>Slow</source>
<translation>慢</translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="239"/>
+ <location filename="../src/pages/general/general-page.ui" line="322"/>
<source>Fast</source>
<translation>快</translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="255"/>
- <location filename="../src/pages/general/general-page.cpp" line="51"/>
+ <location filename="../src/pages/general/general-page.ui" line="338"/>
+ <location filename="../src/pages/general/general-page.cpp" line="54"/>
<source>Enter characters to test the settings</source>
<translation>输入字符来测试设置</translation>
</message>
<message>
- <location filename="../src/pages/general/general-page.ui" line="274"/>
+ <location filename="../src/pages/general/general-page.ui" line="357"/>
<source>EditTestRepeatKey</source>
<translation type="unfinished"></translation>
</message>
--
2.27.0

View File

@ -1,128 +0,0 @@
From 5d3070ff4a72ef31c364fec618e5277287191842 Mon Sep 17 00:00:00 2001
From: liuxinhao <liuxinhao@kylinsec.com.cn>
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 @@
</arg>
</method>
- <method name="SetDrivereEanbled">
+ <method name="SetDrivereEnabled">
<arg name="driver_name" direction="in" type="s">
<description>driver name</description>
</arg>
@@ -74,7 +74,7 @@
<description>The auth type. Refer to KADAuthType in kas-authentication-i.h</description>
</arg>
<arg name="device_id" direction="in" type="s">
- <description>The device ID.</description>
+ <description>The default device ID.</description>
</arg>
</method>
@@ -83,37 +83,7 @@
<description>The auth type. Refer to KADAuthType in kas-authentication-i.h</description>
</arg>
<arg name="device_id" direction="out" type="s">
- <description>The device ID.</description>
- </arg>
- </method>
-
- <method name="GetAuthTypeEnabled">
- <arg name="auth_type" direction="in" type="i">
- <description>The auth type. Refer to KADAuthType in kas-authentication-i.h</description>
- </arg>
- <arg name="enabled" direction="out" type="b">
- <description>Whether the authentication type is enabled</description>
- </arg>
- </method>
-
- <method name="SetAuthTypeEnabled">
- <arg name="auth_type" direction="in" type="i">
- <description>The auth type. Refer to KADAuthType in kas-authentication-i.h</description>
- </arg>
- <arg name="enabled" direction="in" type="b">
- <description>Whether the authentication type is enabled</description>
- </arg>
- </method>
-
- <method name="GetAuthTypeEnabledForApp">
- <arg name="auth_type" direction="in" type="i">
- <description>The auth type. Refer to KADAuthType in kas-authentication-i.h</description>
- </arg>
- <arg name="auth_app" direction="in" type="i">
- <description>Authentication application, Refer to KADAuthApplication in kas-authentication-i.h</description>
- </arg>
- <arg name="enabled" direction="out" type="b">
- <description>Whether to enable the authentication type in this application</description>
+ <description>The default device ID.</description>
</arg>
</method>
@@ -148,6 +118,36 @@
</arg>
</method>
+ <method name="GetAuthTypeEnabled">
+ <arg name="auth_type" direction="in" type="i">
+ <description>The auth type. Refer to KADAuthType in kas-authentication-i.h</description>
+ </arg>
+ <arg name="enabled" direction="out" type="b">
+ <description>Whether the authentication type is enabled</description>
+ </arg>
+ </method>
+
+ <method name="SetAuthTypeEnabled">
+ <arg name="auth_type" direction="in" type="i">
+ <description>The auth type. Refer to KADAuthType in kas-authentication-i.h</description>
+ </arg>
+ <arg name="enabled" direction="in" type="b">
+ <description>Whether the authentication type is enabled</description>
+ </arg>
+ </method>
+
+ <method name="GetAuthTypeEnabledForApp">
+ <arg name="auth_type" direction="in" type="i">
+ <description>The auth type. Refer to KADAuthType in kas-authentication-i.h</description>
+ </arg>
+ <arg name="auth_app" direction="in" type="i">
+ <description>Authentication application, Refer to KADAuthApplication in kas-authentication-i.h</description>
+ </arg>
+ <arg name="enabled" direction="out" type="b">
+ <description>Whether to enable the authentication type in this application</description>
+ </arg>
+ </method>
+
<property name="AuthMode" type="i" access="read">
<description>The authentication mode contains AND and OR. Refer to enum AuthMode in file kas-authentication-i.h.</description>
</property>
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

View File

@ -1,80 +0,0 @@
From 732efe36e3826ef53492b08b16f3d13fdd3f0f07 Mon Sep 17 00:00:00 2001
From: xiaowen <xiaowen@kylinsec.com.cn>
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 <xiaowen@kylinsec.com.cn>
---
.../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 @@
<number>0</number>
</property>
<item>
- <widget class="QWidget" name="" native="true">
+ <widget class="QWidget" name="widget" native="true">
<property name="maximumSize">
<size>
<width>16777215</width>
@@ -154,7 +154,7 @@
</widget>
</item>
<item>
- <widget class="QWidget" name="" native="true">
+ <widget class="QWidget" name="widget" native="true">
<property name="maximumSize">
<size>
<width>16777215</width>
@@ -168,6 +168,9 @@
<property name="topMargin">
<number>16</number>
</property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
@@ -293,7 +296,7 @@
</widget>
</item>
<item>
- <widget class="QWidget" name="" native="true">
+ <widget class="QWidget" name="widget" native="true">
<property name="maximumSize">
<size>
<width>16777215</width>
@@ -366,7 +369,7 @@
</spacer>
</item>
<item>
- <widget class="QWidget" name="" native="true">
+ <widget class="QWidget" name="widget" native="true">
<property name="maximumSize">
<size>
<width>16777215</width>
@@ -516,7 +519,7 @@
<number>0</number>
</property>
<item>
- <widget class="QWidget" name="" native="true">
+ <widget class="QWidget" name="widget" native="true">
<property name="maximumSize">
<size>
<width>16777215</width>
--
2.33.0

View File

@ -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 <luoqing@kylinsec.com.cn> - 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 <yuanxing@kylinsec.com.cn> - 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 <liuxinhao@kylinsec.com.cn> - 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 <yuanxing@kylinsec.com.cn> - 2.5.3-4
- KYOS-F: chang the keyborad test describtion to enter repeat char to test (#7581)