summaryrefslogtreecommitdiff
path: root/src/modinfodialognexus.h
blob: e752018a491cbb99680c97183a1db66192bf9876 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#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
{
  Q_OBJECT;

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 onCategoryChanged();

  void onRefreshBrowser();
  void onVisitNexus();
  void onEndorse();
  void onTrack();

  void onCustomURLToggled();
  void onCustomURLChanged();
  void onVisitCustomURL();
};

#endif  // MODINFODIALOGNEXUS_H