summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2014-08-13 16:22:38 -0700
committerFabrice Di Meglio <fdimeglio@google.com>2014-08-15 11:36:31 -0700
commit61a1fec49fbfbe8bdd0137ddb06e5eacf4f8ec54 (patch)
treefe8378adba969bd44b0a1315037b6dd306b00a02
parent898671f14123695d74bd308450a462d11a341d1a (diff)
downloadpackages_apps_Settings-61a1fec49fbfbe8bdd0137ddb06e5eacf4f8ec54.zip
packages_apps_Settings-61a1fec49fbfbe8bdd0137ddb06e5eacf4f8ec54.tar.gz
packages_apps_Settings-61a1fec49fbfbe8bdd0137ddb06e5eacf4f8ec54.tar.bz2
Fix bug #16703191 APN settings shows back button even when you intent into it
- change a bit the way we recognize a SubSetting. Now we can pass the new ":settings:show_fragment_as_subsetting" Intent extra for forcing it. - convert ApnSettings to a SettingsPreferenceFragment Change-Id: I22167ad317530c0a58c4d522a72826f9d34ad2d3
-rw-r--r--AndroidManifest.xml7
-rw-r--r--res/layout/apn_disallowed_preference_screen.xml39
-rw-r--r--res/layout/apn_preference_layout.xml2
-rw-r--r--src/com/android/settings/ApnSettings.java79
-rw-r--r--src/com/android/settings/Settings.java1
-rw-r--r--src/com/android/settings/SettingsActivity.java28
6 files changed, 74 insertions, 82 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 2d2f9b4..6cb227c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -295,10 +295,11 @@
</intent-filter>
</activity-alias>
- <activity android:name="ApnSettings"
+ <activity android:name="Settings$ApnSettingsActivity"
android:label="@string/apn_settings"
- android:configChanges="orientation|keyboardHidden|screenSize"
android:launchMode="singleTask"
+ android:taskAffinity="com.android.settings"
+ android:configChanges="orientation|keyboardHidden|screenSize"
android:parentActivityName="Settings$WirelessSettingsActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -308,6 +309,8 @@
</intent-filter>
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
android:value="true" />
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.ApnSettings" />
</activity>
<activity android:name="Settings$BluetoothSettingsActivity"
diff --git a/res/layout/apn_disallowed_preference_screen.xml b/res/layout/apn_disallowed_preference_screen.xml
deleted file mode 100644
index 6ac8137..0000000
--- a/res/layout/apn_disallowed_preference_screen.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * 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.
- */
--->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/listContainer"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <ListView android:id="@android:id/list"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:drawSelectorOnTop="false"
- android:scrollbarStyle="insideOverlay"
- android:background="@android:color/white"
- android:cacheColorHint="@android:color/white"
- android:fadingEdgeLength="16dip" />
-
- <TextView android:id="@android:id/empty"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center"
- android:text="@string/apn_settings_not_available"
- android:textAppearance="?android:attr/textAppearanceMedium" />
-</FrameLayout> \ No newline at end of file
diff --git a/res/layout/apn_preference_layout.xml b/res/layout/apn_preference_layout.xml
index 8938f29..f3ee453 100644
--- a/res/layout/apn_preference_layout.xml
+++ b/res/layout/apn_preference_layout.xml
@@ -18,6 +18,8 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical">
diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java
index ef79f2b..b8864f3 100644
--- a/src/com/android/settings/ApnSettings.java
+++ b/src/com/android/settings/ApnSettings.java
@@ -39,8 +39,12 @@ import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
import android.provider.Telephony;
import android.util.Log;
+import android.view.LayoutInflater;
import android.view.Menu;
+import android.view.MenuInflater;
import android.view.MenuItem;
+import android.view.View;
+import android.widget.TextView;
import android.widget.Toast;
import com.android.internal.telephony.Phone;
@@ -50,7 +54,7 @@ import com.android.internal.telephony.TelephonyProperties;
import java.util.ArrayList;
-public class ApnSettings extends PreferenceActivity implements
+public class ApnSettings extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener {
static final String TAG = "ApnSettings";
@@ -121,33 +125,47 @@ public class ApnSettings extends PreferenceActivity implements
}
@Override
- protected void onCreate(Bundle icicle) {
+ public void onCreate(Bundle icicle) {
super.onCreate(icicle);
mUm = (UserManager) getSystemService(Context.USER_SERVICE);
+ mMobileStateFilter = new IntentFilter(
+ TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED);
+
+ setHasOptionsMenu(true);
+ }
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ TextView empty = (TextView) getView().findViewById(android.R.id.empty);
+ if (empty != null) {
+ empty.setText(R.string.apn_settings_not_available);
+ getListView().setEmptyView(empty);
+ }
+
if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
mUnavailable = true;
- setContentView(R.layout.apn_disallowed_preference_screen);
+ setPreferenceScreen(new PreferenceScreen(getActivity(), null));
return;
}
addPreferencesFromResource(R.xml.apn_settings);
- getListView().setItemsCanFocus(true);
- mMobileStateFilter = new IntentFilter(
- TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED);
+ getListView().setItemsCanFocus(true);
}
@Override
- protected void onResume() {
+ public void onResume() {
super.onResume();
if (mUnavailable) {
return;
}
- registerReceiver(mMobileStateReceiver, mMobileStateFilter);
+ getActivity().registerReceiver(mMobileStateReceiver, mMobileStateFilter);
if (!mRestoreDefaultApnMode) {
fillList();
@@ -157,18 +175,18 @@ public class ApnSettings extends PreferenceActivity implements
}
@Override
- protected void onPause() {
+ public void onPause() {
super.onPause();
if (mUnavailable) {
return;
}
- unregisterReceiver(mMobileStateReceiver);
+ getActivity().unregisterReceiver(mMobileStateReceiver);
}
@Override
- protected void onDestroy() {
+ public void onDestroy() {
super.onDestroy();
if (mRestoreDefaultApnThread != null) {
@@ -199,7 +217,7 @@ public class ApnSettings extends PreferenceActivity implements
String key = cursor.getString(ID_INDEX);
String type = cursor.getString(TYPES_INDEX);
- ApnPreference pref = new ApnPreference(this);
+ ApnPreference pref = new ApnPreference(getActivity());
pref.setKey(key);
pref.setTitle(name);
@@ -228,16 +246,18 @@ public class ApnSettings extends PreferenceActivity implements
}
@Override
- public boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- menu.add(0, MENU_NEW, 0,
- getResources().getString(R.string.menu_new))
- .setIcon(android.R.drawable.ic_menu_add)
- .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
- menu.add(0, MENU_RESTORE, 0,
- getResources().getString(R.string.menu_restore))
- .setIcon(android.R.drawable.ic_menu_upload);
- return true;
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ if (!mUnavailable) {
+ menu.add(0, MENU_NEW, 0,
+ getResources().getString(R.string.menu_new))
+ .setIcon(android.R.drawable.ic_menu_add)
+ .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+ menu.add(0, MENU_RESTORE, 0,
+ getResources().getString(R.string.menu_restore))
+ .setIcon(android.R.drawable.ic_menu_upload);
+ }
+
+ super.onCreateOptionsMenu(menu, inflater);
}
@Override
@@ -329,9 +349,9 @@ public class ApnSettings extends PreferenceActivity implements
fillList();
getPreferenceScreen().setEnabled(true);
mRestoreDefaultApnMode = false;
- dismissDialog(DIALOG_RESTORE_DEFAULTAPN);
+ removeDialog(DIALOG_RESTORE_DEFAULTAPN);
Toast.makeText(
- ApnSettings.this,
+ getActivity(),
getResources().getString(
R.string.restore_default_apn_completed),
Toast.LENGTH_LONG).show();
@@ -362,20 +382,13 @@ public class ApnSettings extends PreferenceActivity implements
}
@Override
- protected Dialog onCreateDialog(int id) {
+ public Dialog onCreateDialog(int id) {
if (id == DIALOG_RESTORE_DEFAULTAPN) {
- ProgressDialog dialog = new ProgressDialog(this);
+ ProgressDialog dialog = new ProgressDialog(getActivity());
dialog.setMessage(getResources().getString(R.string.restore_default_apn));
dialog.setCancelable(false);
return dialog;
}
return null;
}
-
- @Override
- protected void onPrepareDialog(int id, Dialog dialog) {
- if (id == DIALOG_RESTORE_DEFAULTAPN) {
- getPreferenceScreen().setEnabled(false);
- }
- }
}
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 123d4fe..b714d28 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -98,5 +98,6 @@ public class Settings extends SettingsActivity {
public static class QuickLaunchSettingsActivity extends SettingsActivity { /* empty */ }
public static class TopLevelSettings extends SettingsActivity { /* empty */ }
+ public static class ApnSettingsActivity extends SettingsActivity { /* empty */ }
}
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index bf0d9a1..9f1600b 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -184,8 +184,13 @@ public class SettingsActivity extends Activity
* that fragment.
*/
public static final String EXTRA_SHOW_FRAGMENT_TITLE = ":settings:show_fragment_title";
- public static final String EXTRA_SHOW_FRAGMENT_TITLE_RESID = ":settings:show_fragment_title_resid";
- public static final String EXTRA_SHOW_FRAGMENT_AS_SHORTCUT = ":settings:show_fragment_as_shortcut";
+ public static final String EXTRA_SHOW_FRAGMENT_TITLE_RESID =
+ ":settings:show_fragment_title_resid";
+ public static final String EXTRA_SHOW_FRAGMENT_AS_SHORTCUT =
+ ":settings:show_fragment_as_shortcut";
+
+ public static final String EXTRA_SHOW_FRAGMENT_AS_SUBSETTING =
+ ":settings:show_fragment_as_subsetting";
private static final String META_DATA_KEY_FRAGMENT_CLASS =
"com.android.settings.FRAGMENT_CLASS";
@@ -290,7 +295,8 @@ public class SettingsActivity extends Activity
NotificationAppList.class.getName(),
AppNotificationSettings.class.getName(),
OtherSoundSettings.class.getName(),
- QuickLaunchSettings.class.getName()
+ QuickLaunchSettings.class.getName(),
+ ApnSettings.class.getName()
};
@@ -495,12 +501,15 @@ public class SettingsActivity extends Activity
final String className = cn.getClassName();
mIsShowingDashboard = className.equals(Settings.class.getName());
- final boolean isSubSettings = className.equals(SubSettings.class.getName());
- // If this is a sub settings or not the main Dashboard and not a Shortcut and an initial
- // Fragment then apply the SubSettings theme for the ActionBar content insets
- if (isSubSettings ||
- (!mIsShowingDashboard && !mIsShortcut && (initialFragmentName != null))) {
+ // This is a "Sub Settings" when:
+ // - this is a real SubSettings
+ // - or :settings:show_fragment_as_subsetting is passed to the Intent
+ final boolean isSubSettings = className.equals(SubSettings.class.getName()) ||
+ intent.getBooleanExtra(EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, false);
+
+ // If this is a sub settings, then apply the SubSettings Theme for the ActionBar content insets
+ if (isSubSettings) {
// Check also that we are not a Theme Dialog as we don't want to override them
final int themeResId = getThemeResId();
if (themeResId != R.style.Theme_DialogWhenLarge &&
@@ -550,6 +559,9 @@ public class SettingsActivity extends Activity
} else if (isSubSettings) {
mDisplayHomeAsUpEnabled = true;
mDisplaySearch = true;
+ } else {
+ mDisplayHomeAsUpEnabled = false;
+ mDisplaySearch = false;
}
setTitleFromIntent(intent);