Made resource columns resizable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
a3445cbbdd
commit
361329d5d1
@ -37,9 +37,9 @@
|
|||||||
#include "ModFolderModel.h"
|
#include "ModFolderModel.h"
|
||||||
|
|
||||||
#include <FileSystem.h>
|
#include <FileSystem.h>
|
||||||
#include <qheaderview.h>
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QFileSystemWatcher>
|
#include <QFileSystemWatcher>
|
||||||
|
#include <QHeaderView>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
@ -65,8 +65,8 @@ ModFolderModel::ModFolderModel(const QString& dir, BaseInstance* instance, bool
|
|||||||
m_column_names = QStringList({ "Enable", "Image", "Name", "Version", "Last Modified", "Provider" });
|
m_column_names = QStringList({ "Enable", "Image", "Name", "Version", "Last Modified", "Provider" });
|
||||||
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Version"), tr("Last Modified"), tr("Provider") });
|
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Version"), tr("Last Modified"), tr("Provider") });
|
||||||
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::VERSION, SortType::DATE, SortType::PROVIDER };
|
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::VERSION, SortType::DATE, SortType::PROVIDER };
|
||||||
m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Interactive, QHeaderView::Stretch,
|
m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch,
|
||||||
QHeaderView::ResizeToContents, QHeaderView::ResizeToContents, QHeaderView::ResizeToContents };
|
QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive };
|
||||||
m_columnsHideable = { false, true, false, true, true, true };
|
m_columnsHideable = { false, true, false, true, true, true };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
#include <QHeaderView>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
@ -516,36 +517,22 @@ void ResourceFolderModel::setupHeaderAction(QAction* act, int column)
|
|||||||
act->setText(columnNames().at(column));
|
act->setText(columnNames().at(column));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceFolderModel::saveHiddenColumn(int column, bool hidden)
|
void ResourceFolderModel::saveColumns(QTreeView* tree)
|
||||||
{
|
{
|
||||||
auto const setting_name = QString("UI/%1_Page/HiddenColumns").arg(id());
|
auto const setting_name = QString("UI/%1_Page/Columns").arg(id());
|
||||||
auto setting = (m_instance->settings()->contains(setting_name)) ? m_instance->settings()->getSetting(setting_name)
|
auto setting = (m_instance->settings()->contains(setting_name)) ? m_instance->settings()->getSetting(setting_name)
|
||||||
: m_instance->settings()->registerSetting(setting_name);
|
: m_instance->settings()->registerSetting(setting_name);
|
||||||
|
|
||||||
auto hiddenColumns = setting->get().toStringList();
|
setting->set(tree->header()->saveState());
|
||||||
auto name = columnNames(false).at(column);
|
|
||||||
auto index = hiddenColumns.indexOf(name);
|
|
||||||
if (index >= 0 && !hidden) {
|
|
||||||
hiddenColumns.removeAt(index);
|
|
||||||
} else if (index < 0 && hidden) {
|
|
||||||
hiddenColumns.append(name);
|
|
||||||
}
|
|
||||||
setting->set(hiddenColumns);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceFolderModel::loadHiddenColumns(QTreeView* tree)
|
void ResourceFolderModel::loadColumns(QTreeView* tree)
|
||||||
{
|
{
|
||||||
auto const setting_name = QString("UI/%1_Page/HiddenColumns").arg(id());
|
auto const setting_name = QString("UI/%1_Page/Columns").arg(id());
|
||||||
auto setting = (m_instance->settings()->contains(setting_name)) ? m_instance->settings()->getSetting(setting_name)
|
auto setting = (m_instance->settings()->contains(setting_name)) ? m_instance->settings()->getSetting(setting_name)
|
||||||
: m_instance->settings()->registerSetting(setting_name);
|
: m_instance->settings()->registerSetting(setting_name);
|
||||||
|
|
||||||
auto hiddenColumns = setting->get().toStringList();
|
tree->header()->restoreState(setting->get().toByteArray());
|
||||||
auto col_names = columnNames(false);
|
|
||||||
for (auto col_name : hiddenColumns) {
|
|
||||||
auto index = col_names.indexOf(col_name);
|
|
||||||
if (index >= 0)
|
|
||||||
tree->setColumnHidden(index, true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QMenu* ResourceFolderModel::createHeaderContextMenu(QTreeView* tree)
|
QMenu* ResourceFolderModel::createHeaderContextMenu(QTreeView* tree)
|
||||||
@ -570,7 +557,7 @@ QMenu* ResourceFolderModel::createHeaderContextMenu(QTreeView* tree)
|
|||||||
if (m_column_resize_modes.at(c) == QHeaderView::ResizeToContents)
|
if (m_column_resize_modes.at(c) == QHeaderView::ResizeToContents)
|
||||||
tree->resizeColumnToContents(c);
|
tree->resizeColumnToContents(c);
|
||||||
}
|
}
|
||||||
saveHiddenColumn(col, !toggled);
|
saveColumns(tree);
|
||||||
});
|
});
|
||||||
|
|
||||||
menu->addAction(act);
|
menu->addAction(act);
|
||||||
|
@ -117,8 +117,8 @@ class ResourceFolderModel : public QAbstractListModel {
|
|||||||
[[nodiscard]] QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
|
[[nodiscard]] QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
|
||||||
|
|
||||||
void setupHeaderAction(QAction* act, int column);
|
void setupHeaderAction(QAction* act, int column);
|
||||||
void saveHiddenColumn(int column, bool hidden);
|
void saveColumns(QTreeView* tree);
|
||||||
void loadHiddenColumns(QTreeView* tree);
|
void loadColumns(QTreeView* tree);
|
||||||
QMenu* createHeaderContextMenu(QTreeView* tree);
|
QMenu* createHeaderContextMenu(QTreeView* tree);
|
||||||
|
|
||||||
/** This creates a proxy model to filter / sort the model for a UI.
|
/** This creates a proxy model to filter / sort the model for a UI.
|
||||||
@ -201,8 +201,7 @@ class ResourceFolderModel : public QAbstractListModel {
|
|||||||
QList<SortType> m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::DATE };
|
QList<SortType> m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::DATE };
|
||||||
QStringList m_column_names = { "Enable", "Name", "Last Modified" };
|
QStringList m_column_names = { "Enable", "Name", "Last Modified" };
|
||||||
QStringList m_column_names_translated = { tr("Enable"), tr("Name"), tr("Last Modified") };
|
QStringList m_column_names_translated = { tr("Enable"), tr("Name"), tr("Last Modified") };
|
||||||
QList<QHeaderView::ResizeMode> m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Stretch,
|
QList<QHeaderView::ResizeMode> m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive };
|
||||||
QHeaderView::ResizeToContents };
|
|
||||||
QList<bool> m_columnsHideable = { false, false, true };
|
QList<bool> m_columnsHideable = { false, false, true };
|
||||||
|
|
||||||
QDir m_dir;
|
QDir m_dir;
|
||||||
|
@ -52,8 +52,8 @@ ResourcePackFolderModel::ResourcePackFolderModel(const QString& dir, BaseInstanc
|
|||||||
m_column_names = QStringList({ "Enable", "Image", "Name", "Pack Format", "Last Modified" });
|
m_column_names = QStringList({ "Enable", "Image", "Name", "Pack Format", "Last Modified" });
|
||||||
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Pack Format"), tr("Last Modified") });
|
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Pack Format"), tr("Last Modified") });
|
||||||
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::PACK_FORMAT, SortType::DATE };
|
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::PACK_FORMAT, SortType::DATE };
|
||||||
m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::ResizeToContents,
|
m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive,
|
||||||
QHeaderView::ResizeToContents };
|
QHeaderView::Interactive };
|
||||||
m_columnsHideable = { false, true, false, true, true };
|
m_columnsHideable = { false, true, false, true, true };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,8 +47,7 @@ TexturePackFolderModel::TexturePackFolderModel(const QString& dir, BaseInstance*
|
|||||||
m_column_names = QStringList({ "Enable", "Image", "Name", "Last Modified" });
|
m_column_names = QStringList({ "Enable", "Image", "Name", "Last Modified" });
|
||||||
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Last Modified") });
|
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Last Modified") });
|
||||||
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::DATE };
|
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::DATE };
|
||||||
m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Interactive, QHeaderView::Stretch,
|
m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive };
|
||||||
QHeaderView::ResizeToContents };
|
|
||||||
m_columnsHideable = { false, true, false, true };
|
m_columnsHideable = { false, true, false, true };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -231,6 +231,7 @@ void AccountListPage::updateButtonStates()
|
|||||||
ui->actionNoDefault->setEnabled(true);
|
ui->actionNoDefault->setEnabled(true);
|
||||||
ui->actionNoDefault->setChecked(false);
|
ui->actionNoDefault->setChecked(false);
|
||||||
}
|
}
|
||||||
|
ui->listView->resizeColumnToContents(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AccountListPage::on_actionUploadSkin_triggered()
|
void AccountListPage::on_actionUploadSkin_triggered()
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include "minecraft/mod/ResourceFolderModel.h"
|
#include "minecraft/mod/ResourceFolderModel.h"
|
||||||
#include "ui/GuiUtil.h"
|
#include "ui/GuiUtil.h"
|
||||||
|
|
||||||
|
#include <QHeaderView>
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -95,7 +96,8 @@ ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, std::shared
|
|||||||
|
|
||||||
connect(viewHeader, &QHeaderView::customContextMenuRequested, this, &ExternalResourcesPage::ShowHeaderContextMenu);
|
connect(viewHeader, &QHeaderView::customContextMenuRequested, this, &ExternalResourcesPage::ShowHeaderContextMenu);
|
||||||
|
|
||||||
m_model->loadHiddenColumns(ui->treeView);
|
m_model->loadColumns(ui->treeView);
|
||||||
|
connect(ui->treeView->header(), &QHeaderView::sectionResized, this, [this] { m_model->saveColumns(ui->treeView); });
|
||||||
}
|
}
|
||||||
|
|
||||||
ExternalResourcesPage::~ExternalResourcesPage()
|
ExternalResourcesPage::~ExternalResourcesPage()
|
||||||
|
@ -48,14 +48,14 @@ void ModListView::setModel(QAbstractItemModel* model)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.size()) {
|
if (!string.size()) {
|
||||||
head->setSectionResizeMode(0, QHeaderView::ResizeToContents);
|
head->setSectionResizeMode(0, QHeaderView::Interactive);
|
||||||
head->setSectionResizeMode(1, QHeaderView::Stretch);
|
head->setSectionResizeMode(1, QHeaderView::Stretch);
|
||||||
for (int i = 2; i < head->count(); i++)
|
for (int i = 2; i < head->count(); i++)
|
||||||
head->setSectionResizeMode(i, QHeaderView::ResizeToContents);
|
head->setSectionResizeMode(i, QHeaderView::Interactive);
|
||||||
} else {
|
} else {
|
||||||
head->setSectionResizeMode(0, QHeaderView::Stretch);
|
head->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
for (int i = 1; i < head->count(); i++)
|
for (int i = 1; i < head->count(); i++)
|
||||||
head->setSectionResizeMode(i, QHeaderView::ResizeToContents);
|
head->setSectionResizeMode(i, QHeaderView::Interactive);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user