void Protocol::SetStatusMsg(int aStatus, const TCHAR *message) { if (!CanSetStatusMsg(aStatus)) return; CallProtoService(name, PS_SETAWAYMSG, (WPARAM)aStatus, (LPARAM)message); }
void Protocol::SetStatus(int aStatus) { char status_msg[256]; if (ServiceExists(MS_CS_SETSTATUSEX)) { // :'( // BEGIN From commomstatus.cpp (KeepStatus) int i, count, pCount; PROTOCOLDESCRIPTOR **protos; pCount = 0; CallService(MS_PROTO_ENUMPROTOCOLS,(WPARAM)&count,(LPARAM)&protos); for(i=0;i<count;i++) { if(protos[i]->type!=PROTOTYPE_PROTOCOL || CallProtoService(protos[i]->szName,PS_GETCAPS,PFLAGNUM_2,0)==0) continue; pCount += 1; } // END From commomstatus.cpp (KeepStatus) PROTOCOLSETTINGEX **pse = (PROTOCOLSETTINGEX **) mir_alloc0(pCount * sizeof(PROTOCOLSETTINGEX *)); for(i = 0; i < pCount; i++) { pse[i] = (PROTOCOLSETTINGEX *) mir_alloc0(sizeof(PROTOCOLSETTINGEX)); pse[i]->szName = ""; } pse[0]->cbSize = sizeof(PROTOCOLSETTINGEX); pse[0]->status = aStatus; pse[0]->szName = (char *) name.c_str(); GetStatusMsg(aStatus, status_msg, sizeof(status_msg)); pse[0]->szMsg = status_msg; CallService(MS_CS_SETSTATUSEX, (WPARAM) &pse, 0); for(i = 0; i < pCount; i++) mir_free(pse[i]); mir_free(pse); } else { Call(PS_SETSTATUS, aStatus); if (CanSetStatusMsg(aStatus)) { char status_msg[MS_MYDETAILS_GETMYSTATUSMESSAGE_BUFFER_SIZE]; GetStatusMsg(aStatus, status_msg, sizeof(status_msg)); SetStatusMsg(aStatus, status_msg); } } }
void Protocol::SetStatus(int aStatus) { TCHAR status_msg[256]; if (ServiceExists(MS_CS_SETSTATUSEX)) { // BEGIN From commomstatus.cpp (KeepStatus) int i, count, pCount; PROTOACCOUNT **accs; pCount = 0; ProtoEnumAccounts(&count, &accs); for (i = 0; i < count; i++) { if (CallProtoService(accs[i]->szModuleName, PS_GETCAPS, PFLAGNUM_2, 0) == 0) continue; pCount++; } // END From commomstatus.cpp (KeepStatus) PROTOCOLSETTINGEX **pse = (PROTOCOLSETTINGEX **)mir_calloc(pCount * sizeof(PROTOCOLSETTINGEX *)); for (i = 0; i < pCount; i++) { pse[i] = (PROTOCOLSETTINGEX *)mir_calloc(sizeof(PROTOCOLSETTINGEX)); pse[i]->szName = ""; } pse[0]->cbSize = sizeof(PROTOCOLSETTINGEX); pse[0]->status = aStatus; pse[0]->szName = name; GetStatusMsg(aStatus, status_msg, SIZEOF(status_msg)); pse[0]->szMsg = status_msg; CallService(MS_CS_SETSTATUSEX, (WPARAM)&pse, 0); for (i = 0; i < pCount; i++) mir_free(pse[i]); mir_free(pse); } else { CallProtoService(name, PS_SETSTATUS, aStatus, 0); if (CanSetStatusMsg(aStatus)) { TCHAR status_msg[MS_MYDETAILS_GETMYSTATUSMESSAGE_BUFFER_SIZE]; GetStatusMsg(aStatus, status_msg, SIZEOF(status_msg)); SetStatusMsg(aStatus, status_msg); } } }
void Protocol::SetStatusMsg(int aStatus, const char *message) { if (!CanSetStatusMsg(aStatus)) return; if (ServiceExists(MS_NAS_SETSTATE)) { NAS_PROTOINFO pi = {0}, *pii; pi.cbSize = sizeof(pi); pi.szProto = (char *) name.c_str(); pi.szMsg = mir_strdup(message); pi.status = aStatus; pii = π CallService(MS_NAS_SETSTATE, (WPARAM) &pii, 1); } else { Call(PS_SETAWAYMSG, (WPARAM) aStatus, (LPARAM) message); } }
bool Protocol::CanSetStatusMsg() { return CanSetStatusMsg(GetStatus()); // <- Simple away handled by this one }
bool Protocol::CanSetStatusMsg() { return CanSetStatusMsg(GetStatus()) // <- Simple away handled by this one || ServiceExists(MS_NAS_INVOKESTATUSWINDOW); }