summaryrefslogtreecommitdiffstats
path: root/application/pages/modplatform/TwitchPage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'application/pages/modplatform/TwitchPage.cpp')
-rw-r--r--application/pages/modplatform/TwitchPage.cpp47
1 files changed, 39 insertions, 8 deletions
diff --git a/application/pages/modplatform/TwitchPage.cpp b/application/pages/modplatform/TwitchPage.cpp
index 42aa46be..ea0f9267 100644
--- a/application/pages/modplatform/TwitchPage.cpp
+++ b/application/pages/modplatform/TwitchPage.cpp
@@ -2,28 +2,59 @@
#include "ui_TwitchPage.h"
#include "MultiMC.h"
-#include "FolderInstanceProvider.h"
-#include "dialogs/CustomMessageBox.h"
-#include "dialogs/ProgressDialog.h"
#include "dialogs/NewInstanceDialog.h"
+#include <InstanceImportTask.h>
TwitchPage::TwitchPage(NewInstanceDialog* dialog, QWidget *parent)
- : QWidget(parent), ui(new Ui::TwitchPage), dialog(dialog)
+ : QWidget(parent), ui(new Ui::TwitchPage), dialog(dialog)
{
- ui->setupUi(this);
+ ui->setupUi(this);
+ connect(ui->checkButton, &QPushButton::clicked, this, &TwitchPage::triggerCheck);
}
TwitchPage::~TwitchPage()
{
- delete ui;
+ delete ui;
}
bool TwitchPage::shouldDisplay() const
{
- return false;
+ return true;
}
void TwitchPage::openedImpl()
{
- dialog->setSuggestedPack();
+ dialog->setSuggestedPack();
+}
+
+void TwitchPage::triggerCheck(bool)
+{
+ if(m_modIdResolver) {
+ return;
+ }
+ auto task = new Flame::UrlResolvingTask(ui->lineEdit->text());
+ connect(task, &Task::finished, this, &TwitchPage::checkDone);
+ m_modIdResolver.reset(task);
+ task->start();
+}
+
+void TwitchPage::setUrl(const QString& url)
+{
+ ui->lineEdit->setText(url);
+ triggerCheck(true);
+}
+
+void TwitchPage::checkDone()
+{
+ auto result = m_modIdResolver->getResults();
+ auto formatted = QString("Project %1, File %2").arg(result.projectId).arg(result.fileId);
+ if(result.resolved && result.type == Flame::File::Type::Modpack) {
+ ui->twitchLabel->setText(formatted);
+ QFileInfo fi(result.fileName);
+ dialog->setSuggestedPack(fi.completeBaseName(), new InstanceImportTask(result.url));
+ } else {
+ ui->twitchLabel->setPixmap(QPixmap(QString::fromUtf8(":/assets/deadglitch")));
+ dialog->setSuggestedPack();
+ }
+ m_modIdResolver.reset();
}