diff options
-rw-r--r-- | res/menu/carrier_select_options.xml | 24 | ||||
-rw-r--r-- | res/xml/carrier_select.xml | 18 | ||||
-rw-r--r-- | src/com/android/phone/NetworkSetting.java | 87 |
3 files changed, 95 insertions, 34 deletions
diff --git a/res/menu/carrier_select_options.xml b/res/menu/carrier_select_options.xml new file mode 100644 index 000000000..cfbbae940 --- /dev/null +++ b/res/menu/carrier_select_options.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2015 The CyanogenMod 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. +--> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + parent="@android:style/Theme.Material.Settings"> + <item + android:id="@+id/action_search_networks" + android:icon="@*android:drawable/ic_menu_refresh" + android:title="@string/search_networks" + android:showAsAction="ifRoom|withText" /> +</menu> diff --git a/res/xml/carrier_select.xml b/res/xml/carrier_select.xml index bc223f165..8f0ccc804 100644 --- a/res/xml/carrier_select.xml +++ b/res/xml/carrier_select.xml @@ -13,17 +13,15 @@ See the License for the specific language governing permissions and limitations under the License. --> -<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" - android:key="list_networks_key" - android:title="@string/label_available"> - <Preference - android:key="button_srch_netwrks_key" - android:title="@string/search_networks" - android:summary="@string/sum_search_networks" - android:persistent="false"/> - <Preference - android:key="button_auto_select_key" +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> + <Preference + android:key="button_auto_select_key" android:title="@string/select_automatically" android:summary="@string/sum_select_automatically" android:persistent="false"/> + + <PreferenceCategory + android:title="@string/label_available" + android:key="list_networks_key"> + </PreferenceCategory> </PreferenceScreen> diff --git a/src/com/android/phone/NetworkSetting.java b/src/com/android/phone/NetworkSetting.java index 5ce541ff9..58840fdf8 100644 --- a/src/com/android/phone/NetworkSetting.java +++ b/src/com/android/phone/NetworkSetting.java @@ -16,6 +16,7 @@ package com.android.phone; +import android.app.ActionBar; import android.app.Dialog; import android.app.ProgressDialog; import android.content.ComponentName; @@ -38,6 +39,9 @@ import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.telephony.SubscriptionManager; import com.android.internal.telephony.CommandException; @@ -70,7 +74,6 @@ public class NetworkSetting extends PreferenceActivity //String keys for preference lookup private static final String LIST_NETWORKS_KEY = "list_networks_key"; - private static final String BUTTON_SRCH_NETWRKS_KEY = "button_srch_netwrks_key"; private static final String BUTTON_AUTO_SELECT_KEY = "button_auto_select_key"; //map of network controls to the network data. @@ -87,9 +90,11 @@ public class NetworkSetting extends PreferenceActivity //preference objects private PreferenceGroup mNetworkList; - private Preference mSearchButton; private Preference mAutoSelect; + //Menu Item(s) + private MenuItem mSearchButton; + private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { @@ -102,7 +107,7 @@ public class NetworkSetting extends PreferenceActivity case EVENT_NETWORK_SELECTION_DONE: if (DBG) log("hideProgressPanel"); removeDialog(DIALOG_NETWORK_SELECTION); - getPreferenceScreen().setEnabled(true); + mNetworkList.setEnabled(true); ar = (AsyncResult) msg.obj; if (ar.exception != null) { @@ -128,7 +133,7 @@ public class NetworkSetting extends PreferenceActivity // this exception, and Log it. Log.w(LOG_TAG, "[NetworksList] Fail to dismiss auto select dialog ", e); } - getPreferenceScreen().setEnabled(true); + mNetworkList.setEnabled(true); ar = (AsyncResult) msg.obj; if (ar.exception != null) { @@ -192,10 +197,7 @@ public class NetworkSetting extends PreferenceActivity public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { boolean handled = false; - if (preference == mSearchButton) { - loadNetworksList(); - handled = true; - } else if (preference == mAutoSelect) { + if (preference == mAutoSelect) { selectNetworkAutomatic(); handled = true; } else { @@ -232,9 +234,9 @@ public class NetworkSetting extends PreferenceActivity if (!mIsForeground) { finish(); } else { - getPreferenceScreen().setEnabled(true); + mNetworkList.setEnabled(true); clearList(); - displayEmptyNetworkList(true); + displayEmptyNetworkList(); } } @@ -259,6 +261,12 @@ public class NetworkSetting extends PreferenceActivity addPreferencesFromResource(R.xml.carrier_select); + //Provide "Back"-Arrow in ActionBar + final ActionBar actionBar = getActionBar(); + if (actionBar != null) { + actionBar.setDisplayHomeAsUpEnabled(true); + } + int subId; Intent intent = getIntent(); if (intent != null && intent.getExtras() != null) { @@ -271,7 +279,6 @@ public class NetworkSetting extends PreferenceActivity mNetworkList = (PreferenceGroup) getPreferenceScreen().findPreference(LIST_NETWORKS_KEY); mNetworkMap = new HashMap<Preference, OperatorInfo>(); - mSearchButton = getPreferenceScreen().findPreference(BUTTON_SRCH_NETWRKS_KEY); mAutoSelect = getPreferenceScreen().findPreference(BUTTON_AUTO_SELECT_KEY); // Start the Network Query service, and bind it. @@ -286,6 +293,37 @@ public class NetworkSetting extends PreferenceActivity } @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu items for use in the action bar + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.carrier_select_options, menu); + + mSearchButton = menu.findItem(R.id.action_search_networks); + + return super.onCreateOptionsMenu(menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle presses on the action bar items + if (item == mSearchButton) { + loadNetworksList(); + return true; + } else if (item.getItemId() == android.R.id.home) { + finish(); + return true; + } + + return super.onOptionsItemSelected(item); + } + + private void enableSearchButton (boolean enabled) { + if (mSearchButton != null) { + mSearchButton.setEnabled(enabled); + } + } + + @Override public void onResume() { super.onResume(); mIsForeground = true; @@ -358,12 +396,19 @@ public class NetworkSetting extends PreferenceActivity (id == DIALOG_NETWORK_AUTO_SELECT)) { // when the dialogs come up, we'll need to indicate that // we're in a busy state to dissallow further input. - getPreferenceScreen().setEnabled(false); + mNetworkList.setEnabled(false); } } - private void displayEmptyNetworkList(boolean flag) { - mNetworkList.setTitle(flag ? R.string.empty_networks_list : R.string.label_available); + + private void displayEmptyNetworkList() { + //Add "no networks"-text as a disabled preference + Preference emptyPref = new Preference(this); + emptyPref.setTitle(R.string.empty_networks_list); + emptyPref.setSelectable(false); + emptyPref.setEnabled(false); + + mNetworkList.addPreference(emptyPref); } private void displayNetworkSeletionInProgress(String networkStr) { @@ -445,8 +490,6 @@ public class NetworkSetting extends PreferenceActivity } } } - - displayEmptyNetworkList(false); } /** @@ -480,17 +523,15 @@ public class NetworkSetting extends PreferenceActivity if (DBG) log("Fail to dismiss network load list dialog " + e); } - getPreferenceScreen().setEnabled(true); + mNetworkList.setEnabled(true); clearList(); if (status != NetworkQueryService.QUERY_OK) { if (DBG) log("error while querying available networks"); displayNetworkQueryFailed(status); - displayEmptyNetworkList(true); + displayEmptyNetworkList(); } else { if (result != null){ - displayEmptyNetworkList(false); - TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String simOperatorName = telephonyManager.getSimOperatorName(); @@ -530,7 +571,7 @@ public class NetworkSetting extends PreferenceActivity if (DBG) log(" " + ni); } } else { - displayEmptyNetworkList(true); + displayEmptyNetworkList(); } } } @@ -556,9 +597,7 @@ public class NetworkSetting extends PreferenceActivity } private void clearList() { - for (Preference p : mNetworkMap.keySet()) { - mNetworkList.removePreference(p); - } + mNetworkList.removeAll(); mNetworkMap.clear(); } |