Files
@ 8c529dbabbbc
Branch filter:
Location: libtransport.git/include/transport/conversation.h - annotation
8c529dbabbbc
3.8 KiB
text/plain
semi-working PMs in muc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d d39705842a2a b5c026470f07 76c678dd6f1d d39705842a2a 8e03fbec4701 8e03fbec4701 d39705842a2a 76c678dd6f1d d39705842a2a d39705842a2a d39705842a2a d39705842a2a d39705842a2a d39705842a2a b5c026470f07 76c678dd6f1d d39705842a2a d39705842a2a d39705842a2a 76c678dd6f1d 76c678dd6f1d d39705842a2a d39705842a2a d39705842a2a d39705842a2a 2add374fbd61 d39705842a2a d39705842a2a d39705842a2a d39705842a2a d39705842a2a d39705842a2a d39705842a2a d39705842a2a 8e03fbec4701 d39705842a2a d39705842a2a d39705842a2a d39705842a2a 0a33a3100eb9 0a33a3100eb9 0a33a3100eb9 76c678dd6f1d d39705842a2a d39705842a2a d39705842a2a 76c678dd6f1d 76c678dd6f1d d39705842a2a d39705842a2a d39705842a2a b62274f1ddda b62274f1ddda b62274f1ddda b62274f1ddda d39705842a2a d39705842a2a d39705842a2a 943dc1925b7c 943dc1925b7c 943dc1925b7c 943dc1925b7c d39705842a2a d39705842a2a d39705842a2a d39705842a2a 8c529dbabbbc 943dc1925b7c d39705842a2a d39705842a2a d39705842a2a 943dc1925b7c 943dc1925b7c 943dc1925b7c 943dc1925b7c 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d 0a33a3100eb9 943dc1925b7c 943dc1925b7c 76c678dd6f1d 76c678dd6f1d 76c678dd6f1d | /**
* XMPP - libpurple transport
*
* Copyright (C) 2009, Jan Kaluza <hanzz@soc.pidgin.im>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
#pragma once
#include <string>
#include <algorithm>
#include "transport/transport.h"
#include "Swiften/Swiften.h"
#include "Swiften/Elements/Message.h"
namespace Transport {
class ConversationManager;
/// Represents one XMPP-Legacy network conversation.
class Conversation {
public:
/// Type of participants in MUC rooms.
enum ParticipantFlag {None, Moderator};
/// Creates new conversation.
/// \param conversationManager ConversationManager associated with this Conversation.
/// \param legacyName Legacy network name of recipient.
/// \param muc True if this conversation is Multi-user chat.
Conversation(ConversationManager *conversationManager, const std::string &legacyName, bool muc = false);
/// Destructor.
virtual ~Conversation();
/// Returns legacy network name of this conversation.
/// \return legacy network name of this conversation.
const std::string &getLegacyName() { return m_legacyName; }
/// Handles new message from Legacy network and forwards it to XMPP.
/// \param message Message received from legacy network.
/// \param nickname For MUC conversation this is nickname of room participant who sent this message.
void handleMessage(boost::shared_ptr<Swift::Message> &message, const std::string &nickname = "");
/// Handles participant change in MUC.
/// \param nickname Nickname of participant which changed.
/// \param flag ParticipantFlag.
/// \param status Current status of this participant.
/// \param statusMessage Current status message of this participant.
/// \param newname If participant was renamed, this variable contains his new name.
void handleParticipantChanged(const std::string &nickname, int flag, int status = Swift::StatusShow::None, const std::string &statusMessage = "", const std::string &newname = "");
/// Sets XMPP user nickname in MUC rooms.
/// \param nickname XMPP user nickname in MUC rooms.
void setNickname(const std::string &nickname) {
m_nickname = nickname;
}
/// Sends message to Legacy network.
/// \param message Message.
virtual void sendMessage(boost::shared_ptr<Swift::Message> &message) = 0;
/// Returns ConversationManager associated with this Conversation.
/// \return ConversationManager associated with this Conversation.
ConversationManager *getConversationManager() {
return m_conversationManager;
}
/// Returns True if this conversation is MUC room.
/// \return True if this conversation is MUC room.
bool isMUC() {
return m_muc;
}
/// Sets room name associated with this Conversation.
/// This is used to detect Private messages associated with particular room.
/// \param room room name associated with this Conversation.
void setRoom(const std::string &room);
/// Returns room name associated with this Conversation.
/// \return room name associated with this Conversation.
const std::string &getRoom() {
return m_room;
}
private:
ConversationManager *m_conversationManager;
std::string m_legacyName;
std::string m_nickname;
std::string m_room;
bool m_muc;
};
}
|