diff options
-rw-r--r-- | AndroidManifest.xml | 3 | ||||
-rwxr-xr-x | res/values/config.xml | 22 | ||||
-rw-r--r-- | res/values/strings.xml | 11 | ||||
-rw-r--r-- | src/com/android/settings/SettingsLicenseActivity.java | 193 | ||||
-rw-r--r-- | src/com/android/settings/deviceinfo/Status.java | 3 |
5 files changed, 183 insertions, 49 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index f07afa3..bc15121 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -480,7 +480,8 @@ <activity android:name="SettingsLicenseActivity" android:label="@string/settings_license_activity_title" - android:theme="@*android:style/Theme.Holo.Dialog.Alert"> + android:theme="@*android:style/Theme.Holo.Dialog.Alert" + android:configChanges="orientation"> <intent-filter> <action android:name="android.settings.LICENSE" /> <category android:name="android.intent.category.DEFAULT" /> diff --git a/res/values/config.xml b/res/values/config.xml new file mode 100755 index 0000000..4b08c42 --- /dev/null +++ b/res/values/config.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2007 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. +--> + +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- If false, MIN is displayed. If true, MSID is displayed. --> + <bool name="config_msid_enable" translatable="false">false</bool> + +</resources> diff --git a/res/values/strings.xml b/res/values/strings.xml index 360493c..c5b1e7f 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -272,6 +272,15 @@ <!-- Strings for device profile auto connect setting --> <string name="bluetooth_auto_connect">Auto connect</string> + <!-- Activity label of BluetoothPermissionActivity [CHAR LIMIT=none]--> + <string name="bluetooth_connection_permission_request">"Bluetooth connection request"</string> + + <!-- Notification message when a remote Bluetooth device wants to connect to a Bluetooth profile [CHAR LIMIT=none]--> + <string name="bluetooth_connection_notif_message">"Touch to connect to \u0022<xliff:g id="device_name">%1$s</xliff:g>\u0022"</string> + + <!-- Bluetooth connection permission Alert Activity text [CHAR LIMIT=none]--> + <string name="bluetooth_connection_dialog_text">"Do you want to connect to \u0022<xliff:g id="device_name">%1$s</xliff:g>\u0022?"</string> + <!-- Date & time settings screen title --> <string name="date_and_time">Date & time settings</string> <!-- Date/time settings. Summary of the checkbox for choosing between 12 hour time or 24 hour time. Sample of 12-hour time --> @@ -1548,6 +1557,8 @@ <string name="status_number" product="default">My phone number</string> <!-- About phone, status item title. The phone MIN number of the current device.--> <string name="status_min_number">MIN</string> + <!-- About phone, status item title. The phone MSID number of the current device.--> + <string name="status_msid_number">MSID</string> <!-- About phone, status item title. The phone PRL Version of the current device.--> <string name="status_prl_version">PRL Version</string> <!-- About phone, status item title. The phone MEID number of the current LTE/CDMA device. [CHAR LIMIT=30] --> diff --git a/src/com/android/settings/SettingsLicenseActivity.java b/src/com/android/settings/SettingsLicenseActivity.java index 0b809e1..99828ce 100644 --- a/src/com/android/settings/SettingsLicenseActivity.java +++ b/src/com/android/settings/SettingsLicenseActivity.java @@ -17,6 +17,8 @@ package com.android.settings; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.os.SystemProperties; import android.text.TextUtils; import android.util.Config; @@ -24,6 +26,12 @@ import android.util.Log; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; +import android.app.Activity; +import android.app.AlertDialog; +import android.app.ProgressDialog; +import android.content.DialogInterface; +import android.content.DialogInterface.OnDismissListener; +import android.content.res.Configuration; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -32,13 +40,10 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.zip.GZIPInputStream; -import com.android.internal.app.AlertActivity; -import com.android.internal.app.AlertController; - /** * The "dialog" that shows from "License" in the Settings app. */ -public class SettingsLicenseActivity extends AlertActivity { +public class SettingsLicenseActivity extends Activity { private static final String TAG = "SettingsLicenseActivity"; private static final boolean LOGV = false || Config.LOGV; @@ -46,6 +51,83 @@ public class SettingsLicenseActivity extends AlertActivity { private static final String DEFAULT_LICENSE_PATH = "/system/etc/NOTICE.html.gz"; private static final String PROPERTY_LICENSE_PATH = "ro.config.license_path"; + private Handler mHandler; + private WebView mWebView; + private ProgressDialog mSpinnerDlg; + private AlertDialog mTextDlg; + + private class LicenseFileLoader implements Runnable { + + private static final String INNER_TAG = "SettingsLicenseActivity.LicenseFileLoader"; + public static final int STATUS_OK = 0; + public static final int STATUS_NOT_FOUND = 1; + public static final int STATUS_READ_ERROR = 2; + public static final int STATUS_EMPTY_FILE = 3; + + private String mFileName; + private Handler mHandler; + + public LicenseFileLoader(String fileName, Handler handler) { + mFileName = fileName; + mHandler = handler; + } + + public void run() { + + int status = STATUS_OK; + + InputStreamReader inputReader = null; + StringBuilder data = new StringBuilder(2048); + try { + char[] tmp = new char[2048]; + int numRead; + if (mFileName.endsWith(".gz")) { + inputReader = new InputStreamReader( + new GZIPInputStream(new FileInputStream(mFileName))); + } else { + inputReader = new FileReader(mFileName); + } + + while ((numRead = inputReader.read(tmp)) >= 0) { + data.append(tmp, 0, numRead); + } + } catch (FileNotFoundException e) { + Log.e(INNER_TAG, "License HTML file not found at " + mFileName, e); + status = STATUS_NOT_FOUND; + } catch (IOException e) { + Log.e(INNER_TAG, "Error reading license HTML file at " + mFileName, e); + status = STATUS_READ_ERROR; + } finally { + try { + if (inputReader != null) { + inputReader.close(); + } + } catch (IOException e) { + } + } + + if ((status == STATUS_OK) && TextUtils.isEmpty(data)) { + Log.e(INNER_TAG, "License HTML is empty (from " + mFileName + ")"); + status = STATUS_EMPTY_FILE; + } + + // Tell the UI thread that we are finished. + Message msg = mHandler.obtainMessage(status, null); + if (status == STATUS_OK) { + msg.obj = data.toString(); + } + mHandler.sendMessage(msg); + } + } + + public SettingsLicenseActivity() { + super(); + mHandler = null; + mWebView = null; + mSpinnerDlg = null; + mTextDlg = null; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -57,67 +139,82 @@ public class SettingsLicenseActivity extends AlertActivity { return; } - InputStreamReader inputReader = null; - StringBuilder data = null; - try { - data = new StringBuilder(2048); - char tmp[] = new char[2048]; - int numRead; - if (fileName.endsWith(".gz")) { - inputReader = new InputStreamReader( - new GZIPInputStream(new FileInputStream(fileName))); - } else { - inputReader = new FileReader(fileName); - } - while ((numRead = inputReader.read(tmp)) >= 0) { - data.append(tmp, 0, numRead); - } - } catch (FileNotFoundException e) { - Log.e(TAG, "License HTML file not found at " + fileName, e); - showErrorAndFinish(); - return; - } catch (IOException e) { - Log.e(TAG, "Error reading license HTML file at " + fileName, e); - showErrorAndFinish(); - return; - } finally { - try { - if (inputReader != null) { - inputReader.close(); + // The activity does not have any view itself, + // so set it invisible to avoid displaying the title text in the background. + setVisible(false); + + mWebView = new WebView(this); + + mHandler = new Handler() { + + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + + if (msg.what == LicenseFileLoader.STATUS_OK) { + String text = (String) msg.obj; + showPageOfText(text); + } else { + showErrorAndFinish(); } - } catch (IOException e) { } - } + }; - if (TextUtils.isEmpty(data)) { - Log.e(TAG, "License HTML is empty (from " + fileName + ")"); - showErrorAndFinish(); - return; + CharSequence title = getText(R.string.settings_license_activity_title); + CharSequence msg = getText(R.string.settings_license_activity_loading); + + ProgressDialog pd = ProgressDialog.show(this, title, msg, true, false); + pd.setProgressStyle(ProgressDialog.STYLE_SPINNER); + mSpinnerDlg = pd; + + // Start separate thread to do the actual loading. + Thread thread = new Thread(new LicenseFileLoader(fileName, mHandler)); + thread.start(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (mTextDlg != null) { + mTextDlg.dismiss(); } + } + + private void showPageOfText(String text) { + // Create an AlertDialog to display the WebView in. + AlertDialog.Builder builder = new AlertDialog.Builder(SettingsLicenseActivity.this); + builder.setCancelable(true) + .setView(mWebView) + .setTitle(R.string.settings_license_activity_title); + + mTextDlg = builder.create(); + mTextDlg.setOnDismissListener(new OnDismissListener() { - WebView webView = new WebView(this); + public void onDismiss(DialogInterface dlgi) { + SettingsLicenseActivity.this.finish(); + } + }); // Begin the loading. This will be done in a separate thread in WebView. - webView.loadDataWithBaseURL(null, data.toString(), "text/html", "utf-8", null); - webView.setWebViewClient(new WebViewClient() { + mWebView.loadDataWithBaseURL(null, text, "text/html", "utf-8", null); + mWebView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { - // Change from 'Loading...' to the real title - mAlert.setTitle(getString(R.string.settings_license_activity_title)); + mSpinnerDlg.dismiss(); + mSpinnerDlg = null; + mTextDlg.show(); + mTextDlg = null; } }); - final AlertController.AlertParams p = mAlertParams; - p.mTitle = getString(R.string.settings_license_activity_loading); - p.mView = webView; - p.mForceInverseBackground = true; - setupAlert(); + mWebView = null; } private void showErrorAndFinish() { + mSpinnerDlg.dismiss(); + mSpinnerDlg = null; Toast.makeText(this, R.string.settings_license_activity_unavailable, Toast.LENGTH_LONG) .show(); finish(); } - } diff --git a/src/com/android/settings/deviceinfo/Status.java b/src/com/android/settings/deviceinfo/Status.java index fbc1598..456bc98 100644 --- a/src/com/android/settings/deviceinfo/Status.java +++ b/src/com/android/settings/deviceinfo/Status.java @@ -229,6 +229,9 @@ public class Status extends PreferenceActivity { if (mPhone.getPhoneName().equals("CDMA")) { setSummaryText(KEY_MEID_NUMBER, mPhone.getMeid()); setSummaryText(KEY_MIN_NUMBER, mPhone.getCdmaMin()); + if (getResources().getBoolean(R.bool.config_msid_enable)) { + findPreference(KEY_MIN_NUMBER).setTitle(R.string.status_msid_number); + } setSummaryText(KEY_PRL_VERSION, mPhone.getCdmaPrlVersion()); removePreferenceFromScreen(KEY_IMEI_SV); |