summaryrefslogtreecommitdiffstats
path: root/application/pages/modplatform/FTBPage.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2019-11-03 23:48:12 +0100
committerPetr Mrázek <peterix@gmail.com>2019-11-03 23:48:12 +0100
commit47ed2f48d4a118876263f37b9fe2ab8911c2a8fe (patch)
tree3caa2000d3fe9f57a82757dec2ae138e7474c499 /application/pages/modplatform/FTBPage.cpp
parent0c9340a3d2e32223a9097f95b92b11045aaec845 (diff)
downloadMultiMC-47ed2f48d4a118876263f37b9fe2ab8911c2a8fe.tar
MultiMC-47ed2f48d4a118876263f37b9fe2ab8911c2a8fe.tar.gz
MultiMC-47ed2f48d4a118876263f37b9fe2ab8911c2a8fe.tar.lz
MultiMC-47ed2f48d4a118876263f37b9fe2ab8911c2a8fe.tar.xz
MultiMC-47ed2f48d4a118876263f37b9fe2ab8911c2a8fe.zip
NOISSUE put legacy FTB support in a namespace, fix its base URL
Diffstat (limited to 'application/pages/modplatform/FTBPage.cpp')
-rw-r--r--application/pages/modplatform/FTBPage.cpp364
1 files changed, 0 insertions, 364 deletions
diff --git a/application/pages/modplatform/FTBPage.cpp b/application/pages/modplatform/FTBPage.cpp
deleted file mode 100644
index dca86efd..00000000
--- a/application/pages/modplatform/FTBPage.cpp
+++ /dev/null
@@ -1,364 +0,0 @@
-#include "FTBPage.h"
-#include "ui_FTBPage.h"
-
-#include <QInputDialog>
-
-#include "MultiMC.h"
-#include "dialogs/CustomMessageBox.h"
-#include "dialogs/NewInstanceDialog.h"
-#include "modplatform/ftb/FtbPackFetchTask.h"
-#include "modplatform/ftb/FtbPackInstallTask.h"
-#include "modplatform/ftb/FtbPrivatePackManager.h"
-#include "FtbListModel.h"
-
-FTBPage::FTBPage(NewInstanceDialog* dialog, QWidget *parent)
- : QWidget(parent), dialog(dialog), ui(new Ui::FTBPage)
-{
- ftbFetchTask.reset(new FtbPackFetchTask());
- ftbPrivatePacks.reset(new FtbPrivatePackManager());
-
- ui->setupUi(this);
-
- {
- publicFilterModel = new FtbFilterModel(this);
- publicListModel = new FtbListModel(this);
- publicFilterModel->setSourceModel(publicListModel);
-
- ui->publicPackList->setModel(publicFilterModel);
- ui->publicPackList->setSortingEnabled(true);
- ui->publicPackList->header()->hide();
- ui->publicPackList->setIndentation(0);
- ui->publicPackList->setIconSize(QSize(42, 42));
-
- for(int i = 0; i < publicFilterModel->getAvailableSortings().size(); i++)
- {
- ui->sortByBox->addItem(publicFilterModel->getAvailableSortings().keys().at(i));
- }
-
- ui->sortByBox->setCurrentText(publicFilterModel->translateCurrentSorting());
- }
-
- {
- thirdPartyFilterModel = new FtbFilterModel(this);
- thirdPartyModel = new FtbListModel(this);
- thirdPartyFilterModel->setSourceModel(thirdPartyModel);
-
- ui->thirdPartyPackList->setModel(thirdPartyFilterModel);
- ui->thirdPartyPackList->setSortingEnabled(true);
- ui->thirdPartyPackList->header()->hide();
- ui->thirdPartyPackList->setIndentation(0);
- ui->thirdPartyPackList->setIconSize(QSize(42, 42));
-
- thirdPartyFilterModel->setSorting(publicFilterModel->getCurrentSorting());
- }
-
- {
- privateFilterModel = new FtbFilterModel(this);
- privateListModel = new FtbListModel(this);
- privateFilterModel->setSourceModel(privateListModel);
-
- ui->privatePackList->setModel(privateFilterModel);
- ui->privatePackList->setSortingEnabled(true);
- ui->privatePackList->header()->hide();
- ui->privatePackList->setIndentation(0);
- ui->privatePackList->setIconSize(QSize(42, 42));
-
- privateFilterModel->setSorting(publicFilterModel->getCurrentSorting());
- }
-
- ui->versionSelectionBox->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
- ui->versionSelectionBox->view()->parentWidget()->setMaximumHeight(300);
-
- connect(ui->sortByBox, &QComboBox::currentTextChanged, this, &FTBPage::onSortingSelectionChanged);
- connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &FTBPage::onVersionSelectionItemChanged);
-
- connect(ui->publicPackList->selectionModel(), &QItemSelectionModel::currentChanged, this, &FTBPage::onPublicPackSelectionChanged);
- connect(ui->thirdPartyPackList->selectionModel(), &QItemSelectionModel::currentChanged, this, &FTBPage::onThirdPartyPackSelectionChanged);
- connect(ui->privatePackList->selectionModel(), &QItemSelectionModel::currentChanged, this, &FTBPage::onPrivatePackSelectionChanged);
-
- connect(ui->addPackBtn, &QPushButton::pressed, this, &FTBPage::onAddPackClicked);
- connect(ui->removePackBtn, &QPushButton::pressed, this, &FTBPage::onRemovePackClicked);
-
- connect(ui->tabWidget, &QTabWidget::currentChanged, this, &FTBPage::onTabChanged);
-
- // ui->modpackInfo->setOpenExternalLinks(true);
-
- ui->publicPackList->selectionModel()->reset();
- ui->thirdPartyPackList->selectionModel()->reset();
- ui->privatePackList->selectionModel()->reset();
-
- onTabChanged(ui->tabWidget->currentIndex());
-}
-
-FTBPage::~FTBPage()
-{
- delete ui;
-}
-
-bool FTBPage::shouldDisplay() const
-{
- return true;
-}
-
-void FTBPage::openedImpl()
-{
- if(!initialized)
- {
- connect(ftbFetchTask.get(), &FtbPackFetchTask::finished, this, &FTBPage::ftbPackDataDownloadSuccessfully);
- connect(ftbFetchTask.get(), &FtbPackFetchTask::failed, this, &FTBPage::ftbPackDataDownloadFailed);
-
- connect(ftbFetchTask.get(), &FtbPackFetchTask::privateFileDownloadFinished, this, &FTBPage::ftbPrivatePackDataDownloadSuccessfully);
- connect(ftbFetchTask.get(), &FtbPackFetchTask::privateFileDownloadFailed, this, &FTBPage::ftbPrivatePackDataDownloadFailed);
-
- ftbFetchTask->fetch();
- ftbPrivatePacks->load();
- ftbFetchTask->fetchPrivate(ftbPrivatePacks->getCurrentPackCodes().toList());
- initialized = true;
- }
- suggestCurrent();
-}
-
-void FTBPage::suggestCurrent()
-{
- if(isOpened)
- {
- if(!selected.broken)
- {
- dialog->setSuggestedPack(selected.name, new FtbPackInstallTask(selected, selectedVersion));
- QString editedLogoName;
- if(selected.logo.toLower().startsWith("ftb"))
- {
- editedLogoName = selected.logo;
- }
- else
- {
- editedLogoName = "ftb_" + selected.logo;
- }
-
- editedLogoName = editedLogoName.left(editedLogoName.lastIndexOf(".png"));
-
- if(selected.type == FtbPackType::Public)
- {
- publicListModel->getLogo(selected.logo, [this, editedLogoName](QString logo)
- {
- dialog->setSuggestedIconFromFile(logo, editedLogoName);
- });
- }
- else if (selected.type == FtbPackType::ThirdParty)
- {
- thirdPartyModel->getLogo(selected.logo, [this, editedLogoName](QString logo)
- {
- dialog->setSuggestedIconFromFile(logo, editedLogoName);
- });
- }
- else if (selected.type == FtbPackType::Private)
- {
- privateListModel->getLogo(selected.logo, [this, editedLogoName](QString logo)
- {
- dialog->setSuggestedIconFromFile(logo, editedLogoName);
- });
- }
- }
- else
- {
- dialog->setSuggestedPack();
- }
- }
-}
-
-void FTBPage::ftbPackDataDownloadSuccessfully(FtbModpackList publicPacks, FtbModpackList thirdPartyPacks)
-{
- publicListModel->fill(publicPacks);
- thirdPartyModel->fill(thirdPartyPacks);
-}
-
-void FTBPage::ftbPackDataDownloadFailed(QString reason)
-{
- //TODO: Display the error
-}
-
-void FTBPage::ftbPrivatePackDataDownloadSuccessfully(FtbModpack pack)
-{
- privateListModel->addPack(pack);
-}
-
-void FTBPage::ftbPrivatePackDataDownloadFailed(QString reason, QString packCode)
-{
- auto reply = QMessageBox::question(
- this,
- tr("FTB private packs"),
- tr("Failed to download pack information for code %1.\nShould it be removed now?").arg(packCode)
- );
- if(reply == QMessageBox::Yes)
- {
- ftbPrivatePacks->remove(packCode);
- }
-}
-
-void FTBPage::onPublicPackSelectionChanged(QModelIndex now, QModelIndex prev)
-{
- if(!now.isValid())
- {
- onPackSelectionChanged();
- return;
- }
- FtbModpack selectedPack = publicFilterModel->data(now, Qt::UserRole).value<FtbModpack>();
- onPackSelectionChanged(&selectedPack);
-}
-
-void FTBPage::onThirdPartyPackSelectionChanged(QModelIndex now, QModelIndex prev)
-{
- if(!now.isValid())
- {
- onPackSelectionChanged();
- return;
- }
- FtbModpack selectedPack = thirdPartyFilterModel->data(now, Qt::UserRole).value<FtbModpack>();
- onPackSelectionChanged(&selectedPack);
-}
-
-void FTBPage::onPrivatePackSelectionChanged(QModelIndex now, QModelIndex prev)
-{
- if(!now.isValid())
- {
- onPackSelectionChanged();
- return;
- }
- FtbModpack selectedPack = privateFilterModel->data(now, Qt::UserRole).value<FtbModpack>();
- onPackSelectionChanged(&selectedPack);
-}
-
-void FTBPage::onPackSelectionChanged(FtbModpack* pack)
-{
- ui->versionSelectionBox->clear();
- if(pack)
- {
- currentModpackInfo->setHtml("Pack by <b>" + pack->author + "</b>" +
- "<br>Minecraft " + pack->mcVersion + "<br>" + "<br>" + pack->description + "<ul><li>" + pack->mods.replace(";", "</li><li>")
- + "</li></ul>");
- bool currentAdded = false;
-
- for(int i = 0; i < pack->oldVersions.size(); i++)
- {
- if(pack->currentVersion == pack->oldVersions.at(i))
- {
- currentAdded = true;
- }
- ui->versionSelectionBox->addItem(pack->oldVersions.at(i));
- }
-
- if(!currentAdded)
- {
- ui->versionSelectionBox->addItem(pack->currentVersion);
- }
- selected = *pack;
- }
- else
- {
- currentModpackInfo->setHtml("");
- ui->versionSelectionBox->clear();
- if(isOpened)
- {
- dialog->setSuggestedPack();
- }
- return;
- }
- suggestCurrent();
-}
-
-void FTBPage::onVersionSelectionItemChanged(QString data)
-{
- if(data.isNull() || data.isEmpty())
- {
- selectedVersion = "";
- return;
- }
-
- selectedVersion = data;
- suggestCurrent();
-}
-
-void FTBPage::onSortingSelectionChanged(QString data)
-{
- FtbFilterModel::Sorting toSet = publicFilterModel->getAvailableSortings().value(data);
- publicFilterModel->setSorting(toSet);
- thirdPartyFilterModel->setSorting(toSet);
- privateFilterModel->setSorting(toSet);
-}
-
-void FTBPage::onTabChanged(int tab)
-{
- if(tab == 1)
- {
- currentModel = thirdPartyFilterModel;
- currentList = ui->thirdPartyPackList;
- currentModpackInfo = ui->thirdPartyPackDescription;
- }
- else if(tab == 2)
- {
- currentModel = privateFilterModel;
- currentList = ui->privatePackList;
- currentModpackInfo = ui->privatePackDescription;
- }
- else
- {
- currentModel = publicFilterModel;
- currentList = ui->publicPackList;
- currentModpackInfo = ui->publicPackDescription;
- }
-
- currentList->selectionModel()->reset();
- QModelIndex idx = currentList->currentIndex();
- if(idx.isValid())
- {
- auto pack = currentModel->data(idx, Qt::UserRole).value<FtbModpack>();
- onPackSelectionChanged(&pack);
- }
- else
- {
- onPackSelectionChanged();
- }
-}
-
-void FTBPage::onAddPackClicked()
-{
- bool ok;
- QString text = QInputDialog::getText(
- this,
- tr("Add FTB pack"),
- tr("Enter pack code:"),
- QLineEdit::Normal,
- QString(),
- &ok
- );
- if(ok && !text.isEmpty())
- {
- ftbPrivatePacks->add(text);
- ftbFetchTask->fetchPrivate({text});
- }
-}
-
-void FTBPage::onRemovePackClicked()
-{
- auto index = ui->privatePackList->currentIndex();
- if(!index.isValid())
- {
- return;
- }
- auto row = index.row();
- FtbModpack pack = privateListModel->at(row);
- auto answer = QMessageBox::question(
- this,
- tr("Remove pack"),
- tr("Are you sure you want to remove pack %1?").arg(pack.name),
- QMessageBox::Yes | QMessageBox::No
- );
- if(answer != QMessageBox::Yes)
- {
- return;
- }
-
- ftbPrivatePacks->remove(pack.packCode);
- privateListModel->remove(row);
- onPackSelectionChanged();
-}