From 7038c826908f33d34b637ca673362a58e652b4ff Mon Sep 17 00:00:00 2001 From: elsid Date: Thu, 7 Apr 2022 16:35:18 +0200 Subject: [PATCH] Configure mav navmeshdb file size from the launcher --- apps/launcher/datafilespage.cpp | 20 +++++++++++++++----- components/settings/settings.cpp | 9 ++++++++- components/settings/settings.hpp | 1 + files/ui/datafilespage.ui | 24 ++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/apps/launcher/datafilespage.cpp b/apps/launcher/datafilespage.cpp index d86c9b15b6..58a20c7853 100644 --- a/apps/launcher/datafilespage.cpp +++ b/apps/launcher/datafilespage.cpp @@ -84,6 +84,11 @@ namespace Launcher }; } }; + + int getMaxNavMeshDbFileSizeMiB() + { + return static_cast(Settings::Manager::getInt64("max navmeshdb file size", "Navigator") / (1024 * 1024)); + } } } @@ -164,6 +169,8 @@ void Launcher::DataFilesPage::buildView() bool Launcher::DataFilesPage::loadSettings() { + ui.navMeshMaxSizeSpinBox->setValue(getMaxNavMeshDbFileSizeMiB()); + QStringList profiles = mLauncherSettings.getContentLists(); QString currentProfile = mLauncherSettings.getCurrentContentListName(); @@ -217,13 +224,16 @@ QStringList Launcher::DataFilesPage::filesInProfile(const QString& profileName, void Launcher::DataFilesPage::saveSettings(const QString &profile) { - QString profileName = profile; + if (const int value = ui.navMeshMaxSizeSpinBox->value(); value != getMaxNavMeshDbFileSizeMiB()) + Settings::Manager::setInt64("max navmeshdb file size", "Navigator", static_cast(value) * 1024 * 1024); - if (profileName.isEmpty()) - profileName = ui.profilesComboBox->currentText(); + QString profileName = profile; - //retrieve the files selected for the profile - ContentSelectorModel::ContentFileList items = mSelector->selectedFiles(); + if (profileName.isEmpty()) + profileName = ui.profilesComboBox->currentText(); + + //retrieve the files selected for the profile + ContentSelectorModel::ContentFileList items = mSelector->selectedFiles(); //set the value of the current profile (not necessarily the profile being saved!) mLauncherSettings.setCurrentContentListName(ui.profilesComboBox->currentText()); diff --git a/components/settings/settings.cpp b/components/settings/settings.cpp index 4c17394836..ecd25dbd4e 100644 --- a/components/settings/settings.cpp +++ b/components/settings/settings.cpp @@ -116,7 +116,7 @@ std::int64_t Manager::getInt64 (const std::string& setting, const std::string& c { const std::string& value = getString(setting, category); std::stringstream stream(value); - std::size_t number = 0; + std::int64_t number = 0; stream >> number; return number; } @@ -172,6 +172,13 @@ void Manager::setInt (const std::string& setting, const std::string& category, c setString(setting, category, stream.str()); } +void Manager::setInt64 (const std::string& setting, const std::string& category, const std::int64_t value) +{ + std::ostringstream stream; + stream << value; + setString(setting, category, stream.str()); +} + void Manager::setFloat (const std::string &setting, const std::string &category, const float value) { std::ostringstream stream; diff --git a/components/settings/settings.hpp b/components/settings/settings.hpp index c23d8d878e..d5d9c2d9f6 100644 --- a/components/settings/settings.hpp +++ b/components/settings/settings.hpp @@ -62,6 +62,7 @@ namespace Settings static osg::Vec3f getVector3 (const std::string& setting, const std::string& category); static void setInt (const std::string& setting, const std::string& category, int value); + static void setInt64 (const std::string& setting, const std::string& category, std::int64_t value); static void setFloat (const std::string& setting, const std::string& category, float value); static void setDouble (const std::string& setting, const std::string& category, double value); static void setString (const std::string& setting, const std::string& category, const std::string& value); diff --git a/files/ui/datafilespage.ui b/files/ui/datafilespage.ui index 5d04ab1ed8..e942cd652b 100644 --- a/files/ui/datafilespage.ui +++ b/files/ui/datafilespage.ui @@ -84,6 +84,30 @@ + + + + + + Max size + + + + + + + MiB + + + 2147483647 + + + 2048 + + + + +