From 05fa7a57b3c7df3a9cc717cba202c96be05fa21a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be> Date: Fri, 27 Nov 2009 22:50:54 +0100 Subject: Added (Sparkle) AutoUpdater. Not plugged into Swift yet. diff --git a/SConstruct b/SConstruct index e4ef041..98cd348 100644 --- a/SConstruct +++ b/SConstruct @@ -156,6 +156,12 @@ if int(ARGUMENTS.get("V", 0)) == 0: env["TESTCOMSTR"] = colorize("TEST", "$SOURCE", "yellow") #Progress(colorize("DEP", "$TARGET", "red") +def checkObjCHeader(context, header) : + context.Message("Checking for Objective-C header " + header + " ... ") + ret = context.TryCompile("#include <Cocoa/Cocoa.h>\n#include <" + header + ">", ".m") + context.Result(ret) + return ret + ################################################################################ # Platform configuration ################################################################################ @@ -165,6 +171,9 @@ if ARGUMENTS.get("force-configure", 0) : conf = Configure(conf_env) +conf.CheckCXX() +conf.CheckCC() + if conf.CheckLib("z") : env.Append(LIBS = "z") env["ZLIB_FLAGS"] = "" @@ -202,6 +211,21 @@ if env["PLATFORM"] != "win32" and env["PLATFORM"] != "darwin" : env["XSS_FLAGS"] = xss_flags conf.Finish() +# Sparkle +env["HAVE_SPARKLE"] = 0 +if env["PLATFORM"] == "darwin" : + sparkle_flags = { + "FRAMEWORKPATH": ["/Library/Frameworks"], + "FRAMEWORKS": ["Sparkle"] + } + sparkle_env = conf_env.Clone() + sparkle_env.MergeFlags(sparkle_flags) + conf = Configure(sparkle_env, custom_tests = { "CheckObjCHeader" : checkObjCHeader }) + if conf.CheckObjCHeader("Sparkle/Sparkle.h") : + env["HAVE_SPARKLE"] = 1 + env["SPARKLE_FLAGS"] = sparkle_flags + conf.Finish() + # LibXML conf = Configure(conf_env) if conf.CheckCHeader("libxml/parser.h") and conf.CheckLib("xml2") : diff --git a/SwifTools/AutoUpdater/AutoUpdater.cpp b/SwifTools/AutoUpdater/AutoUpdater.cpp new file mode 100644 index 0000000..cd0eb0b --- /dev/null +++ b/SwifTools/AutoUpdater/AutoUpdater.cpp @@ -0,0 +1,8 @@ +#include "SwifTools/AutoUpdater/AutoUpdater.h" + +namespace Swift { + +AutoUpdater::~AutoUpdater() { +} + +} diff --git a/SwifTools/AutoUpdater/AutoUpdater.h b/SwifTools/AutoUpdater/AutoUpdater.h new file mode 100644 index 0000000..c1a73f1 --- /dev/null +++ b/SwifTools/AutoUpdater/AutoUpdater.h @@ -0,0 +1,10 @@ +#pragma once + +namespace Swift { + class AutoUpdater { + public: + virtual ~AutoUpdater(); + + virtual void checkForUpdates() = 0; + }; +} diff --git a/SwifTools/AutoUpdater/SparkleAutoUpdater.h b/SwifTools/AutoUpdater/SparkleAutoUpdater.h new file mode 100644 index 0000000..37053fc --- /dev/null +++ b/SwifTools/AutoUpdater/SparkleAutoUpdater.h @@ -0,0 +1,18 @@ +#pragma once + +#include "Swiften/Base/String.h" +#include "SwifTools/AutoUpdater/AutoUpdater.h" + +namespace Swift { + class SparkleAutoUpdater : public AutoUpdater { + public: + SparkleAutoUpdater(const String& url); + ~SparkleAutoUpdater(); + + void checkForUpdates(); + + private: + class Private; + Private* d; + }; +} diff --git a/SwifTools/AutoUpdater/SparkleAutoUpdater.mm b/SwifTools/AutoUpdater/SparkleAutoUpdater.mm new file mode 100644 index 0000000..30e2ae2 --- /dev/null +++ b/SwifTools/AutoUpdater/SparkleAutoUpdater.mm @@ -0,0 +1,33 @@ +#include "SwifTools/AutoUpdater/SparkleAutoUpdater.h" + +#include <Cocoa/Cocoa.h> +#include <Sparkle/Sparkle.h> + +namespace Swift { + +class SparkleAutoUpdater::Private { + public: + SUUpdater* updater; +}; + +SparkleAutoUpdater::SparkleAutoUpdater(const String& url) { + d = new Private; + + d->updater = [SUUpdater sharedUpdater]; + [d->updater retain]; + + NSURL* nsurl = [NSURL URLWithString: + [NSString stringWithUTF8String: url.getUTF8Data()]]; + [d->updater setFeedURL: nsurl]; +} + +SparkleAutoUpdater::~SparkleAutoUpdater() { + [d->updater release]; + delete d; +} + +void SparkleAutoUpdater::checkForUpdates() { + [d->updater checkForUpdatesInBackground]; +} + +} diff --git a/SwifTools/SConscript b/SwifTools/SConscript index 2ae4e4e..92e82be 100644 --- a/SwifTools/SConscript +++ b/SwifTools/SConscript @@ -13,9 +13,13 @@ sources = [ "Idle/ActualIdleDetector.cpp", "Idle/IdleQuerier.cpp", "Idle/PlatformIdleQuerier.cpp", + "AutoUpdater/AutoUpdater.cpp", "Linkify.cpp", ] +if myenv.get("HAVE_SPARKLE", 0) : + sources += ["AutoUpdater/SparkleAutoUpdater.mm"] + if myenv["PLATFORM"] == "win32" : sources += ["Idle/WindowsIdleQuerier.cpp"] elif myenv["PLATFORM"] == "darwin" : -- cgit v0.10.2-6-g49f6