summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Slimber/Cocoa')
-rw-r--r--Slimber/Cocoa/Makefile.inc7
-rw-r--r--Slimber/Cocoa/Menulet.m4
-rw-r--r--Slimber/Cocoa/Slimber.h13
-rw-r--r--Slimber/Cocoa/Slimber.mm42
4 files changed, 37 insertions, 29 deletions
diff --git a/Slimber/Cocoa/Makefile.inc b/Slimber/Cocoa/Makefile.inc
index 8068350..8cd72cd 100644
--- a/Slimber/Cocoa/Makefile.inc
+++ b/Slimber/Cocoa/Makefile.inc
@@ -2,9 +2,6 @@ SLIMBER_COCOA_TARGET = Slimber/Cocoa/Slimber.app
SLIMBER_COCOA_BINARY = \
Slimber/Cocoa/Slimber
SLIMBER_COCOA_SOURCES = \
- Slimber/Server.cpp \
- Slimber/VCardCollection.cpp \
- Slimber/FileVCardCollection.cpp \
Slimber/Cocoa/MainController.mm \
Slimber/Cocoa/Slimber.mm \
Slimber/Cocoa/main.mm \
@@ -45,5 +42,5 @@ $(SLIMBER_COCOA_TARGET): $(SLIMBER_COCOA_BINARY) $(SLIMBER_COCOA_NIBS) Slimber/C
cp $(SLIMBER_COCOA_NIBS) $(SLIMBER_COCOA_TARGET)/Contents/Resources
cp $(SLIMBER_COCOA_RESOURCES) $(SLIMBER_COCOA_TARGET)/Contents/Resources
-$(SLIMBER_COCOA_BINARY): $(SLIMBER_COCOA_OBJECTS) $(SWIFTEN_TARGET)
- $(QUIET_LINK)$(CXX) -o $@ $(SLIMBER_COCOA_OBJECTS) $(LDFLAGS) $(SWIFTEN_TARGET) $(LIBS) -framework Cocoa
+$(SLIMBER_COCOA_BINARY): $(SLIMBER_COCOA_OBJECTS) $(SWIFTEN_TARGET) $(SLIMBER_TRGET)
+ $(QUIET_LINK)$(CXX) -o $@ $(SLIMBER_COCOA_OBJECTS) $(LDFLAGS) $(SLIMBER_TARGET) $(SWIFTEN_TARGET) $(LIBS) -framework Cocoa
diff --git a/Slimber/Cocoa/Menulet.m b/Slimber/Cocoa/Menulet.m
index 4fa7fed..1cc1f1f 100644
--- a/Slimber/Cocoa/Menulet.m
+++ b/Slimber/Cocoa/Menulet.m
@@ -49,8 +49,10 @@
[statusMenu addItem: [[NSMenuItem alloc] initWithTitle: @"Online users:" action: NULL keyEquivalent: @""]];
int i;
for (i = 0; i < [userNames count]; ++i) {
- NSMenuItem* userItem = [[NSMenuItem alloc] initWithTitle: [@" " stringByAppendingString: [userNames objectAtIndex: i]] action: NULL keyEquivalent: @""];
+ NSString* text = [NSString stringWithFormat: @" %@", [userNames objectAtIndex: i]];
+ NSMenuItem* userItem = [[NSMenuItem alloc] initWithTitle: text action: NULL keyEquivalent: @""];
[statusMenu addItem: userItem];
+ [userItem release];
}
}
else {
diff --git a/Slimber/Cocoa/Slimber.h b/Slimber/Cocoa/Slimber.h
index c2c0e2d..b62f9e5 100644
--- a/Slimber/Cocoa/Slimber.h
+++ b/Slimber/Cocoa/Slimber.h
@@ -1,16 +1,13 @@
#pragma once
-#include <string>
-#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>
-#include "Swiften/LinkLocal/DNSSDService.h"
-#include "Swiften/LinkLocal/LinkLocalRoster.h"
-
@class Menulet;
namespace Swift {
class Server;
class VCardCollection;
+ class LinkLocalServiceBrowser;
+ class BonjourQuerier;
}
class Slimber {
@@ -20,11 +17,11 @@ class Slimber {
private:
void handleSelfConnected(bool b);
- void handleRosterChanged();
+ void handleServicesChanged();
private:
- boost::shared_ptr<Swift::DNSSDService> dnsSDService;
- boost::shared_ptr<Swift::LinkLocalRoster>linkLocalRoster;
+ boost::shared_ptr<Swift::BonjourQuerier> dnsSDQuerier;
+ Swift::LinkLocalServiceBrowser* linkLocalServiceBrowser;
Swift::VCardCollection* vCardCollection;
Swift::Server* server;
Menulet* menulet;
diff --git a/Slimber/Cocoa/Slimber.mm b/Slimber/Cocoa/Slimber.mm
index ae1d9fd..d4851c8 100644
--- a/Slimber/Cocoa/Slimber.mm
+++ b/Slimber/Cocoa/Slimber.mm
@@ -1,9 +1,12 @@
#include "Slimber/Cocoa/Slimber.h"
+#include <boost/bind.hpp>
+
#include "Swiften/Base/foreach.h"
-#include "Swiften/Elements/RosterPayload.h"
-#include "Swiften/LinkLocal/AppleDNSSDService.h"
#include "Swiften/Application/Platform/PlatformApplication.h"
+#include "Swiften/LinkLocal/LinkLocalService.h"
+#include "Swiften/LinkLocal/LinkLocalServiceBrowser.h"
+#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h"
#include "Slimber/Cocoa/Menulet.h"
#include "Slimber/Server.h"
#include "Slimber/FileVCardCollection.h"
@@ -11,37 +14,46 @@
using namespace Swift;
Slimber::Slimber() {
- dnsSDService = boost::shared_ptr<AppleDNSSDService>(new AppleDNSSDService());
+ dnsSDQuerier = boost::shared_ptr<BonjourQuerier>(new BonjourQuerier());
+ dnsSDQuerier->start();
- linkLocalRoster = boost::shared_ptr<LinkLocalRoster>(new LinkLocalRoster(dnsSDService));
- linkLocalRoster->onRosterChanged.connect(boost::bind(&Slimber::handleRosterChanged, this));
+ linkLocalServiceBrowser = new LinkLocalServiceBrowser(dnsSDQuerier);
+ linkLocalServiceBrowser->onServiceAdded.connect(
+ boost::bind(&Slimber::handleServicesChanged, this));
+ linkLocalServiceBrowser->onServiceRemoved.connect(
+ boost::bind(&Slimber::handleServicesChanged, this));
+ linkLocalServiceBrowser->onServiceChanged.connect(
+ boost::bind(&Slimber::handleServicesChanged, this));
+ linkLocalServiceBrowser->start();
- vCardCollection = new FileVCardCollection(PlatformApplication("Slimber").getSettingsDir());
+ vCardCollection = new FileVCardCollection(
+ PlatformApplication("Slimber").getSettingsDir());
- server = new Server(5222, 5562, linkLocalRoster, dnsSDService, vCardCollection);
- server->onSelfConnected.connect(boost::bind(&Slimber::handleSelfConnected, this, _1));
+ server = new Server(5222, 5562, linkLocalServiceBrowser, vCardCollection);
+ server->onSelfConnected.connect(
+ boost::bind(&Slimber::handleSelfConnected, this, _1));
menulet = [[Menulet alloc] init];
- handleRosterChanged();
+ handleServicesChanged();
}
Slimber::~Slimber() {
[menulet release];
delete server;
delete vCardCollection;
+ linkLocalServiceBrowser->stop();
+ delete linkLocalServiceBrowser;
+ dnsSDQuerier->stop();
}
void Slimber::handleSelfConnected(bool b) {
[menulet setSelfConnected: b];
}
-void Slimber::handleRosterChanged() {
+void Slimber::handleServicesChanged() {
NSMutableArray* names = [[NSMutableArray alloc] init];
- boost::shared_ptr<RosterPayload> roster = linkLocalRoster->getRoster();
- foreach(const RosterItemPayload& item, roster->getItems()) {
- NSString* name = [NSString stringWithUTF8String: item.getName().getUTF8Data()];
- [names addObject: name];
- [name release];
+ foreach(const LinkLocalService& service, linkLocalServiceBrowser->getServices()) {
+ [names addObject: [NSString stringWithUTF8String: service.getDescription().getUTF8Data()]];
}
[menulet setUserNames: names];