summaryrefslogtreecommitdiff
path: root/src/modinfodialognexus.h
diff options
context:
space:
mode:
authorJeremy Rimpo <jrim@rimpo.org>2019-07-03 10:24:14 -0500
committerGitHub <noreply@github.com>2019-07-03 10:24:14 -0500
commitefec72a85a351f53880bffdba2438f6802d4f9ab (patch)
tree94cf5dd724a16f29b458776ef5a83477ccfe2a52 /src/modinfodialognexus.h
parent1822c1dc655e60c7693b528004ed715305df45f5 (diff)
parent7fe637ce4421e0c6d6ee6b103db5fcc4ef676c25 (diff)
Merge pull request #782 from isanae/modinfodialog-rework
Mod info dialog rework
Diffstat (limited to 'src/modinfodialognexus.h')
-rw-r--r--src/modinfodialognexus.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/modinfodialognexus.h b/src/modinfodialognexus.h
new file mode 100644
index 00000000..7f894dbf
--- /dev/null
+++ b/src/modinfodialognexus.h
@@ -0,0 +1,74 @@
+#ifndef MODINFODIALOGNEXUS_H
+#define MODINFODIALOGNEXUS_H
+
+#include "modinfodialogtab.h"
+
+class NexusTabWebpage : public QWebEnginePage
+{
+ Q_OBJECT
+
+public:
+ NexusTabWebpage(QObject* parent = 0)
+ : QWebEnginePage(parent)
+ {
+ }
+
+ bool acceptNavigationRequest(
+ const QUrl & url, QWebEnginePage::NavigationType type, bool) override
+ {
+ if (type == QWebEnginePage::NavigationTypeLinkClicked)
+ {
+ emit linkClicked(url);
+ return false;
+ }
+
+ return true;
+ }
+
+signals:
+ void linkClicked(const QUrl&);
+};
+
+
+class NexusTab : public ModInfoDialogTab
+{
+public:
+ NexusTab(ModInfoDialogTabContext cx);
+
+ ~NexusTab();
+
+ void clear() override;
+ void update() override;
+ void firstActivation() override;
+ void setMod(ModInfoPtr mod, MOShared::FilesOrigin* origin) override;
+ bool usesOriginFiles() const override;
+
+private:
+ QMetaObject::Connection m_modConnection;
+ bool m_requestStarted;
+ bool m_loading;
+
+ void cleanup();
+ void updateVersionColor();
+ void updateWebpage();
+ void updateTracking();
+
+ void refreshData(int modID);
+ bool tryRefreshData(int modID);
+ void onModChanged();
+
+ void onModIDChanged();
+ void onSourceGameChanged();
+ void onVersionChanged();
+
+ void onRefreshBrowser();
+ void onVisitNexus();
+ void onEndorse();
+ void onTrack();
+
+ void onCustomURLToggled();
+ void onCustomURLChanged();
+ void onVisitCustomURL();
+};
+
+#endif // MODINFODIALOGNEXUS_H