summaryrefslogtreecommitdiff
path: root/src/downloadmanagerproxy.h
blob: 8dd2e8856b65ff3f898a659b11934a9bb971d956 (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
#ifndef DOWNLOADMANAGERPROXY_H
#define DOWNLOADMANAGERPROXY_H

#include "downloadmanager.h"
#include <idownloadmanager.h>

class OrganizerProxy;

class DownloadManagerProxy : public MOBase::IDownloadManager
{

public:
  DownloadManagerProxy(OrganizerProxy* oproxy, DownloadManager* downloadManager);
  virtual ~DownloadManagerProxy();

  int startDownloadURLs(const QStringList& urls) override;
  int startDownloadNexusFile(int modID, int fileID) override;
  int startDownloadNexusFileForGame(const QString& gameName, int modID,
                                    int fileID) override;
  QString downloadPath(int id) override;

  bool onDownloadComplete(const std::function<void(int)>& callback) override;
  bool onDownloadPaused(const std::function<void(int)>& callback) override;
  bool onDownloadFailed(const std::function<void(int)>& callback) override;
  bool onDownloadRemoved(const std::function<void(int)>& callback) override;

private:
  friend class OrganizerProxy;

  // See OrganizerProxy::connectSignals().
  void connectSignals();
  void disconnectSignals();

  OrganizerProxy* m_OrganizerProxy;
  DownloadManager* m_Proxied;

  DownloadManager::SignalDownloadCallback m_DownloadComplete;
  DownloadManager::SignalDownloadCallback m_DownloadPaused;
  DownloadManager::SignalDownloadCallback m_DownloadFailed;
  DownloadManager::SignalDownloadCallback m_DownloadRemoved;

  std::vector<boost::signals2::connection> m_Connections;
};

#endif  // ORGANIZERPROXY_H