From 89c317be2685dafd3bef0540e83812adb7e5ac6a Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 26 Jun 2017 14:03:15 +0200 Subject: [PATCH] Fixed issue 3948: settings popup not hidding when click on notif --- res/values/non_localizable_strings.xml | 4 ++++ res/xml/preferences.xml | 15 ++++++++---- .../org/linphone/LinphoneActivity.java | 7 ++++++ .../org/linphone/SettingsFragment.java | 24 +++++++++++++++++++ 4 files changed, 45 insertions(+), 5 deletions(-) diff --git a/res/values/non_localizable_strings.xml b/res/values/non_localizable_strings.xml index f96aa416e..6133c8b63 100644 --- a/res/values/non_localizable_strings.xml +++ b/res/values/non_localizable_strings.xml @@ -139,6 +139,10 @@ pref_first_time_linphone_chat_storage pref_sipaccount_key + pref_audio_key + pref_call_key + pref_chat_key + pref_network_key pref_advanced_key pref_manage_key diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 798b2d34d..5fab85a1f 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -49,7 +49,8 @@ + android:title="@string/pref_audio_title" + android:key="@string/pref_audio_key"> @@ -176,7 +177,8 @@ + android:title="@string/pref_call_title" + android:key="@string/pref_call_key"> @@ -228,7 +230,8 @@ + android:title="@string/pref_chat_title" + android:key="@string/pref_chat_key"> @@ -250,7 +253,8 @@ + android:title="@string/pref_network_title" + android:key="@string/pref_network_key"> @@ -338,7 +342,8 @@ + android:title="@string/pref_advanced_title" + android:key="@string/pref_advanced_key"> diff --git a/src/android/org/linphone/LinphoneActivity.java b/src/android/org/linphone/LinphoneActivity.java index e3780f8fb..cbeb043bd 100644 --- a/src/android/org/linphone/LinphoneActivity.java +++ b/src/android/org/linphone/LinphoneActivity.java @@ -29,6 +29,7 @@ import java.util.Comparator; import java.util.Date; import java.util.List; +import org.linphone.SettingsFragment; import org.linphone.LinphoneManager.AddressType; import org.linphone.assistant.AssistantActivity; import org.linphone.assistant.RemoteProvisioningLoginActivity; @@ -1423,6 +1424,12 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); + + if (getCurrentFragment() == FragmentsAvailable.SETTINGS) { + if (fragment instanceof SettingsFragment) { + ((SettingsFragment) fragment).closePreferenceScreen(); + } + } Bundle extras = intent.getExtras(); if (extras != null && extras.getBoolean("GoToChat", false)) { diff --git a/src/android/org/linphone/SettingsFragment.java b/src/android/org/linphone/SettingsFragment.java index dd3ad4208..83a32795e 100644 --- a/src/android/org/linphone/SettingsFragment.java +++ b/src/android/org/linphone/SettingsFragment.java @@ -67,10 +67,25 @@ public class SettingsFragment extends PreferencesListFragment { private LinphonePreferences mPrefs; private Handler mHandler = new Handler(); private LinphoneCoreListenerBase mListener; + private PreferenceScreen currentPreferenceScreen; + private Preference.OnPreferenceClickListener prefClickListener = new Preference.OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + currentPreferenceScreen = (PreferenceScreen) preference; + return false; + } + }; public SettingsFragment() { super(R.xml.preferences); } + + public void closePreferenceScreen() { + if (currentPreferenceScreen != null) { + currentPreferenceScreen.getDialog().dismiss(); + currentPreferenceScreen = null; + } + } @Override public void onCreate(Bundle bundle) { @@ -145,6 +160,15 @@ public class SettingsFragment extends PreferencesListFragment { // Sets listener for each preference to update the matching value in linphonecore private void setListeners() { + findPreference(getString(R.string.pref_tunnel_key)).setOnPreferenceClickListener(prefClickListener); + findPreference(getString(R.string.pref_audio_key)).setOnPreferenceClickListener(prefClickListener); + findPreference(getString(R.string.pref_video_key)).setOnPreferenceClickListener(prefClickListener); + findPreference(getString(R.string.pref_call_key)).setOnPreferenceClickListener(prefClickListener); + findPreference(getString(R.string.pref_chat_key)).setOnPreferenceClickListener(prefClickListener); + findPreference(getString(R.string.pref_network_key)).setOnPreferenceClickListener(prefClickListener); + findPreference(getString(R.string.pref_advanced_key)).setOnPreferenceClickListener(prefClickListener); + + setTunnelPreferencesListener(); setAudioPreferencesListener(); setVideoPreferencesListener();