]> git.sur5r.net Git - minitube/blob - lib/updater/src/sparkle/sparkleupdater.mm
New upstream version 3.5
[minitube] / lib / updater / src / sparkle / sparkleupdater.mm
1 #include "sparkleupdater.h"
2
3 #import <SUAppcastItem.h>
4 #import <SUUpdater.h>
5 #import <SUUpdaterDelegate.h>
6
7 @interface SparkleDelegate : NSObject <SUUpdaterDelegate> {
8 }
9 @end
10
11 @implementation SparkleDelegate {
12     Updater *u;
13 }
14
15 - (void)setUpdater:(Updater *)v {
16     u = v;
17 }
18
19 - (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item {
20     qDebug() << item.versionString;
21     Q_UNUSED(updater)
22     u->setVersion(QString::fromNSString(item.displayVersionString));
23     u->setStatus(Updater::Status::UpdateAvailable);
24     // [updater installUpdatesIfAvailable];
25 }
26
27 - (void)updaterDidNotFindUpdate:(SUUpdater *)updater {
28     Q_UNUSED(updater)
29     u->setStatus(Updater::Status::UpToDate);
30 }
31
32 - (void)updater:(SUUpdater *)updater
33         willDownloadUpdate:(SUAppcastItem *)item
34                withRequest:(NSMutableURLRequest *)request {
35     qDebug() << item.versionString << request;
36     Q_UNUSED(updater)
37     u->setStatus(Updater::Status::DownloadingUpdate);
38 }
39
40 - (void)updater:(SUUpdater *)updater didDownloadUpdate:(SUAppcastItem *)item {
41     qDebug() << item.versionString;
42     Q_UNUSED(updater)
43     u->setStatus(Updater::Status::UpdateDownloaded);
44 }
45
46 - (void)userDidCancelDownload:(SUUpdater *)updater {
47     Q_UNUSED(updater)
48     u->setStatus(Updater::Status::UpdateAvailable);
49 }
50
51 - (void)updater:(SUUpdater *)updater
52         failedToDownloadUpdate:(SUAppcastItem *)item
53                          error:(NSError *)error {
54     qDebug() << error;
55     u->setStatus(Updater::Status::UpdateDownloadFailed);
56 }
57
58 - (void)updater:(SUUpdater *)updater
59                 willInstallUpdateOnQuit:(SUAppcastItem *)item
60         immediateInstallationInvocation:(NSInvocation *)invocation {
61     Q_UNUSED(updater)
62     qDebug() << u->getImmediateInstallAndRelaunch();
63     if (u->getImmediateInstallAndRelaunch()) [invocation invoke];
64 }
65
66 - (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item {
67     qDebug() << item.versionString;
68 }
69
70 - (void)updaterWillRelaunchApplication:(SUUpdater *)updater {
71     qDebug() << updater;
72 }
73
74 - (void)updater:(SUUpdater *)updater didAbortWithError:(NSError *)error {
75     qDebug() << error;
76 }
77
78 @end
79
80 namespace updater {
81
82 SparkleUpdater::SparkleUpdater() {
83     SparkleDelegate *delegate = [[SparkleDelegate alloc] init];
84     [delegate setUpdater:this];
85     [[SUUpdater sharedUpdater] setDelegate:delegate];
86     [SUUpdater sharedUpdater].automaticallyChecksForUpdates = YES;
87     [SUUpdater sharedUpdater].automaticallyDownloadsUpdates = YES;
88 }
89
90 bool SparkleUpdater::getAutomaticDownload() const {
91     return [SUUpdater sharedUpdater].automaticallyDownloadsUpdates;
92 }
93
94 void SparkleUpdater::setAutomaticDownload(bool value) {
95     [SUUpdater sharedUpdater].automaticallyDownloadsUpdates = value;
96 }
97
98 void SparkleUpdater::checkAndShowUI() {
99     [[SUUpdater sharedUpdater] checkForUpdates:nil];
100 }
101
102 void SparkleUpdater::checkAndMaybeShowUI() {
103     [[SUUpdater sharedUpdater] checkForUpdatesInBackground];
104 }
105
106 void SparkleUpdater::checkWithoutUI() {
107     [[SUUpdater sharedUpdater] checkForUpdateInformation];
108 }
109
110 void SparkleUpdater::update() {
111     [[SUUpdater sharedUpdater] installUpdatesIfAvailable];
112 }
113
114 } // namespace updater