Index: src/meanwhile/src/mw_common.h =================================================================== --- src/meanwhile/src/mw_common.h (revision 10872) +++ src/meanwhile/src/mw_common.h (working copy) @@ -153,10 +153,11 @@ /* 8.3.5 User Status Types */ enum mwStatusType { - mwStatus_ACTIVE = 0x0020, - mwStatus_IDLE = 0x0040, - mwStatus_AWAY = 0x0060, - mwStatus_BUSY = 0x0080, + mwStatus_ACTIVE = 0x0020, + mwStatus_IDLE = 0x0040, + mwStatus_AWAY = 0x0060, + mwStatus_BUSY = 0x0080, + mwStatus_IN_MEETING = 0x0008, // new status 'in meeting' }; Index: src/sametime_proto.cpp =================================================================== --- src/sametime_proto.cpp (revision 10872) +++ src/sametime_proto.cpp (working copy) @@ -160,14 +160,14 @@ ret = PF2_ONLINE | PF2_SHORTAWAY | PF2_HEAVYDND | PF2_LIGHTDND; break; case PFLAGNUM_3: - ret = PF2_ONLINE | PF2_SHORTAWAY | PF2_HEAVYDND; + ret = PF2_ONLINE | PF2_SHORTAWAY | PF2_HEAVYDND | PF2_LIGHTDND; break; case PFLAGNUM_4: ret = PF4_SUPPORTTYPING | PF4_IMSENDUTF; break; - case PFLAGNUM_5: - ret = PF2_LIGHTDND; - break; + //case PFLAGNUM_5: // no need for PFN_5 as we support in both ways statusses + // ret = PF2_LIGHTDND; + // break; case PFLAG_UNIQUEIDTEXT: ret = (DWORD_PTR)Translate("ID"); break; Index: src/sametime_session.cpp =================================================================== --- src/sametime_session.cpp (revision 10872) +++ src/sametime_session.cpp (working copy) @@ -11,6 +11,7 @@ char* szOnline; char* szAway; char* szDND; + char* szOccupied; // away msg for 'in meeting' status } AwayMessages; void __cdecl SessionClear(mwSession* session) @@ -215,7 +216,7 @@ } break; - case 8: // new 'in a meeting' status, not handled by meanwhile lib + case mwStatus_IN_MEETING: // new 'in meeting' status new_status = ID_STATUS_OCCUPIED; break; @@ -273,7 +274,9 @@ case ID_STATUS_AWAY: us.desc = AwayMessages.szAway; us.status = mwStatus_AWAY; break; - case ID_STATUS_OCCUPIED: + case ID_STATUS_OCCUPIED: // link 'Occupied' MIR_NG status with 'in meeting' Sametime status + us.desc = AwayMessages.szOccupied; us.status = mwStatus_IN_MEETING; + break; case ID_STATUS_DND: us.desc = AwayMessages.szDND; us.status = mwStatus_BUSY; break; @@ -333,6 +336,8 @@ replaceStr(AwayMessages.szAway, msg); else if (status == ID_STATUS_DND) replaceStr(AwayMessages.szDND, msg); + else if (status == ID_STATUS_OCCUPIED) + replaceStr(AwayMessages.szOccupied, msg); // manage Occupied as away message else return; // unsupported status @@ -537,6 +542,7 @@ AwayMessages.szOnline = 0; AwayMessages.szAway = 0; AwayMessages.szDND = 0; + AwayMessages.szOccupied = 0; } void CSametimeProto::DeinitAwayMsg() @@ -544,6 +550,7 @@ mir_free(AwayMessages.szOnline); mir_free(AwayMessages.szAway); mir_free(AwayMessages.szDND); + mir_free(AwayMessages.szOccupied); } void SendAnnouncement(SendAnnouncementFunc_arg* arg) Index: src/userlist.cpp =================================================================== --- src/userlist.cpp (revision 10872) +++ src/userlist.cpp (working copy) @@ -484,6 +484,9 @@ case mwStatus_BUSY: new_status = ID_STATUS_DND; break; + case mwStatus_IN_MEETING: // link 'in meeting' Sametime status + new_status = ID_STATUS_OCCUPIED; // with 'Occupied' MIR_NG status + break; } if (new_status != ID_STATUS_IDLE) //SetSessionStatus(new_status); proto->UpdateSelfStatus(); @@ -541,6 +544,12 @@ db_set_w(hContact, proto->m_szModuleName, "Status", new_status); db_set_dw(hContact, proto->m_szModuleName, "IdleTS", 0); break; + case mwStatus_IN_MEETING: + // link 'in meeting' Sametime status to 'Occipied' MIR_NG status + new_status = ID_STATUS_OCCUPIED; + db_set_w(hContact, proto->m_szModuleName, "Status", new_status); + db_set_dw(hContact, proto->m_szModuleName, "IdleTS", 0); + break; } } else