Adds Jitsi to the list of IM Providers in windows registry. Adds checkbox

to the windows installer and the Options dialog which allows the user to
make Jitsi the default IM provider.
fix-message-formatting 5127
hristoterezov 12 years ago
parent 79c861c0da
commit dc0fc296d4

@ -79,8 +79,57 @@
Name="IMApplication"
Type="string"
Value="@APP_LAUNCHER_NAME@.exe" />
</RegistryKey>
<RegistryKey
Key="SOFTWARE\IM Providers\@APP_NAME@"
Root="HKLM" Action="createAndRemoveOnUninstall">
<RegistryValue
Name="FriendlyName"
Type="string"
Value="@APP_NAME@" />
<RegistryValue
Name="GUID"
Type="string"
Value="{8885370D-B33E-44B7-875D-28E403CF9270}" />
<RegistryValue
Name="ProcessName"
Type="string"
Value="@APP_LAUNCHER_NAME@.exe" />
</RegistryKey>
</Component>
<Component
Id="Component_SetDefaultIMProvider"
Directory="TARGETDIR"
Guid="abb6afe7-8787-4325-841e-a9181a09fcc9">
<Condition><![CDATA[SET_DEFAULT_IM_APP = 1]]></Condition>
<RegistryKey
Key="Software\IM Providers"
Root="HKCU">
<RegistryValue
KeyPath="yes"
Name="DefaultIMApp"
Type="string"
Value="@APP_NAME@" />
</RegistryKey>
</Component>
<Component
Id="Component_UnsetDefaultIMProvider"
Directory="TARGETDIR"
Guid="47b4b7a0-d668-4bb0-9da1-7103e4c668d0">
<Condition><![CDATA[(IS_DEFAULT_IM_APP = "@APP_NAME@") AND ((SET_DEFAULT_IM_APP = 0) OR NOT (SET_DEFAULT_IM_APP))]]></Condition>
<RegistryKey
Key="Software\IM Providers"
Root="HKCU">
<RegistryValue
KeyPath="yes"
Name="DefaultIMApp"
Type="string"
Value="Communicator" />
</RegistryKey>
</Component>
<?if $(var.Platform) = x64 ?>
<Component
Id="Component_MsOfficeCommRegistryEntries_X64"
@ -97,6 +146,22 @@
Type="string"
Value="@APP_LAUNCHER_NAME@.exe" />
</RegistryKey>
<RegistryKey
Key="SOFTWARE\IM Providers\Jitsi"
Root="HKLM" Action="createAndRemoveOnUninstall">
<RegistryValue
Name="FriendlyName"
Type="string"
Value="Jisti" />
<RegistryValue
Name="GUID"
Type="string"
Value="{8885370D-B33E-44B7-875D-28E403CF9270}" />
<RegistryValue
Name="ProcessName"
Type="string"
Value="@APP_LAUNCHER_NAME@.exe" />
</RegistryKey>
</Component>
<?endif ?>

@ -17,6 +17,7 @@
<String Id="ShortcutsAndRegistryDlg_CreateDesktop" Overridable="yes">&amp;Desktop</String>
<String Id="ShortcutsAndRegistryDlg_CreateAutoStart" Overridable="yes">&amp;Auto-start when computer restarts or reboots</String>
<String Id="ShortcutsAndRegistryDlg_AssociateProtocols" Overridable="yes">&amp;Associate Protocols</String>
<String Id="ShortcutsAndRegistryDlg_DefaultIMApp" Overridable="yes">M&amp;ake [ProductName] the default Instant Messaging Provider (Outlook integration)</String>
<String Id="WelcomeText1" Overridable="yes"><![CDATA[@WelcomeText1@]]></String>
<String Id="WelcomeText2" Overridable="yes"><![CDATA[@WelcomeText2@]]></String>

@ -17,6 +17,7 @@
<String Id="ShortcutsAndRegistryDlg_CreateDesktop" Overridable="yes">Placer un accès direct sur le Bureau</String>
<String Id="ShortcutsAndRegistryDlg_CreateAutoStart" Overridable="yes">Lancer automatiquement quand lordinateur démarre</String>
<String Id="ShortcutsAndRegistryDlg_AssociateProtocols" Overridable="yes">&amp;Protocoles associés</String>
<String Id="ShortcutsAndRegistryDlg_DefaultIMApp" Overridable="yes">M&amp;ake [ProductName] the default Instant Messaging Provider (Outlook integration)</String>
<String Id="WelcomeText1" Overridable="yes"><![CDATA[Ce logiciel est developpé par la communauté de [ProductName] ]]></String>
<String Id="WelcomeText2" Overridable="yes"><![CDATA[Découvrir notre site : @APP_WEB@]]></String>

@ -199,14 +199,16 @@
<Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
<Control Id="ShortcutGroup" Type="GroupBox" X="20" Y="60" Width="330" Height="65" Text="!(loc.ShortcutsAndRegistryDlg_CreateShortcuts)" />
<Control Id="ShortcutGroup" Type="GroupBox" X="20" Y="60" Width="330" Height="80" Text="!(loc.ShortcutsAndRegistryDlg_CreateShortcuts)" />
<Control Id="StartMenuShortcutCheckBox" Type="CheckBox" X="25" Y="75" Width="320" Height="15" Property="CREATE_START_MENU_SHORTCUT" CheckBoxValue="1" Text="!(loc.ShortcutsAndRegistryDlg_CreateStartMenu)" />
<Control Id="DesktopShortcutCheckBox" Type="CheckBox" X="25" Y="90" Width="320" Height="15" Property="CREATE_DESKTOP_SHORTCUT" CheckBoxValue="1" Text="!(loc.ShortcutsAndRegistryDlg_CreateDesktop)" />
<Control Id="StartupShortcutCheckBox" Type="CheckBox" X="25" Y="105" Width="320" Height="15" Property="HAS_STARTUP_REGISTRY" CheckBoxValue="1" Text="!(loc.ShortcutsAndRegistryDlg_CreateAutoStart)" />
<Control Id="DefaultIMApplicationCheckBox" Type="CheckBox" X="25" Y="120" Width="320" Height="15" Property="SET_DEFAULT_IM_APP" CheckBoxValue="1" Text="!(loc.ShortcutsAndRegistryDlg_DefaultIMApp)" />
<Control Id="RegistryGroup" Type="GroupBox" X="20" Y="130" Width="330" Height="50" Text="!(loc.ShortcutsAndRegistryDlg_AssociateProtocols)" />
<Control Id="SipRegistryEntriesCheckBox" Type="CheckBox" X="25" Y="145" Width="320" Height="15" Property="CREATE_SIP_REGISTRY_ENTRIES" CheckBoxValue="1" Text="&amp;SIP" />
<Control Id="XmppRegistryEntriesCheckBox" Type="CheckBox" X="25" Y="160" Width="320" Height="15" Property="CREATE_XMPP_REGISTRY_ENTRIES" CheckBoxValue="1" Text="&amp;XMPP" />
<Control Id="RegistryGroup" Type="GroupBox" X="20" Y="145" Width="330" Height="50" Text="!(loc.ShortcutsAndRegistryDlg_AssociateProtocols)" />
<Control Id="SipRegistryEntriesCheckBox" Type="CheckBox" X="25" Y="160" Width="320" Height="15" Property="CREATE_SIP_REGISTRY_ENTRIES" CheckBoxValue="1" Text="&amp;SIP" />
<Control Id="XmppRegistryEntriesCheckBox" Type="CheckBox" X="25" Y="175" Width="320" Height="15" Property="CREATE_XMPP_REGISTRY_ENTRIES" CheckBoxValue="1" Text="&amp;XMPP" />
</Dialog>
<Dialog Id="CleanSweepDlg" Width="370" Height="270" Title="!(loc.CleanSweepDlg_Title)">
@ -440,6 +442,14 @@
<SetProperty Id="HAS_STARTUP_REGISTRY" After="AppSearch" Value="[HAS_STARTUP_SHORTCUT]">
HAS_STARTUP_SHORTCUT
</SetProperty>
<Property Id="IS_DEFAULT_IM_APP">
<RegistrySearch
Id="RegistrySearch_IsDefaultIMApp"
Key="Software\IM Providers"
Name="DefaultIMApp"
Root="HKCU"
Type="raw" />
</Property>
<Property Id="JRE_VERSION">
<?ifdef JRESetup ?>
<RegistrySearch
@ -453,7 +463,7 @@
1.5
<?endif?>
</Property>
<Property Id="SET_DEFAULT_IM_APP" Value="1" />
<Property Id="ARPCONTACT" Value="@APP_EMAIL@" />
<Property Id="ARPHELPLINK" Value="@APP_WEB@" />
<Property Id="ARPPRODUCTICON" Value="Icon.ico" />

@ -869,6 +869,7 @@ plugin.addrbook.ENABLE_MICROSOFT_OUTLOOK=Enable Microsoft Outlook search
plugin.addrbook.DESCRIPTION=If enabled everything you type in the search field \
of the contact list will be also searched in your system address book and all \
matching contacts from your address book will appear in your contact list.
plugin.addrbook.DEFAULT_IM_APP=Make Jitsi the default Instant Messaging Provider (Outlook integration)
plugin.addrbook.PREFIX=Specific phone number prefix
plugin.addrbook.PREFIX_EXAMPLE=Ex.: 00

@ -8,6 +8,7 @@
import java.util.*;
import net.java.sip.communicator.plugin.addrbook.msoutlook.DefaultIMApp;
import net.java.sip.communicator.service.contactsource.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.util.*;
@ -23,6 +24,7 @@
* support for OS-specific Address Book.
*
* @author Lyubomir Marinov
* @author Hristo Terezov
*/
public class AddrBookActivator
implements BundleActivator
@ -39,6 +41,20 @@ public class AddrBookActivator
*/
public static final String PNAME_ENABLE_MACOSX_ADDRESS_BOOK_SEARCH =
"plugin.addrbook.ENABLE_MACOSX_ADDRESS_BOOK_SEARCH";
/**
* Boolean property that defines whether changing the default IM application
* is enabled or not.
*/
public static final String PNAME_ENABLE_DEFAULT_IM_APPLICATION_CHANGE =
"plugin.addrbook.ENABLE_DEFAULT_IM_APPLICATION_CHANGE";
/**
* Boolean property that defines whether Jitsi should be the default IM
* Application or not.
*/
public static final String PNAME_MAKE_JITSI_DEFAULT_IM_APPLICATION =
"plugin.addrbook.MAKE_JITSI_DEFAULT_IM_APPLICATION";
/**
* The <tt>Logger</tt> used by the <tt>AddrBookActivator</tt> class and its
@ -46,7 +62,7 @@ public class AddrBookActivator
*/
private static final Logger logger
= Logger.getLogger(AddrBookActivator.class);
/**
* The <tt>BundleContext</tt> in which the addrbook plug-in is started.
*/
@ -179,9 +195,9 @@ static void startService()
{
/* Register the ContactSourceService implementation (if any). */
String cssClassName;
ConfigurationService configService = getConfigService();
if (OSUtils.IS_WINDOWS
&& getConfigService().getBoolean(
&& configService.getBoolean(
PNAME_ENABLE_MICROSOFT_OUTLOOK_SEARCH, true))
{
@ -190,7 +206,7 @@ && getConfigService().getBoolean(
+ ".msoutlook.MsOutlookAddrBookContactSourceService";
}
else if (OSUtils.IS_MAC
&& getConfigService().getBoolean(
&& configService.getBoolean(
PNAME_ENABLE_MACOSX_ADDRESS_BOOK_SEARCH, true))
{
cssClassName
@ -199,6 +215,36 @@ && getConfigService().getBoolean(
}
else
return;
if (OSUtils.IS_WINDOWS
&& configService.getBoolean(
PNAME_ENABLE_DEFAULT_IM_APPLICATION_CHANGE, true))
{
String isDefaultIMAppString = configService.getString(
PNAME_MAKE_JITSI_DEFAULT_IM_APPLICATION);
if(isDefaultIMAppString == null)
{
configService.setProperty(
PNAME_MAKE_JITSI_DEFAULT_IM_APPLICATION,
DefaultIMApp.isJitsiDefaultIMApp());
}
else
{
boolean isDefaultIMApp
= Boolean.parseBoolean(isDefaultIMAppString);
if(DefaultIMApp.isJitsiDefaultIMApp() != isDefaultIMApp)
{
if(isDefaultIMApp)
{
setAsDefaultIMApplication();
}
else
{
unsetDefaultIMApplication();
}
}
}
}
try
{
@ -272,4 +318,26 @@ static void stopService()
}
}
}
/**
* Sets Jitsi as Default IM application.
*/
public static void setAsDefaultIMApplication()
{
if (OSUtils.IS_WINDOWS)
{
DefaultIMApp.setJitsiAsDefaultApp();
}
}
/**
* Unsets Jitsi as Default IM application.
*/
public static void unsetDefaultIMApplication()
{
if (OSUtils.IS_WINDOWS)
{
DefaultIMApp.unsetDefaultApp();
}
}
}

@ -58,9 +58,17 @@ public AdvancedConfigForm()
"plugin.addrbook.ENABLE_MACOSX_ADDRESSBOOK"));
if (OSUtils.IS_WINDOWS)
{
propertiesPanel.add(createEnableCheckBox(
AddrBookActivator.PNAME_ENABLE_MICROSOFT_OUTLOOK_SEARCH,
"plugin.addrbook.ENABLE_MICROSOFT_OUTLOOK"));
if(AddrBookActivator.getConfigService().getBoolean(
AddrBookActivator.PNAME_ENABLE_DEFAULT_IM_APPLICATION_CHANGE,
true))
propertiesPanel.add(createDefaultIMApplicationCheckBox(
AddrBookActivator.PNAME_MAKE_JITSI_DEFAULT_IM_APPLICATION,
"plugin.addrbook.DEFAULT_IM_APP"));
}
propertiesPanel.add(Box.createVerticalStrut(15));
@ -100,6 +108,38 @@ public void actionPerformed(ActionEvent arg0)
});
return checkBox;
}
/**
* Creates the default IM application check box.
*
* @return the default IM application check box.
*/
private Component createDefaultIMApplicationCheckBox(
final String configPropName, String labelNameKey)
{
final JCheckBox checkBox = new SIPCommCheckBox(AddrBookActivator
.getResources().getI18NString(
labelNameKey),
AddrBookActivator.getConfigService().getBoolean(configPropName,
false));
checkBox.setAlignmentX(Component.LEFT_ALIGNMENT);
checkBox.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
AddrBookActivator.getConfigService().setProperty(
configPropName,
new Boolean(checkBox.isSelected()).toString());
if (checkBox.isSelected())
AddrBookActivator.setAsDefaultIMApplication();
else
AddrBookActivator.unsetDefaultIMApplication();
}
});
return checkBox;
}
/**
* Creates the prefix panel.

@ -7,6 +7,7 @@ Bundle-SymbolicName: net.java.sip.communicator.plugin.addrbook
Import-Package: javax.swing,
org.jitsi.service.configuration,
org.jitsi.util,
com.sun.jna.platform.win32,
net.java.sip.communicator.service.contactsource,
net.java.sip.communicator.service.gui,
net.java.sip.communicator.service.protocol,

@ -0,0 +1,115 @@
/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
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 for default IM application used by
* Outlook 2010 and higher integration of presence statuses.
*
* @author Hristo Terezov
*/
public class DefaultIMApp
{
/**
* 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";
/**
* 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 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");
}
}
Loading…
Cancel
Save