diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-08-02 08:27:38 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-08-02 11:08:12 (GMT) |
commit | 7368b120827e4e9da659da62398bb37a68c19ab5 (patch) | |
tree | 150034061db35320a13460b5dfb3613f0f4093b0 /Slimber/MenuletController.cpp | |
parent | 188ff36e3fbfdc174ea75babc1deb3aebcf1472b (diff) | |
download | swift-7368b120827e4e9da659da62398bb37a68c19ab5.zip swift-7368b120827e4e9da659da62398bb37a68c19ab5.tar.bz2 |
Slimber: Abstract controllers out of Cocoa UI.
Diffstat (limited to 'Slimber/MenuletController.cpp')
-rw-r--r-- | Slimber/MenuletController.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Slimber/MenuletController.cpp b/Slimber/MenuletController.cpp new file mode 100644 index 0000000..09face5 --- /dev/null +++ b/Slimber/MenuletController.cpp @@ -0,0 +1,49 @@ +#include "Slimber/MenuletController.h" + +#include "Swiften/Base/foreach.h" +#include "Swiften/Base/String.h" +#include "Slimber/Menulet.h" + +#include <iostream> + +using namespace Swift; + +MenuletController::MenuletController(Menulet* menulet) : + menulet(menulet), xmppStatus(Offline) { + update(); +} + +MenuletController::~MenuletController() { +} + +void MenuletController::setXMPPStatus(const String& message, Status status) { + xmppStatus = status; + xmppStatusMessage = message; + update(); +} + +void MenuletController::setUserNames(const std::vector<String>& users) { + linkLocalUsers = users; + update(); +} + +void MenuletController::update() { + menulet->clear(); + if (linkLocalUsers.empty()) { + menulet->setIcon("UsersOffline"); + menulet->addItem("No online users"); + } + else { + menulet->setIcon("UsersOnline"); + menulet->addItem("Online users:"); + foreach(const String& user, linkLocalUsers) { + menulet->addItem(user); + } + } + menulet->addSeparator(); + menulet->addItem(xmppStatusMessage, (xmppStatus == Online ? "Online" : "Offline")); + menulet->addSeparator(); + menulet->addAboutItem(); + menulet->addSeparator(); + menulet->addExitItem(); +} |