feat: make resource header config global
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
d667dfe223
commit
6177fa0148
12 changed files with 76 additions and 24 deletions
|
@ -816,6 +816,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
|
||||||
m_settings->registerSetting("TPDownloadGeometry", "");
|
m_settings->registerSetting("TPDownloadGeometry", "");
|
||||||
m_settings->registerSetting("ShaderDownloadGeometry", "");
|
m_settings->registerSetting("ShaderDownloadGeometry", "");
|
||||||
|
|
||||||
|
m_settings->registerSetting("UI/FolderResourceColumnVisibility", QVariantMap{});
|
||||||
|
|
||||||
// HACK: This code feels so stupid is there a less stupid way of doing this?
|
// HACK: This code feels so stupid is there a less stupid way of doing this?
|
||||||
{
|
{
|
||||||
m_settings->registerSetting("PastebinURL", "");
|
m_settings->registerSetting("PastebinURL", "");
|
||||||
|
|
|
@ -231,6 +231,9 @@ void MinecraftInstance::loadSpecificSettings()
|
||||||
auto envSetting = m_settings->registerSetting("OverrideEnv", false);
|
auto envSetting = m_settings->registerSetting("OverrideEnv", false);
|
||||||
m_settings->registerOverride(global_settings->getSetting("Env"), envSetting);
|
m_settings->registerOverride(global_settings->getSetting("Env"), envSetting);
|
||||||
|
|
||||||
|
m_settings->registerSetting("UI/ColumnsOverride", false);
|
||||||
|
m_settings->registerSetting("UI/FolderResourceColumnVisibility", QVariantMap{});
|
||||||
|
|
||||||
m_settings->set("InstanceType", "OneSix");
|
m_settings->set("InstanceType", "OneSix");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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, 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_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
|
QVariant ModFolderModel::data(const QModelIndex& index, int role) const
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#include "ResourceFolderModel.h"
|
#include "ResourceFolderModel.h"
|
||||||
|
#include <qvariant.h>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
|
@ -587,28 +588,77 @@ void ResourceFolderModel::setupHeaderAction(QAction* act, int column)
|
||||||
|
|
||||||
void ResourceFolderModel::saveColumns(QTreeView* tree)
|
void ResourceFolderModel::saveColumns(QTreeView* tree)
|
||||||
{
|
{
|
||||||
auto const setting_name = QString("UI/%1_Page/Columns").arg(id());
|
auto const settingName = QString("UI/%1_Page/Columns").arg(id());
|
||||||
auto setting = m_instance->settings()->getOrRegisterSetting(setting_name);
|
auto setting = m_instance->settings()->getSetting(settingName);
|
||||||
|
|
||||||
setting->set(tree->header()->saveState());
|
setting->set(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("UI/ColumnsOverride").toBool()) {
|
||||||
|
settings = APPLICATION->settings();
|
||||||
|
}
|
||||||
|
auto visibility = settings->get("UI/FolderResourceColumnVisibility").toMap();
|
||||||
|
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("UI/FolderResourceColumnVisibility", visibility);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceFolderModel::loadColumns(QTreeView* tree)
|
void ResourceFolderModel::loadColumns(QTreeView* tree)
|
||||||
{
|
{
|
||||||
for (auto i = 0; i < m_columnsHiddenByDefault.size(); ++i) {
|
auto const settingName = QString("UI/%1_Page/Columns").arg(id());
|
||||||
tree->setColumnHidden(i, m_columnsHiddenByDefault[i]);
|
|
||||||
|
auto setting = m_instance->settings()->getOrRegisterSetting(settingName, QByteArray{});
|
||||||
|
tree->header()->restoreState(QByteArray::fromBase64(setting->get().toByteArray()));
|
||||||
|
|
||||||
|
auto setVisible = [this, tree](QVariant value) {
|
||||||
|
auto visibility = value.toMap();
|
||||||
|
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 setting_name = QString("UI/%1_Page/Columns").arg(id());
|
// neither passthrough nor override settings works for this usecase as I need to only set the global when the gate is false
|
||||||
auto setting = m_instance->settings()->getOrRegisterSetting(setting_name);
|
auto settings = m_instance->settings();
|
||||||
|
if (!settings->get("UI/ColumnsOverride").toBool()) {
|
||||||
|
settings = APPLICATION->settings();
|
||||||
|
}
|
||||||
|
auto visibility = settings->getSetting("UI/FolderResourceColumnVisibility");
|
||||||
|
setVisible(visibility->get().toMap());
|
||||||
|
|
||||||
tree->header()->restoreState(setting->get().toByteArray());
|
// allways connect the signal in case the setting is toggled on and off
|
||||||
|
auto gSetting = APPLICATION->settings()->getOrRegisterSetting("UI/FolderResourceColumnVisibility");
|
||||||
|
connect(gSetting.get(), &Setting::SettingChanged, tree, [this, setVisible](const Setting&, QVariant value) {
|
||||||
|
if (!m_instance->settings()->get("UI/ColumnsOverride").toBool()) {
|
||||||
|
setVisible(value.toMap());
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QMenu* ResourceFolderModel::createHeaderContextMenu(QTreeView* tree)
|
QMenu* ResourceFolderModel::createHeaderContextMenu(QTreeView* tree)
|
||||||
{
|
{
|
||||||
auto menu = new QMenu(tree);
|
auto menu = new QMenu(tree);
|
||||||
|
|
||||||
|
{ // action to decide if the visibility is per instance or not
|
||||||
|
auto act = new QAction(tr("Overide Columns Visibility"), menu);
|
||||||
|
|
||||||
|
act->setCheckable(true);
|
||||||
|
act->setChecked(m_instance->settings()->get("UI/ColumnsOverride").toBool());
|
||||||
|
|
||||||
|
connect(act, &QAction::toggled, tree, [this, tree](bool toggled) {
|
||||||
|
m_instance->settings()->set("UI/ColumnsOverride", toggled);
|
||||||
|
saveColumns(tree);
|
||||||
|
});
|
||||||
|
|
||||||
|
menu->addAction(act);
|
||||||
|
}
|
||||||
menu->addSeparator()->setText(tr("Show / Hide Columns"));
|
menu->addSeparator()->setText(tr("Show / Hide Columns"));
|
||||||
|
|
||||||
for (int col = 0; col < columnCount(); ++col) {
|
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,
|
QList<QHeaderView::ResizeMode> m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive,
|
||||||
QHeaderView::Interactive, QHeaderView::Interactive };
|
QHeaderView::Interactive, QHeaderView::Interactive };
|
||||||
QList<bool> m_columnsHideable = { false, false, true, true, true };
|
QList<bool> m_columnsHideable = { false, false, true, true, true };
|
||||||
QList<bool> m_columnsHiddenByDefault = { false, false, false, false, true };
|
|
||||||
|
|
||||||
QDir m_dir;
|
QDir m_dir;
|
||||||
BaseInstance* m_instance;
|
BaseInstance* m_instance;
|
||||||
|
|
|
@ -51,7 +51,6 @@ TexturePackFolderModel::TexturePackFolderModel(const QDir& dir, BaseInstance* in
|
||||||
m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch,
|
m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch,
|
||||||
QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive };
|
QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive };
|
||||||
m_columnsHideable = { false, true, false, true, true, true };
|
m_columnsHideable = { false, true, false, true, true, true };
|
||||||
m_columnsHiddenByDefault = { false, false, false, false, false, true };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Task* TexturePackFolderModel::createParseTask(Resource& resource)
|
Task* TexturePackFolderModel::createParseTask(Resource& resource)
|
||||||
|
|
|
@ -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());
|
auto const setting_name = QString("WideBarVisibility_%1").arg(ui->instanceToolBar->objectName());
|
||||||
instanceToolbarSetting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
instanceToolbarSetting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
||||||
|
|
||||||
ui->instanceToolBar->setVisibilityState(instanceToolbarSetting->get().toByteArray());
|
ui->instanceToolBar->setVisibilityState(QByteArray::fromBase64(instanceToolbarSetting->get().toByteArray()));
|
||||||
|
|
||||||
ui->instanceToolBar->addContextMenuAction(ui->newsToolBar->toggleViewAction());
|
ui->instanceToolBar->addContextMenuAction(ui->newsToolBar->toggleViewAction());
|
||||||
ui->instanceToolBar->addContextMenuAction(ui->instanceToolBar->toggleViewAction());
|
ui->instanceToolBar->addContextMenuAction(ui->instanceToolBar->toggleViewAction());
|
||||||
|
@ -1493,7 +1493,7 @@ void MainWindow::closeEvent(QCloseEvent* event)
|
||||||
// Save the window state and geometry.
|
// Save the window state and geometry.
|
||||||
APPLICATION->settings()->set("MainWindowState", saveState().toBase64());
|
APPLICATION->settings()->set("MainWindowState", saveState().toBase64());
|
||||||
APPLICATION->settings()->set("MainWindowGeometry", saveGeometry().toBase64());
|
APPLICATION->settings()->set("MainWindowGeometry", saveGeometry().toBase64());
|
||||||
instanceToolbarSetting->set(ui->instanceToolBar->getVisibilityState());
|
instanceToolbarSetting->set(ui->instanceToolBar->getVisibilityState().toBase64());
|
||||||
event->accept();
|
event->accept();
|
||||||
emit isClosing();
|
emit isClosing();
|
||||||
}
|
}
|
||||||
|
|
|
@ -148,14 +148,14 @@ void ExternalResourcesPage::openedImpl()
|
||||||
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
||||||
m_wide_bar_setting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
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().toByteArray()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExternalResourcesPage::closedImpl()
|
void ExternalResourcesPage::closedImpl()
|
||||||
{
|
{
|
||||||
m_model->stopWatching();
|
m_model->stopWatching();
|
||||||
|
|
||||||
m_wide_bar_setting->set(ui->actionsToolbar->getVisibilityState());
|
m_wide_bar_setting->set(ui->actionsToolbar->getVisibilityState().toBase64());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExternalResourcesPage::retranslate()
|
void ExternalResourcesPage::retranslate()
|
||||||
|
|
|
@ -562,12 +562,12 @@ void ScreenshotsPage::openedImpl()
|
||||||
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
||||||
m_wide_bar_setting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
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().toByteArray()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenshotsPage::closedImpl()
|
void ScreenshotsPage::closedImpl()
|
||||||
{
|
{
|
||||||
m_wide_bar_setting->set(ui->toolBar->getVisibilityState());
|
m_wide_bar_setting->set(ui->toolBar->getVisibilityState().toBase64());
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "ScreenshotsPage.moc"
|
#include "ScreenshotsPage.moc"
|
||||||
|
|
|
@ -705,7 +705,7 @@ void ServersPage::openedImpl()
|
||||||
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
||||||
m_wide_bar_setting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
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().toByteArray()));
|
||||||
|
|
||||||
// ping servers
|
// ping servers
|
||||||
m_model->queryServersStatus();
|
m_model->queryServersStatus();
|
||||||
|
@ -715,7 +715,7 @@ void ServersPage::closedImpl()
|
||||||
{
|
{
|
||||||
m_model->unobserve();
|
m_model->unobserve();
|
||||||
|
|
||||||
m_wide_bar_setting->set(ui->toolBar->getVisibilityState());
|
m_wide_bar_setting->set(ui->toolBar->getVisibilityState().toBase64());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServersPage::on_actionAdd_triggered()
|
void ServersPage::on_actionAdd_triggered()
|
||||||
|
|
|
@ -126,11 +126,11 @@ void VersionPage::openedImpl()
|
||||||
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
||||||
m_wide_bar_setting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
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().toByteArray()));
|
||||||
}
|
}
|
||||||
void VersionPage::closedImpl()
|
void VersionPage::closedImpl()
|
||||||
{
|
{
|
||||||
m_wide_bar_setting->set(ui->toolBar->getVisibilityState());
|
m_wide_bar_setting->set(ui->toolBar->getVisibilityState().toBase64());
|
||||||
}
|
}
|
||||||
|
|
||||||
QMenu* VersionPage::createPopupMenu()
|
QMenu* VersionPage::createPopupMenu()
|
||||||
|
|
|
@ -121,14 +121,14 @@ void WorldListPage::openedImpl()
|
||||||
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
||||||
m_wide_bar_setting = APPLICATION->settings()->getOrRegisterSetting(setting_name);
|
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().toByteArray()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldListPage::closedImpl()
|
void WorldListPage::closedImpl()
|
||||||
{
|
{
|
||||||
m_worlds->stopWatching();
|
m_worlds->stopWatching();
|
||||||
|
|
||||||
m_wide_bar_setting->set(ui->toolBar->getVisibilityState());
|
m_wide_bar_setting->set(ui->toolBar->getVisibilityState().toBase64());
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldListPage::~WorldListPage()
|
WorldListPage::~WorldListPage()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue