/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Copyright @ 2015 Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.java.sip.communicator.plugin.addrbook.msoutlook;
import com.sun.jna.platform.win32.*;
import net.java.sip.communicator.plugin.addrbook.*;
/**
* Reading and writing the registry keys used by
* Outlook 2010 and higher.
*
* @author Hristo Terezov
*/
public class RegistryHandler
{
/**
* The key under which the default IM application is placed.
*/
private static String REGISTRY_DEFAULT_IM_APPLICATION_KEY
= "Software\\IM Providers";
/**
* The value under which the default IM application is placed.
*/
private static String REGISTRY_DEFAULT_IM_APPLICATION_VALUE
= "DefaultIMApp";
/**
* Default IM application for communicator. This value is used to unset
* Jitsi as default application.
*/
private static String REGISTRY_DEFAULT_IM_APPLICATION_COMMUNICATOR
= "Communicator";
/**
* The key under which the default IM application is placed.
*/
private static String REGISTRY_DEFAULT_MAIL_CLIENT_KEY
= "Software\\Clients\\Mail";
/**
* Checks whether given application is the default IM application or not.
* @param appName the application name.
* @return is the default IM application or not.
*/
public static boolean isDefaultIMApp(String appName)
{
return Advapi32Util.registryGetStringValue(
WinReg.HKEY_CURRENT_USER,
REGISTRY_DEFAULT_IM_APPLICATION_KEY,
REGISTRY_DEFAULT_IM_APPLICATION_VALUE).equals(appName);
}
/**
* Checks whether Jitsi is the default IM application.
* @return is Jitsi the default IM application or not.
*/
public static boolean isJitsiDefaultIMApp()
{
if(!Advapi32Util.registryValueExists(WinReg.HKEY_CURRENT_USER,
REGISTRY_DEFAULT_IM_APPLICATION_KEY,
REGISTRY_DEFAULT_IM_APPLICATION_VALUE))
return false;
return Advapi32Util.registryGetStringValue(
WinReg.HKEY_CURRENT_USER,
REGISTRY_DEFAULT_IM_APPLICATION_KEY,
REGISTRY_DEFAULT_IM_APPLICATION_VALUE).equals(
getApplicationName());
}
/**
* Sets given application as default IM application
*
* @param appName the application name
*/
public static void setDefaultIMApp(String appName)
{
Advapi32Util.registrySetStringValue(
WinReg.HKEY_CURRENT_USER,
REGISTRY_DEFAULT_IM_APPLICATION_KEY,
REGISTRY_DEFAULT_IM_APPLICATION_VALUE,
appName);
}
/**
* Sets Outlook as default mail client.
*/
public static void setOutlookAsDefaultMailClient()
{
Advapi32Util.registrySetStringValue(
WinReg.HKEY_CURRENT_USER,
REGISTRY_DEFAULT_MAIL_CLIENT_KEY,
null,
"Microsoft Outlook");
}
/**
* Sets Jitsi as default IM application.
*/
public static void setJitsiAsDefaultApp()
{
String appName = getApplicationName();
if(!isDefaultIMApp(appName))
setDefaultIMApp(appName);
}
/**
* Unsets Jitsi as default IM application. Overrides the registry value
* with setting communicator as default IM application.
*/
public static void unsetDefaultApp()
{
if(isDefaultIMApp(getApplicationName()))
setDefaultIMApp(REGISTRY_DEFAULT_IM_APPLICATION_COMMUNICATOR);
}
/**
* Returns the application name.
* @return the application name
*/
private static String getApplicationName()
{
return AddrBookActivator.getResources().getSettingsString(
"service.gui.APPLICATION_NAME");
}
}