diff --git a/app/src/main/java/org/linphone/LinphoneActivity.java b/app/src/main/java/org/linphone/LinphoneActivity.java index c9e7ae584..7ea2b2d9d 100644 --- a/app/src/main/java/org/linphone/LinphoneActivity.java +++ b/app/src/main/java/org/linphone/LinphoneActivity.java @@ -1532,6 +1532,7 @@ public class LinphoneActivity extends LinphoneGenericActivity LinphoneActivity.instance().goToChatList(); return true; case SETTINGS: + case ACCOUNT_SETTINGS: case ABOUT: hideTopBar(); // just in case LinphoneActivity.instance().goToDialerFragment(); diff --git a/app/src/main/java/org/linphone/settings/AccountPreferencesFragment.java b/app/src/main/java/org/linphone/settings/AccountPreferencesFragment.java index 021f5855b..58a8513ad 100644 --- a/app/src/main/java/org/linphone/settings/AccountPreferencesFragment.java +++ b/app/src/main/java/org/linphone/settings/AccountPreferencesFragment.java @@ -27,6 +27,7 @@ import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceCategory; +import android.preference.PreferenceFragment; import android.view.WindowManager; import java.util.ArrayList; import java.util.List; @@ -44,7 +45,7 @@ import org.linphone.fragments.FragmentsAvailable; import org.linphone.settings.LinphonePreferences.AccountBuilder; import org.linphone.utils.LinphoneUtils; -public class AccountPreferencesFragment extends PreferencesListFragment +public class AccountPreferencesFragment extends PreferenceFragment implements AccountCreatorListener { private int mN; private final OnPreferenceClickListener linkAccountListener = @@ -61,7 +62,7 @@ public class AccountPreferencesFragment extends PreferencesListFragment } }; private boolean mIsNewAccount = false; - private final LinphonePreferences mPrefs; + private LinphonePreferences mPrefs; private final OnPreferenceChangeListener mAvpfRRIntervalChangedListener = new OnPreferenceChangeListener() { @Override @@ -312,11 +313,6 @@ public class AccountPreferencesFragment extends PreferencesListFragment }; private AccountCreator mAccountCreator; - public AccountPreferencesFragment() { - super(R.xml.account_preferences); - mPrefs = LinphonePreferences.instance(); - } - private static boolean isEditTextEmpty(String s) { return s.equals(""); // really empty. } @@ -333,7 +329,9 @@ public class AccountPreferencesFragment extends PreferencesListFragment public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.account_preferences); + mPrefs = LinphonePreferences.instance(); mN = getArguments().getInt("Account", 0); if (mN == mPrefs.getAccountCount()) { mIsNewAccount = true; diff --git a/app/src/main/java/org/linphone/settings/PreferencesListFragment.java b/app/src/main/java/org/linphone/settings/PreferencesListFragment.java deleted file mode 100644 index 3b0205e56..000000000 --- a/app/src/main/java/org/linphone/settings/PreferencesListFragment.java +++ /dev/null @@ -1,286 +0,0 @@ -package org.linphone.settings; - -/* -PreferencesListFragment.java -Copyright (C) 2017 Belledonne Communications, Grenoble, France - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -import android.annotation.SuppressLint; -import android.app.Activity; -import android.app.ListFragment; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.preference.Preference; -import android.preference.PreferenceGroup; -import android.preference.PreferenceManager; -import android.preference.PreferenceScreen; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewParent; -import android.widget.ListView; -import android.widget.RelativeLayout; -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import org.linphone.R; -import org.linphone.core.tools.Log; - -@SuppressLint("ValidFragment") -public class PreferencesListFragment extends ListFragment { - /** The starting request code given out to preference framework. */ - private static final int FIRST_REQUEST_CODE = 100; - - private static final int MSG_BIND_PREFERENCES = 0; - - private PreferenceManager mPreferenceManager; - private ListView mPreferencesList; - private final Handler mHandler = - new Handler() { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_BIND_PREFERENCES: - bindPreferences(); - break; - } - } - }; - private int mXmlResID; - - PreferencesListFragment(int xmlId) { - mXmlResID = xmlId; - } - - // Must be provided - public PreferencesListFragment() {} - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle b) { - // Hack to correctly display preferences - View view = inflater.inflate(R.layout.settings, null); - - ViewParent p = mPreferencesList.getParent(); - if (p != null) { - ((ViewGroup) p).removeView(mPreferencesList); - } - - RelativeLayout layout = view.findViewById(R.id.topLayout); - layout.addView(mPreferencesList); - - postBindPreferences(); - return view; - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - ViewParent p = mPreferencesList.getParent(); - if (p != null) { - ((ViewGroup) p).removeView(mPreferencesList); - } - } - - @Override - public void onCreate(Bundle bundle) { - super.onCreate(bundle); - - if (bundle != null) { - mXmlResID = bundle.getInt("xml"); - } - - mPreferenceManager = onCreatePreferenceManager(); - mPreferencesList = - (ListView) - LayoutInflater.from(getActivity()) - .inflate(R.layout.preference_list_content, null); - mPreferencesList.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); - addPreferencesFromResource(mXmlResID); - postBindPreferences(); - } - - @Override - public void onStop() { - super.onStop(); - try { - Method m = PreferenceManager.class.getDeclaredMethod("dispatchActivityStop"); - m.setAccessible(true); - m.invoke(mPreferenceManager); - } catch (Exception e) { - Log.e("[PreferencesListFragment] onStop " + e); - } - } - - @Override - public void onDestroy() { - super.onDestroy(); - mPreferencesList = null; - try { - Method m = PreferenceManager.class.getDeclaredMethod("dispatchActivityDestroy"); - m.setAccessible(true); - m.invoke(mPreferenceManager); - } catch (Exception e) { - Log.e("[PreferencesListFragment] onDestroy " + e); - } - } - - @Override - public void onSaveInstanceState(Bundle outState) { - outState.putInt("xml", mXmlResID); - super.onSaveInstanceState(outState); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - try { - Method m = - PreferenceManager.class.getDeclaredMethod( - "dispatchActivityResult", int.class, int.class, Intent.class); - m.setAccessible(true); - m.invoke(mPreferenceManager, requestCode, resultCode, data); - } catch (Exception e) { - Log.e("[PreferencesListFragment] onActivityResult " + e); - } - } - - /** - * Posts a message to bind the preferences to the list view. - * - *
Binding late is preferred as any custom preference types created in {@link
- * #onCreate(Bundle)} are able to have their views recycled.
- */
- private void postBindPreferences() {
- if (mHandler.hasMessages(MSG_BIND_PREFERENCES)) return;
- mHandler.obtainMessage(MSG_BIND_PREFERENCES).sendToTarget();
- }
-
- private void bindPreferences() {
- final PreferenceScreen preferenceScreen = getPreferenceScreen();
- if (preferenceScreen != null && mPreferencesList != null) {
- preferenceScreen.bind(mPreferencesList);
- }
- }
-
- /**
- * Creates the {@link PreferenceManager}.
- *
- * @return The {@link PreferenceManager} used by this activity.
- */
- private PreferenceManager onCreatePreferenceManager() {
- try {
- Constructor