diff --git a/lib/native/windows-64/jmsofficecomm.dll b/lib/native/windows-64/jmsofficecomm.dll index bffbd08b2..b18065c20 100755 Binary files a/lib/native/windows-64/jmsofficecomm.dll and b/lib/native/windows-64/jmsofficecomm.dll differ diff --git a/lib/native/windows/jmsofficecomm.dll b/lib/native/windows/jmsofficecomm.dll index e5e3c1c28..878fec780 100755 Binary files a/lib/native/windows/jmsofficecomm.dll and b/lib/native/windows/jmsofficecomm.dll differ diff --git a/src/native/windows/msofficecomm/MessengerContact.cxx b/src/native/windows/msofficecomm/MessengerContact.cxx index 73e9a2fb5..edc0c74d7 100644 --- a/src/native/windows/msofficecomm/MessengerContact.cxx +++ b/src/native/windows/msofficecomm/MessengerContact.cxx @@ -205,15 +205,19 @@ MessengerContact::get_PresenceProperties(VARIANT *pvPresenceProperties) switch (status) { case MISTATUS_AWAY: + case MISTATUS_OUT_OF_OFFICE: availability = 15000; break; case MISTATUS_BE_RIGHT_BACK: availability = 12000; break; case MISTATUS_BUSY: + case MISTATUS_IN_A_CONFERENCE: + case MISTATUS_ON_THE_PHONE: availability = 6000; break; case MISTATUS_DO_NOT_DISTURB: + case MISTATUS_ALLOW_URGENT_INTERRUPTIONS: availability = 9000; break; case MISTATUS_INVISIBLE: diff --git a/src/native/windows/msofficecomm/OutOfProcessServer.cxx b/src/native/windows/msofficecomm/OutOfProcessServer.cxx index 1ca39748b..c8b596528 100644 --- a/src/native/windows/msofficecomm/OutOfProcessServer.cxx +++ b/src/native/windows/msofficecomm/OutOfProcessServer.cxx @@ -493,11 +493,36 @@ DWORD OutOfProcessServer::setIMProvidersCommunicatorUpAndRunning(DWORD dw) if (dw) { - lastError - = regCreateKeyAndSetValue( - _T("Software\\Microsoft\\Office\\12.0\\Common\\PersonaMenu"), - _T("RTCApplication"), - 3); + /* + * Testing on various machines/setups has shown that the following may + * or may not succeed without affecting the presence integration so just + * try them and then go on with the rest regardless of their success. + */ + lastError = ERROR_SUCCESS; + regCreateKeyAndSetValue( + _T("Software\\Microsoft\\Office\\11.0\\Common\\PersonaMenu"), + _T("RTCApplication"), + 3); + regCreateKeyAndSetValue( + _T("Software\\Microsoft\\Office\\12.0\\Common\\PersonaMenu"), + _T("RTCApplication"), + 3); + regCreateKeyAndSetValue( + _T("Software\\Microsoft\\Office\\11.0\\Common\\PersonaMenu"), + _T("QueryServiceForStatus"), + 2); + regCreateKeyAndSetValue( + _T("Software\\Microsoft\\Office\\12.0\\Common\\PersonaMenu"), + _T("QueryServiceForStatus"), + 2); + regCreateKeyAndSetValue( + _T("Software\\Microsoft\\Office\\11.0\\Outlook\\IM"), + _T("SetOnlineStatusLevel"), + 3); + regCreateKeyAndSetValue( + _T("Software\\Microsoft\\Office\\12.0\\Outlook\\IM"), + _T("SetOnlineStatusLevel"), + 3); } else lastError = ERROR_SUCCESS;