summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/provider/Settings.java13
-rw-r--r--core/jni/android_os_FileUtils.cpp50
-rw-r--r--core/jni/android_os_SELinux.cpp20
-rw-r--r--core/res/res/values-cs/cm_strings.xml5
-rw-r--r--core/res/res/values-da/cm_strings.xml16
-rw-r--r--core/res/res/values-de/cm_strings.xml4
-rw-r--r--core/res/res/values-el/cm_strings.xml14
-rw-r--r--core/res/res/values-es/cm_strings.xml4
-rw-r--r--core/res/res/values-et-rEE/donottranslate-maps.xml28
-rw-r--r--core/res/res/values-fi/cm_strings.xml24
-rw-r--r--core/res/res/values-fr/cm_strings.xml4
-rw-r--r--core/res/res/values-hu/cm_strings.xml4
-rw-r--r--core/res/res/values-it/cm_strings.xml4
-rw-r--r--core/res/res/values-ja/cm_strings.xml17
-rw-r--r--core/res/res/values-nl/cm_strings.xml4
-rw-r--r--core/res/res/values-zh-rCN/cm_strings.xml16
-rw-r--r--libs/hwui/DisplayListRenderer.cpp3
-rwxr-xr-xlibs/hwui/OpenGLRenderer.cpp11
-rw-r--r--libs/hwui/Snapshot.cpp13
-rw-r--r--libs/hwui/Snapshot.h15
-rw-r--r--packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm2
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_ether.pngbin0 -> 557 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_ether_fully.pngbin0 -> 603 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_ether.pngbin0 -> 313 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_ether_fully.pngbin0 -> 302 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_ether.pngbin0 -> 660 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_ether_fully.pngbin0 -> 670 bytes
-rw-r--r--packages/SystemUI/res/layout/signal_cluster_view.xml5
-rw-r--r--packages/SystemUI/res/values-da/cm_strings.xml3
-rw-r--r--packages/SystemUI/res/values-el/cm_strings.xml2
-rw-r--r--packages/SystemUI/res/values-fi/cm_strings.xml75
-rw-r--r--packages/SystemUI/res/values-ja/cm_strings.xml75
-rw-r--r--packages/SystemUI/res/values-zh-rCN/cm_strings.xml2
-rw-r--r--packages/SystemUI/res/values/ids.xml2
-rw-r--r--packages/SystemUI/src/com/android/systemui/SwipeHelper.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java78
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java25
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java109
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/IntruderAlertView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java58
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java5
-rw-r--r--services/java/com/android/server/am/BatteryStatsService.java7
-rw-r--r--services/java/com/android/server/location/GpsLocationProvider.java4
-rw-r--r--services/java/com/android/server/power/ShutdownThread.java2
-rw-r--r--services/jni/com_android_server_location_GpsLocationProvider.cpp8
-rw-r--r--telephony/java/com/android/internal/telephony/RILConstants.java2
51 files changed, 644 insertions, 144 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index e1c4361..7925d31 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -2777,6 +2777,19 @@ public final class Settings {
*/
public static final String STATUS_BAR_IME_SWITCHER = "status_bar_ime_switcher";
+ /**
+ * Whether to collapse the notification area after dismissing the last notification
+ * @hide
+ */
+ public static final String STATUS_BAR_COLLAPSE_ON_DISMISS = "status_bar_collapse_on_dismiss";
+
+ /** @hide */
+ public static final int STATUS_BAR_COLLAPSE_NEVER = 0;
+ /** @hide */
+ public static final int STATUS_BAR_COLLAPSE_IF_EMPTIED = 1;
+ /** @hide */
+ public static final int STATUS_BAR_COLLAPSE_IF_NO_CLEARABLE = 2;
+
/**
* Expanded desktop on/off state
* @hide
diff --git a/core/jni/android_os_FileUtils.cpp b/core/jni/android_os_FileUtils.cpp
index b624a0d..e088a68 100644
--- a/core/jni/android_os_FileUtils.cpp
+++ b/core/jni/android_os_FileUtils.cpp
@@ -69,28 +69,58 @@ jint android_os_FileUtils_getVolumeUUID(JNIEnv* env, jobject clazz, jstring path
const char *pathStr = env->GetStringUTFChars(path, NULL);
ALOGD("Trying to get UUID for %s \n", pathStr);
- uuid = blkid_get_tag_value(NULL, "UUID", pathStr);
+ char device[256];
+ char mount_path[256];
+ char rest[256];
+ FILE *fp;
+ char line[1024];
+ bool findDevice = false;
+ if (!(fp = fopen("/proc/mounts", "r"))) {
+ SLOGE("Error opening /proc/mounts (%s)", strerror(errno));
+ return false;
+ }
+
+ while(fgets(line, sizeof(line), fp)) {
+ line[strlen(line)-1] = '\0';
+ sscanf(line, "%255s %255s %255s\n", device, mount_path, rest);
+ if (!strcmp(mount_path, pathStr)) {
+ findDevice = true;
+ break;
+ }
+ }
+
+ fclose(fp);
+
+ if (findDevice) {
+ uuid = blkid_get_tag_value(NULL, "UUID", device);
+ } else {
+ uuid = blkid_get_tag_value(NULL, "UUID", pathStr);
+ }
if (uuid) {
ALOGD("UUID for %s is %s\n", pathStr, uuid);
- String8 s8uuid = (String8)uuid;
- size_t len = s8uuid.length();
- String8 result;
+ int len = strlen(uuid);
+ char result[len];
if (len > 0) {
- for (int i = 0; i > len; i++)
+ char * pCur = uuid;
+ int length = 0;
+ while (*pCur!='\0' && length < len)
{
- if (strncmp((const char *)s8uuid[i], (const char *)"-", 1) != 0) {
- result.append((const char *)s8uuid[i]);
+ if ((*pCur) != '-') {
+ result[length] = (*pCur);
}
+ pCur++;
+ length++;
}
- len = 0;
+ result[length] = '\0';
}
- len = result.length();
+ len = strlen(result);
if (len > 0) {
- return atoi(s8uuid);
+ char *pEnd = NULL;
+ return (int)strtol(result, &pEnd, 16);
} else {
ALOGE("Couldn't get UUID for %s\n", pathStr);
}
diff --git a/core/jni/android_os_SELinux.cpp b/core/jni/android_os_SELinux.cpp
index e813c38..ef3d531 100644
--- a/core/jni/android_os_SELinux.cpp
+++ b/core/jni/android_os_SELinux.cpp
@@ -335,19 +335,20 @@ namespace android {
* Exceptions: None
*/
static jobjectArray getBooleanNames(JNIEnv *env, JNIEnv clazz) {
-#ifdef HAVE_SELINUX
- if (isSELinuxDisabled)
- return NULL;
+ jclass stringClass = env->FindClass("java/lang/String");
+ jobjectArray stringArray = env->NewObjectArray(0, stringClass, NULL);
+#ifdef HAVE_SELINUX
char **list;
int i, len, ret;
- jclass stringClass;
- jobjectArray stringArray = NULL;
+
+ if (isSELinuxDisabled)
+ return stringArray;
if (security_get_boolean_names(&list, &len) == -1)
- return NULL;
+ return stringArray;
- stringClass = env->FindClass("java/lang/String");
+ env->DeleteLocalRef(stringArray);
stringArray = env->NewObjectArray(len, stringClass, env->NewStringUTF(""));
for (i = 0; i < len; i++) {
jstring obj;
@@ -357,11 +358,8 @@ namespace android {
free(list[i]);
}
free(list);
-
- return stringArray;
-#else
- return NULL;
#endif
+ return stringArray;
}
/*
diff --git a/core/res/res/values-cs/cm_strings.xml b/core/res/res/values-cs/cm_strings.xml
index b6b6d1e..9080511 100644
--- a/core/res/res/values-cs/cm_strings.xml
+++ b/core/res/res/values-cs/cm_strings.xml
@@ -62,4 +62,9 @@
<string name="permlab_interceptSmsSent">zachytit odchozí SMS</string>
<string name="permdesc_interceptSmsSent">Umožní odchytit odchozí SMS. Škodlivé aplikace mohou pomocí odchycení SMS zabránit její odeslání příjemci.</string>
+
+ <string name="policylab_enforceSelinux">Vynucení SELinux</string>
+ <string name="policydesc_enforceSelinux">Přepnutí politiky SELinux na vynucující (enforcing ) nebo tolerantní (permissive).</string>
+ <string name="policylab_enforceMmac">Vynucení MMAC</string>
+ <string name="policydesc_enforceMmac">Přepnutí politiky MMAC na vynucující (enforcing ) nebo tolerantní (permissive).</string>
</resources>
diff --git a/core/res/res/values-da/cm_strings.xml b/core/res/res/values-da/cm_strings.xml
index 54d0842..cd54dd6 100644
--- a/core/res/res/values-da/cm_strings.xml
+++ b/core/res/res/values-da/cm_strings.xml
@@ -107,4 +107,20 @@
<string name="symbol_picker_equal">\u2260\u2248\u221e</string>
<string name="symbol_picker_lt">\u2264\u00ab\u2039</string>
<string name="symbol_picker_gt">\u2265\u00bb\u203a</string>
+ <string name="permlab_changePrivacyGuardState">aktivér eller deaktivér privatlivsvagt</string>
+ <string name="permdesc_changePrivacyGuardState">Tillader app\'en at ændre, om en anden app kører med Privatlivsvagt. Når en app kører med Privatlivsvagt, vil den ikke have adgang til personlige data såsom kontakter, opkaldslister eller beskeder.</string>
+ <string name="privacy_guard_notification">Privatlivsvagt aktiv</string>
+ <string name="privacy_guard_notification_detail"><xliff:g id="app">%1$s</xliff:g> vil ikke kunne tilgå personlige data</string>
+ <string name="profile_picker_title">Profiler</string>
+ <string name="profile_none">Ingen</string>
+ <string name="permlab_cancelNotifications">annuller app-underretninger</string>
+ <string name="permdesc_cancelNotifications">Tillader app\'en at annullere underretninger, oprettet af andre apps.</string>
+ <string name="permlab_interceptSmsSent">blokér udgående SMS</string>
+ <string name="permdesc_interceptSmsSent">Tillader app\'en at
+ blokere en udgående SMS.
+ Ondsindede apps kan muligvis bruge dette til at forhindre udgående SMS-beskeder.</string>
+ <string name="policylab_enforceSelinux">Håndhæv SELinux</string>
+ <string name="policydesc_enforceSelinux">Slå håndhævning af SELinux-politikker eller tolerant tilstand til og fra.</string>
+ <string name="policylab_enforceMmac">Håndhæv MMAC</string>
+ <string name="policydesc_enforceMmac">Slå håndhævning af MMAC-politikker eller tolerant tilstand til og fra.</string>
</resources>
diff --git a/core/res/res/values-de/cm_strings.xml b/core/res/res/values-de/cm_strings.xml
index aa802dc..26ba8e3 100644
--- a/core/res/res/values-de/cm_strings.xml
+++ b/core/res/res/values-de/cm_strings.xml
@@ -64,4 +64,8 @@
<string name="permdesc_interceptSmsSent">Ermöglicht der App, verschickte SMS abzufangen. Schädliche Apps können so das Versenden von SMS verhindern.</string>
<string name="permlab_cancelNotifications">Anwendungs-Benachrichtigungen entfernen</string>
<string name="permdesc_cancelNotifications">Ermöglicht der App, von anderen Apps erstellte Benachrichtigungen zu entfernen.</string>
+ <string name="policylab_enforceSelinux">SELinux-Richtlinie wechseln</string>
+ <string name="policydesc_enforceSelinux">Ermöglicht der App, die Anwendung der SELinux-Richtlinie zwischen strikt und moderat zu wechseln.</string>
+ <string name="policylab_enforceMmac">MMAC-Richtlinie wechseln</string>
+ <string name="policydesc_enforceMmac">Ermöglicht der App, die Anwendung der MMAC-Richtlinie zwischen strikt und moderat zu wechseln.</string>
</resources>
diff --git a/core/res/res/values-el/cm_strings.xml b/core/res/res/values-el/cm_strings.xml
index d14c7ea..fbb3708 100644
--- a/core/res/res/values-el/cm_strings.xml
+++ b/core/res/res/values-el/cm_strings.xml
@@ -107,4 +107,18 @@
<string name="symbol_picker_equal">\u2260\u2248\u221e</string>
<string name="symbol_picker_lt">\u2264\u00ab\u2039</string>
<string name="symbol_picker_gt">\u2265\u00bb\u203a</string>
+ <string name="permlab_changePrivacyGuardState">ενεργοποίηση ή απενεργοποίηση του privacy guard</string>
+ <string name="permdesc_changePrivacyGuardState">Επιτρέπει σε μια εφαρμογή τον χειρισμό άλλων εφαρμογών με το Privacy Guard. Όταν μια εφαρμογή τρέχει με το Privacy Guard, δεν θα έχει πρόσβαση στα προσωπικά σας δεδομένα όπως επαφές, μηνύματα ή το αρχείο κλήσεων.</string>
+ <string name="privacy_guard_notification">Privacy Guard ενεργό</string>
+ <string name="privacy_guard_notification_detail"><xliff:g id="app">%1$s</xliff:g> δεν θα μπορεί να έχει πρόσβαση στα προσωπικά σας δεδομένα</string>
+ <string name="profile_picker_title">Προφίλ</string>
+ <string name="profile_none">Κανένα</string>
+ <string name="permlab_cancelNotifications">ακύρωση ειδοποιήσεων εφαρμογών</string>
+ <string name="permdesc_cancelNotifications">Επιτρέπει σε μια εφαρμογή την ακύρωση ειδοποιήσεων που προέρχονται από άλλες εφαρμογές.</string>
+ <string name="permlab_interceptSmsSent">παρεμπόδιση εξερχόμενων SMS</string>
+ <string name="permdesc_interceptSmsSent">Επιτρέπει σε μια εφαρμογή να παρεμποδίσει τα εξερχόμενα SMS. Κακόβουλες εφαρμογές μπορεί να το χρησιμοποιήσουν για να εμποδίσουν τη αποστολή SMS.</string>
+ <string name="policylab_enforceSelinux">Εξαναγκασμός SELinux</string>
+ <string name="policydesc_enforceSelinux">Εναλλαγή πολιτικής SELinux σε εξαναγκασμένη ή επιτρεπόμενη.</string>
+ <string name="policylab_enforceMmac">Εξαναγκασμός MMAC</string>
+ <string name="policydesc_enforceMmac">Εναλλαγή πολιτικής MMAC σε εξαναγκασμένη ή επιτρεπόμενη.</string>
</resources>
diff --git a/core/res/res/values-es/cm_strings.xml b/core/res/res/values-es/cm_strings.xml
index ae74d8c..351925a 100644
--- a/core/res/res/values-es/cm_strings.xml
+++ b/core/res/res/values-es/cm_strings.xml
@@ -64,4 +64,8 @@
<string name="permdesc_cancelNotifications">Permite que la aplicación cancele las notificaciones creadas por otras.</string>
<string name="permlab_interceptSmsSent">interceptar mensajes SMS salientes</string>
<string name="permdesc_interceptSmsSent">Permite que la aplicación intercepte mensajes SMS salientes. Las aplicaciones maliciosas pueden impedir los mensajes SMS salientes.</string>
+ <string name="policylab_enforceSelinux">Forzar SELinux</string>
+ <string name="policydesc_enforceSelinux">Alternar entre el modo permisivo o restrictivo de SELinux.</string>
+ <string name="policylab_enforceMmac">Forzar MMAC</string>
+ <string name="policydesc_enforceMmac">Alternar entre el modo permisivo o restrictivo de MMAC.</string>
</resources>
diff --git a/core/res/res/values-et-rEE/donottranslate-maps.xml b/core/res/res/values-et-rEE/donottranslate-maps.xml
new file mode 100644
index 0000000..f1fea17
--- /dev/null
+++ b/core/res/res/values-et-rEE/donottranslate-maps.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 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.
+-->
+<resources>
+
+ <!-- Do not translate. -->
+ <integer-array name="maps_starting_lat_lng">
+ <item>5884131</item>
+ <item>2570560</item>
+ </integer-array>
+ <!-- Do not translate. -->
+ <integer-array name="maps_starting_zoom">
+ <item>4</item>
+ </integer-array>
+
+</resources>
diff --git a/core/res/res/values-fi/cm_strings.xml b/core/res/res/values-fi/cm_strings.xml
index 1219125..1421b2f 100644
--- a/core/res/res/values-fi/cm_strings.xml
+++ b/core/res/res/values-fi/cm_strings.xml
@@ -38,16 +38,34 @@
<string name="reboot_fastboot">Fastboot-tila</string>
<string name="reboot_download">Download-tila</string>
<string name="reboot_progress">Käynnistetään uudelleen\u2026</string>
- <string name="reboot_confirm" product="default">Puhelimesi käynnistyy uudelleen.</string>
+ <string name="reboot_confirm" product="tablet">Tablet käynnistyy uudelleen.</string>
+ <string name="reboot_confirm" product="default">Puhelin käynnistyy uudelleen.</string>
<string name="lockscreen_discharging">Puretaan latausta, <xliff:g id="number">%d</xliff:g><xliff:g id="percent">%%</xliff:g></string>
<string name="app_killed_message">Sovellus tapettu</string>
<string name="global_action_reboot">Käynnistä uudelleen</string>
<string name="global_action_choose_profile">Profiili</string>
<string name="toast_rotation_unlocked">Näytön asento auki</string>
<string name="toast_rotation_locked">Näytön asento lukittu</string>
- <string name="permlab_fm_radio_receiver">Ohjaa FM-vastaanotinta</string>
+ <string name="permlab_fm_radio_receiver">ohjaa fm-vastaanotinta</string>
<string name="permdesc_fm_radio_receiver">Sallii sovelluksen ohjata FM-vastaanotinta.</string>
- <string name="permlab_fm_radio_transmitter">Ohjaa FM-lähetintä</string>
+ <string name="permlab_fm_radio_transmitter">ohjaa fm-lähetintä</string>
<string name="permdesc_fm_radio_transmitter">Sallii sovelluksen ohjata FM-lähetintä.</string>
<string name="storage_sd_dock_card">Telakoi SD-kortti</string>
+ <string name="permlab_preventpower">estä virtapainike</string>
+ <string name="permdesc_preventpower">Sallii sovelluksen ohittaa virtapainikkeen käyttö</string>
+ <string name="stylus_app_not_installed">%s ei ole asennettu</string>
+ <string name="permlab_changePrivacyGuardState">ota privacy guard käyttöön tai poista se käytöstä</string>
+ <string name="permdesc_changePrivacyGuardState">Sallii sovelluksen valita milloin muut sovellukset käyttävät Privacy Guardia. Kun sovellus käyttää Privacy Guardia, sillä ei ole pääsyä henkilökohtaisiin tietoihin kuten yhteystietoihin, puhelulokeihin tai viesteihin.</string>
+ <string name="privacy_guard_notification">Privacy Guard aktiivinen</string>
+ <string name="privacy_guard_notification_detail">Sovelluksella <xliff:g id="app">%1$s</xliff:g> ei ole pääsyä henkilökohtaisiin tietoihin</string>
+ <string name="profile_picker_title">Profiilit</string>
+ <string name="profile_none">Ei mitään</string>
+ <string name="permlab_cancelNotifications">peruuta sovellusten ilmoitukset</string>
+ <string name="permdesc_cancelNotifications">Sallii sovelluksen peruuttaa muiden sovellusten luomat ilmoitukset.</string>
+ <string name="permlab_interceptSmsSent">estä lähtevät tekstiviestit</string>
+ <string name="permdesc_interceptSmsSent">Sallii sovelluksen pysäyttää lähtevät tekstiviestit. Haitalliset sovellukset saattavat käyttää tätä estääkseen kaikki lähtevät tekstiviestit.</string>
+ <string name="policylab_enforceSelinux">Pakota SELinux</string>
+ <string name="policydesc_enforceSelinux">Valitse SELinuxin käytännöksi pakotettu tai salliva tila.</string>
+ <string name="policylab_enforceMmac">Pakota MMAC</string>
+ <string name="policydesc_enforceMmac">Valitse MMAC:n käytännöksi pakotettu tai salliva tila.</string>
</resources>
diff --git a/core/res/res/values-fr/cm_strings.xml b/core/res/res/values-fr/cm_strings.xml
index 1f93895..0cdf31c 100644
--- a/core/res/res/values-fr/cm_strings.xml
+++ b/core/res/res/values-fr/cm_strings.xml
@@ -64,4 +64,8 @@
<string name="permdesc_cancelNotifications">Permet à l\'application de révoquer les notifications créées par d\'autres applications.</string>
<string name="permlab_interceptSmsSent">intercepte les SMS sortants</string>
<string name="permdesc_interceptSmsSent">Permet à l\'application d\'intercepter un SMS sortant. Des applications malveillantes peuvent utiliser cette option pour empêcher les SMS d\'être envoyés.</string>
+ <string name="policylab_enforceSelinux">Appliquer SELinux</string>
+ <string name="policydesc_enforceSelinux">Bascule entre l\'imposition des régles SELinux et le mode permissif.</string>
+ <string name="policylab_enforceMmac">Appliquer MMAC</string>
+ <string name="policydesc_enforceMmac">Bascule entre l\'imposition des régles MMAC et le mode permissif.</string>
</resources>
diff --git a/core/res/res/values-hu/cm_strings.xml b/core/res/res/values-hu/cm_strings.xml
index b39efd8..abfcd4b 100644
--- a/core/res/res/values-hu/cm_strings.xml
+++ b/core/res/res/values-hu/cm_strings.xml
@@ -64,4 +64,8 @@
<string name="permdesc_cancelNotifications">Lehetővé teszi, hogy más alkalmazások számára törölje az értesítéseket</string>
<string name="permlab_interceptSmsSent">kimenő SMS üzenetek elfogása</string>
<string name="permdesc_interceptSmsSent">Lehetővé teszi az alkalmazás számára, hogy elfogja a kimenő SMS üzeneteket. A rosszindulatú alkalmazások ezt felhasználhatják az SMS-küldés blokkolására.</string>
+ <string name="policylab_enforceSelinux">SELinux</string>
+ <string name="policydesc_enforceSelinux">Váltás a biztonságos és az engedélyező SELinux mód közt.</string>
+ <string name="policylab_enforceMmac">MMAC</string>
+ <string name="policydesc_enforceMmac">Váltás a biztonságos és az engedélyező MMAC mód közt.</string>
</resources>
diff --git a/core/res/res/values-it/cm_strings.xml b/core/res/res/values-it/cm_strings.xml
index a771c0f..5e35fe0 100644
--- a/core/res/res/values-it/cm_strings.xml
+++ b/core/res/res/values-it/cm_strings.xml
@@ -64,4 +64,8 @@
<string name="permdesc_cancelNotifications">Consente all\'applicazione di cancellare le notifiche create da altre applicazioni.</string>
<string name="permlab_interceptSmsSent">intercetta SMS in uscita</string>
<string name="permdesc_interceptSmsSent">Consente all\'applicazione di intercettare un SMS in uscita. Le applicazioni maligne potrebbero usarlo per impedire la spedizione di SMS.</string>
+ <string name="policylab_enforceSelinux">Forza SELinux</string>
+ <string name="policydesc_enforceSelinux">Alterna tra regole restrittive o permissive di SELinux.</string>
+ <string name="policylab_enforceMmac">Forza MMAC</string>
+ <string name="policydesc_enforceMmac">Alterna tra regole restrittive o permissive di MMAC.</string>
</resources>
diff --git a/core/res/res/values-ja/cm_strings.xml b/core/res/res/values-ja/cm_strings.xml
index d08789e..f7e22fd 100644
--- a/core/res/res/values-ja/cm_strings.xml
+++ b/core/res/res/values-ja/cm_strings.xml
@@ -52,4 +52,21 @@
<string name="profileGroupSMS">SMS</string>
<string name="wildcardProfile">その他</string>
<string name="app_killed_message">アプリケーションを強制終了しました</string>
+ <string name="storage_sd_dock_card">SDカードを接続</string>
+ <string name="stylus_app_not_installed">%s はインストールされていません</string>
+ <string name="permlab_changePrivacyGuardState">プライバシー保護を有効/無効にする</string>
+ <string name="permdesc_changePrivacyGuardState">アプリに、他のアプリがプライバシー保護のもとで実行するかどうか変更することを許可します。アプリがプライバシー保護の元で実行されるとそのアプリは連絡先、通話履歴、メッセージなどの個人データにアクセスできなくなります。</string>
+ <string name="privacy_guard_notification">プライバシー保護はアクティブ</string>
+ <string name="privacy_guard_notification_detail"><xliff:g id="app">%1$s</xliff:g> は、個人データにアクセスできません</string>
+ <string name="profile_picker_title">プロファイル</string>
+ <string name="profile_none">なし</string>
+ <string name="permlab_cancelNotifications">アプリの通知をキャンセル</string>
+ <string name="permdesc_cancelNotifications">アプリに、他のアプリで生成された通知をキャンセルすることを許可します。</string>
+ <string name="permlab_interceptSmsSent">SMS送信への割り込み</string>
+ <string name="permdesc_interceptSmsSent">アプリに送信するSMSを傍受することを許可します。
+ 悪意のあるアプリはSMSメッセージの送信を妨害する可能性があります。</string>
+ <string name="policylab_enforceSelinux">SELinuxを強制</string>
+ <string name="policydesc_enforceSelinux">SELinuxポリシーを強制あるいは任意モードに切り替えます。</string>
+ <string name="policylab_enforceMmac">MMACを強制</string>
+ <string name="policydesc_enforceMmac">MMACポリシーを強制あるいは任意モードに切り替えます。</string>
</resources>
diff --git a/core/res/res/values-nl/cm_strings.xml b/core/res/res/values-nl/cm_strings.xml
index 90994ca..97d74e5 100644
--- a/core/res/res/values-nl/cm_strings.xml
+++ b/core/res/res/values-nl/cm_strings.xml
@@ -64,4 +64,8 @@
<string name="permdesc_cancelNotifications">Hiermee kan de app meldingen gecreeërd door andere apps sluiten.</string>
<string name="permlab_interceptSmsSent">uitgaand sms-bericht onderscheppen</string>
<string name="permdesc_interceptSmsSent">Hiermee kan de app een uitgaand sms-bericht onderscheppen. Schadelijke apps kunnen dit gebruiken om uitgaande sms-berichten te blokkeren.</string>
+ <string name="policylab_enforceSelinux">SELinux afdwingen</string>
+ <string name="policydesc_enforceSelinux">Wisselen tussen SELinux-beleid afdwingen of tolerante stand.</string>
+ <string name="policylab_enforceMmac">MMAC afdwingen</string>
+ <string name="policydesc_enforceMmac">Wisselen tussen MMAC-beleid afdwingen of tolerante stand.</string>
</resources>
diff --git a/core/res/res/values-zh-rCN/cm_strings.xml b/core/res/res/values-zh-rCN/cm_strings.xml
index e93a25e..0181665 100644
--- a/core/res/res/values-zh-rCN/cm_strings.xml
+++ b/core/res/res/values-zh-rCN/cm_strings.xml
@@ -48,10 +48,24 @@
<string name="permdesc_fm_radio_transmitter">允许应用控制 FM 发射器。</string>
<string name="lockscreen_discharging">正在放电, <xliff:g id="number">%d</xliff:g><xliff:g id="percent">%%</xliff:g></string>
<string name="storage_sd_dock_card">底座 SD 卡</string>
- <string name="app_killed_message">应用程序已被终止</string>
+ <string name="app_killed_message">应用已被终止</string>
<string name="global_action_reboot">重启</string>
<string name="global_action_choose_profile">情景模式</string>
<string name="toast_rotation_unlocked">屏幕方向已解锁</string>
<string name="toast_rotation_locked">屏幕方向已锁定</string>
<string name="stylus_app_not_installed">%s 尚未被安装</string>
+ <string name="permlab_changePrivacyGuardState">启用或禁用隐私卫士</string>
+ <string name="permdesc_changePrivacyGuardState">允许应用更改是否另一个应用可与隐私卫士运行。当一个应用与隐私卫士运行时,它将不能访问任何个人隐私数据,例如:联系人、通话记录或短信。</string>
+ <string name="privacy_guard_notification">隐私卫士已启用</string>
+ <string name="privacy_guard_notification_detail">“<xliff:g id="app">%1$s</xliff:g>”将不能访问个人隐私数据</string>
+ <string name="profile_picker_title">情景模式</string>
+ <string name="profile_none">无</string>
+ <string name="permlab_cancelNotifications">取消应用通知</string>
+ <string name="permdesc_cancelNotifications">允许应用取消别的应用创建的通知。</string>
+ <string name="permlab_interceptSmsSent">拦截传出的短信</string>
+ <string name="permdesc_interceptSmsSent">允许应用拦截传出的短信。恶意应用可使用此权限来阻挡传出短信。</string>
+ <string name="policylab_enforceSelinux">执行 SELinux</string>
+ <string name="policydesc_enforceSelinux">切换 SELinux 政策执行或许可模式。</string>
+ <string name="policylab_enforceMmac">执行 MMAC</string>
+ <string name="policydesc_enforceMmac">切换 MMAC 政策执行或许可模式。</string>
</resources>
diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp
index 7a38b40..8d2a84e 100644
--- a/libs/hwui/DisplayListRenderer.cpp
+++ b/libs/hwui/DisplayListRenderer.cpp
@@ -1442,6 +1442,9 @@ status_t DisplayListRenderer::prepareDirty(float left, float top,
mSaveCount = 1;
mSnapshot->setClip(0.0f, 0.0f, mWidth, mHeight);
+#ifdef QCOM_HARDWARE
+ mSnapshot->setTileClip(0.0f, 0.0f, mWidth, mHeight);
+#endif
mDirtyClip = opaque;
mRestoreSaveCount = -1;
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 7309e46..efae551 100755
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -179,6 +179,9 @@ status_t OpenGLRenderer::prepareDirty(float left, float top, float right, float
mSaveCount = 1;
mSnapshot->setClip(left, top, right, bottom);
+#ifdef QCOM_HARDWARE
+ mSnapshot->setTileClip(left, top, right, bottom);
+#endif
mDirtyClip = true;
updateLayers();
@@ -246,11 +249,14 @@ void OpenGLRenderer::syncState() {
void OpenGLRenderer::startTiling(const sp<Snapshot>& s, bool opaque) {
if (!mSuppressTiling) {
+#ifdef QCOM_HARDWARE
+ const Rect* clip = &mSnapshot->getTileClip();
+#else
Rect* clip = mTilingSnapshot->clipRect;
if (s->flags & Snapshot::kFlagIsFboLayer) {
clip = s->clipRect;
}
-
+#endif
mCaches.startTiling(clip->left, s->height - clip->bottom,
clip->right - clip->left, clip->bottom - clip->top, opaque);
}
@@ -800,6 +806,9 @@ bool OpenGLRenderer::createFboLayer(Layer* layer, Rect& bounds, Rect& clip, GLui
mSnapshot->fbo = layer->getFbo();
mSnapshot->resetTransform(-bounds.left, -bounds.top, 0.0f);
mSnapshot->resetClip(clip.left, clip.top, clip.right, clip.bottom);
+#ifdef QCOM_HARDWARE
+ mSnapshot->setTileClip(clip.left, clip.top, clip.right, clip.bottom);
+#endif
mSnapshot->viewport.set(0.0f, 0.0f, bounds.getWidth(), bounds.getHeight());
mSnapshot->height = bounds.getHeight();
mSnapshot->flags |= Snapshot::kFlagDirtyOrtho;
diff --git a/libs/hwui/Snapshot.cpp b/libs/hwui/Snapshot.cpp
index fbc8455..e2675a8 100644
--- a/libs/hwui/Snapshot.cpp
+++ b/libs/hwui/Snapshot.cpp
@@ -74,6 +74,9 @@ Snapshot::Snapshot(const sp<Snapshot>& s, int saveFlags):
} else {
region = NULL;
}
+#ifdef QCOM_HARDWARE
+ mTileClip.set(s->getTileClip());
+#endif
}
///////////////////////////////////////////////////////////////////////////////
@@ -192,6 +195,16 @@ const Rect& Snapshot::getLocalClip() {
return mLocalClip;
}
+#ifdef QCOM_HARDWARE
+void Snapshot::setTileClip(float left, float top, float right, float bottom) {
+ mTileClip.set(left, top, right, bottom);
+}
+
+const Rect& Snapshot::getTileClip() {
+ return mTileClip;
+}
+#endif
+
void Snapshot::resetClip(float left, float top, float right, float bottom) {
clipRect = &mClipRectRoot;
setClip(left, top, right, bottom);
diff --git a/libs/hwui/Snapshot.h b/libs/hwui/Snapshot.h
index 9c612ff..18d405b 100644
--- a/libs/hwui/Snapshot.h
+++ b/libs/hwui/Snapshot.h
@@ -104,6 +104,18 @@ public:
*/
const Rect& getLocalClip();
+#ifdef QCOM_HARDWARE
+ /**
+ * Sets the current tile clip.
+ */
+ void setTileClip(float left, float top, float right, float bottom);
+
+ /**
+ * Returns the current tile clip in local coordinates.
+ */
+ const Rect& getTileClip();
+#endif
+
/**
* Resets the clip to the specified rect.
*/
@@ -233,6 +245,9 @@ private:
mat4 mTransformRoot;
Rect mClipRectRoot;
Rect mLocalClip;
+#ifdef QCOM_HARDWARE
+ Rect mTileClip;
+#endif
#if STENCIL_BUFFER_SIZE
SkRegion mClipRegionRoot;
diff --git a/packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm b/packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm
index dafb50b..67127d0 100644
--- a/packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm
+++ b/packages/InputDevices/res/raw/keyboard_layout_hungarian.kcm
@@ -37,7 +37,7 @@ key 0 {
key 1 {
label: '1'
base: '1'
- shift: '!'
+ shift: '\''
ralt: '\u0303'
}
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_ether.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_ether.png
new file mode 100644
index 0000000..6f6d36a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_ether.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_ether_fully.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_ether_fully.png
new file mode 100644
index 0000000..320caeb
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_ether_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_ether.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_ether.png
new file mode 100644
index 0000000..ddb82ee
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_ether.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_ether_fully.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_ether_fully.png
new file mode 100644
index 0000000..e64cfa8
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_ether_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_ether.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_ether.png
new file mode 100644
index 0000000..f78f93c
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_ether.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_ether_fully.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_ether_fully.png
new file mode 100644
index 0000000..648a46e
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_ether_fully.png
Binary files differ
diff --git a/packages/SystemUI/res/layout/signal_cluster_view.xml b/packages/SystemUI/res/layout/signal_cluster_view.xml
index 66c64c4..29ce1fb 100644
--- a/packages/SystemUI/res/layout/signal_cluster_view.xml
+++ b/packages/SystemUI/res/layout/signal_cluster_view.xml
@@ -110,4 +110,9 @@
android:layout_height="wrap_content"
android:layout_width="wrap_content"
/>
+ <ImageView
+ android:id="@+id/ethernet"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ />
</com.android.systemui.statusbar.SignalClusterView>
diff --git a/packages/SystemUI/res/values-da/cm_strings.xml b/packages/SystemUI/res/values-da/cm_strings.xml
index 0023038..743ae68 100644
--- a/packages/SystemUI/res/values-da/cm_strings.xml
+++ b/packages/SystemUI/res/values-da/cm_strings.xml
@@ -15,6 +15,7 @@
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="accessibility_data_connection_HP">HSPA+</string>
+ <string name="accessibility_data_connection_DC">DCHSPAP</string>
<string name="accessibility_quick_settings_ringer">Lyd <xliff:g id="state" example="Off">%s</xliff:g>.</string>
<string name="accessibility_quick_settings_vibration">Vibration <xliff:g id="state" example="Off">%s</xliff:g>.</string>
<string name="bean_dream_settings_cid_title">Brug Cid\'s hoved</string>
@@ -51,8 +52,10 @@
<string name="quick_settings_lte">LTE</string>
<string name="quick_settings_lte_off">LTE fra</string>
<string name="quick_settings_volume">Lydstyrke</string>
+ <string name="quick_settings_camera_label">Kamera</string>
<string name="quick_settings_expanded_desktop">Udvidet</string>
<string name="quick_settings_expanded_desktop_off">Normal</string>
+ <string name="quick_settings_camera_error_connect">Kan ikke forbinde til kamera</string>
<string name="navbar_dialog_title">Vælg handling at tildele</string>
<string name="navbar_home_button">Startknap</string>
<string name="navbar_recent_button">Seneste-knap</string>
diff --git a/packages/SystemUI/res/values-el/cm_strings.xml b/packages/SystemUI/res/values-el/cm_strings.xml
index 33b4393..8498343 100644
--- a/packages/SystemUI/res/values-el/cm_strings.xml
+++ b/packages/SystemUI/res/values-el/cm_strings.xml
@@ -52,8 +52,10 @@
<string name="quick_settings_lte">LTE</string>
<string name="quick_settings_lte_off">LTE ανενεργό</string>
<string name="quick_settings_volume">Ένταση</string>
+ <string name="quick_settings_camera_label">Φωτογρ. μηχανή</string>
<string name="quick_settings_expanded_desktop">Επεκταμένη</string>
<string name="quick_settings_expanded_desktop_off">Κανονική</string>
+ <string name="quick_settings_camera_error_connect">Δεν είναι δυνατή η σύνδεση με την φωτογραφ. μηχανή</string>
<string name="navbar_dialog_title">Επιλέξτε λειτουργία για εκχώρηση</string>
<string name="navbar_home_button">Πλήκτρο Home</string>
<string name="navbar_recent_button">Πλήκτρο Recent</string>
diff --git a/packages/SystemUI/res/values-fi/cm_strings.xml b/packages/SystemUI/res/values-fi/cm_strings.xml
new file mode 100644
index 0000000..b1207a2
--- /dev/null
+++ b/packages/SystemUI/res/values-fi/cm_strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 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.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="accessibility_data_connection_HP">HSPA+</string>
+ <string name="accessibility_data_connection_DC">DCHSPAP</string>
+ <string name="accessibility_quick_settings_ringer">Ääni <xliff:g id="state" example="Off">%s</xliff:g>.</string>
+ <string name="accessibility_quick_settings_vibration">Värinä <xliff:g id="state" example="Off">%s</xliff:g>.</string>
+ <string name="bean_dream_settings_cid_title">Käytä Cidin päätä</string>
+ <string name="bean_dream_settings_cid_summary">Käytä Cidin päätä jellybeanien sijaan unelmassa</string>
+ <string name="quick_settings_profile_label">Profiili</string>
+ <string name="powerwidget_screen_timeout_toast">Näytön aikakatkaisun ajaksi asetettu: %1$d %2$s</string>
+ <string name="quick_settings_gps">GPS</string>
+ <string name="quick_settings_gps_off">GPS pois</string>
+ <string name="quick_settings_screen_sleep">Sulje näyttö</string>
+ <string name="quick_settings_ringer_on">Äänet päällä</string>
+ <string name="quick_settings_ringer_off">Äänet pois</string>
+ <string name="quick_settings_vibration_on">Värinä päällä</string>
+ <string name="quick_settings_vibration_off">Värinä pois</string>
+ <string name="quick_settings_label_enabled">Päällä</string>
+ <string name="quick_settings_label_disabled">Pois päältä</string>
+ <string name="quick_settings_ringer_normal">Äänet</string>
+ <string name="quick_settings_lockscreen">Lukitusnäyttö</string>
+ <string name="quick_settings_network_type">Verkkotila</string>
+ <string name="quick_settings_report_bug">Raportoi bugi</string>
+ <string name="quick_settings_sync">Synkronoi</string>
+ <string name="quick_settings_sync_off">Synkronointi pois</string>
+ <string name="quick_settings_torch">Lamppu</string>
+ <string name="quick_settings_torch_off">Lamppu pois</string>
+ <string name="quick_settings_nfc">NFC</string>
+ <string name="quick_settings_nfc_off">NFC pois</string>
+ <string name="quick_settings_screen_timeout">Aikakatkaisu</string>
+ <string name="quick_settings_usb_tether_off_label">Yhteys katkaistu</string>
+ <string name="quick_settings_usb_tether_connected_label">Verkon jako pois</string>
+ <string name="quick_settings_usb_tether_on_label">Verkon jako</string>
+ <string name="quick_settings_wifiap">Wi-Fi-tukiasema</string>
+ <string name="quick_settings_wifiap_off">Wi-Fi-tukiasema pois</string>
+ <string name="quick_settings_quiethours">Hiljaisuusaika</string>
+ <string name="quick_settings_quiethours_off">Hiljaisuusaika pois</string>
+ <string name="quick_settings_lte">LTE</string>
+ <string name="quick_settings_lte_off">LTE pois</string>
+ <string name="quick_settings_volume">Äänenvoimakkuus</string>
+ <string name="quick_settings_camera_label">Kamera</string>
+ <string name="quick_settings_expanded_desktop">Laajennettu</string>
+ <string name="quick_settings_expanded_desktop_off">Normaali</string>
+ <string name="quick_settings_camera_error_connect">Kameraan ei saada yhteyttä</string>
+ <string name="navbar_dialog_title">Valitse tehtävä</string>
+ <string name="navbar_home_button">Kotinäppäin</string>
+ <string name="navbar_recent_button">Edelliset-näppäin</string>
+ <string name="navbar_search_button">Haku-näppäin</string>
+ <string name="navbar_back_button">Takaisin-näppäin</string>
+ <string name="navbar_empty_button">Tyhjä</string>
+ <string name="navbar_menu_conditional_button">Menu-näppäin (piilota automaattisesti)</string>
+ <string name="navbar_menu_always_button">Menu-näppäin (näytä aina)</string>
+ <string name="navbar_menu_big_button">Menu-näppäin</string>
+ <string name="pie_battery_status_charging">Ladataan (<xliff:g id="percent">%d</xliff:g>%%)</string>
+ <string name="pie_battery_status_full">Ladattu</string>
+ <string name="pie_battery_status_discharging"><xliff:g id="percent">%d</xliff:g>%% jäljellä</string>
+ <string name="pie_phone_status_no_service">Ei palvelua</string>
+ <string name="pie_phone_status_airplane_mode">Lentokonetila käytössä</string>
+ <string name="pie_phone_status_emergency_only">Vain hätäpuhelut</string>
+</resources>
diff --git a/packages/SystemUI/res/values-ja/cm_strings.xml b/packages/SystemUI/res/values-ja/cm_strings.xml
new file mode 100644
index 0000000..974bddb
--- /dev/null
+++ b/packages/SystemUI/res/values-ja/cm_strings.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 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.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="accessibility_data_connection_HP">HSPA+</string>
+ <string name="accessibility_data_connection_DC">DCHSPAP</string>
+ <string name="accessibility_quick_settings_ringer">サウンド <xliff:g id="state" example="Off">%s</xliff:g>.</string>
+ <string name="accessibility_quick_settings_vibration">バイブレーション <xliff:g id="state" example="Off">%s</xliff:g>.</string>
+ <string name="bean_dream_settings_cid_title">Cidの頭</string>
+ <string name="bean_dream_settings_cid_summary">ジェリービーンズマスコットの代わりにCidの頭を使う</string>
+ <string name="quick_settings_profile_label">プロファイル</string>
+ <string name="powerwidget_screen_timeout_toast">設定されたスクリーンタイムアウト: %1$d %2$s</string>
+ <string name="quick_settings_gps">GPS</string>
+ <string name="quick_settings_gps_off">GPS オフ</string>
+ <string name="quick_settings_screen_sleep">スリープ</string>
+ <string name="quick_settings_ringer_on">サウンドオン</string>
+ <string name="quick_settings_ringer_off">サウンドオフ</string>
+ <string name="quick_settings_vibration_on">バイブレーションオン</string>
+ <string name="quick_settings_vibration_off">バイブレーションオフ</string>
+ <string name="quick_settings_label_enabled">オン</string>
+ <string name="quick_settings_label_disabled">オフ</string>
+ <string name="quick_settings_ringer_normal">サウンド</string>
+ <string name="quick_settings_lockscreen">ロック画面</string>
+ <string name="quick_settings_network_type">ネットワークモード</string>
+ <string name="quick_settings_report_bug">バグ報告</string>
+ <string name="quick_settings_sync">同期</string>
+ <string name="quick_settings_sync_off">同期オフ</string>
+ <string name="quick_settings_torch">トーチ</string>
+ <string name="quick_settings_torch_off">トーチオフ</string>
+ <string name="quick_settings_nfc">NFC</string>
+ <string name="quick_settings_nfc_off">NFC オフ</string>
+ <string name="quick_settings_screen_timeout">タイムアウト</string>
+ <string name="quick_settings_usb_tether_off_label">切断</string>
+ <string name="quick_settings_usb_tether_connected_label">テザリングオフ</string>
+ <string name="quick_settings_usb_tether_on_label">テザリング</string>
+ <string name="quick_settings_wifiap">Wi-Fi AP</string>
+ <string name="quick_settings_wifiap_off">Wi-Fi AP オフ</string>
+ <string name="quick_settings_quiethours">おやすみモード</string>
+ <string name="quick_settings_quiethours_off">おやすみモードオフ</string>
+ <string name="quick_settings_lte">LTE</string>
+ <string name="quick_settings_lte_off">LTE オフ</string>
+ <string name="quick_settings_volume">ボリューム</string>
+ <string name="quick_settings_camera_label">カメラ</string>
+ <string name="quick_settings_expanded_desktop">拡張デスクトップ</string>
+ <string name="quick_settings_expanded_desktop_off">ノーマル</string>
+ <string name="quick_settings_camera_error_connect">カメラに接続できません</string>
+ <string name="navbar_dialog_title">割り当てるアクションを選択</string>
+ <string name="navbar_home_button">ホームボタン</string>
+ <string name="navbar_recent_button">履歴ボタン</string>
+ <string name="navbar_search_button">検索ボタン</string>
+ <string name="navbar_back_button">戻るボタン</string>
+ <string name="navbar_empty_button">空ボタン</string>
+ <string name="navbar_menu_conditional_button">メニューボタン(自動隠蔽)</string>
+ <string name="navbar_menu_always_button">メニューボタン(常時表示)</string>
+ <string name="navbar_menu_big_button">メニューボタン</string>
+ <string name="pie_battery_status_charging">充電中 (<xliff:g id="percent">%d</xliff:g>%%)</string>
+ <string name="pie_battery_status_full">充電完了</string>
+ <string name="pie_battery_status_discharging">残り <xliff:g id="percent">%d</xliff:g>%%</string>
+ <string name="pie_phone_status_no_service">サービスなし</string>
+ <string name="pie_phone_status_airplane_mode">機内モードオン</string>
+ <string name="pie_phone_status_emergency_only">緊急通報のみ</string>
+</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/cm_strings.xml b/packages/SystemUI/res/values-zh-rCN/cm_strings.xml
index 1b938d0..4487eaf 100644
--- a/packages/SystemUI/res/values-zh-rCN/cm_strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/cm_strings.xml
@@ -51,8 +51,10 @@
<string name="quick_settings_lte">LTE</string>
<string name="quick_settings_lte_off">LTE 已关闭</string>
<string name="quick_settings_volume">音量</string>
+ <string name="quick_settings_camera_label">相机</string>
<string name="quick_settings_expanded_desktop">已扩展</string>
<string name="quick_settings_expanded_desktop_off">正常</string>
+ <string name="quick_settings_camera_error_connect">无法连接到相机</string>
<string name="navbar_dialog_title">选择指定的行为</string>
<string name="navbar_home_button">Home 键</string>
<string name="navbar_recent_button">最近应用键</string>
diff --git a/packages/SystemUI/res/values/ids.xml b/packages/SystemUI/res/values/ids.xml
index f7bc614..bd24f0f 100644
--- a/packages/SystemUI/res/values/ids.xml
+++ b/packages/SystemUI/res/values/ids.xml
@@ -19,6 +19,6 @@
<item type="id" name="expandable_tag" />
<item type="id" name="user_expanded_tag" />
<item type="id" name="user_lock_tag" />
- <item type="id" name="user_cleared_tag" />
+ <item type="id" name="user_dismissed_tag" />
<item type="id" name="status_bar_cling_stub" />
</resources>
diff --git a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
index 7be5949..ceb8654 100644
--- a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
@@ -257,10 +257,6 @@ public class SwipeHelper implements Gefingerpoken {
* @param velocity The desired pixels/second speed at which the view should move
*/
public void dismissChild(final View view, float velocity) {
- dismissChild(view, velocity, false);
- }
-
- private void dismissChild(final View view, float velocity, final boolean fromUser) {
final View animView = mCallback.getChildContentView(view);
final boolean canAnimViewBeDismissed = mCallback.canChildBeDismissed(view);
float newPos;
@@ -288,7 +284,7 @@ public class SwipeHelper implements Gefingerpoken {
anim.setDuration(duration);
anim.addListener(new AnimatorListenerAdapter() {
public void onAnimationEnd(Animator animation) {
- mCallback.onChildDismissed(view, fromUser);
+ mCallback.onChildDismissed(view);
animView.setLayerType(View.LAYER_TYPE_NONE, null);
}
});
@@ -378,7 +374,7 @@ public class SwipeHelper implements Gefingerpoken {
if (dismissChild) {
// flingadingy
- dismissChild(mCurrView, childSwipedFastEnough ? velocity : 0f, true);
+ dismissChild(mCurrView, childSwipedFastEnough ? velocity : 0f);
} else {
// snappity
mCallback.onDragCancelled(mCurrView);
@@ -399,7 +395,7 @@ public class SwipeHelper implements Gefingerpoken {
void onBeginDrag(View v);
- void onChildDismissed(View v, boolean fromUser);
+ void onChildDismissed(View v);
void onDragCancelled(View v);
}
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
index b59acad..989ada0 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
@@ -212,7 +212,7 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
mSwipeHelper.dismissChild(v, 0);
}
- public void onChildDismissed(View v, boolean fromUser) {
+ public void onChildDismissed(View v) {
addToRecycledViews(v);
mLinearLayout.removeView(v);
mCallback.handleSwipe(v);
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
index d6f417d..0f48751 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
@@ -220,7 +220,7 @@ public class RecentsVerticalScrollView extends ScrollView
mSwipeHelper.dismissChild(v, 0);
}
- public void onChildDismissed(View v, boolean fromUser) {
+ public void onChildDismissed(View v) {
addToRecycledViews(v);
mLinearLayout.removeView(v);
mCallback.handleSwipe(v);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 9f57e72..b56aa12 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -108,6 +108,10 @@ public abstract class BaseStatusBar extends SystemUI implements
public static final int EXPANDED_LEAVE_ALONE = -10000;
public static final int EXPANDED_FULL_OPEN = -10001;
+ private static final boolean CLOSE_PANEL_WHEN_EMPTIED = true;
+ private static final int COLLAPSE_AFTER_DISMISS_DELAY = 200;
+ private static final int COLLAPSE_AFTER_REMOVE_DELAY = 400;
+
protected CommandQueue mCommandQueue;
protected IStatusBarService mBarService;
protected H mHandler = createHandler();
@@ -130,6 +134,13 @@ public abstract class BaseStatusBar extends SystemUI implements
protected FrameLayout mStatusBarContainer;
+ private Runnable mPanelCollapseRunnable = new Runnable() {
+ @Override
+ public void run() {
+ animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
+ }
+ };
+
/**
* An interface for navigation key bars to allow status bars to signal which keys are
* currently of interest to the user.<br>
@@ -172,6 +183,7 @@ public abstract class BaseStatusBar extends SystemUI implements
protected Display mDisplay;
private boolean mDeviceProvisioned = false;
+ private int mAutoCollapseBehaviour;
public IStatusBarService getStatusBarService() {
return mBarService;
@@ -181,7 +193,7 @@ public abstract class BaseStatusBar extends SystemUI implements
return mDeviceProvisioned;
}
- private ContentObserver mProvisioningObserver = new ContentObserver(new Handler()) {
+ private ContentObserver mProvisioningObserver = new ContentObserver(mHandler) {
@Override
public void onChange(boolean selfChange) {
final boolean provisioned = 0 != Settings.Global.getInt(
@@ -193,6 +205,33 @@ public abstract class BaseStatusBar extends SystemUI implements
}
};
+ private class SettingsObserver extends ContentObserver {
+ public SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ public void observe() {
+ ContentResolver resolver = mContext.getContentResolver();
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.STATUS_BAR_COLLAPSE_ON_DISMISS), false, this);
+ update();
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ update();
+ }
+
+ private void update() {
+ ContentResolver resolver = mContext.getContentResolver();
+ mAutoCollapseBehaviour = Settings.System.getIntForUser(resolver,
+ Settings.System.STATUS_BAR_COLLAPSE_ON_DISMISS,
+ Settings.System.STATUS_BAR_COLLAPSE_IF_NO_CLEARABLE, UserHandle.USER_CURRENT);
+ }
+ };
+
+ private SettingsObserver mSettingsObserver = new SettingsObserver(mHandler);
+
private RemoteViews.OnClickHandler mOnClickHandler = new RemoteViews.OnClickHandler() {
@Override
public boolean onClickHandler(View view, PendingIntent pendingIntent, Intent fillInIntent) {
@@ -235,6 +274,8 @@ public abstract class BaseStatusBar extends SystemUI implements
Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED), true,
mProvisioningObserver);
+ mSettingsObserver.observe();
+
mBarService = IStatusBarService.Stub.asInterface(
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
@@ -939,18 +980,33 @@ public abstract class BaseStatusBar extends SystemUI implements
if (rowParent != null) rowParent.removeView(entry.row);
updateExpansionStates();
updateNotificationIcons();
+ maybeCollapseAfterNotificationRemoval(entry.userDismissed());
- if (entry.userCleared() && !mNotificationData.hasClearableItems()) {
- // wait a bit to make the user aware of what's happening
- mHandler.postDelayed(new Runnable() {
- @Override
- public void run() {
- animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
- }
- }, 225);
+ return entry.notification;
+ }
+
+ protected void maybeCollapseAfterNotificationRemoval(boolean userDismissed) {
+ if (mAutoCollapseBehaviour == Settings.System.STATUS_BAR_COLLAPSE_NEVER) {
+ return;
+ }
+ if (!isNotificationPanelFullyVisible()) {
+ return;
}
- return entry.notification;
+ boolean collapseDueToEmpty =
+ mAutoCollapseBehaviour == Settings.System.STATUS_BAR_COLLAPSE_IF_EMPTIED
+ && mNotificationData.size() == 0;
+ boolean collapseDueToNoClearable =
+ mAutoCollapseBehaviour == Settings.System.STATUS_BAR_COLLAPSE_IF_NO_CLEARABLE
+ && !mNotificationData.hasClearableItems();
+
+ if (userDismissed && (collapseDueToEmpty || collapseDueToNoClearable)) {
+ mHandler.removeCallbacks(mPanelCollapseRunnable);
+ mHandler.postDelayed(mPanelCollapseRunnable, COLLAPSE_AFTER_DISMISS_DELAY);
+ } else if (mNotificationData.size() == 0) {
+ mHandler.removeCallbacks(mPanelCollapseRunnable);
+ mHandler.postDelayed(mPanelCollapseRunnable, COLLAPSE_AFTER_REMOVE_DELAY);
+ }
}
protected StatusBarIconView addNotificationViews(IBinder key,
@@ -989,6 +1045,7 @@ public abstract class BaseStatusBar extends SystemUI implements
}
updateExpansionStates();
updateNotificationIcons();
+ mHandler.removeCallbacks(mPanelCollapseRunnable);
return iconView;
}
@@ -1036,6 +1093,7 @@ public abstract class BaseStatusBar extends SystemUI implements
protected abstract void tick(IBinder key, StatusBarNotification n, boolean firstTime);
protected abstract void updateExpandedViewPos(int expandedPosition);
protected abstract int getExpandedViewMaxHeight();
+ protected abstract boolean isNotificationPanelFullyVisible();
protected abstract boolean shouldDisableNavbarGestures();
protected boolean isTopNotification(ViewGroup parent, NotificationData.Entry entry) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
index 7222c08..a457167 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
@@ -66,10 +66,10 @@ public class NotificationData {
return NotificationData.getUserExpanded(row);
}
/**
- * Return whether the entry has been manually cleared by the user.
+ * Return whether the entry has been manually dismissed by the user.
*/
- public boolean userCleared() {
- return NotificationData.getUserCleared(row);
+ public boolean userDismissed() {
+ return NotificationData.getUserDismissed(row);
}
/**
* Set the flag indicating that this was manually expanded by the user.
@@ -235,16 +235,16 @@ public class NotificationData {
}
/**
- * Return whether the entry was cleared by the user.
+ * Return whether the entry was dismissed by the user.
*/
- public static boolean getUserCleared(View row) {
- return readBooleanTag(row, R.id.user_cleared_tag);
+ public static boolean getUserDismissed(View row) {
+ return readBooleanTag(row, R.id.user_dismissed_tag);
}
/**
- * Set whether the entry is being touched by the user.
+ * Set whether the entry was dismissed by the user.
*/
- public static boolean setUserCleared(View row) {
- return writeBooleanTag(row, R.id.user_cleared_tag, true);
+ public static boolean setUserDismissed(View row) {
+ return writeBooleanTag(row, R.id.user_dismissed_tag, true);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
index 8558762..61ac45b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
@@ -54,10 +54,12 @@ public class SignalClusterView
private int mMobileStrengthId = 0, mMobileActivityId = 0, mMobileTypeId = 0;
private boolean mIsAirplaneMode = false;
private int mAirplaneIconId = 0;
- private String mWifiDescription, mMobileDescription, mMobileTypeDescription;
+ private boolean mEtherVisible = false;
+ private int mEtherIconId = 0;
+ private String mWifiDescription, mMobileDescription, mMobileTypeDescription, mEtherDescription;
ViewGroup mWifiGroup, mMobileGroup;
- ImageView mWifi, mMobile, mWifiActivity, mMobileActivity, mMobileType, mAirplane;
+ ImageView mWifi, mMobile, mWifiActivity, mMobileActivity, mMobileType, mAirplane, mEther;
View mSpacer;
Handler mHandler;
@@ -119,6 +121,7 @@ public class SignalClusterView
mMobileType = (ImageView) findViewById(R.id.mobile_type);
mSpacer = findViewById(R.id.spacer);
mAirplane = (ImageView) findViewById(R.id.airplane);
+ mEther = (ImageView) findViewById(R.id.ethernet);
apply();
}
@@ -136,6 +139,7 @@ public class SignalClusterView
mMobileType = null;
mSpacer = null;
mAirplane = null;
+ mEther = null;
super.onDetachedFromWindow();
}
@@ -173,6 +177,15 @@ public class SignalClusterView
}
@Override
+ public void setEtherIndicators(boolean visible, int etherIcon, String contentDescription) {
+ mEtherVisible = visible;
+ mEtherIconId = etherIcon;
+ mEtherDescription = contentDescription;
+
+ apply();
+ }
+
+ @Override
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
// Standard group layout onPopulateAccessibilityEvent() implementations
// ignore content description, so populate manually
@@ -218,6 +231,14 @@ public class SignalClusterView
mAirplane.setVisibility(View.GONE);
}
+ if (mEtherVisible) {
+ mEther.setVisibility(View.VISIBLE);
+ mEther.setImageResource(mEtherIconId);
+ mEther.setContentDescription(mEtherDescription);
+ } else {
+ mEther.setVisibility(View.GONE);
+ }
+
if (mMobileVisible && mWifiVisible && mIsAirplaneMode) {
mSpacer.setVisibility(View.INVISIBLE);
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 82b6538..ad588af 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -290,7 +290,6 @@ public class PhoneStatusBar extends BaseStatusBar {
float mFlingVelocity;
int mFlingY;
int[] mAbsPos = new int[2];
- Runnable mPostCollapseCleanup = null;
private Animator mLightsOutAnimation;
private Animator mLightsOnAnimation;
@@ -340,6 +339,19 @@ public class PhoneStatusBar extends BaseStatusBar {
}
};
+ private final Runnable mNotifyClearAll = new Runnable() {
+ @Override
+ public void run() {
+ if (DEBUG) {
+ Slog.v(TAG, "Notifying status bar of notification clear");
+ }
+ try {
+ mPile.setViewRemoval(true);
+ mBarService.onClearAllNotifications();
+ } catch (RemoteException ex) { }
+ }
+ };
+
class SettingsObserver extends ContentObserver {
SettingsObserver(Handler handler) {
super(handler);
@@ -1878,11 +1890,6 @@ public class PhoneStatusBar extends BaseStatusBar {
// Close any "App info" popups that might have snuck on-screen
dismissPopups();
-
- if (mPostCollapseCleanup != null) {
- mPostCollapseCleanup.run();
- mPostCollapseCleanup = null;
- }
}
/**
@@ -2487,6 +2494,11 @@ public class PhoneStatusBar extends BaseStatusBar {
}
@Override
+ protected boolean isNotificationPanelFullyVisible() {
+ return mExpandedVisible && !mAnimating && !isShowingSettings();
+ }
+
+ @Override
public void updateExpandedViewPos(int thingy) {
if (DEBUG) Slog.v(TAG, "updateExpandedViewPos");
@@ -2522,7 +2534,7 @@ public class PhoneStatusBar extends BaseStatusBar {
@Override
public void onClick(View v) {
synchronized (mNotificationData) {
- // animate-swipe all dismissable notifications, then animate the shade closed
+ // animate-swipe all dismissable notifications
int numChildren = mPile.getChildCount();
int scrollTop = mScrollView.getScrollY();
@@ -2535,63 +2547,40 @@ public class PhoneStatusBar extends BaseStatusBar {
snapshot.add(child);
}
}
+
if (snapshot.isEmpty()) {
- animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
+ maybeCollapseAfterNotificationRemoval(true);
return;
}
- new Thread(new Runnable() {
- @Override
- public void run() {
- // Decrease the delay for every row we animate to give the sense of
- // accelerating the swipes
- final int ROW_DELAY_DECREMENT = 10;
- int currentDelay = 140;
- int totalDelay = 0;
-
- // Set the shade-animating state to avoid doing other work during
- // all of these animations. In particular, avoid layout and
- // redrawing when collapsing the shade.
- mPile.setViewRemoval(false);
-
- mPostCollapseCleanup = new Runnable() {
- @Override
- public void run() {
- if (DEBUG) {
- Slog.v(TAG, "running post-collapse cleanup");
- }
- try {
- mPile.setViewRemoval(true);
- mBarService.onClearAllNotifications();
- } catch (Exception ex) { }
- }
- };
-
- View sampleView = snapshot.get(0);
- int width = sampleView.getWidth();
- final int velocity = width * 8; // 1000/8 = 125 ms duration
- for (final View _v : snapshot) {
- mHandler.postDelayed(new Runnable() {
- @Override
- public void run() {
- mPile.dismissRowAnimated(_v, velocity);
- }
- }, totalDelay);
- currentDelay = Math.max(50, currentDelay - ROW_DELAY_DECREMENT);
- totalDelay += currentDelay;
+
+ // Decrease the delay for every row we animate to give the sense of
+ // accelerating the swipes
+ final int ROW_DELAY_DECREMENT = 10;
+ int currentDelay = 140;
+ int totalDelay = 0;
+
+ // Set the shade-animating state to avoid doing other work, in
+ // particular layout and redrawing, during all of these animations.
+ mPile.setViewRemoval(false);
+
+ View sampleView = snapshot.get(0);
+ int width = sampleView.getWidth();
+ final int velocity = width * 8; // 1000/8 = 125 ms duration
+ for (final View _v : snapshot) {
+ mHandler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ mPile.dismissRowAnimated(_v, velocity);
}
- // Delay the collapse animation until after all swipe animations have
- // finished. Provide some buffer because there may be some extra delay
- // before actually starting each swipe animation. Ideally, we'd
- // synchronize the end of those animations with the start of the collaps
- // exactly.
- mHandler.postDelayed(new Runnable() {
- @Override
- public void run() {
- animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
- }
- }, totalDelay + 225);
- }
- }).start();
+ }, totalDelay);
+ currentDelay = Math.max(50, currentDelay - ROW_DELAY_DECREMENT);
+ totalDelay += currentDelay;
+ }
+
+ // After ending all animations, tell the service to remove the
+ // notifications, which will trigger collapsing the shade
+ final View lastEntry = snapshot.get(snapshot.size() - 1);
+ mPile.runOnDismiss(lastEntry, mNotifyClearAll);
}
}
};
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/IntruderAlertView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/IntruderAlertView.java
index 9cbd853..4adc6c0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/IntruderAlertView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/IntruderAlertView.java
@@ -101,7 +101,7 @@ public class IntruderAlertView extends LinearLayout implements SwipeHelper.Callb
return true;
}
- public void onChildDismissed(View v, boolean fromUser) {
+ public void onChildDismissed(View v) {
Slog.v(TAG, "User swiped intruder to dismiss");
mBar.dismissIntruder();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
index 6a823fa..2e3191e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -95,6 +95,7 @@ public class NetworkController extends BroadcastReceiver {
String mContentDescriptionWimax;
String mContentDescriptionCombinedSignal;
String mContentDescriptionDataType;
+ String mContentDescriptionEther;
// wifi
final WifiManager mWifiManager;
@@ -133,6 +134,12 @@ public class NetworkController extends BroadcastReceiver {
private boolean mAirplaneMode = false;
private boolean mLastAirplaneMode = true;
+ //ethernet
+ private boolean mEtherConnected = false;
+ private int mEtherIconId = 0;
+ private int mLastEtherIconId = 0;
+
+
// our ui
Context mContext;
ArrayList<ImageView> mPhoneSignalIconViews = new ArrayList<ImageView>();
@@ -171,6 +178,7 @@ public class NetworkController extends BroadcastReceiver {
void setMobileDataIndicators(boolean visible, int strengthIcon, int activityIcon,
int typeIcon, String contentDescription, String typeContentDescription);
void setIsAirplaneMode(boolean is, int airplaneIcon);
+ void setEtherIndicators(boolean visible, int etherIcon, String contentDescription);
}
public interface NetworkSignalChangedCallback {
@@ -203,7 +211,7 @@ public class NetworkController extends BroadcastReceiver {
updateWimaxIcons();
// telephony
- mPhone = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
+ mPhone = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
mPhone.listen(mPhoneStateListener,
PhoneStateListener.LISTEN_SERVICE_STATE
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
@@ -218,7 +226,7 @@ public class NetworkController extends BroadcastReceiver {
mNetworkName = mNetworkNameDefault;
// wifi
- mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
Handler handler = new WifiHandler();
mWifiChannel = new AsyncChannel();
Messenger wifiMessenger = mWifiManager.getWifiServiceMessenger();
@@ -244,7 +252,7 @@ public class NetworkController extends BroadcastReceiver {
filter.addAction(WimaxManagerConstants.SIGNAL_LEVEL_CHANGED_ACTION);
filter.addAction(WimaxManagerConstants.NET_4G_STATE_CHANGED_ACTION);
}
- context.registerReceiver(this, filter);
+ mContext.registerReceiver(this, filter);
// AIRPLANE_MODE_CHANGED is sent at boot; we've probably already missed it
updateAirplaneMode();
@@ -326,6 +334,12 @@ public class NetworkController extends BroadcastReceiver {
mWifiActivityIconId,
mContentDescriptionWifi);
+ cluster.setEtherIndicators(
+ // only show ethernet in the cluster if connected
+ mEtherConnected,
+ mEtherIconId,
+ mContentDescriptionEther);
+
if (mIsWimaxEnabled && mWimaxConnected) {
// wimax is special
cluster.setMobileDataIndicators(
@@ -995,6 +1009,16 @@ public class NetworkController extends BroadcastReceiver {
mBluetoothTethered = false;
}
+ if (info != null && info.getType() == ConnectivityManager.TYPE_ETHERNET) {
+ mEtherConnected = info.isConnected();
+ mEtherIconId = (mInetCondition == 1
+ ? R.drawable.stat_sys_ether_fully
+ : R.drawable.stat_sys_ether);
+ } else {
+ mEtherConnected = false;
+ mEtherIconId = 0;
+ }
+
// We want to update all the icons, all at once, for any condition change
updateDataNetType();
updateWimaxIcons();
@@ -1007,8 +1031,6 @@ public class NetworkController extends BroadcastReceiver {
// ===== Update the views =======================================================
void refreshViews() {
- Context context = mContext;
-
int combinedSignalIconId = 0;
int combinedActivityIconId = 0;
String combinedLabel = "";
@@ -1042,7 +1064,7 @@ public class NetworkController extends BroadcastReceiver {
}
} else {
mobileLabel
- = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
+ = mContext.getString(R.string.status_bar_settings_signal_meter_disconnected);
}
// Now for things that should only be shown when actually using mobile data.
@@ -1074,7 +1096,7 @@ public class NetworkController extends BroadcastReceiver {
if (mWifiConnected) {
if (mWifiSsid == null) {
- wifiLabel = context.getString(R.string.status_bar_settings_signal_meter_wifi_nossid);
+ wifiLabel = mContext.getString(R.string.status_bar_settings_signal_meter_wifi_nossid);
mWifiActivityIconId = 0; // no wifis, no bits
} else {
wifiLabel = mWifiSsid;
@@ -1105,7 +1127,7 @@ public class NetworkController extends BroadcastReceiver {
if (mHasMobileDataFeature) {
wifiLabel = "";
} else {
- wifiLabel = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
+ wifiLabel = mContext.getString(R.string.status_bar_settings_signal_meter_disconnected);
}
}
@@ -1116,9 +1138,9 @@ public class NetworkController extends BroadcastReceiver {
R.string.accessibility_bluetooth_tether);
}
- final boolean ethernetConnected = (mConnectedNetworkType == ConnectivityManager.TYPE_ETHERNET);
- if (ethernetConnected) {
- combinedLabel = context.getString(R.string.ethernet_label);
+ mEtherConnected = (mConnectedNetworkType == ConnectivityManager.TYPE_ETHERNET);
+ if (mEtherConnected) {
+ mContentDescriptionEther = combinedLabel = mContext.getString(R.string.ethernet_label);
}
if (mAirplaneMode &&
@@ -1141,17 +1163,17 @@ public class NetworkController extends BroadcastReceiver {
// let the mobile icon show "No internet connection."
wifiLabel = "";
} else {
- wifiLabel = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
+ wifiLabel = mContext.getString(R.string.status_bar_settings_signal_meter_disconnected);
combinedLabel = wifiLabel;
}
mContentDescriptionCombinedSignal = mContentDescriptionPhoneSignal;
combinedSignalIconId = mDataSignalIconId;
}
- }
- else if (!mDataConnected && !mWifiConnected && !mBluetoothTethered && !mWimaxConnected && !ethernetConnected) {
+ } else if (!mDataConnected && !mWifiConnected && !mBluetoothTethered
+ && !mWimaxConnected && !mEtherConnected) {
// pretty much totally disconnected
- combinedLabel = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
+ combinedLabel = mContext.getString(R.string.status_bar_settings_signal_meter_disconnected);
// On devices without mobile radios, we want to show the wifi icon
combinedSignalIconId =
mHasMobileDataFeature ? mDataSignalIconId : mWifiIconId;
@@ -1203,6 +1225,7 @@ public class NetworkController extends BroadcastReceiver {
|| mLastWifiIconId != mWifiIconId
|| mLastWimaxIconId != mWimaxIconId
|| mLastDataTypeIconId != mDataTypeIconId
+ || mLastEtherIconId != mEtherIconId
|| mLastAirplaneMode != mAirplaneMode)
{
// NB: the mLast*s will be updated later
@@ -1287,6 +1310,11 @@ public class NetworkController extends BroadcastReceiver {
}
}
+ // the ethernet icon
+ if (mLastEtherIconId != mEtherIconId) {
+ mLastEtherIconId = mEtherIconId;
+ }
+
// the data network type overlay
if (mLastDataTypeIconId != mDataTypeIconId) {
mLastDataTypeIconId = mDataTypeIconId;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java
index 9e9dec2..2aa0f5e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java
@@ -61,7 +61,8 @@ public class NotificationRowLayout
HashMap<View, ValueAnimator> mDisappearingViews = new HashMap<View, ValueAnimator>();
private SwipeHelper mSwipeHelper;
-
+ private HashMap<View, Runnable> mDismissRunnables = new HashMap<View, Runnable>();
+
private OnSizeChangedListener mOnSizeChangedListener;
// Flag set during notification removal animation to avoid causing too much work until
@@ -111,6 +112,10 @@ public class NotificationRowLayout
mOnSizeChangedListener = l;
}
+ public void runOnDismiss(View child, Runnable runnable) {
+ mDismissRunnables.put(child, runnable);
+ }
+
@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
super.onWindowFocusChanged(hasWindowFocus);
@@ -166,14 +171,17 @@ public class NotificationRowLayout
return NotificationData.setUserLocked(v, userLocked);
}
- public void onChildDismissed(View v, boolean fromUser) {
+ public void onChildDismissed(View v) {
if (DEBUG) Slog.v(TAG, "onChildDismissed: " + v + " mRemoveViews=" + mRemoveViews);
final View veto = v.findViewById(R.id.veto);
if (veto != null && veto.getVisibility() != View.GONE && mRemoveViews) {
veto.performClick();
}
- if (fromUser) {
- NotificationData.setUserCleared(v);
+ NotificationData.setUserDismissed(v);
+
+ Runnable dismissRunnable = mDismissRunnables.remove(v);
+ if (dismissRunnable != null) {
+ dismissRunnable.run();
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
index d40bff6..2c9da8f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -383,6 +383,11 @@ public class TabletStatusBar extends BaseStatusBar implements
return getNotificationPanelHeight();
}
+ @Override
+ protected boolean isNotificationPanelFullyVisible() {
+ return mNotificationPanel.getVisibility() == View.VISIBLE;
+ }
+
private int getNotificationPanelHeight() {
final Resources res = mContext.getResources();
final Display d = mWindowManager.getDefaultDisplay();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
index d43e4a4..509e97c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
@@ -137,6 +137,11 @@ public class TvStatusBar extends BaseStatusBar {
}
@Override
+ protected boolean isNotificationPanelFullyVisible() {
+ return false;
+ }
+
+ @Override
protected boolean shouldDisableNavbarGestures() {
return true;
}
diff --git a/services/java/com/android/server/am/BatteryStatsService.java b/services/java/com/android/server/am/BatteryStatsService.java
index ab20208..99cb2c8 100644
--- a/services/java/com/android/server/am/BatteryStatsService.java
+++ b/services/java/com/android/server/am/BatteryStatsService.java
@@ -330,6 +330,13 @@ public final class BatteryStatsService extends IBatteryStats.Stub {
synchronized (mStats) {
mBluetoothPendingStats = false;
mStats.noteBluetoothOffLocked();
+ mStats.setBtHeadset(null);
+ }
+
+ BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
+ if (adapter != null && mBluetoothHeadset != null) {
+ adapter.closeProfileProxy(BluetoothProfile.HEADSET, mBluetoothHeadset);
+ mBluetoothHeadset = null;
}
}
diff --git a/services/java/com/android/server/location/GpsLocationProvider.java b/services/java/com/android/server/location/GpsLocationProvider.java
index 22c52f4..cba2db2 100644
--- a/services/java/com/android/server/location/GpsLocationProvider.java
+++ b/services/java/com/android/server/location/GpsLocationProvider.java
@@ -1471,7 +1471,7 @@ public class GpsLocationProvider implements LocationProviderInterface {
type = AGPS_REF_LOCATION_TYPE_GSM_CELLID;
}
native_agps_set_ref_location_cellid(type, mcc, mnc,
- gsm_cell.getLac(), gsm_cell.getCid());
+ gsm_cell.getLac(), gsm_cell.getPsc(), gsm_cell.getCid());
} else {
Log.e(TAG,"Error getting cell location info.");
}
@@ -1642,7 +1642,7 @@ public class GpsLocationProvider implements LocationProviderInterface {
// AGPS ril suport
private native void native_agps_set_ref_location_cellid(int type, int mcc, int mnc,
- int lac, int cid);
+ int lac, int psc, int cid);
private native void native_agps_set_id(int type, String setid);
private native void native_update_network_state(boolean connected, int type,
diff --git a/services/java/com/android/server/power/ShutdownThread.java b/services/java/com/android/server/power/ShutdownThread.java
index c2c678a0..9c10c9d 100644
--- a/services/java/com/android/server/power/ShutdownThread.java
+++ b/services/java/com/android/server/power/ShutdownThread.java
@@ -156,7 +156,7 @@ public final class ShutdownThread extends Thread {
// See if the advanced reboot menu is enabled (only if primary user) and check the keyguard state
boolean advancedReboot = isPrimary ? advancedRebootEnabled(context) : false;
KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
- boolean locked = km.inKeyguardRestrictedInputMode();
+ boolean locked = km.inKeyguardRestrictedInputMode() && km.isKeyguardSecure();
if (advancedReboot && !locked) {
// Include options in power menu for rebooting into recovery or bootloader
diff --git a/services/jni/com_android_server_location_GpsLocationProvider.cpp b/services/jni/com_android_server_location_GpsLocationProvider.cpp
index f2ec1b3..4285ddf 100644
--- a/services/jni/com_android_server_location_GpsLocationProvider.cpp
+++ b/services/jni/com_android_server_location_GpsLocationProvider.cpp
@@ -375,7 +375,7 @@ static jint android_location_GpsLocationProvider_read_sv_status(JNIEnv* env, job
}
static void android_location_GpsLocationProvider_agps_set_reference_location_cellid(JNIEnv* env,
- jobject obj, jint type, jint mcc, jint mnc, jint lac, jint cid)
+ jobject obj, jint type, jint mcc, jint mnc, jint lac, jint psc, jint cid)
{
AGpsRefLocation location;
@@ -388,9 +388,13 @@ static void android_location_GpsLocationProvider_agps_set_reference_location_cel
case AGPS_REF_LOCATION_TYPE_GSM_CELLID:
case AGPS_REF_LOCATION_TYPE_UMTS_CELLID:
location.type = type;
+ location.u.cellID.type = type;
location.u.cellID.mcc = mcc;
location.u.cellID.mnc = mnc;
location.u.cellID.lac = lac;
+#ifdef AGPS_USE_PSC
+ location.u.cellID.psc = psc;
+#endif
location.u.cellID.cid = cid;
break;
default:
@@ -601,7 +605,7 @@ static JNINativeMethod sMethods[] = {
{"native_agps_data_conn_closed", "()V", (void*)android_location_GpsLocationProvider_agps_data_conn_closed},
{"native_agps_data_conn_failed", "()V", (void*)android_location_GpsLocationProvider_agps_data_conn_failed},
{"native_agps_set_id","(ILjava/lang/String;)V",(void*)android_location_GpsLocationProvider_agps_set_id},
- {"native_agps_set_ref_location_cellid","(IIIII)V",(void*)android_location_GpsLocationProvider_agps_set_reference_location_cellid},
+ {"native_agps_set_ref_location_cellid","(IIIIII)V",(void*)android_location_GpsLocationProvider_agps_set_reference_location_cellid},
{"native_set_agps_server", "(ILjava/lang/String;I)V", (void*)android_location_GpsLocationProvider_set_agps_server},
{"native_send_ni_response", "(II)V", (void*)android_location_GpsLocationProvider_send_ni_response},
{"native_agps_ni_message", "([BI)V", (void *)android_location_GpsLocationProvider_agps_send_ni_message},
diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java
index d93da8f..feac45b 100644
--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -293,7 +293,7 @@ cat include/telephony/ril.h | \
int RIL_UNSOL_RINGBACK_TONE = 1029;
int RIL_UNSOL_RESEND_INCALL_MUTE = 1030;
int RIL_UNSOL_CDMA_SUBSCRIPTION_SOURCE_CHANGED = 1031;
- int RIL_UNSOl_CDMA_PRL_CHANGED = 1032;
+ int RIL_UNSOL_CDMA_PRL_CHANGED = 1032;
int RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE = 1033;
int RIL_UNSOL_RIL_CONNECTED = 1034;
int RIL_UNSOL_VOICE_RADIO_TECH_CHANGED = 1035;