diff options
author | Hung-ying Tyan <tyanh@google.com> | 2009-06-14 21:12:57 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-06-14 21:12:57 -0700 |
commit | 4d863f471bd2a3616e00c019a95513b1c4d0c671 (patch) | |
tree | 036b4bd16428ea600e74efd3090557f595cac214 /src/com/android | |
parent | 339083fd468c7b6ab754b2ade962cb347c0b66c2 (diff) | |
parent | a55ae92a132325e9307f291c455b1148d0bff3cf (diff) | |
download | packages_apps_settings-4d863f471bd2a3616e00c019a95513b1c4d0c671.zip packages_apps_settings-4d863f471bd2a3616e00c019a95513b1c4d0c671.tar.gz packages_apps_settings-4d863f471bd2a3616e00c019a95513b1c4d0c671.tar.bz2 |
am a55ae92a: Remove isCustomized() check as the API is not used for now.
Merge commit 'a55ae92a132325e9307f291c455b1148d0bff3cf'
* commit 'a55ae92a132325e9307f291c455b1148d0bff3cf':
Remove isCustomized() check as the API is not used for now.
Remove LAUNCHER category from VPN settings activity's intent filter.
Improve power control widget GUI.
Minor UI improvements and showing of unplugged duration.
Make the Settings side of the date format settings more locale-aware.
Diffstat (limited to 'src/com/android')
7 files changed, 129 insertions, 80 deletions
diff --git a/src/com/android/settings/DateTimeSettings.java b/src/com/android/settings/DateTimeSettings.java index d6e85c4..5b38651 100644 --- a/src/com/android/settings/DateTimeSettings.java +++ b/src/com/android/settings/DateTimeSettings.java @@ -87,19 +87,25 @@ public class DateTimeSettings mDatePref = findPreference("date"); mDateFormat = (ListPreference) findPreference(KEY_DATE_FORMAT); - int currentFormatIndex = -1; String [] dateFormats = getResources().getStringArray(R.array.date_format_values); String [] formattedDates = new String[dateFormats.length]; String currentFormat = getDateFormat(); // Initialize if DATE_FORMAT is not set in the system settings // This can happen after a factory reset (or data wipe) if (currentFormat == null) { - currentFormat = getResources().getString(R.string.default_date_format); - setDateFormat(currentFormat); + currentFormat = ""; } for (int i = 0; i < formattedDates.length; i++) { - formattedDates[i] = DateFormat.format(dateFormats[i], mDummyDate).toString(); - if (currentFormat.equals(dateFormats[i])) currentFormatIndex = i; + String formatted = + DateFormat.getDateFormatForSetting(this, dateFormats[i]). + format(mDummyDate.getTime()); + + if (dateFormats[i].length() == 0) { + formattedDates[i] = getResources(). + getString(R.string.normal_date_format, formatted); + } else { + formattedDates[i] = formatted; + } } mDateFormat.setEntries(formattedDates); @@ -314,6 +320,10 @@ public class DateTimeSettings } private void setDateFormat(String format) { + if (format.length() == 0) { + format = null; + } + Settings.System.putString(getContentResolver(), Settings.System.DATE_FORMAT, format); } diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index cb37465..ccf360a 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -163,12 +163,12 @@ public class SecuritySettings extends PreferenceActivity { PreferenceScreen vpnPreferences = getPreferenceManager() .createPreferenceScreen(this); - vpnPreferences.setTitle(R.string.vpn_settings_category); + vpnPreferences.setTitle(R.string.vpn_settings_title); + vpnPreferences.setSummary(R.string.vpn_settings_summary); vpnPreferences.setIntent(new VpnManager(this).createSettingsActivityIntent()); PreferenceCategory vpnCat = new PreferenceCategory(this); - vpnCat.setTitle(R.string.vpn_settings_title); - vpnCat.setSummary(R.string.vpn_settings_summary); + vpnCat.setTitle(R.string.vpn_settings_category); root.addPreference(vpnCat); vpnCat.addPreference(vpnPreferences); diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java index 54a0b88..e36a8bc 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java +++ b/src/com/android/settings/fuelgauge/PowerUsageDetail.java @@ -51,8 +51,8 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener public static final int ACTION_DISPLAY_SETTINGS = 1; public static final int ACTION_WIFI_SETTINGS = 2; public static final int ACTION_BLUETOOTH_SETTINGS = 3; - public static final int ACTION_FORCE_STOP = 4; - public static final int ACTION_UNINSTALL = 5; + public static final int ACTION_WIRELESS_SETTINGS = 4; + public static final int ACTION_APP_DETAILS = 6; public static final int USAGE_SINCE_UNPLUGGED = 1; public static final int USAGE_SINCE_RESET = 2; @@ -66,10 +66,6 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener public static final String EXTRA_DETAIL_VALUES = "values"; public static final String EXTRA_DRAIN_TYPE = "drainType"; - private static final int SECONDS_PER_MINUTE = 60; - private static final int SECONDS_PER_HOUR = 60 * 60; - private static final int SECONDS_PER_DAY = 24 * 60 * 60; - private static final boolean DEBUG = true; private String mTitle; private double mPercentage; @@ -135,10 +131,10 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener switch (mTypes[i]) { case R.string.usage_type_data_recv: case R.string.usage_type_data_send: - value = formatBytes(mValues[i]); + value = Utils.formatBytes(this, mValues[i]); break; default: - value = formatTime(mValues[i]); + value = Utils.formatElapsedTime(this, mValues[i]); } ViewGroup item = (ViewGroup) inflater.inflate(R.layout.power_usage_detail_item_text, null); @@ -165,15 +161,12 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener startActivity(new Intent(Settings.ACTION_DISPLAY_SETTINGS)); break; case ACTION_WIFI_SETTINGS: - startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); + startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS)); break; case ACTION_BLUETOOTH_SETTINGS: - startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS)); - break; - case ACTION_FORCE_STOP: - killProcesses(); + startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS)); break; - case ACTION_UNINSTALL: + case ACTION_APP_DETAILS: Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClass(this, InstalledAppDetails.class); intent.putExtra("com.android.settings.ApplicationPkgName", mPackages[0]); @@ -199,18 +192,17 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener if (uid == 0 || !isSystem) { switch (mDrainType) { case APP: - label1 = getString(R.string.battery_action_stop); + //label1 = getString(R.string.battery_action_stop); label2 = getString(R.string.battery_action_app_details); - mAction1 = ACTION_FORCE_STOP; - mAction2 = ACTION_UNINSTALL; + mAction2 = ACTION_APP_DETAILS; break; case SCREEN: - //label2 = getString(R.string.battery_action_display); - //mAction2 = ACTION_DISPLAY_SETTINGS; + label2 = getString(R.string.battery_action_display); + mAction2 = ACTION_DISPLAY_SETTINGS; break; case WIFI: label2 = getString(R.string.battery_action_wifi); - mAction2 = ACTION_WIFI_SETTINGS; + mAction2 = ACTION_WIRELESS_SETTINGS; break; case BLUETOOTH: //label2 = getString(R.string.battery_action_bluetooth); @@ -291,44 +283,4 @@ public class PowerUsageDetail extends Activity implements Button.OnClickListener } } } - - private String formatTime(double millis) { - StringBuilder sb = new StringBuilder(); - int seconds = (int) Math.floor(millis / 1000); - - int days = 0, hours = 0, minutes = 0; - if (seconds > SECONDS_PER_DAY) { - days = seconds / SECONDS_PER_DAY; - seconds -= days * SECONDS_PER_DAY; - } - if (seconds > SECONDS_PER_HOUR) { - hours = seconds / SECONDS_PER_HOUR; - seconds -= hours * SECONDS_PER_HOUR; - } - if (seconds > SECONDS_PER_MINUTE) { - minutes = seconds / SECONDS_PER_MINUTE; - seconds -= minutes * SECONDS_PER_MINUTE; - } - if (days > 0) { - sb.append(getString(R.string.battery_history_days, days, hours, minutes, seconds)); - } else if (hours > 0) { - sb.append(getString(R.string.battery_history_hours, hours, minutes, seconds)); - } else if (minutes > 0) { - sb.append(getString(R.string.battery_history_minutes, minutes, seconds)); - } else { - sb.append(getString(R.string.battery_history_seconds, seconds)); - } - return sb.toString(); - } - - private String formatBytes(double bytes) { - // TODO: I18N - if (bytes > 1000 * 1000) { - return String.format("%.2f MB", ((int) (bytes / 1000)) / 1000f); - } else if (bytes > 1024) { - return String.format("%.2f KB", ((int) (bytes / 10)) / 100f); - } else { - return String.format("%d bytes", (int) bytes); - } - } } diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index 10ede87..b8919ee 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -100,7 +100,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { addPreferencesFromResource(R.xml.power_usage_summary); mBatteryInfo = IBatteryStats.Stub.asInterface( ServiceManager.getService("batteryinfo")); - mAppListGroup = getPreferenceScreen(); + mAppListGroup = (PreferenceGroup) findPreference("app_list"); mPowerProfile = new PowerProfile(this); } @@ -108,7 +108,7 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { protected void onResume() { super.onResume(); mAbort = false; - updateAppsList(); + refreshStats(); } @Override @@ -207,18 +207,18 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { } else { mStatsType = BatteryStats.STATS_TOTAL; } - updateAppsList(); + refreshStats(); return true; case MENU_STATS_REFRESH: mStats = null; - updateAppsList(); + refreshStats(); return true; default: return false; } } - private void updateAppsList() { + private void refreshStats() { if (mStats == null) { load(); } @@ -263,12 +263,19 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable { } } + private void updateStatsPeriod(long duration) { + String durationString = Utils.formatElapsedTime(this, duration / 1000); + String label = getString(R.string.battery_stats_duration, durationString); + mAppListGroup.setTitle(label); + } + private void processAppUsage() { SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); final int which = mStatsType; final double powerCpuNormal = mPowerProfile.getAveragePower(PowerProfile.POWER_CPU_NORMAL); final double averageCostPerByte = getAverageDataCost(); - long uSecTime = mStats.computeBatteryRealtime(SystemClock.elapsedRealtime(), which) * 1000; + long uSecTime = mStats.computeBatteryRealtime(SystemClock.elapsedRealtime() * 1000, which); + updateStatsPeriod(uSecTime); SparseArray<? extends Uid> uidStats = mStats.getUidStats(); final int NU = uidStats.size(); for (int iu = 0; iu < NU; iu++) { diff --git a/src/com/android/settings/fuelgauge/Utils.java b/src/com/android/settings/fuelgauge/Utils.java new file mode 100644 index 0000000..2ffc9de --- /dev/null +++ b/src/com/android/settings/fuelgauge/Utils.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2009 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. + */ + +package com.android.settings.fuelgauge; + +import android.content.Context; + +import com.android.settings.R; + +/** + * Contains utility functions for formatting elapsed time and consumed bytes + */ +public class Utils { + private static final int SECONDS_PER_MINUTE = 60; + private static final int SECONDS_PER_HOUR = 60 * 60; + private static final int SECONDS_PER_DAY = 24 * 60 * 60; + + /** + * Returns elapsed time for the given millis, in the following format: + * 2d 5h 40m 29s + * @param context the application context + * @param millis the elapsed time in milli seconds + * @return the formatted elapsed time + */ + public static String formatElapsedTime(Context context, double millis) { + StringBuilder sb = new StringBuilder(); + int seconds = (int) Math.floor(millis / 1000); + + int days = 0, hours = 0, minutes = 0; + if (seconds > SECONDS_PER_DAY) { + days = seconds / SECONDS_PER_DAY; + seconds -= days * SECONDS_PER_DAY; + } + if (seconds > SECONDS_PER_HOUR) { + hours = seconds / SECONDS_PER_HOUR; + seconds -= hours * SECONDS_PER_HOUR; + } + if (seconds > SECONDS_PER_MINUTE) { + minutes = seconds / SECONDS_PER_MINUTE; + seconds -= minutes * SECONDS_PER_MINUTE; + } + if (days > 0) { + sb.append(context.getString(R.string.battery_history_days, + days, hours, minutes, seconds)); + } else if (hours > 0) { + sb.append(context.getString(R.string.battery_history_hours, hours, minutes, seconds)); + } else if (minutes > 0) { + sb.append(context.getString(R.string.battery_history_minutes, minutes, seconds)); + } else { + sb.append(context.getString(R.string.battery_history_seconds, seconds)); + } + return sb.toString(); + } + + /** + * Formats data size in KB, MB, from the given bytes. + * @param context the application context + * @param bytes data size in bytes + * @return the formatted size such as 4.52 MB or 245 KB or 332 bytes + */ + public static String formatBytes(Context context, double bytes) { + // TODO: I18N + if (bytes > 1000 * 1000) { + return String.format("%.2f MB", ((int) (bytes / 1000)) / 1000f); + } else if (bytes > 1024) { + return String.format("%.2f KB", ((int) (bytes / 10)) / 100f); + } else { + return String.format("%d bytes", (int) bytes); + } + } +} diff --git a/src/com/android/settings/vpn/L2tpIpsecEditor.java b/src/com/android/settings/vpn/L2tpIpsecEditor.java index 2bb4c8d..5156989 100644 --- a/src/com/android/settings/vpn/L2tpIpsecEditor.java +++ b/src/com/android/settings/vpn/L2tpIpsecEditor.java @@ -58,8 +58,6 @@ class L2tpIpsecEditor extends SingleServerEditor { String result = super.validate(c); if (result != null) { return result; - } else if (mProfile.isCustomized()) { - return null; } else if (Util.isNullOrEmpty(mUserkey.getValue())) { return c.getString(R.string.vpn_error_userkey_not_selected); } else if (Util.isNullOrEmpty(mUserCertificate.getValue())) { diff --git a/src/com/android/settings/vpn/SingleServerEditor.java b/src/com/android/settings/vpn/SingleServerEditor.java index 63964b4..a7848e0 100644 --- a/src/com/android/settings/vpn/SingleServerEditor.java +++ b/src/com/android/settings/vpn/SingleServerEditor.java @@ -50,11 +50,9 @@ class SingleServerEditor implements VpnProfileEditor { //@Override public String validate(Context c) { - return (mProfile.isCustomized() - ? null - : (Util.isNullOrEmpty(mServerName.getText()) + return (Util.isNullOrEmpty(mServerName.getText()) ? c.getString(R.string.vpn_error_server_name_empty) - : null)); + : null); } /** |