Merge "[2/3] OmniGears: omniswitch as default recents" into android-4.4
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index f08a86a..d0352ae 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -425,4 +425,15 @@
<string name="select_sound_pack_summary">Select the active sound pack</string>
<string name="default_sound_pack">Default (System)</string>
<string name="error_pack_install">Error while installing the sound pack</string>
+
+ <string name="omniswitch_category">OmniSwitch</string>
+ <string name="recents_use_omniswitch_title">Use for recents</string>
+ <string name="recents_use_omniswitch_summary">Use OmniSwitch instead of default recents view</string>
+ <string name="omniswitch_start_settings_title">Settings</string>
+ <string name="omniswitch_start_settings_summary">Open OmniSwitch settings</string>
+ <string name="omniswitch_not_installed_title">Warning</string>
+ <string name="omniswitch_not_installed_summary">OmniSwitch is not installed</string>
+ <string name="omniswitch_not_installed_message">OmniSwitch is not installed</string>
+ <string name="omniswitch_first_time_title">Information</string>
+ <string name="omniswitch_first_time_message">Make sure you have enabled OmniSwitch. You can do this by using \"Settings\" below</string>
</resources>
diff --git a/res/xml/more_interface_settings.xml b/res/xml/more_interface_settings.xml
index d17361b..5f82d68 100644
--- a/res/xml/more_interface_settings.xml
+++ b/res/xml/more_interface_settings.xml
@@ -57,4 +57,20 @@
android:dependency="show_recents_memory_indicator"
android:persistent="false" />
+ <PreferenceCategory
+ android:key="category_omniswitch"
+ android:title="@string/omniswitch_category"/>
+
+ <CheckBoxPreference
+ android:key="recents_use_omniswitch"
+ android:title="@string/recents_use_omniswitch_title"
+ android:summary="@string/recents_use_omniswitch_summary"
+ android:persistent="false" />
+
+ <Preference
+ android:key="omniswitch_start_settings"
+ android:title="@string/omniswitch_start_settings_title"
+ android:summary="@string/omniswitch_start_settings_summary"
+ android:persistent="false" />
+
</PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java b/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java
index 6ce63ac..af277a5 100644
--- a/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java
@@ -21,8 +21,13 @@
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.R;
+import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.Intent;
+import android.content.DialogInterface;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
@@ -42,11 +47,22 @@
private static final String SHOW_RECENTS_MEMORY_INDICATOR = "show_recents_memory_indicator";
private static final String RECENTS_MEMORY_INDICATOR_LOCATION =
"recents_memory_indicator_location";
+ private static final String RECENTS_USE_OMNISWITCH = "recents_use_omniswitch";
+ private static final String OMNISWITCH_START_SETTINGS = "omniswitch_start_settings";
+
+ // Package name of the omnniswitch app
+ public static final String OMNISWITCH_PACKAGE_NAME = "org.omnirom.omniswitch";
+ // Intent for launching the omniswitch settings actvity
+ public static Intent INTENT_OMNISWITCH_SETTINGS = new Intent(Intent.ACTION_MAIN)
+ .setClassName(OMNISWITCH_PACKAGE_NAME, OMNISWITCH_PACKAGE_NAME + ".SettingsActivity");
private CheckBoxPreference mRecentClearAll;
private ListPreference mRecentClearAllPosition;
private CheckBoxPreference mShowRecentsMemoryIndicator;
private ListPreference mRecentsMemoryIndicatorPosition;
+ private CheckBoxPreference mRecentsUseOmniSwitch;
+ private Preference mOmniSwitchSettings;
+ private boolean mOmniSwitchInitCalled;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -80,11 +96,31 @@
mRecentsMemoryIndicatorPosition.setValue(recentsMemoryIndicatorPosition);
}
mRecentsMemoryIndicatorPosition.setOnPreferenceChangeListener(this);
+
+ mRecentsUseOmniSwitch = (CheckBoxPreference)
+ prefSet.findPreference(RECENTS_USE_OMNISWITCH);
+
+ try {
+ mRecentsUseOmniSwitch.setChecked(Settings.System.getInt(resolver,
+ Settings.System.RECENTS_USE_OMNISWITCH) == 1);
+ mOmniSwitchInitCalled = true;
+ } catch(SettingNotFoundException e){
+ // if the settings value is unset
+ }
+ mRecentsUseOmniSwitch.setOnPreferenceChangeListener(this);
+
+ mOmniSwitchSettings = (Preference)
+ prefSet.findPreference(OMNISWITCH_START_SETTINGS);
+ mOmniSwitchSettings.setEnabled(mRecentsUseOmniSwitch.isChecked());
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
- return true;
+ if (preference == mOmniSwitchSettings){
+ startActivity(INTENT_OMNISWITCH_SETTINGS);
+ return true;
+ }
+ return super.onPreferenceTreeClick(preferenceScreen, preference);
}
public boolean onPreferenceChange(Preference preference, Object objValue) {
@@ -103,10 +139,59 @@
String value = (String) objValue;
Settings.System.putString(
resolver, Settings.System.RECENTS_MEMORY_INDICATOR_LOCATION, value);
+ } else if (preference == mRecentsUseOmniSwitch) {
+ boolean value = (Boolean) objValue;
+ if (value && !isOmniSwitchInstalled()){
+ openOmniSwitchNotInstalledWarning();
+ return false;
+ }
+
+ // if value has never been set before
+ if (value && !mOmniSwitchInitCalled){
+ openOmniSwitchFirstTimeWarning();
+ mOmniSwitchInitCalled = true;
+ }
+
+ Settings.System.putInt(
+ resolver, Settings.System.RECENTS_USE_OMNISWITCH, value ? 1 : 0);
+ mOmniSwitchSettings.setEnabled(value && isOmniSwitchInstalled());
+ mOmniSwitchSettings.setSummary(isOmniSwitchInstalled() ?
+ getResources().getString(R.string.omniswitch_start_settings_summary) :
+ getResources().getString(R.string.omniswitch_not_installed_summary));
} else {
return false;
}
return true;
}
+
+ private void openOmniSwitchNotInstalledWarning() {
+ new AlertDialog.Builder(getActivity())
+ .setTitle(getResources().getString(R.string.omniswitch_not_installed_title))
+ .setMessage(getResources().getString(R.string.omniswitch_not_installed_message))
+ .setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ }
+ }).show();
+ }
+
+ private void openOmniSwitchFirstTimeWarning() {
+ new AlertDialog.Builder(getActivity())
+ .setTitle(getResources().getString(R.string.omniswitch_first_time_title))
+ .setMessage(getResources().getString(R.string.omniswitch_first_time_message))
+ .setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ }
+ }).show();
+ }
+
+ private boolean isOmniSwitchInstalled() {
+ final PackageManager pm = getPackageManager();
+ try {
+ pm.getPackageInfo(OMNISWITCH_PACKAGE_NAME, PackageManager.GET_ACTIVITIES);
+ return true;
+ } catch (NameNotFoundException e) {
+ return false;
+ }
+ }
}