From bbd523acb8bf846d27a7859d1d79f28ea92de245 Mon Sep 17 00:00:00 2001 From: Janrupf Date: Sun, 1 Apr 2018 20:24:28 +0200 Subject: NOISSUE Added FTB Pack logos to chooser and fixed some missing includes --- application/pages/modplatform/FTBPage.cpp | 81 +++++++++++++++++++------------ application/pages/modplatform/FTBPage.h | 24 ++++++--- application/pages/modplatform/FTBPage.ui | 79 +++++++++++++++++++++++++----- 3 files changed, 133 insertions(+), 51 deletions(-) (limited to 'application/pages') diff --git a/application/pages/modplatform/FTBPage.cpp b/application/pages/modplatform/FTBPage.cpp index 26b1e30b..3b808799 100644 --- a/application/pages/modplatform/FTBPage.cpp +++ b/application/pages/modplatform/FTBPage.cpp @@ -5,41 +5,53 @@ #include "FolderInstanceProvider.h" #include "dialogs/CustomMessageBox.h" #include "dialogs/NewInstanceDialog.h" -#include "modplatform/ftb/FtbPackDownloader.h" +#include "modplatform/ftb/FtbPackFetchTask.h" #include "modplatform/ftb/FtbPackInstallTask.h" #include FTBPage::FTBPage(NewInstanceDialog* dialog, QWidget *parent) : QWidget(parent), dialog(dialog), ui(new Ui::FTBPage) { + ftbFetchTask = new FtbPackFetchTask(); + ui->setupUi(this); ui->tabWidget->tabBar()->hide(); - ftbPackDownloader = new FtbPackDownloader(); - connect(ftbPackDownloader, &FtbPackDownloader::ready, this, &FTBPage::ftbPackDataDownloadSuccessfully); - connect(ftbPackDownloader, &FtbPackDownloader::packFetchFailed, this, &FTBPage::ftbPackDataDownloadFailed); + { + publicFilterModel = new FtbFilterModel(this); + publicListModel = new FtbListModel(this); + publicFilterModel->setSourceModel(publicListModel); - filterModel = new FtbFilterModel(this); - listModel = new FtbListModel(this); - filterModel->setSourceModel(listModel); + ui->publicPackList->setModel(publicFilterModel); + ui->publicPackList->setSortingEnabled(true); + ui->publicPackList->header()->hide(); + ui->publicPackList->setIndentation(0); - ui->packList->setModel(filterModel); - ui->packList->setSortingEnabled(true); - ui->packList->header()->hide(); - ui->packList->setIndentation(0); + for(int i = 0; i < publicFilterModel->getAvailableSortings().size(); i++) + { + ui->sortByBox->addItem(publicFilterModel->getAvailableSortings().keys().at(i)); + } - filterModel->setSorting(FtbFilterModel::Sorting::ByName); + ui->sortByBox->setCurrentText(publicFilterModel->translateCurrentSorting()); + } - for(int i = 0; i < filterModel->getAvailableSortings().size(); i++) { - ui->sortByBox->addItem(filterModel->getAvailableSortings().keys().at(i)); + 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); + thirdPartyFilterModel->setSorting(publicFilterModel->getCurrentSorting()); } - ui->sortByBox->setCurrentText(filterModel->getAvailableSortings().key(filterModel->getCurrentSorting())); - connect(ui->sortByBox, &QComboBox::currentTextChanged, this, &FTBPage::onSortingSelectionChanged); connect(ui->packVersionSelection, &QComboBox::currentTextChanged, this, &FTBPage::onVersionSelectionItemChanged); - connect(ui->packList->selectionModel(), &QItemSelectionModel::currentChanged, this, &FTBPage::onPackSelectionChanged); + + connect(ui->publicPackList->selectionModel(), &QItemSelectionModel::currentChanged, this, &FTBPage::onPublicPackSelectionChanged); + connect(ui->thirdPartyPackList->selectionModel(), &QItemSelectionModel::currentChanged, this, &FTBPage::onThirdPartyPackSelectionChanged); ui->modpackInfo->setOpenExternalLinks(true); } @@ -47,9 +59,8 @@ FTBPage::FTBPage(NewInstanceDialog* dialog, QWidget *parent) FTBPage::~FTBPage() { delete ui; - if(ftbPackDownloader) - { - ftbPackDownloader->deleteLater(); + if(ftbFetchTask) { + ftbFetchTask->deleteLater(); } } @@ -62,7 +73,9 @@ void FTBPage::openedImpl() { if(!initialized) { - ftbPackDownloader->fetchModpacks(false); + connect(ftbFetchTask, &FtbPackFetchTask::finished, this, &FTBPage::ftbPackDataDownloadSuccessfully); + connect(ftbFetchTask, &FtbPackFetchTask::failed, this, &FTBPage::ftbPackDataDownloadFailed); + ftbFetchTask->fetch(); initialized = true; } suggestCurrent(); @@ -83,25 +96,31 @@ void FTBPage::suggestCurrent() } } -FtbPackDownloader *FTBPage::getFtbPackDownloader() +void FTBPage::ftbPackDataDownloadSuccessfully(FtbModpackList publicPacks, FtbModpackList thirdPartyPacks) +{ + publicListModel->fill(publicPacks); + thirdPartyModel->fill(thirdPartyPacks); +} + +void FTBPage::ftbPackDataDownloadFailed(QString reason) { - return ftbPackDownloader; + //TODO: Display the error } -void FTBPage::ftbPackDataDownloadSuccessfully() +void FTBPage::onPublicPackSelectionChanged(QModelIndex first, QModelIndex second) { - listModel->fill(ftbPackDownloader->getModpacks()); + onPackSelectionChanged(first, second, publicFilterModel); } -void FTBPage::ftbPackDataDownloadFailed() +void FTBPage::onThirdPartyPackSelectionChanged(QModelIndex first, QModelIndex second) { - qDebug() << "Stuff went missing while grabbing FTB pack list or something..."; + onPackSelectionChanged(first, second, thirdPartyFilterModel); } -void FTBPage::onPackSelectionChanged(QModelIndex now, QModelIndex prev) +void FTBPage::onPackSelectionChanged(QModelIndex now, QModelIndex prev, FtbFilterModel *model) { ui->packVersionSelection->clear(); - FtbModpack selectedPack = filterModel->data(now, Qt::UserRole).value(); + FtbModpack selectedPack = model->data(now, Qt::UserRole).value(); ui->modpackInfo->setHtml("Pack by " + selectedPack.author + "" + "
Minecraft " + selectedPack.mcVersion + "
" "
" + selectedPack.description + "
  • " + selectedPack.mods.replace(";", "
  • ") + "
"); @@ -149,5 +168,7 @@ QString FTBPage::getSelectedVersion() void FTBPage::onSortingSelectionChanged(QString data) { - filterModel->setSorting(filterModel->getAvailableSortings().value(data)); + FtbFilterModel::Sorting toSet = publicFilterModel->getAvailableSortings().value(data); + publicFilterModel->setSorting(toSet); + thirdPartyFilterModel->setSorting(toSet); } diff --git a/application/pages/modplatform/FTBPage.h b/application/pages/modplatform/FTBPage.h index f7d6ca8b..ba8dd299 100644 --- a/application/pages/modplatform/FTBPage.h +++ b/application/pages/modplatform/FTBPage.h @@ -21,6 +21,7 @@ #include #include "tasks/Task.h" #include "modplatform/ftb/PackHelpers.h" +#include "modplatform/ftb/FtbPackFetchTask.h" namespace Ui { @@ -29,7 +30,6 @@ class FTBPage; class FtbListModel; class FtbFilterModel; -class FtbPackDownloader; class NewInstanceDialog; class FTBPage : public QWidget, public BasePage @@ -58,28 +58,36 @@ public: bool shouldDisplay() const override; void openedImpl() override; - FtbPackDownloader* getFtbPackDownloader(); FtbModpack getSelectedModpack(); QString getSelectedVersion(); private: void suggestCurrent(); + void onPackSelectionChanged(QModelIndex first, QModelIndex second, FtbFilterModel *model); private slots: - void ftbPackDataDownloadSuccessfully(); - void ftbPackDataDownloadFailed(); + void ftbPackDataDownloadSuccessfully(FtbModpackList publicPacks, FtbModpackList thirdPartyPacks); + void ftbPackDataDownloadFailed(QString reason); + void onSortingSelectionChanged(QString data); void onVersionSelectionItemChanged(QString data); - void onPackSelectionChanged(QModelIndex first, QModelIndex second); + + void onPublicPackSelectionChanged(QModelIndex first, QModelIndex second); + void onThirdPartyPackSelectionChanged(QModelIndex first, QModelIndex second); private: bool initialized = false; - FtbPackDownloader* ftbPackDownloader = nullptr; FtbModpack selectedPack; FtbModpack selected; QString selectedVersion; - FtbListModel* listModel = nullptr; - FtbFilterModel* filterModel = nullptr; + + FtbListModel* publicListModel = nullptr; + FtbFilterModel* publicFilterModel = nullptr; + + FtbListModel *thirdPartyModel = nullptr; + FtbFilterModel *thirdPartyFilterModel = nullptr; + + FtbPackFetchTask *ftbFetchTask; NewInstanceDialog* dialog = nullptr; Ui::FTBPage *ui = nullptr; diff --git a/application/pages/modplatform/FTBPage.ui b/application/pages/modplatform/FTBPage.ui index a64c9606..ee91f1f5 100644 --- a/application/pages/modplatform/FTBPage.ui +++ b/application/pages/modplatform/FTBPage.ui @@ -10,7 +10,7 @@ 602 - + 0 @@ -23,7 +23,7 @@ 0 - + 0 @@ -32,17 +32,15 @@ - - - - - - - - - + + + + + Qt::ScrollBarAsNeeded + + - + Version selected: @@ -52,9 +50,64 @@ - + + + + + + + + + 0 + 0 + + + + QTabWidget::Rounded + + + 0 + + + + Public Packs + + + + + 0 + 0 + 221 + 491 + + + + Qt::ScrollBarAlwaysOn + + + + + + 3rd Party Packs + + + + + 0 + 0 + 221 + 491 + + + + Qt::ScrollBarAlwaysOn + + + + + -- cgit v1.2.3