diff --git a/0000-fix-audio-when-the-tray-is-initialized-determine-whe.patch b/0000-fix-audio-when-the-tray-is-initialized-determine-whe.patch new file mode 100644 index 0000000000000000000000000000000000000000..4d8f643dee04b5debfbc1ed503a305f08eaf4a2b --- /dev/null +++ b/0000-fix-audio-when-the-tray-is-initialized-determine-whe.patch @@ -0,0 +1,53 @@ +From 278237ebcb646037d6c77ebbbf3a9629d2b086c0 Mon Sep 17 00:00:00 2001 +From: luoqing +Date: Fri, 23 Feb 2024 14:27:17 +0800 +Subject: [PATCH 0/1] fix(audio):when the tray is initialized, determine + whether there is asound card,if not, the volume icon is disabled +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 托盘初始化时,判断是否存在声卡,若不存在则音量图标显示禁用 + +Related #22865 +--- + plugins/audio/src/system-tray/audio-system-tray.cpp | 10 +++++++--- + plugins/audio/src/system-tray/volume-setting-page.cpp | 1 + + 2 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/plugins/audio/src/system-tray/audio-system-tray.cpp b/plugins/audio/src/system-tray/audio-system-tray.cpp +index 5b2522f..c4b726c 100644 +--- a/plugins/audio/src/system-tray/audio-system-tray.cpp ++++ b/plugins/audio/src/system-tray/audio-system-tray.cpp +@@ -83,9 +83,13 @@ void AudioSystemTray::initMixedSettingPage() + + void AudioSystemTray::initTrayIcon() + { +- QDBusPendingReply defaultSinkPath = m_audioInterface->GetDefaultSink(); +- AudioDeviceInterface defaultSink (AUDIO_DBUS_NAME, defaultSinkPath, QDBusConnection::sessionBus()); +- double currentVolumeDouble = defaultSink.volume() * 100; ++ double currentVolumeDouble = 0; ++ if(!m_audioInterface->getCards().isEmpty()) ++ { ++ QDBusPendingReply defaultSinkPath = m_audioInterface->GetDefaultSink(); ++ AudioDeviceInterface defaultSink (AUDIO_DBUS_NAME, defaultSinkPath, QDBusConnection::sessionBus()); ++ currentVolumeDouble = defaultSink.volume() * 100; ++ } + setTrayIcon(round(currentVolumeDouble)); + } + +diff --git a/plugins/audio/src/system-tray/volume-setting-page.cpp b/plugins/audio/src/system-tray/volume-setting-page.cpp +index b2dcb62..1925c8d 100644 +--- a/plugins/audio/src/system-tray/volume-setting-page.cpp ++++ b/plugins/audio/src/system-tray/volume-setting-page.cpp +@@ -296,6 +296,7 @@ void VolumeSettingPage::disableSettings() + ui->volume->setText(QString::number(0) + "%"); + ui->volumeSetting->setEnabled(false); + setVolumeIcon(0); ++ emit volumeChanged(0); + } + + void VolumeSettingPage::hideLine() +-- +2.27.0 + diff --git a/0000-fix-pkgconfig-Fix-the-issue-of-incorrect-content-in-.patch b/0000-fix-pkgconfig-Fix-the-issue-of-incorrect-content-in-.patch deleted file mode 100644 index 339257f1bac45f80d151b6ed2e714128dbb4e0c2..0000000000000000000000000000000000000000 --- a/0000-fix-pkgconfig-Fix-the-issue-of-incorrect-content-in-.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 558754678f0a34d1e624dcc9c17b583bc05d4d80 Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Tue, 12 Dec 2023 20:26:29 +0800 -Subject: [PATCH] fix(pkgconfig): Fix the issue of incorrect content in the PC - file provided by pkgconfig -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修复提供的pkgconfig配置内容缺失的问题 ---- - data/kiran-control-panel.pc.in | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/data/kiran-control-panel.pc.in b/data/kiran-control-panel.pc.in -index de3ae6b..1e50a0d 100644 ---- a/data/kiran-control-panel.pc.in -+++ b/data/kiran-control-panel.pc.in -@@ -1,7 +1,7 @@ --includedir=@KCP_INSTALL_INCLUDE@ -+includedir=@KCP_INCLUDEDIR@ - --category_desktop_location=@CATEGORY_DESKTOP_INSTALL_DIR@ --category_icon_location=@CATEGORY_ICON_INSTALL_DIR@ -+category_desktop_location=@CATEGORY_DESKTOP_DIR@ -+category_icon_location=@CATEGORY_ICON_DIR@ - - plugin_location=@PLUGIN_LIBS_DIR@ - plugin_desktop_location=@PLUGIN_DESKTOP_DIR@ --- -2.27.0 - diff --git a/0001-fix-appearance-remove-the-Kiran-and-Adwaita-icon-the.patch b/0001-fix-appearance-remove-the-Kiran-and-Adwaita-icon-the.patch deleted file mode 100644 index 9cdc85d4c3e694abc4ea4dd542f512200bf67831..0000000000000000000000000000000000000000 --- a/0001-fix-appearance-remove-the-Kiran-and-Adwaita-icon-the.patch +++ /dev/null @@ -1,9973 +0,0 @@ -From a6ac8962724e45553dacdf74fa80a11e04d9b635 Mon Sep 17 00:00:00 2001 -From: yuanxing -Date: Wed, 13 Dec 2023 14:04:46 +0800 -Subject: [PATCH] fix(appearance):remove the Kiran and Adwaita icon theme in ui - and translate the icon name for show -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 在界面中不显示Kiran和Adwaita图标主题,将图标名称翻译为中文显示在界面 ---- - .../pages/theme/icon/icon-theme-page.cpp | 6 +- - .../pages/theme/icon/icon-theme-page.h | 7 +- - plugins/appearance/pages/theme/theme-page.cpp | 20 +- - translations/kiran-control-panel.zh_CN.ts | 7099 ++++++++++------- - 4 files changed, 4079 insertions(+), 3053 deletions(-) - -diff --git a/plugins/appearance/pages/theme/icon/icon-theme-page.cpp b/plugins/appearance/pages/theme/icon/icon-theme-page.cpp -index 7aaa142..845d5bf 100644 ---- a/plugins/appearance/pages/theme/icon/icon-theme-page.cpp -+++ b/plugins/appearance/pages/theme/icon/icon-theme-page.cpp -@@ -96,7 +96,6 @@ void IconThemePage::loadIconThemes() - for (auto theme : themeInfos) - { - // 过滤非白名单主题 -- static const QStringList iconThemeWhiteList = {"Kiran", "Adwaita", "Spring","Summer"}; - if (!iconThemeWhiteList.contains(theme.name)) - { - continue; -@@ -174,11 +173,10 @@ ThemePreviewWidget* IconThemePage::createPreviewWidget(const QString& themeName, - previewWidget->setSpacingAndMargin(24, QMargins(24, 0, 24, 0)); - previewWidget->setSelectedIndicatorEnable(true); - previewWidget->setSelected(selected); -- previewWidget->setThemeInfo(themeName, themeName); -+ previewWidget->setThemeInfo(iconThemeWhiteList.value(themeName, themeName), themeName); - previewWidget->setPreviewPixmapSize(QSize(40, 40)); - previewWidget->appendPreviewPixmap(pixmaps); -- connect(previewWidget, &ThemePreviewWidget::pressed, this, [this]() -- { emit requestReturn(); }); -+ connect(previewWidget, &ThemePreviewWidget::pressed, this, [this]() { emit requestReturn(); }); - - return previewWidget; - } -diff --git a/plugins/appearance/pages/theme/icon/icon-theme-page.h b/plugins/appearance/pages/theme/icon/icon-theme-page.h -index 853ef13..dbc52e1 100644 ---- a/plugins/appearance/pages/theme/icon/icon-theme-page.h -+++ b/plugins/appearance/pages/theme/icon/icon-theme-page.h -@@ -16,8 +16,13 @@ - #define ICONTHEMES_H - - #include --#include - #include -+#include -+ -+// 图标主题及对应翻译 -+const QMap iconThemeWhiteList = { -+ {"Spring", QObject::tr("Spring")}, -+ {"Summer", QObject::tr("Summer")}}; - - namespace Ui - { -diff --git a/plugins/appearance/pages/theme/theme-page.cpp b/plugins/appearance/pages/theme/theme-page.cpp -index a20c4a5..7c303b7 100644 ---- a/plugins/appearance/pages/theme/theme-page.cpp -+++ b/plugins/appearance/pages/theme/theme-page.cpp -@@ -89,21 +89,19 @@ bool ThemePage::initIconTheme() - return false; - } - -- m_chooseIconWidget->setName(m_currIconTheme); -+ m_chooseIconWidget->setName(iconThemeWhiteList.value(m_currIconTheme, m_currIconTheme)); - - m_iconThemePage = new IconThemePage(ui->stackedWidget); - m_iconThemePage->installEventFilter(this); - ui->stackedWidget->addWidget(m_iconThemePage); - - connect(m_chooseIconWidget, &SettingBriefWidget::clicked, this, -- [this] -- { -+ [this] { - ui->stackedWidget->setCurrentWidget(m_iconThemePage); - }); - - connect(m_iconThemePage, &IconThemePage::requestReturn, this, -- [&, this]() -- { -+ [&, this]() { - ui->stackedWidget->setCurrentIndex(0); - }); - -@@ -128,14 +126,12 @@ bool ThemePage::initCursorTheme() - ui->stackedWidget->addWidget(m_cursorThemePage); - - connect(m_chooseCursorWidget, &SettingBriefWidget::clicked, -- [this] -- { -+ [this] { - ui->stackedWidget->setCurrentWidget(m_cursorThemePage); - }); - - connect(m_cursorThemePage, &CursorThemePage::requestReturn, -- [this]() -- { -+ [this]() { - ui->stackedWidget->setCurrentIndex(0); - }); - -@@ -154,8 +150,7 @@ void ThemePage::createThemeWidget() - const QList uiThemes = { - {tr("Light Theme"), LIGHT_THEME, ":/kcp-appearance/images/theme-light.png"}, - {tr("Auto"), THEME_AUTO_NAME, ":/kcp-appearance/images/theme-auto.png"}, -- {tr("Dark Theme"), DARK_THEME, ":/kcp-appearance/images/theme-dark.png"} -- }; -+ {tr("Dark Theme"), DARK_THEME, ":/kcp-appearance/images/theme-dark.png"}}; - - for (int i = 0; i < uiThemes.count(); i++) - { -@@ -212,7 +207,7 @@ void ThemePage::handleThemeChange(int type) - { - QString iconName; - AppearanceGlobalInfo::instance()->getTheme(APPEARANCE_THEME_TYPE_ICON, iconName); -- m_chooseIconWidget->setName(iconName); -+ m_chooseIconWidget->setName(iconThemeWhiteList.value(iconName, iconName)); - m_iconThemePage->updateCurrentTheme(iconName); - break; - } -@@ -258,5 +253,4 @@ void ThemePage::onCurrentUiThemeChanged() - KLOG_INFO(qLcAppearance) << "updated ui theme" << currentID; - } - } -- - } -diff --git a/translations/kiran-control-panel.zh_CN.ts b/translations/kiran-control-panel.zh_CN.ts -index 1ef3d82..6fb278f 100644 ---- a/translations/kiran-control-panel.zh_CN.ts -+++ b/translations/kiran-control-panel.zh_CN.ts -@@ -2,5768 +2,6797 @@ - - - -- CPanelNetworkWidget -+ AccountItemWidget - -- CPanelNetworkWidget -- -+ Create new user -+ 创建新用户 - - -- VPN -- VPN -+ disable -+ 禁用 - - -- Network Details -- 网络详情 -+ enable -+ 启用 - -+ -+ -+ AccountSubItem - -- Wired Network -- 有线网络 -+ -+ account -+ 帐户 - - -- Wireless Network -- 无线网络 -+ -+ New User -+ 创建新用户 - -+ -+ -+ AccountWidget - -- Connected -- 已连接 -+ -+ -+ disable -+ 禁用 - - -- Unavailable -- 已禁用 -+ -+ -+ enable -+ 启用 - - -- Disconnected -- 已断开 -+ -+ Create new user -+ 创建新用户 - -+ -+ -+ ActGuideWidget - -- Wired Network %1 -- 有线网络 %1 -+ Please choose activation mode: -+ 请选择激活方式: - - -- Wireless Network %1 -- 无线网络 %1 -+ Next -+ 下一步 - -- -- -- ConnectionDetailsWidget - -- ConnectionDetailsWidget -- -+ Current machine code: -+ 当前系统机器码: - - -- Security type -- 安全类型 -+ Please input activation code: -+ 请输入激活码: - - -- TextLabel -- -+ Back -+ 上一步 - - -- Frequency band -- 频段 -+ Please insert the UsbKey device first! -+ 请先插入UsbKey设备! - - -- Channel -- 网络通道 -+ Activate online -+ 在线激活 - - -- Interface -- 接口 -+ Activate with the input activation code -+ 输入激活码激活 - - -- MAC -- -+ Activate with insert UsbKey -+ 插入UsbKey设备激活 - - -- IPv4 -- -+ Activate -+ 激活 - - -- Gateway -- 网关 -+ Please enter the activate server address: -+ 请输入激活服务器地址: - - -- DNS -- -+ Activating...... -+ 正在激活...... - - -- Subnet mask -- 子网掩码 -+ System activate successful! -+ 系统激活成功! - - -- IPv6 -- -+ server activation and remaining points: -+ 服务器版激活点数和剩余点数: - - -- Prefix -- 前缀 -+ development activation and remaining points: -+ 开发版激活点数和剩余点数: - - -- Rate -- 速率 -+ industrial activation and remaining points: -+ 工控版激活点数和剩余点数: - - -- Preferred DNS -- 首选DNS -+ desktop activation and remaining points: -+ 桌面版激活点数和剩余点数: - -- -- -- ConnectionItemWidget - -- -- disconnect -- 断开 -+ activation points: -+ 激活点数: - - -- -- ignore -- 忽略 -+ remaining points: -+ 剩余点数: - - -- -- remove -- 移除 -+ Close -+ 关闭 - - -- -- The current device:%1 is not available -- 当前设备:%1 不可用 -+ System activate failed! -+ 系统激活失败! - - -- -- The carrier is pulled out -- 网线被拔出 -+ unknow -+ 未知 - - -- -- Are you sure you want to delete the connection %1 -- 您是否确定要删除连接 "%1" -+ Activation Mode -+ 选择激活方式 - - -- -- Warning -- 警告 -+ Start Activation -+ 开始激活 - - -- -- -- Tips -- 提示 -+ Activation Complete -+ 激活完成 - - -- -- Password required to connect to %1. -- 连接网络 "%1" 需要密码 -+ Activation Guide -+ 激活向导 - - -- -- Please input a network name -- 请输入网络名称 -+ Server IP address or Domain name -+ 服务器IP地址或域名 - - - -- ConnectionNameWidget -+ AdvanceSettings - -- ConnectionNameWidget -- -+ -+ Advance Settings -+ 高级设置 - - -- TextLabel -- -+ -+ -+ Automatically generated by system -+ 由系统自动生成 - - -- EditConnectionName -- -+ -+ Please enter the correct path -+ 请输入正确的路径 - - -- Auto Connection -- 自动连接 -+ -+ Please enter specify user Id -+ 请输入用户ID - - -- Required -- 必填 -+ -+ Please enter an integer above 1000 -+ 请输入一个大于或等于1000的整数 - - -- Wired Connection %1 -- 有线网络%1 -+ -+ Please enter the correct home directory -+ 请输入正确的用户目录 - - -- VPN L2TP %1 -- -+ -+ Form -+ - - -- VPN PPTP %1 -+ -+ Login shell -+ 登录Shell -+ -+ -+ -+ EditLoginShell - - - -- Connection name can not be empty -- 网络名称不能为空 -+ -+ Specify user id (needs to be greater than 1000) -+ 指定用户ID(需大于或等于1000) - -- -- -- ConnectionShowPage - -- ConnectionShowPage -+ -+ EditSpecifyUserID - - - -- TextLabel -- -+ -+ Specify user home -+ 指定用户目录 - - -- ButtonCreateConnection -+ -+ EditSpecifyUserHome - - -- -- -- DetailsPage - -- DetailsPage -+ -+ ButtonConfirm - - - -- Network Details -- 网络详情 -+ -+ confirm -+ 确认 - - -- Please select a connection -- 请选择连接 -+ -+ ButtonCancel -+ - - -- ComboBoxDetailsSelectConnection -- -+ -+ cancel -+ 取消 -+ -+ -+ Specify user id -+ 指定用户ID - - - -- DeviceAvailableConnectionWidget -+ AppearancePlugin - -- -- Network card: %1 -- 网卡:%1 -+ -+ Theme -+ 主题 - - -- -- Other WiFi networks -- 其它WIFI网络 -+ -+ Wallpaper -+ 壁纸 -+ -+ -+ -+ Font -+ 字体 - - - -- DeviceList -+ ApplicationPlugin - -- -- Wired Network Adapter -- 有线网络配置 -+ -+ DefaultApp -+ 默认程序 - - -- -- Wireless Network Adapter -- 无线网络配置 -+ -+ AutoStart -+ 开机启动 - - - -- DisconnectAndDeleteButton -+ AudioSystemTray - -- DisconnectAndDeleteButton -- -- -- -- ButtonDisconnect -- -+ -+ Volume Setting -+ 声音设置 - - -- Disconnect -- 断开 -+ -+ Mixed Setting -+ 混合设置 - -+ -+ -+ AuthManagerPage - -- ButtonDelete -- -+ Fingerprint Authentication -+ 指纹认证 - - -- Delete -- 删除 -+ Face Authentication -+ 人脸认证 - - -- ButtonIgnore -- -+ Password Authentication -+ 密码认证 - - -- Ignore -- 忽略 -+ save -+ 保存 - - -- Are you sure you want to delete the connection %1 -- 您是否确定要删除连接 "%1" -+ return -+ 返回 - - -- Warning -- 警告 -+ add fingerprint -+ 录入指纹数据 - -- -- -- DnsWidget - -- DnsWidget -- -+ add face -+ 录入人脸数据 - - -- Preferred DNS -- 首选DNS -+ error -+ 错误 - - -- Alternate DNS -- 备选DNS -+ please ensure that at least one authentication option exists -+ 请确保至少一个认证选项打开 - -- -- -- DslManager - -- DslManager -- -+ fingerprint_ -+ 指纹_ - - -- DSL -- -+ face_ -+ 人脸_ - - - -- DslSettingPage -- -- DslSettingPage -- -- -- -- Save -- 保存 -- -+ AuthPlugin - -- Return -- 返回 -+ -+ Fingerprint -+ 指纹 - -- -- -- EthernetWidget - -- EthernetWidget -- -+ -+ FingerVein -+ 指静脉 - - -- MAC Address Of Ethernet Device -- 设备MAC地址 -+ -+ UKey -+ UKey - - -- ComboBoxDeviceMac -- -+ -+ Iris -+ 虹膜 - - -- Ethernet Clone MAC Address -- 克隆MAC地址 -+ -+ Face -+ 人脸 - - -- EditDeviceMac -- -+ -+ Driver Manager -+ 驱动管理 - - -- Custom MTU -- 自定义MTU -+ -+ Prefs -+ 配置 - - -- SpinBoxCustomMTU -- -+ Word size -+ 字号 - - -- No device specified -- 不指定设备 -+ System font -+ 系统字体 - - -- Clone Mac invalid -- 无效的克隆MAC地址 -+ Monospaced font -+ 等宽字体 - - - -- Ipv4Widget -+ AutoStartPage - -- Ipv4Widget -- -+ Boot Setup -+ 开机启动设置 - - -- IPV4 Method -- IPV4方法 -+ Desktop files(*.desktop) -+ 桌面类型(*.desktop) - - -- ComboBoxIpv4Method -- -+ select autostart desktop -+ 选择自启动应用 - - -- IP Address -- IP地址 -+ Select -+ 选择 - - -- EditIpv4Address -- -+ Cancel -+ 取消 - - -- Net Mask -- 子网掩码 -+ Error -+ 错误 - - -- EditIpv4Netmask -- -+ Desktop has existed -+ 该程序已存在 - - -- Gateway -- 网关 -+ Desktop cant permit to join -+ 该程序不允许添加 - - -- EditIpv4Gateway -- -+ Desktop dont support -+ 不支持该程序 - -+ -+ -+ AutostartPage - -- -- DNS -- -+ -+ Boot Setup -+ 开机启动设置 - - -- EditIpv4PreferredDNS -- -+ -+ Desktop files(*.desktop) -+ 桌面类型(*.desktop) - - -- Auto -- 自动 -+ -+ select autostart desktop -+ 选择自启动应用 - - -- Manual -- 手动 -+ -+ Select -+ 选择 - - -- Required -- 必填 -+ -+ Cancel -+ 取消 - - -- -- Please separate multiple DNS entries by semicolon -- 请用分号分隔多个DNS -+ -+ -+ -+ Error -+ 错误 - - -- -- Ipv4 DNS invalid -- 无效的Ipv4 DNS -+ -+ Desktop has existed -+ 该程序已存在 - - -- Ipv4 address can not be empty -- Ipv4地址不能为空 -+ -+ Desktop cant permit to join -+ 该程序不允许添加 - - -- Ipv4 Address invalid -- 无效的Ipv4地址 -+ -+ Desktop dont support -+ 不支持该程序 - -+ -+ -+ BatterySettingsPage - -- NetMask can not be empty -- 子网掩码不能为空 -+ -+ BatterySettingsPage -+ 电池设置 - - -- Netmask invalid -- 无效的子网掩码 -+ -+ After idle for more than the following time, the computer will execute -+ 空闲超过以下时间后,计算机将执行 - - -- Ipv4 Gateway invalid -- 无效的Ipv4网关 -+ -+ ComboIdleTime -+ - - -- Preferred DNS -- 首选DNS -+ -+ ComboIdleAction -+ - - -- Alternate DNS -- 备选DNS -+ -+ When the battery is lit up, it will be executed -+ 电池电量将用尽时 - - -- EditIpv4AlternateDNS -- -+ -+ ComboLowBatteryAction -+ - - -- Ipv4 Preferred DNS invalid -- 无效的Ipv4首选DNS -+ -+ The monitor will turn off when it is idle -+ 显示器空闲以下时间关闭 - - -- Ipv4 Alternate DNS invalid -- 无效的Ipv4备选DNS -+ -+ ComboMonitorTurnOffIdleTime -+ - - -- DNS 1 -- -+ -+ Reduce screen brightness when idle -+ 空闲时减少亮度 - - -- DNS 2 -- -+ -+ Reduce screen brightness when no power -+ 低点亮时减少亮度 - -- -- -- Ipv6Widget - -- Ipv6Widget -- -+ -+ The energy saving mode is enabled when the power is low -+ 低电量时自动开启节能模式 - - -- IPV6 Method -- IPV6方法 -+ -+ -+ Suspend -+ 待机 - - -- ComboBoxIpv6Method -- -+ -+ -+ Shutdown -+ 关机 - - -- IP Address -- IP地址 -+ -+ -+ Hibernate -+ 休眠 - - -- EditIpv6Address -- -+ -+ -+ Do nothing -+ 不执行操作 - -+ -+ -+ BatterySubItem - -- Prefix -- 前缀 -+ Battery Settings -+ 电池设置 - -- -- SpinBoxIpv6Prefix -- -+ -+ -+ BiometricItem -+ -+ add -+ 添加 - -+ -+ -+ CPanelAudioWidget - -- Gateway -- 网关 -+ -+ CPanelAudioWidget -+ - - -- EditIpv6Gateway -- -+ -+ Output -+ 输出 - - -- -- DNS -- -+ -+ Input -+ 输入 - -+ -+ -+ CPanelNetworkWidget - -- EditIpv6PreferredDNS -+ -+ CPanelNetworkWidget - - - -- Auto -- 自动 -+ -+ -+ VPN -+ VPN - - -- Manual -- 手动 -+ -+ -+ Network Details -+ 网络详情 - - -- Ignored -- 忽略 -+ -+ -+ -+ -+ -+ Wired Network -+ 有线网络 - - -- Required -- 必填 -+ -+ -+ -+ -+ -+ -+ Wireless Network -+ 无线网络 - - -- -- Please separate multiple DNS entries by semicolon -- 请用分号分隔多个DNS -+ -+ Connected -+ 已连接 - - -- -- Ipv6 DNS invalid -- 无效的Ipv6 DNS -+ -+ Unavailable -+ 已禁用 - - -- Ipv6 address can not be empty -- Ipv6地址不能为空 -+ -+ Disconnected -+ 已断开 - - -- Ipv6 address invalid -- 无效的Ipv6地址 -+ Wired Network %1 -+ 有线网络 %1 - - -- Ipv6 Gateway invalid -- 无效的Ipv6网关 -+ Wireless Network %1 -+ 无线网络 %1 - -+ -+ -+ ChangeHostNameWidget - -- Preferred DNS -- 首选DNS -+ -+ Form -+ - - -- Alternate DNS -- 备选DNS -+ -+ Host Name: -+ 主机名: - - -- EditIpv6AlternateDNS -+ -+ EditHostName - - - -- Ipv6 Preferred DNS invalid -- 无效的Ipv6首选DNS -+ -+ ButtonSaveHostName -+ - - -- Ipv6 Alternate DNS invalid -- 无效的Ipv6备选DNS -+ -+ Save -+ 保存 - -- -- -- NetworkSubItem - -- Wired Network %1 -- 有线网络 %1 -+ -+ ButtonCancelChangeHostName -+ - - -- Wired Network -- 有线网络 -+ -+ Cancel -+ 取消 - - -- Wireless Network %1 -- 无线网络 %1 -+ Host Name -+ 主机名 - - -- Wireless Network -- 无线网络 -+ -+ Warning -+ 警告 - - -- VPN -- VPN -+ -+ Change host name failed! Please check the Dbus service! -+ 修改主机名失败!请 检查Dbus服务! - -+ -+ -+ CheckpasswdDialog - -- Network Details -- 网络详情 -+ -+ Check password -+ 校验当前用户密码 -+ -+ -+ -+ Check the current password before you enroll the feature -+ 录入特征之前需要校验当前密码 - - - -- NetworkTray -+ ChooseItem - -- Network settings -- 网络设置 -+ -+ Form -+ - -+ -+ -+ ConnectionDetailsWidget - -- Network unavailable -- 网络不可用 -+ -+ ConnectionDetailsWidget -+ - - -- -- -- The network is connected, but you cannot access the Internet -- 网络已连接,但不能访问互联网 -+ -+ Security type -+ 安全类型 - - -- -- -- Network not connected -- 网络已断开 -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ TextLabel -+ - - -- Wired network card: %1 available -- 有线网卡: %1 可用 -+ -+ Frequency band -+ 频段 - - -- Wireless network card: %1 available -- 无线网卡: %1 可用 -+ -+ Channel -+ 网络通道 - - -- Wired network card: %1 unavailable -- 有线网卡: %1 不可用 -+ -+ Interface -+ 接口 - - -- Wireless network card: %1 unavailable -- 无线网卡: %1 不可用 -+ -+ MAC -+ - - -- -- Network connected -- 网络已连接 -+ -+ IPv4 -+ - -- -- -- PluginConnectionList - -- Other WiFi networks -- 其它WIFI网络 -+ -+ -+ Gateway -+ 网关 - - -- Tips -- 提示 -+ -+ DNS -+ - - -- Please input a network name -- 请输入网络名称 -+ -+ Subnet mask -+ 子网掩码 - -- -- -- StatusNotification - -- Connection Failed -- 连接失败 -+ -+ IPv6 -+ - - -- the network not found -- 未找到网络 -+ -+ Prefix -+ 前缀 - - -- The hidden network "%1" to be connected has been detected and exists in the network list -- 要连接的隐藏网络“%1”已经被探测到,并存在于网络列表中 -+ -+ Rate -+ 速率 - - -- Failed to connect to the network "%1" -- 无法连接到网络 "%1" -+ Preferred DNS -+ 首选DNS -+ -+ -+ -+ ConnectionItemWidget -+ -+ -+ disconnect -+ 断开 - - -- Connection activated -- 网络已连接 -+ -+ ignore -+ 忽略 - - -- You are now connected to the network "%1" -- 您已连接到网络 "%1" -+ -+ remove -+ 移除 - - -- Connection deactivated -- 连接断开 -+ -+ The current device:%1 is not available -+ 当前设备:%1 不可用 - - -- You have now disconnected the network "%1" -- 您已断开网络连接 "%1" -+ -+ The carrier is pulled out -+ 网线被拔出 - - -- Connection deleted -- 连接已删除 -+ -+ Are you sure you want to delete the connection %1 -+ 您是否确定要删除连接 "%1" - - -- The connection has been deleted "%1" -- 已删除连接 "%1" -+ -+ Warning -+ 警告 - -- -- -- TextInputDialog - -+ -+ - Tips - 提示 - - -- Yes -- 确认 -+ -+ Password required to connect to %1. -+ 连接网络 "%1" 需要密码 - - -- Cancel -- 取消 -+ -+ Please input a network name -+ 请输入网络名称 - - - -- TrayConnectionList -+ ConnectionNameWidget - -- Other WiFi networks -- 其它WIFI网络 -+ -+ ConnectionNameWidget -+ - -- -- -- TrayItemWidget - -- TrayItemWidget -+ -+ TextLabel - - - -- Icon -+ -+ EditConnectionName - - - -- Name -- 名称 -+ -+ Auto Connection -+ 自动连接 - - -- Status -- 状态 -+ -+ Required -+ 必填 - - -- Ignore -- 忽略 -- -- -- Disconnect -- 断开 -+ -+ Wired Connection %1 -+ 有线网络%1 - - -- Cancel -- 取消 -+ -+ VPN L2TP %1 -+ - - -- Connect -- 连接 -+ -+ VPN PPTP %1 -+ - - -- Connected -- 已连接 -+ -+ Connection name can not be empty -+ 网络名称不能为空 - -+ -+ -+ ConnectionShowPage - -- Unconnected -- 未连接 -+ -+ ConnectionShowPage -+ - - -- Please input password -- 请输入密码 -+ -+ TextLabel -+ - - -- Please input a network name -- 请输入网络名称 -+ -+ ButtonCreateConnection -+ - - - -- TrayPage -+ CreateGroupPage - -- TrayPage -+ -+ CreateGroupPage - - - -- TextLabel -+ -+ Create Group - - - -- Select wired network card -- 请选择有线网卡 -- -- -- Select wireless network card -- 请选择无线网卡 -+ -+ Add Group Members -+ - -- -- -- VpnIPsec - -- VpnIPsec -+ -+ Confirm - - - -- Enable IPsec -- 启用IPsec -+ -+ Please enter your group name -+ - - -- Group Name -- 组名 -+ -+ group name cannot be a pure number -+ - - -- EditGroupName -+ -+ group name already exists - - - -- Group ID -- 组ID -+ -+ -+ Error -+ 错误 - -+ -+ -+ CreateUserPage - -- EditGroupId -- -+ Account type -+ 帐户类型 - - -- Pre-Shared Key -- 预共享密钥 -+ -+ standard -+ 普通用户 - - -- EditPreSharedKey -- -+ -+ administrator -+ 管理员 - - -- Show Password -- 显示密码 -+ -+ Please enter user name first -+ 请输入用户名 - - -- Internet Key Exchange Protocol -- 密钥交换协议 -+ -+ Please enter your user name -+ 请输入用户名 - - -- EditIpsecIKE -- -+ -+ user name cannot be a pure number -+ 用户名不能全为数字 - - -- Encapsulating Security Payload -- 安全封装协议 -+ -+ user name already exists -+ 用户名已存在 - - -- EditIpsecESP -- -+ -+ Please enter your password -+ 请输出密码 - -- -- -- VpnIpvx - -- VpnIpvx -- -+ -+ Please enter the password again -+ 请再次输入密码 - - -- IPV4 Method -- IPV4方法 -+ -+ The password you enter must be the same as the former one -+ 两次密码不相同,请核对后,再次输入 - - -- ComboBoxVPNIpv4Method -- -+ -+ -+ Error -+ 错误 - - -- Only applied in corresponding resources -- 仅用于相对应的网络上的资源 -+ -+ Password encryption failed -+ 密码加密失败 - - -- Preferred DNS -- 首选DNS -+ -+ Form -+ - - -- EditVPNIpv4PreferredDNS -+ -+ UserAvatarWidget - - - -- Alternate DNS -- 备选DNS -+ -+ User name -+ 用户名 - - -- EditIpv4AlternateDNS -+ -+ EditUserName - - - -- Auto -- 自动 -+ -+ User type -+ 用户类型 - -- -- -- VpnL2tpSetting - -- VpnL2tpSetting -+ -+ ComboUserType - - - -- VPN name -- VPN名称 -+ -+ Password -+ 用户密码 - -- -- -- VpnManager - -- VpnManager -+ -+ EditPasswd - - - -- VPN type -- VPN类型 -+ -+ Confirm password -+ 确认密码 - - -- Save -- 保存 -+ -+ EditPasswdConfirm -+ - - -- Return -- 返回 -+ -+ ButtonAdvanceSetting -+ - - -- VPN -- VPN -+ -+ Advance setting -+ 高级设置 - - -- L2TP -+ -+ ButtonConfirm - - - -- Tips -- 提示 -- -- -- Password required to connect to %1. -- 连接网络 "%1" 需要密码 -+ -+ Confirm -+ 创建 - -- -- -- VpnPpp - -- VpnPpp -+ -+ ButtonCancel - - - -- Use MPPE -- 使用MPPE -+ -+ Cancel -+ 取消 - - -- Security -- 安全 -+ Please enter account name first -+ 请先输入帐户名 - - -- ComboBoxMppeSecurity -- -+ Please enter your account name -+ 请输入帐户名 - - -- Stateful MPPE -- 使用带状态的MPPE -+ Account cannot be a pure number -+ 帐户名不能全为数字 - - -- All available (default) -- 都可用(默认) -+ Account already exists -+ 帐户名已存在 - - -- 40-bit (less secure) -- 40位(较安全) -+ Please enter your userName name -+ 请输入用户名 - -+ -+ -+ CursorThemePage - -- 128-bit (most secure) -- 128位(最安全) -+ -+ Cursor Themes Settings -+ 光标主题设置 - -+ -+ -+ CursorThemes - -- Refuse EAP Authentication -- 拒绝EAP认证 -+ Cursor Themes Settings -+ 光标主题设置 - - -- Refuse PAP Authentication -- 拒绝PAP认证 -+ Faild -+ 失败 - - -- Refuse CHAP Authentication -- 拒绝CHAP认证 -+ Set cursor themes failed! -+ 设置光标主题失败! - -+ -+ -+ DateTimeSettings - -- Refuse MSCHAP Authentication -- 拒绝MSCHAP认证 -+ -+ DateTimeSettings -+ 日期时间设置 - - -- Refuse MSCHAPv2 Authentication -- 拒绝MSCHAPv2认证 -+ -+ Select Time -+ 选择时间 - - -- No BSD Data Compression -- 无BSD数据压缩 -+ -+ Select Date -+ 选择日期 - - -- No Deflate Data Compression -- 无Deflate数据压缩 -+ -+ ButtonSave -+ - - -- No TCP Header Compression -- 无TCP头压缩 -+ -+ save -+ 保存 - - -- No Protocol Field Compression -- 无协议字段压缩 -+ -+ ButtonReset -+ - - -- No Address/Control Compression -- 无地址/控制压缩 -- -- -- Send PPP Echo Packets -- 发送PPP回响包 -+ -+ reset -+ 重置 - - - -- VpnPptpSetting -- -- VpnPptpSetting -- -- -+ DaySpinBox - -- VPN name -- VPN名称 -+ -+ %1 -+ %1日 - - - -- VpnWidget -+ DefaultApp - -- VpnWidget -- -+ -+ DefaultApp -+ 默认程序 - - -- Gateway -- 网关 -+ -+ Web Browser -+ web浏览器 - - -- EditVPNGateway -- -+ -+ Email -+ 电子邮件 - - -- User Name -- 用户名 -+ -+ Text -+ 文档查看器 - - -- EditVPNUserName -- -+ -+ Music -+ 音乐播放器 - - -- Password Options -- 密码选项 -+ -+ Video -+ 视频播放器 - - -- ComboBoxVPNPasswordOptions -- -+ -+ Image -+ 图片查看器 - -+ -+ -+ DefaultappPlugin - -- Password -- 密码 -+ Email -+ 电子邮件 - - -- EditVPNPassword -- -+ Text -+ 文档查看器 - - -- ButtonPasswordVisual -- -+ Music -+ 音乐播放器 - - -- Show Password -- 显示密码 -+ Video -+ 视频播放器 - - -- NT Domain -- NT域 -+ Image -+ 图片查看器 - - -- EditNTDomain -- -+ DefaultApp -+ 默认程序 - -+ -+ -+ DetailsPage - -- Required -- 必填 -+ -+ DetailsPage -+ - - -- Saved -- 已保存的 -+ -+ Network Details -+ 网络详情 - - -- Ask -- 总是询问 -+ -+ Please select a connection -+ 请选择连接 - - -- Not required -- 不要求 -+ -+ ComboBoxDetailsSelectConnection -+ - -+ -+ -+ DeviceAvailableConnectionWidget - -- Gateway can not be empty -- 网关不能为空 -+ -+ Network card: %1 -+ 网卡:%1 - - -- Gateway invalid -- 无效的网关 -+ -+ Other WiFi networks -+ 其它WIFI网络 - -+ -+ -+ DeviceList - -- user name can not be empty -- 用户名不能为空 -+ -+ Wired Network Adapter -+ 有线网络配置 - - -- password can not be empty -- 密码不能为空 -+ -+ Wireless Network Adapter -+ 无线网络配置 - - - -- WiredManager -+ DevicePanel - -- WiredManager -+ -+ Form - - - -- ButtonSave -+ -+ Rotate left 90 degrees -+ 左旋转90度 -+ -+ -+ -+ ButtonLeft - - - -- Save -- 保存 -+ -+ Rotate right 90 degrees -+ 右旋转90度 - - -- ButtonReturn -+ -+ ButtonRight - - - -- Return -- 返回 -+ -+ Turn left and right -+ 左右翻转 - - -- Wired Network Adapter -- 有线网络配置 -+ -+ ButtonHorizontal -+ - - -- The carrier is pulled out -- 网线被拔出 -+ -+ upside down -+ 上下翻转 - - -- The current device is not available -- 当前设备不可用 -+ -+ ButtonVertical -+ - -- -- -- WiredSettingPage - -- WiredSettingPage -- -+ -+ Identification display -+ 标识显示器 - - -- Network name -- 网络名称 -+ -+ ButtonIdentifying -+ - - - -- WirelessManager -+ DisconnectAndDeleteButton - -- WirelessManager -+ -+ DisconnectAndDeleteButton - - - -- Save -- 保存 -+ -+ ButtonDisconnect -+ - - -- Return -- 返回 -+ -+ Disconnect -+ 断开 - - -- Wireless Network Adapter -- 无线网卡 -+ -+ ButtonDelete -+ - - -- The current device is not available -- 当前设备不可用 -+ -+ Delete -+ 删除 - - -- Tips -- 提示 -+ -+ ButtonIgnore -+ - - -- Password required to connect to %1. -- 连接网络 "%1" 需要密码 -+ -+ Ignore -+ 忽略 - -- -- -- WirelessSecurityWidget - -- WirelessSecurityWidget -- -+ -+ Are you sure you want to delete the connection %1 -+ 您是否确定要删除连接 "%1" - - -- Security -- 安全 -+ -+ Warning -+ 警告 - -+ -+ -+ DisplayFormatSettings - -- ComboBoxWirelessSecurityOption -- -+ -+ DisplayFormatSettings -+ 日期时间格式设置 - - -- Password Options -- 密码选项 -+ -+ Long date display format -+ 长日期显示格式 - - -- ComboBoxWirelessPasswordOption -+ -+ ComboLongDateDisplayFormat - - - -- Password -- 密码 -+ -+ Short date display format -+ 短日期显示格式 - - -- EditWirelessPassword -+ -+ ComboShortDateDisplayFormat - - - -- ButtonWirelessPasswordVisual -- -+ -+ Time format -+ 时间格式 - - -- PushButton -+ -+ ComboTimeFormat - - - -- None -- -+ -+ Show time witch seconds -+ 时间显示秒 - - -- WPA/WPA2 Personal -- WPA/WPA2个人版 -+ -+ 24-hours -+ 二十四小时制 - - -- Save password for all users -- 仅为该用户存储密码 -+ -+ 12-hours -+ 十二小时制 - -+ -+ -+ DisplayPage - -- Save password for this user -- 存储所有用户密码 -+ -+ DisplayPage -+ - - -- Ask me always -- 总是询问 -+ -+ ButtonCopyDisplay -+ - - -- Required -- 必填 -+ -+ Copy display -+ 复制显示 - -- -- -- WirelessSettingPage - -- WirelessSettingPage -+ -+ ButtonExtendedDisplay - - - -- Wireless name -- 无线网络名称 -+ -+ Extended display -+ 扩展显示 - -- -- -- WirelessTrayWidget - -- the network "%1" not found -- 未找到网络 "%1" -+ -+ -+ Resolution ratio -+ 分辨率 - -- -- -- WirelessWidget - -- WirelessWidget -+ -+ ComboResolutionRatio - - - -- SSID -- -+ -+ -+ Refresh rate -+ 刷新率 - - -- EditSsid -+ -+ ComboRefreshRate - - - -- MAC Address Of Device -- 设备MAC地址 -+ -+ -+ Zoom rate -+ 缩放率 - - -- ComboBoxWirelessMacAddress -+ -+ ComboZoomRate - - - -- Custom MTU -- 自定义MTU -+ -+ -+ Automatic -+ 自动 - - -- SpinBoxWirelessCustomMTU -+ -+ -+ 100% (recommended) -+ 100% (推荐) -+ -+ -+ -+ -+ 200% - - - -- Required -- 必填 -+ -+ Open -+ 开启 - - -- No device specified -- 不指定设备 -+ -+ Set as main display -+ 设为主显示器 - -- -- -- AudioSystemTray - -- Volume Setting -- 声音设置 -+ -+ SwitchExtraPrimary -+ - - -- Mixed Setting -- 混合设置 -+ -+ ComboExtraResolutionRatio -+ - -- -- -- CPanelAudioWidget - -- CPanelAudioWidget -- -+ -+ ComboExtraRefreshRate -+ - - -- Output -- 输出 -+ -+ ComboExtraZoomRate -+ - - -- Input -- 输入 -+ -+ ButtonExtraApply -+ - -- -- -- InputPage - -- InputPage -- -+ -+ Apply -+ 应用 - - -- -- Input cards -- 输入声卡 -+ -+ ButtonExtraCancel -+ - - -- Input devices -- 输入设备 -+ -+ Close -+ 关闭 - - -- ComboBoxInputDevices -- -+ -+ -+ (recommended) -+ (推荐) - - -- Input volume -- 输入音量 -+ -+ Is the display normal? -+ 显示是否正常? - - -- SliderVolumeSetting -- -+ -+ Save current configuration(K) -+ 保存当前配置(K) - - -- Feedback volume -- 反馈音量 -+ -+ Restore previous configuration(R) -+ 恢复之前的配置(R) - - -- No input device detected -- 未检测到输入设备 -+ -+ The display will resume the previous configuration in %1 seconds -+ 显示将会在 %1 秒后恢复之前的配置 - - - -- OutputPage -- -- OutputPage -- -- -+ DisplaySubitem - -- -- Output cards -- 输出声卡 -+ -+ Display -+ 显示 - -+ -+ -+ DnsWidget - -- Output devices -- 输出设备 -+ -+ DnsWidget -+ - - -- ComboBoxOutputDevices -- -+ -+ Preferred DNS -+ 首选DNS - - -- Output volume -- 输出音量 -+ -+ Alternate DNS -+ 备选DNS - -+ -+ -+ DriverPage - -- SlilderVolumeSetting -- -+ -+ device type -+ 设备类型 - - -- Left/right balance -- 左/右平衡 -+ -+ driver list -+ 驱动列表 - - -- SliderVolumeBalance -- -+ -+ Fingerprint -+ 指纹 - - -- Left -- -+ FingerVein -+ 指静脉 - - -- Right -- -+ -+ Fingervein -+ 指静脉 - - -- No output device detected -- 未检测到输出设备 -+ -+ iris -+ 虹膜 - -- -- -- VolumeIntputSubItem - -- VolumeInput -- 输入 -+ -+ ukey -+ UKey - -- -- -- VolumeOutputSubItem - -- VolumeOutput -- 输出 -+ -+ face -+ 人脸 - - - -- VolumeSettingPage -+ DslManager - -- VolumeSettingPage -- -+ -+ DslManager -+ - - -- Volume -- 音量 -+ -+ DSL -+ - - - -- AccountItemWidget -+ DslSettingPage - -- Create new user -- 创建新用户 -+ -+ DslSettingPage -+ - - -- disable -- 禁用 -+ -+ Save -+ 保存 - - -- enable -- 启用 -+ -+ Return -+ 返回 - - - -- AccountSubItem -+ EthernetWidget - -- account -- 帐户 -+ -+ EthernetWidget -+ - - -- New User -- 创建新用户 -+ -+ MAC Address Of Ethernet Device -+ 设备MAC地址 - -- -- -- AccountWidget - -- disable -- 禁用 -+ -+ ComboBoxDeviceMac -+ - - -- enable -- 启用 -+ -+ Ethernet Clone MAC Address -+ 克隆MAC地址 - - -- Create new user -- 创建新用户 -+ -+ EditDeviceMac -+ - -- -- -- ActGuideWidget - -- Please choose activation mode: -- 请选择激活方式: -+ -+ Custom MTU -+ 自定义MTU - - -- Next -- 下一步 -+ -+ SpinBoxCustomMTU -+ - - -- Current machine code: -- 当前系统机器码: -+ -+ No device specified -+ 不指定设备 - - -- Please input activation code: -- 请输入激活码: -+ -+ Clone Mac invalid -+ 无效的克隆MAC地址 - -+ -+ -+ FaceEnrollDialog - -- Back -- 上一步 -+ save -+ 保存 - - -- Please insert the UsbKey device first! -- 请先插入UsbKey设备! -+ cancel -+ 取消 - - -- Activate online -- 在线激活 -+ initializing face collection environment... -+ 正在初始化人脸采集环境,请稍后 - - -- Activate with the input activation code -- 输入激活码激活 -+ failed to initialize face collection environment! -+ 初始化人脸采集环境失败! - - -- Activate with insert UsbKey -- 插入UsbKey设备激活 -- -- -- Activate -- 激活 -- -- -- Please enter the activate server address: -- 请输入激活服务器地址: -- -- -- Activating...... -- 正在激活...... -- -- -- System activate successful! -- 系统激活成功! -+ Failed to start collection -+ 开始采集失败 - -+ -+ -+ FaceInputDialog - -- server activation and remaining points: -- 服务器版激活点数和剩余点数: -+ save -+ 保存 - - -- development activation and remaining points: -- 开发版激活点数和剩余点数: -+ cancel -+ 取消 - - -- industrial activation and remaining points: -- 工控版激活点数和剩余点数: -+ initializing face collection environment... -+ 正在初始化人脸采集环境,请稍后 - - -- desktop activation and remaining points: -- 桌面版激活点数和剩余点数: -+ failed to initialize face collection environment! -+ 初始化人脸采集环境失败! - - -- activation points: -- 激活点数: -+ Failed to start collection -+ 开始采集失败 - -+ -+ -+ FacePage - -- remaining points: -- 剩余点数: -+ -+ Default face device -+ 默认人脸设备 - - -- Close -- 关闭 -+ -+ face feature list -+ 人脸特征列表 - - -- System activate failed! -- 系统激活失败! -+ -+ face -+ 人脸 - - -- unknow -- 未知 -+ -+ Cancel -+ 取消 - - -- Activation Mode -- 选择激活方式 -+ -+ Start enroll failed,%1 -+ 开始录入失败,%1 - - -- Start Activation -- 开始激活 -+ -+ -+ Error -+ 错误 - - -- Activation Complete -- 激活完成 -+ -+ The biometric features were successfully recorded. The feature name is:%1 -+ 特征已成功录入,特征名为:%1 - - -- Activation Guide -- 激活向导 -+ -+ Tips -+ 提示 - - -- Server IP address or Domain name -- 服务器IP地址或域名 -+ -+ Failed to record biometrics(%1), Please try again -+ 录入特征失败(%1),请重试 - - - -- AdvanceSettings -- -- Advance Settings -- 高级设置 -- -- -- Automatically generated by system -- 由系统自动生成 -- -- -- Please enter the correct path -- 请输入正确的路径 -- -+ FingerPage - -- Please enter specify user Id -- 请输入用户ID -+ -+ Cancel -+ 取消 - - -- Please enter an integer above 1000 -- 请输入一个大于或等于1000的整数 -+ -+ fingerprint -+ 指纹 - - -- Please enter the correct home directory -- 请输入正确的用户目录 -+ -+ fingervein -+ 指静脉 - - -- Form -- -+ default %1 device -+ 默认%1设备 - - -- Login shell -- 登录Shell -+ -+ %1 list -+ %1列表 - - -- EditLoginShell -- -+ -+ Start enroll failed,%1 -+ 开始录入失败,%1 - - -- Specify user id (needs to be greater than 1000) -- 指定用户ID(需大于或等于1000) -+ -+ -+ Error -+ 错误 - - -- EditSpecifyUserID -- -+ -+ The biometric features were successfully recorded. The feature name is:%1 -+ 特征已成功录入,特征名为:%1 - - -- Specify user home -- 指定用户目录 -+ -+ Tips -+ 提示 - - -- EditSpecifyUserHome -- -+ -+ Failed to record biometrics(%1), Please try again -+ 录入特征失败(%1),请重试 - - -- ButtonConfirm -- -+ %1list -+ %1列表 - - -- confirm -- 确认 -+ -+ Default %1 device -+ 默认%1设备 - -+ -+ -+ FingerprintEnrollDialog - -- ButtonCancel -- -+ save -+ 保存 - - - cancel -- 取消 -- -- -- Specify user id -- 指定用户ID -- -- -- -- AppearancePlugin -- -- Theme -- 主题 -+ 取消 - - -- Wallpaper -- 壁纸 -+ Finger Enroll -+ 指纹录入 - - -- Font -- 字体 -+ This fingerprint is bound to the user(%1) -+ 该指纹已绑定用户(%1) - -- -- -- ApplicationPlugin - -- DefaultApp -- 默认程序 -+ Info -+ 提示 - - -- AutoStart -- 开机启动 -+ Error -+ 错误 - - - -- AuthManagerPage -- -- Fingerprint Authentication -- 指纹认证 -- -- -- Face Authentication -- 人脸认证 -- -- -- Password Authentication -- 密码认证 -- -+ FingerprintInputDialog - - save - 保存 - - -- return -- 返回 -- -- -- add fingerprint -- 录入指纹数据 -- -- -- add face -- 录入人脸数据 -+ cancel -+ 取消 - - -- ComboAppFontName -- -+ Finger Enroll -+ 指纹录入 - - -- ComboAppFontSize -- -- error -+ Error - 错误 - -+ -+ -+ FingerprintInputWorker - -- please ensure that at least one authentication option exists -- 请确保至少一个认证选项打开 -- -- -- fingerprint_ -- 指纹_ -- -- -- ComboTitleFontName -- -- face_ -- 人脸_ -+ initializing fingerprint collection environment... -+ 正在初始化指纹采集环境,请稍等 - - - -- AuthPlugin -+ Fonts - -- ComboTitleFontSize -+ -+ Form - -- Fingerprint -- 指纹 - - -- FingerVein -- 指静脉 -+ -+ Word size -+ 字号 - - -- ComboMonospaceFontName -- -+ -+ System font -+ 系统字体 - - -- ComboMonospaceFontSize -- -+ -+ Monospaced font -+ 等宽字体 - - -- Word size -- 字号 -+ Application Font Settings -+ 应用程序字体设置 - - -- System font -- 系统字体 -+ Titlebar Font Settings -+ 窗口标题字体设置 - - -- Monospaced font -- 等宽字体 -+ Monospace Font Settings -+ 等宽字体设置 - - - - GeneralBioPage - -+ - default device - 默认设备 - - -+ - feature list - 特征列表 - - -+ - 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 - 您确定要删除特征名为%1的UKey绑定吗?请确保已插入Ukey设备;否则存储在Ukey中的信息将不会被删除 - - -+ - Are you sure you want to delete the feature called %1 - 您确定要删除特征名为%1的特征吗 - - -+ - tips - 提示 - - -- Error -- 错误 - Driver Manager -- 驱动管理 -+ 驱动管理 - - - Prefs -- 配置 -+ 配置 - - - UKey -- UKey -+ UKey - - - Iris -- 虹膜 -+ 虹膜 - - - Face -- 人脸 -+ 人脸 - -- -- -- AutoStartPage - -- Boot Setup -- 开机启动设置 -+ -+ Error -+ 错误 - - -- Desktop files(*.desktop) -- 桌面类型(*.desktop) -+ -+ Failed to enroll feature because the password verification failed! -+ 由于密码校验失败,录入特征失败! - - -- select autostart desktop -- 选择自启动应用 -+ -+ Rename Feature -+ 重命名特征值 - - -- Select -- 选择 -+ -+ Please enter the renamed feature name -+ 请输入特征名 - -+ -+ -+ GeneralPage - -- Cancel -- 取消 -+ -+ Form -+ - - -- Error -- 错误 -+ -+ Capslock Tip -+ 大写锁定提示 - - -- Desktop has existed -- 该程序已存在 -+ -+ Numlock Tip -+ 数字键盘锁定提示 - - -- Desktop cant permit to join -- 该程序不允许添加 -+ -+ Repeat Key -+ 重复键 - - -- Desktop dont support -- 不支持该程序 -+ -+ (Repeat a key while holding it down) -+ (按住某一键时重复该键) - -- -- -- AutostartPage - -- Boot Setup -- 开机启动设置 -+ -+ SwitchRepeatKey -+ - - -- Desktop files(*.desktop) -- 桌面类型(*.desktop) -+ -+ Delay -+ 延时 - - -- select autostart desktop -- 选择自启动应用 -+ -+ SliderRepeatDelay -+ - - -- Select -- 选择 -+ -+ Short -+ - - -- Cancel -- 取消 -+ -+ Long -+ - - -- Error -- 错误 -+ -+ Interval -+ 速度 - - -- Desktop has existed -- 该程序已存在 -+ -+ SliderRepeatInterval -+ - - -- Desktop cant permit to join -- 该程序不允许添加 -+ -+ Slow -+ - - -- Desktop dont support -- 不支持该程序 -+ -+ Fast -+ -+ -+ -+ -+ -+ Enter repeat characters to test -+ 输入重复字符测试 -+ -+ -+ -+ EditTestRepeatKey -+ -+ -+ -+ Enter characters to test the settings -+ 输入重复字符测试 - - - -- BatterySettingsPage -+ GeneralSettingsPage - -- BatterySettingsPage -- 电池设置 -+ -+ GeneralSettingsPage -+ 通用设置页面 - - -- After idle for more than the following time, the computer will execute -- 空闲超过以下时间后,计算机将执行 -+ -+ When the power button is pressed -+ 按下电源按钮时 - - -- ComboIdleTime -+ -+ ComboPowerButtonAction - - - -- ComboIdleAction -+ -+ When the suspend button is pressed -+ 按下挂起按钮时 -+ -+ -+ -+ ComboSuspendAction - - - -- When the battery is lit up, it will be executed -- 电池电量将用尽时 -+ -+ When closing the lid -+ 合上盖子操作 - - -- ComboLowBatteryAction -+ -+ ComboCloseLidAction - - - -- The monitor will turn off when it is idle -- 显示器空闲以下时间关闭 -+ -+ Computer Mode -+ 计算机模式 - - -- ComboMonitorTurnOffIdleTime -- -+ -+ Display brightness setting -+ 显示亮度设置 - - -- Reduce screen brightness when idle -- 空闲时减少亮度 -+ -+ 0% -+ - - -- Reduce screen brightness when no power -- 低点亮时减少亮度 -+ -+ SliderDisplayBrightness -+ - - -- The energy saving mode is enabled when the power is low -- 低电量时自动开启节能模式 -+ -+ Color temperature -+ 色温 - - -- Suspend -- 待机 -+ -+ Automatic color temperature -+ 自动色温 - - -- Shutdown -- 关机 -+ -+ cold -+ - - -- Hibernate -- 休眠 -+ -+ standard -+ 标准 - - -- Do nothing -- 不执行操作 -+ -+ warm -+ - -- -- -- BatterySubItem - -- Battery Settings -- 电池设置 -+ -+ Regard computer as idle after -+ 于此时间后视计算机为空闲 - -- -- -- BiometricItem - -- add -- 添加 -+ -+ SliderComputerIdleTime -+ - -- -- -- ChangeHostNameWidget - -- Form -- -+ -+ Lock screen when idle -+ 计算机空闲时锁定屏幕 - - -- Host Name: -- 主机名: -+ -+ password is required to wake up in standby mode -+ 待机时唤醒需要输入密码 - - -- EditHostName -- -+ -+ -+ shutdown -+ 关机 - - -- ButtonSaveHostName -- -+ -+ -+ -+ hibernate -+ 休眠 - - -- Save -- 保存 -+ -+ -+ -+ suspend -+ 待机 - - -- ButtonCancelChangeHostName -- -+ -+ -+ display off -+ 关闭显示器 - - -- Cancel -- 取消 -+ -+ -+ -+ do nothing -+ 不执行操作 - - -- Host Name -- 主机名 -+ -+ ERROR -+ 错误 - - -- Warning -- 警告 -+ -+ %1hour -+ %1小时 - - -- Change host name failed! Please check the Dbus service! -- 修改主机名失败!请 检查Dbus服务! -+ -+ %1minute -+ %1分钟 - - - -- CheckpasswdDialog -+ GeneralSettingsSubItem - -- Check password -- 校验当前用户密码 -+ General Settings -+ 通用设置 - -+ -+ -+ GeneralSubItem - -- Check the current password before you enroll the feature -- 录入特征之前需要校验当前密码 -+ -+ Keyboard General Option -+ 键盘通用选项 - - - -- ChooseItem -+ GroupInfoPage - -+ - Form -- -+ - -- -- -- CreateGroupPage - -- CreateGroupPage -+ -+ TextLabel - - - -- Create Group -+ -+ Group - - - -- Add Group Members -+ -+ Member List - - - -- Confirm -+ -+ Add User - - - -- Please enter your group name -+ -+ Delete - - - -- group name cannot be a pure number -+ -+ Add Member - - - -- group name already exists -+ -+ Save -+ 保存 -+ -+ -+ -+ Cancel -+ 取消 -+ -+ -+ -+ Please input keys for search... - - - -+ -+ -+ -+ - Error - 错误 - - - -- CreateUserPage -+ GroupSubItem - -- Account type -- 帐户类型 -+ -+ Group -+ - - -- standard -- 普通用户 -+ -+ Creat group -+ - - -- administrator -- 管理员 -+ -+ Change group name -+ - - -- Please enter user name first -- 请输入用户名 -+ -+ Add group member -+ - -+ -+ -+ HardWorker - -- Please enter your user name -- 请输入用户名 -+ -+ Create User failed -+ 创建用户失败 - - -- user name cannot be a pure number -- 用户名不能全为数字 -+ -+ update password failed -+ 更新密码失败 - - -- user name already exists -- 用户名已存在 -+ -+ icon file -+ 头像 - - -- Please enter your password -- 请输出密码 -+ -+ userName type -+ 用户名 - - -- Please enter the password again -- 请再次输入密码 -+ -+ locked -+ 启用状态 - - -- The password you enter must be the same as the former one -- 两次密码不相同,请核对后,再次输入 -+ -+ Failed to update user properties,%1 -+ 更新用户属性失败,%1 - - -- Error -- 错误 -+ -+ Failed to delete user,%1 -+ 删除用户失败,%1 - - -- Password encryption failed -- 密码加密失败 -+ password -+ 密码 - - -- Form -- -+ home directory -+ 用户目录 - - -- UserAvatarWidget -- -+ shell -+ shell - - -- User name -- 用户名 -+ icon -+ 头像 - - -- EditUserName -- -+ Failed to set user attributes -+ 设置用户属性失败 - - -- User type -- 用户类型 -+ account type -+ 帐户类型 - - -- ComboUserType -- -+ Failed to update user properties(%1) -+ 更新用户属性失败(%1) - - -- Password -- 用户密码 -+ Failed to delete user -+ 删除用户失败 - - -- EditPasswd -+ -+ Failed to connect to the account management service - - - -- Confirm password -- 确认密码 -+ -+ Create Group failed -+ - - -- EditPasswdConfirm -+ -+ Failed to delete group,%1 - - - -- ButtonAdvanceSetting -+ -+ -+ add user to group failed - - - -- Advance setting -- 高级设置 -+ -+ change group name failed -+ - - -- ButtonConfirm -+ -+ change group name failed, the new group name is occupied - - -+ -+ -+ HardwareInformation - -- Confirm -- 创建 -+ -+ Form -+ - - -- ButtonCancel -+ -+ CPU: -+ CPU: -+ -+ -+ -+ LabelCpuInfo - - - -- Cancel -- 取消 -+ -+ -+ TextLabel -+ - - -- Please enter account name first -- 请先输入帐户名 -+ -+ Memory: -+ 内存: - - -- Please enter your account name -- 请输入帐户名 -+ -+ LabelMemoryInfo -+ - - -- Account cannot be a pure number -- 帐户名不能全为数字 -+ -+ Hard disk: -+ 硬盘: - - -- Account already exists -- 帐户名已存在 -+ -+ Graphics card: -+ 显卡: - - -- Please enter your userName name -- 请输入用户名 -+ -+ Network card: -+ 网卡: - -- -- -- CursorThemePage - -- Cursor Themes Settings -- 光标主题设置 -+ Copyright © -+ 版权所有 © - -- -- -- CursorThemes - -- Cursor Themes Settings -- 光标主题设置 -+ KylinSec. All rights reserved. -+ KylinSec.保留所有权利. - - -- Faild -- 失败 -+ -+ -+ -+ Unknow -+ 未知 - - -- Set cursor themes failed! -- 设置光标主题失败! -+ -+ %1 GB (%2 GB available) -+ %1 GB (%2 GB 可用) - - - -- DateTimeSettings -+ HardwareInformationWidget - -- DateTimeSettings -- 日期时间设置 -+ CPU: -+ CPU: - - -- Select Time -- 选择时间 -+ Memory: -+ 内存: - - -- Select Date -- 选择日期 -+ Hard disk: -+ 硬盘: - - -- ButtonSave -- -+ Graphics card: -+ 显卡: - - -- save -- 保存 -+ Network card: -+ 网卡: - - -- ButtonReset -- -+ Unknow -+ 未知 - -+ -+ -+ HardwareSubItem - -- reset -- 重置 -+ -+ Hardware Information -+ 硬件信息 - - - -- DaySpinBox -+ IconThemePage - -- %1 -- %1日 -+ -+ Form -+ -+ -+ -+ -+ Icon Themes Setting -+ 图标主题设置 - - - -- DefaultApp -+ IconThemes - -- DefaultApp -- 默认程序 -+ Icon Themes Setting -+ 图标主题设置 - - -- Web Browser -- web浏览器 -+ Faild -+ 失败 - - -- Email -- 电子邮件 -+ Set icon themes failed! -+ 设置图标主题失败! - -+ -+ -+ IdentificationRenameDialog - -- Text -- 文档查看器 -+ Rename Feature -+ 重命名特征值 - - -- Music -- 音乐播放器 -+ Please enter the renamed feature name -+ 请输入特征名 - - -- Video -- 视频播放器 -+ Confirm -+ 确认 - - -- Image -- 图片查看器 -+ Cancel -+ 取消 - - - -- DefaultappPlugin -+ ImageSelector - -- Email -- 电子邮件 -+ -+ Add Image Failed -+ 添加壁纸失败 - - -- Text -- 文档查看器 -+ -+ The image already exists! -+ 该壁纸已存在! - - -- Music -- 音乐播放器 -+ -+ Delete image -+ 删除壁纸 - - -- Video -- 视频播放器 -+ -+ Are you sure you want to delete this picture? -+ 您确定要删除此壁纸? - -+ -+ -+ InputDialog - -- Image -- 图片查看器 -+ -+ Confirm -+ 确认 - - -- DefaultApp -- 默认程序 -+ -+ Cancel -+ 取消 - - - -- DevicePanel -+ InputPage - -- Form -- -+ -+ InputPage -+ - - -- Rotate left 90 degrees -- 左旋转90度 -+ -+ Input cards -+ 输入声卡 - - -- ButtonLeft -- -+ -+ Input devices -+ 输入设备 - - -- Rotate right 90 degrees -- 右旋转90度 -+ -+ ComboBoxInputDevices -+ - - -- ButtonRight -- -+ -+ Input volume -+ 输入音量 - - -- Turn left and right -- 左右翻转 -+ -+ SliderVolumeSetting -+ - - -- ButtonHorizontal -- -+ -+ Feedback volume -+ 反馈音量 - - -- upside down -- 上下翻转 -+ -+ No input device detected -+ 未检测到输入设备 - -+ -+ -+ Ipv4Widget - -- ButtonVertical -+ -+ Ipv4Widget - - - -- Identification display -- 标识显示器 -+ -+ IPV4 Method -+ IPV4方法 - - -- ButtonIdentifying -+ -+ ComboBoxIpv4Method - - -- -- -- DisplayFormatSettings -- -- DisplayFormatSettings -- 日期时间格式设置 -- - -- Long date display format -- 长日期显示格式 -+ -+ IP Address -+ IP地址 - - -- ComboLongDateDisplayFormat -+ -+ EditIpv4Address - - - -- Short date display format -- 短日期显示格式 -+ -+ Net Mask -+ 子网掩码 - - -- ComboShortDateDisplayFormat -+ -+ EditIpv4Netmask - - - -- Time format -- 时间格式 -+ -+ Gateway -+ 网关 - - -- ComboTimeFormat -+ -+ EditIpv4Gateway - - - -- Show time witch seconds -- 时间显示秒 -+ -+ DNS -+ - - -- 24-hours -- 二十四小时制 -+ -+ EditIpv4PreferredDNS -+ - - -- 12-hours -- 十二小时制 -+ -+ Auto -+ 自动 - -- -- -- DisplayPage - -- DisplayPage -- -+ -+ Manual -+ 手动 - - -- ButtonCopyDisplay -- -+ -+ -+ Required -+ 必填 - - -- Copy display -- 复制显示 -+ -+ Please separate multiple DNS entries by semicolon -+ 请用分号分隔多个DNS - - -- ButtonExtendedDisplay -- -+ -+ Ipv4 DNS invalid -+ 无效的Ipv4 DNS - - -- Extended display -- 扩展显示 -+ -+ Ipv4 address can not be empty -+ Ipv4地址不能为空 - - -- Resolution ratio -- 分辨率 -+ -+ Ipv4 Address invalid -+ 无效的Ipv4地址 - - -- ComboResolutionRatio -- -+ -+ NetMask can not be empty -+ 子网掩码不能为空 - - -- Refresh rate -- 刷新率 -+ -+ Netmask invalid -+ 无效的子网掩码 - - -- ComboRefreshRate -- -+ -+ Ipv4 Gateway invalid -+ 无效的Ipv4网关 - - -- Zoom rate -- 缩放率 -+ Preferred DNS -+ 首选DNS - - -- ComboZoomRate -- -+ Alternate DNS -+ 备选DNS - - -- Automatic -- 自动 -+ Ipv4 Preferred DNS invalid -+ 无效的Ipv4首选DNS - - -- 100% (recommended) -- 100% (推荐) -+ Ipv4 Alternate DNS invalid -+ 无效的Ipv4备选DNS - -+ -+ -+ Ipv6Widget - -- 200% -+ -+ Ipv6Widget - - - -- Open -- 开启 -- -- -- Set as main display -- 设为主显示器 -+ -+ IPV6 Method -+ IPV6方法 - - -- SwitchExtraPrimary -+ -+ ComboBoxIpv6Method - - - -- ComboExtraResolutionRatio -- -+ -+ IP Address -+ IP地址 - - -- ComboExtraRefreshRate -+ -+ EditIpv6Address - - - -- ComboExtraZoomRate -- -+ -+ Prefix -+ 前缀 - - -- ButtonExtraApply -+ -+ SpinBoxIpv6Prefix - - - -- Apply -- 应用 -+ -+ Gateway -+ 网关 - - -- ButtonExtraCancel -+ -+ EditIpv6Gateway - - - -- Close -- 关闭 -+ -+ DNS -+ - - -- (recommended) -- (推荐) -+ -+ EditIpv6PreferredDNS -+ - - -- Is the display normal? -- 显示是否正常? -+ -+ Auto -+ 自动 - - -- Save current configuration(K) -- 保存当前配置(K) -+ -+ Manual -+ 手动 - - -- Restore previous configuration(R) -- 恢复之前的配置(R) -+ -+ Ignored -+ 忽略 - - -- The display will resume the previous configuration in %1 seconds -- 显示将会在 %1 秒后恢复之前的配置 -+ -+ Required -+ 必填 - -- -- -- DisplaySubitem - -- Display -- 显示 -+ -+ Please separate multiple DNS entries by semicolon -+ 请用分号分隔多个DNS - -- -- -- DriverPage - -- device type -- 设备类型 -+ -+ Ipv6 DNS invalid -+ 无效的Ipv6 DNS - - -- driver list -- 驱动列表 -+ -+ Ipv6 address can not be empty -+ Ipv6地址不能为空 - - -- Fingerprint -- 指纹 -+ -+ Ipv6 address invalid -+ 无效的Ipv6地址 - - -- FingerVein -- 指静脉 -+ -+ Ipv6 Gateway invalid -+ 无效的Ipv6网关 - - -- Fingervein -- 指静脉 -+ Preferred DNS -+ 首选DNS - - -- iris -- 虹膜 -+ Alternate DNS -+ 备选DNS - - -- ukey -- UKey -+ Ipv6 Preferred DNS invalid -+ 无效的Ipv6首选DNS - - -- face -- 人脸 -+ Ipv6 Alternate DNS invalid -+ 无效的Ipv6备选DNS - - - -- FaceEnrollDialog -+ IrisPage - -- save -- 保存 -+ -+ Default Iris device -+ 默认虹膜设备 - - -- cancel -- 取消 -+ -+ Iris feature list -+ 虹膜特征列表 - - -- initializing face collection environment... -- 正在初始化人脸采集环境,请稍后 -+ -+ iris -+ 虹膜 - - -- failed to initialize face collection environment! -- 初始化人脸采集环境失败! -+ -+ Cancel -+ 取消 - - -- Failed to start collection -- 开始采集失败 -+ -+ Start enroll failed,%1 -+ 开始录入失败,%1 - -- -- -- FaceInputDialog - -- save -- 保存 -- -- -- cancel -- 取消 -+ -+ -+ Error -+ 错误 - - -- initializing face collection environment... -- 正在初始化人脸采集环境,请稍后 -+ -+ The biometric features were successfully recorded. The feature name is:%1 -+ 特征已成功录入,特征名为:%1 - - -- failed to initialize face collection environment! -- 初始化人脸采集环境失败! -+ -+ Tips -+ 提示 - - -- Failed to start collection -- 开始采集失败 -+ -+ Failed to record biometrics(%1), Please try again -+ 录入特征失败(%1),请重试 - - - -- FacePage -+ KcpInterface - -- Default face device -- 默认人脸设备 -+ Warning -+ 警告 - - -- face feature list -- 人脸特征列表 -+ load qss file failed -+ 加载qss文件失败 - -+ -+ -+ KeybindingSubItem - -- face -- 人脸 -+ -+ Keybinding -+ 快捷键 - -+ -+ -+ KeycodeTranslator - -- Cancel -- 取消 -+ -+ None -+ 暂无 - - -- Start enroll failed,%1 -- 开始录入失败,%1 -+ -+ disabled -+ 禁用 - -+ -+ -+ KiranAccountManager - -- Error -- 错误 -+ disable -+ 禁用 - - -- The biometric features were successfully recorded. The feature name is:%1 -- 特征已成功录入,特征名为:%1 -+ enable -+ 启用 - - -- Tips -- 提示 -+ Create new user -+ 创建新用户 - - -- Failed to record biometrics(%1), Please try again -- 录入特征失败(%1),请重试 -+ User Manager -+ 帐户管理工具 -+ -+ -+ Create new account -+ 创建新用户 - - - -- FingerPage -+ KiranAvatarEditor -+ -+ -+ Avatar Editor -+ 头像编辑器 -+ -+ -+ -+ Confirm -+ 确认 -+ - -+ - Cancel - 取消 - -+ -+ -+ KiranCPanelMouse - -- fingerprint -- 指纹 -+ Mouse and TouchPad -+ 鼠标和触摸板 - -+ -+ -+ KiranCPanelMouseWidget - -- fingervein -- 指静脉 -+ Select Mouse Hand -+ 选择鼠标手持模式 - - -- default %1 device -- 默认%1设备 -+ Mouse Motion Acceleration -+ 鼠标移动加速 - - -- %1 list -- %1列表 -+ Natural Scroll -+ 是否为自然滚动 - - -- Start enroll failed,%1 -- 开始录入失败,%1 -+ Middle Emulation Enabled -+ 同时按下左右键模拟中键 - - -- Error -- 错误 -+ Touchpad Enabled -+ 禁用触摸板 - - -- The biometric features were successfully recorded. The feature name is:%1 -- 特征已成功录入,特征名为:%1 -+ Select TouchPad Hand -+ 选择触摸板使用模式 - - -- Tips -- 提示 -+ TouchPad Motion Acceleration -+ 触摸板移动加速 - - -- Failed to record biometrics(%1), Please try again -- 录入特征失败(%1),请重试 -+ Select Click Method -+ 设置点击触摸板方式 - - -- %1list -- %1列表 -+ Select Scroll Method -+ 滚动窗口方式 - - -- Default %1 device -- 默认%1设备 -+ Enabled while Typing -+ 打字时触摸板禁用 - -- -- -- FingerprintEnrollDialog - -- save -- 保存 -+ Tap to Click -+ 轻击(不按下)触摸板功能是否生效 - - -- cancel -- 取消 -+ Reset -+ 重置 - - -- Finger Enroll -- 指纹录入 -+ Exit -+ 关闭 - - -- This fingerprint is bound to the user(%1) -- 该指纹已绑定用户(%1) -+ Cancel -+ 取消 - - -- Info -- 提示 -+ Save -+ 保存 - - -- Error -- 错误 -+ Mouse Settings -+ 鼠标设置 - -- -- -- FingerprintInputDialog - -- save -- 保存 -+ TouchPad Settings -+ 触摸板设置 - - -- cancel -- 取消 -+ Standard -+ 标准 - - -- Finger Enroll -- 指纹录入 -+ Right Hand Mode -+ 右手模式 - - -- Error -- 错误 -+ Left Hand Mode -+ 左手模式 - -- -- -- FingerprintInputWorker - -- initializing fingerprint collection environment... -- 正在初始化指纹采集环境,请稍等 -+ Press and Tap -+ 按键和轻触 - -- -- -- Fonts - -- Form -- -+ Tap -+ 轻触 - - -- Application Font Settings -- 应用程序字体设置 -+ Two Finger Scroll -+ 两指滑动 - - -- ComboAppFontName -- -+ Edge Scroll -+ 边缘滑动 - - -- ComboAppFontSize -- -+ Slow -+ 低速 - - -- Titlebar Font Settings -- 窗口标题字体设置 -+ Fast -+ 快速 - -+ -+ -+ KiranCollapse - -- ComboTitleFontName -+ -+ ListExpansionSpace - - -+ -+ -+ KiranCpanelAppearance - -- ComboTitleFontSize -- -+ Wallpaper Setting -+ 壁纸设置 - - -- Monospace Font Settings -- 等宽字体设置 -+ Theme Setting -+ 主题设置 - - -- ComboMonospaceFontName -- -+ Font Setting -+ 字体设置 - -+ -+ -+ KiranDatePickerWidget - -- ComboMonospaceFontSize -+ -+ Form - - - - -- GeneralBioPage -+ KiranGroupManager - -- default device -- 默认设备 -+ -+ Create new group -+ - -+ -+ -+ KiranModuleWidget - -- feature list -- 特征列表 -+ Warning -+ 警告 - - -- 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 -- 您确定要删除特征名为%1的UKey绑定吗?请确保已插入Ukey设备;否则存储在Ukey中的信息将不会被删除 -+ The edited content in %1 is not saved. After switching, the edited content will be lost. Are you sure you want to save? -+ %1中编辑的内容未保存,切换后编辑的内容将会丢失。您确定要保存吗? - - -- Are you sure you want to delete the feature called %1 -- 您确定要删除特征名为%1的特征吗 -+ -+ Form -+ - -+ -+ -+ KiranSystemWidget - -- tips -- 提示 -+ kiran-system-imformation -+ 系统信息 - - -- Error -- 错误 -+ 保存 -+ 保存 - -+ -+ -+ KiranTimeDateWidget - -- Failed to enroll feature because the password verification failed! -- 由于密码校验失败,录入特征失败! -- -- -- Rename Feature -- 重命名特征值 -- -- -- Please enter the renamed feature name -- 请输入特征名 -+ -+ KiranTimeDateWidget -+ - -- -- -- GeneralPage - -- Form -- -+ -+ Automatic synchronizetion -+ 自动同步 - - -- Capslock Tip -- 大写锁定提示 -+ -+ Change Time Zone -+ 更改时区 - - -- Numlock Tip -- 数字键盘锁定提示 -+ -+ Set Time Manually -+ 手动设置时间 - - -- Repeat Key -- 重复键 -+ -+ Time date format setting -+ 日期时间格式设置 - - -- (Repeat a key while holding it down) -- (按住某一键时重复该键) -+ -+ %1(%2) -+ %1时间(%2) - -+ -+ -+ KiranTimePickerWidget - -- SwitchRepeatKey -+ -+ Form - - -+ -+ -+ KiranTimeZone - -- Delay -- 延时 -- -- -- SliderRepeatDelay -+ -+ Form - - - -- Short -- -- -- -- Long -- -- -- -- Interval -- 速度 -+ -+ Search in all time zones... -+ 在所有时区中搜索... - -+ -+ -+ KiranTimeZoneItem - -- SliderRepeatInterval -+ -+ Form - - - -- Slow -- -- -- -- Fast -- -- -- -- Enter repeat characters to test -- 输入重复字符测试 -+ -+ No search results, please search again... -+ 无搜索结果,请重新搜索... - -+ -+ -+ KiranTimeZoneList - -- EditTestRepeatKey -+ -+ Form - - -- -- Enter characters to test the settings -- 输入重复字符测试 -- - - -- GeneralSettingsPage -- -- GeneralSettingsPage -- 通用设置页面 -- -- -- When the power button is pressed -- 按下电源按钮时 -- -- -- ComboPowerButtonAction -- -- -+ KiranTips - -- When the suspend button is pressed -- 按下挂起按钮时 -+ -+ -+ Form -+ - -+ -+ -+ KylinsecLogo - -- ComboSuspendAction -- -+ -+ Copyright © -+ 版权所有 © - - -- When closing the lid -- 合上盖子操作 -+ -+ KylinSec. All rights reserved. -+ KylinSec.保留所有权利. - -+ -+ -+ LayoutItem - -- ComboCloseLidAction -+ -+ Form - - -+ -+ -+ LayoutList - -- Computer Mode -- 计算机模式 -- -- -- Display brightness setting -- 显示亮度设置 -- -- -- 0% -+ -+ LayoutList - - -+ -+ -+ LayoutPage - -- SliderDisplayBrightness -+ -+ Form - - - -- Color temperature -- 色温 -- -- -- Automatic color temperature -- 自动色温 -- -- -- cold -- -- -- -- standard -- 标准 -- -- -- warm -- -+ -+ Select Kayboard Layout -+ 选择布局 - - -- Regard computer as idle after -- 于此时间后视计算机为空闲 -+ -+ -+ Edit -+ 编辑 - - -- SliderComputerIdleTime -- -+ -+ -+ Add Layout -+ 添加布局 - - -- Lock screen when idle -- 计算机空闲时锁定屏幕 -+ -+ ButtonAddLayout -+ - - -- password is required to wake up in standby mode -- 待机时唤醒需要输入密码 -+ -+ Addition -+ 添加 - - -- shutdown -- 关机 -+ -+ ButtonReturn -+ - - -- hibernate -- 休眠 -+ -+ Return -+ 返回 - - -- suspend -- 待机 -+ -+ -+ -+ -+ Failed -+ 失败 - - -- display off -- 关闭显示器 -+ -+ You have added this keyboard layout! -+ 您已经添加过该布局 - - -- do nothing -- 不执行操作 -+ -+ The %1 keyboard layout does not exist! -+ 该 %1 键盘布局不存在! - - -- ERROR -- 错误 -+ -+ The keyboard layout is currently in use and cannot be deleted! -+ 该布局目前正在使用,无法删除! - - -- %1hour -- %1小时 -+ -+ Delete Layout -+ 删除布局 - - -- %1minute -- %1分钟 -+ -+ You do not appear to have added %1 keyboard layout! -+ 您似乎没有添加 %1 键盘布局! - -- -- -- GeneralSettingsSubItem - -- General Settings -- 通用设置 -+ -+ Finish -+ 完成 - - - -- GeneralSubItem -+ LayoutSubItem - -- Keyboard General Option -- 键盘通用选项 -+ -+ Keyboard Layout -+ 键盘布局 - - - -- GroupInfoPage -+ LicenseAgreement - -+ - Form - - - -- TextLabel -+ -+ BrowserLicense - - - -- Group -+ -+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -+<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -+p, li { white-space: pre-wrap; } -+</style></head><body style=" font-family:'Noto Sans CJK SC'; font-size:9pt; font-weight:400; font-style:normal;"> -+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - - -- Member List -+ -+ ButtonExportLicense - - - -- Add User -- -+ -+ Export -+ 导出 - - -- Delete -+ -+ ButtonCloseLicense - - - -- Add Member -- -+ -+ Close -+ 关闭 - - -+ - Save -- 保存 -+ 保存 - - -- Cancel -- 取消 -+ -+ PDF(*.pdf) -+ - - -- Please input keys for search... -- -+ -+ Export License -+ 导出协议 - - -- Error -- 错误 -+ -+ Export License failed! -+ 导出协议失败! - -- -- -- GroupSubItem - -- Group -- -+ -+ User End License Agreement -+ 最终用户许可协议 - - -- Creat group -- -+ -+ -+ -+ -+ -+ -+ None -+ 暂无 - - -- Change group name -- -+ -+ Version License -+ 版本协议 - - -- Add group member -- -+ Export EULA -+ 导出最终用户许可协议 -+ -+ -+ Export EULA failed! -+ 导出最终用户许可协议失败! -+ -+ -+ -+ -+ Privacy Policy -+ 隐私协议 - - - -- HardWorker -+ LicenseInfoWidget - -- Create User failed -- 创建用户失败 -+ Machine Code: -+ 机器码: - - -- update password failed -- 更新密码失败 -+ Activation Code: -+ 激活码: - - -- icon file -- 头像 -+ Activation Information -+ 激活信息 - - -- userName type -- 用户名 -+ Can't get machine code -+ 无法获取到机器码 - - -- locked -- 启用状态 -+ Can't get activation code -+ 无法获取到激活码 - -+ -+ -+ LicenseInformation - -- Failed to update user properties,%1 -- 更新用户属性失败,%1 -+ Installation time: -+ 安装时间: - - -- Failed to delete user,%1 -- 删除用户失败,%1 -+ Activation status: -+ 激活状态: - - -- password -- 密码 -+ Expiry date: -+ 质保期: - - -- home directory -- 用户目录 -+ Contact Us: -+ 联系我们: - - -- shell -- shell -+ Unknow -+ 未知 - - -- icon -- 头像 -+ Can't get activation information -+ 无法获取激活信息 - - -- Failed to set user attributes -- 设置用户属性失败 -+ Activate -+ 激活 - - -- account type -- 帐户类型 -+ The current time is illegal -+ 当前时间不合法 - - -- Failed to update user properties(%1) -- 更新用户属性失败(%1) -+ Less than the installation time -+ 小于安装时间 - - -- Failed to delete user -- 删除用户失败 -+ Not activated. Trail expiration: -+ 未激活.试用到期: - - -- Failed to connect to the account management service -- -+ get service status failed -+ 获取服务状态信息失败 - - -- Create Group failed -- -+ Not yet -+ 暂无 - - -- Failed to delete group,%1 -- -+ Activated -+ 已激活 - - -- add user to group failed -- -+ Forever -+ 永久授权 - - -- change group name failed -- -+ Copyright © -+ 版权所有 © - - -- change group name failed, the new group name is occupied -- -+ KylinSec. All rights reserved. -+ KylinSec.保留所有权利. - - - -- HardwareInformation -+ ListExpansionSpace - -- Form -+ -+ ListExpansionSpace - - -+ -+ -+ Media Key - -- CPU: -- CPU: -- -- -- LabelCpuInfo -- -+ -+ Audio Play -+ 音频播放 - - -- TextLabel -- -+ -+ Search -+ 搜索 - - -- Memory: -- 内存: -+ -+ WWW -+ 万维网 - - -- LabelMemoryInfo -- -+ -+ Audio Lower Volume -+ 减小音量 - - -- Hard disk: -- 硬盘: -+ -+ Audio Raise Volume -+ 增大音量 - - -- Graphics card: -- 显卡: -+ -+ Mic Mute -+ 输入静音 - - -- Network card: -- 网卡: -+ -+ Audio Stop -+ 音频停止 - - -- Copyright © -- 版权所有 © -+ -+ Explorer -+ 浏览 - - -- KylinSec. All rights reserved. -- KylinSec.保留所有权利. -+ -+ Calculator -+ 计算器 - - -- Unknow -- 未知 -+ -+ Audio Mute -+ 音频暂停 - - -- %1 GB (%2 GB available) -- %1 GB (%2 GB 可用) -+ -+ Audio Pause -+ 音频暂停 - -- -- -- HardwareInformationWidget - -- CPU: -- CPU: -+ -+ Audio Prev -+ 音频上一个 - - -- Memory: -- 内存: -+ -+ Audio Media -+ 音频媒体 - - -- Hard disk: -- 硬盘: -+ -+ Audio Next -+ 音频下一个 - - -- Graphics card: -- 显卡: -+ -+ Mail -+ 邮件 - - -- Network card: -- 网卡: -+ -+ Tools -+ 工具 - - -- Unknow -- 未知 -+ -+ Eject -+ 弹出 - - - -- HardwareSubItem -+ MonthSpinBox - -- Hardware Information -- 硬件信息 -+ -+ MMMM -+ MMMM - - - -- IconThemePage -+ MousePage - -+ - Form - - - -- Icon Themes Setting -- 图标主题设置 -+ -+ Select Mouse Hand -+ 选择鼠标手持模式 - -- -- -- IconThemes - -- Icon Themes Setting -- 图标主题设置 -+ -+ ComboSelectMouseHand -+ - - -- Faild -- 失败 -+ -+ Mouse Motion Acceleration -+ 鼠标移动加速 - - -- Set icon themes failed! -- 设置图标主题失败! -+ -+ SliderMouseMotionAcceleration -+ - -- -- -- IdentificationRenameDialog - -- Rename Feature -- 重命名特征值 -+ -+ Slow -+ - - -- Please enter the renamed feature name -- 请输入特征名 -+ -+ Fast -+ - - -- Confirm -- 确认 -+ -+ Natural Scroll -+ 是否为自然滚动 - - -- Cancel -- 取消 -+ -+ SwitchMouseNatturalScroll -+ - -- -- -- ImageSelector - -- Add Image Failed -- 添加壁纸失败 -+ -+ Middle Emulation Enabled -+ 同时按下左右键模拟中键 - - -- The image already exists! -- 该壁纸已存在! -+ -+ SwitchMiddleEmulation -+ - - -- Delete image -- 删除壁纸 -+ -+ Test mouse wheel direction -+ 鼠标滚轮方向测试 - - -- Are you sure you want to delete this picture? -- 您确定要删除此壁纸? -+ -+ 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行测试文字 - -- -- -- InputDialog - -- Confirm -- 确认 -+ -+ Right Hand Mode -+ 右手模式 - - -- Cancel -- 取消 -+ -+ Left Hand Mode -+ 左手模式 - - - -- IrisPage -+ MouseSettings - -- Default Iris device -- 默认虹膜设备 -+ Select Mouse Hand -+ 选择鼠标手持模式 - - -- Iris feature list -- 虹膜特征列表 -+ Mouse Motion Acceleration -+ 鼠标移动加速 - - -- iris -- 虹膜 -+ Natural Scroll -+ 是否为自然滚动 - - -- Cancel -- 取消 -+ Middle Emulation Enabled -+ 同时按下左右键模拟中键 - - -- Start enroll failed,%1 -- 开始录入失败,%1 -+ Right Hand Mode -+ 右手模式 - - -- Error -- 错误 -+ Left Hand Mode -+ 左手模式 - - -- The biometric features were successfully recorded. The feature name is:%1 -- 特征已成功录入,特征名为:%1 -+ Slow -+ - - -- Tips -- 提示 -+ Standard -+ 标准 - - -- Failed to record biometrics(%1), Please try again -- 录入特征失败(%1),请重试 -+ Fast -+ - - - -- KcpInterface -- -- Warning -- 警告 -- -+ MouseSubItem - -- load qss file failed -- 加载qss文件失败 -+ -+ Mouse Settings -+ 鼠标设置 - - - -- KeybindingSubItem -+ NetworkSubItem - -- Keybinding -- 快捷键 -+ -+ Wired Network %1 -+ 有线网络 %1 - -- -- -- KeycodeTranslator - -- None -- 暂无 -+ -+ Wired Network -+ 有线网络 - - -- disabled -- 禁用 -+ -+ Wireless Network %1 -+ 无线网络 %1 -+ -+ -+ -+ Wireless Network -+ 无线网络 -+ -+ -+ -+ VPN -+ VPN -+ -+ -+ -+ Network Details -+ 网络详情 - - - -- KiranAccountManager -+ NetworkTray - -- disable -- 禁用 -+ -+ Network settings -+ 网络设置 - - -- enable -- 启用 -+ -+ -+ Network unavailable -+ 网络不可用 - - -- Create new user -- 创建新用户 -+ -+ -+ The network is connected, but you cannot access the Internet -+ 网络已连接,但不能访问互联网 - - -- User Manager -- 帐户管理工具 -+ -+ Network not connected -+ 网络已断开 - - -- Create new account -- 创建新用户 -+ -+ Wired network card: %1 available -+ 有线网卡: %1 可用 - -- -- -- KiranAvatarEditor - -- Avatar Editor -- 头像编辑器 -+ -+ Wireless network card: %1 available -+ 无线网卡: %1 可用 - - -- Confirm -- 确认 -+ -+ Wired network card: %1 unavailable -+ 有线网卡: %1 不可用 - - -- Cancel -- 取消 -+ -+ Wireless network card: %1 unavailable -+ 无线网卡: %1 不可用 - -- -- -- KiranCPanelMouse - -- Mouse and TouchPad -- 鼠标和触摸板 -+ -+ -+ Network connected -+ 网络已连接 - - - -- KiranCPanelMouseWidget -+ OutputPage - -- Select Mouse Hand -- 选择鼠标手持模式 -+ -+ OutputPage -+ -+ -+ -+ -+ Output cards -+ 输出声卡 -+ -+ -+ -+ Output devices -+ 输出设备 -+ -+ -+ -+ ComboBoxOutputDevices -+ -+ -+ -+ -+ Output volume -+ 输出音量 -+ -+ -+ -+ SlilderVolumeSetting -+ -+ -+ -+ -+ Left/right balance -+ 左/右平衡 -+ -+ -+ -+ SliderVolumeBalance -+ - - -- Mouse Motion Acceleration -- 鼠标移动加速 -+ -+ Left -+ - - -- Natural Scroll -- 是否为自然滚动 -+ -+ Right -+ - - -- Middle Emulation Enabled -- 同时按下左右键模拟中键 -+ -+ No output device detected -+ 未检测到输出设备 - -+ -+ -+ PanelWindow - -- Touchpad Enabled -- 禁用触摸板 -+ -+ Control Panel -+ 控制面板 - -+ -+ -+ PasswordExpirationPolicyPage - -- Select TouchPad Hand -- 选择触摸板使用模式 -+ -+ PasswordExpirationPolicyPage -+ - - -- TouchPad Motion Acceleration -- 触摸板移动加速 -+ -+ User expires -+ 用户过期时间 - - -- Select Click Method -- 设置点击触摸板方式 -+ -+ SpinBoxUserExpires -+ - - -- Select Scroll Method -- 滚动窗口方式 -+ -+ yyyy-MM-dd -+ - - -- Enabled while Typing -- 打字时触摸板禁用 -+ -+ Last password change -+ 最近一次密码修改时间 - - -- Tap to Click -- 轻击(不按下)触摸板功能是否生效 -+ -+ LabelLastPasswdChange -+ - - -- Reset -- 重置 -+ -+ 1990-01-01 -+ - - -- Exit -- 关闭 -+ -+ Maximum vaild days of password -+ 密码最大有限天数 - - -- Cancel -- 取消 -+ -+ SpinBoxMaximumValidDays -+ - - -- Save -- 保存 -+ -+ Prompt time before password expiration -+ 密码过期之前提醒的天数 - - -- Mouse Settings -- 鼠标设置 -+ -+ SpinBoxPromptBeforeExpiration -+ - - -- TouchPad Settings -- 触摸板设置 -+ -+ how many days after password expires will become inactive -+ 密码过期多少天认定为失效 - - -- Standard -- 标准 -+ -+ SpinBoxPasswdInactiveTime -+ - - -- Right Hand Mode -- 右手模式 -+ -+ ButtonSave -+ - - -- Left Hand Mode -- 左手模式 -+ -+ save -+ 保存 - - -- Press and Tap -- 按键和轻触 -+ -+ ButtonReturn -+ - - -- Tap -- 轻触 -+ -+ return -+ 返回 - - -- Two Finger Scroll -- 两指滑动 -+ -+ -+ -+ day -+ - -+ -+ -+ PluginConnectionList - -- Edge Scroll -- 边缘滑动 -+ -+ Other WiFi networks -+ 其它WIFI网络 - - -- Slow -- 低速 -+ -+ Tips -+ 提示 - - -- Fast -- 快速 -+ -+ Please input a network name -+ 请输入网络名称 - - - -- KiranCollapse -+ Popup - -- ListExpansionSpace -- -+ cancel -+ 取消 - - - -- KiranCpanelAppearance -+ PowerPlugin - -- Wallpaper Setting -- 壁纸设置 -+ -+ General Settings -+ 通用设置 - - -- Theme Setting -- 主题设置 -+ -+ Power Settings -+ 电源设置 - - -- Font Setting -- 字体设置 -+ -+ Battery Settings -+ 电池设置 - - - -- KiranDatePickerWidget -+ PowerProfilesWrapper - -- Form -- -+ -+ -+ power-saver -+ 省电模式 - -- -- -- KiranGroupManager - -- Create new group -- -+ -+ -+ balanced -+ 平衡模式 -+ -+ -+ -+ -+ performance -+ 性能模式 - - - -- KiranModuleWidget -+ PowerSettingsPage - -- Warning -- 警告 -+ -+ PowerSettingsPage -+ 电源设置页面 - - -- The edited content in %1 is not saved. After switching, the edited content will be lost. Are you sure you want to save? -- %1中编辑的内容未保存,切换后编辑的内容将会丢失。您确定要保存吗? -+ -+ After idle for more than the following time, the computer will execute -+ 空闲超过以下时间后,计算机将执行 - - -- Form -+ -+ ComboIdleTime - - -- -- -- KiranSystemWidget - -- kiran-system-imformation -- 系统信息 -+ -+ ComboIdleAction -+ - - -- 保存 -- 保存 -+ -+ The monitor will turn off when it is idle -+ 显示器空闲以下时间关闭 - -- -- -- KiranTimeDateWidget - -- KiranTimeDateWidget -+ -+ ComboMonitorTrunOffIdleTime - - - -- Automatic synchronizetion -- 自动同步 -- -- -- Change Time Zone -- 更改时区 -+ -+ Suspend -+ 待机 - - -- Set Time Manually -- 手动设置时间 -+ -+ Shutdown -+ 关机 - - -- Time date format setting -- 日期时间格式设置 -+ -+ Hibernate -+ 休眠 - - -- %1(%2) -- %1时间(%2) -+ -+ Do nothing -+ 不执行操作 - - - -- KiranTimePickerWidget -+ PowerSubItem - -- Form -- -+ Power Settings -+ 电源设置 - - - -- KiranTimeZone -- -- Form -- -- -+ PrefsPage - -- Search in all time zones... -- 在所有时区中搜索... -+ -+ Authentication type Enabled status -+ 认证类型启用状态 - -- -- -- KiranTimeZoneItem - -- Form -- -+ -+ -+ fingerprint -+ 指纹 - - -- No search results, please search again... -- 无搜索结果,请重新搜索... -+ -+ -+ fingervein -+ 指静脉 - -- -- -- KiranTimeZoneList - -- Form -+ -+ ... - - -- -- -- KiranTips - -- Form -- -+ -+ Return -+ 返回 - -- -- -- KylinsecLogo - -- Copyright © -- 版权所有 © -+ -+ login -+ 登录 - - -- KylinSec. All rights reserved. -- KylinSec.保留所有权利. -+ -+ unlock -+ 解锁 - -- -- -- LayoutItem - -- Form -- -+ -+ empowerment -+ 授权 - -- -- -- LayoutList - -- LayoutList -- -+ -+ Apply the %1 authentication to the following applications -+ 启用%1认证在以下的认证应用中 - -- -- -- LayoutPage - -- Form -- -+ -+ ukey -+ UKey - - -- Select Kayboard Layout -- 选择布局 -+ -+ iris -+ 虹膜 - - -- Edit -- 编辑 -+ -+ face -+ 人脸 - -+ -+ -+ QObject - -- Add Layout -- 添加布局 -+ Did not reply within the specified timeout -+ 连接超时 - - -- ButtonAddLayout -- -+ The called service is not known -+ 无法连接到Dbus服务 - - -- Addition -- 添加 -+ warning -+ 警告 - - -- ButtonReturn -- -+ Open qss file failed -+ 加载qss文件失败 - - -- Return -- 返回 -+ -+ %1Day -+ %1天 - - -- Failed -- 失败 -+ -+ %1Hour -+ %1小时 - - -- You have added this keyboard layout! -- 您已经添加过该布局 -+ -+ %1Minute -+ %1分钟 - - -- The %1 keyboard layout does not exist! -- 该 %1 键盘布局不存在! -+ -+ never -+ 从不 - - -- The keyboard layout is currently in use and cannot be deleted! -- 该布局目前正在使用,无法删除! -+ SLow -+ 低速 - - -- Delete Layout -- 删除布局 -+ Standard -+ 标准 - - -- You do not appear to have added %1 keyboard layout! -- 您似乎没有添加 %1 键盘布局! -+ Fast -+ 快速 - - -- Finish -- 完成 -+ Faild -+ 失败 - -- -- -- LayoutSubItem - -- Keyboard Layout -- 键盘布局 -+ Connect Mouse or TouchPad Dbus Failed! -+ 连接鼠标或触摸板Dbus服务失败! - -- -- -- LicenseAgreement - -- Form -- -+ Load qss file failed! -+ 加载qss文件失败! - - -- BrowserLicense -- -+ -+ No search results, please search again... -+ 无搜索结果,请重新搜索... - - -- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> --<html><head><meta name="qrichtext" content="1" /><style type="text/css"> --p, li { white-space: pre-wrap; } --</style></head><body style=" font-family:'Noto Sans CJK SC'; font-size:9pt; font-weight:400; font-style:normal;"> --<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> -- -+ -+ -+ -+ -+ Tips -+ 提示 - - -- ButtonExportLicense -- -+ -+ -+ -+ -+ OK(K) -+ 确定(K) - - -- Export -- 导出 -+ -+ Failed to apply display settings!%1 -+ 应用显示设置失败!%1 - - -- ButtonCloseLicense -- -+ -+ Fallback display setting failed! %1 -+ 回撤显示设置失败! %1 - - -- Close -- 关闭 -+ Failed -+ 失败 - - -- Save -- 保存 -+ Set font failed! -+ 设置字体失败! - - -- PDF(*.pdf) -- -+ Get icon themes failed! -+ 获取图标主题失败! - - -- Export License -- 导出协议 -+ Get cursor themes failed! -+ 获取光标主题失败! - - -- Export License failed! -- 导出协议失败! -+ Warning -+ 警告 - - -- User End License Agreement -- 最终用户许可协议 -+ There is no theme to set! -+ 目前没有主题可以设置! - - -- None -- 暂无 -+ -+ Spring -+ 初春 - - -- Version License -- 版本协议 -+ -+ Summer -+ 盛夏 - -+ -+ -+ SearchEdit - -- Export EULA -- 导出最终用户许可协议 -+ -+ Enter keywords to search -+ 输入关键词进行搜索 - - -- Export EULA failed! -- 导出最终用户许可协议失败! -+ -+ Info -+ 提示 - - -- Privacy Policy -- 隐私协议 -+ -+ Failed to find related items, please re-enter! -+ 未能搜索到相关项,请重新输入! - - - -- LicenseInfoWidget -+ SelectAvatarPage - -- Machine Code: -- 机器码: -+ -+ Confirm -+ 确认 - - -- Activation Code: -- 激活码: -+ -+ Return -+ 返回 - - -- Activation Information -- 激活信息 -+ -+ select picture -+ 选择图片 - - -- Can't get machine code -- 无法获取到机器码 -+ -+ image files(*.bmp *.jpg *.png *.tif *.gif *.pcx *.tga *.exif *.fpx *.svg *.psd *.cdr *.pcd *.dxf *.ufo *.eps *.ai *.raw *.WMF *.webp) -+ 图片文件(*.bmp *.jpg *.png *.tif *.gif *.pcx *.tga *.exif *.fpx *.svg *.psd *.cdr *.pcd *.dxf *.ufo *.eps *.ai *.raw *.WMF *.webp) -+ -+ -+ -+ SettingBriefWidget -+ -+ -+ Form -+ - - -- Can't get activation code -- 无法获取到激活码 -+ -+ -+ -+ TextLabel -+ - - - -- LicenseInformation -+ Shortcut - -- Installation time: -- 安装时间: -+ -+ Form -+ - - -- Activation status: -- 激活状态: -+ -+ EditSearch -+ - - -- Expiry date: -- 质保期: -+ -+ Custom -+ 自定义 - - -- Contact Us: -- 联系我们: -+ -+ -+ -+ Edit -+ 编辑 - - -- Unknow -- 未知 -+ -+ ButtonAddShortcut -+ - - -- Can't get activation information -- 无法获取激活信息 -+ -+ -+ -+ -+ Add -+ 添加 - - -- Activate -- 激活 -+ -+ ButtonReset -+ - - -- The current time is illegal -- 当前时间不合法 -+ -+ Reset -+ 重置 - - -- Less than the installation time -- 小于安装时间 -+ -+ Custom Shortcut Name -+ 自定义快捷键名称 - - -- Not activated. Trail expiration: -- 未激活.试用到期: -+ -+ EditCustomShortcutName -+ - - -- get service status failed -- 获取服务状态信息失败 -+ -+ Custom Shortcut application -+ 自定义快捷键应用程序 - - -- Not yet -- 暂无 -+ -+ -+ EditShortcutApp -+ - - -- Activated -- 已激活 -+ -+ Custom Shortcut Key -+ 自定义快捷键 - - -- Forever -- 永久授权 -+ -+ ButtonAdd -+ - - -- Copyright © -- 版权所有 © -+ -+ ButtonCancel -+ - - -- KylinSec. All rights reserved. -- KylinSec.保留所有权利. -+ -+ Cancel -+ 取消 - -- -- -- ListExpansionSpace - -- ListExpansionSpace -+ -+ Shortcut Name -+ 快捷键名称 -+ -+ -+ -+ EditShortcutName - - -- -- -- Media Key - -- Audio Play -- 音频播放 -+ -+ Shortcut application -+ 快捷键应用程序 -+ -+ -+ -+ Shortcut key -+ 快捷键 - - -- Search -- 搜索 -+ -+ ButtonSave -+ - - -- WWW -- 万维网 -+ -+ Save -+ 保存 - - -- Audio Lower Volume -- 减小音量 -+ -+ ButtonReturn -+ - - -- Audio Raise Volume -- 增大音量 -+ -+ return -+ 返回 - - -- Mic Mute -- 输入静音 -+ -+ Please enter a search keyword... -+ 请输入搜索关键字... - - -- Audio Stop -- 音频停止 -+ -+ Required -+ 必填 - - -- Explorer -- 浏览 -+ -+ -+ Please press the new shortcut key -+ 请输入新快捷键 - - -- Calculator -- 计算器 -+ -+ Finished -+ 完成 - - -- Audio Mute -- 音频暂停 -+ -+ failed to load shortcut key data! -+ 加载快捷键数据失败! - - -- Audio Pause -- 音频暂停 -+ -+ List shortcut failed,error:%1 -+ 列出快捷键失败,错误:%1 - - -- Audio Prev -- 音频上一个 -+ -+ Error -+ 错误 - - -- Audio Media -- 音频媒体 -+ -+ Get shortcut failed,error: -+ 获取快捷键失败,错误: - - -- Audio Next -- 音频下一个 -+ -+ Open File -+ 打开文件 - - -- Mail -- 邮件 -+ -+ System -+ 系统 - - -- Tools -- 工具 -+ -+ Sound -+ 声音 - - -- Eject -- 弹出 -+ -+ -+ -+ -+ -+ -+ -+ Failed -+ 失败 - -- -- -- MonthSpinBox - -- MMMM -- MMMM -+ -+ Delete shortcut failed,error: -+ 删除快捷键失败,错误: - -- -- -- MousePage - -- Form -- -+ -+ -+ Warning -+ 警告 - - -- Select Mouse Hand -- 选择鼠标手持模式 -+ -+ -+ Please complete the shortcut information! -+ 请完善快捷键信息! - - -- ComboSelectMouseHand -- -+ -+ Set shortcut -+ 设置快捷键 - - -- Mouse Motion Acceleration -- 鼠标移动加速 -+ -+ Are you sure you want to disable this shortcut? -+ 是否确定要禁用此快捷键? - - -- SliderMouseMotionAcceleration -- -+ -+ Modify system shortcut failed,error: -+ 修改系统快捷键失败,错误: - - -- Slow -- -+ -+ Modify custom shortcut failed,error: -+ 修改自定义快捷键失败,错误: - - -- Fast -- -+ -+ Add custom shortcut failed,error: -+ 添加自定义快捷键失败,错误: - - -- Natural Scroll -- 是否为自然滚动 -+ -+ Reset shortcut failed,error: -+ 重置快捷键失败,错误: - - -- SwitchMouseNatturalScroll -- -+ -+ Cannot use shortcut "%1", Because you cannot enter with this key.Please try again using Ctrl, Alt, or Shift at the same time. -+ 无法使用快捷键"%1",因为使用此键将无法输入,请同时使用Ctrl,Alt,Shift再试一次。 - - -- Middle Emulation Enabled -- 同时按下左右键模拟中键 -+ -+ Shortcut keys %1 are already used in %2,Please try again! -+ 快捷键%1已用于%2,请再试一次! - -+ -+ -+ ShortcutItem - -- SwitchMiddleEmulation -- -+ -+ Form -+ - - -- Test mouse wheel direction -- 鼠标滚轮方向测试 -+ -+ -+ TextLabel -+ - -+ -+ -+ ShowQRCode - -- 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行测试文字 -+ Scan QR code to get machine code -+ 扫描二维码获取机器码 - - -- Right Hand Mode -- 右手模式 -+ QRcode of Machine and Activation Code -+ 激活信息二维码 - - -- Left Hand Mode -- 左手模式 -+ Scan QR code to get activation code -+ 扫描二维码获取激活码 - - - -- MouseSettings -+ StatusNotification - -- Select Mouse Hand -- 选择鼠标手持模式 -+ -+ -+ -+ -+ -+ Connection Failed -+ 连接失败 -+ -+ -+ -+ the network not found -+ 未找到网络 - - -- Mouse Motion Acceleration -- 鼠标移动加速 -+ -+ The hidden network "%1" to be connected has been detected and exists in the network list -+ 要连接的隐藏网络“%1”已经被探测到,并存在于网络列表中 - - -- Natural Scroll -- 是否为自然滚动 -+ -+ -+ Failed to connect to the network "%1" -+ 无法连接到网络 "%1" - - -- Middle Emulation Enabled -- 同时按下左右键模拟中键 -+ -+ Connection activated -+ 网络已连接 - - -- Right Hand Mode -- 右手模式 -+ -+ You are now connected to the network "%1" -+ 您已连接到网络 "%1" - - -- Left Hand Mode -- 左手模式 -+ -+ Connection deactivated -+ 连接断开 - - -- Slow -- -+ -+ You have now disconnected the network "%1" -+ 您已断开网络连接 "%1" - - -- Standard -- 标准 -+ -+ Connection deleted -+ 连接已删除 - - -- Fast -- -+ -+ The connection has been deleted "%1" -+ 已删除连接 "%1" - - - -- MouseSubItem -+ SystemInfoSubItem - -- Mouse Settings -- 鼠标设置 -+ -+ System Information -+ 系统信息 - - - -- PanelWindow -+ SystemInformation - -- Control Panel -- 控制面板 -+ -+ Form -+ - -- -- -- PasswordExpirationPolicyPage - -- PasswordExpirationPolicyPage -- -+ -+ Host Name: -+ 主机名: - - -- User expires -- 用户过期时间 -+ -+ LabelHostName -+ - - -- SpinBoxUserExpires -+ -+ -+ -+ -+ -+ TextLabel - - - -- yyyy-MM-dd -- -+ -+ ButtonChangeHostName -+ - - -- Last password change -- 最近一次密码修改时间 -+ -+ Change -+ 更改 - - -- LabelLastPasswdChange -- -+ -+ System Version: -+ 系统版本: - - -- 1990-01-01 -- -+ -+ LabelSystemVersion -+ - - -- Maximum vaild days of password -- 密码最大有限天数 -+ -+ Kernel Version: -+ 内核版本: - - -- SpinBoxMaximumValidDays -+ -+ LabelKernelVersion - - - -- Prompt time before password expiration -- 密码过期之前提醒的天数 -+ -+ System Architecture: -+ 系统架构: - - -- SpinBoxPromptBeforeExpiration -+ -+ LabelSystemArch - - - -- how many days after password expires will become inactive -- 密码过期多少天认定为失效 -+ -+ Activation status: -+ 激活状态: - - -- SpinBoxPasswdInactiveTime -- -+ -+ -+ -+ -+ Show -+ 查看 - - -- ButtonSave -+ -+ EULA: -+ 最终用户许可协议: -+ -+ -+ -+ ButtonShowEULA - - - -- save -- 保存 -+ -+ Version License: -+ 版本协议: - - -- ButtonReturn -+ -+ ButtonShowVersionLicense - - - -- return -- 返回 -+ -+ -+ -+ -+ Unknow -+ 未知 - - -- day -- -+ -+ UnActivated -+ 未激活 - -- -- -- Popup - -- cancel -- 取消 -+ -+ Activation code has expired -+ 激活码已过期 - -- -- -- PowerPlugin - -- General Settings -- 通用设置 -+ -+ Permanently activated -+ 永久激活 - - -- Power Settings -- 电源设置 -+ -+ Activated -+ 已激活 - - -- Battery Settings -- 电池设置 -+ -+ Error -+ 错误 - -- -- -- PowerProfilesWrapper - -- power-saver -- 省电模式 -+ -+ Failed to open the license activator -+ 启动激活许可证弹窗失败 - - -- balanced -- 平衡模式 -+ Copyright © -+ 版权所有 © - - -- performance -- 性能模式 -+ KylinSec. All rights reserved. -+ KylinSec.保留所有权利. -+ -+ -+ -+ Privacy policy: -+ 隐私协议: - - - -- PowerSettingsPage -+ SystemInformationWidget - -- PowerSettingsPage -- 电源设置页面 -+ Host Name: -+ 主机名: - - -- After idle for more than the following time, the computer will execute -- 空闲超过以下时间后,计算机将执行 -+ System Version: -+ 系统版本: - - -- ComboIdleTime -- -+ Kernel Version: -+ 内核版本: - - -- ComboIdleAction -- -+ System Architecture: -+ 系统架构: - - -- The monitor will turn off when it is idle -- 显示器空闲以下时间关闭 -+ Installation time: -+ 安装时间: - - -- ComboMonitorTrunOffIdleTime -- -+ Activation status: -+ 激活状态: - - -- Suspend -- 待机 -+ Expiry date: -+ 质保期: - - -- Shutdown -- 关机 -+ EULA: -+ 最终用户许可协议: - - -- Hibernate -- 休眠 -+ Version License: -+ 版本协议: - - -- Do nothing -- 不执行操作 -+ Contact Us: -+ 联系我们: - -- -- -- PowerSubItem - -- Power Settings -- 电源设置 -+ Change -+ 更改 - -- -- -- PrefsPage - -- Authentication type Enabled status -- 认证类型启用状态 -+ Show -+ 查看 - - -- fingerprint -- 指纹 -+ Unknow -+ 未知 - - -- fingervein -- 指静脉 -+ The current time is illegal -+ 当前时间不合法 - - -- ... -- -+ Less than the installation time -+ 小于安装时间 - - -- Return -- 返回 -+ Not activated. Trail expiration: -+ 未激活.试用到期: - - -- login -- 登录 -+ Can't get activation information -+ 无法获取激活信息 - - -- unlock -- 解锁 -+ Activate -+ 激活 - - -- empowerment -- 授权 -+ get service status failed -+ 获取服务状态信息失败 - - -- Apply the %1 authentication to the following applications -- 启用%1认证在以下的认证应用中 -+ Not yet -+ 暂无 -+ -+ -+ Activated -+ 已激活 -+ -+ -+ Forever -+ 永久授权 -+ -+ -+ Copyright © -+ 版权所有 © -+ -+ -+ KylinSec. All rights reserved. -+ KylinSec.保留所有权利. - -+ -+ -+ TextInputDialog - -- ukey -- UKey -+ -+ Tips -+ 提示 - - -- iris -- 虹膜 -+ -+ Yes -+ 确认 - - -- face -- 人脸 -+ -+ Cancel -+ 取消 - - - -- QObject -+ ThemePage - -- Did not reply within the specified timeout -- 连接超时 -+ -+ Form -+ - - -- The called service is not known -- 无法连接到Dbus服务 -+ -+ Dark and Light Theme -+ 深浅色主题设置 - - -- warning -- 警告 -+ -+ Themes Settings -+ 主题设置 - - -- Open qss file failed -- 加载qss文件失败 -+ -+ Open Window Effects -+ 打开或关闭窗口特效 - - -- %1Day -- %1天 -+ -+ -+ Unknown -+ 未知 - - -- %1Hour -- %1小时 -+ -+ Light Theme -+ 浅色 - - -- %1Minute -- %1分钟 -+ -+ Auto -+ 自动 - - -- never -- 从不 -+ -+ Dark Theme -+ 深色 - - -- SLow -- 低速 -+ -+ Choose icon Theme -+ 选择图标主题 - - -- Standard -- 标准 -+ -+ Choose cursor Themes -+ 选择光标主题 - -+ -+ -+ ThemeWidget - -- Fast -- 快速 -+ Dark Theme -+ 深色 - - -- Faild -- 失败 -+ Light Theme -+ 浅色 - - -- Connect Mouse or TouchPad Dbus Failed! -- 连接鼠标或触摸板Dbus服务失败! -+ Auto -+ 自动 - -+ -+ -+ Themes - -- Load qss file failed! -- 加载qss文件失败! -+ Dark and Light Theme -+ 深浅色主题设置 - - -- No search results, please search again... -- 无搜索结果,请重新搜索... -+ Themes Settings -+ 主题设置 - - -- Tips -- 提示 -+ Open Window Effects -+ 打开或关闭窗口特效 - - -- OK(K) -- 确定(K) -+ Choose icon themes -+ 选择图标主题 - - -- Failed to apply display settings!%1 -- 应用显示设置失败!%1 -+ Unknown -+ 未知 - - -- Fallback display setting failed! %1 -- 回撤显示设置失败! %1 -+ Choose cursor themes -+ 选择光标主题 - -+ -+ -+ ThreadObject - -+ - Failed - 失败 - - -- Set font failed! -- 设置字体失败! -- -- -- Get icon themes failed! -- 获取图标主题失败! -+ -+ List shortcut failed,error: -+ 列出快捷键失败,错误: - -+ -+ -+ TimeDateSubItem - -- Get cursor themes failed! -- 获取光标主题失败! -+ -+ Time Date Settings -+ 日期时间设置 - - -- Warning -- 警告 -+ -+ Chnage time Zone -+ 更改时区 - - -- There is no theme to set! -- 目前没有主题可以设置! -+ -+ Set time Manually -+ 手动设置时间 - - -- Set font failed! -- -+ -+ Time date format setting -+ 日期时间格式设置 - - - -- SearchEdit -- -- Enter keywords to search -- 输入关键词进行搜索 -- -+ TimezoneSettings - -- Info -- 提示 -+ -+ TimezoneSettings -+ - - -- Failed to find related items, please re-enter! -- 未能搜索到相关项,请重新输入! -+ -+ Select Time Zone -+ 选择时区 - -- -- -- SelectAvatarPage - -- Confirm -- 确认 -+ -+ ButtonSave -+ - - -- Return -- 返回 -+ -+ save -+ 保存 - - -- select picture -- 选择图片 -+ -+ ButtonReturn -+ - - -- image files(*.bmp *.jpg *.png *.tif *.gif *.pcx *.tga *.exif *.fpx *.svg *.psd *.cdr *.pcd *.dxf *.ufo *.eps *.ai *.raw *.WMF *.webp) -- 图片文件(*.bmp *.jpg *.png *.tif *.gif *.pcx *.tga *.exif *.fpx *.svg *.psd *.cdr *.pcd *.dxf *.ufo *.eps *.ai *.raw *.WMF *.webp) -+ -+ reset -+ 重置 - - - -- SettingBriefWidget -+ TopBar - -- Form -+ -+ ListExpansionSpace - - - -- TextLabel -+ -+ TITLE -+ -+ -+ -+ -+ FLAG - - - - -- Shortcut -+ TouchPadPage - -+ - Form -- -+ - - -- EditSearch -- -+ -+ TouchPad Enabled -+ 开启触摸板 - - -- Custom -- 自定义 -+ -+ SwitchTouchPadEnable -+ - - -- Edit -- 编辑 -+ -+ Select TouchPad Hand -+ 选择触摸板使用模式 - - -- ButtonAddShortcut -+ -+ ComboTouchPadHand - - - -- Add -- 添加 -+ -+ TouchPad Motion Acceleration -+ 触摸板移动加速 - - -- ButtonReset -+ -+ SliderTouchPadMotionAcceleration - - - -- Reset -- 重置 -+ -+ Slow -+ - - -- Custom Shortcut Name -- 自定义快捷键名称 -+ -+ Fast -+ - - -- EditCustomShortcutName -+ -+ Select Click Method -+ 设置点击触摸板方式 -+ -+ -+ -+ ComboClickMethod - - - -- Custom Shortcut application -- 自定义快捷键应用程序 -+ -+ Select Scroll Method -+ 滚动窗口方式 - - -- EditShortcutApp -+ -+ ComboScrollMethod - - - -- Custom Shortcut Key -- 自定义快捷键 -+ -+ Natural Scroll -+ 是否为自然滚动 - - -- ButtonAdd -+ -+ ComboNaturalScroll - - - -- ButtonCancel -- -+ -+ Enabled while Typing -+ 打字时触摸板禁用 - - -- Cancel -- 取消 -+ -+ SwitchTypingEnable -+ - - -- Shortcut Name -- 快捷键名称 -+ -+ Tap to Click -+ 轻击(不按下)触摸板功能是否生效 - - -- EditShortcutName -+ -+ SwtichTapToClick - - - -- Shortcut application -- 快捷键应用程序 -+ -+ Right Hand Mode -+ 右手模式 - - -- Shortcut key -- 快捷键 -+ -+ Left Hand Mode -+ 左手模式 - - -- ButtonSave -- -+ -+ Press and Tap -+ 按键和轻触 - - -- Save -- 保存 -+ -+ Tap -+ 轻触 -+ -+ -+ -+ Two Finger Scroll -+ 两指滑动 - - -- ButtonReturn -- -+ -+ Edge Scroll -+ 边缘滑动 - -+ -+ -+ TouchPadSettings - -- return -- 返回 -+ Touchpad Enabled -+ 禁用触摸板 - - -- Please enter a search keyword... -- 请输入搜索关键字... -+ Disable TouchPad -+ 禁用触摸板 - - -- Required -- 必填 -+ TouchPad Enabled -+ 开启触摸板 - - -- Please press the new shortcut key -- 请输入新快捷键 -+ Select TouchPad Hand -+ 选择触摸板使用模式 - - -- Finished -- 完成 -+ TouchPad Motion Acceleration -+ 触摸板移动加速 - - -- failed to load shortcut key data! -- 加载快捷键数据失败! -+ Select Click Method -+ 设置点击触摸板方式 - - -- List shortcut failed,error:%1 -- 列出快捷键失败,错误:%1 -+ Select Scroll Method -+ 滚动窗口方式 - - -- Error -- 错误 -+ Natural Scroll -+ 是否为自然滚动 - - -- Get shortcut failed,error: -- 获取快捷键失败,错误: -+ Enabled while Typing -+ 打字时触摸板禁用 - - -- Open File -- 打开文件 -+ Tap to Click -+ 轻击(不按下)触摸板功能是否生效 - - -- System -- 系统 -+ Slow -+ - - -- Sound -- 声音 -+ Standard -+ 标准 - - -- Failed -- 失败 -+ Fast -+ - - -- Delete shortcut failed,error: -- 删除快捷键失败,错误: -+ Right Hand Mode -+ 右手模式 - - -- Warning -- 警告 -+ Left Hand Mode -+ 左手模式 - - -- Please complete the shortcut information! -- 请完善快捷键信息! -+ Press and Tap -+ 按键和轻触 - - -- Set shortcut -- 设置快捷键 -+ Tap -+ 轻触 - - -- Are you sure you want to disable this shortcut? -- 是否确定要禁用此快捷键? -+ Two Finger Scroll -+ 两指滑动 - - -- Modify system shortcut failed,error: -- 修改系统快捷键失败,错误: -+ Edge Scroll -+ 边缘滑动 - -+ -+ -+ TouchPadSubItem - -- Modify custom shortcut failed,error: -- 修改自定义快捷键失败,错误: -+ -+ TouchPad Settings -+ 触摸板设置 - -+ -+ -+ TrayConnectionList - -- Add custom shortcut failed,error: -- 添加自定义快捷键失败,错误: -+ -+ Other WiFi networks -+ 其它WIFI网络 - -+ -+ -+ TrayItemWidget - -- Reset shortcut failed,error: -- 重置快捷键失败,错误: -+ -+ TrayItemWidget -+ - - -- Cannot use shortcut "%1", Because you cannot enter with this key.Please try again using Ctrl, Alt, or Shift at the same time. -- 无法使用快捷键"%1",因为使用此键将无法输入,请同时使用Ctrl,Alt,Shift再试一次。 -+ -+ Icon -+ - - -- Shortcut keys %1 are already used in %2,Please try again! -- 快捷键%1已用于%2,请再试一次! -+ -+ Name -+ 名称 - -- -- -- ShortcutItem - -- Form -- -+ -+ Status -+ 状态 - - -- TextLabel -- -+ -+ Ignore -+ 忽略 - -- -- -- ShowQRCode - -- Scan QR code to get machine code -- 扫描二维码获取机器码 -+ -+ Disconnect -+ 断开 - - -- QRcode of Machine and Activation Code -- 激活信息二维码 -+ -+ -+ Cancel -+ 取消 - - -- Scan QR code to get activation code -- 扫描二维码获取激活码 -+ -+ -+ Connect -+ 连接 - -- -- -- SystemInfoSubItem - -- System Information -- 系统信息 -+ -+ Connected -+ 已连接 - -- -- -- SystemInformation - -- Form -- -+ -+ Unconnected -+ 未连接 - - -- Host Name: -- 主机名: -+ -+ Please input password -+ 请输入密码 - - -- LabelHostName -- -+ -+ Please input a network name -+ 请输入网络名称 - -+ -+ -+ TrayPage - -- TextLabel -+ -+ TrayPage - - - -- ButtonChangeHostName -+ -+ TextLabel - - - -- Change -- 更改 -+ -+ Select wired network card -+ 请选择有线网卡 - - -- System Version: -- 系统版本: -+ -+ Select wireless network card -+ 请选择无线网卡 - -+ -+ -+ UKeyPage - -- LabelSystemVersion -- -+ -+ Ukey -+ UKey - - -- Kernel Version: -- 内核版本: -+ -+ Default Ukey device -+ 默认UKey设备 - - -- LabelKernelVersion -- -+ -+ List of devices bound to the Ukey -+ 绑定UKey设备列表 - - -- System Architecture: -- 系统架构: -+ -+ -+ -+ error -+ 错误 - - -- LabelSystemArch -- -+ -+ No UKey device detected, pelease insert the UKey device and perform operations -+ 未检测到UKey设备,请插入UKey设备再次执行操作 - - -- Activation status: -- 激活状态: -+ -+ UKey Enroll -+ UKey录入 - - -- Show -- 查看 -+ -+ Please enter the ukey pin code -+ 请输入UKey PIN码 - -+ -+ -+ UKeyPinCodeDialog - -- EULA: -- 最终用户许可协议: -+ UKey Enroll -+ UKey录入 - - -- ButtonShowEULA -- -+ Please enter the ukey pin code -+ 请输入UKey PIN码 - - -- Version License: -- 版本协议: -+ Confirm -+ 确认 - - -- ButtonShowVersionLicense -- -+ Cancel -+ 取消 - -+ -+ -+ UserInfoPage - -- Unknow -- 未知 -+ -+ Form -+ - - -- UnActivated -- 未激活 -+ -+ Account -+ - - -- Activation code has expired -- 激活码已过期 -+ -+ Change password -+ 修改密码 - - -- Permanently activated -- 永久激活 -+ -+ User id -+ 用户ID - - -- Activated -- 已激活 -+ -+ User type -+ 用户类型 - - -- Error -- 错误 -+ -+ User status -+ 启用用户 - -- -- Failed to open the license activator -- 启动激活许可证弹窗失败 -+ -+ -+ auth manager -+ 认证管理 - - -- Copyright © -- 版权所有 © -+ -+ Password expiration policy -+ 密码过期策略 - - -- KylinSec. All rights reserved. -- KylinSec.保留所有权利. -+ -+ Confirm -+ 保存 - - -- Privacy policy: -- 隐私协议: -+ -+ Delete -+ 删除用户 - -- -- -- SystemInformationWidget - -- Host Name: -- 主机名: -+ -+ Current password -+ 当前密码 - - -- System Version: -- 系统版本: -+ -+ EditCurrentPasswd -+ - - -- Kernel Version: -- 内核版本: -+ -+ New password -+ 新密码 - - -- System Architecture: -- 系统架构: -+ -+ EditNewPasswd -+ - - -- Installation time: -- 安装时间: -+ -+ Enter the new password again -+ 再次输入新密码 - - -- Activation status: -- 激活状态: -+ -+ EditNewPasswdAgain -+ - - -- Expiry date: -- 质保期: -+ -+ EditPasswdSave -+ - - -- EULA: -- 最终用户许可协议: -+ -+ Save -+ 保存 - - -- Version License: -- 版本协议: -+ -+ EditPasswdCancel -+ - - -- Contact Us: -- 联系我们: -+ -+ Cancel -+ 取消 - - -- Change -- 更改 -+ Account type -+ 帐户类型 - - -- Show -- 查看 -+ Account status -+ 启用帐户 - - -- Unknow -- 未知 -+ -+ standard -+ 普通用户 - - -- The current time is illegal -- 当前时间不合法 -+ -+ administrator -+ 管理员 - - -- Less than the installation time -- 小于安装时间 -+ -+ Please enter the new user password -+ 请输入新密码 - - -- Not activated. Trail expiration: -- 未激活.试用到期: -+ -+ Please enter the password again -+ 请再次输入密码 - - -- Can't get activation information -- 无法获取激活信息 -+ -+ The password you enter must be the same as the former one -+ 两次密码不相同,请核对后,再次输入 - - -- Activate -- 激活 -+ -+ Please enter the current user password -+ 请输入当前密码 - - -- get service status failed -- 获取服务状态信息失败 -+ -+ The current password is incorrect -+ 当前密码错误,请再次输入 - - -- Not yet -- 暂无 -+ -+ The new password cannot be the same as the current password -+ 新密码不能和旧密码相同,请重新输入 - - -- Activated -- 已激活 -+ -+ -+ -+ -+ -+ Error -+ 错误 - - -- Forever -- 永久授权 -+ -+ -+ Password encryption failed -+ 密码加密失败 - - -- Copyright © -- 版权所有 © -+ -+ user information updated successfully -+ 用户信息更新成功 - - -- KylinSec. All rights reserved. -- KylinSec.保留所有权利. -+ -+ Password updated successfully -+ 密码更新成功 - -- -- -- ThemePage - -- Form -- -+ -+ The directory and files under the user's home directory are deleted with the user.Are you sure you want to delete the user(%1)? -+ 用户目录下的目录和文件会随用户一起删除,确定要删除%1用户吗? - - -- Dark and Light Theme -- 深浅色主题设置 -+ -+ Warning -+ 警告 - - -- Themes Settings -- 主题设置 -+ Account information updated successfully -+ 帐户信息更新成功 - -+ -+ -+ UserlicenseAgreement - -- Open Window Effects -- 打开或关闭窗口特效 -+ Export -+ 导出 - - -- Unknown -- 未知 -+ Close -+ 关闭 - - -- Light Theme -- 浅色 -+ Save -+ 保存 - - -- Auto -- 自动 -+ Export EULA -+ 导出最终用户许可协议 - - -- Dark Theme -- 深色 -+ Export EULA failed! -+ 导出最终用户许可协议失败! - - -- Choose icon Theme -- 选择图标主题 -+ User End License Agreement -+ 最终用户许可协议 - - -- Choose cursor Themes -- 选择光标主题 -+ None -+ 暂无 - - - -- ThemeWidget -- -- Dark Theme -- 深色 -- -+ VolumeIntputSubItem - -- Light Theme -- 浅色 -+ -+ VolumeInput -+ 输入 - -+ -+ -+ VolumeOutputSubItem - -- Auto -- 自动 -+ -+ VolumeOutput -+ 输出 - - - -- Themes -+ VolumeSettingPage - -- Dark and Light Theme -- 深浅色主题设置 -+ -+ VolumeSettingPage -+ - - -- Themes Settings -- 主题设置 -+ -+ -+ Volume -+ 音量 - -+ -+ -+ VpnIPsec - -- Open Window Effects -- 打开或关闭窗口特效 -+ -+ VpnIPsec -+ - - -- Choose icon themes -- 选择图标主题 -+ -+ Enable IPsec -+ 启用IPsec - - -- Unknown -- 未知 -+ -+ Group Name -+ 组名 - - -- Choose cursor themes -- 选择光标主题 -+ -+ EditGroupName -+ - -- -- -- ThreadObject - -- Failed -- 失败 -+ -+ Group ID -+ 组ID - - -- List shortcut failed,error: -- 列出快捷键失败,错误: -+ -+ EditGroupId -+ - -- -- -- TimeDateSubItem - -- Time Date Settings -- 日期时间设置 -+ -+ Pre-Shared Key -+ 预共享密钥 - - -- Chnage time Zone -- 更改时区 -+ -+ EditPreSharedKey -+ - - -- Set time Manually -- 手动设置时间 -+ -+ Show Password -+ 显示密码 - - -- Time date format setting -- 日期时间格式设置 -+ -+ Internet Key Exchange Protocol -+ 密钥交换协议 - -- -- -- TimezoneSettings - -- TimezoneSettings -+ -+ EditIpsecIKE - - - -- Select Time Zone -- 选择时区 -+ -+ Encapsulating Security Payload -+ 安全封装协议 - - -- ButtonSave -+ -+ EditIpsecESP - - -+ -+ -+ VpnIpvx - -- save -- 保存 -- -- -- ButtonReturn -+ -+ VpnIpvx - - - -- reset -- 重置 -+ -+ IPV4 Method -+ IPV4方法 - -- -- -- TopBar - -- ListExpansionSpace -+ -+ ComboBoxVPNIpv4Method - - - -- TITLE -- -+ -+ Only applied in corresponding resources -+ 仅用于相对应的网络上的资源 - - -- FLAG -- -+ -+ Preferred DNS -+ 首选DNS - -- -- -- TouchPadPage - -- Form -+ -+ EditVPNIpv4PreferredDNS - - - -- TouchPad Enabled -- 开启触摸板 -+ -+ Alternate DNS -+ 备选DNS - - -- SwitchTouchPadEnable -+ -+ EditIpv4AlternateDNS - - - -- Select TouchPad Hand -- 选择触摸板使用模式 -+ -+ Auto -+ 自动 - -+ -+ -+ VpnL2tpSetting - -- ComboTouchPadHand -+ -+ VpnL2tpSetting - - - -- TouchPad Motion Acceleration -- 触摸板移动加速 -+ -+ VPN name -+ VPN名称 - -+ -+ -+ VpnManager - -- SliderTouchPadMotionAcceleration -+ -+ -+ VpnManager - - - -- Slow -- -+ -+ VPN type -+ VPN类型 - - -- Fast -- -+ -+ Save -+ 保存 - - -- Select Click Method -- 设置点击触摸板方式 -+ -+ Return -+ 返回 - - -- ComboClickMethod -- -+ -+ VPN -+ VPN - - -- Select Scroll Method -- 滚动窗口方式 -+ -+ L2TP -+ - - -- ComboScrollMethod -- -+ -+ Tips -+ 提示 - - -- Natural Scroll -- 是否为自然滚动 -+ -+ Password required to connect to %1. -+ 连接网络 "%1" 需要密码 - -+ -+ -+ VpnPpp - -- ComboNaturalScroll -+ -+ VpnPpp - - - -- Enabled while Typing -- 打字时触摸板禁用 -+ -+ Use MPPE -+ 使用MPPE - - -- SwitchTypingEnable -- -+ -+ Security -+ 安全 - - -- Tap to Click -- 轻击(不按下)触摸板功能是否生效 -+ -+ ComboBoxMppeSecurity -+ - - -- SwtichTapToClick -- -+ -+ Stateful MPPE -+ 使用带状态的MPPE - - -- Right Hand Mode -- 右手模式 -+ -+ All available (default) -+ 都可用(默认) - - -- Left Hand Mode -- 左手模式 -+ -+ 40-bit (less secure) -+ 40位(较安全) - - -- Press and Tap -- 按键和轻触 -+ -+ 128-bit (most secure) -+ 128位(最安全) - - -- Tap -- 轻触 -+ -+ Refuse EAP Authentication -+ 拒绝EAP认证 - - -- Two Finger Scroll -- 两指滑动 -+ -+ Refuse PAP Authentication -+ 拒绝PAP认证 - - -- Edge Scroll -- 边缘滑动 -+ -+ Refuse CHAP Authentication -+ 拒绝CHAP认证 - -- -- -- TouchPadSettings - -- Touchpad Enabled -- 禁用触摸板 -+ -+ Refuse MSCHAP Authentication -+ 拒绝MSCHAP认证 - - -- Disable TouchPad -- 禁用触摸板 -+ -+ Refuse MSCHAPv2 Authentication -+ 拒绝MSCHAPv2认证 - - -- TouchPad Enabled -- 开启触摸板 -+ -+ No BSD Data Compression -+ 无BSD数据压缩 - - -- Select TouchPad Hand -- 选择触摸板使用模式 -+ -+ No Deflate Data Compression -+ 无Deflate数据压缩 - - -- TouchPad Motion Acceleration -- 触摸板移动加速 -+ -+ No TCP Header Compression -+ 无TCP头压缩 - - -- Select Click Method -- 设置点击触摸板方式 -+ -+ No Protocol Field Compression -+ 无协议字段压缩 - - -- Select Scroll Method -- 滚动窗口方式 -+ -+ No Address/Control Compression -+ 无地址/控制压缩 - - -- Natural Scroll -- 是否为自然滚动 -+ -+ Send PPP Echo Packets -+ 发送PPP回响包 - -+ -+ -+ VpnPptpSetting - -- Enabled while Typing -- 打字时触摸板禁用 -+ -+ VpnPptpSetting -+ - - -- Tap to Click -- 轻击(不按下)触摸板功能是否生效 -+ -+ VPN name -+ VPN名称 - -+ -+ -+ VpnWidget - -- Slow -- -+ -+ VpnWidget -+ - - -- Standard -- 标准 -+ -+ Gateway -+ 网关 - - -- Fast -- -+ -+ EditVPNGateway -+ - - -- Right Hand Mode -- 右手模式 -+ -+ User Name -+ 用户名 - - -- Left Hand Mode -- 左手模式 -+ -+ EditVPNUserName -+ - - -- Press and Tap -- 按键和轻触 -+ -+ Password Options -+ 密码选项 - - -- Tap -- 轻触 -+ -+ ComboBoxVPNPasswordOptions -+ - - -- Two Finger Scroll -- 两指滑动 -+ -+ Password -+ 密码 - - -- Edge Scroll -- 边缘滑动 -+ -+ EditVPNPassword -+ - -- -- -- TouchPadSubItem - -- TouchPad Settings -- 触摸板设置 -+ -+ ButtonPasswordVisual -+ - -- -- -- UKeyPage - -- Ukey -- UKey -+ -+ Show Password -+ 显示密码 - - -- Default Ukey device -- 默认UKey设备 -+ -+ NT Domain -+ NT域 - - -- List of devices bound to the Ukey -- 绑定UKey设备列表 -+ -+ EditNTDomain -+ - - -- error -- 错误 -+ -+ -+ -+ Required -+ 必填 - - -- No UKey device detected, pelease insert the UKey device and perform operations -- 未检测到UKey设备,请插入UKey设备再次执行操作 -+ -+ Saved -+ 已保存的 - - -- UKey Enroll -- UKey录入 -+ -+ Ask -+ 总是询问 - - -- Please enter the ukey pin code -- 请输入UKey PIN码 -+ -+ Not required -+ 不要求 - -- -- -- UKeyPinCodeDialog - -- UKey Enroll -- UKey录入 -+ -+ Gateway can not be empty -+ 网关不能为空 - - -- Please enter the ukey pin code -- 请输入UKey PIN码 -+ -+ Gateway invalid -+ 无效的网关 - - -- Confirm -- 确认 -+ -+ user name can not be empty -+ 用户名不能为空 - - -- Cancel -- 取消 -+ -+ password can not be empty -+ 密码不能为空 - - - -- UserInfoPage -+ Wallpaper - -+ - Form - - - -- Account -- -+ -+ Set wallpaper -+ 壁纸设置 - - -- Change password -- 修改密码 -+ -+ FrameLockScreenPreview -+ - - -- User id -- 用户ID -+ -+ FrameDesktopPreivew -+ - - -- User type -- 用户类型 -+ -+ Desktop Wallpaper Preview -+ 桌面壁纸预览 - - -- User status -- 启用用户 -+ -+ Lock Screen WallPaper Preview -+ 锁屏壁纸预览 - - -- auth manager -- 认证管理 -+ -+ Select wallpaper -+ 选择壁纸 - - -- Password expiration policy -- 密码过期策略 -+ -+ Select Wallpaper -+ 选择壁纸 - - -- Confirm -- 保存 -+ -+ Set Desktop Wallpaper -+ 选择桌面壁纸 - - -- Delete -- 删除用户 -+ -+ Set Lock Screen Wallpaper -+ 选择锁屏壁纸 - - -- Current password -- 当前密码 -+ -+ -+ set wallpaper -+ 壁纸设置 - - -- EditCurrentPasswd -- -+ -+ -+ Set wallpaper failed! -+ 壁纸设置失败! - - -- New password -- 新密码 -+ -+ select picture -+ 选择图片 - - -- EditNewPasswd -- -+ -+ image files(*.bmp *.jpg *.png *.tif *.gif *.pcx *.tga *.exif *.fpx *.svg *.psd *.cdr *.pcd *.dxf *.ufo *.eps *.ai *.raw *.WMF *.webp) -+ 图片文件(*.bmp *.jpg *.png *.tif *.gif *.pcx *.tga *.exif *.fpx *.svg *.psd *.cdr *.pcd *.dxf *.ufo *.eps *.ai *.raw *.WMF *.webp) - - -- Enter the new password again -- 再次输入新密码 -+ -+ Add Image Failed -+ 添加壁纸失败 - - -- EditNewPasswdAgain -+ -+ The image already exists! -+ 该壁纸已存在! -+ -+ -+ -+ WiredManager -+ -+ -+ WiredManager - - - -- EditPasswdSave -+ -+ ButtonSave - - - -+ - Save - 保存 - - -- EditPasswdCancel -+ -+ ButtonReturn - - - -- Cancel -- 取消 -+ -+ Return -+ 返回 - - -- Account type -- 帐户类型 -+ Wired Network Adapter -+ 有线网络配置 - - -- Account status -- 启用帐户 -+ The carrier is pulled out -+ 网线被拔出 - - -- standard -- 普通用户 -+ The current device is not available -+ 当前设备不可用 - -+ -+ -+ WiredSettingPage - -- administrator -- 管理员 -+ -+ WiredSettingPage -+ - - -- Please enter the new user password -- 请输入新密码 -+ -+ Network name -+ 网络名称 - -+ -+ -+ WirelessManager - -- Please enter the password again -- 请再次输入密码 -+ -+ WirelessManager -+ - - -- The password you enter must be the same as the former one -- 两次密码不相同,请核对后,再次输入 -+ -+ Save -+ 保存 - - -- Please enter the current user password -- 请输入当前密码 -+ -+ Return -+ 返回 - - -- The current password is incorrect -- 当前密码错误,请再次输入 -+ Wireless Network Adapter -+ 无线网卡 - - -- The new password cannot be the same as the current password -- 新密码不能和旧密码相同,请重新输入 -+ The current device is not available -+ 当前设备不可用 - - -- Error -- 错误 -+ Tips -+ 提示 - - -- Password encryption failed -- 密码加密失败 -+ Password required to connect to %1. -+ 连接网络 "%1" 需要密码 - -+ -+ -+ WirelessSecurityWidget - -- user information updated successfully -- 用户信息更新成功 -+ -+ WirelessSecurityWidget -+ - - -- Password updated successfully -- 密码更新成功 -+ -+ Security -+ 安全 - - -- The directory and files under the user's home directory are deleted with the user.Are you sure you want to delete the user(%1)? -- 用户目录下的目录和文件会随用户一起删除,确定要删除%1用户吗? -+ -+ ComboBoxWirelessSecurityOption -+ - - -- Warning -- 警告 -+ -+ Password Options -+ 密码选项 - - -- Account information updated successfully -- 帐户信息更新成功 -+ -+ ComboBoxWirelessPasswordOption -+ - -- -- -- UserlicenseAgreement - -- Export -- 导出 -+ -+ Password -+ 密码 - - -- Close -- 关闭 -+ -+ EditWirelessPassword -+ - - -- Save -- 保存 -+ -+ ButtonWirelessPasswordVisual -+ - - -- Export EULA -- 导出最终用户许可协议 -+ -+ PushButton -+ - - -- Export EULA failed! -- 导出最终用户许可协议失败! -+ -+ None -+ - - -- User End License Agreement -- 最终用户许可协议 -+ -+ WPA/WPA2 Personal -+ WPA/WPA2个人版 - - -- None -- 暂无 -+ -+ Save password for all users -+ 仅为该用户存储密码 - -- -- -- Wallpaper - -- Form -- -+ -+ Save password for this user -+ 存储所有用户密码 - - -- Set wallpaper -- 壁纸设置 -+ -+ Ask me always -+ 总是询问 - - -- FrameLockScreenPreview -- -+ -+ Required -+ 必填 - -+ -+ -+ WirelessSettingPage - -- FrameDesktopPreivew -+ -+ WirelessSettingPage - - - -- Desktop Wallpaper Preview -- 桌面壁纸预览 -- -- -- Lock Screen WallPaper Preview -- 锁屏壁纸预览 -+ -+ Wireless name -+ 无线网络名称 - -+ -+ -+ WirelessTrayWidget - -- Select wallpaper -- 选择壁纸 -+ -+ the network "%1" not found -+ 未找到网络 "%1" - -+ -+ -+ WirelessWidget - -- Select Wallpaper -- 选择壁纸 -+ -+ WirelessWidget -+ - - -- Set Desktop Wallpaper -- 选择桌面壁纸 -+ -+ SSID -+ - - -- Set Lock Screen Wallpaper -- 选择锁屏壁纸 -+ -+ EditSsid -+ - - -- set wallpaper -- 壁纸设置 -+ -+ MAC Address Of Device -+ 设备MAC地址 - - -- Set wallpaper failed! -- 壁纸设置失败! -+ -+ ComboBoxWirelessMacAddress -+ - - -- select picture -- 选择图片 -+ -+ Custom MTU -+ 自定义MTU - - -- image files(*.bmp *.jpg *.png *.tif *.gif *.pcx *.tga *.exif *.fpx *.svg *.psd *.cdr *.pcd *.dxf *.ufo *.eps *.ai *.raw *.WMF *.webp) -- 图片文件(*.bmp *.jpg *.png *.tif *.gif *.pcx *.tga *.exif *.fpx *.svg *.psd *.cdr *.pcd *.dxf *.ufo *.eps *.ai *.raw *.WMF *.webp) -+ -+ SpinBoxWirelessCustomMTU -+ - - -- Add Image Failed -- 添加壁纸失败 -+ -+ Required -+ 必填 - - -- The image already exists! -- 该壁纸已存在! -+ -+ No device specified -+ 不指定设备 - - - - YearSpinBox - -+ - yyyy - yyyy年 - --- -2.27.0 - diff --git a/0001-fix-keybinding-don-t-convert-normal-key-if-use-shift.patch b/0001-fix-keybinding-don-t-convert-normal-key-if-use-shift.patch new file mode 100644 index 0000000000000000000000000000000000000000..80877527147be036224b3350e120f21413e7acbd --- /dev/null +++ b/0001-fix-keybinding-don-t-convert-normal-key-if-use-shift.patch @@ -0,0 +1,387 @@ +From 879b452cc80dccb6581fea70a671a86994fb3a45 Mon Sep 17 00:00:00 2001 +From: yuan_xing +Date: Thu, 29 Feb 2024 17:28:42 +0800 +Subject: [PATCH 1/1] fix(keybinding):don't convert normal key if use shift + modifier in keybinding +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 如果在快捷键中使用了shift修饰键,则不转换其普通按键,直接使用普通按键的Qt::Key + +Relates #30978 +--- + README.md | 4 +- + plugins/keybinding/CMakeLists.txt | 7 ++- + plugins/keybinding/utils/custom-line-edit.cpp | 25 +++++++---- + plugins/keybinding/utils/keycode-helper.cpp | 42 ++++++++++++++++++ + plugins/keybinding/utils/keycode-helper.h | 23 ++++++++++ + .../keybinding/utils/keycode-translator.cpp | 44 +++++++++++-------- + plugins/keybinding/utils/keycode-translator.h | 6 +-- + 7 files changed, 119 insertions(+), 32 deletions(-) + create mode 100644 plugins/keybinding/utils/keycode-helper.cpp + create mode 100644 plugins/keybinding/utils/keycode-helper.h + +diff --git a/README.md b/README.md +index 83d25b9..ad47094 100644 +--- a/README.md ++++ b/README.md +@@ -7,7 +7,7 @@ + 1. 安装编译依赖 + + ```bash +- $ sudo yum install gcc-c++ qt5-qtbase qt5-qtbase-devel qt5-qtbase-gui qt5-qtx11extras qt5-qtx11extras-devel qt5-qtsvg glibc glibc-devel libX11 libX11-devel kiranwidgets-qt5 kiran-widgets-qt5-devel ++ $ sudo yum install gcc-c++ qt5-qtbase qt5-qtbase-devel qt5-qtbase-gui qt5-qtx11extras qt5-qtx11extras-devel qt5-qtsvg glibc glibc-devel libX11 libX11-devel kiranwidgets-qt5 kiran-widgets-qt5-devel qt5-qtbase-static qt5-qtbase-private-devel + ``` + + 2. **源码根目录下创建**build**目录`mkdir build` +@@ -302,4 +302,4 @@ $ kiran-control-panel + + ```bash + $ kiran-cpanel-launcher --cpanel-plugin 插件安装的desktop文件名 +-``` +\ No newline at end of file ++``` +diff --git a/plugins/keybinding/CMakeLists.txt b/plugins/keybinding/CMakeLists.txt +index bc94de2..d9dc8d1 100644 +--- a/plugins/keybinding/CMakeLists.txt ++++ b/plugins/keybinding/CMakeLists.txt +@@ -1,5 +1,7 @@ + set(TARGET_NAME kiran-cpanel-keybinding) + ++find_package(Qt5 COMPONENTS XkbCommonSupport) ++ + kiran_qt5_add_dbus_interface_ex(KEYBINDING_PROXY + data/com.kylinsec.Kiran.SessionDaemon.Keybinding.xml + keybinding_backEnd_proxy +@@ -16,6 +18,7 @@ target_include_directories(${TARGET_NAME} PRIVATE + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/utils ++ ${Qt5XkbCommonSupport_PRIVATE_INCLUDE_DIRS} + ${KLOG_INCLUDE_DIRS} + ${KIRAN_WIDGETS_INCLUDE_DIRS} + ${KIRAN_CC_DAEMON_INCLUDE_DIRS}) +@@ -27,8 +30,10 @@ target_link_libraries(${TARGET_NAME} + Qt5::Svg + Qt5::Core + Qt5::Concurrent ++ X11 ++ Qt5::XkbCommonSupport + ${KIRANWIDGETS_LIBRARIES} + ${KLOG_LIBRARIES}) + + install(TARGETS ${TARGET_NAME} +- DESTINATION ${PLUGIN_LIBS_DIR}/) +\ No newline at end of file ++ DESTINATION ${PLUGIN_LIBS_DIR}/) +diff --git a/plugins/keybinding/utils/custom-line-edit.cpp b/plugins/keybinding/utils/custom-line-edit.cpp +index 36250da..6defb3b 100644 +--- a/plugins/keybinding/utils/custom-line-edit.cpp ++++ b/plugins/keybinding/utils/custom-line-edit.cpp +@@ -17,6 +17,8 @@ + #include + #include + #include ++#include "keycode-translator.h" ++#include "logging-category.h" + + CustomLineEdit::CustomLineEdit(QWidget *parent) : QLineEdit(parent) + { +@@ -33,18 +35,27 @@ void CustomLineEdit::initUI() + setFocusPolicy(Qt::ClickFocus); + setReadOnly(true); + setObjectName("CustomLineEdit"); +-// setStyleSheet("#CustomLineEdit{border:1px solid #393939;border-radius:6px;padding-left:10px;padding-right:10px;}" +-// "#CustomLineEdit:focus{border:1px solid #2eb3ff;}"); ++ // setStyleSheet("#CustomLineEdit{border:1px solid #393939;border-radius:6px;padding-left:10px;padding-right:10px;}" ++ // "#CustomLineEdit:focus{border:1px solid #2eb3ff;}"); + } + + void CustomLineEdit::keyReleaseEvent(QKeyEvent *event) + { + QList keycodes; ++ int qtkey = 0; + + if (event->key() == Qt::Key_Backspace && event->modifiers() == Qt::NoModifier) + { + return; + } ++ ++ //处理shift修饰的快捷键组合,按键不经过shift转化,将原始按键keycode转化为对应的Qt::Key ++ if (event->key() != 0 && (event->modifiers() & Qt::ShiftModifier)) ++ { ++ qtkey = KeycodeTranslator::keycode2QtKey(event->nativeScanCode()); ++ KLOG_INFO(qLcKeybinding) << "convert KeyCode:" << event->nativeScanCode() << "to Qt::Key:" << qtkey; ++ } ++ + // no modifier + if (event->key() != 0 && event->modifiers() == Qt::NoModifier) + { +@@ -56,14 +67,12 @@ void CustomLineEdit::keyReleaseEvent(QKeyEvent *event) + else if (event->key() != 0 && event->modifiers() == Qt::ShiftModifier) + { + keycodes.append(Qt::Key_Shift); +- keycodes.append(event->key()); +- //KLOG_INFO() << "shift :" << event->key() << event->modifiers(); ++ keycodes.append(qtkey ? qtkey : event->key()); + } + else if (event->key() != 0 && event->modifiers() == Qt::ControlModifier) + { + keycodes.append(Qt::Key_Control); + keycodes.append(event->key()); +- //KLOG_INFO() << "ctrl :" << event->key() << event->text(); + } + else if (event->key() != 0 && event->modifiers() == Qt::AltModifier) + { +@@ -76,7 +85,7 @@ void CustomLineEdit::keyReleaseEvent(QKeyEvent *event) + { + keycodes.append(Qt::Key_Control); + keycodes.append(Qt::Key_Shift); +- keycodes.append(event->key()); ++ keycodes.append(qtkey ? qtkey : event->key()); + } + else if (event->key() != 0 && event->modifiers() == (Qt::ControlModifier | Qt::AltModifier)) + { +@@ -88,7 +97,7 @@ void CustomLineEdit::keyReleaseEvent(QKeyEvent *event) + { + keycodes.append(Qt::Key_Shift); + keycodes.append(Qt::Key_Alt); +- keycodes.append(event->key()); ++ keycodes.append(qtkey ? qtkey : event->key()); + } + //three modifier + else if (event->key() != 0 && event->modifiers() == (Qt::AltModifier | Qt::ShiftModifier | Qt::ControlModifier)) +@@ -96,7 +105,7 @@ void CustomLineEdit::keyReleaseEvent(QKeyEvent *event) + keycodes.append(Qt::Key_Shift); + keycodes.append(Qt::Key_Control); + keycodes.append(Qt::Key_Alt); +- keycodes.append(event->key()); ++ keycodes.append(qtkey ? qtkey : event->key()); + } + if (keycodes.size() > 0) + { +diff --git a/plugins/keybinding/utils/keycode-helper.cpp b/plugins/keybinding/utils/keycode-helper.cpp +new file mode 100644 +index 0000000..67cb698 +--- /dev/null ++++ b/plugins/keybinding/utils/keycode-helper.cpp +@@ -0,0 +1,42 @@ ++/** ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * kiran-control-panel is licensed under Mulan PSL v2. ++ * You can use this software according to the terms and conditions of the Mulan PSL v2. ++ * You may obtain a copy of Mulan PSL v2 at: ++ * http://license.coscl.org.cn/MulanPSL2 ++ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, ++ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, ++ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. ++ * See the Mulan PSL v2 for more details. ++ * ++ * Author: yuanxing ++ */ ++ ++#include "keycode-helper.h" ++ ++#include ++ ++namespace KeycodeHelper ++{ ++unsigned long keycode2Keysym(unsigned long keycode) ++{ ++ KeySym keysym = NoSymbol; ++ Display *display = QX11Info::display(); ++ if (display == nullptr) ++ { ++ KLOG_WARNING(qLcKeybinding) << "can't open display!"; ++ return keysym; ++ } ++ ++ keysym = XKeycodeToKeysym(display, keycode, 0); ++ if (keysym != NoSymbol) ++ { ++ KLOG_INFO(qLcKeybinding) << "convert KeyCode:" << keycode << "to KeySym:" << keysym; ++ } ++ else ++ { ++ KLOG_INFO(qLcKeybinding) << "no corresponding" << keycode << "KeySym found."; ++ } ++ return keysym; ++} ++} // namespace KeycodeHelper +diff --git a/plugins/keybinding/utils/keycode-helper.h b/plugins/keybinding/utils/keycode-helper.h +new file mode 100644 +index 0000000..849abe0 +--- /dev/null ++++ b/plugins/keybinding/utils/keycode-helper.h +@@ -0,0 +1,23 @@ ++/** ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * kiran-control-panel is licensed under Mulan PSL v2. ++ * You can use this software according to the terms and conditions of the Mulan PSL v2. ++ * You may obtain a copy of Mulan PSL v2 at: ++ * http://license.coscl.org.cn/MulanPSL2 ++ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, ++ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, ++ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. ++ * See the Mulan PSL v2 for more details. ++ * ++ * Author: yuanxing ++ */ ++ ++#pragma once ++ ++#include ++#include "logging-category.h" ++ ++namespace KeycodeHelper ++{ ++unsigned long keycode2Keysym(unsigned long keycode); ++} // namespace KeycodeHelper +diff --git a/plugins/keybinding/utils/keycode-translator.cpp b/plugins/keybinding/utils/keycode-translator.cpp +index a8dea85..5b7f40c 100644 +--- a/plugins/keybinding/utils/keycode-translator.cpp ++++ b/plugins/keybinding/utils/keycode-translator.cpp +@@ -15,9 +15,11 @@ + #include "keycode-translator.h" + #include "logging-category.h" + ++#include + #include +-#include + #include ++#include ++#include "keycode-helper.h" + + static QMetaEnum keyMetaEnum = QMetaEnum::fromType(); + +@@ -89,23 +91,22 @@ static const QMap MediaKeyMap = { + KeycodeTranslator::KeycodeTranslator(QObject *parent) + : QObject(parent) + { +- + } + + QString KeycodeTranslator::keycode2ReadableString(const QList &keycodes) + { + QStringList keyStrings; + +- for( int key : keycodes ) ++ for (int key : keycodes) + { +- if( (key >= Qt::Key_0) && (key <= Qt::Key_9) ) ++ if ((key >= Qt::Key_0) && (key <= Qt::Key_9)) + { +- keyStrings.append(QString::number(key-Qt::Key_0)); ++ keyStrings.append(QString::number(key - Qt::Key_0)); + continue; + } + +- const char* keyValue = keyMetaEnum.valueToKey(key); +- if( keyValue == nullptr ) ++ const char *keyValue = keyMetaEnum.valueToKey(key); ++ if (keyValue == nullptr) + { + KLOG_WARNING(qLcKeybinding) << "can't convert key:" << key; + continue; +@@ -113,12 +114,12 @@ QString KeycodeTranslator::keycode2ReadableString(const QList &keycodes) + + QString keyStr(keyValue); + //特殊按键经QMetaEnum翻译之后再经过SpecialKeyMap翻译 +- if( SpecialKeyMap.contains(keyStr.toLower()) ) ++ if (SpecialKeyMap.contains(keyStr.toLower())) + { + keyStrings.append(SpecialKeyMap.value(keyStr.toLower())); + } + //特殊按键 "_" 转换成 " " +- else if( (key >= Audio_Lower_Volume) && (key <= Audio_Mic_Mute) ) ++ else if ((key >= Audio_Lower_Volume) && (key <= Audio_Mic_Mute)) + { + keyStrings.append(keyStr.split("_").join(" ")); + } +@@ -131,33 +132,40 @@ QString KeycodeTranslator::keycode2ReadableString(const QList &keycodes) + return keyStrings.join('+'); + } + ++int KeycodeTranslator::keycode2QtKey(unsigned long keycode) ++{ ++ auto keysym = KeycodeHelper::keycode2Keysym(keycode); ++ auto qtkey = QXkbCommon::keysymToQtKey(keysym, Qt::KeyboardModifier::NoModifier); ++ return qtkey; ++} ++ + QString KeycodeTranslator::backendKeyString2Readable(const QString &keyString) + { + QString readableString; + +- if( keyString.isEmpty() ) ++ if (keyString.isEmpty()) + { + readableString = tr("None"); + } +- else if( keyString.contains("disable",Qt::CaseInsensitive) ) ++ else if (keyString.contains("disable", Qt::CaseInsensitive)) + { + readableString = tr("disabled"); + } + else + { + QString temp = keyString; +- temp = temp.replace("<",""); +- temp = temp.replace(">","-"); ++ temp = temp.replace("<", ""); ++ temp = temp.replace(">", "-"); + #if (QT_VERSION < QT_VERSION_CHECK(5, 14, 0)) + QStringList keyList = temp.split("-", QString::SkipEmptyParts); + #else +- QStringList keyList = temp.split("-",Qt::SkipEmptyParts); ++ QStringList keyList = temp.split("-", Qt::SkipEmptyParts); + #endif +- for(int i=0;i + +-class KeycodeTranslator : public QObject ++class KeycodeTranslator : public QObject + { + Q_OBJECT + public: +@@ -174,9 +174,9 @@ private: + + public: + static QString keycode2ReadableString(const QList& keycodes); ++ static int keycode2QtKey(unsigned long keycode); + static QString backendKeyString2Readable(const QString& keyString); + static QString readableKeyString2Backend(const QString& keyString); + }; + +- +-#endif //KIRAN_CONTROL_PANEL_KEYCODE_TRANSLATOR_H ++#endif //KIRAN_CONTROL_PANEL_KEYCODE_TRANSLATOR_H +-- +2.27.0 + diff --git a/0002-fix-audio-network-Compatible-for-versions-below-5.15.patch b/0002-fix-audio-network-Compatible-for-versions-below-5.15.patch new file mode 100644 index 0000000000000000000000000000000000000000..afc33e25997476dbfc0648e2a66a8e5e831691fc --- /dev/null +++ b/0002-fix-audio-network-Compatible-for-versions-below-5.15.patch @@ -0,0 +1,50 @@ +From e59ea47e98c22618f260a724938c0a55d62a91ed Mon Sep 17 00:00:00 2001 +From: luoqing +Date: Fri, 29 Mar 2024 16:11:36 +0800 +Subject: [PATCH] fix(audio&network):Compatible for versions below 5.15 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 兼容qt5.15以下版本 +--- + plugins/network/src/plugin/connection-itemwidget.cpp | 4 ++++ + plugins/network/src/tray/network-tray.cpp | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/plugins/network/src/plugin/connection-itemwidget.cpp b/plugins/network/src/plugin/connection-itemwidget.cpp +index d1abea1..db4e708 100644 +--- a/plugins/network/src/plugin/connection-itemwidget.cpp ++++ b/plugins/network/src/plugin/connection-itemwidget.cpp +@@ -523,8 +523,12 @@ void ConnectionItemWidget::activateWirelessNetwork() + + void ConnectionItemWidget::handleThemeChanged(Kiran::PaletteType paletteType) + { ++#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) + QPixmap pixmap = m_connectionTypeIcon->pixmap(Qt::ReturnByValue); + QImage image = pixmap.toImage(); ++#else ++ QImage image = m_connectionTypeIcon->pixmap()->toImage(); ++#endif + image.invertPixels(QImage::InvertRgb); + m_connectionTypeIcon->setPixmap(QPixmap::fromImage(image)); + m_editButton->setIcon(NetworkUtils::trayIconColorSwitch(":/kcp-network-images/details-info.svg")); +diff --git a/plugins/network/src/tray/network-tray.cpp b/plugins/network/src/tray/network-tray.cpp +index 015a157..e6d6831 100644 +--- a/plugins/network/src/tray/network-tray.cpp ++++ b/plugins/network/src/tray/network-tray.cpp +@@ -757,7 +757,11 @@ void NetworkTray::initTcpSocket() + { + m_tcpClient = new QTcpSocket(this); + connect(m_tcpClient, &QTcpSocket::connected, this, &NetworkTray::internetConnected); ++#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) + connect(m_tcpClient, &QAbstractSocket::errorOccurred, this, &NetworkTray::internetError); ++#else ++ connect(m_tcpClient, QOverload::of(&QAbstractSocket::error),this, &NetworkTray::internetError); ++#endif + } + + void NetworkTray::checkInternetConnectivity() +-- +2.27.0 + diff --git a/0002-fix-plugins-Fix-runtime-plugin-loading-errors.patch b/0002-fix-plugins-Fix-runtime-plugin-loading-errors.patch deleted file mode 100644 index 961ec221bb681e060c33fc76252e667bf61469af..0000000000000000000000000000000000000000 --- a/0002-fix-plugins-Fix-runtime-plugin-loading-errors.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 18e6891a56f471168cbe964c61c134f6d2aeb90d Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Fri, 15 Dec 2023 21:06:06 +0800 -Subject: [PATCH] fix(plugins): Fix runtime plugin loading errors -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修复运行时插件加载错误,补全相关依赖 ---- - CMakeLists.txt | 2 +- - common/plugin-subitem.h | 4 ++-- - plugins/account/CMakeLists.txt | 12 +++++++++--- - 3 files changed, 12 insertions(+), 6 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 4fe9765..07a668d 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -102,4 +102,4 @@ add_subdirectory(lib) - add_subdirectory(libexec) - add_subdirectory(launcher) - add_subdirectory(plugins) --add_subdirectory(data) -\ No newline at end of file -+add_subdirectory(data) -diff --git a/common/plugin-subitem.h b/common/plugin-subitem.h -index f6f6287..1315fda 100644 ---- a/common/plugin-subitem.h -+++ b/common/plugin-subitem.h -@@ -32,7 +32,7 @@ public: - m_pCreateWidget(func) - { - } -- ~PluginSubItem(); -+ ~PluginSubItem(){}; - - public: - // 功能项ID,用于区分功能项,应确保其唯一 -@@ -72,4 +72,4 @@ private: - QString m_icon; - int m_weight; - CreateWidgetFunc m_pCreateWidget = nullptr; --}; -\ No newline at end of file -+}; -diff --git a/plugins/account/CMakeLists.txt b/plugins/account/CMakeLists.txt -index 98c5383..586c6c8 100644 ---- a/plugins/account/CMakeLists.txt -+++ b/plugins/account/CMakeLists.txt -@@ -5,6 +5,8 @@ if (PASSWD_EXPIRATION_POLICY_VISIBLE) - endif () - - pkg_search_module(CRYPTOPP REQUIRED cryptopp) -+pkg_search_module(PAM REQUIRED pam) -+pkg_search_module(LIBCRYPT REQUIRED libcrypt) - - file(GLOB_RECURSE ACCOUNT_SRC - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp -@@ -22,11 +24,13 @@ target_include_directories(${TARGET_NAME} PRIVATE - ${CMAKE_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/pages - ${CMAKE_CURRENT_SOURCE_DIR}/utils -+ ${PAM_INCLUDE_DIRS} - ${KIRAN_WIDGETS_INCLUDE_DIRS} - ${KIRAN_CC_DAEMON_INCLUDE_DIRS} - ${KLOG_INCLUDE_DIRS} - ${KIRAN_STYLE_INCLUDE_DIRS} -- ${CRYPTOPP_INCLUDE_DIRS}) -+ ${CRYPTOPP_INCLUDE_DIRS} -+ ${LIBCRYPT_INCLUDE_DIRS}) - - target_link_libraries(${TARGET_NAME} - common-widgets -@@ -34,10 +38,12 @@ target_link_libraries(${TARGET_NAME} - Qt5::Widgets - Qt5::DBus - Qt5::Svg -+ ${PAM_LIBRARIES} - ${KIRAN_WIDGETS_LIBRARIES} - ${KIRAN_CC_DAEMON_LIBRARIES} - ${KLOG_LIBRARIES} - ${KIRAN_STYLE_LIBRARIES} -- ${CRYPTOPP_LIBRARIES}) -+ ${CRYPTOPP_LIBRARIES} -+ ${LIBCRYPT_LIBRARIES}) - --install(TARGETS ${TARGET_NAME} DESTINATION ${PLUGIN_LIBS_DIR}/) -\ No newline at end of file -+install(TARGETS ${TARGET_NAME} DESTINATION ${PLUGIN_LIBS_DIR}/) --- -2.27.0 - diff --git a/0003-fix-LC_TIME-set-LC_TIME-to-UTF-8.patch b/0003-fix-LC_TIME-set-LC_TIME-to-UTF-8.patch deleted file mode 100644 index 5ee43f86d6c2720b3a80c8c30412f8d05f963db0..0000000000000000000000000000000000000000 --- a/0003-fix-LC_TIME-set-LC_TIME-to-UTF-8.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 78e2ba6f38de67917befdabfe9d40a910b02a88c Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Fri, 15 Dec 2023 16:13:08 +0800 -Subject: [PATCH 03/17] fix(LC_TIME): set LC_TIME to UTF-8 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -根据环境变量重新设置LC_TIME为UTF-8 - -Closes #21517,#24064 ---- - src/main.cpp | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/src/main.cpp b/src/main.cpp -index 05f7153..981fdbf 100644 ---- a/src/main.cpp -+++ b/src/main.cpp -@@ -165,6 +165,24 @@ int main(int argc, char *argv[]) - exit(EXIT_SUCCESS); - } - -+ /// NOTE: 由于strftime获取系统locale进行格式化,Qt使用UTF8,若编码设置不为UTF8中文环境下会导致乱码 -+ /// 所以LANG后面的编码若不为UTF-8,修改成UTF-8,使获取时间都为UTF-8格式 -+ QString lang = qgetenv("LANG"); -+ if (lang.contains(".")) -+ { -+#if (QT_VERSION < QT_VERSION_CHECK(5, 14, 0)) -+ QStringList splitRes = lang.split(".", QString::SkipEmptyParts); -+#else -+ QStringList splitRes = lang.split(".", Qt::SkipEmptyParts); -+#endif -+ if(splitRes.size() == 2 && splitRes.at(1)!="UTF-8" ) -+ { -+ splitRes.replace(1, "UTF-8"); -+ QString newLocale = splitRes.join("."); -+ setlocale(LC_TIME, newLocale.toStdString().c_str()); -+ } -+ } -+ - // 安装翻译 - installTranslator(); - --- -2.33.0 - diff --git a/0004-fix-network-fix-compile-issues-QString-SkipEmptyPart.patch b/0004-fix-network-fix-compile-issues-QString-SkipEmptyPart.patch deleted file mode 100644 index 46e9e8a73fec926e6a0c6ad390e5a4cefb942248..0000000000000000000000000000000000000000 --- a/0004-fix-network-fix-compile-issues-QString-SkipEmptyPart.patch +++ /dev/null @@ -1,50 +0,0 @@ -From f803d07ba85e579776fb185f4878b6fcd6c17ddf Mon Sep 17 00:00:00 2001 -From: luoqing -Date: Thu, 21 Dec 2023 09:25:47 +0800 -Subject: [PATCH 04/17] fix(network):fix compile issues,QString::SkipEmptyParts - is used under Qt 5.14 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修复编译问题,在Qt 5.14 以下使用QString::SkipEmptyParts ---- - plugins/network/src/plugin/setting-widget/ipv4-widget.cpp | 4 ++++ - plugins/network/src/plugin/setting-widget/ipv6-widget.cpp | 4 ++++ - 2 files changed, 8 insertions(+) - -diff --git a/plugins/network/src/plugin/setting-widget/ipv4-widget.cpp b/plugins/network/src/plugin/setting-widget/ipv4-widget.cpp -index da46dab..fa23708 100644 ---- a/plugins/network/src/plugin/setting-widget/ipv4-widget.cpp -+++ b/plugins/network/src/plugin/setting-widget/ipv4-widget.cpp -@@ -131,7 +131,11 @@ void Ipv4Widget::saveSettings() - { - //多个DNS以分号分隔 - QString dnsString = ui->ipv4DNS->text(); -+#if (QT_VERSION < QT_VERSION_CHECK(5, 14, 0)) -+ QStringList dnsList = dnsString.split(";",QString::SkipEmptyParts); -+#else - QStringList dnsList = dnsString.split(";",Qt::SkipEmptyParts); -+#endif - for(auto dns : dnsList) - { - ipv4DNS << QHostAddress(dns); -diff --git a/plugins/network/src/plugin/setting-widget/ipv6-widget.cpp b/plugins/network/src/plugin/setting-widget/ipv6-widget.cpp -index feefdcf..d19a5e0 100644 ---- a/plugins/network/src/plugin/setting-widget/ipv6-widget.cpp -+++ b/plugins/network/src/plugin/setting-widget/ipv6-widget.cpp -@@ -124,7 +124,11 @@ void Ipv6Widget::saveSettings() - { - //多个DNS以分号分隔 - QString dnsString = ui->ipv6DNS->text(); -+#if (QT_VERSION < QT_VERSION_CHECK(5, 14, 0)) -+ QStringList dnsList = dnsString.split(";",QString::SkipEmptyParts); -+#else - QStringList dnsList = dnsString.split(";",Qt::SkipEmptyParts); -+#endif - for(auto dns : dnsList) - { - ipv6DNS << QHostAddress(dns); --- -2.33.0 - diff --git a/0005-fix-audio-listen-to-mute-property-change-to-fix-shor.patch b/0005-fix-audio-listen-to-mute-property-change-to-fix-shor.patch deleted file mode 100644 index 9f1ce02e7cc6a0ae4c1e94408669b352d218bd8f..0000000000000000000000000000000000000000 --- a/0005-fix-audio-listen-to-mute-property-change-to-fix-shor.patch +++ /dev/null @@ -1,202 +0,0 @@ -From b7eb0462cb754bccde3afc53b151a9b6b61e4143 Mon Sep 17 00:00:00 2001 -From: luoqing -Date: Wed, 3 Jan 2024 13:49:14 +0800 -Subject: [PATCH 05/17] fix(audio):listen to mute property change to fix - shortcut key mute, volume icon unchanged issue -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 监听mute静音属性变化,以修复快捷键静音,音量图标未变化的问题 - -Related #25508 ---- - .../src/system-tray/audio-system-tray.cpp | 12 ++++ - .../src/system-tray/volume-setting-page.cpp | 69 ++++++++++++------- - .../src/system-tray/volume-setting-page.h | 5 +- - 3 files changed, 60 insertions(+), 26 deletions(-) - -diff --git a/plugins/audio/src/system-tray/audio-system-tray.cpp b/plugins/audio/src/system-tray/audio-system-tray.cpp -index eb554b2..ed4412f 100644 ---- a/plugins/audio/src/system-tray/audio-system-tray.cpp -+++ b/plugins/audio/src/system-tray/audio-system-tray.cpp -@@ -124,6 +124,18 @@ void AudioSystemTray::initConnect() - setTrayIcon(currentVolume); - }); - -+ connect(m_volumeSettingPage,&VolumeSettingPage::sinkMuteChanged,[this](bool mute,double currentVolume) -+ { -+ if(mute) -+ { -+ setTrayIcon(0); -+ } -+ else -+ { -+ setTrayIcon(currentVolume); -+ } -+ }); -+ - connect(Kiran::StylePalette::instance(), &Kiran::StylePalette::themeChanged, [this](Kiran::PaletteType paletteType) - { - //获取当前音量值重新设置TrayIcon -diff --git a/plugins/audio/src/system-tray/volume-setting-page.cpp b/plugins/audio/src/system-tray/volume-setting-page.cpp -index 03116c7..dbb1cd8 100644 ---- a/plugins/audio/src/system-tray/volume-setting-page.cpp -+++ b/plugins/audio/src/system-tray/volume-setting-page.cpp -@@ -15,8 +15,8 @@ - #include "dbus/audio-device-interface.h" - #include "dbus/audio-interface.h" - #include "dbus/audio-stream-interface.h" --#include "ui_volume-setting-page.h" - #include "logging-category.h" -+#include "ui_volume-setting-page.h" - - #include - #include -@@ -41,7 +41,9 @@ VolumeSettingPage::VolumeSettingPage(enum AudioNode audio, const QString objectP - m_sink = new AudioDeviceInterface(AUDIO_DBUS_NAME, defaultSinkPath, QDBusConnection::sessionBus(), this); - initAudioDevice(); - -- connect(m_sink, &AudioDeviceInterface::volumeChanged, this, &VolumeSettingPage::handleVolumeChanged); -+ connect(m_sink, &AudioDeviceInterface::volumeChanged, this, &VolumeSettingPage::handleVolumeChanged, Qt::UniqueConnection); -+ connect(m_sink, &AudioDeviceInterface::muteChanged, this, &VolumeSettingPage::changeSinkMute, Qt::UniqueConnection); -+ - connect(ui->volumeSetting, &QSlider::valueChanged, [this](int value) - { - double volumeValue = value / 100.0; -@@ -101,6 +103,7 @@ void VolumeSettingPage::initAudioStream() - initSettings(m_sinkInput); - ui->volumeName->setText(m_sinkInput->GetProperty("application.name")); - connect(m_sinkInput, &AudioStreamInterface::volumeChanged, this, &VolumeSettingPage::handleVolumeChanged); -+ connect(m_sinkInput, &AudioStreamInterface::muteChanged, this, &VolumeSettingPage::changeSinkInputMute); - connect(ui->volumeSetting, &QSlider::valueChanged, [this](int value) - { - double volumeValue = value / 100.0; -@@ -123,10 +126,38 @@ void VolumeSettingPage::initSettings(Audio *audio) - ui->volume->setText(QString::number(currentVolume) + "%"); - } - -+void VolumeSettingPage::changeSinkMute(bool value) -+{ -+ KLOG_DEBUG() << "change sink mute:" << value; -+ double currentVolume = m_sink->volume() * 100; -+ emit sinkMuteChanged(value, currentVolume); -+ if (value) -+ { -+ setVolumeIcon(0); -+ } -+ else -+ { -+ setVolumeIcon(currentVolume); -+ } -+} -+void VolumeSettingPage::changeSinkInputMute(bool value) -+{ -+ KLOG_DEBUG() << "change sink input mute:" << value; -+ double currentVolume = m_sinkInput->volume() * 100; -+ if (value) -+ { -+ setVolumeIcon(0); -+ } -+ else -+ { -+ setVolumeIcon(currentVolume); -+ } -+} -+ - void VolumeSettingPage::handleVolumeChanged(double value) - { -- QSignalBlocker blocker(ui->volumeSetting); // 为了避免拖动的同时设置位置会出现问题 -- int currentVolume = round(value * 100); // 表示数值的时候向上取整 -+ QSignalBlocker blocker(ui->volumeSetting); // 为了避免拖动的同时设置位置会出现问题 -+ int currentVolume = round(value * 100); // 表示数值的时候向上取整 - ui->volume->setText(QString::number(currentVolume) + "%"); - setVolumeIcon(currentVolume); - ui->volumeSetting->setValue(currentVolume); -@@ -136,9 +167,9 @@ void VolumeSettingPage::handleVolumeChanged(double value) - void VolumeSettingPage::handleMuteButtonClicked() - { - if (m_audioNode == AUDIO_DEVICE) -- clickMuteButton(m_sink); -+ switchMute(m_sink); - else -- clickMuteButton(m_sinkInput); -+ switchMute(m_sinkInput); - } - - void VolumeSettingPage::handleDefaultSinkChanged(int index) -@@ -154,7 +185,8 @@ void VolumeSettingPage::handleDefaultSinkChanged(int index) - QDBusPendingReply defaultSinkPath = m_audioInterface->GetDefaultSink(); - m_sink = new AudioDeviceInterface(AUDIO_DBUS_NAME, defaultSinkPath, QDBusConnection::sessionBus(), this); - initAudioDevice(); -- connect(m_sink, &AudioDeviceInterface::volumeChanged, this, &VolumeSettingPage::handleVolumeChanged); -+ connect(m_sink, &AudioDeviceInterface::volumeChanged, this, &VolumeSettingPage::handleVolumeChanged, Qt::UniqueConnection); -+ connect(m_sink, &AudioDeviceInterface::muteChanged, this, &VolumeSettingPage::changeSinkMute, Qt::UniqueConnection); - } - - void VolumeSettingPage::handleSinkAdded(int index) -@@ -187,30 +219,17 @@ void VolumeSettingPage::handleSinkDelete(int index) - } - - template --void VolumeSettingPage::clickMuteButton(Audio *audio) -+void VolumeSettingPage::switchMute(Audio *audio) - { -- double currentVolumeDouble = audio->volume() * 100; -- int currentVolume = round(currentVolumeDouble); -- -- if (currentVolume != 0) -+ if (!audio->mute()) - { -- m_volumeBeforeMute = currentVolume; -- if (!audio->mute()) -- { -- audio->SetMute(true); -- } -- audio->SetVolume(0); -- KLOG_DEBUG(qLcAudio) << "current sink is mute :" << audio->mute(); -+ audio->SetMute(true); - } - else - { -- if (m_volumeBeforeMute != 0) -- { -- //重新设置音量时,会自动解除静音状态 -- audio->SetVolume(m_volumeBeforeMute / 100.0); -- m_volumeBeforeMute = 0; -- } -+ audio->SetMute(false); - } -+ KLOG_DEBUG() << "current defalut sink mute:" << audio->mute(); - } - - // XXX:频繁调用函数,需要优化 -diff --git a/plugins/audio/src/system-tray/volume-setting-page.h b/plugins/audio/src/system-tray/volume-setting-page.h -index 80f0098..4a556fe 100644 ---- a/plugins/audio/src/system-tray/volume-setting-page.h -+++ b/plugins/audio/src/system-tray/volume-setting-page.h -@@ -41,6 +41,8 @@ public: - void disableSettings(); - - public slots: -+ void changeSinkMute(bool value); -+ void changeSinkInputMute(bool value); - void handleVolumeChanged(double value); - void handleMuteButtonClicked(); - void handleDefaultSinkChanged(int index); -@@ -57,10 +59,11 @@ private: - template - void initSettings(Audio *audio); - template -- void clickMuteButton(Audio *audio); -+ void switchMute(Audio *audio); - - signals: - void volumeChanged(double value); -+ void sinkMuteChanged(bool mute, double currentVolume); - - private: - Ui::VolumeSettingPage *ui; --- -2.33.0 - diff --git a/0006-fix-network-fixd-an-issue-where-the-network-tray-ico.patch b/0006-fix-network-fixd-an-issue-where-the-network-tray-ico.patch deleted file mode 100644 index 382a947920cb3058a37ed1ea278b67d7b1ec6b37..0000000000000000000000000000000000000000 --- a/0006-fix-network-fixd-an-issue-where-the-network-tray-ico.patch +++ /dev/null @@ -1,183 +0,0 @@ -From 2bae469f6fdd42c15d574a0d4642d13a2fcf3d8b Mon Sep 17 00:00:00 2001 -From: luoqing -Date: Thu, 4 Jan 2024 11:17:57 +0800 -Subject: [PATCH 06/17] fix(network):fixd an issue where the network tray icon - was incorrectly displayed when there was no primary connection -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修复当没有主连接时,网络托盘图标显示不准确的问题 - -Closes #25475, #25037, #25032 ---- - plugins/network/src/general.h | 1 + - plugins/network/src/tray/network-tray.cpp | 90 +++++++++++++++++------ - 2 files changed, 68 insertions(+), 23 deletions(-) - -diff --git a/plugins/network/src/general.h b/plugins/network/src/general.h -index 8aa4f67..c65ce78 100644 ---- a/plugins/network/src/general.h -+++ b/plugins/network/src/general.h -@@ -24,6 +24,7 @@ - - enum NetworkState - { -+ UNKNOWN, - WIRED_CONNECTED, - WIRED_CONNECTED_BUT_NOT_ACCESS_INTERNET, - WIRELESS_CONNECTED, -diff --git a/plugins/network/src/tray/network-tray.cpp b/plugins/network/src/tray/network-tray.cpp -index 00b6685..db6e0cd 100644 ---- a/plugins/network/src/tray/network-tray.cpp -+++ b/plugins/network/src/tray/network-tray.cpp -@@ -20,17 +20,17 @@ - #include - #include - #include -+#include -+#include - #include - #include "config.h" -+#include "logging-category.h" - #include "status-notification.h" - #include "status-notifier-manager.h" - #include "tray-page.h" - #include "utils.h" - #include "wired-tray-widget.h" - #include "wireless-tray-widget.h" --#include --#include --#include "logging-category.h" - - using namespace NetworkManager; - -@@ -359,42 +359,70 @@ void NetworkTray::getTrayGeometry() - void NetworkTray::updateTrayIcon() - { - auto status = NetworkManager::status(); -- if (status != NetworkManager::Status::Connected) -+ if (status < NetworkManager::Status::ConnectedLinkLocal) - { - setTrayIcon(DISCONNECTED); - return; - } - -+#define SET_TRAY_ICON_AND_CHECK_CONNECTIVITY_AND_RETURN(state) \ -+ if (state != UNKNOWN) \ -+ { \ -+ setTrayIcon(state); \ -+ checkInternetConnectivity(); \ -+ return; \ -+ } -+ -+ NetworkState state = UNKNOWN; - // 判断主连接类型,托盘网络图标以主连接类型为准 - // NetworkManager::primaryConnectionType() 更新不及时,暂时不用 -+ /** -+ * NOTE: -+ * 注意特殊情况,如果当网络状态为已连接,但是没有主连接,则遍历所有已激活的连接, -+ * 按有线优先于无线的原则,如果存在激活的有线连接,则显示有线网络图标;其次显示无线网络图标 -+ * 如果既不是有线也不是无线,则显示有线网络图标 -+ */ - ActiveConnection::Ptr primaryActiveConnection = primaryConnection(); -- if (primaryActiveConnection.isNull()) -+ if (!primaryActiveConnection.isNull()) - { -- KLOG_INFO(qLcNetwork) << "update tray icon failed, primary active connection is null"; -- return; -+ if (primaryActiveConnection->type() == ConnectionSettings::Wireless) -+ { -+ state = WIRELESS_CONNECTED_BUT_NOT_ACCESS_INTERNET; -+ } -+ else -+ { -+ state = WIRED_CONNECTED_BUT_NOT_ACCESS_INTERNET; -+ } - } -+ SET_TRAY_ICON_AND_CHECK_CONNECTIVITY_AND_RETURN(state); - -- // NetworkManager::connectivity() 不准确,使用checkConnectivity -- QDBusPendingReply reply = NetworkManager::checkConnectivity(); -- reply.waitForFinished(); -- uint result = reply.value(); -- -- if (result == NetworkManager::Connectivity::Full) -+ KLOG_INFO(qLcNetwork) << "primary active connection is null"; -+ ActiveConnection::List list = activeConnections(); -+ for (auto connection : list) - { -- checkInternetConnectivity(); -- return; -+ if (connection->type() == ConnectionSettings::ConnectionType::Wired) -+ { -+ state = WIRED_CONNECTED_BUT_NOT_ACCESS_INTERNET; -+ break; -+ } - } -+ SET_TRAY_ICON_AND_CHECK_CONNECTIVITY_AND_RETURN(state); - -- NetworkState state; -- if (primaryActiveConnection->type() == ConnectionSettings::Wireless) -+ for (auto connection : list) - { -- state = WIRELESS_CONNECTED_BUT_NOT_ACCESS_INTERNET; -+ if (connection->type() == ConnectionSettings::ConnectionType::Wireless) -+ { -+ state = WIRELESS_CONNECTED_BUT_NOT_ACCESS_INTERNET; -+ break; -+ } - } -- else -+ -+ //最后如果既不是有线也不是无线,则显示有线网络图标 -+ if (state == UNKNOWN) - { - state = WIRED_CONNECTED_BUT_NOT_ACCESS_INTERNET; - } -- setTrayIcon(state); -+ SET_TRAY_ICON_AND_CHECK_CONNECTIVITY_AND_RETURN(state); - } - - void NetworkTray::setTrayIcon(NetworkState state) -@@ -712,6 +740,15 @@ void NetworkTray::initTcpSocket() - - void NetworkTray::checkInternetConnectivity() - { -+ // NetworkManager::connectivity() 不准确,使用checkConnectivity -+ QDBusPendingReply reply = NetworkManager::checkConnectivity(); -+ reply.waitForFinished(); -+ uint result = reply.value(); -+ if (result != NetworkManager::Connectivity::Full) -+ { -+ return; -+ } -+ - QSettings confSettings(SETTINGS_PATH, QSettings::NativeFormat); - QVariant enable = confSettings.value(QString("Network/CheckInternetConnectivity")); - KLOG_DEBUG(qLcNetwork) << "check Internet Connectivity : " << enable; -@@ -728,11 +765,18 @@ void NetworkTray::checkInternetConnectivity() - void NetworkTray::internetConnected() - { - KLOG_DEBUG(qLcNetwork) << "Connectivity check pass"; -- ActiveConnection::Ptr primaryActiveConnection = primaryConnection(); - NetworkState state; -- if (primaryActiveConnection->type() == ConnectionSettings::Wireless) -+ ActiveConnection::Ptr primaryActiveConnection = primaryConnection(); -+ if (!primaryActiveConnection.isNull()) - { -- state = WIRELESS_CONNECTED; -+ if (primaryActiveConnection->type() == ConnectionSettings::Wireless) -+ { -+ state = WIRELESS_CONNECTED; -+ } -+ else -+ { -+ state = WIRED_CONNECTED; -+ } - } - else - { --- -2.33.0 - diff --git a/0007-fix-application-add-a-compilation-switch-to-control-.patch b/0007-fix-application-add-a-compilation-switch-to-control-.patch deleted file mode 100644 index f6f78e07537be761f6b465cd8de8d88601c1fabf..0000000000000000000000000000000000000000 --- a/0007-fix-application-add-a-compilation-switch-to-control-.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 3ccdcfbc6d104f1f691b7feaf6ed58daae21da63 Mon Sep 17 00:00:00 2001 -From: niko_yhc -Date: Mon, 8 Jan 2024 13:48:50 +0800 -Subject: [PATCH 07/17] fix(application):add a compilation switch to control - whether the application-plugin is turned on -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 添加编译开关控制application-plugin是否打开 ---- - cmake/options.cmake | 3 ++- - data/CMakeLists.txt | 5 +++++ - plugins/CMakeLists.txt | 4 +++- - 3 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/cmake/options.cmake b/cmake/options.cmake -index f21d2b9..bc56591 100644 ---- a/cmake/options.cmake -+++ b/cmake/options.cmake -@@ -3,4 +3,5 @@ option(PASSWD_EXPIRATION_POLICY_VISIBLE "Is password expiration policy visible" - - OPTION(ENABLE_USER_GROUP "Enable user group" OFF) - OPTION(ENABLE_NETWORK "Enable network plugin" ON) --OPTION(ENABLE_AUDIO "Enable audio plugin" ON) -\ No newline at end of file -+OPTION(ENABLE_AUDIO "Enable audio plugin" ON) -+OPTION(ENABLE_APPLICATION "Enable application plugin" ON) -\ No newline at end of file -diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt -index 9f66d68..8b1ed54 100644 ---- a/data/CMakeLists.txt -+++ b/data/CMakeLists.txt -@@ -14,6 +14,11 @@ endif() - if(NOT ENABLE_USER_GROUP) - list(FILTER CATEGORY_DESKTOP EXCLUDE REGEX "group.desktop") - endif() -+ -+if(NOT ENABLE_APPLICATION) -+ list(FILTER CATEGORY_DESKTOP EXCLUDE REGEX "application.desktop") -+endif() -+ - install(FILES ${CATEGORY_DESKTOP} DESTINATION ${CATEGORY_DESKTOP_DIR}) - - # 安装主分类相关图标文件 -diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt -index 9acb921..ecad7b6 100644 ---- a/plugins/CMakeLists.txt -+++ b/plugins/CMakeLists.txt -@@ -8,7 +8,9 @@ add_subdirectory(timedate) - add_subdirectory(display) - add_subdirectory(keybinding) - add_subdirectory(authentication) --add_subdirectory(application) -+if (ENABLE_APPLICATION) -+ add_subdirectory(application) -+endif() - if(ENABLE_NETWORK) - add_subdirectory(network) - endif() --- -2.33.0 - diff --git a/0008-refactor-account-Remove-useless-password-encryption-.patch b/0008-refactor-account-Remove-useless-password-encryption-.patch deleted file mode 100644 index 4607bc53038632c91091949eba5adfc95e9d6f7a..0000000000000000000000000000000000000000 --- a/0008-refactor-account-Remove-useless-password-encryption-.patch +++ /dev/null @@ -1,137 +0,0 @@ -From 3a30343a3958caafad6b27e1900c0e7b6b9ab26b Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Mon, 8 Jan 2024 15:04:41 +0800 -Subject: [PATCH 08/17] refactor(account): Remove useless password encryption - interfaces and remove the dependency of libcrypt -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 删除目前无用的密码加密接口,去除libcrypt的依赖 ---- - plugins/account/CMakeLists.txt | 7 +-- - plugins/account/utils/passwd-helper.cpp | 57 ------------------------- - plugins/account/utils/passwd-helper.h | 1 - - 3 files changed, 2 insertions(+), 63 deletions(-) - -diff --git a/plugins/account/CMakeLists.txt b/plugins/account/CMakeLists.txt -index 586c6c8..e96fa92 100644 ---- a/plugins/account/CMakeLists.txt -+++ b/plugins/account/CMakeLists.txt -@@ -6,7 +6,6 @@ endif () - - pkg_search_module(CRYPTOPP REQUIRED cryptopp) - pkg_search_module(PAM REQUIRED pam) --pkg_search_module(LIBCRYPT REQUIRED libcrypt) - - file(GLOB_RECURSE ACCOUNT_SRC - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp -@@ -29,8 +28,7 @@ target_include_directories(${TARGET_NAME} PRIVATE - ${KIRAN_CC_DAEMON_INCLUDE_DIRS} - ${KLOG_INCLUDE_DIRS} - ${KIRAN_STYLE_INCLUDE_DIRS} -- ${CRYPTOPP_INCLUDE_DIRS} -- ${LIBCRYPT_INCLUDE_DIRS}) -+ ${CRYPTOPP_INCLUDE_DIRS}) - - target_link_libraries(${TARGET_NAME} - common-widgets -@@ -43,7 +41,6 @@ target_link_libraries(${TARGET_NAME} - ${KIRAN_CC_DAEMON_LIBRARIES} - ${KLOG_LIBRARIES} - ${KIRAN_STYLE_LIBRARIES} -- ${CRYPTOPP_LIBRARIES} -- ${LIBCRYPT_LIBRARIES}) -+ ${CRYPTOPP_LIBRARIES}) - - install(TARGETS ${TARGET_NAME} DESTINATION ${PLUGIN_LIBS_DIR}/) -diff --git a/plugins/account/utils/passwd-helper.cpp b/plugins/account/utils/passwd-helper.cpp -index f6b76f2..a5641c7 100644 ---- a/plugins/account/utils/passwd-helper.cpp -+++ b/plugins/account/utils/passwd-helper.cpp -@@ -14,7 +14,6 @@ - - #include "passwd-helper.h" - --#include - #include - #include - #include -@@ -33,62 +32,6 @@ - - using namespace CryptoPP; - --bool PasswdHelper::encryptPassword(const QString &pwd, QString &encrypted) --{ -- QByteArray byteArray = pwd.toLatin1(); -- QString saltChar = "ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz./0123456789"; -- -- QString rand16SaltChar; -- -- std::default_random_engine randomEngine; -- std::uniform_int_distribution uniformIntDistribution(0, saltChar.size() - 1); -- for (int i = 0; i < 16; i++) -- { -- char ch = saltChar.at(uniformIntDistribution(randomEngine)).toLatin1(); -- rand16SaltChar.append(ch); -- } -- -- QString salt = QString("$6$%1$").arg(rand16SaltChar); -- QByteArray saltByteArray = salt.toLatin1(); -- -- char *cryptedResult = nullptr; -- QByteArray cryptedResultBuffer(100, 0); -- -- //NOTE:兼容低版本libcrypt(不带有crypt_rn接口的版本) --#if 0 -- forever -- { -- cryptedResult = crypt_rn(byteArray.data(), -- saltByteArray.data(), -- cryptedResultBuffer.data(), -- cryptedResultBuffer.size()); -- if (cryptedResult == nullptr) -- { -- if (errno == ERANGE) -- { -- cryptedResultBuffer.resize(cryptedResultBuffer.size() * 2); -- continue; -- } -- else -- { -- KLOG_WARNING() << "encrypt passwd failed," << strerror(errno); -- } -- } -- break; -- } --#else -- crypt_data cryptData{}; -- cryptedResult = crypt_r(byteArray.data(), -- saltByteArray.data(), -- &cryptData); --#endif -- -- if (cryptedResult) -- encrypted = cryptedResult; -- -- return cryptedResult != nullptr; --} -- - bool PasswdHelper::encryptPasswordByRsa(const QString &publicKey, const QString &pwd, QString &encrypted) - { - CryptoPP::RandomPool random_pool; -diff --git a/plugins/account/utils/passwd-helper.h b/plugins/account/utils/passwd-helper.h -index b09d246..fc98068 100644 ---- a/plugins/account/utils/passwd-helper.h -+++ b/plugins/account/utils/passwd-helper.h -@@ -18,7 +18,6 @@ - class QString; - namespace PasswdHelper - { --bool encryptPassword(const QString &pwd, QString &encrypted); - bool encryptPasswordByRsa(const QString &publicKey, const QString &pwd, QString &encrypted); - bool checkUserPassword(const QString &user, const QString &pwd); - } // namespace PasswdHelper --- -2.33.0 - diff --git a/0009-fix-translations-Fix-translation-errors-in-battery-s.patch b/0009-fix-translations-Fix-translation-errors-in-battery-s.patch deleted file mode 100644 index a8fea62b97e18e61443fe6cd3c4119501c4f1d7b..0000000000000000000000000000000000000000 --- a/0009-fix-translations-Fix-translation-errors-in-battery-s.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 24d7fe811440d3ab46a03db079136309f60519a8 Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Mon, 8 Jan 2024 15:06:03 +0800 -Subject: [PATCH 09/17] fix(translations): Fix translation errors in battery - settings -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修复电池设置中错误的翻译 ---- - translations/kiran-control-panel.zh_CN.ts | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/translations/kiran-control-panel.zh_CN.ts b/translations/kiran-control-panel.zh_CN.ts -index 6fb278f..970c5a0 100644 ---- a/translations/kiran-control-panel.zh_CN.ts -+++ b/translations/kiran-control-panel.zh_CN.ts -@@ -533,7 +533,7 @@ - - - Reduce screen brightness when no power -- 低点亮时减少亮度 -+ 低电量时减少亮度 - - - --- -2.33.0 - diff --git a/0010-fix-account-Fix-the-issue-of-setting-default-selecti.patch b/0010-fix-account-Fix-the-issue-of-setting-default-selecti.patch deleted file mode 100644 index 7ef61bf4f7480bc414f09f99b932d99d8e997db5..0000000000000000000000000000000000000000 --- a/0010-fix-account-Fix-the-issue-of-setting-default-selecti.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 2b6125c1a32d3de702a60a10e2baceee481f28c0 Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Tue, 9 Jan 2024 16:59:21 +0800 -Subject: [PATCH 10/17] fix(account): Fix the issue of setting default - selection sidebar errors -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修复设置默认选择侧边栏错误的问题 - -Closes #24761 ---- - plugins/account/account-widget.cpp | 14 ++++++-------- - 1 file changed, 6 insertions(+), 8 deletions(-) - -diff --git a/plugins/account/account-widget.cpp b/plugins/account/account-widget.cpp -index 957b154..59b6cad 100644 ---- a/plugins/account/account-widget.cpp -+++ b/plugins/account/account-widget.cpp -@@ -106,17 +106,15 @@ void AccountWidget::appendUser(const QString &userPath) - - void AccountWidget::setDefaultSelectedUser() - { -- if (m_tabList->count() <= 1) -+ auto items = m_tabList->findItems(AccountsGlobalInfo::instance()->getCurrentUser(), Qt::MatchCaseSensitive); -+ if (items.size() >= 1) - { -- m_tabList->setCurrentRow(0); -- return; -+ auto userItem = items.at(0); -+ m_tabList->setCurrentRow(m_tabList->row(userItem)); - } -- -- auto items = m_tabList->findItems(AccountsGlobalInfo::instance()->getCurrentUser(), Qt::MatchCaseSensitive); -- if (items.size() > 0) -+ else - { -- auto item = items.at(0); -- m_tabList->setCurrentRow(m_tabList->row(item)); -+ m_tabList->setCurrentRow(0); - } - } - --- -2.33.0 - diff --git a/0011-fix-build-delete-useless-methods.patch b/0011-fix-build-delete-useless-methods.patch deleted file mode 100644 index 0702e2ef02f8bdcbf1e478f5d07106091ac32107..0000000000000000000000000000000000000000 --- a/0011-fix-build-delete-useless-methods.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 783eee898cda93ed345a91000834b972c971c327 Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Tue, 9 Jan 2024 20:05:45 +0800 -Subject: [PATCH 11/17] fix(build): delete useless methods -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 删除无用的方法 ---- - plugins/appearance/utils/exclusion-group.cpp | 13 ------------- - plugins/appearance/utils/exclusion-group.h | 4 ---- - 2 files changed, 17 deletions(-) - -diff --git a/plugins/appearance/utils/exclusion-group.cpp b/plugins/appearance/utils/exclusion-group.cpp -index 12fb734..8db48ca 100644 ---- a/plugins/appearance/utils/exclusion-group.cpp -+++ b/plugins/appearance/utils/exclusion-group.cpp -@@ -125,19 +125,6 @@ void ExclusionGroup::removeExclusionItem(ExclusionWidget* widget) - m_exclusionItems.remove(widget); - } - --template ::value>> --QList ExclusionGroup::getExclusionItems() --{ -- QList list; -- -- for( auto item : m_exclusionItems) -- { -- list << qobject_cast(item); -- } -- -- return list; --} -- - void ExclusionGroup::onItemSelectedChanged(bool selected) - { - auto item = qobject_cast(sender()); -diff --git a/plugins/appearance/utils/exclusion-group.h b/plugins/appearance/utils/exclusion-group.h -index 4ca9bd0..7d66a1f 100644 ---- a/plugins/appearance/utils/exclusion-group.h -+++ b/plugins/appearance/utils/exclusion-group.h -@@ -65,10 +65,6 @@ public: - - void addExclusionItem(ExclusionWidget* widget); - void removeExclusionItem(ExclusionWidget* widget); -- -- template ::value>> -- QList getExclusionItems(); -- - signals: - void currentItemChanged(); - --- -2.33.0 - diff --git a/0012-fix-font-Fix-the-issue-of-ineffective-font-changes.patch b/0012-fix-font-Fix-the-issue-of-ineffective-font-changes.patch deleted file mode 100644 index 0e4154e3ef2c84d7e60ee7fac4f7081687b8b0b8..0000000000000000000000000000000000000000 --- a/0012-fix-font-Fix-the-issue-of-ineffective-font-changes.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 4f311e12f5c61c56aece10097d106a980f633c85 Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Tue, 9 Jan 2024 17:09:06 +0800 -Subject: [PATCH 12/17] fix(font): Fix the issue of ineffective font changes -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修复字体更改后不生效的问题 - -Closes #25084 ---- - plugins/appearance/pages/font/fonts.cpp | 9 ++------- - 1 file changed, 2 insertions(+), 7 deletions(-) - -diff --git a/plugins/appearance/pages/font/fonts.cpp b/plugins/appearance/pages/font/fonts.cpp -index e722123..c1c6875 100644 ---- a/plugins/appearance/pages/font/fonts.cpp -+++ b/plugins/appearance/pages/font/fonts.cpp -@@ -113,14 +113,9 @@ void Fonts::initConnections() - connect(AppearanceGlobalInfo::instance(), &AppearanceGlobalInfo::fontChanged, - this, &Fonts::onBackendFontChanged); - -- for (auto fontTypeCombos : m_fontTypeComboBoxMap.values()) -+ for (auto fontTypeCombo : m_comboFontTypesMap.keys()) - { -- auto fontNameComboBox = fontTypeCombos.first; -- auto fontSizeComboBox = fontTypeCombos.second; -- -- connect(fontNameComboBox, QOverload::of(&QComboBox::currentIndexChanged), -- this, &Fonts::onCurrentFontFamilyChanged); -- connect(fontSizeComboBox, QOverload::of(&QComboBox::currentIndexChanged), -+ connect(fontTypeCombo, QOverload::of(&QComboBox::currentIndexChanged), - this, &Fonts::onCurrentFontFamilyChanged); - } - --- -2.33.0 - diff --git a/0013-fix-theme-change-the-light-and-dark-theme-name.patch b/0013-fix-theme-change-the-light-and-dark-theme-name.patch deleted file mode 100644 index 55d90c83787946eaf36ad7d4869555d197da060b..0000000000000000000000000000000000000000 --- a/0013-fix-theme-change-the-light-and-dark-theme-name.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 0422be13648a36784fcffc5a04ba725c7984b290 Mon Sep 17 00:00:00 2001 -From: yuanxing -Date: Thu, 11 Jan 2024 23:23:37 +0800 -Subject: [PATCH 13/17] fix(theme):change the light and dark theme name -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修改深浅色主题名为冰晶白、曜岩黑 - -Fixes #24747 ---- - plugins/appearance/pages/theme/theme-page.cpp | 2 +- - plugins/appearance/pages/theme/theme-page.ui | 9 +-------- - translations/kiran-control-panel.zh_CN.ts | 4 ++-- - 3 files changed, 4 insertions(+), 11 deletions(-) - -diff --git a/plugins/appearance/pages/theme/theme-page.cpp b/plugins/appearance/pages/theme/theme-page.cpp -index 7c303b7..24a5c7a 100644 ---- a/plugins/appearance/pages/theme/theme-page.cpp -+++ b/plugins/appearance/pages/theme/theme-page.cpp -@@ -27,7 +27,7 @@ - #include - - #define DARK_THEME "Kiran-dark" --#define LIGHT_THEME "Kiran" -+#define LIGHT_THEME "Kiran-white" - #define THEME_AUTO_NAME "Kiran-auto" - - #define SETTING_THEME_NUM 2 -diff --git a/plugins/appearance/pages/theme/theme-page.ui b/plugins/appearance/pages/theme/theme-page.ui -index eecc81e..7c61009 100644 ---- a/plugins/appearance/pages/theme/theme-page.ui -+++ b/plugins/appearance/pages/theme/theme-page.ui -@@ -78,7 +78,7 @@ - - - -- Dark and Light Theme -+ Themes Settings - - - -@@ -103,13 +103,6 @@ - - 10 - -- -- -- -- Themes Settings -- -- -- - - - -diff --git a/translations/kiran-control-panel.zh_CN.ts b/translations/kiran-control-panel.zh_CN.ts -index 970c5a0..8e39486 100644 ---- a/translations/kiran-control-panel.zh_CN.ts -+++ b/translations/kiran-control-panel.zh_CN.ts -@@ -5303,7 +5303,7 @@ This is line 50 of the test text - - - Light Theme -- 浅色 -+ 冰晶白 - - - -@@ -5313,7 +5313,7 @@ This is line 50 of the test text - - - Dark Theme -- 深色 -+ 曜岩黑 - - - --- -2.33.0 - diff --git a/0014-fix-shortcut-add-custom-app-icon-Error-prompt-for-mo.patch b/0014-fix-shortcut-add-custom-app-icon-Error-prompt-for-mo.patch deleted file mode 100644 index ef1605265365bf972f12abbb1d38f6caa99c045b..0000000000000000000000000000000000000000 --- a/0014-fix-shortcut-add-custom-app-icon-Error-prompt-for-mo.patch +++ /dev/null @@ -1,482 +0,0 @@ -From 55049f4ee286633b486936c7f4d19d3d426453a0 Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Mon, 15 Jan 2024 16:31:01 +0800 -Subject: [PATCH 14/17] fix(shortcut): add custom app icon,Error prompt for - modifying input shortcut keys -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修改录入快捷键错误提示,新增自定义应用图标显示 - -Closes #25199,#25198 ---- - plugins/keybinding/shortcut.cpp | 79 ++++++++++++---- - plugins/keybinding/shortcut.h | 10 +- - translations/kiran-control-panel.zh_CN.ts | 106 ++++++++++++---------- - 3 files changed, 127 insertions(+), 68 deletions(-) - -diff --git a/plugins/keybinding/shortcut.cpp b/plugins/keybinding/shortcut.cpp -index bab4ad1..84c0cba 100644 ---- a/plugins/keybinding/shortcut.cpp -+++ b/plugins/keybinding/shortcut.cpp -@@ -31,12 +31,15 @@ - #include - #include - --Q_DECLARE_METATYPE(QList) -+#define DEFAULT_APP_ICON "application-script-blank" -+#define APP_ICON_WIDTH 20 - -+Q_DECLARE_METATYPE(QList) - using namespace Kiran; - --Shortcut::Shortcut(QWidget *parent) : QWidget(parent), -- ui(new Ui::Shortcut) -+Shortcut::Shortcut(QWidget *parent) -+ : QWidget(parent), -+ ui(new Ui::Shortcut) - { - ui->setupUi(this); - init(); -@@ -100,16 +103,24 @@ void Shortcut::initUI() - } - - QHBoxLayout *hLayoutCustomApp = new QHBoxLayout(ui->lineEdit_custom_app); -+ m_customAppIcon = new QLabel; -+ m_customAppIcon->setFixedSize(24, 24); -+ m_customAppIcon->setPixmap(QIcon::fromTheme(DEFAULT_APP_ICON).pixmap(20, 20)); -+ hLayoutCustomApp->addWidget(m_customAppIcon, 0, Qt::AlignVCenter); -+ -+ hLayoutCustomApp->addStretch(); -+ - m_btnCustomApp = new QToolButton; - m_btnCustomApp->setObjectName("btn_custom_app"); - m_btnCustomApp->setAccessibleName("ButtonAddCustomApp"); - m_btnCustomApp->setText(tr("Add")); - m_btnCustomApp->setFixedSize(56, 30); - m_btnCustomApp->setCursor(Qt::PointingHandCursor); -- hLayoutCustomApp->addStretch(); - hLayoutCustomApp->addWidget(m_btnCustomApp); -- ui->lineEdit_custom_app->setTextMargins(0, 0, m_btnCustomApp->width(), 0); -+ -+ ui->lineEdit_custom_app->setTextMargins(25, 0, m_btnCustomApp->width(), 0); - connect(m_btnCustomApp, &QToolButton::clicked, this, &Shortcut::openFileSys); -+ connect(ui->lineEdit_custom_app,&QLineEdit::textChanged,this,&Shortcut::handleCustomAppTextChanged); - - QHBoxLayout *hLayoutModifyApp = new QHBoxLayout(ui->lineEdit_modify_app); - m_btnModifyApp = new QToolButton; -@@ -354,7 +365,7 @@ bool Shortcut::isValidKeycode(QList keycodes) - return !pureModifier; - } - --bool Shortcut::getExecFromDesktop(QString fileName, QString &exec) -+bool Shortcut::extractDesktopInfo(const QString &fileName, QString &exec, QString &icon) - { - QSettings settings(fileName, QSettings::IniFormat); - QString str = settings.value("Desktop Entry/Exec").toString(); -@@ -368,6 +379,10 @@ bool Shortcut::getExecFromDesktop(QString fileName, QString &exec) - str = str.replace("%u", "", Qt::CaseInsensitive); - - exec = str; -+ -+ str = settings.value("Desktop Entry/Icon").toString(); -+ icon = str.isEmpty() ? DEFAULT_APP_ICON : str; -+ - return true; - } - -@@ -376,23 +391,38 @@ void Shortcut::openFileSys() - QToolButton *senderbtn = qobject_cast(sender()); - QLineEdit *lineEdit = qobject_cast(senderbtn->parent()); - -- QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "/usr/share/applications"); -+ QString fileName = QFileDialog::getOpenFileName(this, -+ tr("Open File"), -+ "/usr/share/applications", -+ tr("Desktop entries(*.desktop)")); - if (fileName.isNull()) - return; - -- QString exec = fileName; -- if (fileName.endsWith(".desktop")) -+ QString cmd; -+ QString icon = DEFAULT_APP_ICON; -+ if (!extractDesktopInfo(fileName, cmd, icon)) - { -- QString tmp; -- if (!getExecFromDesktop(fileName, tmp)) -- { -- KLOG_ERROR(qLcKeybinding) << "cant't get Exec key from " << fileName; -- return; -- } -- exec = tmp; -+ KLOG_ERROR(qLcKeybinding) << "cant't get Exec key from " << fileName; -+ KiranMessageBox::message(this, tr("Error"), -+ "Extracting the program to be executed from the application's desktop file failed", -+ KiranMessageBox::Ok); -+ return; -+ } -+ -+ // 缓存该次添加的应用以及图标信息 -+ // 后续启动命令修改的时候,应复位图标 -+ m_lastIcon = icon; -+ m_lastIconExec = cmd; -+ -+ QIcon appIcon = QIcon::fromTheme(icon); -+ if( appIcon.isNull() ) -+ { -+ m_lastIcon = DEFAULT_APP_ICON; -+ appIcon = QIcon::fromTheme(DEFAULT_APP_ICON); - } - -- lineEdit->setText(exec); -+ m_customAppIcon->setPixmap(appIcon.pixmap(QSize(APP_ICON_WIDTH,APP_ICON_WIDTH))); -+ lineEdit->setText(cmd); - } - - void Shortcut::handleSearchTimerTimeout() -@@ -787,6 +817,16 @@ void Shortcut::handleResetClicked() - } - } - -+void Shortcut::handleCustomAppTextChanged(const QString& text) -+{ -+ // 直接编辑自定义应用输入框,修改命令 -+ // 导致和desktop读取出来的不一致时清空图标 -+ if( !text.isEmpty() && text != m_lastIconExec ) -+ { -+ m_customAppIcon->setPixmap(QIcon::fromTheme(DEFAULT_APP_ICON).pixmap(20,20)); -+ } -+} -+ - void Shortcut::handleInputKeycode(QList keycodes) - { - CustomLineEdit *senderLineEdit = qobject_cast(sender()); -@@ -803,8 +843,9 @@ void Shortcut::handleInputKeycode(QList keycodes) - { - KiranMessageBox::message(nullptr, - tr("Failed"), -- QString(tr("Cannot use shortcut \"%1\", Because you cannot enter with this key." -- "Please try again using Ctrl, Alt, or Shift at the same time.")) -+ QString(tr("Cannot use shortcut \"%1\"," -+ "Please keep pressing the modifier keys such as Ctrl," -+ "Alt, and Shift before pressing the last key of the shortcut key")) - .arg(keyStr), - KiranMessageBox::Ok); - return; -diff --git a/plugins/keybinding/shortcut.h b/plugins/keybinding/shortcut.h -index fc078fb..3504b1b 100644 ---- a/plugins/keybinding/shortcut.h -+++ b/plugins/keybinding/shortcut.h -@@ -35,6 +35,8 @@ class ShortcutItem; - class KeyMap; - class CustomLineEdit; - class KeybindingBackEndProxy; -+class QLabel; -+ - class Shortcut : public QWidget - { - Q_OBJECT -@@ -59,7 +61,7 @@ private: - ShortcutItem *createShortcutItem(QVBoxLayout *parent, ShortcutInfoPtr shortcutInfo, int type); - bool isConflict(QString &originName, QString newKeyCombination); - bool isValidKeycode(QList keycodes); -- bool getExecFromDesktop(QString fileName, QString &exec); -+ bool extractDesktopInfo(const QString& fileName, QString &exec, QString &icon); - void updateShorcut(ShortcutInfoPtr newShortcut); - void insertShortcut(ShortcutInfoPtr shortcutInfo); - void clearFilterItems(); -@@ -72,6 +74,7 @@ public slots: - void handledShortcutDeleted(QString result); - void handleShortcutChanged(QString result); - -+ void handleCustomAppTextChanged(const QString& text); - void handleInputKeycode(QList keycodes); - - void handleItemDeleteClicked(QString uid); -@@ -96,8 +99,13 @@ private: - QList m_shortcutItem; - QList m_filterItem; - -+ //记录上次通过应用打开的desktop文件记录的Exec和Icon -+ QString m_lastIconExec; -+ QString m_lastIcon; -+ - QToolButton *m_btnModifyApp; - QToolButton *m_btnCustomApp; -+ QLabel *m_customAppIcon; - CustomLineEdit *m_lECustomKey; - CustomLineEdit *m_lEModifyKey; - -diff --git a/translations/kiran-control-panel.zh_CN.ts b/translations/kiran-control-panel.zh_CN.ts -index 970c5a0..31fc01e 100644 ---- a/translations/kiran-control-panel.zh_CN.ts -+++ b/translations/kiran-control-panel.zh_CN.ts -@@ -33,18 +33,18 @@ - AccountWidget - - -- -+ - disable - 禁用 - - - -- -+ - enable - 启用 - - -- -+ - Create new user - 创建新用户 - -@@ -2983,22 +2983,22 @@ - 请用分号分隔多个DNS - - -- -+ - Ipv6 DNS invalid - 无效的Ipv6 DNS - - -- -+ - Ipv6 address can not be empty - Ipv6地址不能为空 - - -- -+ - Ipv6 address invalid - 无效的Ipv6地址 - - -- -+ - Ipv6 Gateway invalid - 无效的Ipv6网关 - -@@ -4675,8 +4675,8 @@ This is line 50 of the test text - - - -- -- -+ -+ - Edit - 编辑 - -@@ -4688,8 +4688,8 @@ This is line 50 of the test text - - - -- -- -+ -+ - Add - 添加 - -@@ -4742,7 +4742,7 @@ This is line 50 of the test text - - - Cancel -- 取消 -+ 取消 - - - -@@ -4772,7 +4772,7 @@ This is line 50 of the test text - - - Save -- 保存 -+ 保存 - - - -@@ -4782,129 +4782,139 @@ This is line 50 of the test text - - - return -- 返回 -+ 返回 - - -- -+ - Please enter a search keyword... - 请输入搜索关键字... - - -- -+ - Required - 必填 - - -- -- -+ -+ - Please press the new shortcut key - 请输入新快捷键 - - -- -+ - Finished - 完成 - - -- -+ - failed to load shortcut key data! - 加载快捷键数据失败! - - -- -+ - List shortcut failed,error:%1 - 列出快捷键失败,错误:%1 - - -- -+ -+ - Error - 错误 - - -- -+ - Get shortcut failed,error: - 获取快捷键失败,错误: - - -- -+ - Open File - 打开文件 - - -- -+ -+ Desktop entries(*.desktop) -+ 桌面文件(*.desktop) -+ -+ -+ - System - 系统 - - -- -+ - Sound - 声音 - - -- -- -- -- -- -- -- -+ -+ -+ -+ -+ -+ -+ - Failed - 失败 - - -- -+ - Delete shortcut failed,error: - 删除快捷键失败,错误: - - -- -- -+ -+ - Warning -- 警告 -+ 警告 - - -- -- -+ -+ - Please complete the shortcut information! - 请完善快捷键信息! - - -- -+ - Set shortcut - 设置快捷键 - - -- -+ - Are you sure you want to disable this shortcut? - 是否确定要禁用此快捷键? - - -- -+ - Modify system shortcut failed,error: - 修改系统快捷键失败,错误: - - -- -+ - Modify custom shortcut failed,error: - 修改自定义快捷键失败,错误: - - -- -+ - Add custom shortcut failed,error: - 添加自定义快捷键失败,错误: - - -- -+ - Reset shortcut failed,error: - 重置快捷键失败,错误: - - -- -+ -+ Cannot use shortcut "%1",Please keep pressing the modifier keys such as Ctrl,Alt, and Shift before pressing the last key of the shortcut key -+ 无法使用快捷键"%1", 请保持按压Ctrl、Alt、Shift等修饰键后,再按压快捷键的最后一个键 -+ -+ - Cannot use shortcut "%1", Because you cannot enter with this key.Please try again using Ctrl, Alt, or Shift at the same time. -- 无法使用快捷键"%1",因为使用此键将无法输入,请同时使用Ctrl,Alt,Shift再试一次。 -+ 无法使用快捷键"%1",因为使用此键将无法输入,请同时使用Ctrl,Alt,Shift再试一次。 - - -- -+ - Shortcut keys %1 are already used in %2,Please try again! - 快捷键%1已用于%2,请再试一次! - --- -2.33.0 - diff --git a/0015-fix-power-profile-mode-using-kiran-cc-daemon-power-i.patch b/0015-fix-power-profile-mode-using-kiran-cc-daemon-power-i.patch deleted file mode 100644 index 4d07058a635a473f08bb4e3a61b1135c3299caee..0000000000000000000000000000000000000000 --- a/0015-fix-power-profile-mode-using-kiran-cc-daemon-power-i.patch +++ /dev/null @@ -1,669 +0,0 @@ -From 26d4b8d60a30821c398ef4be3b6352f5041a56a3 Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Mon, 15 Jan 2024 17:28:15 +0800 -Subject: [PATCH 15/17] fix(power): profile mode using kiran-cc-daemon power - interface -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 计算机模式接口使用控制中心后端所提供的接口 - -Closes #25242 ---- - plugins/power/CMakeLists.txt | 9 +- - ...com.kylinsec.Kiran.SessionDaemon.Power.xml | 16 ++ - .../power/data/net.hadess.PowerProfiles.xml | 144 ------------------ - plugins/power/dbus/power-profiles-wrapper.cpp | 124 --------------- - plugins/power/dbus/power-profiles-wrapper.h | 50 ------ - plugins/power/pages/general-settings-page.cpp | 47 ++++-- - plugins/power/pages/general-settings-page.h | 4 +- - translations/kiran-control-panel.zh_CN.ts | 59 ++++--- - 8 files changed, 86 insertions(+), 367 deletions(-) - delete mode 100644 plugins/power/data/net.hadess.PowerProfiles.xml - delete mode 100644 plugins/power/dbus/power-profiles-wrapper.cpp - delete mode 100644 plugins/power/dbus/power-profiles-wrapper.h - -diff --git a/plugins/power/CMakeLists.txt b/plugins/power/CMakeLists.txt -index 37d025d..99dc819 100644 ---- a/plugins/power/CMakeLists.txt -+++ b/plugins/power/CMakeLists.txt -@@ -7,6 +7,7 @@ set(TARGET_NAME kiran-cpanel-power) - pkg_search_module(UPOWER_GLIB REQUIRED upower-glib) - - set(POWER_PLUGIN_DBUS_SRC_LIST "") -+ - # com.kylinsec.Kiran.SessionDaemon.Power - set(KSD_POWER_XML data/com.kylinsec.Kiran.SessionDaemon.Power.xml) - set_source_files_properties(${KSD_POWER_XML} -@@ -17,13 +18,7 @@ kiran_qt5_add_dbus_interface_ex(KSD_POWER_SRC - ksd_power_proxy - KSDPowerProxy) - list(APPEND POWER_PLUGIN_DBUS_SRC_LIST ${KSD_POWER_SRC}) --# net.hadess.PowerProfiles --set(POWERPROFILES_XML data/net.hadess.PowerProfiles.xml) --kiran_qt5_add_dbus_interface_ex(POWER_PROFILES_SRC -- ${POWERPROFILES_XML} -- power_profiles_proxy -- PowerProfilesProxy) --list(APPEND POWER_PLUGIN_DBUS_SRC_LIST ${POWER_PROFILES_SRC}) -+ - # org.gnome.SessionManager.xml - kiran-session-manager - set(GNOME_SESSION_MANAGER_XML data/org.gnome.SessionManager.xml) - kiran_qt5_add_dbus_interface_ex(GNOME_SESSION_MANAGER_SOUCE -diff --git a/plugins/power/data/com.kylinsec.Kiran.SessionDaemon.Power.xml b/plugins/power/data/com.kylinsec.Kiran.SessionDaemon.Power.xml -index 281ffdb..c32bbb5 100644 ---- a/plugins/power/data/com.kylinsec.Kiran.SessionDaemon.Power.xml -+++ b/plugins/power/data/com.kylinsec.Kiran.SessionDaemon.Power.xml -@@ -82,6 +82,13 @@ - Enable cpu save energy when the ups or battery power is low. - - -+ -+ -+ The profile mode. Refer to PowerProfileMode in power-i.h -+ -+ Switch profile mode. -+ -+ - - - Indicates whether the system is running on battery power. -@@ -107,6 +114,11 @@ - Whether does the cpu save energy when the ups or battery power is low. - - -+ -+ -+ The active profile mode. -+ -+ - - - -@@ -120,5 +132,9 @@ - - - -+ -+ -+ -+ - - -diff --git a/plugins/power/data/net.hadess.PowerProfiles.xml b/plugins/power/data/net.hadess.PowerProfiles.xml -deleted file mode 100644 -index a3241fb..0000000 ---- a/plugins/power/data/net.hadess.PowerProfiles.xml -+++ /dev/null -@@ -1,144 +0,0 @@ -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -diff --git a/plugins/power/dbus/power-profiles-wrapper.cpp b/plugins/power/dbus/power-profiles-wrapper.cpp -deleted file mode 100644 -index 6262fdc..0000000 ---- a/plugins/power/dbus/power-profiles-wrapper.cpp -+++ /dev/null -@@ -1,124 +0,0 @@ --/** -- * Copyright (c) 2020 ~ 2023 KylinSec Co., Ltd. -- * kiran-control-panel is licensed under Mulan PSL v2. -- * You can use this software according to the terms and conditions of the Mulan PSL v2. -- * You may obtain a copy of Mulan PSL v2 at: -- * http://license.coscl.org.cn/MulanPSL2 -- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, -- * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, -- * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. -- * See the Mulan PSL v2 for more details. -- * -- * Author: liuxinhao -- */ --#include "power-profiles-wrapper.h" --#include --#include --#include --#include --#include --#include "power_profiles_proxy.h" -- --#define POWERPROFILES_SERVICE_NAME "net.hadess.PowerProfiles" --#define POWERPROFILES_SERVICE_PATH "/net/hadess/PowerProfiles" --#define POWERPROFILES_SERVICE_PROPERTY_ACTIVE_PROFILE "ActiveProfile" --#define POWERPROFILES_SERVICE_PROPERTY_PROFILES "Profiles" -- --#define FREEDESKTOP_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties" --#define FREEDESKTOP_PROPERTIES_METHOD_GET "Get" --#define FREEDESKTOP_PROPERTIES_METHOD_SET "Set" --#define FREEDESKTOP_PROPERTIES_SIGNAL_PROPERTIES_CHANGED "PropertiesChanged" -- --Q_DECLARE_METATYPE(QList) --PowerProfilesWrapper::PowerProfilesWrapper(QObject* parent) -- : QObject(parent), -- m_profileProxy(new PowerProfilesProxy(POWERPROFILES_SERVICE_NAME, POWERPROFILES_SERVICE_PATH, QDBusConnection::systemBus(), this)) --{ -- qDBusRegisterMetaType>(); -- if (QDBusConnection::systemBus().interface()->isServiceRegistered(POWERPROFILES_SERVICE_NAME)) -- { -- m_isValid = true; -- auto powerProfiles = m_profileProxy->profiles(); -- for (auto powerProfile : powerProfiles) -- { -- KLOG_DEBUG() << powerProfile["Profile"].toString()<< powerProfile["Driver"].toString(); -- if (powerProfile.contains("Profile")) -- { -- m_profiles << profileNameTransToLocale(powerProfile["Profile"].toString()); -- } -- } -- -- auto activeProfile = m_profileProxy->activeProfile(); -- m_activeProfile = activeProfile; -- connect(m_profileProxy, &PowerProfilesProxy::ActiveProfileChanged, -- this, &PowerProfilesWrapper::onActiveProfileChanged); -- } -- else -- { -- KLOG_WARNING() << "power profiles init failed," << POWERPROFILES_SERVICE_NAME << "isn't registered"; -- } --} -- --PowerProfilesWrapper::~PowerProfilesWrapper() --{ --} -- --bool PowerProfilesWrapper::isValid() --{ -- return m_isValid; --} -- --QStringList PowerProfilesWrapper::supportedProfiles() --{ -- return m_profiles; --} -- --QString PowerProfilesWrapper::activeProfile() --{ -- return profileNameTransToLocale(m_activeProfile); --} -- --void PowerProfilesWrapper::setActiveProfile(const QString& profileName) --{ -- QString value = localeTransToProfileName(profileName); -- m_profileProxy->setActiveProfile(value); --} -- --void PowerProfilesWrapper::onActiveProfileChanged(const QString& profileName) --{ -- m_activeProfile = profileName; -- QString localeProfileName = profileNameTransToLocale(profileName); -- emit activeProfileChanged(localeProfileName); --} -- --QString PowerProfilesWrapper::profileNameTransToLocale(const QString& profileName) --{ -- QMap transMap = { -- {"power-saver", tr("power-saver")}, -- {"balanced", tr("balanced")}, -- {"performance", tr("performance")}}; -- -- QString localeProfileName = profileName; -- if (transMap.contains(profileName)) -- { -- localeProfileName = transMap[profileName]; -- } -- -- return localeProfileName; --} -- --QString PowerProfilesWrapper::localeTransToProfileName(const QString& locale) --{ -- QMap transMap = { -- {tr("power-saver"), "power-saver"}, -- {tr("balanced"), "balanced"}, -- {tr("performance"), "performance"}}; -- -- QString profileName = locale; -- if (transMap.contains(locale)) -- { -- profileName = transMap[locale]; -- } -- -- return profileName; --} -diff --git a/plugins/power/dbus/power-profiles-wrapper.h b/plugins/power/dbus/power-profiles-wrapper.h -deleted file mode 100644 -index 0e5723c..0000000 ---- a/plugins/power/dbus/power-profiles-wrapper.h -+++ /dev/null -@@ -1,50 +0,0 @@ --/** -- * Copyright (c) 2020 ~ 2023 KylinSec Co., Ltd. -- * kiran-control-panel is licensed under Mulan PSL v2. -- * You can use this software according to the terms and conditions of the Mulan PSL v2. -- * You may obtain a copy of Mulan PSL v2 at: -- * http://license.coscl.org.cn/MulanPSL2 -- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, -- * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, -- * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. -- * See the Mulan PSL v2 for more details. -- * -- * Author: liuxinhao -- */ --#pragma once -- --#include --#include -- --class PowerProfilesProxy; --class PowerProfilesWrapper : public QObject --{ -- Q_OBJECT --public: -- PowerProfilesWrapper(QObject* parent = nullptr); -- ~PowerProfilesWrapper(); -- -- bool isValid(); -- -- QStringList supportedProfiles(); -- QString activeProfile(); -- void setActiveProfile(const QString& profileName); -- --private slots: -- void onActiveProfileChanged(const QString& profileName); -- --signals: -- void activeProfileChanged(const QString& profileName); -- --private: -- // 由英文的ProfileName装换成本地locale的翻译文本 -- QString profileNameTransToLocale(const QString& profileName); -- // 由于locale的翻译文本,转换成英文的ProfileName -- QString localeTransToProfileName(const QString& locale); -- --private: -- PowerProfilesProxy* m_profileProxy = nullptr; -- bool m_isValid = false; -- QString m_activeProfile; -- QStringList m_profiles; --}; -\ No newline at end of file -diff --git a/plugins/power/pages/general-settings-page.cpp b/plugins/power/pages/general-settings-page.cpp -index 9176a00..430d103 100644 ---- a/plugins/power/pages/general-settings-page.cpp -+++ b/plugins/power/pages/general-settings-page.cpp -@@ -19,7 +19,6 @@ - #include - #include - #include "dbus/kwin-color-correct.h" --#include "dbus/power-profiles-wrapper.h" - #include "dbus/power.h" - #include "kiran-message-box.h" - #include "kiran-session-daemon/power-i.h" -@@ -41,8 +40,7 @@ GeneralSettingsPage::GeneralSettingsPage(QWidget* parent) - : QWidget(parent), - ui(new Ui::GeneralSettingsPage), - m_powerInterface(PowerInterface::getInstance()), -- m_kwinColorCorrect(new KWinColorCorrect(this)), -- m_powerprofiles(new PowerProfilesWrapper(this)) -+ m_kwinColorCorrect(new KWinColorCorrect(this)) - { - ui->setupUi(this); - init(); -@@ -147,13 +145,18 @@ void GeneralSettingsPage::initUI() - } - - // 初始化计算机模式 -- if (m_powerprofiles->isValid()) -+ struct PowerProfileInfo - { -- ui->combo_computerMode->addItems(m_powerprofiles->supportedProfiles()); -- } -- else -+ QString name; -+ int index; -+ }; -+ QList profiles = { -+ {tr("Energy-saving mode"), POWER_PROFILE_MODE_SAVER}, -+ {tr("Balanced mode"), POWER_PROFILE_MODE_BALANCED}, -+ {tr("High performance mode"), POWER_PROFILE_MODE_PERFORMANCE}}; -+ for (auto profile : profiles) - { -- ui->widget_computerMode->setVisible(false); -+ ui->combo_computerMode->addItem(profile.name, profile.index); - } - - /// 初始化QSlider,和延迟设置的Timer -@@ -209,7 +212,7 @@ void GeneralSettingsPage::initConnection() - connect(ui->combo_closingLid, QOverload::of(&QComboBox::currentIndexChanged), - this, &GeneralSettingsPage::updateEventAction); - -- connect(ui->combo_computerMode, &QComboBox::currentTextChanged, -+ connect(ui->combo_computerMode, QOverload::of(&QComboBox::currentIndexChanged), - this, &GeneralSettingsPage::updateCurrentComputerMode); - - connect(&m_brightnessSettingTimer, &QTimer::timeout, -@@ -271,10 +274,15 @@ void GeneralSettingsPage::load() - updateEventActionComboCurrent(ui->combo_closingLid, POWER_EVENT_LID_CLOSED); - - // 计算机模式 -- if (m_powerprofiles->isValid()) -+ QSignalBlocker blocker(ui->combo_computerMode); -+ int activePorfileComboxIdx = ui->combo_computerMode->findData(m_powerInterface->activeProfile()); -+ if (activePorfileComboxIdx != -1) - { -- QSignalBlocker blocker(ui->combo_computerMode); -- ui->combo_computerMode->setCurrentText(m_powerprofiles->activeProfile()); -+ ui->combo_computerMode->setCurrentIndex(activePorfileComboxIdx); -+ } -+ else -+ { -+ KLOG_ERROR() << "can not fidn current active computer mode in combobox:" << m_powerInterface->activeProfile(); - } - - // 显示器亮度调整 -@@ -496,9 +504,20 @@ void GeneralSettingsPage::onSliderColorTempValueChanged(int value) - m_colorTempSettingTimer.start(); - } - --void GeneralSettingsPage::updateCurrentComputerMode(const QString& text) -+void GeneralSettingsPage::updateCurrentComputerMode(int idx) - { -- m_powerprofiles->setActiveProfile(text); -+ auto computerMode = ui->combo_computerMode->itemData(idx); -+ auto reply = m_powerInterface->SwitchProfile(computerMode.toInt()); -+ reply.waitForFinished(); -+ if (reply.isError()) -+ { -+ KLOG_ERROR() << "set current computer mode" << computerMode.toInt() -+ << "failed," << reply.error(); -+ } -+ else -+ { -+ KLOG_DEBUG() << "set current computer mode" << computerMode.toInt(); -+ } - } - - void GeneralSettingsPage::setUiBrightnessPercent(int percent) -diff --git a/plugins/power/pages/general-settings-page.h b/plugins/power/pages/general-settings-page.h -index 63e8591..e270253 100644 ---- a/plugins/power/pages/general-settings-page.h -+++ b/plugins/power/pages/general-settings-page.h -@@ -29,7 +29,6 @@ class PowerInterface; - class KiranSwitchButton; - class QGSettings; - class KWinColorCorrect; --class PowerProfilesWrapper; - class GeneralSettingsPage : public QWidget - { - Q_OBJECT -@@ -62,13 +61,12 @@ private slots: - void onSwitchAutoColorTempToggoled(bool checked); - void updateColorTempatureValue(); - void onSliderColorTempValueChanged(int value); -- void updateCurrentComputerMode(const QString& text); -+ void updateCurrentComputerMode(int idx); - - private: - Ui::GeneralSettingsPage *ui; - PowerInterface* m_powerInterface; - KWinColorCorrect* m_kwinColorCorrect; -- PowerProfilesWrapper* m_powerprofiles; - QTimer m_brightnessSettingTimer; - QTimer m_idleTimeSettingTimer; - QTimer m_colorTempSettingTimer; -diff --git a/translations/kiran-control-panel.zh_CN.ts b/translations/kiran-control-panel.zh_CN.ts -index 31fc01e..83cac3b 100644 ---- a/translations/kiran-control-panel.zh_CN.ts -+++ b/translations/kiran-control-panel.zh_CN.ts -@@ -2297,50 +2297,65 @@ - 待机时唤醒需要输入密码 - - -- -- -+ -+ - shutdown - 关机 - - -- -- -- -+ -+ -+ - hibernate - 休眠 - - -- -- -- -+ -+ -+ - suspend - 待机 - - -- -- -+ -+ - display off - 关闭显示器 - - -- -- -- -+ -+ -+ - do nothing - 不执行操作 - - -- -+ -+ Energy-saving mode -+ 节能模式 -+ -+ -+ -+ Balanced mode -+ 平衡模式 -+ -+ -+ -+ High performance mode -+ 高性能模式 -+ -+ -+ - ERROR - 错误 - - -- -+ - %1hour - %1小时 - - -- -+ - %1minute - %1分钟 - -@@ -4329,22 +4344,16 @@ This is line 50 of the test text - - PowerProfilesWrapper - -- -- - power-saver -- 省电模式 -+ 省电模式 - - -- -- - balanced -- 平衡模式 -+ 平衡模式 - - -- -- - performance -- 性能模式 -+ 性能模式 - - - --- -2.33.0 - diff --git a/0016-fix-launcher-Fix-the-space-before-the-parameter-caus.patch b/0016-fix-launcher-Fix-the-space-before-the-parameter-caus.patch deleted file mode 100644 index da264dd8ded9f5516d3010e009b4823ab75d3108..0000000000000000000000000000000000000000 --- a/0016-fix-launcher-Fix-the-space-before-the-parameter-caus.patch +++ /dev/null @@ -1,35 +0,0 @@ -From b3ac61f93e733f3ec0d9cea4452d0eee159e8957 Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Mon, 15 Jan 2024 17:52:29 +0800 -Subject: [PATCH 16/17] fix(launcher): Fix the space before the parameter - causing a jump event when the launcher jumps -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修复启动器跳转时参数前的空格导致跳转失败 - -Closes #24794 ---- - src/main.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/main.cpp b/src/main.cpp -index 981fdbf..4258832 100644 ---- a/src/main.cpp -+++ b/src/main.cpp -@@ -65,7 +65,11 @@ void processCommandLine() - cmdParser.process(*singleApp); - - QString category = cmdParser.value(categoryOption); -+ category = category.trimmed(); -+ - QString subItem = cmdParser.value(subItemOption); -+ subItem = subItem.trimmed(); -+ - if( !subItem.isEmpty() && category.isEmpty() ) - { - std::cerr << "failed to set sub item without category" << std::endl; --- -2.33.0 - diff --git a/0017-fix-audio-fixed-volume-tray-icon-level-display-not-m.patch b/0017-fix-audio-fixed-volume-tray-icon-level-display-not-m.patch deleted file mode 100644 index da4df22e754dd894c33a5778cf548296ce859517..0000000000000000000000000000000000000000 --- a/0017-fix-audio-fixed-volume-tray-icon-level-display-not-m.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 251cff7db6e926b9df02276acf49d80c8e8b958f Mon Sep 17 00:00:00 2001 -From: luoqing -Date: Tue, 9 Jan 2024 17:13:10 +0800 -Subject: [PATCH 17/17] fix(audio):fixed volume tray icon level display not - meeting requirements -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修复音量托盘图标级别显示不符合需求 - -Close #25235 ---- - plugins/audio/src/system-tray/audio-system-tray.cpp | 4 ++-- - plugins/audio/src/system-tray/volume-setting-page.cpp | 4 ++-- - plugins/network/src/signal-forward.cpp | 4 ++-- - 3 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/plugins/audio/src/system-tray/audio-system-tray.cpp b/plugins/audio/src/system-tray/audio-system-tray.cpp -index ed4412f..b20ad15 100644 ---- a/plugins/audio/src/system-tray/audio-system-tray.cpp -+++ b/plugins/audio/src/system-tray/audio-system-tray.cpp -@@ -266,12 +266,12 @@ void AudioSystemTray::setTrayIcon(int value) - icon.addPixmap(trayIconColorSwitch("kcp-audio-mute")); - icon.addPixmap(trayIconColorSwitch("kcp-audio-mute", 64)); - } -- else if (0 < value && value <= 33) -+ else if (0 < value && value <= 34) - { - icon.addPixmap(trayIconColorSwitch("kcp-audio-low")); - icon.addPixmap(trayIconColorSwitch("kcp-audio-low", 64)); - } -- else if (33 < value && value <= 66) -+ else if (33 < value && value <= 67) - { - icon.addPixmap(trayIconColorSwitch("kcp-audio-medium")); - icon.addPixmap(trayIconColorSwitch("kcp-audio-medium", 64)); -diff --git a/plugins/audio/src/system-tray/volume-setting-page.cpp b/plugins/audio/src/system-tray/volume-setting-page.cpp -index dbb1cd8..d95b039 100644 ---- a/plugins/audio/src/system-tray/volume-setting-page.cpp -+++ b/plugins/audio/src/system-tray/volume-setting-page.cpp -@@ -239,11 +239,11 @@ void VolumeSettingPage::setVolumeIcon(int value) - { - ui->muteButton->setIcon(trayIconColorSwitch("kcp-audio-mute")); - } -- else if (0 < value && value <= 33) -+ else if (0 < value && value <= 34) - { - ui->muteButton->setIcon(trayIconColorSwitch("kcp-audio-low")); - } -- else if (33 < value && value <= 66) -+ else if (33 < value && value <= 67) - { - ui->muteButton->setIcon(trayIconColorSwitch("kcp-audio-medium")); - } -diff --git a/plugins/network/src/signal-forward.cpp b/plugins/network/src/signal-forward.cpp -index 82f4de9..de8415d 100644 ---- a/plugins/network/src/signal-forward.cpp -+++ b/plugins/network/src/signal-forward.cpp -@@ -172,10 +172,10 @@ void SignalForward::addDevice(const QString &uni) - switch (device->type()) - { - case Device::Type::Ethernet: -- emit wiredDeviceAdded(uni);; -+ emit wiredDeviceAdded(uni); - break; - case Device::Type::Wifi: -- emit wirelessDeviceAdded(uni);; -+ emit wirelessDeviceAdded(uni); - break; - default: - emit otherDeviceAdded(uni); --- -2.33.0 - diff --git a/kiran-control-panel-2.6.0.tar.gz b/kiran-control-panel-2.6.1.tar.gz similarity index 69% rename from kiran-control-panel-2.6.0.tar.gz rename to kiran-control-panel-2.6.1.tar.gz index 8b60fae99bad5ae9cd6b4bc85799aeee773c48b5..1a2832faaf16e22f99bf94a133aee28cd4b850d7 100644 Binary files a/kiran-control-panel-2.6.0.tar.gz and b/kiran-control-panel-2.6.1.tar.gz differ diff --git a/kiran-control-panel.spec b/kiran-control-panel.spec index 3df0039a025b5e626e00306778e77e1b55182d49..864572227d79a586851a0484c03772bb52e47131 100644 --- a/kiran-control-panel.spec +++ b/kiran-control-panel.spec @@ -1,30 +1,15 @@ Name: kiran-control-panel -Version: 2.6.0 -Release: 6%{?dist} +Version: 2.6.1 +Release: 3%{?dist} Summary: Kiran Control Panel Summary(zh_CN): Kiran桌面控制面板 License: MulanPSL-2.0 Source0: %{name}-%{version}.tar.gz -Patch0000: 0000-fix-pkgconfig-Fix-the-issue-of-incorrect-content-in-.patch -Patch0001: 0001-fix-appearance-remove-the-Kiran-and-Adwaita-icon-the.patch -Patch0002: 0002-fix-plugins-Fix-runtime-plugin-loading-errors.patch -Patch0003: 0003-fix-LC_TIME-set-LC_TIME-to-UTF-8.patch -Patch0004: 0004-fix-network-fix-compile-issues-QString-SkipEmptyPart.patch -Patch0005: 0005-fix-audio-listen-to-mute-property-change-to-fix-shor.patch -Patch0006: 0006-fix-network-fixd-an-issue-where-the-network-tray-ico.patch -Patch0007: 0007-fix-application-add-a-compilation-switch-to-control-.patch -Patch0008: 0008-refactor-account-Remove-useless-password-encryption-.patch -Patch0009: 0009-fix-translations-Fix-translation-errors-in-battery-s.patch -Patch00010: 0010-fix-account-Fix-the-issue-of-setting-default-selecti.patch -Patch00011: 0011-fix-build-delete-useless-methods.patch -Patch00012: 0012-fix-font-Fix-the-issue-of-ineffective-font-changes.patch -Patch00013: 0013-fix-theme-change-the-light-and-dark-theme-name.patch -Patch00014: 0014-fix-shortcut-add-custom-app-icon-Error-prompt-for-mo.patch -Patch00015: 0015-fix-power-profile-mode-using-kiran-cc-daemon-power-i.patch -Patch00016: 0016-fix-launcher-Fix-the-space-before-the-parameter-caus.patch -Patch00017: 0017-fix-audio-fixed-volume-tray-icon-level-display-not-m.patch +Patch000: 0000-fix-audio-when-the-tray-is-initialized-determine-whe.patch +Patch001: 0001-fix-keybinding-don-t-convert-normal-key-if-use-shift.patch +Patch002: 0002-fix-audio-network-Compatible-for-versions-below-5.15.patch BuildRequires: gcc-c++ BuildRequires: cmake >= 3.2 @@ -38,6 +23,8 @@ BuildRequires: libXrandr-devel BuildRequires: libXcursor-devel BuildRequires: qt5-qtbase-devel +BuildRequires: qt5-qtbase-static +BuildRequires: qt5-qtbase-private-devel BuildRequires: qt5-qtx11extras-devel BuildRequires: qt5-qtsvg-devel BuildRequires: qt5-qtmultimedia-devel @@ -172,6 +159,22 @@ make %{?_smp_mflags} rm -rf %{buildroot} %changelog +* Tue Apr 9 2024 youzhengcai - 2.6.1-3 +- KYOS-F: fix(audio&network):Compatible for versions below 5.15 + +* Tue Mar 5 2024 luoqing - 2.6.1-2.kb1 +- KYOS-B: when the tray is initialized, determine whether there is asound card,if not, the volume icon is disabled (#22865) +- KYOS-B: fix(keybinding):don't convert normal key if use shift modifier in keybinding (#30978) + +* Thu Feb 2 2024 luoqing - 2.6.1-1.kb1 +- KYOS-B: The network connection icon is displayed only in the fully Connected state.The connection icon is not displayed in the ConnectedLinkLocal state (#27750) +- KYOS-B: fixed an issue where tray page expansion size changed incorrectly when multiple network cards were used (#25239) +- KYOS-B: fixed incorrect connectivity results when frequent network connectivity checks are triggered (#29475) +- KYOS-F: Filter conditions are added to the tray status display,and activation icons are displayed only when there are supported activation devices;The tray icon update is triggered when the device status changes to active or disconnected (#29441) +- KYOS-B: Fix translation of shortcut key types Accessibility +- KYOS-B: change ci config +- KYOS-F: New feature to restore font default settings (#20203) + * Thu Jan 18 2024 luoqing - 2.6.0-6 - KYOS-B: Fix the issue of setting default selection sidebar errors (#24761) - KYOS-B: Fix the issue of ineffective font changes (#25084)