diff options
Diffstat (limited to 'SwifTools/Dock')
-rw-r--r-- | SwifTools/Dock/WindowsDock.h | 42 |
1 files changed, 42 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; + }; +} |