summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml4
-rw-r--r--res/drawable/app_gauge.9.pngbin98 -> 152 bytes
-rw-r--r--res/drawable/widget_btn_bluetooth.pngbin873 -> 1055 bytes
-rw-r--r--res/drawable/widget_btn_bluetooth_gray.pngbin701 -> 847 bytes
-rw-r--r--res/drawable/widget_btn_bluetooth_off.pngbin930 -> 1051 bytes
-rw-r--r--res/drawable/widget_btn_brightness.pngbin1650 -> 1821 bytes
-rw-r--r--res/drawable/widget_btn_brightness_off.pngbin1630 -> 1782 bytes
-rw-r--r--res/drawable/widget_btn_gps.pngbin696 -> 1348 bytes
-rw-r--r--res/drawable/widget_btn_gps_off.pngbin749 -> 1315 bytes
-rw-r--r--res/drawable/widget_btn_sync.pngbin1335 -> 1564 bytes
-rw-r--r--res/drawable/widget_btn_sync_off.pngbin1363 -> 1508 bytes
-rw-r--r--res/drawable/widget_btn_wifi.pngbin1218 -> 1123 bytes
-rw-r--r--res/drawable/widget_btn_wifi_gray.pngbin871 -> 885 bytes
-rw-r--r--res/drawable/widget_btn_wifi_off.pngbin1379 -> 1097 bytes
-rw-r--r--res/layout/power_usage_detail_item_text.xml11
-rw-r--r--res/layout/power_usage_details.xml2
-rw-r--r--res/layout/widget.xml15
-rw-r--r--res/values/arrays.xml14
-rw-r--r--res/values/strings.xml16
-rw-r--r--res/xml/power_usage_summary.xml3
-rw-r--r--src/com/android/settings/DateTimeSettings.java20
-rw-r--r--src/com/android/settings/SecuritySettings.java6
-rw-r--r--src/com/android/settings/fuelgauge/PowerUsageDetail.java72
-rw-r--r--src/com/android/settings/fuelgauge/PowerUsageSummary.java19
-rw-r--r--src/com/android/settings/fuelgauge/Utils.java84
-rw-r--r--src/com/android/settings/vpn/L2tpIpsecEditor.java2
-rw-r--r--src/com/android/settings/vpn/SingleServerEditor.java6
27 files changed, 162 insertions, 112 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 2714457..03978cc 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -115,9 +115,8 @@
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.net.vpn.SETTINGS" />
- <action android:name="android.net.vpn.INSTALL_PROFILE" />
- <category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.VOICE_LAUNCH" />
</intent-filter>
</activity>
@@ -190,6 +189,7 @@
<action android:name="android.intent.action.MAIN" />
<action android:name="com.android.settings.SOUND_SETTINGS" />
<action android:name="com.android.settings.DISPLAY_SETTINGS" />
+ <action android:name="android.settings.DISPLAY_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.VOICE_LAUNCH" />
</intent-filter>
diff --git a/res/drawable/app_gauge.9.png b/res/drawable/app_gauge.9.png
index f8ff669..f6c7c99 100644
--- a/res/drawable/app_gauge.9.png
+++ b/res/drawable/app_gauge.9.png
Binary files differ
diff --git a/res/drawable/widget_btn_bluetooth.png b/res/drawable/widget_btn_bluetooth.png
index 5de9d78..f32d0b2 100644
--- a/res/drawable/widget_btn_bluetooth.png
+++ b/res/drawable/widget_btn_bluetooth.png
Binary files differ
diff --git a/res/drawable/widget_btn_bluetooth_gray.png b/res/drawable/widget_btn_bluetooth_gray.png
index 843dcce..a633554 100644
--- a/res/drawable/widget_btn_bluetooth_gray.png
+++ b/res/drawable/widget_btn_bluetooth_gray.png
Binary files differ
diff --git a/res/drawable/widget_btn_bluetooth_off.png b/res/drawable/widget_btn_bluetooth_off.png
index b831a46..c0ef641 100644
--- a/res/drawable/widget_btn_bluetooth_off.png
+++ b/res/drawable/widget_btn_bluetooth_off.png
Binary files differ
diff --git a/res/drawable/widget_btn_brightness.png b/res/drawable/widget_btn_brightness.png
index a162899..9a7c7b9 100644
--- a/res/drawable/widget_btn_brightness.png
+++ b/res/drawable/widget_btn_brightness.png
Binary files differ
diff --git a/res/drawable/widget_btn_brightness_off.png b/res/drawable/widget_btn_brightness_off.png
index 0f42f2d..46dc508 100644
--- a/res/drawable/widget_btn_brightness_off.png
+++ b/res/drawable/widget_btn_brightness_off.png
Binary files differ
diff --git a/res/drawable/widget_btn_gps.png b/res/drawable/widget_btn_gps.png
index 3394cb4..b21e8c8 100644
--- a/res/drawable/widget_btn_gps.png
+++ b/res/drawable/widget_btn_gps.png
Binary files differ
diff --git a/res/drawable/widget_btn_gps_off.png b/res/drawable/widget_btn_gps_off.png
index 7f481d8..042fefb 100644
--- a/res/drawable/widget_btn_gps_off.png
+++ b/res/drawable/widget_btn_gps_off.png
Binary files differ
diff --git a/res/drawable/widget_btn_sync.png b/res/drawable/widget_btn_sync.png
index 9682879..6133233 100644
--- a/res/drawable/widget_btn_sync.png
+++ b/res/drawable/widget_btn_sync.png
Binary files differ
diff --git a/res/drawable/widget_btn_sync_off.png b/res/drawable/widget_btn_sync_off.png
index 0f48a1d..192cad8 100644
--- a/res/drawable/widget_btn_sync_off.png
+++ b/res/drawable/widget_btn_sync_off.png
Binary files differ
diff --git a/res/drawable/widget_btn_wifi.png b/res/drawable/widget_btn_wifi.png
index ff7d2ef..2d39681 100644
--- a/res/drawable/widget_btn_wifi.png
+++ b/res/drawable/widget_btn_wifi.png
Binary files differ
diff --git a/res/drawable/widget_btn_wifi_gray.png b/res/drawable/widget_btn_wifi_gray.png
index 8a3cc49..76f36e8 100644
--- a/res/drawable/widget_btn_wifi_gray.png
+++ b/res/drawable/widget_btn_wifi_gray.png
Binary files differ
diff --git a/res/drawable/widget_btn_wifi_off.png b/res/drawable/widget_btn_wifi_off.png
index 8f15b4f..9b70cf1 100644
--- a/res/drawable/widget_btn_wifi_off.png
+++ b/res/drawable/widget_btn_wifi_off.png
Binary files differ
diff --git a/res/layout/power_usage_detail_item_text.xml b/res/layout/power_usage_detail_item_text.xml
index 097469b..7ea2432 100644
--- a/res/layout/power_usage_detail_item_text.xml
+++ b/res/layout/power_usage_detail_item_text.xml
@@ -27,8 +27,9 @@
android:textStyle="bold"
android:singleLine="true"
android:layout_alignParentLeft="true"
- android:layout_marginBottom="2dip"
- android:layout_marginTop="2dip" />
+ android:layout_marginBottom="4dip"
+ android:layout_marginTop="4dip"
+ android:layout_marginLeft="4dip" />
<TextView
android:id="@+id/value"
android:layout_width="wrap_content"
@@ -37,7 +38,7 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="normal"
android:singleLine="true"
- android:layout_marginBottom="2dip"
- android:layout_marginTop="2dip"
- android:layout_marginRight="4dip"/>
+ android:layout_marginBottom="4dip"
+ android:layout_marginTop="4dip"
+ android:layout_marginRight="10dip"/>
</RelativeLayout>
diff --git a/res/layout/power_usage_details.xml b/res/layout/power_usage_details.xml
index 206eb05..8aa625f 100644
--- a/res/layout/power_usage_details.xml
+++ b/res/layout/power_usage_details.xml
@@ -96,6 +96,7 @@
<TextView
android:id="@+id/controls_section_title"
style="?android:attr/listSeparatorTextViewStyle"
+ android:layout_marginTop="6dip"
android:text="@string/controls_subtitle" />
<RelativeLayout
@@ -130,6 +131,7 @@
<TextView
android:id="@+id/packages_section_title"
style="?android:attr/listSeparatorTextViewStyle"
+ android:layout_marginTop="6dip"
android:text="@string/packages_subtitle" />
<LinearLayout
diff --git a/res/layout/widget.xml b/res/layout/widget.xml
index c409e68..dea290e 100644
--- a/res/layout/widget.xml
+++ b/res/layout/widget.xml
@@ -36,46 +36,43 @@
/>
<ImageButton
- android:id="@+id/btn_brightness"
+ android:id="@+id/btn_bluetooth"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginLeft="3dip"
android:layout_marginRight="3dip"
android:background="@drawable/widget_btn"
android:layout_gravity="center_horizontal"
-
/>
<ImageButton
- android:id="@+id/btn_sync"
+ android:id="@+id/btn_gps"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginLeft="3dip"
android:layout_marginRight="3dip"
android:background="@drawable/widget_btn"
android:layout_gravity="center_horizontal"
-
/>
<ImageButton
- android:id="@+id/btn_gps"
+ android:id="@+id/btn_sync"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginLeft="3dip"
android:layout_marginRight="3dip"
android:background="@drawable/widget_btn"
android:layout_gravity="center_horizontal"
-
/>
- <ImageButton
- android:id="@+id/btn_bluetooth"
+ <ImageButton
+ android:id="@+id/btn_brightness"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginLeft="3dip"
android:layout_marginRight="3dip"
android:background="@drawable/widget_btn"
android:layout_gravity="center_horizontal"
-
/>
+
</LinearLayout>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 4a60c36..06bf787 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -39,18 +39,12 @@
<item>All</item>
</string-array>
- <!-- There is a setting to control the format of dates displayed throughout the system. This is in the Date & Time Settings screen. Unfortunately, these cannot be changed at all. --> <skip />
- <!-- Do not translate. This is fed directly to the formatter. -->
- <string-array name="date_format_values">
- <!-- Do not translate. This is fed directly to the formatter. -->
+ <!-- There is a setting to control the format of dates displayed throughout the system. This is in the Date & Time Settings screen. These will be adjusted to use punctuation appropriate to the user's locale. -->
+ <string-array name="date_format_values" translatable="false">
+ <!-- The blank item means to use whatever the locale calls for. -->
+ <item></item>
<item>MM-dd-yyyy</item>
- <!-- Do not translate. This is fed directly to the formatter. -->
<item>dd-MM-yyyy</item>
- <!-- Do not translate. This is fed directly to the formatter. -->
- <item>MMM d, yyyy</item>
- <!-- Do not translate. This is fed directly to the formatter. -->
- <item>d-MMM-yyyy</item>
- <!-- Do not translate. This is fed directly to the formatter. -->
<item>yyyy-MM-dd</item>
</string-array>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3b91ef6..c6c3a2c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -243,6 +243,10 @@
<!-- Do not translate. Used as the value for a setting. -->
<string name="default_date_format"><xliff:g id="default_date_format">MM/dd/yyyy</xliff:g></string>
+ <!-- The option in the date-format picker for using the normal format
+ called for by the user's locale. -->
+ <string name="normal_date_format">Normal (<xliff:g id="date" example="12-31-2009">%s</xliff:g>)</string>
+
<!-- Label of preview text when tweaking font size -->
<string name="display_preview_label">Preview:</string>
<!-- Label for chosen font size -->
@@ -1528,16 +1532,16 @@ found in the list of installed applications.</string>
<string name="battery_history_starts">Starts: <xliff:g id="starts">%1$d</xliff:g></string>
<!-- Used to show an amount of time in the form "d days, h hours, m minutes, s seconds" in BatteryHistory -->
- <string name="battery_history_days"><xliff:g id="days">%1$d</xliff:g> d, <xliff:g id="hours">%2$d</xliff:g> h, <xliff:g id="minutes">%3$d</xliff:g> m, <xliff:g id="seconds">%4$d</xliff:g> s</string>
+ <string name="battery_history_days"><xliff:g id="days">%1$d</xliff:g>d <xliff:g id="hours">%2$d</xliff:g>h <xliff:g id="minutes">%3$d</xliff:g>m <xliff:g id="seconds">%4$d</xliff:g>s</string>
<!-- Used to show an amount of time in the form "h hours, m minutes, s seconds" in BatteryHistory -->
- <string name="battery_history_hours"><xliff:g id="hours">%1$d</xliff:g> h, <xliff:g id="minutes">%2$d</xliff:g> m, <xliff:g id="seconds">%3$d</xliff:g> s</string>
+ <string name="battery_history_hours"><xliff:g id="hours">%1$d</xliff:g>h <xliff:g id="minutes">%2$d</xliff:g>m <xliff:g id="seconds">%3$d</xliff:g>s</string>
<!-- Used to show an amount of time in the form "m minutes, s seconds" in BatteryHistory -->
- <string name="battery_history_minutes"><xliff:g id="minutes">%1$d</xliff:g> m, <xliff:g id="seconds">%2$d</xliff:g> s</string>
+ <string name="battery_history_minutes"><xliff:g id="minutes">%1$d</xliff:g>m <xliff:g id="seconds">%2$d</xliff:g>s</string>
<!-- Used to show an amount of time in the form "s seconds" in BatteryHistory -->
- <string name="battery_history_seconds"><xliff:g id="seconds">%1$d</xliff:g> s</string>
+ <string name="battery_history_seconds"><xliff:g id="seconds">%1$d</xliff:g>s</string>
<!-- Used to head a list of packages that share a given user id BatteryHistory -->
<string name="battery_history_packages_sharing_this_uid">Packages sharing this UID:</string>
@@ -1630,6 +1634,8 @@ found in the list of installed applications.</string>
<string name="battery_since_unplugged">Battery usage since unplugged</string>
<!-- Battery usage since user reset the stats -->
<string name="battery_since_reset">Battery usage since reset</string>
+ <!-- Battery usage duration -->
+ <string name="battery_stats_duration">Usage duration - <xliff:g id="time">%1$s</xliff:g></string>
<!-- CPU awake time title -->
<string name="awake">Device awake time</string>
<!-- Wifi on time -->
@@ -1794,5 +1800,5 @@ found in the list of installed applications.</string>
<string name="vpn_settings_category">VPN</string>
<string name="vpn_settings_title">VPN</string>
- <string name="vpn_settings_summary">Set up and manage VPN configurations, connections</string>
+ <string name="vpn_settings_summary">Set up &amp; manage VPN configurations, connections</string>
</resources>
diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml
index 80342a8..450e438 100644
--- a/res/xml/power_usage_summary.xml
+++ b/res/xml/power_usage_summary.xml
@@ -16,5 +16,6 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/battery_since_unplugged">
-
+ <PreferenceCategory
+ android:key="app_list"/>
</PreferenceScreen>
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);
}
/**