From 5354ae0173e3418c8d37852bc9b4c3edd9df5439 Mon Sep 17 00:00:00 2001 From: Fanxing Date: Fri, 6 Dec 2024 16:33:15 +0800 Subject: [PATCH] feat: Option to show/hide the toolbar when connecting a device. (#1042) * Option to show/hide the toolbar when connecting a device. * Modify the code as required. --- QtScrcpy/res/i18n/en_US.qm | Bin 5379 -> 5450 bytes QtScrcpy/res/i18n/en_US.ts | 12 ++- QtScrcpy/res/i18n/zh_CN.qm | Bin 4148 -> 4203 bytes QtScrcpy/res/i18n/zh_CN.ts | 12 ++- QtScrcpy/ui/dialog.cpp | 8 +- QtScrcpy/ui/dialog.ui | 161 +++++++++++++++++++------------------ QtScrcpy/ui/videoform.cpp | 9 ++- QtScrcpy/ui/videoform.h | 6 +- QtScrcpy/util/config.cpp | 5 ++ QtScrcpy/util/config.h | 1 + 10 files changed, 121 insertions(+), 93 deletions(-) diff --git a/QtScrcpy/res/i18n/en_US.qm b/QtScrcpy/res/i18n/en_US.qm index b73a8391d5b1eca645952a8fd37ee22b0bbe96bd..a8f465e077c8cb679a70069fbb3fd75bb027b3d1 100644 GIT binary patch delta 173 zcmZqHI;Ay1j?rMEygB2_iQ#Tcf{GL8%QI$9+#fEO%U1EYi-CdLnQa1}3j>2tz+`ns zea1zT!x{A@?{OwxU}0boFySnX_`<-z^_7cTZz}_XkjUiujQWf(CZA_?7o5$v`mzWE z1N#QP+m4?Y82G delta 121 zcmX@5)vPr^j!|Qxyg6gm#BetzfkzYP%QI?C+#fEe$5!#Ui-CdLnQa1}3j>3Y;AC}1 zea7U;;f(r{^EneQurM(2f8{KV_`<-z^_7cTZz}_X;MK|V8TA=gPCn1*&KbkE`mzWE c1N(-_>P$L}8#ae9{p6qQAk49OiqJMD08^kNwEzGB diff --git a/QtScrcpy/res/i18n/en_US.ts b/QtScrcpy/res/i18n/en_US.ts index 5a5dcdd..793171b 100644 --- a/QtScrcpy/res/i18n/en_US.ts +++ b/QtScrcpy/res/i18n/en_US.ts @@ -135,10 +135,6 @@ Start Config Start Config - - record save path: - record save path: - select path select path @@ -297,5 +293,13 @@ auto update auto update + + show toolbar + show toolbar + + + record save path: + record save path: + diff --git a/QtScrcpy/res/i18n/zh_CN.qm b/QtScrcpy/res/i18n/zh_CN.qm index 3664aea870300d3fd6fc4f466d44c675af434bb2..4794f808002cfb9062ec980163941f9b890bba00 100644 GIT binary patch delta 269 zcmdm@@LFMl9HYTRd2`0}iQ(>yhbPXLXZ$&Ff4HP2TgBrp1_lm$wh4SL3=F*M*d3&W z85p=WPu6EtW8zht9L}hp7{Zx&frWvAhl8^;;tK-<2R9eD-c|+%-Wo2sRT2yg3|AmD zcMX@k{SyWTwsH>G19KJkiT!R24BY-a zPH`a&3|ucKKWEfee8{)@vIqkMYZu>b$4?9l+}HUP9JcFNufq{X6je&uIr#K_O ST%jaCKPM@%XtN}rG!p>F+DTUc delta 251 zcmaE@uti~l9HYiWd2>dKiQ(>yQzp)rXFN4=f4C$UTgBrp1_lm$wh4SL3=F*W><-ex z3=CXbC+jn+G4Xt#9L}hpsLGjmfrWvA`zB{;#1{qz4sI@Py{!xkyuMs=t0Wj07_LBQ z?m8}c`zH(xZ1G$U$M!KWaLaI2HFGgAaK7Nqubaxiz?05>K>H>G19KJkiT!R24BUY{ zPH`a&3|y}#KWEf8+r+o}vIqkMYZt%5<8=%ST&?_>S&tbQxYzJ!u8?A2;PU3LeI3BS zz~0Kg>+&oH1}?Eo1_s_2n?soVx%m0wLj%tH-;IvweIMWQUuyFPo_fa334Gj40FH)5 AZU6uP diff --git a/QtScrcpy/res/i18n/zh_CN.ts b/QtScrcpy/res/i18n/zh_CN.ts index 6a71c1b..4cd66c4 100644 --- a/QtScrcpy/res/i18n/zh_CN.ts +++ b/QtScrcpy/res/i18n/zh_CN.ts @@ -135,10 +135,6 @@ Start Config 启动配置 - - record save path: - 录像保存路径: - select path 选择路径 @@ -297,5 +293,13 @@ auto update 自动刷新 + + show toolbar + 显示工具栏 + + + record save path: + 录像保存路径 + diff --git a/QtScrcpy/ui/dialog.cpp b/QtScrcpy/ui/dialog.cpp index 756837b..dfedcfb 100644 --- a/QtScrcpy/ui/dialog.cpp +++ b/QtScrcpy/ui/dialog.cpp @@ -195,6 +195,7 @@ void Dialog::updateBootConfig(bool toView) ui->stayAwakeCheck->setChecked(config.keepAlive); ui->useSingleModeCheck->setChecked(config.simpleMode); ui->autoUpdatecheckBox->setChecked(config.autoUpdateDevice); + ui->showToolbar->setChecked(config.showToolbar); } else { UserBootConfig config; @@ -213,6 +214,8 @@ void Dialog::updateBootConfig(bool toView) config.keepAlive = ui->stayAwakeCheck->isChecked(); config.simpleMode = ui->useSingleModeCheck->isChecked(); config.autoUpdateDevice = ui->autoUpdatecheckBox->isChecked(); + config.showToolbar = ui->showToolbar->isChecked(); + Config::getInstance().setUserBootConfig(config); } } @@ -447,14 +450,15 @@ void Dialog::onDeviceConnected(bool success, const QString &serial, const QStrin if (!success) { return; } - - auto videoForm = new VideoForm(ui->framelessCheck->isChecked(), Config::getInstance().getSkin()); + auto videoForm = new VideoForm(ui->framelessCheck->isChecked(), Config::getInstance().getSkin(), ui->showToolbar->isChecked()); videoForm->setSerial(serial); qsc::IDeviceManage::getInstance().getDevice(serial)->setUserData(static_cast(videoForm)); qsc::IDeviceManage::getInstance().getDevice(serial)->registerDeviceObserver(videoForm); + videoForm->showFPS(ui->fpsCheck->isChecked()); + if (ui->alwaysTopCheck->isChecked()) { videoForm->staysOnTop(); } diff --git a/QtScrcpy/ui/dialog.ui b/QtScrcpy/ui/dialog.ui index 81860e6..630c0de 100644 --- a/QtScrcpy/ui/dialog.ui +++ b/QtScrcpy/ui/dialog.ui @@ -7,7 +7,7 @@ 0 0 1293 - 454 + 502 @@ -255,7 +255,7 @@ - Qt::ClickFocus + Qt::FocusPolicy::ClickFocus @@ -626,6 +626,80 @@ 0 + + + + + 0 + 0 + + + + show fps + + + + + + + + 0 + 0 + + + + background record + + + false + + + + + + + + 0 + 0 + + + + always on top + + + false + + + + + + + + 0 + 0 + + + + record screen + + + + + + + + 0 + 0 + + + + reverse connection + + + true + + + @@ -652,80 +726,6 @@ - - - - - 0 - 0 - - - - always on top - - - false - - - - - - - - 0 - 0 - - - - background record - - - false - - - - - - - - 0 - 0 - - - - reverse connection - - - true - - - - - - - - 0 - 0 - - - - record screen - - - - - - - - 0 - 0 - - - - show fps - - - @@ -739,6 +739,13 @@ + + + + show toolbar + + + @@ -1146,7 +1153,7 @@ - Qt::Vertical + Qt::Orientation::Vertical diff --git a/QtScrcpy/ui/videoform.cpp b/QtScrcpy/ui/videoform.cpp index bbed173..085c847 100644 --- a/QtScrcpy/ui/videoform.cpp +++ b/QtScrcpy/ui/videoform.cpp @@ -21,13 +21,14 @@ #include "ui_videoform.h" #include "videoform.h" -VideoForm::VideoForm(bool framelessWindow, bool skin, QWidget *parent) : QWidget(parent), ui(new Ui::videoForm), m_skin(skin) +VideoForm::VideoForm(bool framelessWindow, bool skin, bool showToolbar, QWidget *parent) : QWidget(parent), ui(new Ui::videoForm), m_skin(skin) { ui->setupUi(this); initUI(); installShortcut(); updateShowSize(size()); bool vertical = size().height() > size().width(); + this->show_toolbar = showToolbar; if (m_skin) { updateStyleSheet(vertical); } @@ -479,7 +480,7 @@ void VideoForm::switchFullScreen() if (m_skin) { updateStyleSheet(m_frameSize.height() > m_frameSize.width()); } - showToolForm(true); + showToolForm(this->show_toolbar); #ifdef Q_OS_WIN32 ::SetThreadExecutionState(ES_CONTINUOUS); #endif @@ -721,9 +722,9 @@ void VideoForm::paintEvent(QPaintEvent *paint) void VideoForm::showEvent(QShowEvent *event) { Q_UNUSED(event) - if (!isFullScreen()) { + if (!isFullScreen() && this->show_toolbar) { QTimer::singleShot(500, this, [this](){ - showToolForm(); + showToolForm(this->show_toolbar); }); } } diff --git a/QtScrcpy/ui/videoform.h b/QtScrcpy/ui/videoform.h index acda4e6..75b032a 100644 --- a/QtScrcpy/ui/videoform.h +++ b/QtScrcpy/ui/videoform.h @@ -19,7 +19,7 @@ class VideoForm : public QWidget, public qsc::DeviceObserver { Q_OBJECT public: - explicit VideoForm(bool framelessWindow = false, bool skin = true, QWidget *parent = 0); + explicit VideoForm(bool framelessWindow = false, bool skin = true, bool showToolBar = true, QWidget *parent = 0); ~VideoForm(); void staysOnTop(bool top = true); @@ -32,7 +32,6 @@ public: void removeBlackRect(); void showFPS(bool show); void switchFullScreen(); - bool isHost(); private: @@ -85,6 +84,9 @@ private: bool m_skin = true; QPoint m_fullScreenBeforePos; QString m_serial; + + //Whether to display the toolbar when connecting a device. + bool show_toolbar = true; }; #endif // VIDEOFORM_H diff --git a/QtScrcpy/util/config.cpp b/QtScrcpy/util/config.cpp index b75f0f7..5915cf2 100644 --- a/QtScrcpy/util/config.cpp +++ b/QtScrcpy/util/config.cpp @@ -96,6 +96,9 @@ #define COMMON_TRAY_MESSAGE_SHOWN_KEY "TrayMessageShown" #define COMMON_TRAY_MESSAGE_SHOWN_DEF false +#define COMMON_SHOW_TOOLBAR_KEY "showToolbar" +#define COMMON_SHOW_TOOLBAR_DEF true + // device config #define SERIAL_WINDOW_RECT_KEY_X "WindowRectX" #define SERIAL_WINDOW_RECT_KEY_Y "WindowRectY" @@ -163,6 +166,7 @@ void Config::setUserBootConfig(const UserBootConfig &config) m_userData->setValue(COMMON_KEEP_ALIVE_KEY, config.keepAlive); m_userData->setValue(COMMON_SIMPLE_MODE_KEY, config.simpleMode); m_userData->setValue(COMMON_AUTO_UPDATE_DEVICE_KEY, config.autoUpdateDevice); + m_userData->setValue(COMMON_SHOW_TOOLBAR_KEY, config.showToolbar); m_userData->endGroup(); m_userData->sync(); } @@ -186,6 +190,7 @@ UserBootConfig Config::getUserBootConfig() config.keepAlive = m_userData->value(COMMON_KEEP_ALIVE_KEY, COMMON_KEEP_ALIVE_DEF).toBool(); config.simpleMode = m_userData->value(COMMON_SIMPLE_MODE_KEY, COMMON_SIMPLE_MODE_DEF).toBool(); config.autoUpdateDevice = m_userData->value(COMMON_AUTO_UPDATE_DEVICE_KEY, COMMON_AUTO_UPDATE_DEVICE_DEF).toBool(); + config.showToolbar =m_userData->value(COMMON_SHOW_TOOLBAR_KEY,COMMON_SHOW_TOOLBAR_DEF).toBool(); m_userData->endGroup(); return config; } diff --git a/QtScrcpy/util/config.h b/QtScrcpy/util/config.h index 1f55126..6f3c1d9 100644 --- a/QtScrcpy/util/config.h +++ b/QtScrcpy/util/config.h @@ -22,6 +22,7 @@ struct UserBootConfig bool keepAlive = false; bool simpleMode = false; bool autoUpdateDevice = true; + bool showToolbar = true; }; class QSettings;