mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-06-12 21:27:44 +02:00
Make column visibility global (#3748)
This commit is contained in:
@ -858,7 +858,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
|
||||
m_settings->registerSetting("CloseAfterLaunch", false);
|
||||
m_settings->registerSetting("QuitAfterGameStop", false);
|
||||
|
||||
m_settings->registerSetting("Env", QVariant(QMap<QString, QVariant>()));
|
||||
m_settings->registerSetting("Env", "{}");
|
||||
|
||||
// Custom Microsoft Authentication Client ID
|
||||
m_settings->registerSetting("MSAClientIDOverride", "");
|
||||
@ -1665,8 +1665,8 @@ MainWindow* Application::showMainWindow(bool minimized)
|
||||
m_mainWindow->activateWindow();
|
||||
} else {
|
||||
m_mainWindow = new MainWindow();
|
||||
m_mainWindow->restoreState(QByteArray::fromBase64(APPLICATION->settings()->get("MainWindowState").toByteArray()));
|
||||
m_mainWindow->restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get("MainWindowGeometry").toByteArray()));
|
||||
m_mainWindow->restoreState(QByteArray::fromBase64(APPLICATION->settings()->get("MainWindowState").toString().toUtf8()));
|
||||
m_mainWindow->restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get("MainWindowGeometry").toString().toUtf8()));
|
||||
|
||||
if (minimized) {
|
||||
m_mainWindow->showMinimized();
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include <QJsonObject>
|
||||
|
||||
#include "Application.h"
|
||||
#include "Json.h"
|
||||
#include "settings/INISettingsObject.h"
|
||||
#include "settings/OverrideSetting.h"
|
||||
#include "settings/Setting.h"
|
||||
@ -202,25 +203,25 @@ bool BaseInstance::shouldStopOnConsoleOverflow() const
|
||||
|
||||
QStringList BaseInstance::getLinkedInstances() const
|
||||
{
|
||||
return m_settings->get("linkedInstances").toStringList();
|
||||
auto setting = m_settings->get("linkedInstances").toString();
|
||||
return Json::toStringList(setting);
|
||||
}
|
||||
|
||||
void BaseInstance::setLinkedInstances(const QStringList& list)
|
||||
{
|
||||
auto linkedInstances = m_settings->get("linkedInstances").toStringList();
|
||||
m_settings->set("linkedInstances", list);
|
||||
m_settings->set("linkedInstances", Json::fromStringList(list));
|
||||
}
|
||||
|
||||
void BaseInstance::addLinkedInstanceId(const QString& id)
|
||||
{
|
||||
auto linkedInstances = m_settings->get("linkedInstances").toStringList();
|
||||
auto linkedInstances = getLinkedInstances();
|
||||
linkedInstances.append(id);
|
||||
setLinkedInstances(linkedInstances);
|
||||
}
|
||||
|
||||
bool BaseInstance::removeLinkedInstanceId(const QString& id)
|
||||
{
|
||||
auto linkedInstances = m_settings->get("linkedInstances").toStringList();
|
||||
auto linkedInstances = getLinkedInstances();
|
||||
int numRemoved = linkedInstances.removeAll(id);
|
||||
setLinkedInstances(linkedInstances);
|
||||
return numRemoved > 0;
|
||||
@ -228,7 +229,7 @@ bool BaseInstance::removeLinkedInstanceId(const QString& id)
|
||||
|
||||
bool BaseInstance::isLinkedToInstanceId(const QString& id) const
|
||||
{
|
||||
auto linkedInstances = m_settings->get("linkedInstances").toStringList();
|
||||
auto linkedInstances = getLinkedInstances();
|
||||
return linkedInstances.contains(id);
|
||||
}
|
||||
|
||||
|
@ -304,4 +304,23 @@ QString fromStringList(const QStringList& list)
|
||||
return QString::fromUtf8(doc.toJson(QJsonDocument::Compact));
|
||||
}
|
||||
|
||||
QVariantMap toMap(const QString& jsonString)
|
||||
{
|
||||
QJsonParseError parseError;
|
||||
QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8(), &parseError);
|
||||
|
||||
if (parseError.error != QJsonParseError::NoError || !doc.isObject())
|
||||
return {};
|
||||
|
||||
QJsonObject obj = doc.object();
|
||||
return obj.toVariantMap();
|
||||
}
|
||||
|
||||
QString fromMap(const QVariantMap& map)
|
||||
{
|
||||
QJsonObject obj = QJsonObject::fromVariantMap(map);
|
||||
QJsonDocument doc(obj);
|
||||
return QString::fromUtf8(doc.toJson(QJsonDocument::Compact));
|
||||
}
|
||||
|
||||
} // namespace Json
|
||||
|
@ -282,5 +282,8 @@ JSON_HELPERFUNCTIONS(Variant, QVariant)
|
||||
QStringList toStringList(const QString& jsonString);
|
||||
QString fromStringList(const QStringList& list);
|
||||
|
||||
QVariantMap toMap(const QString& jsonString);
|
||||
QString fromMap(const QVariantMap& map);
|
||||
|
||||
} // namespace Json
|
||||
using JSONValidationError = Json::JsonException;
|
||||
|
@ -38,6 +38,7 @@
|
||||
#include "MinecraftInstance.h"
|
||||
#include "Application.h"
|
||||
#include "BuildConfig.h"
|
||||
#include "Json.h"
|
||||
#include "QObjectPtr.h"
|
||||
#include "minecraft/launch/AutoInstallJava.h"
|
||||
#include "minecraft/launch/CreateGameFolders.h"
|
||||
@ -636,7 +637,8 @@ QProcessEnvironment MinecraftInstance::createEnvironment()
|
||||
}
|
||||
// custom env
|
||||
|
||||
auto insertEnv = [&env](QMap<QString, QVariant> envMap) {
|
||||
auto insertEnv = [&env](QString value) {
|
||||
auto envMap = Json::toMap(value);
|
||||
if (envMap.isEmpty())
|
||||
return;
|
||||
|
||||
@ -647,9 +649,9 @@ QProcessEnvironment MinecraftInstance::createEnvironment()
|
||||
bool overrideEnv = settings()->get("OverrideEnv").toBool();
|
||||
|
||||
if (!overrideEnv)
|
||||
insertEnv(APPLICATION->settings()->get("Env").toMap());
|
||||
insertEnv(APPLICATION->settings()->get("Env").toString());
|
||||
else
|
||||
insertEnv(settings()->get("Env").toMap());
|
||||
insertEnv(settings()->get("Env").toString());
|
||||
return env;
|
||||
}
|
||||
|
||||
|
@ -67,7 +67,6 @@ ModFolderModel::ModFolderModel(const QDir& dir, BaseInstance* instance, bool is_
|
||||
QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive,
|
||||
QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive };
|
||||
m_columnsHideable = { false, true, false, true, true, true, true, true, true, true, true };
|
||||
m_columnsHiddenByDefault = { false, false, false, false, false, false, false, true, true, true, true };
|
||||
}
|
||||
|
||||
QVariant ModFolderModel::data(const QModelIndex& index, int role) const
|
||||
|
@ -587,28 +587,89 @@ void ResourceFolderModel::setupHeaderAction(QAction* act, int column)
|
||||
|
||||
void ResourceFolderModel::saveColumns(QTreeView* tree)
|
||||
{
|
||||
auto const setting_name = QString("UI/%1_Page/Columns").arg(id());
|
||||
auto setting = m_instance->settings()->getOrRegisterSetting(setting_name);
|
||||
auto const stateSettingName = QString("UI/%1_Page/Columns").arg(id());
|
||||
auto const overrideSettingName = QString("UI/%1_Page/ColumnsOverride").arg(id());
|
||||
auto const visibilitySettingName = QString("UI/%1_Page/ColumnsVisibility").arg(id());
|
||||
|
||||
setting->set(tree->header()->saveState());
|
||||
auto stateSetting = m_instance->settings()->getSetting(stateSettingName);
|
||||
stateSetting->set(QString::fromUtf8(tree->header()->saveState().toBase64()));
|
||||
|
||||
// neither passthrough nor override settings works for this usecase as I need to only set the global when the gate is false
|
||||
auto settings = m_instance->settings();
|
||||
if (!settings->get(overrideSettingName).toBool()) {
|
||||
settings = APPLICATION->settings();
|
||||
}
|
||||
auto visibility = Json::toMap(settings->get(visibilitySettingName).toString());
|
||||
for (auto i = 0; i < m_column_names.size(); ++i) {
|
||||
if (m_columnsHideable[i]) {
|
||||
auto name = m_column_names[i];
|
||||
visibility[name] = !tree->isColumnHidden(i);
|
||||
}
|
||||
}
|
||||
settings->set(visibilitySettingName, Json::fromMap(visibility));
|
||||
}
|
||||
|
||||
void ResourceFolderModel::loadColumns(QTreeView* tree)
|
||||
{
|
||||
for (auto i = 0; i < m_columnsHiddenByDefault.size(); ++i) {
|
||||
tree->setColumnHidden(i, m_columnsHiddenByDefault[i]);
|
||||
auto const stateSettingName = QString("UI/%1_Page/Columns").arg(id());
|
||||
auto const overrideSettingName = QString("UI/%1_Page/ColumnsOverride").arg(id());
|
||||
auto const visibilitySettingName = QString("UI/%1_Page/ColumnsVisibility").arg(id());
|
||||
|
||||
auto stateSetting = m_instance->settings()->getOrRegisterSetting(stateSettingName, "");
|
||||
tree->header()->restoreState(QByteArray::fromBase64(stateSetting->get().toString().toUtf8()));
|
||||
|
||||
auto setVisible = [this, tree](QVariant value) {
|
||||
auto visibility = Json::toMap(value.toString());
|
||||
for (auto i = 0; i < m_column_names.size(); ++i) {
|
||||
if (m_columnsHideable[i]) {
|
||||
auto name = m_column_names[i];
|
||||
tree->setColumnHidden(i, !visibility.value(name, false).toBool());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
auto const defaultValue = Json::fromMap({
|
||||
{ "Image", true },
|
||||
{ "Version", true },
|
||||
{ "Last Modified", true },
|
||||
{ "Provider", true },
|
||||
{ "Pack Format", true },
|
||||
});
|
||||
// neither passthrough nor override settings works for this usecase as I need to only set the global when the gate is false
|
||||
auto settings = m_instance->settings();
|
||||
if (!settings->getOrRegisterSetting(overrideSettingName, false)->get().toBool()) {
|
||||
settings = APPLICATION->settings();
|
||||
}
|
||||
auto visibility = settings->getOrRegisterSetting(visibilitySettingName, defaultValue);
|
||||
setVisible(visibility->get());
|
||||
|
||||
auto const setting_name = QString("UI/%1_Page/Columns").arg(id());
|
||||
auto setting = m_instance->settings()->getOrRegisterSetting(setting_name);
|
||||
|
||||
tree->header()->restoreState(setting->get().toByteArray());
|
||||
// allways connect the signal in case the setting is toggled on and off
|
||||
auto gSetting = APPLICATION->settings()->getOrRegisterSetting(visibilitySettingName, defaultValue);
|
||||
connect(gSetting.get(), &Setting::SettingChanged, tree, [this, setVisible, overrideSettingName](const Setting&, QVariant value) {
|
||||
if (!m_instance->settings()->get(overrideSettingName).toBool()) {
|
||||
setVisible(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
QMenu* ResourceFolderModel::createHeaderContextMenu(QTreeView* tree)
|
||||
{
|
||||
auto menu = new QMenu(tree);
|
||||
|
||||
{ // action to decide if the visibility is per instance or not
|
||||
auto act = new QAction(tr("Override Columns Visibility"), menu);
|
||||
auto const overrideSettingName = QString("UI/%1_Page/ColumnsOverride").arg(id());
|
||||
|
||||
act->setCheckable(true);
|
||||
act->setChecked(m_instance->settings()->getOrRegisterSetting(overrideSettingName, false)->get().toBool());
|
||||
|
||||
connect(act, &QAction::toggled, tree, [this, tree, overrideSettingName](bool toggled) {
|
||||
m_instance->settings()->set(overrideSettingName, toggled);
|
||||
saveColumns(tree);
|
||||
});
|
||||
|
||||
menu->addAction(act);
|
||||
}
|
||||
menu->addSeparator()->setText(tr("Show / Hide Columns"));
|
||||
|
||||
for (int col = 0; col < columnCount(); ++col) {
|
||||
|
@ -243,7 +243,6 @@ class ResourceFolderModel : public QAbstractListModel {
|
||||
QList<QHeaderView::ResizeMode> m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive,
|
||||
QHeaderView::Interactive, QHeaderView::Interactive };
|
||||
QList<bool> m_columnsHideable = { false, false, true, true, true };
|
||||
QList<bool> m_columnsHiddenByDefault = { false, false, false, false, true };
|
||||
|
||||
QDir m_dir;
|
||||
BaseInstance* m_instance;
|
||||
|
@ -51,7 +51,6 @@ TexturePackFolderModel::TexturePackFolderModel(const QDir& dir, BaseInstance* in
|
||||
m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch,
|
||||
QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive };
|
||||
m_columnsHideable = { false, true, false, true, true, true };
|
||||
m_columnsHiddenByDefault = { false, false, false, false, false, true };
|
||||
}
|
||||
|
||||
Task* TexturePackFolderModel::createParseTask(Resource& resource)
|
||||
|
@ -44,13 +44,14 @@
|
||||
#include <QTextStream>
|
||||
|
||||
#include <QSettings>
|
||||
#include "Json.h"
|
||||
|
||||
INIFile::INIFile() {}
|
||||
|
||||
bool INIFile::saveFile(QString fileName)
|
||||
{
|
||||
if (!contains("ConfigVersion"))
|
||||
insert("ConfigVersion", "1.2");
|
||||
insert("ConfigVersion", "1.3");
|
||||
QSettings _settings_obj{ fileName, QSettings::Format::IniFormat };
|
||||
_settings_obj.setFallbacksEnabled(false);
|
||||
_settings_obj.clear();
|
||||
@ -149,6 +150,27 @@ bool parseOldFileFormat(QIODevice& device, QSettings::SettingsMap& map)
|
||||
return true;
|
||||
}
|
||||
|
||||
QVariant migrateQByteArrayToBase64(QString key, QVariant value)
|
||||
{
|
||||
static const QStringList otherByteArrays = { "MainWindowState", "MainWindowGeometry", "ConsoleWindowState",
|
||||
"ConsoleWindowGeometry", "PagedGeometry", "NewInstanceGeometry",
|
||||
"ModDownloadGeometry", "RPDownloadGeometry", "TPDownloadGeometry",
|
||||
"ShaderDownloadGeometry" };
|
||||
if (key.startsWith("WideBarVisibility_") || (key.startsWith("UI/") && key.endsWith("_Page/Columns"))) {
|
||||
return QString::fromUtf8(value.toByteArray().toBase64());
|
||||
}
|
||||
if (otherByteArrays.contains(key)) {
|
||||
return QString::fromUtf8(value.toByteArray());
|
||||
}
|
||||
if (key == "linkedInstances") {
|
||||
return Json::fromStringList(value.toStringList());
|
||||
}
|
||||
if (key == "Env") {
|
||||
return Json::fromMap(value.toMap());
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
bool INIFile::loadFile(QString fileName)
|
||||
{
|
||||
QSettings _settings_obj{ fileName, QSettings::Format::IniFormat };
|
||||
@ -168,22 +190,34 @@ bool INIFile::loadFile(QString fileName)
|
||||
QSettings::SettingsMap map;
|
||||
parseOldFileFormat(file, map);
|
||||
file.close();
|
||||
for (auto&& key : map.keys())
|
||||
insert(key, map.value(key));
|
||||
insert("ConfigVersion", "1.2");
|
||||
for (auto&& key : map.keys()) {
|
||||
auto value = migrateQByteArrayToBase64(key, map.value(key));
|
||||
insert(key, value);
|
||||
}
|
||||
insert("ConfigVersion", "1.3");
|
||||
} else if (_settings_obj.value("ConfigVersion").toString() == "1.1") {
|
||||
for (auto&& key : _settings_obj.allKeys()) {
|
||||
if (auto valueStr = _settings_obj.value(key).toString();
|
||||
auto value = migrateQByteArrayToBase64(key, _settings_obj.value(key));
|
||||
if (auto valueStr = value.toString();
|
||||
(valueStr.contains(QChar(';')) || valueStr.contains(QChar('=')) || valueStr.contains(QChar(','))) &&
|
||||
valueStr.endsWith("\"") && valueStr.startsWith("\"")) {
|
||||
insert(key, unquote(valueStr));
|
||||
} else
|
||||
insert(key, _settings_obj.value(key));
|
||||
} else {
|
||||
insert(key, value);
|
||||
}
|
||||
}
|
||||
insert("ConfigVersion", "1.2");
|
||||
} else
|
||||
for (auto&& key : _settings_obj.allKeys())
|
||||
insert("ConfigVersion", "1.3");
|
||||
} else if (_settings_obj.value("ConfigVersion").toString() == "1.2") {
|
||||
for (auto&& key : _settings_obj.allKeys()) {
|
||||
auto value = migrateQByteArrayToBase64(key, _settings_obj.value(key));
|
||||
insert(key, value);
|
||||
}
|
||||
insert("ConfigVersion", "1.3");
|
||||
} else {
|
||||
for (auto&& key : _settings_obj.allKeys()) {
|
||||
insert(key, _settings_obj.value(key));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -116,9 +116,9 @@ InstanceWindow::InstanceWindow(InstancePtr instance, QWidget* parent) : QMainWin
|
||||
|
||||
// restore window state
|
||||
{
|
||||
auto base64State = APPLICATION->settings()->get("ConsoleWindowState").toByteArray();
|
||||
auto base64State = APPLICATION->settings()->get("ConsoleWindowState").toString().toUtf8();
|
||||
restoreState(QByteArray::fromBase64(base64State));
|
||||
auto base64Geometry = APPLICATION->settings()->get("ConsoleWindowGeometry").toByteArray();
|
||||
auto base64Geometry = APPLICATION->settings()->get("ConsoleWindowGeometry").toString().toUtf8();
|
||||
restoreGeometry(QByteArray::fromBase64(base64Geometry));
|
||||
}
|
||||
|
||||
@ -190,8 +190,8 @@ void InstanceWindow::closeEvent(QCloseEvent* event)
|
||||
return;
|
||||
}
|
||||
|
||||
APPLICATION->settings()->set("ConsoleWindowState", saveState().toBase64());
|
||||
APPLICATION->settings()->set("ConsoleWindowGeometry", saveGeometry().toBase64());
|
||||
APPLICATION->settings()->set("ConsoleWindowState", QString::fromUtf8(saveState().toBase64()));
|
||||
APPLICATION->settings()->set("ConsoleWindowGeometry", QString::fromUtf8(saveGeometry().toBase64()));
|
||||
emit isClosing();
|
||||
event->accept();
|
||||
}
|
||||
|
@ -181,7 +181,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
|
||||
auto const setting_name = QString("WideBarVisibility_%1").arg(ui->instanceToolBar->objectName());
|
||||
instanceToolbarSetting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
||||
|
||||
ui->instanceToolBar->setVisibilityState(instanceToolbarSetting->get().toByteArray());
|
||||
ui->instanceToolBar->setVisibilityState(QByteArray::fromBase64(instanceToolbarSetting->get().toString().toUtf8()));
|
||||
|
||||
ui->instanceToolBar->addContextMenuAction(ui->newsToolBar->toggleViewAction());
|
||||
ui->instanceToolBar->addContextMenuAction(ui->instanceToolBar->toggleViewAction());
|
||||
@ -1296,7 +1296,7 @@ void MainWindow::globalSettingsClosed()
|
||||
updateStatusCenter();
|
||||
// This needs to be done to prevent UI elements disappearing in the event the config is changed
|
||||
// but Prism Launcher exits abnormally, causing the window state to never be saved:
|
||||
APPLICATION->settings()->set("MainWindowState", saveState().toBase64());
|
||||
APPLICATION->settings()->set("MainWindowState", QString::fromUtf8(saveState().toBase64()));
|
||||
update();
|
||||
}
|
||||
|
||||
@ -1491,9 +1491,9 @@ void MainWindow::on_actionViewSelectedInstFolder_triggered()
|
||||
void MainWindow::closeEvent(QCloseEvent* event)
|
||||
{
|
||||
// Save the window state and geometry.
|
||||
APPLICATION->settings()->set("MainWindowState", saveState().toBase64());
|
||||
APPLICATION->settings()->set("MainWindowGeometry", saveGeometry().toBase64());
|
||||
instanceToolbarSetting->set(ui->instanceToolBar->getVisibilityState());
|
||||
APPLICATION->settings()->set("MainWindowState", QString::fromUtf8(saveState().toBase64()));
|
||||
APPLICATION->settings()->set("MainWindowGeometry", QString::fromUtf8(saveGeometry().toBase64()));
|
||||
instanceToolbarSetting->set(QString::fromUtf8(ui->instanceToolBar->getVisibilityState().toBase64()));
|
||||
event->accept();
|
||||
emit isClosing();
|
||||
}
|
||||
|
@ -134,7 +134,7 @@ NewInstanceDialog::NewInstanceDialog(const QString& initialGroup,
|
||||
updateDialogState();
|
||||
|
||||
if (APPLICATION->settings()->get("NewInstanceGeometry").isValid()) {
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get("NewInstanceGeometry").toByteArray()));
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get("NewInstanceGeometry").toString().toUtf8()));
|
||||
} else {
|
||||
auto screen = parent->screen();
|
||||
auto geometry = screen->availableSize();
|
||||
@ -146,7 +146,7 @@ NewInstanceDialog::NewInstanceDialog(const QString& initialGroup,
|
||||
|
||||
void NewInstanceDialog::reject()
|
||||
{
|
||||
APPLICATION->settings()->set("NewInstanceGeometry", saveGeometry().toBase64());
|
||||
APPLICATION->settings()->set("NewInstanceGeometry", QString::fromUtf8(saveGeometry().toBase64()));
|
||||
|
||||
// This is just so that the pages get the close() call and can react to it, if needed.
|
||||
m_container->prepareToClose();
|
||||
@ -156,7 +156,7 @@ void NewInstanceDialog::reject()
|
||||
|
||||
void NewInstanceDialog::accept()
|
||||
{
|
||||
APPLICATION->settings()->set("NewInstanceGeometry", saveGeometry().toBase64());
|
||||
APPLICATION->settings()->set("NewInstanceGeometry", QString::fromUtf8(saveGeometry().toBase64()));
|
||||
importIconNow();
|
||||
|
||||
// This is just so that the pages get the close() call and can react to it, if needed.
|
||||
@ -316,7 +316,7 @@ void NewInstanceDialog::importIconNow()
|
||||
InstIconKey = importIconName.mid(0, importIconName.lastIndexOf('.'));
|
||||
importIcon = false;
|
||||
}
|
||||
APPLICATION->settings()->set("NewInstanceGeometry", saveGeometry().toBase64());
|
||||
APPLICATION->settings()->set("NewInstanceGeometry", QString::fromUtf8(saveGeometry().toBase64()));
|
||||
}
|
||||
|
||||
void NewInstanceDialog::selectedPageChanged(BasePage* previous, BasePage* selected)
|
||||
|
@ -84,7 +84,7 @@ ResourceDownloadDialog::ResourceDownloadDialog(QWidget* parent, const std::share
|
||||
void ResourceDownloadDialog::accept()
|
||||
{
|
||||
if (!geometrySaveKey().isEmpty())
|
||||
APPLICATION->settings()->set(geometrySaveKey(), saveGeometry().toBase64());
|
||||
APPLICATION->settings()->set(geometrySaveKey(), QString::fromUtf8(saveGeometry().toBase64()));
|
||||
|
||||
QDialog::accept();
|
||||
}
|
||||
@ -105,7 +105,7 @@ void ResourceDownloadDialog::reject()
|
||||
}
|
||||
|
||||
if (!geometrySaveKey().isEmpty())
|
||||
APPLICATION->settings()->set(geometrySaveKey(), saveGeometry().toBase64());
|
||||
APPLICATION->settings()->set(geometrySaveKey(), QString::fromUtf8(saveGeometry().toBase64()));
|
||||
|
||||
QDialog::reject();
|
||||
}
|
||||
@ -275,7 +275,7 @@ ModDownloadDialog::ModDownloadDialog(QWidget* parent, const std::shared_ptr<ModF
|
||||
connectButtons();
|
||||
|
||||
if (!geometrySaveKey().isEmpty())
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toByteArray()));
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toString().toUtf8()));
|
||||
}
|
||||
|
||||
QList<BasePage*> ModDownloadDialog::getPages()
|
||||
@ -318,7 +318,7 @@ ResourcePackDownloadDialog::ResourcePackDownloadDialog(QWidget* parent,
|
||||
connectButtons();
|
||||
|
||||
if (!geometrySaveKey().isEmpty())
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toByteArray()));
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toString().toUtf8()));
|
||||
}
|
||||
|
||||
QList<BasePage*> ResourcePackDownloadDialog::getPages()
|
||||
@ -343,7 +343,7 @@ TexturePackDownloadDialog::TexturePackDownloadDialog(QWidget* parent,
|
||||
connectButtons();
|
||||
|
||||
if (!geometrySaveKey().isEmpty())
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toByteArray()));
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toString().toUtf8()));
|
||||
}
|
||||
|
||||
QList<BasePage*> TexturePackDownloadDialog::getPages()
|
||||
@ -368,7 +368,7 @@ ShaderPackDownloadDialog::ShaderPackDownloadDialog(QWidget* parent,
|
||||
connectButtons();
|
||||
|
||||
if (!geometrySaveKey().isEmpty())
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toByteArray()));
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get(geometrySaveKey()).toString().toUtf8()));
|
||||
}
|
||||
|
||||
QList<BasePage*> ShaderPackDownloadDialog::getPages()
|
||||
|
@ -53,7 +53,7 @@ PageDialog::PageDialog(BasePageProvider* pageProvider, QString defaultId, QWidge
|
||||
connect(buttons->button(QDialogButtonBox::Cancel), &QPushButton::clicked, this, &PageDialog::reject);
|
||||
connect(buttons->button(QDialogButtonBox::Help), &QPushButton::clicked, m_container, &PageContainer::help);
|
||||
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get("PagedGeometry").toByteArray()));
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get("PagedGeometry").toString().toUtf8()));
|
||||
}
|
||||
|
||||
void PageDialog::accept()
|
||||
@ -75,7 +75,7 @@ bool PageDialog::handleClose()
|
||||
return false;
|
||||
|
||||
qDebug() << "Paged dialog close approved";
|
||||
APPLICATION->settings()->set("PagedGeometry", saveGeometry().toBase64());
|
||||
APPLICATION->settings()->set("PagedGeometry", QString::fromUtf8(saveGeometry().toBase64()));
|
||||
qDebug() << "Paged dialog geometry saved";
|
||||
|
||||
emit applied();
|
||||
|
@ -148,14 +148,14 @@ void ExternalResourcesPage::openedImpl()
|
||||
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
||||
m_wide_bar_setting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
||||
|
||||
ui->actionsToolbar->setVisibilityState(m_wide_bar_setting->get().toByteArray());
|
||||
ui->actionsToolbar->setVisibilityState(QByteArray::fromBase64(m_wide_bar_setting->get().toString().toUtf8()));
|
||||
}
|
||||
|
||||
void ExternalResourcesPage::closedImpl()
|
||||
{
|
||||
m_model->stopWatching();
|
||||
|
||||
m_wide_bar_setting->set(ui->actionsToolbar->getVisibilityState());
|
||||
m_wide_bar_setting->set(QString::fromUtf8(ui->actionsToolbar->getVisibilityState().toBase64()));
|
||||
}
|
||||
|
||||
void ExternalResourcesPage::retranslate()
|
||||
|
@ -562,12 +562,12 @@ void ScreenshotsPage::openedImpl()
|
||||
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
||||
m_wide_bar_setting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
||||
|
||||
ui->toolBar->setVisibilityState(m_wide_bar_setting->get().toByteArray());
|
||||
ui->toolBar->setVisibilityState(QByteArray::fromBase64(m_wide_bar_setting->get().toString().toUtf8()));
|
||||
}
|
||||
|
||||
void ScreenshotsPage::closedImpl()
|
||||
{
|
||||
m_wide_bar_setting->set(ui->toolBar->getVisibilityState());
|
||||
m_wide_bar_setting->set(QString::fromUtf8(ui->toolBar->getVisibilityState().toBase64()));
|
||||
}
|
||||
|
||||
#include "ScreenshotsPage.moc"
|
||||
|
@ -705,7 +705,7 @@ void ServersPage::openedImpl()
|
||||
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
||||
m_wide_bar_setting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
||||
|
||||
ui->toolBar->setVisibilityState(m_wide_bar_setting->get().toByteArray());
|
||||
ui->toolBar->setVisibilityState(QByteArray::fromBase64(m_wide_bar_setting->get().toString().toUtf8()));
|
||||
|
||||
// ping servers
|
||||
m_model->queryServersStatus();
|
||||
@ -715,7 +715,7 @@ void ServersPage::closedImpl()
|
||||
{
|
||||
m_model->unobserve();
|
||||
|
||||
m_wide_bar_setting->set(ui->toolBar->getVisibilityState());
|
||||
m_wide_bar_setting->set(QString::fromUtf8(ui->toolBar->getVisibilityState().toBase64()));
|
||||
}
|
||||
|
||||
void ServersPage::on_actionAdd_triggered()
|
||||
|
@ -126,11 +126,11 @@ void VersionPage::openedImpl()
|
||||
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
||||
m_wide_bar_setting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
||||
|
||||
ui->toolBar->setVisibilityState(m_wide_bar_setting->get().toByteArray());
|
||||
ui->toolBar->setVisibilityState(QByteArray::fromBase64(m_wide_bar_setting->get().toString().toUtf8()));
|
||||
}
|
||||
void VersionPage::closedImpl()
|
||||
{
|
||||
m_wide_bar_setting->set(ui->toolBar->getVisibilityState());
|
||||
m_wide_bar_setting->set(QString::fromUtf8(ui->toolBar->getVisibilityState().toBase64()));
|
||||
}
|
||||
|
||||
QMenu* VersionPage::createPopupMenu()
|
||||
|
@ -125,14 +125,14 @@ void WorldListPage::openedImpl()
|
||||
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
||||
m_wide_bar_setting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
||||
|
||||
ui->toolBar->setVisibilityState(m_wide_bar_setting->get().toByteArray());
|
||||
ui->toolBar->setVisibilityState(QByteArray::fromBase64(m_wide_bar_setting->get().toString().toUtf8()));
|
||||
}
|
||||
|
||||
void WorldListPage::closedImpl()
|
||||
{
|
||||
m_worlds->stopWatching();
|
||||
|
||||
m_wide_bar_setting->set(ui->toolBar->getVisibilityState());
|
||||
m_wide_bar_setting->set(QString::fromUtf8(ui->toolBar->getVisibilityState().toBase64()));
|
||||
}
|
||||
|
||||
WorldListPage::~WorldListPage()
|
||||
|
@ -190,7 +190,7 @@ void MinecraftSettingsWidget::loadSettings()
|
||||
|
||||
// Environment variables
|
||||
m_ui->environmentVariables->initialize(m_instance != nullptr, m_instance == nullptr || settings->get("OverrideEnv").toBool(),
|
||||
settings->get("Env").toMap());
|
||||
Json::toMap(settings->get("Env").toString()));
|
||||
|
||||
// Legacy Tweaks
|
||||
m_ui->legacySettingsGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideLegacySettings").toBool());
|
||||
@ -359,7 +359,7 @@ void MinecraftSettingsWidget::saveSettings()
|
||||
settings->set("OverrideEnv", env);
|
||||
|
||||
if (env)
|
||||
settings->set("Env", m_ui->environmentVariables->value());
|
||||
settings->set("Env", Json::fromMap(m_ui->environmentVariables->value()));
|
||||
else
|
||||
settings->reset("Env");
|
||||
|
||||
|
@ -110,7 +110,7 @@ Wrapperommand=)";
|
||||
f2.loadFile(fileName);
|
||||
QCOMPARE(f2.get("PreLaunchCommand", "NOT SET").toString(), "\"$INST_JAVA\" -jar packwiz-installer-bootstrap.jar link");
|
||||
QCOMPARE(f2.get("Wrapperommand", "NOT SET").toString(), "\"$INST_JAVA\" -jar packwiz-installer-bootstrap.jar link =");
|
||||
QCOMPARE(f2.get("ConfigVersion", "NOT SET").toString(), "1.2");
|
||||
QCOMPARE(f2.get("ConfigVersion", "NOT SET").toString(), "1.3");
|
||||
#if defined(Q_OS_WIN)
|
||||
FS::deletePath(fileName);
|
||||
#endif
|
||||
@ -151,7 +151,7 @@ Wrapperommand=)";
|
||||
f2.loadFile(fileName);
|
||||
for (auto key : settings.allKeys())
|
||||
QCOMPARE(f2.get(key, "NOT SET").toString(), settings.value(key).toString());
|
||||
QCOMPARE(f2.get("ConfigVersion", "NOT SET").toString(), "1.2");
|
||||
QCOMPARE(f2.get("ConfigVersion", "NOT SET").toString(), "1.3");
|
||||
#if defined(Q_OS_WIN)
|
||||
FS::deletePath(fileName);
|
||||
#endif
|
||||
@ -185,7 +185,7 @@ PreLaunchCommand=)";
|
||||
INIFile f1;
|
||||
f1.loadFile(fileName);
|
||||
QCOMPARE(f1.get("PreLaunchCommand", "NOT SET").toString(), "env mesa=true");
|
||||
QCOMPARE(f1.get("ConfigVersion", "NOT SET").toString(), "1.2");
|
||||
QCOMPARE(f1.get("ConfigVersion", "NOT SET").toString(), "1.3");
|
||||
#if defined(Q_OS_WIN)
|
||||
FS::deletePath(fileName);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user