From 2da8f70f861040444f293de2d3b6141fe41b2687 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 1 Jun 2020 12:21:09 +0300 Subject: [PATCH] Optimize tool box position for big screen resolutions. Closes smart-pattern/valentina#45. Instead of forcing users to one possible choice add an option to control size policy for the tool box. --- ChangeLog.txt | 3 ++- .../configpages/preferencesconfigurationpage.cpp | 8 ++++++++ .../configpages/preferencesconfigurationpage.ui | 14 ++++++++++++-- src/app/valentina/mainwindow.cpp | 12 ++++++++++++ src/app/valentina/mainwindow.h | 1 + src/libs/vmisc/vsettings.cpp | 14 ++++++++++++++ src/libs/vmisc/vsettings.h | 3 +++ 7 files changed, 52 insertions(+), 3 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 1df379dbf..ee1b5bc98 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -47,7 +47,8 @@ - Setting scale factor for export and print. - New layout generator option: Prefer one sheet solution. - [smart-pattern/valentina#15] Organization of groups - groups categories -- Improve the property browser. Show full arc name. +- Improve the property browser. Show full arc name. +- [smart-pattern/valentina#45] Optimize tool box position for big screen resolutions. # Version 0.6.2 (unreleased) - [#903] Bug in tool Cut Spline path. diff --git a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp index 42b28b929..27757cb39 100644 --- a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp +++ b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp @@ -127,6 +127,9 @@ PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent) // Theme ui->darkModeCheck->setChecked(settings->GetDarkMode()); + // Tool panel + ui->checkBoxToolPanelScaling->setChecked(settings->GetToolPanelScaling()); + // Tab Scrolling ui->spinBoxDuration->setMinimum(VSettings::scrollingDurationMin); ui->spinBoxDuration->setMaximum(VSettings::scrollingDurationMax); @@ -178,6 +181,11 @@ QStringList PreferencesConfigurationPage::Apply() preferences.append(tr("dark mode")); } + if (settings->GetToolPanelScaling() != ui->checkBoxToolPanelScaling->isChecked()) + { + settings->SetToolPanelScaling(ui->checkBoxToolPanelScaling->isChecked()); + } + settings->SetFreeCurveMode(ui->checkBoxFreeCurve->isChecked()); settings->SetDoubleClickZoomFitBestCurrentPP(ui->checkBoxZoomFitBestCurrentPP->isChecked()); diff --git a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.ui b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.ui index c0af8bb3b..2433eb5b2 100644 --- a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.ui +++ b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.ui @@ -33,9 +33,9 @@ 0 - -152 + -161 624 - 707 + 717 @@ -273,6 +273,16 @@ + + + + Change the position of the tool panel to optimize for big screen resolutions. By default, the tool panel will take all available space. + + + Tool panel scaling + + + diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 46dd3aadd..4beedb742 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -4077,6 +4077,9 @@ void MainWindow::ReadSettings() // Text under tool buton icon ToolBarStyles(); + // Tool box scaling + ToolBoxSizePolicy(); + isDockToolOptionsVisible = ui->dockWidgetToolOptions->isEnabled(); isDockGroupsVisible = ui->dockWidgetGroups->isEnabled(); @@ -5084,6 +5087,14 @@ void MainWindow::ToolBarStyles() ToolBarStyle(ui->mainToolBar); } +//--------------------------------------------------------------------------------------------------------------------- +void MainWindow::ToolBoxSizePolicy() +{ + ui->toolBox->setSizePolicy(ui->toolBox->sizePolicy().horizontalPolicy(), + qApp->ValentinaSettings()->GetToolPanelScaling() ? QSizePolicy::Fixed + : QSizePolicy::Preferred); +} + //--------------------------------------------------------------------------------------------------------------------- void MainWindow::ShowPaper(int index) { @@ -5115,6 +5126,7 @@ void MainWindow::Preferences() connect(dlg.data(), &DialogPreferences::UpdateProperties, toolOptions, &VToolOptionsPropertyBrowser::RefreshOptions); connect(dlg.data(), &DialogPreferences::UpdateProperties, this, &MainWindow::ToolBarStyles); + connect(dlg.data(), &DialogPreferences::UpdateProperties, this, &MainWindow::ToolBoxSizePolicy); connect(dlg.data(), &DialogPreferences::UpdateProperties, this, [this](){emit doc->FullUpdateFromFile();}); connect(dlg.data(), &DialogPreferences::UpdateProperties, ui->view, &VMainGraphicsView::ResetScrollingAnimation); diff --git a/src/app/valentina/mainwindow.h b/src/app/valentina/mainwindow.h index c3dbb364d..1ec84656f 100644 --- a/src/app/valentina/mainwindow.h +++ b/src/app/valentina/mainwindow.h @@ -122,6 +122,7 @@ private slots: void PreviousPatternPiece(); void NextPatternPiece(); void ToolBarStyles(); + void ToolBoxSizePolicy(); void ShowPaper(int index); void Preferences(); #if defined(Q_OS_MAC) diff --git a/src/libs/vmisc/vsettings.cpp b/src/libs/vmisc/vsettings.cpp index dbe6ff220..4352bd70d 100644 --- a/src/libs/vmisc/vsettings.cpp +++ b/src/libs/vmisc/vsettings.cpp @@ -73,6 +73,8 @@ Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingConfigurationLabelLanguage, (QLatin1String("configuration/label_language"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingAutoRefreshPatternMessage, (QLatin1String("configuration/autoRefreshPatternMessage"))) +Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingToolPanelScaling, + (QLatin1String("configuration/toolPanelScaling"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingPathsLayout, (QLatin1String("paths/layout"))) @@ -822,6 +824,18 @@ void VSettings::SetWatermarkEditorSize(const QSize &sz) setValue(*settingWatermarkEditorSize, sz); } +//--------------------------------------------------------------------------------------------------------------------- +bool VSettings::GetToolPanelScaling() const +{ + return value(*settingToolPanelScaling, false).toBool(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VSettings::SetToolPanelScaling(const bool &value) +{ + setValue(*settingToolPanelScaling, value); +} + //--------------------------------------------------------------------------------------------------------------------- template T VSettings::GetCachedValue(T &cache, const QString &setting, T defValue, T valueMin, T valueMax) const diff --git a/src/libs/vmisc/vsettings.h b/src/libs/vmisc/vsettings.h index 8b6d0aacd..f8a798569 100644 --- a/src/libs/vmisc/vsettings.h +++ b/src/libs/vmisc/vsettings.h @@ -206,6 +206,9 @@ public: QSize GetWatermarkEditorSize() const; void SetWatermarkEditorSize(const QSize& sz); + bool GetToolPanelScaling() const; + void SetToolPanelScaling(const bool &value); + private: Q_DISABLE_COPY(VSettings)