diff options
Diffstat (limited to 'application/pages')
-rw-r--r-- | application/pages/VersionPage.cpp | 130 | ||||
-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 ¤t, 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 ¤t, 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> |