summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2010-10-27 21:22:16 (GMT)
committerRemko Tronçon <git@el-tramo.be>2010-10-29 18:09:04 (GMT)
commitbbd3bbf5747c28ec5925a89ea43fd4767d135f6e (patch)
tree7082ca4c7aa66cf66e3b1ebb24a90a5c1d37a1cd /Swift/Controllers
parent420654a8e323beb7c8877453393568240a3f2a07 (diff)
downloadswift-bbd3bbf5747c28ec5925a89ea43fd4767d135f6e.zip
swift-bbd3bbf5747c28ec5925a89ea43fd4767d135f6e.tar.bz2
Make ChatStateNotifier use StanzaChannel directly.
Diffstat (limited to 'Swift/Controllers')
-rw-r--r--Swift/Controllers/Chat/ChatController.cpp24
-rw-r--r--Swift/Controllers/Chat/ChatController.h9
2 files changed, 5 insertions, 28 deletions
diff --git a/Swift/Controllers/Chat/ChatController.cpp b/Swift/Controllers/Chat/ChatController.cpp
index f465ef1..eb68abd 100644
--- a/Swift/Controllers/Chat/ChatController.cpp
+++ b/Swift/Controllers/Chat/ChatController.cpp
@@ -11,7 +11,6 @@
#include "Swiften/Avatars/AvatarManager.h"
#include "Swiften/Chat/ChatStateNotifier.h"
-#include "Swiften/Chat/ChatStateMessageSender.h"
#include "Swiften/Chat/ChatStateTracker.h"
#include "Swiften/Client/StanzaChannel.h"
#include "Swiften/Disco/EntityCapsManager.h"
@@ -29,11 +28,7 @@ ChatController::ChatController(const JID& self, StanzaChannel* stanzaChannel, IQ
: ChatControllerBase(self, stanzaChannel, iqRouter, chatWindowFactory, contact, presenceOracle, avatarManager, useDelayForLatency, eventStream, eventController, timerFactory) {
isInMUC_ = isInMUC;
lastWasPresence_ = false;
- entityCapsManager_ = entityCapsManager;
- chatStateNotifier_ = new ChatStateNotifier();
- entityCapsManager_->onCapsChanged.connect(boost::bind(&ChatController::handleCapsChanged, this, _1));
- handleCapsChanged(toJID_);
- chatStateMessageSender_ = new ChatStateMessageSender(chatStateNotifier_, stanzaChannel, contact);
+ chatStateNotifier_ = new ChatStateNotifier(stanzaChannel, contact, entityCapsManager);
chatStateTracker_ = new ChatStateTracker();
nickResolver_ = nickResolver;
presenceOracle_->onPresenceChange.connect(boost::bind(&ChatController::handlePresenceChange, this, _1));
@@ -64,23 +59,12 @@ ChatController::ChatController(const JID& self, StanzaChannel* stanzaChannel, IQ
ChatController::~ChatController() {
delete chatStateNotifier_;
- delete chatStateMessageSender_;
delete chatStateTracker_;
}
-void ChatController::handleCapsChanged(const JID& jid) {
- if (jid == toJID_) {
- DiscoInfo::ref caps = entityCapsManager_->getCaps(toJID_);
- bool hasCSN = caps && caps->hasFeature(ChatState::getFeatureNamespace());
- chatStateNotifier_->setContactHas85Caps(hasCSN);
- }
-}
-
void ChatController::setToJID(const JID& jid) {
- chatStateNotifier_->contactJIDHasChanged();
- chatStateMessageSender_->setContact(jid);
+ chatStateNotifier_->setContact(jid);
ChatControllerBase::setToJID(jid);
- handleCapsChanged(jid);
Presence::ref presence;
if (isInMUC_) {
presence = presenceOracle_->getLastPresence(jid);
@@ -112,9 +96,7 @@ void ChatController::preHandleIncomingMessage(boost::shared_ptr<MessageEvent> me
}
void ChatController::preSendMessageRequest(boost::shared_ptr<Message> message) {
- if (chatStateNotifier_->contactShouldReceiveStates()) {
- message->addPayload(boost::shared_ptr<Payload>(new ChatState(ChatState::Active)));
- }
+ chatStateNotifier_->addChatStateRequest(message);
}
void ChatController::postSendMessage(const String& body, boost::shared_ptr<Stanza> sentStanza) {
diff --git a/Swift/Controllers/Chat/ChatController.h b/Swift/Controllers/Chat/ChatController.h
index 26686ff..601ae1b 100644
--- a/Swift/Controllers/Chat/ChatController.h
+++ b/Swift/Controllers/Chat/ChatController.h
@@ -4,18 +4,17 @@
* See Documentation/Licenses/GPLv3.txt for more information.
*/
-#ifndef SWIFTEN_ChatController_H
-#define SWIFTEN_ChatController_H
+#pragma once
#include "Swift/Controllers/Chat/ChatControllerBase.h"
namespace Swift {
class AvatarManager;
class ChatStateNotifier;
- class ChatStateMessageSender;
class ChatStateTracker;
class NickResolver;
class EntityCapsManager;
+
class ChatController : public ChatControllerBase {
public:
ChatController(const JID& self, StanzaChannel* stanzaChannel, IQRouter* iqRouter, ChatWindowFactory* chatWindowFactory, const JID &contact, NickResolver* nickResolver, PresenceOracle* presenceOracle, AvatarManager* avatarManager, bool isInMUC, bool useDelayForLatency, UIEventStream* eventStream, EventController* eventController, TimerFactory* timerFactory, EntityCapsManager* entityCapsManager);
@@ -34,19 +33,15 @@ namespace Swift {
virtual boost::optional<boost::posix_time::ptime> getMessageTimestamp(boost::shared_ptr<Message>) const;
void handleStanzaAcked(boost::shared_ptr<Stanza> stanza);
void dayTicked() {lastWasPresence_ = false;}
- void handleCapsChanged(const JID& jid);
private:
NickResolver* nickResolver_;
ChatStateNotifier* chatStateNotifier_;
- ChatStateMessageSender* chatStateMessageSender_;
ChatStateTracker* chatStateTracker_;
- EntityCapsManager* entityCapsManager_;
bool isInMUC_;
bool lastWasPresence_;
String lastStatusChangeString_;
std::map<boost::shared_ptr<Stanza>, String> unackedStanzas_;
};
}
-#endif