diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-12-22 09:14:15 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-12-22 19:49:03 (GMT) |
commit | 9e35dfd2f3a1fbc88bb800c8bf167035b0bd0582 (patch) | |
tree | 216d1f7637166bce76d027f2d3e243c6f675bf1f /Swift/QtUI/WindowsNotifier.cpp | |
parent | c868a4d587ea8ebbdbe5ef4ccc525af9811acbf9 (diff) | |
download | swift-contrib-9e35dfd2f3a1fbc88bb800c8bf167035b0bd0582.zip swift-contrib-9e35dfd2f3a1fbc88bb800c8bf167035b0bd0582.tar.bz2 |
Use a default balloons notifier on Windows.
Diffstat (limited to 'Swift/QtUI/WindowsNotifier.cpp')
-rw-r--r-- | Swift/QtUI/WindowsNotifier.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/Swift/QtUI/WindowsNotifier.cpp b/Swift/QtUI/WindowsNotifier.cpp new file mode 100644 index 0000000..8c113c5 --- /dev/null +++ b/Swift/QtUI/WindowsNotifier.cpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "WindowsNotifier.h" + +#include <QSystemTrayIcon> +#include <cassert> +#include <iostream> +#include <boost/bind.hpp> + +#include "QtWin32NotifierWindow.h" + +namespace Swift { + +WindowsNotifier::WindowsNotifier(const String& name, const boost::filesystem::path& icon, QSystemTrayIcon* tray) : tray(tray) { + notifierWindow = new QtWin32NotifierWindow(); + snarlNotifier = new SnarlNotifier(name, notifierWindow, icon); + connect(tray, SIGNAL(messageClicked()), SLOT(handleMessageClicked())); +} + +WindowsNotifier::~WindowsNotifier() { + delete snarlNotifier; + delete notifierWindow; +} + +void WindowsNotifier::showMessage(Type type, const String& subject, const String& description, const boost::filesystem::path& picture, boost::function<void()> callback) { + if (snarlNotifier->isAvailable()) { + snarlNotifier->showMessage(type, subject, description, picture, callback); + return; + } + std::vector<Notifier::Type> defaultTypes = getDefaultTypes(); + if (std::find(defaultTypes.begin(), defaultTypes.end(), type) == defaultTypes.end()) { + return; + } + lastCallback = callback; + int timeout = (type == IncomingMessage || type == SystemMessage) ? DEFAULT_MESSAGE_NOTIFICATION_TIMEOUT_SECONDS : DEFAULT_STATUS_NOTIFICATION_TIMEOUT_SECONDS; + tray->showMessage(subject.getUTF8Data(), description.getUTF8Data(), type == SystemMessage ? QSystemTrayIcon::Information : QSystemTrayIcon::NoIcon, timeout * 1000); +} + +void WindowsNotifier::handleMessageClicked() { + lastCallback(); +} + +} |