summaryrefslogtreecommitdiffstats
path: root/application/pages
diff options
context:
space:
mode:
Diffstat (limited to 'application/pages')
-rw-r--r--application/pages/VersionPage.cpp130
-rw-r--r--application/pages/global/PackagesPage.cpp (renamed from application/pages/global/WonkoPage.cpp)117
-rw-r--r--application/pages/global/PackagesPage.h (renamed from application/pages/global/WonkoPage.h)14
-rw-r--r--application/pages/global/PackagesPage.ui (renamed from application/pages/global/WonkoPage.ui)12
4 files changed, 131 insertions, 142 deletions
diff --git a/application/pages/VersionPage.cpp b/application/pages/VersionPage.cpp
index 8decc649..8e8c3d5f 100644
--- a/application/pages/VersionPage.cpp
+++ b/application/pages/VersionPage.cpp
@@ -36,19 +36,16 @@
#include <QUrl>
#include "minecraft/MinecraftProfile.h"
-#include "minecraft/forge/ForgeVersionList.h"
-#include "minecraft/forge/ForgeInstaller.h"
-#include "minecraft/liteloader/LiteLoaderVersionList.h"
-#include "minecraft/liteloader/LiteLoaderInstaller.h"
#include "minecraft/auth/MojangAccountList.h"
#include "minecraft/Mod.h"
-#include "minecraft/MinecraftVersion.h"
-#include "minecraft/MinecraftVersionList.h"
#include "icons/IconList.h"
#include "Exception.h"
#include "MultiMC.h"
+#include <meta/Index.h>
+#include <meta/VersionList.h>
+
class IconProxy : public QIdentityProxyModel
{
Q_OBJECT
@@ -155,14 +152,14 @@ void VersionPage::packageCurrent(const QModelIndex &current, const QModelIndex &
auto severity = patch->getProblemSeverity();
switch(severity)
{
- case PROBLEM_WARNING:
+ case ProblemSeverity::Warning:
ui->frame->setModText(tr("%1 possibly has issues.").arg(patch->getName()));
break;
- case PROBLEM_ERROR:
+ case ProblemSeverity::Error:
ui->frame->setModText(tr("%1 has issues!").arg(patch->getName()));
break;
default:
- case PROBLEM_NONE:
+ case ProblemSeverity::None:
ui->frame->clear();
return;
}
@@ -171,11 +168,11 @@ void VersionPage::packageCurrent(const QModelIndex &current, const QModelIndex &
QString problemOut;
for (auto &problem: problems)
{
- if(problem.getSeverity() == PROBLEM_ERROR)
+ if(problem.getSeverity() == ProblemSeverity::Error)
{
problemOut += tr("Error: ");
}
- else if(problem.getSeverity() == PROBLEM_WARNING)
+ else if(problem.getSeverity() == ProblemSeverity::Warning)
{
problemOut += tr("Warning: ");
}
@@ -326,8 +323,20 @@ void VersionPage::on_moveDownBtn_clicked()
void VersionPage::on_changeVersionBtn_clicked()
{
- VersionSelectDialog vselect(m_inst->versionList().get(), tr("Change Minecraft version"),
- this);
+ auto versionRow = currentRow();
+ if(versionRow == -1)
+ {
+ return;
+ }
+ auto patch = m_profile->versionPatch(versionRow);
+ auto name = patch->getName();
+ auto list = patch->getVersionList();
+ if(!list)
+ {
+ return;
+ }
+ auto uid = list->uid();
+ VersionSelectDialog vselect(list.get(), tr("Change %1 version").arg(name), this);
if (!vselect.exec() || !vselect.selectedVersion())
return;
@@ -341,21 +350,25 @@ void VersionPage::on_changeVersionBtn_clicked()
return;
}
- if (!m_profile->isVanilla())
+ qDebug() << "Change" << uid << "to" << vselect.selectedVersion()->descriptor();
+ if(uid == "net.minecraft")
{
- auto result = CustomMessageBox::selectable(
- this, tr("Are you sure?"),
- tr("This will remove any library/version customization you did previously. "
- "This includes things like Forge install and similar."),
- QMessageBox::Warning, QMessageBox::Ok | QMessageBox::Abort,
- QMessageBox::Abort)->exec();
-
- if (result != QMessageBox::Ok)
- return;
- m_profile->revertToVanilla();
- reloadMinecraftProfile();
+ if (!m_profile->isVanilla())
+ {
+ auto result = CustomMessageBox::selectable(
+ this, tr("Are you sure?"),
+ tr("This will remove any library/version customization you did previously. "
+ "This includes things like Forge install and similar."),
+ QMessageBox::Warning, QMessageBox::Ok | QMessageBox::Abort,
+ QMessageBox::Abort)->exec();
+
+ if (result != QMessageBox::Ok)
+ return;
+ m_profile->revertToVanilla();
+ reloadMinecraftProfile();
+ }
}
- m_inst->setIntendedVersionId(vselect.selectedVersion()->descriptor());
+ m_inst->setComponentVersion(uid, vselect.selectedVersion()->descriptor());
doUpdate();
m_container->refreshContainer();
}
@@ -377,16 +390,21 @@ int VersionPage::doUpdate()
void VersionPage::on_forgeBtn_clicked()
{
- VersionSelectDialog vselect(MMC->forgelist().get(), tr("Select Forge version"), this);
- vselect.setExactFilter(BaseVersionList::ParentGameVersionRole, m_inst->currentVersionId());
- vselect.setEmptyString(tr("No Forge versions are currently available for Minecraft ") +
- m_inst->currentVersionId());
+ auto vlist = ENV.metadataIndex()->get("net.minecraftforge");
+ if(!vlist)
+ {
+ return;
+ }
+ VersionSelectDialog vselect(vlist.get(), tr("Select Forge version"), this);
+ vselect.setExactFilter(BaseVersionList::ParentVersionRole, m_inst->currentVersionId());
+ vselect.setEmptyString(tr("No Forge versions are currently available for Minecraft ") + m_inst->currentVersionId());
vselect.setEmptyErrorString(tr("Couldn't load or download the Forge version lists!"));
if (vselect.exec() && vselect.selectedVersion())
{
- ProgressDialog dialog(this);
- dialog.execWithTask(
- ForgeInstaller().createInstallTask(m_inst, vselect.selectedVersion(), this));
+ auto vsn = vselect.selectedVersion();
+ m_inst->setComponentVersion("net.minecraftforge", vsn->descriptor());
+ m_profile->reload();
+ // m_profile->installVersion();
preselect(m_profile->rowCount(QModelIndex())-1);
m_container->refreshContainer();
}
@@ -394,17 +412,21 @@ void VersionPage::on_forgeBtn_clicked()
void VersionPage::on_liteloaderBtn_clicked()
{
- VersionSelectDialog vselect(MMC->liteloaderlist().get(), tr("Select LiteLoader version"),
- this);
- vselect.setExactFilter(BaseVersionList::ParentGameVersionRole, m_inst->currentVersionId());
- vselect.setEmptyString(tr("No LiteLoader versions are currently available for Minecraft ") +
- m_inst->currentVersionId());
+ auto vlist = ENV.metadataIndex()->get("com.mumfrey.liteloader");
+ if(!vlist)
+ {
+ return;
+ }
+ VersionSelectDialog vselect(vlist.get(), tr("Select LiteLoader version"), this);
+ vselect.setExactFilter(BaseVersionList::ParentVersionRole, m_inst->currentVersionId());
+ vselect.setEmptyString(tr("No LiteLoader versions are currently available for Minecraft ") + m_inst->currentVersionId());
vselect.setEmptyErrorString(tr("Couldn't load or download the LiteLoader version lists!"));
if (vselect.exec() && vselect.selectedVersion())
{
- ProgressDialog dialog(this);
- dialog.execWithTask(
- LiteLoaderInstaller().createInstallTask(m_inst, vselect.selectedVersion(), this));
+ auto vsn = vselect.selectedVersion();
+ m_inst->setComponentVersion("com.mumfrey.liteloader", vsn->descriptor());
+ m_profile->reload();
+ // m_profile->installVersion(vselect.selectedVersion());
preselect(m_profile->rowCount(QModelIndex())-1);
m_container->refreshContainer();
}
@@ -456,8 +478,9 @@ void VersionPage::updateButtons(int row)
ui->moveDownBtn->setEnabled(patch->isMoveable());
ui->moveUpBtn->setEnabled(patch->isMoveable());
ui->changeVersionBtn->setEnabled(patch->isVersionChangeable());
- ui->editBtn->setEnabled(patch->isEditable());
- ui->customizeBtn->setEnabled(patch->isCustomizable());
+ ui->editBtn->setEnabled(patch->isCustom());
+ // FIXME: temporarily disabled, bring it back when the new format is stable and ready to replace the 'OneSix' one...
+ ui->customizeBtn->setEnabled(false); // patch->isCustomizable()
ui->revertBtn->setEnabled(patch->isRevertible());
}
}
@@ -489,20 +512,18 @@ int VersionPage::currentRow()
void VersionPage::on_customizeBtn_clicked()
{
+ // FIXME: temporarily disabled, bring it back when the new format is stable and ready to replace the 'OneSix' one...
+ return;
auto version = currentRow();
if(version == -1)
{
return;
}
- //HACK HACK remove, this is dumb
auto patch = m_profile->versionPatch(version);
- auto mc = std::dynamic_pointer_cast<MinecraftVersion>(patch);
- if(mc && mc->needsUpdate())
+ if(!patch->getVersionFile())
{
- if(!doUpdate())
- {
- return;
- }
+ // TODO: wait for the update task to finish here...
+ return;
}
if(!m_profile->customize(version))
{
@@ -535,15 +556,6 @@ void VersionPage::on_revertBtn_clicked()
{
return;
}
- auto mcraw = MMC->minecraftlist()->findVersion(m_inst->intendedVersionId());
- auto mc = std::dynamic_pointer_cast<MinecraftVersion>(mcraw);
- if(mc && mc->needsUpdate())
- {
- if(!doUpdate())
- {
- return;
- }
- }
if(!m_profile->revertToBase(version))
{
// TODO: some error box here
diff --git a/application/pages/global/WonkoPage.cpp b/application/pages/global/PackagesPage.cpp
index 1a72b18d..e15ddbab 100644
--- a/application/pages/global/WonkoPage.cpp
+++ b/application/pages/global/PackagesPage.cpp
@@ -13,8 +13,8 @@
* limitations under the License.
*/
-#include "WonkoPage.h"
-#include "ui_WonkoPage.h"
+#include "PackagesPage.h"
+#include "ui_PackagesPage.h"
#include <QDateTime>
#include <QSortFilterProxyModel>
@@ -23,33 +23,33 @@
#include "dialogs/ProgressDialog.h"
#include "VersionProxyModel.h"
-#include "wonko/WonkoIndex.h"
-#include "wonko/WonkoVersionList.h"
-#include "wonko/WonkoVersion.h"
+#include "meta/Index.h"
+#include "meta/VersionList.h"
+#include "meta/Version.h"
#include "Env.h"
#include "MultiMC.h"
-static QString formatRequires(const WonkoVersionPtr &version)
+using namespace Meta;
+
+static QString formatRequires(const VersionPtr &version)
{
QStringList lines;
- for (const WonkoReference &ref : version->requires())
+ auto & reqs = version->requires();
+ auto iter = reqs.begin();
+ while (iter != reqs.end())
{
- const QString readable = ENV.wonkoIndex()->hasUid(ref.uid()) ? ENV.wonkoIndex()->getList(ref.uid())->humanReadable() : ref.uid();
- if (ref.version().isEmpty())
- {
- lines.append(readable);
- }
- else
- {
- lines.append(QString("%1 (%2)").arg(readable, ref.version()));
- }
+ auto &uid = iter.key();
+ auto &version = iter.value();
+ const QString readable = ENV.metadataIndex()->hasUid(uid) ? ENV.metadataIndex()->get(uid)->humanReadable() : uid;
+ lines.append(QString("%1 (%2)").arg(readable, version));
+ iter++;
}
return lines.join('\n');
}
-WonkoPage::WonkoPage(QWidget *parent) :
+PackagesPage::PackagesPage(QWidget *parent) :
QWidget(parent),
- ui(new Ui::WonkoPage)
+ ui(new Ui::PackagesPage)
{
ui->setupUi(this);
ui->tabWidget->tabBar()->hide();
@@ -61,11 +61,11 @@ WonkoPage::WonkoPage(QWidget *parent) :
m_fileProxy->setFilterRole(Qt::DisplayRole);
m_fileProxy->setFilterKeyColumn(0);
m_fileProxy->sort(0);
- m_fileProxy->setSourceModel(ENV.wonkoIndex().get());
+ m_fileProxy->setSourceModel(ENV.metadataIndex().get());
ui->indexView->setModel(m_fileProxy);
m_filterProxy = new QSortFilterProxyModel(this);
- m_filterProxy->setSortRole(WonkoVersionList::SortRole);
+ m_filterProxy->setSortRole(VersionList::SortRole);
m_filterProxy->setFilterCaseSensitivity(Qt::CaseInsensitive);
m_filterProxy->setFilterRole(Qt::DisplayRole);
m_filterProxy->setFilterKeyColumn(0);
@@ -75,48 +75,48 @@ WonkoPage::WonkoPage(QWidget *parent) :
m_versionProxy = new VersionProxyModel(this);
m_filterProxy->setSourceModel(m_versionProxy);
- connect(ui->indexView->selectionModel(), &QItemSelectionModel::currentChanged, this, &WonkoPage::updateCurrentVersionList);
- connect(ui->versionsView->selectionModel(), &QItemSelectionModel::currentChanged, this, &WonkoPage::updateVersion);
- connect(m_filterProxy, &QSortFilterProxyModel::dataChanged, this, &WonkoPage::versionListDataChanged);
+ connect(ui->indexView->selectionModel(), &QItemSelectionModel::currentChanged, this, &PackagesPage::updateCurrentVersionList);
+ connect(ui->versionsView->selectionModel(), &QItemSelectionModel::currentChanged, this, &PackagesPage::updateVersion);
+ connect(m_filterProxy, &QSortFilterProxyModel::dataChanged, this, &PackagesPage::versionListDataChanged);
updateCurrentVersionList(QModelIndex());
updateVersion();
}
-WonkoPage::~WonkoPage()
+PackagesPage::~PackagesPage()
{
delete ui;
}
-QIcon WonkoPage::icon() const
+QIcon PackagesPage::icon() const
{
- return MMC->getThemedIcon("looney");
+ return MMC->getThemedIcon("packages");
}
-void WonkoPage::on_refreshIndexBtn_clicked()
+void PackagesPage::on_refreshIndexBtn_clicked()
{
- ProgressDialog(this).execWithTask(ENV.wonkoIndex()->remoteUpdateTask());
+ ENV.metadataIndex()->load();
}
-void WonkoPage::on_refreshFileBtn_clicked()
+void PackagesPage::on_refreshFileBtn_clicked()
{
- WonkoVersionListPtr list = ui->indexView->currentIndex().data(WonkoIndex::ListPtrRole).value<WonkoVersionListPtr>();
+ VersionListPtr list = ui->indexView->currentIndex().data(Index::ListPtrRole).value<VersionListPtr>();
if (!list)
{
return;
}
- ProgressDialog(this).execWithTask(list->remoteUpdateTask());
+ list->load();
}
-void WonkoPage::on_refreshVersionBtn_clicked()
+void PackagesPage::on_refreshVersionBtn_clicked()
{
- WonkoVersionPtr version = ui->versionsView->currentIndex().data(WonkoVersionList::WonkoVersionPtrRole).value<WonkoVersionPtr>();
+ VersionPtr version = ui->versionsView->currentIndex().data(VersionList::VersionPtrRole).value<VersionPtr>();
if (!version)
{
return;
}
- ProgressDialog(this).execWithTask(version->remoteUpdateTask());
+ version->load();
}
-void WonkoPage::on_fileSearchEdit_textChanged(const QString &search)
+void PackagesPage::on_fileSearchEdit_textChanged(const QString &search)
{
if (search.isEmpty())
{
@@ -129,7 +129,7 @@ void WonkoPage::on_fileSearchEdit_textChanged(const QString &search)
m_fileProxy->setFilterRegExp(".*" + parts.join(".*") + ".*");
}
}
-void WonkoPage::on_versionSearchEdit_textChanged(const QString &search)
+void PackagesPage::on_versionSearchEdit_textChanged(const QString &search)
{
if (search.isEmpty())
{
@@ -143,11 +143,11 @@ void WonkoPage::on_versionSearchEdit_textChanged(const QString &search)
}
}
-void WonkoPage::updateCurrentVersionList(const QModelIndex &index)
+void PackagesPage::updateCurrentVersionList(const QModelIndex &index)
{
if (index.isValid())
{
- WonkoVersionListPtr list = index.data(WonkoIndex::ListPtrRole).value<WonkoVersionListPtr>();
+ VersionListPtr list = index.data(Index::ListPtrRole).value<VersionListPtr>();
ui->versionsBox->setEnabled(true);
ui->refreshFileBtn->setEnabled(true);
ui->fileUidLabel->setEnabled(true);
@@ -156,19 +156,7 @@ void WonkoPage::updateCurrentVersionList(const QModelIndex &index)
ui->fileName->setText(list->name());
m_versionProxy->setSourceModel(list.get());
ui->refreshFileBtn->setText(tr("Refresh %1").arg(list->humanReadable()));
-
- if (!list->isLocalLoaded())
- {
- std::unique_ptr<Task> task = list->localUpdateTask();
- connect(task.get(), &Task::finished, this, [this, list]()
- {
- if (list->count() == 0 && !list->isRemoteLoaded())
- {
- ProgressDialog(this).execWithTask(list->remoteUpdateTask());
- }
- });
- ProgressDialog(this).execWithTask(task);
- }
+ list->load();
}
else
{
@@ -179,11 +167,11 @@ void WonkoPage::updateCurrentVersionList(const QModelIndex &index)
ui->fileNameLabel->setEnabled(false);
ui->fileName->clear();
m_versionProxy->setSourceModel(nullptr);
- ui->refreshFileBtn->setText(tr("Refresh ___"));
+ ui->refreshFileBtn->setText(tr("Refresh"));
}
}
-void WonkoPage::versionListDataChanged(const QModelIndex &tl, const QModelIndex &br)
+void PackagesPage::versionListDataChanged(const QModelIndex &tl, const QModelIndex &br)
{
if (QItemSelection(tl, br).contains(ui->versionsView->currentIndex()))
{
@@ -191,10 +179,10 @@ void WonkoPage::versionListDataChanged(const QModelIndex &tl, const QModelIndex
}
}
-void WonkoPage::updateVersion()
+void PackagesPage::updateVersion()
{
- WonkoVersionPtr version = std::dynamic_pointer_cast<WonkoVersion>(
- ui->versionsView->currentIndex().data(WonkoVersionList::VersionPointerRole).value<BaseVersionPtr>());
+ VersionPtr version = std::dynamic_pointer_cast<Version>(
+ ui->versionsView->currentIndex().data(VersionList::VersionPointerRole).value<BaseVersionPtr>());
if (version)
{
ui->refreshVersionBtn->setEnabled(true);
@@ -219,22 +207,11 @@ void WonkoPage::updateVersion()
ui->versionType->clear();
ui->versionRequiresLabel->setEnabled(false);
ui->versionRequires->clear();
- ui->refreshVersionBtn->setText(tr("Refresh ___"));
+ ui->refreshVersionBtn->setText(tr("Refresh"));
}
}
-void WonkoPage::opened()
+void PackagesPage::opened()
{
- if (!ENV.wonkoIndex()->isLocalLoaded())
- {
- std::unique_ptr<Task> task = ENV.wonkoIndex()->localUpdateTask();
- connect(task.get(), &Task::finished, this, [this]()
- {
- if (!ENV.wonkoIndex()->isRemoteLoaded())
- {
- ProgressDialog(this).execWithTask(ENV.wonkoIndex()->remoteUpdateTask());
- }
- });
- ProgressDialog(this).execWithTask(task);
- }
+ ENV.metadataIndex()->load();
}
diff --git a/application/pages/global/WonkoPage.h b/application/pages/global/PackagesPage.h
index 1d576c15..80c2886d 100644
--- a/application/pages/global/WonkoPage.h
+++ b/application/pages/global/PackagesPage.h
@@ -20,21 +20,21 @@
#include "pages/BasePage.h"
namespace Ui {
-class WonkoPage;
+class PackagesPage;
}
class QSortFilterProxyModel;
class VersionProxyModel;
-class WonkoPage : public QWidget, public BasePage
+class PackagesPage : public QWidget, public BasePage
{
Q_OBJECT
public:
- explicit WonkoPage(QWidget *parent = 0);
- ~WonkoPage();
+ explicit PackagesPage(QWidget *parent = 0);
+ ~PackagesPage();
- QString id() const override { return "wonko-global"; }
- QString displayName() const override { return tr("Wonko"); }
+ QString id() const override { return "packages-global"; }
+ QString displayName() const override { return tr("Packages"); }
QIcon icon() const override;
void opened() override;
@@ -48,7 +48,7 @@ private slots:
void versionListDataChanged(const QModelIndex &tl, const QModelIndex &br);
private:
- Ui::WonkoPage *ui;
+ Ui::PackagesPage *ui;
QSortFilterProxyModel *m_fileProxy;
QSortFilterProxyModel *m_filterProxy;
VersionProxyModel *m_versionProxy;
diff --git a/application/pages/global/WonkoPage.ui b/application/pages/global/PackagesPage.ui
index 2d14ceca..158bf1b4 100644
--- a/application/pages/global/WonkoPage.ui
+++ b/application/pages/global/PackagesPage.ui
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
- <class>WonkoPage</class>
- <widget class="QWidget" name="WonkoPage">
+ <class>PackagesPage</class>
+ <widget class="QWidget" name="PackagesPage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
- <width>640</width>
- <height>480</height>
+ <width>636</width>
+ <height>621</height>
</rect>
</property>
<property name="windowTitle">
@@ -67,7 +67,7 @@
<item>
<widget class="QPushButton" name="refreshVersionBtn">
<property name="text">
- <string>Refresh ___</string>
+ <string>Refresh</string>
</property>
</widget>
</item>
@@ -180,7 +180,7 @@
<item>
<widget class="QPushButton" name="refreshFileBtn">
<property name="text">
- <string>Refresh ___</string>
+ <string>Refresh</string>
</property>
</widget>
</item>