summaryrefslogtreecommitdiffstats
path: root/application/pages/modplatform/twitch/TwitchModel.h
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2020-03-31 03:13:19 +0200
committerPetr Mrázek <peterix@gmail.com>2020-04-01 00:44:24 +0200
commit3ff93a42161a5fe9301db1054dcb62c7d79ac77d (patch)
treed863a68a825fb7aebc63c5a80ec764da3cfe2cc6 /application/pages/modplatform/twitch/TwitchModel.h
parent21ac860e2771d2710e13c5694f18c3a244f20523 (diff)
downloadMultiMC-3ff93a42161a5fe9301db1054dcb62c7d79ac77d.tar
MultiMC-3ff93a42161a5fe9301db1054dcb62c7d79ac77d.tar.gz
MultiMC-3ff93a42161a5fe9301db1054dcb62c7d79ac77d.tar.lz
MultiMC-3ff93a42161a5fe9301db1054dcb62c7d79ac77d.tar.xz
MultiMC-3ff93a42161a5fe9301db1054dcb62c7d79ac77d.zip
NOISSUE Bare-bones twitch pack browser
Diffstat (limited to 'application/pages/modplatform/twitch/TwitchModel.h')
-rw-r--r--application/pages/modplatform/twitch/TwitchModel.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/application/pages/modplatform/twitch/TwitchModel.h b/application/pages/modplatform/twitch/TwitchModel.h
new file mode 100644
index 00000000..1241a079
--- /dev/null
+++ b/application/pages/modplatform/twitch/TwitchModel.h
@@ -0,0 +1,65 @@
+#pragma once
+
+#include <modplatform/legacy_ftb/PackHelpers.h>
+#include <RWStorage.h>
+
+#include <QAbstractListModel>
+#include <QSortFilterProxyModel>
+#include <QThreadPool>
+#include <QIcon>
+#include <QStyledItemDelegate>
+#include <QList>
+#include <QString>
+#include <QStringList>
+#include <QMetaType>
+
+#include <functional>
+#include <net/NetJob.h>
+
+#include "TwitchData.h"
+
+namespace Twitch {
+
+
+typedef QMap<QString, QIcon> LogoMap;
+typedef std::function<void(QString)> LogoCallback;
+
+class ListModel : public QAbstractListModel
+{
+ Q_OBJECT
+
+public:
+ ListModel(QObject *parent);
+ virtual ~ListModel();
+
+ int rowCount(const QModelIndex &parent) const override;
+ int columnCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role) const override;
+ Qt::ItemFlags flags(const QModelIndex &index) const override;
+
+ void getLogo(const QString &logo, const QString &logoUrl, LogoCallback callback);
+ void searchWithTerm(const QString & term);
+
+private slots:
+ void logoFailed(QString logo);
+ void logoLoaded(QString logo, QIcon out);
+
+ void searchRequestFinished();
+ void searchRequestFailed(QString reason);
+
+private:
+ void requestLogo(QString file, QString url);
+
+private:
+ QList<Modpack> modpacks;
+ QStringList m_failedLogos;
+ QStringList m_loadingLogos;
+ LogoMap m_logoMap;
+ QMap<QString, LogoCallback> waitingCallbacks;
+
+ QString currentSearchTerm;
+ NetJobPtr jobPtr;
+ QByteArray response;
+};
+
+}