static VALUE account_send_typing( VALUE self, VALUE buddy_name ) { PurpleAccount *account = PURPLE_ACCOUNT( self); PurpleConnection *gc = NULL; gc = purple_account_get_connection( account ); serv_send_typing( gc, RSTRING_PTR(buddy_name), PURPLE_TYPING ); return Qtrue; }
static int purple_send_typing( struct im_connection *ic, char *who, int flags ) { PurpleTypingState state = PURPLE_NOT_TYPING; PurpleAccount *pa = ic->proto_data; if( flags & OPT_TYPING ) state = PURPLE_TYPING; else if( flags & OPT_THINKING ) state = PURPLE_TYPED; serv_send_typing( purple_account_get_connection( pa ), who, state ); return 1; }
static int purple_send_typing(struct im_connection *ic, char *who, int flags) { PurpleTypingState state = PURPLE_NOT_TYPING; struct purple_data *pd = ic->proto_data; if (flags & OPT_TYPING) { state = PURPLE_TYPING; } else if (flags & OPT_THINKING) { state = PURPLE_TYPED; } serv_send_typing(purple_account_get_connection(pd->account), who, state); return 1; }
bool PurpleIMChat::changeTypingStateCbk(void * dataIn) { Mutex::ScopedLock lock(PurpleIMChat::_mutex); PurpleIMChatCallbackData* cbData = (PurpleIMChatCallbackData*) dataIn; IMChatSession* chatSession = cbData->getIMChatSession(); IMChat::TypingState state = cbData->getTypingState(); PurpleTypingState gState = PURPLE_NOT_TYPING; mConvInfo_t *mConv = FindChatStructById(chatSession->getId()); PurpleConversation *gConv = NULL; if (mConv) { // if ((gConv = (PurpleConversation *)mConv->purple_conv_session)) //VOXOX - JRT - 2009.07.09 This is poor coding technique! gConv = mConv->purple_conv_session; if ( gConv ) { switch (state) { case IMChat::TypingStateTyping: gState = PURPLE_TYPING; break; case IMChat::TypingStateStopTyping: //gState = PURPLE_TYPED; gState = PURPLE_NOT_TYPING; break; default: gState = PURPLE_NOT_TYPING; break; } serv_send_typing(purple_conversation_get_gc(gConv), purple_conversation_get_name(gConv), gState); } } timeoutRemove( cbData ); delete cbData; return TRUE; }