Changeset - 8720eb96789d
[Not reviewed]
0 4 0
HanzZ - 14 years ago 2011-06-22 23:23:52
hanzz.k@gmail.com
Working XHTML-IM from legacy network -> XMPP
4 files changed with 29 insertions and 7 deletions:
0 comments (0 inline, 0 general)
backends/libpurple/main.cpp
Show inline comments
 
@@ -616,22 +616,39 @@ static PurpleBlistUiOps blistUiOps =
 
	NULL
 
};
 

	
 
static void conv_write_im(PurpleConversation *conv, const char *who, const char *message, PurpleMessageFlags flags, time_t mtime) {
 
static void conv_write_im(PurpleConversation *conv, const char *who, const char *msg, PurpleMessageFlags flags, time_t mtime) {
 
	// Don't forwards our own messages.
 
	if (flags & PURPLE_MESSAGE_SEND || flags & PURPLE_MESSAGE_SYSTEM)
 
		return;
 
	PurpleAccount *account = purple_conversation_get_account(conv);
 

	
 
	char *striped = purple_markup_strip_html(message);
 
	std::string msg = striped;
 
	g_free(striped);
 
// 	char *striped = purple_markup_strip_html(message);
 
// 	std::string msg = striped;
 
// 	g_free(striped);
 

	
 
	std::string w = who;
 
	size_t pos = w.find("/");
 
	if (pos != std::string::npos)
 
		w.erase((int) pos, w.length() - (int) pos);
 

	
 
	np->handleMessage(np->m_accounts[account], w, msg);
 
	// Escape HTML characters.
 
	char *newline = purple_strdup_withhtml(msg);
 
	char *strip, *xhtml, *xhtml_linkified;
 
	purple_markup_html_to_xhtml(newline, &xhtml, &strip);
 
	xhtml_linkified = purple_markup_linkify(xhtml);
 
	std::string message_(strip);
 

	
 
	std::string xhtml_(xhtml_linkified);
 
	g_free(newline);
 
	g_free(xhtml);
 
	g_free(xhtml_linkified);
 
	g_free(strip);
 

	
 
	if (xhtml_ == message_) {
 
		xhtml_ = "";
 
	}
 

	
 
	np->handleMessage(np->m_accounts[account], w, message_, "", xhtml_);
 
}
 

	
 
static PurpleConversationUiOps conversation_ui_ops =
include/transport/networkplugin.h
Show inline comments
 
@@ -50,7 +50,7 @@ class NetworkPlugin {
 

	
 
		void handleConnected(const std::string &user);
 

	
 
		void handleMessage(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &nickname = "");
 
		void handleMessage(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &nickname = "", const std::string &xhtml = "");
 

	
 
		void handleSubject(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &nickname = "");
 

	
src/networkplugin.cpp
Show inline comments
 
@@ -62,12 +62,13 @@ NetworkPlugin::~NetworkPlugin() {
 
	delete m_factories;
 
}
 

	
 
void NetworkPlugin::handleMessage(const std::string &user, const std::string &legacyName, const std::string &msg, const std::string &nickname) {
 
void NetworkPlugin::handleMessage(const std::string &user, const std::string &legacyName, const std::string &msg, const std::string &nickname, const std::string &xhtml) {
 
	pbnetwork::ConversationMessage m;
 
	m.set_username(user);
 
	m.set_buddyname(legacyName);
 
	m.set_message(msg);
 
	m.set_nickname(nickname);
 
	m.set_xhtml(xhtml);
 

	
 
	std::string message;
 
	m.SerializeToString(&message);
src/networkpluginserver.cpp
Show inline comments
 
@@ -392,6 +392,10 @@ void NetworkPluginServer::handleConvMessagePayload(const std::string &data, bool
 
		msg->setBody(payload.message());
 
	}
 

	
 
	if (!payload.xhtml().empty()) {
 
		msg->addPayload(boost::make_shared<Swift::XHTMLIMPayload>(payload.xhtml()));
 
	}
 

	
 
	NetworkConversation *conv = (NetworkConversation *) user->getConversationManager()->getConversation(payload.buddyname());
 
	if (!conv) {
 
		conv = new NetworkConversation(user->getConversationManager(), payload.buddyname());
0 comments (0 inline, 0 general)