From c8ae8f4a6d9e98ef6a450304a7c0b16c1b14cc49 Mon Sep 17 00:00:00 2001 From: cc9cii Date: Tue, 23 Sep 2014 06:30:41 +1000 Subject: [PATCH] Added minimum width setting for subviews - regionmap, table, scene, preview and dialogue. It should be noted that the setting is not the starting minimum width, i.e. it won't be possible to reduce the width of the subview after the creation. Also, one setting applies to all subviews. It may be desirable to have individual settings. --- apps/opencs/view/settings/dialog.cpp | 9 +++++++++ apps/opencs/view/world/dialoguesubview.cpp | 8 +++++++- apps/opencs/view/world/previewsubview.cpp | 11 ++++++++++- apps/opencs/view/world/regionmapsubview.cpp | 10 +++++++++- apps/opencs/view/world/scenesubview.cpp | 11 +++++++++-- apps/opencs/view/world/tablesubview.cpp | 8 ++++++++ files/ui/settingstab.ui | 6 +++--- 7 files changed, 55 insertions(+), 8 deletions(-) diff --git a/apps/opencs/view/settings/dialog.cpp b/apps/opencs/view/settings/dialog.cpp index 3f8143aa2..561eccc5c 100644 --- a/apps/opencs/view/settings/dialog.cpp +++ b/apps/opencs/view/settings/dialog.cpp @@ -299,6 +299,12 @@ void CSVSettings::Dialog::buildPages() if(index != -1) cmbRefIdType->setCurrentIndex(index); + // subview + if(model()->hasSettingDefinitions("SubView/minimum width")) + sbMinSubViewWidth->setValue(model()->settingValue("SubView/minimum width").toInt()); + else + sbMinSubViewWidth->setValue(325); + SettingWindow::createPages (); foreach (Page *page, SettingWindow::pages()) @@ -376,6 +382,9 @@ void CSVSettings::Dialog::closeEvent (QCloseEvent *event) QStringList(cmbRecStatus->currentText())); model()->setDefinitions("Display Format/Referenceable ID Type Display", QStringList(cmbRefIdType->currentText())); + // subview + model()->setDefinitions("SubView/minimum width", + QStringList(QString::number(sbMinSubViewWidth->value()))); saveSettings(); } diff --git a/apps/opencs/view/world/dialoguesubview.cpp b/apps/opencs/view/world/dialoguesubview.cpp index 57069bec0..d6a2bc13e 100644 --- a/apps/opencs/view/world/dialoguesubview.cpp +++ b/apps/opencs/view/world/dialoguesubview.cpp @@ -27,6 +27,7 @@ #include "../../model/world/tablemimedata.hpp" #include "../../model/doc/document.hpp" #include "../../model/world/commands.hpp" +#include "../../model/settings/usersettings.hpp" #include "recordstatusdelegate.hpp" #include "util.hpp" @@ -392,7 +393,12 @@ void CSVWorld::EditWidget::remake(int row) mWidgetMapper->setCurrentModelIndex(mTable->index(row, 0)); - this->setMinimumWidth(325); /// \todo replace hardcoded value with a user setting + int minWidth = 325; + if(CSMSettings::UserSettings::instance().hasSettingDefinitions("SubView/minimum width")) + minWidth = CSMSettings::UserSettings::instance().settingValue("SubView/minimum width").toInt(); + else + CSMSettings::UserSettings::instance().setDefinitions("SubView/minimum width", (QStringList() << "minWidth")); + this->setMinimumWidth(minWidth); this->setWidget(mMainWidget); this->setWidgetResizable(true); } diff --git a/apps/opencs/view/world/previewsubview.cpp b/apps/opencs/view/world/previewsubview.cpp index 1e106c69f..f56ca7674 100644 --- a/apps/opencs/view/world/previewsubview.cpp +++ b/apps/opencs/view/world/previewsubview.cpp @@ -8,6 +8,8 @@ #include "../widget/scenetoolbar.hpp" #include "../widget/scenetoolmode.hpp" +#include "../../model/settings/usersettings.hpp" + CSVWorld::PreviewSubView::PreviewSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document) : SubView (id) { @@ -41,6 +43,13 @@ CSVWorld::PreviewSubView::PreviewSubView (const CSMWorld::UniversalId& id, CSMDo widget->setLayout (layout); + int minWidth = 325; + if(CSMSettings::UserSettings::instance().hasSettingDefinitions("SubView/minimum width")) + minWidth = CSMSettings::UserSettings::instance().settingValue("SubView/minimum width").toInt(); + else + CSMSettings::UserSettings::instance().setDefinitions("SubView/minimum width", (QStringList() << "minWidth")); + widget->setMinimumWidth(minWidth); + setWidget (widget); connect (mScene, SIGNAL (closeRequest()), this, SLOT (closeRequest())); @@ -63,4 +72,4 @@ void CSVWorld::PreviewSubView::referenceableIdChanged (const std::string& id) setWindowTitle ("Preview: Reference to "); else setWindowTitle (("Preview: Reference to " + id).c_str()); -} \ No newline at end of file +} diff --git a/apps/opencs/view/world/regionmapsubview.cpp b/apps/opencs/view/world/regionmapsubview.cpp index a7675a4a6..2e20be349 100644 --- a/apps/opencs/view/world/regionmapsubview.cpp +++ b/apps/opencs/view/world/regionmapsubview.cpp @@ -2,6 +2,7 @@ #include "regionmapsubview.hpp" #include "regionmap.hpp" +#include "../../model/settings/usersettings.hpp" CSVWorld::RegionMapSubView::RegionMapSubView (CSMWorld::UniversalId universalId, CSMDoc::Document& document) @@ -9,6 +10,13 @@ CSVWorld::RegionMapSubView::RegionMapSubView (CSMWorld::UniversalId universalId, { mRegionMap = new RegionMap (universalId, document, this); + int minWidth = 325; + if(CSMSettings::UserSettings::instance().hasSettingDefinitions("SubView/minimum width")) + minWidth = CSMSettings::UserSettings::instance().settingValue("SubView/minimum width").toInt(); + else + CSMSettings::UserSettings::instance().setDefinitions("SubView/minimum width", (QStringList() << "minWidth")); + mRegionMap->setMinimumWidth(minWidth); + setWidget (mRegionMap); connect (mRegionMap, SIGNAL (editRequest (const CSMWorld::UniversalId&, const std::string&)), @@ -24,4 +32,4 @@ void CSVWorld::RegionMapSubView::editRequest (const CSMWorld::UniversalId& id, const std::string& hint) { focusId (id, hint); -} \ No newline at end of file +} diff --git a/apps/opencs/view/world/scenesubview.cpp b/apps/opencs/view/world/scenesubview.cpp index 52bd47b54..f2cc8505b 100644 --- a/apps/opencs/view/world/scenesubview.cpp +++ b/apps/opencs/view/world/scenesubview.cpp @@ -9,7 +9,7 @@ #include #include "../../model/doc/document.hpp" - +#include "../../model/settings/usersettings.hpp" #include "../../model/world/cellselection.hpp" #include "../filter/filterbox.hpp" @@ -74,6 +74,13 @@ CSVWorld::SceneSubView::SceneSubView (const CSMWorld::UniversalId& id, CSMDoc::D widget->setLayout (layout); + int minWidth = 325; + if(CSMSettings::UserSettings::instance().hasSettingDefinitions("SubView/minimum width")) + minWidth = CSMSettings::UserSettings::instance().settingValue("SubView/minimum width").toInt(); + else + CSMSettings::UserSettings::instance().setDefinitions("SubView/minimum width", (QStringList() << "minWidth")); + widget->setMinimumWidth(minWidth); + setWidget (widget); } @@ -254,4 +261,4 @@ void CSVWorld::SceneSubView::replaceToolbarAndWorldspace (CSVRender::WorldspaceW mScene->selectDefaultNavigationMode(); setFocusProxy (mScene); -} \ No newline at end of file +} diff --git a/apps/opencs/view/world/tablesubview.cpp b/apps/opencs/view/world/tablesubview.cpp index e2c8d5c1e..4a87319eb 100644 --- a/apps/opencs/view/world/tablesubview.cpp +++ b/apps/opencs/view/world/tablesubview.cpp @@ -6,6 +6,7 @@ #include "../../model/doc/document.hpp" #include "../../model/world/tablemimedata.hpp" +#include "../../model/settings/usersettings.hpp" #include "../filter/filterbox.hpp" #include "table.hpp" @@ -34,6 +35,13 @@ CSVWorld::TableSubView::TableSubView (const CSMWorld::UniversalId& id, CSMDoc::D widget->setLayout (layout); + int minWidth = 325; + if(CSMSettings::UserSettings::instance().hasSettingDefinitions("SubView/minimum width")) + minWidth = CSMSettings::UserSettings::instance().settingValue("SubView/minimum width").toInt(); + else + CSMSettings::UserSettings::instance().setDefinitions("SubView/minimum width", (QStringList() << "minWidth")); + widget->setMinimumWidth(minWidth); + setWidget (widget); connect (mTable, SIGNAL (editRequest (const CSMWorld::UniversalId&, const std::string&)), diff --git a/files/ui/settingstab.ui b/files/ui/settingstab.ui index de7014b4a..88b7e9231 100644 --- a/files/ui/settingstab.ui +++ b/files/ui/settingstab.ui @@ -142,7 +142,7 @@ - + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -260,10 +260,10 @@ Show Status Bar + displayGroup_Subviews layoutWidget_Subviews displayGroup_Window displayGroup_DisplayFormat - displayGroup_Subviews cbStatusBar @@ -387,7 +387,7 @@ sbHeight cbStatusBar spinBox_max_subviews - spinBox_min_subview_width + sbMinSubViewWidth checkBox_reuse_subview cbOverride cmbRenderSys