Libpurple: Implement has_focus callback, mark the conversation as active on any chatstate notification
This commit is contained in:
parent
99e958e8c8
commit
f81ecc9522
1 changed files with 19 additions and 9 deletions
|
@ -648,25 +648,7 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleTypingRequest(const std::string &user, const std::string &buddyName) {
|
void updateConversationActivity(PurpleAccount *account, const std::string &buddyName) {
|
||||||
PurpleAccount *account = m_sessions[user];
|
|
||||||
if (account) {
|
|
||||||
LOG4CXX_INFO(logger, user << ": sending typing notify to " << buddyName);
|
|
||||||
serv_send_typing_wrapped(purple_account_get_connection_wrapped(account), buddyName.c_str(), PURPLE_TYPING);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void handleTypedRequest(const std::string &user, const std::string &buddyName) {
|
|
||||||
PurpleAccount *account = m_sessions[user];
|
|
||||||
if (account) {
|
|
||||||
serv_send_typing_wrapped(purple_account_get_connection_wrapped(account), buddyName.c_str(), PURPLE_TYPED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void handleStoppedTypingRequest(const std::string &user, const std::string &buddyName) {
|
|
||||||
PurpleAccount *account = m_sessions[user];
|
|
||||||
if (account) {
|
|
||||||
serv_send_typing_wrapped(purple_account_get_connection_wrapped(account), buddyName.c_str(), PURPLE_NOT_TYPING);
|
|
||||||
PurpleConversation *conv = purple_find_conversation_with_account_wrapped(PURPLE_CONV_TYPE_CHAT, buddyName.c_str(), account);
|
PurpleConversation *conv = purple_find_conversation_with_account_wrapped(PURPLE_CONV_TYPE_CHAT, buddyName.c_str(), account);
|
||||||
if (!conv) {
|
if (!conv) {
|
||||||
conv = purple_find_conversation_with_account_wrapped(PURPLE_CONV_TYPE_IM, buddyName.c_str(), account);
|
conv = purple_find_conversation_with_account_wrapped(PURPLE_CONV_TYPE_IM, buddyName.c_str(), account);
|
||||||
|
@ -676,6 +658,30 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
|
||||||
purple_conversation_update_wrapped(conv, PURPLE_CONV_UPDATE_UNSEEN);
|
purple_conversation_update_wrapped(conv, PURPLE_CONV_UPDATE_UNSEEN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void handleTypingRequest(const std::string &user, const std::string &buddyName) {
|
||||||
|
PurpleAccount *account = m_sessions[user];
|
||||||
|
if (account) {
|
||||||
|
LOG4CXX_INFO(logger, user << ": sending typing notify to " << buddyName);
|
||||||
|
serv_send_typing_wrapped(purple_account_get_connection_wrapped(account), buddyName.c_str(), PURPLE_TYPING);
|
||||||
|
updateConversationActivity(account, buddyName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleTypedRequest(const std::string &user, const std::string &buddyName) {
|
||||||
|
PurpleAccount *account = m_sessions[user];
|
||||||
|
if (account) {
|
||||||
|
serv_send_typing_wrapped(purple_account_get_connection_wrapped(account), buddyName.c_str(), PURPLE_TYPED);
|
||||||
|
updateConversationActivity(account, buddyName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleStoppedTypingRequest(const std::string &user, const std::string &buddyName) {
|
||||||
|
PurpleAccount *account = m_sessions[user];
|
||||||
|
if (account) {
|
||||||
|
serv_send_typing_wrapped(purple_account_get_connection_wrapped(account), buddyName.c_str(), PURPLE_NOT_TYPING);
|
||||||
|
updateConversationActivity(account, buddyName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleAttentionRequest(const std::string &user, const std::string &buddyName, const std::string &message) {
|
void handleAttentionRequest(const std::string &user, const std::string &buddyName, const std::string &message) {
|
||||||
|
@ -1223,6 +1229,10 @@ static void conv_chat_remove_users(PurpleConversation *conv, GList *users) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean conv_has_focus(PurpleConversation *conv) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static PurpleConversationUiOps conversation_ui_ops =
|
static PurpleConversationUiOps conversation_ui_ops =
|
||||||
{
|
{
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -1235,7 +1245,7 @@ static PurpleConversationUiOps conversation_ui_ops =
|
||||||
conv_chat_remove_users, /* chat_remove_users */
|
conv_chat_remove_users, /* chat_remove_users */
|
||||||
NULL,//pidgin_conv_chat_update_user, /* chat_update_user */
|
NULL,//pidgin_conv_chat_update_user, /* chat_update_user */
|
||||||
NULL,//pidgin_conv_present_conversation, /* present */
|
NULL,//pidgin_conv_present_conversation, /* present */
|
||||||
NULL,//pidgin_conv_has_focus, /* has_focus */
|
conv_has_focus,//pidgin_conv_has_focus, /* has_focus */
|
||||||
NULL,//pidgin_conv_custom_smiley_add, /* custom_smiley_add */
|
NULL,//pidgin_conv_custom_smiley_add, /* custom_smiley_add */
|
||||||
NULL,//pidgin_conv_custom_smiley_write, /* custom_smiley_write */
|
NULL,//pidgin_conv_custom_smiley_write, /* custom_smiley_write */
|
||||||
NULL,//pidgin_conv_custom_smiley_close, /* custom_smiley_close */
|
NULL,//pidgin_conv_custom_smiley_close, /* custom_smiley_close */
|
||||||
|
|
Loading…
Add table
Reference in a new issue