diff options
Diffstat (limited to 'src/modinfodialognexus.h')
| -rw-r--r-- | src/modinfodialognexus.h | 74 |
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 |
