diff options
Diffstat (limited to 'application/pages/modplatform')
-rw-r--r-- | application/pages/modplatform/ImportPage.cpp | 5 | ||||
-rw-r--r-- | application/pages/modplatform/TwitchPage.cpp | 23 | ||||
-rw-r--r-- | application/pages/modplatform/TwitchPage.h | 6 | ||||
-rw-r--r-- | application/pages/modplatform/TwitchPage.ui | 33 |
4 files changed, 63 insertions, 4 deletions
diff --git a/application/pages/modplatform/ImportPage.cpp b/application/pages/modplatform/ImportPage.cpp index 3cd7c2cf..3910dfda 100644 --- a/application/pages/modplatform/ImportPage.cpp +++ b/application/pages/modplatform/ImportPage.cpp @@ -75,6 +75,11 @@ void ImportPage::updateState() } else { + if(input.endsWith("?client=y")) { + input.chop(9); + input.append("/file"); + url = QUrl::fromUserInput(input); + } // hook, line and sinker. QFileInfo fi(url.fileName()); dialog->setSuggestedPack(fi.completeBaseName(), new InstanceImportTask(url)); diff --git a/application/pages/modplatform/TwitchPage.cpp b/application/pages/modplatform/TwitchPage.cpp index a984c01c..2f138b94 100644 --- a/application/pages/modplatform/TwitchPage.cpp +++ b/application/pages/modplatform/TwitchPage.cpp @@ -8,6 +8,7 @@ TwitchPage::TwitchPage(NewInstanceDialog* dialog, QWidget *parent) : QWidget(parent), ui(new Ui::TwitchPage), dialog(dialog) { ui->setupUi(this); + connect(ui->checkButton, &QPushButton::clicked, this, &TwitchPage::triggerCheck); } TwitchPage::~TwitchPage() @@ -17,10 +18,30 @@ TwitchPage::~TwitchPage() bool TwitchPage::shouldDisplay() const { - return false; + return true; } void TwitchPage::openedImpl() { dialog->setSuggestedPack(); } + +void TwitchPage::triggerCheck(bool) +{ + if(m_modIdResolver) { + qDebug() << "Click!"; + return; + } + auto task = new Flame::UrlResolvingTask(ui->lineEdit->text()); + connect(task, &Task::finished, this, &TwitchPage::checkDone); + m_modIdResolver.reset(task); + task->start(); +} + +void TwitchPage::checkDone() +{ + auto result = m_modIdResolver->getResults(); + auto formatted = QString("Project %1, File %2").arg(result.projectId).arg(result.fileId); + ui->twitchLabel->setText(formatted); + m_modIdResolver.reset(); +} diff --git a/application/pages/modplatform/TwitchPage.h b/application/pages/modplatform/TwitchPage.h index 5d959962..6d5146cc 100644 --- a/application/pages/modplatform/TwitchPage.h +++ b/application/pages/modplatform/TwitchPage.h @@ -20,6 +20,7 @@ #include "pages/BasePage.h" #include <MultiMC.h> #include "tasks/Task.h" +#include "modplatform/flame/UrlResolvingTask.h" namespace Ui { @@ -55,7 +56,12 @@ public: void openedImpl() override; +private slots: + void triggerCheck(bool checked); + void checkDone(); + private: Ui::TwitchPage *ui = nullptr; NewInstanceDialog* dialog = nullptr; + shared_qobject_ptr<Flame::UrlResolvingTask> m_modIdResolver; }; diff --git a/application/pages/modplatform/TwitchPage.ui b/application/pages/modplatform/TwitchPage.ui index 0930f541..0db2484d 100644 --- a/application/pages/modplatform/TwitchPage.ui +++ b/application/pages/modplatform/TwitchPage.ui @@ -10,9 +10,25 @@ <height>405</height> </rect> </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="label_3"> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="1"> + <widget class="QLineEdit" name="lineEdit"/> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Twitch URL:</string> + </property> + </widget> + </item> + <item row="1" column="0" colspan="3"> + <widget class="QLabel" name="twitchLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="font"> <font> <pointsize>40</pointsize> @@ -26,8 +42,19 @@ </property> </widget> </item> + <item row="0" column="2"> + <widget class="QPushButton" name="checkButton"> + <property name="text"> + <string>Check</string> + </property> + </widget> + </item> </layout> </widget> + <tabstops> + <tabstop>lineEdit</tabstop> + <tabstop>checkButton</tabstop> + </tabstops> <resources> <include location="../../resources/assets/assets.qrc"/> </resources> |