From 06002ed322fcc13b02cff12a8a0ed23e097f6015 Mon Sep 17 00:00:00 2001 From: ts-korhonen Date: Sun, 9 Jan 2022 17:00:16 +0200 Subject: [PATCH] qt: Add toolbar --- src/qt/qt_mainwindow.cpp | 49 +++++++++++++++++++++++++++++---- src/qt/qt_mainwindow.hpp | 1 + src/qt/qt_mainwindow.ui | 33 ++++++++++++++++++++++ src/qt/qt_specifydimensions.cpp | 8 +++++- 4 files changed, 85 insertions(+), 6 deletions(-) diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index 96504cf23..9ca71aca2 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -67,6 +67,7 @@ MainWindow::MainWindow(QWidget *parent) : ui->stackedWidget->setMouseTracking(true); statusBar()->setVisible(!hide_status_bar); statusBar()->setStyleSheet("QStatusBar::item {border: None;}"); + ui->toolBar->setVisible(!hide_tool_bar); this->setWindowIcon(QIcon(":/settings/win/icons/86Box-yellow.ico")); this->setWindowFlag(Qt::MSWindowsFixedSizeDialogHint, vid_resize != 1); @@ -118,7 +119,12 @@ MainWindow::MainWindow(QWidget *parent) : connect(this, &MainWindow::resizeContents, this, [this](int w, int h) { if (!QApplication::platformName().contains("eglfs") && vid_resize == 0) { w = w / (!dpi_scale ? this->screen()->devicePixelRatio() : 1); - int modifiedHeight = (h / (!dpi_scale ? this->screen()->devicePixelRatio() : 1)) + menuBar()->height() + (statusBar()->height() * !hide_status_bar); + + int modifiedHeight = (h / (!dpi_scale ? this->screen()->devicePixelRatio() : 1)) + + menuBar()->height() + + (statusBar()->height() * !hide_status_bar) + + (ui->toolBar->height() * !hide_tool_bar); + ui->stackedWidget->resize(w, h); if (vid_resize == 0) { setFixedSize(w, modifiedHeight); @@ -152,6 +158,7 @@ MainWindow::MainWindow(QWidget *parent) : ui->menuWindow_scale_factor->setEnabled(vid_resize == 0); ui->actionHiDPI_scaling->setChecked(dpi_scale); ui->actionHide_status_bar->setChecked(hide_status_bar); + ui->actionHide_tool_bar->setChecked(hide_tool_bar); ui->actionUpdate_status_bar_icons->setChecked(update_icons); ui->actionEnable_Discord_integration->setChecked(enable_discord); @@ -335,7 +342,11 @@ void MainWindow::showEvent(QShowEvent *event) { setGeometry(window_x, window_y, window_w, window_h + menuBar()->height() + (hide_status_bar ? 0 : statusBar()->height())); } if (vid_resize == 2) { - setFixedSize(fixed_size_x, fixed_size_y + menuBar()->height() + (hide_status_bar ? 0 : statusBar()->height())); + setFixedSize(fixed_size_x, fixed_size_y + + menuBar()->height() + + (hide_status_bar ? 0 : statusBar()->height()) + + (hide_tool_bar ? 0 : ui->toolBar->height())); + scrnsz_x = fixed_size_x; scrnsz_y = fixed_size_y; } @@ -955,15 +966,21 @@ void MainWindow::on_actionFullscreen_triggered() { showNormal(); ui->menubar->show(); if (!hide_status_bar) ui->statusbar->show(); + if (!hide_tool_bar) ui->toolBar->show(); video_fullscreen = 0; if (vid_resize != 1) { - if (vid_resize == 2) setFixedSize(fixed_size_x, fixed_size_y + menuBar()->height() + (!hide_status_bar ? statusBar()->height() : 0)); + if (vid_resize == 2) setFixedSize(fixed_size_x, fixed_size_y + + menuBar()->height() + + (!hide_status_bar ? statusBar()->height() : 0) + + (!hide_tool_bar ? ui->toolBar->height() : 0)); + emit resizeContents(scrnsz_x, scrnsz_y); } } else { setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); ui->menubar->hide(); ui->statusbar->hide(); + ui->toolBar->hide(); showFullScreen(); video_fullscreen = 1; } @@ -1345,8 +1362,30 @@ void MainWindow::on_actionHide_status_bar_triggered() hide_status_bar ^= 1; ui->actionHide_status_bar->setChecked(hide_status_bar); statusBar()->setVisible(!hide_status_bar); - if (vid_resize >= 2) setFixedSize(fixed_size_x, fixed_size_y + menuBar()->height() + (hide_status_bar ? 0 : statusBar()->height())); - else { + if (vid_resize >= 2) { + setFixedSize(fixed_size_x, fixed_size_y + + menuBar()->height() + + (hide_status_bar ? 0 : statusBar()->height()) + + (hide_tool_bar ? 0 : ui->toolBar->height())); + } else { + int vid_resize_orig = vid_resize; + vid_resize = 0; + emit resizeContents(scrnsz_x, scrnsz_y); + vid_resize = vid_resize_orig; + } +} + +void MainWindow::on_actionHide_tool_bar_triggered() +{ + hide_tool_bar ^= 1; + ui->actionHide_tool_bar->setChecked(hide_tool_bar); + ui->toolBar->setVisible(!hide_tool_bar); + if (vid_resize >= 2) { + setFixedSize(fixed_size_x, fixed_size_y + + menuBar()->height() + + (hide_status_bar ? 0 : statusBar()->height()) + + (hide_tool_bar ? 0 : ui->toolBar->height())); + } else { int vid_resize_orig = vid_resize; vid_resize = 0; emit resizeContents(scrnsz_x, scrnsz_y); diff --git a/src/qt/qt_mainwindow.hpp b/src/qt/qt_mainwindow.hpp index d0ff06787..4d3335618 100644 --- a/src/qt/qt_mainwindow.hpp +++ b/src/qt/qt_mainwindow.hpp @@ -90,6 +90,7 @@ private slots: void on_actionSpecify_dimensions_triggered(); void on_actionHiDPI_scaling_triggered(); void on_actionHide_status_bar_triggered(); + void on_actionHide_tool_bar_triggered(); void on_actionUpdate_status_bar_icons_triggered(); void refreshMediaMenu(); diff --git a/src/qt/qt_mainwindow.ui b/src/qt/qt_mainwindow.ui index de6131694..4af8fe6d3 100644 --- a/src/qt/qt_mainwindow.ui +++ b/src/qt/qt_mainwindow.ui @@ -144,6 +144,7 @@ + @@ -183,6 +184,27 @@ + + + toolBar + + + false + + + false + + + TopToolBarArea + + + false + + + + + + true @@ -564,6 +586,17 @@ Enable &Discord integration + + + true + + + Hide tool bar + + + Hide tool bar + + diff --git a/src/qt/qt_specifydimensions.cpp b/src/qt/qt_specifydimensions.cpp index ca4aa5706..4a5b0ea0f 100644 --- a/src/qt/qt_specifydimensions.cpp +++ b/src/qt/qt_specifydimensions.cpp @@ -45,7 +45,13 @@ void SpecifyDimensions::on_SpecifyDimensions_accepted() window_remember = 0; fixed_size_x = ui->spinBoxWidth->value(); fixed_size_y = ui->spinBoxHeight->value(); - main_window->setFixedSize(ui->spinBoxWidth->value(), ui->spinBoxHeight->value() + (!hide_status_bar ? main_window->statusBar()->height() : 0) + main_window->menuBar()->height()); + + main_window->setFixedSize(ui->spinBoxWidth->value(), + ui->spinBoxHeight->value() + + (!hide_status_bar ? main_window->statusBar()->height() : 0) + + (!hide_tool_bar ? main_window->ui->toolBar->height() : 0) + + main_window->menuBar()->height()); + emit main_window->updateMenuResizeOptions(); main_window->show(); main_window->ui->stackedWidget->switchRenderer((RendererStack::Renderer)vid_api);