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 | 49 +++++++++++++++++++++---------------- QtScrcpy/ui/videoform.cpp | 9 ++++--- QtScrcpy/ui/videoform.h | 6 +++-- QtScrcpy/util/config.cpp | 5 ++++ QtScrcpy/util/config.h | 1 + 10 files changed, 65 insertions(+), 37 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^_7cTZ!1uZ$mIDzH7_QgXLJ{w&A0lp2m=HA z2EN;lpBNbUzfP8C(qVkR*@x*TzrF-RF+&DJK0`T!0z(Oq&S%JBNMcB2DB@rM0yZG# WDbC0*S18HP&q+!w+H5LxjtKy#d@rB? delta 121 zcmV-<0EYj{DuXJJ9swwkA2$JNkyl0n5aN-a9|0Start 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^;;tNnQHy5|wR-ob1D7#KKTaOc-e1?r#1eL(vr0|Rpv_lf;(KzV;2r??QH zWiKZ`XVh1G$hZ2k2m=Fa7vF8iPe9r0{0fiP0cD%{GqWB8`Ku=DGf6Y?iEs8{^5^2^ zi4P4p?|(NsqW67#%jQ))^^A&KX?B%Xu}=fbGx#}xu3}&VVxHoR{Bnho{QR7x#G=iT He9}w+$J$9( delta 251 zcmaE@uti~l9HYiWd2>dKiQ(>yQzp)rXFN4=f4C$UTgBrp1_lm$wh4SL3=F*W><-ex z3=CXbC+jn+G4Xt#9L}hpsLGjmfrWvA`zB{;#227qZZ2-Utw6=TTym=<7#J9?Kxpnd zE_wSW3=C}XTn@+f0oBWJRW)-lFmS%$&aa!wz`&EveL(vr0|Rpv_lf;(K>0u(r??QH zWv?ecXVf>_#JBpg2m=Fa7r(;ebwJTp{>-e$Kviq_Ggn9f`QH4suLBqu*jxE`U7iKx qi)8|x@M3calRpStart 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 756837b93..dfedcfb60 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 81860e632..630c0de35 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,8 +626,8 @@ 0 - - + + 0 @@ -635,12 +635,12 @@ - screen-off + show fps - - + + 0 @@ -648,7 +648,10 @@ - frameless + background record + + + false @@ -668,8 +671,8 @@ - - + + 0 @@ -677,10 +680,7 @@ - background record - - - false + record screen @@ -700,8 +700,8 @@ - - + + 0 @@ -709,12 +709,12 @@ - record screen + screen-off - - + + 0 @@ -722,7 +722,7 @@ - show fps + frameless @@ -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 bbed173aa..085c847ea 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 acda4e678..75b032af0 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 @@ class VideoForm : public QWidget, public qsc::DeviceObserver void removeBlackRect(); void showFPS(bool show); void switchFullScreen(); - bool isHost(); private: @@ -85,6 +84,9 @@ class VideoForm : public QWidget, public qsc::DeviceObserver 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 b75f0f79c..5915cf29e 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 1f551265f..6f3c1d91a 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;