refactor: Create a more clear hierarchy for some instance pages

Previously, the Shaders, Texture packs and Resource packs tabs had as
parent the ModFolderPage, making it so that making changes only to the
Mods page would require checking the id of the page for the correct one.
This was hackish and error-prone.

Now, those pages all inherit from a single class, ExternalResourcesPage,
that handles the basic behaviour of all of them, while allowing for
individual modification in code.

This is still not a clear separation, since internally, all those
resources are derived from Mods, so for now there's still some awkward
common code :/
This commit is contained in:
flow
2022-03-11 18:03:21 -03:00
committed by flow
parent 349fc4143d
commit d394235ee0
10 changed files with 486 additions and 473 deletions

View File

@ -35,24 +35,28 @@
#pragma once
#include "ModFolderPage.h"
#include "ui_ModFolderPage.h"
#include "ExternalResourcesPage.h"
#include "ui_ExternalResourcesPage.h"
class ResourcePackPage : public ModFolderPage
class ResourcePackPage : public ExternalResourcesPage
{
Q_OBJECT
public:
explicit ResourcePackPage(MinecraftInstance *instance, QWidget *parent = 0)
: ModFolderPage(instance, instance->resourcePackList(), "resourcepacks",
"resourcepacks", tr("Resource packs"), "Resource-packs", parent)
: ExternalResourcesPage(instance, instance->resourcePackList(), parent)
{
ui->actionView_configs->setVisible(false);
ui->actionViewConfigs->setVisible(false);
}
virtual ~ResourcePackPage() {}
QString displayName() const override { return tr("Resource packs"); }
QIcon icon() const override { return APPLICATION->getThemedIcon("resourcepacks"); }
QString id() const override { return "resourcepacks"; }
QString helpPage() const override { return "Resource-packs"; }
virtual bool shouldDisplay() const override
{
return !m_inst->traits().contains("no-texturepacks") &&
!m_inst->traits().contains("texturepacks");
return !m_instance->traits().contains("no-texturepacks") &&
!m_instance->traits().contains("texturepacks");
}
};