diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-12-21 20:19:13 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-12-21 20:19:13 (GMT) |
commit | c868a4d587ea8ebbdbe5ef4ccc525af9811acbf9 (patch) | |
tree | 092ddb7e0f5dc34fddac5d83a41d727608afb796 /SwifTools | |
parent | eb0caf8201ed2b5507401a7127624b64ca2f51fc (diff) | |
download | swift-contrib-c868a4d587ea8ebbdbe5ef4ccc525af9811acbf9.zip swift-contrib-c868a4d587ea8ebbdbe5ef4ccc525af9811acbf9.tar.bz2 |
Revert to SnarlNotifier on Windows.
Use balloons as a fallback.
Diffstat (limited to 'SwifTools')
-rw-r--r-- | SwifTools/Dock/WindowsDock.h | 42 | ||||
-rw-r--r-- | SwifTools/Notifier/Notifier.h | 4 | ||||
-rw-r--r-- | SwifTools/Notifier/SnarlNotifier.cpp | 5 | ||||
-rw-r--r-- | SwifTools/Notifier/SnarlNotifier.h | 1 |
4 files changed, 52 insertions, 0 deletions
diff --git a/SwifTools/Dock/WindowsDock.h b/SwifTools/Dock/WindowsDock.h new file mode 100644 index 0000000..dc298da --- /dev/null +++ b/SwifTools/Dock/WindowsDock.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <QSystemTrayIcon> +#include <boost/lexical_cast.hpp> + +#include "SwifTools/Dock/Dock.h" +#include "SwifTools/Notifier/Notifier.h" + +namespace Swift { + class WindowsDock : public Dock { + public: + WindowsDock(QSystemTrayIcon* tray, Notifier* notifier) : tray(tray), notifier(notifier) {} + + virtual void setNumberOfPendingMessages(int i) { + if (notifier->isAvailable()) { + return; + } + + if (i > 0) { + std::string message = boost::lexical_cast<std::string>(i) + " new message"; + if (i > 1) { + message += "s"; + } + message += " received."; + tray->showMessage("New messages", message.c_str(), QSystemTrayIcon::NoIcon); + } + else { + tray->showMessage("", "", QSystemTrayIcon::NoIcon, 0); + } + } + + private: + QSystemTrayIcon* tray; + Notifier* notifier; + }; +} diff --git a/SwifTools/Notifier/Notifier.h b/SwifTools/Notifier/Notifier.h index b7c705e..a8424bf 100644 --- a/SwifTools/Notifier/Notifier.h +++ b/SwifTools/Notifier/Notifier.h @@ -28,6 +28,10 @@ namespace Swift { const boost::filesystem::path& picture, boost::function<void()> callback) = 0; + virtual bool isAvailable() const { + return true; + } + protected: String typeToString(Type type); static std::vector<Type> getAllTypes(); diff --git a/SwifTools/Notifier/SnarlNotifier.cpp b/SwifTools/Notifier/SnarlNotifier.cpp index 9e82340..709128b 100644 --- a/SwifTools/Notifier/SnarlNotifier.cpp +++ b/SwifTools/Notifier/SnarlNotifier.cpp @@ -33,6 +33,11 @@ SnarlNotifier::~SnarlNotifier() { } } +bool SnarlNotifier::isAvailable() const { + return false; +} + + void SnarlNotifier::showMessage(Type type, const String& subject, const String& description, const boost::filesystem::path& picture, boost::function<void()> callback) { int timeout = (type == IncomingMessage || type == SystemMessage) ? DEFAULT_MESSAGE_NOTIFICATION_TIMEOUT_SECONDS : DEFAULT_STATUS_NOTIFICATION_TIMEOUT_SECONDS; int notificationID = snarl.EZNotify( diff --git a/SwifTools/Notifier/SnarlNotifier.h b/SwifTools/Notifier/SnarlNotifier.h index 8470326..d03882a 100644 --- a/SwifTools/Notifier/SnarlNotifier.h +++ b/SwifTools/Notifier/SnarlNotifier.h @@ -20,6 +20,7 @@ namespace Swift { ~SnarlNotifier(); virtual void showMessage(Type type, const String& subject, const String& description, const boost::filesystem::path& picture, boost::function<void()> callback); + virtual bool isAvailable() const; private: void handleMessageReceived(MSG* message); |