From 06cf232a8836a18b102382b1eb4c8f9490e53378 Mon Sep 17 00:00:00 2001 From: lan <873174907@qq.com> Date: Thu, 12 Aug 2021 17:32:14 +0800 Subject: [PATCH] fix(Proxy): Proxy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Description: Proxy Log: 【系统设置-网络】默认窗口大小下,代理页面开关“开启手动代理”功能引起详情内容跳动 #2 Task: http://172.17.66.192/biz/story-view-6381.html --- plugins/system/autoboot/addautoboot.cpp | 39 ------ plugins/system/autoboot/addautoboot.h | 3 - plugins/system/autoboot/autoboot.cpp | 9 ++ plugins/system/display/controlpanel.cpp | 32 ----- plugins/system/display/controlpanel.h | 1 - plugins/system/display/display.ui | 58 +++++++- plugins/system/display/outputconfig.cpp | 114 +--------------- plugins/system/display/outputconfig.h | 6 - plugins/system/display/widget.cpp | 146 ++++++++++++++++++-- plugins/system/display/widget.h | 6 + shell/res/i18n/zh_CN.ts | 173 ++++++++++++------------ 11 files changed, 299 insertions(+), 288 deletions(-) diff --git a/plugins/system/autoboot/addautoboot.cpp b/plugins/system/autoboot/addautoboot.cpp index 04daf6394..1093b8aae 100644 --- a/plugins/system/autoboot/addautoboot.cpp +++ b/plugins/system/autoboot/addautoboot.cpp @@ -59,37 +59,6 @@ void AddAutoBoot::resetBeforeClose() close(); } -bool AddAutoBoot::getFilename(GDir *dir,const char *Name) -{ - QString filedir = QString(g_build_filename(g_get_user_config_dir(), "autostart", NULL))+"/"; - const char *desktopName; - if (dir) { - while ((desktopName = g_dir_read_name(dir))) { - QString filePath = filedir + QString::fromUtf8(desktopName); - QByteArray ba; - ba = filePath.toUtf8(); - GKeyFile *keyfile; - char *name; - keyfile = g_key_file_new(); - if (!g_key_file_load_from_file(keyfile, ba.data(), G_KEY_FILE_NONE, NULL)) { - g_key_file_free(keyfile); - g_dir_close(mdir); - return false; - } - name = g_key_file_get_string(keyfile, G_KEY_FILE_DESKTOP_GROUP, - G_KEY_FILE_DESKTOP_KEY_NAME, NULL); - g_key_file_free(keyfile); - qDebug()<execLineEdit->textEdited(QString(selectedfile)); - mdir = g_dir_open(g_build_filename(g_get_user_config_dir(), "autostart", NULL), 0, NULL); - if (no_display) { ui->hintLabel->setText(tr("desktop file not allowed add")); ui->hintLabel->setAlignment(Qt::AlignCenter); ui->hintLabel->setStyleSheet("color:red;"); ui->certainBtn->setEnabled(false); - } else if (getFilename(mdir,name)) { - ui->hintLabel->setText(tr("desktop file already exist")); - ui->hintLabel->setAlignment(Qt::AlignCenter); - ui->hintLabel->setStyleSheet("color:red;"); - ui->certainBtn->setEnabled(false); } - g_key_file_free(keyfile); } diff --git a/plugins/system/autoboot/addautoboot.h b/plugins/system/autoboot/addautoboot.h index 2f671b5ac..2523e2698 100644 --- a/plugins/system/autoboot/addautoboot.h +++ b/plugins/system/autoboot/addautoboot.h @@ -53,8 +53,6 @@ class AddAutoBoot : public QDialog void resetBeforeClose(); - bool getFilename(GDir *dir,const char *Name); - protected: void paintEvent(QPaintEvent *); @@ -65,7 +63,6 @@ class AddAutoBoot : public QDialog QString mDesktopIcon; bool userEditNameFlag = false; bool userEditCommentFlag = false; - GDir *mdir; private: void initStyle(); diff --git a/plugins/system/autoboot/autoboot.cpp b/plugins/system/autoboot/autoboot.cpp index 5e8ef74f5..33436a860 100644 --- a/plugins/system/autoboot/autoboot.cpp +++ b/plugins/system/autoboot/autoboot.cpp @@ -783,6 +783,15 @@ void AutoBoot::add_autoboot_realize_slot(QString path, QString name, QString exe if (path.isEmpty()) return; + // 判断是否有重复项,重复则不加入对应列表 + QMap::iterator it = statusMaps.begin(); + for (int index = 0; it != statusMaps.end(); it++, index++) { + if (it.value().name == name) { + return; + } + } + + char *filename, *filepath; QByteArray ba = path.section("/", -1, -1).toUtf8(); diff --git a/plugins/system/display/controlpanel.cpp b/plugins/system/display/controlpanel.cpp index 69c20e85c..00c181f6a 100644 --- a/plugins/system/display/controlpanel.cpp +++ b/plugins/system/display/controlpanel.cpp @@ -45,12 +45,6 @@ void ControlPanel::setConfig(const KScreen::ConfigPtr &config) connect(mConfig.data(), &KScreen::Config::outputRemoved, this, &ControlPanel::removeOutput); - for (const KScreen::OutputPtr &output : mConfig->outputs()) { - if (output->isConnected()) { - changescalemax(output); - } - } - for (const KScreen::OutputPtr &output : mConfig->outputs()) { addOutput(output, false); } @@ -135,19 +129,6 @@ void ControlPanel::activateOutputNoParam() } } -void ControlPanel::changescalemax(const KScreen::OutputPtr &output) -{ - QSize sizescale = QSize(); - Q_FOREACH (const KScreen::ModePtr &mode, output->modes()) { - if (sizescale.width() <= mode->size().width()) { - sizescale = mode->size(); - } - } - if (mScaleSize == QSize() || mScaleSize.width() > sizescale.width()) { - mScaleSize = sizescale; - } -} - void ControlPanel::isWayland() { QString sessionType = getenv("XDG_SESSION_TYPE"); @@ -189,21 +170,8 @@ void ControlPanel::slotOutputConnectedChanged() }); if (output->isConnected()) { - changescalemax(output); addOutput(output, true); - for (OutputConfig *outputCfg : mOutputConfigs) { - outputCfg->slotScaleIndex(mScaleSize); - } } else { removeOutput(output->id()); - mScaleSize = QSize(); - for (const KScreen::OutputPtr &output : mConfig->outputs()) { - if (output->isConnected()) { - changescalemax(output); - } - } - for (OutputConfig *outputCfg : mOutputConfigs) { - outputCfg->slotScaleIndex(mScaleSize); - } } } diff --git a/plugins/system/display/controlpanel.h b/plugins/system/display/controlpanel.h index fb53f7655..ec9deac2e 100644 --- a/plugins/system/display/controlpanel.h +++ b/plugins/system/display/controlpanel.h @@ -27,7 +27,6 @@ class ControlPanel : public QFrame void setConfig(const KScreen::ConfigPtr &config); void setUnifiedOutput(const KScreen::OutputPtr &output); void activateOutputNoParam(); - void changescalemax(const KScreen::OutputPtr &output); private: void isWayland(); diff --git a/plugins/system/display/display.ui b/plugins/system/display/display.ui index 6cb60e347..9e03e33c4 100644 --- a/plugins/system/display/display.ui +++ b/plugins/system/display/display.ui @@ -7,7 +7,7 @@ 0 0 945 - 1136 + 1183 @@ -199,6 +199,62 @@ + + + + + 550 + 50 + + + + + 960 + 50 + + + + QFrame::Box + + + QFrame::Raised + + + + + + + 118 + 30 + + + + + 118 + 30 + + + + QFrame::NoFrame + + + screen zoom + + + + + + + + 16777215 + 30 + + + + + + + diff --git a/plugins/system/display/outputconfig.cpp b/plugins/system/display/outputconfig.cpp index 2cff140a6..917ef64eb 100644 --- a/plugins/system/display/outputconfig.cpp +++ b/plugins/system/display/outputconfig.cpp @@ -29,13 +29,12 @@ OutputConfig::OutputConfig(QWidget *parent) : QWidget(parent), mOutput(nullptr) { - initDpiConnection(); + } OutputConfig::OutputConfig(const KScreen::OutputPtr &output, QWidget *parent) : QWidget(parent) { - initDpiConnection(); setOutput(output); } @@ -159,19 +158,6 @@ void OutputConfig::initUi() mScaleCombox = new QComboBox(this); mScaleCombox->setObjectName("scaleCombox"); - double scale = getScreenScale(); - - slotScaleIndex(mResolution->currentResolution()); - - mScaleCombox->setCurrentText(scaleToString(scale)); - - if (mScaleCombox->findData(scale) == -1) { - mScaleCombox->addItem(scaleToString(scale), scale); - mScaleCombox->setCurrentText(scaleToString(scale)); - } - - connect(mScaleCombox, static_cast(&QComboBox::currentIndexChanged), - this, &OutputConfig::slotScaleChanged); QLabel *scaleLabel = new QLabel(this); //~ contents_path /display/screen zoom @@ -183,21 +169,11 @@ void OutputConfig::initUi() scaleLayout->addWidget(mScaleCombox); vbox->addWidget(scaleFrame); + scaleFrame->hide(); initConnection(); } -double OutputConfig::getScreenScale() -{ - double scale = 1.0; - if (QGSettings::isSchemaInstalled(SCALE_SCHEMAS)) { - if (mDpiSettings->keys().contains("scalingFactor")) { - scale = mDpiSettings->get(SCALE_KEY).toDouble(); - } - } - return scale; -} - void OutputConfig::initConnection() { connect(mOutput.data(), &KScreen::Output::isConnectedChanged, @@ -224,29 +200,10 @@ void OutputConfig::initConnection() mRefreshRate->blockSignals(false); } - if (mScaleCombox) { - mScaleCombox->blockSignals(true); - slotScaleIndex(mOutput->currentMode()->size()); - mScaleCombox->blockSignals(false); - } } }); } -void OutputConfig::initDpiConnection() -{ - QByteArray id(SCALE_SCHEMAS); - if (QGSettings::isSchemaInstalled(SCALE_SCHEMAS)) { - mDpiSettings = new QGSettings(id, QByteArray(), this); - connect(mDpiSettings, &QGSettings::changed, this, [=](QString key) { - if (!key.compare("scalingFactor", Qt::CaseSensitive)) { - slotDPIChanged(key); - } - - }); - } -} - QString OutputConfig::scaleToString(double scale) { return QString::number(scale * 100) + "%"; @@ -354,73 +311,6 @@ void OutputConfig::slotScaleChanged(int index) Q_EMIT scaleChanged(mScaleCombox->itemData(index).toDouble()); } -void OutputConfig::slotDPIChanged(QString key) -{ - double scale = mDpiSettings->get(key).toDouble(); - if (mScaleCombox) { - if (mScaleCombox->findData(scale) == -1) { - mScaleCombox->addItem(scaleToString(scale), scale); - } - mScaleCombox->blockSignals(true); - mScaleCombox->setCurrentText(scaleToString(scale)); - mScaleCombox->blockSignals(false); - - } -} - -void OutputConfig::slotScaleIndex(const QSize &size) -{ - QSize msize; - if (mScaleSize != QSize()) { - msize = size.width() > mScaleSize.width()?mScaleSize:size; - } else { - msize = size; - } - if (!msize.isValid()) { - return; - } - - mScaleCombox->blockSignals(true); - mScaleCombox->clear(); - mScaleCombox->addItem("100%", 1.0); - - if (msize.width() >= 1024 ) { - mScaleCombox->addItem("125%", 1.25); - } - if (msize.width() >= 1920 ) { - mScaleCombox->addItem("150%", 1.5); - } - if (msize.width() >= 2560) { - mScaleCombox->addItem("175%", 1.75); - mScaleCombox->addItem("200%", 2.0); - } - if (msize.width() >= 3072) { - mScaleCombox->addItem("225%", 2.25); - mScaleCombox->addItem("250%", 2.5); - } - if (msize.width() >= 3840) { - mScaleCombox->addItem("275%", 2.75); - } - - double scale = getScreenScale(); - - if (mScaleCombox->findData(scale) == -1) { - //该变量保存改变前的缩放率,当用户点击恢复时,恢复对应的缩放率 - mScaleres = scale; - - scale = 1.0; - if (QGSettings::isSchemaInstalled(SCALE_SCHEMAS)) { - if (mDpiSettings->keys().contains("scalingFactor")) { - mDpiSettings->set(SCALE_KEY,scale); - } - } - QMessageBox::information(this, tr("Information"), - tr("Some applications need to be logouted to take effect")); - } - mScaleCombox->setCurrentText(scaleToString(scale)); - mScaleCombox->blockSignals(false); -} - void OutputConfig::setShowScaleOption(bool showScaleOption) { mShowScaleOption = showScaleOption; diff --git a/plugins/system/display/outputconfig.h b/plugins/system/display/outputconfig.h index 69d8e5b6c..fccde93f4 100644 --- a/plugins/system/display/outputconfig.h +++ b/plugins/system/display/outputconfig.h @@ -43,10 +43,6 @@ protected Q_SLOTS: void slotRotationChanged(int index); void slotRefreshRateChanged(int index); void slotScaleChanged(int index); - void slotDPIChanged(QString key); - -public Q_SLOTS: - void slotScaleIndex(const QSize &size); Q_SIGNALS: void changed(); @@ -54,11 +50,9 @@ public Q_SLOTS: protected: virtual void initUi(); - double getScreenScale(); private: void initConnection(); - void initDpiConnection(); QString scaleToString(double scale); protected: diff --git a/plugins/system/display/widget.cpp b/plugins/system/display/widget.cpp index a4e18334c..9db7149b6 100644 --- a/plugins/system/display/widget.cpp +++ b/plugins/system/display/widget.cpp @@ -140,7 +140,22 @@ Widget::Widget(QWidget *parent) : initConnection(); loadQml(); - mScreenScale = scaleGSettings->get(SCALE_KEY).toDouble(); + connect(ui->scaleCombo, static_cast(&QComboBox::currentIndexChanged), + this, [=](int index){ + scaleChangedSlot(ui->scaleCombo->itemData(index).toDouble()); + }); + connect(scaleGSettings,&QGSettings::changed,this,[=](QString key){ + if (!key.compare("scalingFactor", Qt::CaseSensitive)) { + double scale = scaleGSettings->get(key).toDouble(); + if (ui->scaleCombo->findData(scale) == -1) { + scale = 1.0; + } + ui->scaleCombo->blockSignals(true); + ui->scaleCombo->setCurrentText(QString::number(scale * 100) + "%"); + ui->scaleCombo->blockSignals(false); + } + }); + } Widget::~Widget() @@ -179,6 +194,7 @@ void Widget::setConfig(const KScreen::ConfigPtr &config, bool showBrightnessFram KScreen::ConfigMonitor::instance()->addConfig(mConfig); resetPrimaryCombo(); + changescale(); connect(mConfig.data(), &KScreen::Config::outputAdded, this, [=](const KScreen::OutputPtr &output){ outputAdded(output, false); @@ -191,6 +207,20 @@ void Widget::setConfig(const KScreen::ConfigPtr &config, bool showBrightnessFram connect(mConfig.data(), &KScreen::Config::primaryOutputChanged, this, &Widget::primaryOutputChanged); + for (const KScreen::OutputPtr &output : mConfig->outputs()) { + if (output->isConnected()) { + connect(output.data(), &KScreen::Output::currentModeIdChanged, + this, [=]() { + if (output->currentMode()) { + if (ui->scaleCombo) { + changescale(); + } + } + }); + } + + } + // 上面屏幕拿取配置 mScreen->setConfig(mConfig); mControlPanel->setConfig(mConfig); @@ -517,6 +547,8 @@ void Widget::setTitleLabel() { //~ contents_path /display/monitor ui->primaryLabel->setText(tr("monitor")); + //~ contents_path /display/screen zoom + ui->scaleLabel->setText(tr("screen zoom")); } void Widget::writeScale(double scale) @@ -526,9 +558,12 @@ void Widget::writeScale(double scale) } if (mIsScaleChanged) { - if (!mIsRestore) { + if (!mIsChange) { QMessageBox::information(this, tr("Information"), tr("Some applications need to be logouted to take effect")); + } else { + // 非主动切换缩放率,则不弹提示弹窗 + mIsChange = false; } } else { return; @@ -663,13 +698,14 @@ bool Widget::isRestoreConfig() res = false; break; case QMessageBox::RejectRole: - res = true; - if (mScaleres) { - //该情况下不弹提示弹窗 - mIsRestore = true; - writeScale(mScaleres); - mIsRestore = false; + if (mIsSCaleRes) { + QStringList keys = scaleGSettings->keys(); + if (keys.contains("scalingFactor")) { + scaleGSettings->set(SCALE_KEY,scaleres); + } + mIsSCaleRes = false; } + res = true; break; } return res; @@ -856,6 +892,20 @@ void Widget::outputAdded(const KScreen::OutputPtr &output, bool connectChanged) QString name = Utils::outputName(output); addBrightnessFrame(name, output->isEnabled(), output->edid()->serial()); } + // 刷新缩放选项,监听新增显示屏的mode变化 + changescale(); + if (output->isConnected()) { + connect(output.data(), &KScreen::Output::currentModeIdChanged, + this, [=]() { + if (output->currentMode()) { + if (ui->scaleCombo) { + ui->scaleCombo->blockSignals(true); + changescale(); + ui->scaleCombo->blockSignals(false); + } + } + }); + } if (!connectChanged) { connect(output.data(), &KScreen::Output::isConnectedChanged, this, &Widget::slotOutputConnectedChanged); @@ -895,6 +945,8 @@ void Widget::outputAdded(const KScreen::OutputPtr &output, bool connectChanged) void Widget::outputRemoved(int outputId, bool connectChanged) { + // 刷新缩放选项 + changescale(); if (!connectChanged) { KScreen::OutputPtr output = mConfig->output(outputId); if (!output.isNull()) { @@ -1459,14 +1511,13 @@ bool Widget::writeFile(const QString &filePath) void Widget::scaleChangedSlot(double scale) { - this->mScreenScale = scale; - if (scaleGSettings->get(SCALE_KEY).toDouble() != this->mScreenScale) { + if (scaleGSettings->get(SCALE_KEY).toDouble() != scale) { mIsScaleChanged = true; } else { mIsScaleChanged = false; } - writeScale(this->mScreenScale); + writeScale(scale); } void Widget::changedSlot() @@ -1501,6 +1552,12 @@ void Widget::mainScreenButtonSelect(int index) ui->mainScreenButton->setEnabled(true); } + if (!newPrimary->isEnabled()) { + ui->scaleCombo->setEnabled(false); + } else { + ui->scaleCombo->setEnabled(true); + } + // 设置是否勾选 mCloseScreenButton->setEnabled(true); @@ -1603,6 +1660,7 @@ void Widget::initConnection() this, [=](bool checked) { checkOutputScreen(checked); delayApply(); + changescale(); }); connect(mNightButton, &SwitchButton::checkedChanged, this, [=](bool status){ @@ -1967,3 +2025,69 @@ void Widget::setPreScreenCfg(KScreen::OutputList screens) } file.write(QJsonDocument::fromVariant(outputList).toJson()); } + +void Widget::changescale() +{ + mScaleSizeRes = QSize(); + for (const KScreen::OutputPtr &output : mConfig->outputs()) { + if (output->isEnabled()) { + if (mScaleSizeRes == QSize()) { + mScaleSizeRes = output->currentMode()->size(); + } else { + mScaleSizeRes = mScaleSizeRes.width() < output->currentMode()->size().width()?mScaleSizeRes:output->currentMode()->size(); + } + + } + } + + if (mScaleSizeRes != QSize(0,0)) { + QSize scalesize = mScaleSizeRes; + ui->scaleCombo->blockSignals(true); + ui->scaleCombo->clear(); + ui->scaleCombo->addItem("100%", 1.0); + + if (scalesize.width() > 1024 ) { + ui->scaleCombo->addItem("125%", 1.25); + } + if (scalesize.width() == 1920 ) { + ui->scaleCombo->addItem("150%", 1.5); + } + if (scalesize.width() > 1920) { + ui->scaleCombo->addItem("150%", 1.5); + ui->scaleCombo->addItem("175%", 1.75); + } + if (scalesize.width() >= 2160) { + ui->scaleCombo->addItem("200%", 2.0); + } + if (scalesize.width() > 2560) { + ui->scaleCombo->addItem("225%", 2.25); + } + if (scalesize.width() > 3072) { + ui->scaleCombo->addItem("250%", 2.5); + } + if (scalesize.width() > 3840) { + ui->scaleCombo->addItem("275%", 2.75); + } + + double scale; + QStringList keys = scaleGSettings->keys(); + if (keys.contains("scalingFactor")) { + scale = scaleGSettings->get(SCALE_KEY).toDouble(); + } + if (ui->scaleCombo->findData(scale) == -1) { + //记录分辨率切换时,新分辨率不存在的缩放率,在用户点击恢复设置时写入 + mIsSCaleRes = true; + + //记录是否因分辨率导致的缩放率变化 + mIsChange = true; + + scaleres = scale; + scale = 1.0; + } + ui->scaleCombo->setCurrentText(QString::number(scale * 100) + "%"); + scaleChangedSlot(scale); + ui->scaleCombo->blockSignals(false); + mScaleSizeRes = QSize(); + + } +} diff --git a/plugins/system/display/widget.h b/plugins/system/display/widget.h index 5fa284f4e..866bd80df 100644 --- a/plugins/system/display/widget.h +++ b/plugins/system/display/widget.h @@ -88,6 +88,7 @@ class Widget : public QWidget QList getPreScreenCfg(); void setPreScreenCfg(KScreen::OutputList screens); + void changescale(); protected: bool eventFilter(QObject *object, QEvent *event) override; @@ -208,6 +209,9 @@ public Q_SLOTS: QHash mNightConfig; double mScreenScale = 1.0; + double scaleres = 1.0; + + QSize mScaleSizeRes = QSize(); bool mIsNightMode = false; bool mRedshiftIsValid = false; @@ -221,6 +225,8 @@ public Q_SLOTS: bool mIsBattery = false; bool mIsScreenAdd = false; bool mIsRestore = false; + bool mIsSCaleRes = false; + bool mIsChange = false; QShortcut *mApplyShortcut; QVector BrightnessFrameV; diff --git a/shell/res/i18n/zh_CN.ts b/shell/res/i18n/zh_CN.ts index d98636ae4..2d1b0449f 100644 --- a/shell/res/i18n/zh_CN.ts +++ b/shell/res/i18n/zh_CN.ts @@ -9,17 +9,17 @@ 系统概述 - + Technical service has expired 已过期 - + Extended 延长服务 - + version 版本 /about/version @@ -53,21 +53,21 @@ - + Kernel 内核 /about/Kernel - + CPU CPU /about/CPU - + Memory 内存 /about/Memory @@ -79,14 +79,14 @@ - + Desktop 桌面 /about/Desktop - + User 用户名 /about/User @@ -94,7 +94,7 @@ - + Active Status 激活状态 /about/Active Status @@ -111,7 +111,7 @@ - + Protocol 免责协议 /about/Protocol @@ -122,7 +122,7 @@ - + Active 激活 /about/Active @@ -157,12 +157,12 @@ 可用 - + Inactivated 未激活 - + Activated 已激活 @@ -231,14 +231,14 @@ - + Program name 程序名 - + Program exec 程序路径 @@ -250,13 +250,13 @@ - + Program comment 程序描述 - + Cancel 取消 @@ -266,32 +266,31 @@ 确定 - + Desktop files(*.desktop) 桌面文件(*.desktop) - + select autoboot desktop 选择自启动程序 - + Select 选择 - + desktop file not allowed add 此应用不允许添加 - desktop file already exist - 桌面文件已经存在 + 桌面文件已经存在 - + desktop file not exist desktop文件不存在 @@ -2877,12 +2876,12 @@ folder will be deleted! 关闭显示器 - + unify output 统一输出 - + open monitor 打开显示器 @@ -2897,7 +2896,12 @@ folder will be deleted! 显示器 - + + screen zoom + 缩放屏幕 + + + Advanced 高级显示 @@ -2914,37 +2918,37 @@ folder will be deleted! - + follow the sunrise and sunset(17:55-05:04) 跟随日落日出(17:55-05:04) - + custom time 自定义时间 - + opening time 开启时间 - + closing time 关闭时间 - + color temperature 色温 - + warm - + cold @@ -4881,49 +4885,47 @@ Please retry or relogin! OutputConfig - + resolution 分辨率 /display/resolution - + orientation 方向 /display/orientation - + arrow-up 不旋转 - + 90° arrow-right 90° 顺时针 - + arrow-down 上下颠倒 - Information - 信息 + 信息 - Some applications need to be logouted to take effect - 部分程序需要注销生效 + 部分程序需要注销生效 - + 90° arrow-left 90° 逆时针 - + frequency 刷新率 /display/frequency @@ -4933,19 +4935,19 @@ Please retry or relogin! 刷新率 - + auto 自动 - + screen zoom 缩放屏幕 /display/screen zoom - - + + %1 Hz @@ -5378,9 +5380,8 @@ Please retry or relogin! 添加打印机和扫描仪 - Attrs - 属性 + 属性 Attributes @@ -8556,42 +8557,42 @@ run start-pulseaudio-x11 manually. - + Hint 提示 - + The system only allows one user to log in automatically.After it is turned on, the automatic login of other users will be turned off.Is it turned on? 系统只允许一个用户自动登录,开启后将关闭其他用户的自动登录,是否开启? - + Trun on 开启 - + Close on 取消 - + Add biometric feature 添加生物密码 - + Rename 重命名 - + Verify 验证 - + Delete 删除 @@ -8606,17 +8607,17 @@ run start-pulseaudio-x11 manually. 管理员 - + Del 删除 - + Warning 警告 - + The user is logged in, please delete the user after logging out 用户已经登录,请注销后删除用户 @@ -8626,12 +8627,12 @@ run start-pulseaudio-x11 manually. 当前用户 - + Change pwd 更改密码 - + Change type 更改类型 @@ -8921,52 +8922,58 @@ run start-pulseaudio-x11 manually. 屏幕缩放 - + unify output 统一输出 /display/unify output - + night mode 夜间模式 /display/night mode - + Some applications need to be logouted to take effect 部分程序需要注销生效 - + monitor 显示器 /display/monitor - + + screen zoom + 缩放屏幕 + /display/screen zoom + + + Information 信息 - + Theme follow night mode 主题跟随夜间模式变化 - + Hint 提示 - + After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display the settings will be saved after 14 seconds 是否保留当前修改的配置?将在14秒后自动保存配置 - - + + Brightness 亮度 @@ -8981,7 +8988,7 @@ The settings will be saved after 9 seconds 修改分辨率或刷新率后,由于显示设备与 显卡兼容性问题,有可能显示不正常。系统将在9秒后保存配置 - + After modifying the resolution or refresh rate, due to compatibility issues between the display device and the graphics card, the display may be abnormal or unable to display the settings will be saved after %1 seconds 是否保留当前修改的配置?将在%1秒后自动保存配置 @@ -8997,12 +9004,12 @@ If something goes wrong, the settings will be restored after 9 seconds 修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在9秒后还原设置 - + Save Config 保存 - + Restore Config 恢复 @@ -9012,19 +9019,19 @@ If something goes wrong, the settings will be restored after %1 seconds 修改分辨率或刷新率后,由于显示设备与显卡存在兼容性问题,有可能显示不正常或者无法显示.如果出现异常,系统将在%1秒后还原设置 - + please insure at least one output! 请确保至少开启一个屏幕! - - - + + + Warning 警告 - + Open time should be earlier than close time! 开启时间必须大于关闭时间! @@ -9033,7 +9040,7 @@ If something goes wrong, the settings will be restored after %1 seconds 早晨时刻应早于晚上的时刻! - + Sorry, your configuration could not be applied. Common reasons are that the overall screen size is too big, or you enabled more displays than supported by your GPU. 抱歉,配置不能应用.