made side and loaders visible to user
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
ab725eeb18
commit
749975e8ef
@ -52,4 +52,6 @@ class Metadata {
|
|||||||
static auto get(QDir& index_dir, QString mod_slug) -> ModStruct { return Packwiz::V1::getIndexForMod(index_dir, mod_slug); }
|
static auto get(QDir& index_dir, QString mod_slug) -> ModStruct { return Packwiz::V1::getIndexForMod(index_dir, mod_slug); }
|
||||||
|
|
||||||
static auto get(QDir& index_dir, QVariant& mod_id) -> ModStruct { return Packwiz::V1::getIndexForMod(index_dir, mod_id); }
|
static auto get(QDir& index_dir, QVariant& mod_id) -> ModStruct { return Packwiz::V1::getIndexForMod(index_dir, mod_id); }
|
||||||
|
|
||||||
|
static auto modSideToString(ModSide side) -> QString { return Packwiz::V1::sideToString(side); }
|
||||||
};
|
};
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#include "MetadataHandler.h"
|
#include "MetadataHandler.h"
|
||||||
#include "Version.h"
|
#include "Version.h"
|
||||||
#include "minecraft/mod/ModDetails.h"
|
#include "minecraft/mod/ModDetails.h"
|
||||||
|
#include "minecraft/mod/Resource.h"
|
||||||
#include "minecraft/mod/tasks/LocalModParseTask.h"
|
#include "minecraft/mod/tasks/LocalModParseTask.h"
|
||||||
|
|
||||||
static ModPlatform::ProviderCapabilities ProviderCaps;
|
static ModPlatform::ProviderCapabilities ProviderCaps;
|
||||||
@ -109,6 +110,20 @@ std::pair<int, bool> Mod::compare(const Resource& other, SortType type) const
|
|||||||
return { compare_result, type == SortType::PROVIDER };
|
return { compare_result, type == SortType::PROVIDER };
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case SortType::SIDE: {
|
||||||
|
if (side() > cast_other->side())
|
||||||
|
return { 1, type == SortType::SIDE };
|
||||||
|
else if (side() < cast_other->side())
|
||||||
|
return { -1, type == SortType::SIDE };
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SortType::LOADERS: {
|
||||||
|
if (loaders() > cast_other->loaders())
|
||||||
|
return { 1, type == SortType::LOADERS };
|
||||||
|
else if (loaders() < cast_other->loaders())
|
||||||
|
return { -1, type == SortType::LOADERS };
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return { 0, false };
|
return { 0, false };
|
||||||
}
|
}
|
||||||
@ -232,6 +247,20 @@ auto Mod::provider() const -> std::optional<QString>
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto Mod::side() const -> Metadata::ModSide
|
||||||
|
{
|
||||||
|
if (metadata())
|
||||||
|
return metadata()->side;
|
||||||
|
return Metadata::ModSide::UniversalSide;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto Mod::loaders() const -> ModPlatform::ModLoaderTypes
|
||||||
|
{
|
||||||
|
if (metadata())
|
||||||
|
return metadata()->loaders;
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
auto Mod::licenses() const -> const QList<ModLicense>&
|
auto Mod::licenses() const -> const QList<ModLicense>&
|
||||||
{
|
{
|
||||||
return details().licenses;
|
return details().licenses;
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
|
|
||||||
#include "ModDetails.h"
|
#include "ModDetails.h"
|
||||||
#include "Resource.h"
|
#include "Resource.h"
|
||||||
|
#include "modplatform/ModIndex.h"
|
||||||
|
|
||||||
class Mod : public Resource {
|
class Mod : public Resource {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -70,6 +71,8 @@ class Mod : public Resource {
|
|||||||
auto licenses() const -> const QList<ModLicense>&;
|
auto licenses() const -> const QList<ModLicense>&;
|
||||||
auto issueTracker() const -> QString;
|
auto issueTracker() const -> QString;
|
||||||
auto metaurl() const -> QString;
|
auto metaurl() const -> QString;
|
||||||
|
auto side() const -> Metadata::ModSide;
|
||||||
|
auto loaders() const -> ModPlatform::ModLoaderTypes;
|
||||||
|
|
||||||
/** Get the intneral path to the mod's icon file*/
|
/** Get the intneral path to the mod's icon file*/
|
||||||
QString iconPath() const { return m_local_details.icon_file; }
|
QString iconPath() const { return m_local_details.icon_file; }
|
||||||
|
@ -52,6 +52,8 @@
|
|||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
|
|
||||||
#include "Json.h"
|
#include "Json.h"
|
||||||
|
#include "minecraft/mod/MetadataHandler.h"
|
||||||
|
#include "minecraft/mod/Resource.h"
|
||||||
#include "minecraft/mod/tasks/LocalModParseTask.h"
|
#include "minecraft/mod/tasks/LocalModParseTask.h"
|
||||||
#include "minecraft/mod/tasks/LocalModUpdateTask.h"
|
#include "minecraft/mod/tasks/LocalModUpdateTask.h"
|
||||||
#include "minecraft/mod/tasks/ModFolderLoadTask.h"
|
#include "minecraft/mod/tasks/ModFolderLoadTask.h"
|
||||||
@ -62,12 +64,15 @@
|
|||||||
ModFolderModel::ModFolderModel(const QString& dir, BaseInstance* instance, bool is_indexed, bool create_dir)
|
ModFolderModel::ModFolderModel(const QString& dir, BaseInstance* instance, bool is_indexed, bool create_dir)
|
||||||
: ResourceFolderModel(QDir(dir), instance, nullptr, create_dir), m_is_indexed(is_indexed)
|
: ResourceFolderModel(QDir(dir), instance, nullptr, create_dir), m_is_indexed(is_indexed)
|
||||||
{
|
{
|
||||||
m_column_names = QStringList({ "Enable", "Image", "Name", "Version", "Last Modified", "Provider" });
|
m_column_names = QStringList({ "Enable", "Image", "Name", "Version", "Last Modified", "Provider", "Side", "Loaders" });
|
||||||
m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Version"), tr("Last Modified"), tr("Provider") });
|
m_column_names_translated = QStringList(
|
||||||
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::VERSION, SortType::DATE, SortType::PROVIDER };
|
{ tr("Enable"), tr("Image"), tr("Name"), tr("Version"), tr("Last Modified"), tr("Provider"), tr("Side"), tr("Loaders") });
|
||||||
|
m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::VERSION,
|
||||||
|
SortType::DATE, SortType::PROVIDER, SortType::SIDE, SortType::LOADERS };
|
||||||
m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Interactive, QHeaderView::Stretch,
|
m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Interactive, QHeaderView::Stretch,
|
||||||
QHeaderView::ResizeToContents, QHeaderView::ResizeToContents, QHeaderView::ResizeToContents };
|
QHeaderView::ResizeToContents, QHeaderView::ResizeToContents, QHeaderView::ResizeToContents,
|
||||||
m_columnsHideable = { false, true, false, true, true, true };
|
QHeaderView::ResizeToContents, QHeaderView::ResizeToContents };
|
||||||
|
m_columnsHideable = { false, true, false, true, true, true, true, true };
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant ModFolderModel::data(const QModelIndex& index, int role) const
|
QVariant ModFolderModel::data(const QModelIndex& index, int role) const
|
||||||
@ -105,6 +110,20 @@ QVariant ModFolderModel::data(const QModelIndex& index, int role) const
|
|||||||
|
|
||||||
return provider.value();
|
return provider.value();
|
||||||
}
|
}
|
||||||
|
case SideColumn: {
|
||||||
|
return Metadata::modSideToString(at(row)->side());
|
||||||
|
}
|
||||||
|
case LoadersColumn: {
|
||||||
|
QStringList loaders;
|
||||||
|
auto modLoaders = at(row)->loaders();
|
||||||
|
for (auto loader : { ModPlatform::NeoForge, ModPlatform::Forge, ModPlatform::Cauldron, ModPlatform::LiteLoader,
|
||||||
|
ModPlatform::Fabric, ModPlatform::Quilt }) {
|
||||||
|
if (modLoaders & loader) {
|
||||||
|
loaders << getModLoaderAsString(loader);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return loaders.join(",");
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
@ -154,6 +173,8 @@ QVariant ModFolderModel::headerData(int section, [[maybe_unused]] Qt::Orientatio
|
|||||||
case DateColumn:
|
case DateColumn:
|
||||||
case ProviderColumn:
|
case ProviderColumn:
|
||||||
case ImageColumn:
|
case ImageColumn:
|
||||||
|
case SideColumn:
|
||||||
|
case LoadersColumn:
|
||||||
return columnNames().at(section);
|
return columnNames().at(section);
|
||||||
default:
|
default:
|
||||||
return QVariant();
|
return QVariant();
|
||||||
@ -171,6 +192,10 @@ QVariant ModFolderModel::headerData(int section, [[maybe_unused]] Qt::Orientatio
|
|||||||
return tr("The date and time this mod was last changed (or added).");
|
return tr("The date and time this mod was last changed (or added).");
|
||||||
case ProviderColumn:
|
case ProviderColumn:
|
||||||
return tr("Where the mod was downloaded from.");
|
return tr("Where the mod was downloaded from.");
|
||||||
|
case SideColumn:
|
||||||
|
return tr("On what environment the mod is running.");
|
||||||
|
case LoadersColumn:
|
||||||
|
return tr("The mod loader.");
|
||||||
default:
|
default:
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,17 @@ class QFileSystemWatcher;
|
|||||||
class ModFolderModel : public ResourceFolderModel {
|
class ModFolderModel : public ResourceFolderModel {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
enum Columns { ActiveColumn = 0, ImageColumn, NameColumn, VersionColumn, DateColumn, ProviderColumn, NUM_COLUMNS };
|
enum Columns {
|
||||||
|
ActiveColumn = 0,
|
||||||
|
ImageColumn,
|
||||||
|
NameColumn,
|
||||||
|
VersionColumn,
|
||||||
|
DateColumn,
|
||||||
|
ProviderColumn,
|
||||||
|
SideColumn,
|
||||||
|
LoadersColumn,
|
||||||
|
NUM_COLUMNS
|
||||||
|
};
|
||||||
enum ModStatusAction { Disable, Enable, Toggle };
|
enum ModStatusAction { Disable, Enable, Toggle };
|
||||||
ModFolderModel(const QString& dir, BaseInstance* instance, bool is_indexed = false, bool create_dir = true);
|
ModFolderModel(const QString& dir, BaseInstance* instance, bool is_indexed = false, bool create_dir = true);
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ enum class ResourceType {
|
|||||||
LITEMOD, //!< The resource is a litemod
|
LITEMOD, //!< The resource is a litemod
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class SortType { NAME, DATE, VERSION, ENABLED, PACK_FORMAT, PROVIDER };
|
enum class SortType { NAME, DATE, VERSION, ENABLED, PACK_FORMAT, PROVIDER, SIDE, LOADERS };
|
||||||
|
|
||||||
enum class EnableAction { ENABLE, DISABLE, TOGGLE };
|
enum class EnableAction { ENABLE, DISABLE, TOGGLE };
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ void ModrinthCheckUpdate::executeTask()
|
|||||||
ModPlatform::ModLoaderType::Fabric, ModPlatform::ModLoaderType::Quilt };
|
ModPlatform::ModLoaderType::Fabric, ModPlatform::ModLoaderType::Quilt };
|
||||||
for (auto flag : flags) {
|
for (auto flag : flags) {
|
||||||
if (m_loaders.value().testFlag(flag)) {
|
if (m_loaders.value().testFlag(flag)) {
|
||||||
loader_filter = ModPlatform::getModLoaderString(flag);
|
loader_filter = ModPlatform::getModLoaderAsString(flag);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -186,7 +186,7 @@ void V1::updateModIndex(QDir& index_dir, Mod& mod)
|
|||||||
for (auto loader : { ModPlatform::NeoForge, ModPlatform::Forge, ModPlatform::Cauldron, ModPlatform::LiteLoader, ModPlatform::Fabric,
|
for (auto loader : { ModPlatform::NeoForge, ModPlatform::Forge, ModPlatform::Cauldron, ModPlatform::LiteLoader, ModPlatform::Fabric,
|
||||||
ModPlatform::Quilt }) {
|
ModPlatform::Quilt }) {
|
||||||
if (mod.loaders & loader) {
|
if (mod.loaders & loader) {
|
||||||
loaders.push_back(getModLoaderAsString(loader));
|
loaders.push_back(getModLoaderAsString(loader).toStdString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,7 +201,7 @@ void V1::updateModIndex(QDir& index_dir, Mod& mod)
|
|||||||
auto tbl = toml::table{ { "name", mod.name.toStdString() },
|
auto tbl = toml::table{ { "name", mod.name.toStdString() },
|
||||||
{ "filename", mod.filename.toStdString() },
|
{ "filename", mod.filename.toStdString() },
|
||||||
{ "side", sideToString(mod.side).toStdString() },
|
{ "side", sideToString(mod.side).toStdString() },
|
||||||
{ "loader", loaders },
|
{ "loaders", loaders },
|
||||||
{ "download",
|
{ "download",
|
||||||
toml::table{
|
toml::table{
|
||||||
{ "mode", mod.mode.toStdString() },
|
{ "mode", mod.mode.toStdString() },
|
||||||
|
Loading…
Reference in New Issue
Block a user