summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'SwifTools/AutoUpdater')
-rw-r--r--SwifTools/AutoUpdater/AutoUpdater.h3
-rw-r--r--SwifTools/AutoUpdater/SparkleAutoUpdater.h3
-rw-r--r--SwifTools/AutoUpdater/SparkleAutoUpdater.mm9
3 files changed, 12 insertions, 3 deletions
diff --git a/SwifTools/AutoUpdater/AutoUpdater.h b/SwifTools/AutoUpdater/AutoUpdater.h
index ed53e11..274bf50 100644
--- a/SwifTools/AutoUpdater/AutoUpdater.h
+++ b/SwifTools/AutoUpdater/AutoUpdater.h
@@ -1,27 +1,30 @@
/*
* Copyright (c) 2010-2016 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#pragma once
+#include <string>
+
#include <boost/signals2.hpp>
namespace Swift {
class AutoUpdater {
public:
virtual ~AutoUpdater();
+ virtual void setAppcastFeed(const std::string& appcastFeed) = 0;
virtual void checkForUpdates() = 0;
virtual bool recommendRestartToUpdate() = 0;
public:
/**
* Emit this signal if a new version of the software has been downloaded
* and the user needs to be notified so they can quit the app and start
* the newer version.
*/
boost::signals2::signal<void()> onSuggestRestartToUserToUpdate;
};
}
diff --git a/SwifTools/AutoUpdater/SparkleAutoUpdater.h b/SwifTools/AutoUpdater/SparkleAutoUpdater.h
index 41a25f0..dd22e73 100644
--- a/SwifTools/AutoUpdater/SparkleAutoUpdater.h
+++ b/SwifTools/AutoUpdater/SparkleAutoUpdater.h
@@ -1,33 +1,34 @@
/*
* Copyright (c) 2010-2016 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#pragma once
#include <memory>
#include <string>
#include <SwifTools/AutoUpdater/AutoUpdater.h>
namespace Swift {
/**
* @brief The SparkleAutoUpdater class provides integration with Sparkle.
* This enables automatic silent background updates. If using this in Qt you
* need to emit a NSApplicationWillTerminateNotification before you quit
* the application.
*/
class SparkleAutoUpdater : public AutoUpdater {
public:
- SparkleAutoUpdater(const std::string& url);
+ SparkleAutoUpdater(const std::string& appcastFeed);
~SparkleAutoUpdater();
+ void setAppcastFeed(const std::string& appcastFeed);
void checkForUpdates();
bool recommendRestartToUpdate();
private:
class Private;
const std::unique_ptr<Private> d;
};
}
diff --git a/SwifTools/AutoUpdater/SparkleAutoUpdater.mm b/SwifTools/AutoUpdater/SparkleAutoUpdater.mm
index 6b27ba7..ed5f094 100644
--- a/SwifTools/AutoUpdater/SparkleAutoUpdater.mm
+++ b/SwifTools/AutoUpdater/SparkleAutoUpdater.mm
@@ -1,57 +1,62 @@
/*
* Copyright (c) 2016 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#include <SwifTools/AutoUpdater/SparkleAutoUpdater.h>
#include <Cocoa/Cocoa.h>
#include <Sparkle/Sparkle.h>
#include <SwifTools/AutoUpdater/SparkleAutoUpdaterDelegate.h>
#include <SwifTools/Cocoa/CocoaUtil.h>
namespace Swift {
class SparkleAutoUpdater::Private {
public:
SUUpdater* updater;
boost::intrusive_ptr<SparkleAutoUpdaterDelegate> delegate;
bool restartToUpdate = false;
};
-SparkleAutoUpdater::SparkleAutoUpdater(const std::string& url) : d(new Private()) {
+SparkleAutoUpdater::SparkleAutoUpdater(const std::string& appcastFeed) : d(new Private()) {
d->updater = [SUUpdater sharedUpdater];
[d->updater retain];
d->delegate = boost::intrusive_ptr<SparkleAutoUpdaterDelegate>([[SparkleAutoUpdaterDelegate alloc] init], false);
[d->delegate.get() setUpdateDownloadFinished: [&](){
d->restartToUpdate = true;
onSuggestRestartToUserToUpdate();
}];
[d->updater setDelegate: d->delegate.get()];
[d->updater setAutomaticallyChecksForUpdates: true];
// Automatically check for an update after a day.
[d->updater setUpdateCheckInterval: 86400];
[d->updater setAutomaticallyDownloadsUpdates: true];
- NSURL* nsurl = [NSURL URLWithString: std2NSString(url)];
+ NSURL* nsurl = [NSURL URLWithString: std2NSString(appcastFeed)];
[d->updater setFeedURL: nsurl];
}
SparkleAutoUpdater::~SparkleAutoUpdater() {
[d->updater release];
}
+void SparkleAutoUpdater::setAppcastFeed(const std::string& appcastFeed) {
+ NSURL* nsurl = [NSURL URLWithString: std2NSString(appcastFeed)];
+ [d->updater setFeedURL: nsurl];
+}
+
void SparkleAutoUpdater::checkForUpdates() {
//[d->updater resetUpdateCycle]; // This is useful for testing to force a check ot start.
[d->updater checkForUpdatesInBackground];
}
bool SparkleAutoUpdater::recommendRestartToUpdate() {
return d->restartToUpdate;
}
}