summaryrefslogtreecommitdiffstats
path: root/application/pages/modplatform/technic/TechnicModel.h
diff options
context:
space:
mode:
authorkb1000 <kaeptmblaubaer1000@gmail.com>2020-06-07 17:46:12 +0200
committerkb1000 <kaeptmblaubaer1000@gmail.com>2020-10-13 21:34:16 +0200
commit8021fb25d0778bbc88bbfa052fcf2572807ee0f5 (patch)
tree81945f562b0970888b0c037bcacb95b0a8a95f0e /application/pages/modplatform/technic/TechnicModel.h
parent762ddaea6578d552dabaffefd7ea6942776f3eff (diff)
downloadMultiMC-8021fb25d0778bbc88bbfa052fcf2572807ee0f5.tar
MultiMC-8021fb25d0778bbc88bbfa052fcf2572807ee0f5.tar.gz
MultiMC-8021fb25d0778bbc88bbfa052fcf2572807ee0f5.tar.lz
MultiMC-8021fb25d0778bbc88bbfa052fcf2572807ee0f5.tar.xz
MultiMC-8021fb25d0778bbc88bbfa052fcf2572807ee0f5.zip
GH-469 Implement support for importing and searching for Technic Platform and Solder modpacks
This does not support any custom modpack.jar for 1.6 or newer, it simply uses standard Forge then. Supports Forge and Fabric, and JAR mods for 1.5 and older.
Diffstat (limited to 'application/pages/modplatform/technic/TechnicModel.h')
-rw-r--r--application/pages/modplatform/technic/TechnicModel.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/application/pages/modplatform/technic/TechnicModel.h b/application/pages/modplatform/technic/TechnicModel.h
new file mode 100644
index 00000000..bd0aec69
--- /dev/null
+++ b/application/pages/modplatform/technic/TechnicModel.h
@@ -0,0 +1,70 @@
+/* Copyright 2020 MultiMC Contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <QModelIndex>
+
+#include "TechnicData.h"
+#include "net/NetJob.h"
+
+namespace Technic {
+
+typedef std::function<void(QString)> LogoCallback;
+
+class ListModel : public QAbstractListModel
+{
+ Q_OBJECT
+
+public:
+ ListModel(QObject *parent);
+ virtual ~ListModel();
+
+ virtual QVariant data(const QModelIndex& index, int role) const;
+ virtual int columnCount(const QModelIndex& parent) const;
+ virtual int rowCount(const QModelIndex& parent) const;
+
+ void getLogo(const QString &logo, const QString &logoUrl, LogoCallback callback);
+ void searchWithTerm(const QString & term);
+
+private slots:
+ void searchRequestFinished();
+ void searchRequestFailed();
+
+ void logoFailed(QString logo);
+ void logoLoaded(QString logo, QString out);
+
+private:
+ void performSearch();
+ void requestLogo(QString logo, QString url);
+
+private:
+ QList<Modpack> modpacks;
+ QStringList m_failedLogos;
+ QStringList m_loadingLogos;
+ QMap<QString, QIcon> m_logoMap;
+ QMap<QString, LogoCallback> waitingCallbacks;
+
+ QString currentSearchTerm;
+ enum SearchState {
+ None,
+ ResetRequested,
+ Finished
+ } searchState = None;
+ NetJobPtr jobPtr;
+ QByteArray response;
+};
+
+}