Compare commits

...

21 Commits

Author SHA1 Message Date
Michael Bestas
89faf9669a Automatic translation import
Change-Id: I6b8d3fb084df5abb3449b842ce02d1d6aaf2170a
(cherry picked from commit d5a226372a)
2015-05-02 00:57:57 +00:00
cretin45
a0eb5bb442 Setupwizard: Fix msim NPE where sim only in slot 2
Change-Id: I919129185cb49c51f9f02d9718e116e7d02b0d2c
2015-04-27 13:20:13 -07:00
Michael Bestas
9a610892c4 Automatic translation import
Change-Id: Ifc62c159189df11f3443defc57069ab5b78b644f
2015-04-25 01:15:00 +03:00
Michael Bestas
c4df39fe5c Automatic translation import
Change-Id: I1649ba39d39b73ce351909a310041d6f6b0a99b7
2015-04-17 22:20:07 +03:00
cretin45
70c7b24ab5 SetupWizard: Give radio a 10 second chance to come up
Change-Id: Iadd817b200106783dd67edbc5ad03928ce2baa6b
2015-04-14 17:28:37 -07:00
cretin45
cb09e29e29 Setupwizard: Make sure to advance if GMS is absent
Change-Id: Ia0c4d83c9a9f7c581208d753024f55f48326afc7
2015-04-09 12:09:24 -07:00
cretin45
1d7988a4c7 SetupWizard: Aggressively hide nav bar on soft key devices
Change-Id: Ic23fd7e605a323411fe2f581235ff3ed45bfcaed
2015-04-09 10:44:41 -07:00
cretin45
62b79e3880 SetupWizard: Ensure page object isn't null if FM destroyed
Change-Id: Ia794e7656587ca803d02418d3d84d4df5027cd00
2015-04-09 10:43:41 -07:00
cretin45
0fde3a04cc SetupWizard: Handle all touch events in EnableAccessibilityController
Change-Id: Icf15be21c90d32305a9c1f8b9835eb473acf1f33
2015-04-08 12:09:55 -07:00
Michael Bestas
cc9467cfbd Automatic translation import
Change-Id: Ifa97d2292f1ab37a21a8695a53e673f406df706b
2015-04-07 00:51:01 +03:00
cretin45
4c2ce25f1c SetupWizard: Don't assume order of SubInfoRecords
Change-Id: I3b4132afccc96a5d08986a3cb902bd384931f21f
2015-04-03 16:07:47 -07:00
Aaahh
9192fc6903 SetupWizard: Disable Checkbox on Resume
Change-Id: Ica6f3043b9b0d3703b6ce6f47a43b5201deb05b7
2015-04-03 18:23:30 -04:00
Michael Bestas
6fb3d23f09 Automatic translation import
Change-Id: Icd2308a33556872fa1564058b8250c60dc1b8372
2015-03-31 01:51:32 +03:00
cretin45
c8e4c29020 SetupWizard: Lock orientation prior to finish animation
Change-Id: I43a69937e2deb5f55585522fe5d00c51ffdae569
2015-03-23 15:08:09 -07:00
Michael Bestas
afcf65d6c0 Automatic translation import
Change-Id: I9aa0c0cf342d79ffcdb42e8c87284ad354fc9563
2015-03-22 20:01:36 +02:00
cretin45
33683fc2ce SetupWizard: Initialize the nav keys bundle boolean
Change-Id: I50f2ef0fb7226c8b58437b669ca71df436d68ee8
2015-03-20 15:00:21 -07:00
cretin45
838248ab86 SetupWizard: Fix regression for devices without custom default theme
Change-Id: Ia223c1b118dbb68e596ff01cf944bc870a321752
2015-03-19 15:05:23 -07:00
cretin45
83be05d6ec SetupWizard: Fix regression, only init pages once
Change-Id: I1207cb3975daa752a66eb8e9e40635f9a8009509
2015-03-19 09:46:17 -07:00
cretin45
ed5d46703e SetupWizard: Better handling of launching into other activities
Change-Id: I4d8dc4a1b25e45c6ff35042239a0adf4c16458f1
2015-03-17 15:18:16 -07:00
d34d
836f867086 Disable theme components for secondary users
This patch is to mitigate theming problems with multiple users.
Once themes properly support multiple users we can revert this.

Change-Id: Idc89a273bc1563fc668ca2a5a591cf133e8d5406
2015-03-17 15:41:08 +00:00
Michael Bestas
c7b84c2793 Automatic translation import
Change-Id: If0a158896a3ec49fb0b32c48c6f426dea4d9b653
2015-03-15 01:48:39 +02:00
40 changed files with 803 additions and 214 deletions

View File

@@ -66,6 +66,7 @@
<application android:label="@string/app_name" <application android:label="@string/app_name"
android:icon="@drawable/icon" android:icon="@drawable/icon"
android:theme="@style/Theme.Setup" android:theme="@style/Theme.Setup"
android:uiOptions="none"
android:name=".SetupWizardApp"> android:name=".SetupWizardApp">
<meta-data android:name="com.google.android.gms.version" <meta-data android:name="com.google.android.gms.version"
@@ -75,9 +76,9 @@
android:label="@string/product_name" android:label="@string/product_name"
android:launchMode="singleInstance" android:launchMode="singleInstance"
android:excludeFromRecents="true" android:excludeFromRecents="true"
android:uiOptions="none"
android:configChanges="themeChange|mcc|mnc" android:configChanges="themeChange|mcc|mnc"
android:immersive="true"> android:immersive="true"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter android:priority="9"> <intent-filter android:priority="9">

View File

@@ -21,6 +21,13 @@
<include layout="@layout/header" /> <include layout="@layout/header" />
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:indeterminateOnly="true"
android:layout_width="match_parent"
android:layout_height="8dp" />
<FrameLayout android:id="@+id/page" <FrameLayout android:id="@+id/page"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
@@ -35,7 +42,8 @@
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/PageContent"> style="@style/PageContent"
android:visibility="gone">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -21,6 +21,13 @@
<include layout="@layout/header" /> <include layout="@layout/header" />
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:indeterminateOnly="true"
android:layout_width="match_parent"
android:layout_height="8dp" />
<FrameLayout android:id="@+id/page" <FrameLayout android:id="@+id/page"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
@@ -31,10 +38,12 @@
android:fillViewport="true"> android:fillViewport="true">
<LinearLayout <LinearLayout
android:id="@+id/page_view"
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/PageContent"> style="@style/PageContent"
android:visibility="gone">
<TextView <TextView
android:id="@+id/mobile_data_summary" android:id="@+id/mobile_data_summary"

View File

@@ -38,6 +38,7 @@
<string name="choose_data_sim_summary" product="default">Watter SIM wil jy gebruik vir data? Die gekose SIM kan netwerk koste aangaan, dit sal gebruik word met die opstel van jou foon.</string> <string name="choose_data_sim_summary" product="default">Watter SIM wil jy gebruik vir data? Die gekose SIM kan netwerk koste aangaan, dit sal gebruik word met die opstel van jou foon.</string>
<string name="date_time_summary">Stel jou tydsone en pas huidige datum en tyd toe, indien nodig</string> <string name="date_time_summary">Stel jou tydsone en pas huidige datum en tyd toe, indien nodig</string>
<string name="backup_data_summary"><b>Rugsteun</b> program data, Wi-Fi wagwoorde en ander instellings na Google-bedieners</string> <string name="backup_data_summary"><b>Rugsteun</b> program data, Wi-Fi wagwoorde en ander instellings na Google-bedieners</string>
<string name="other_services_summary">Hierdie dienste word deur Google verskaf en jy kan dit aktiveer of deaktiveer op enige tyd. Data sal in ooreenstemming met Google se <xliff:g id="name" example="Privacy Policy">%s</xliff:g> gebruik word.</string>
<string name="location_services_summary">Ligging dienste laat stelsel en ander 3rde party programme toe om data te gebruik soos jou benaderde ligging. Bv \'n program kan jou benaderde ligging gebruik om nabygeleë koffiewinkels op te spoor.</string> <string name="location_services_summary">Ligging dienste laat stelsel en ander 3rde party programme toe om data te gebruik soos jou benaderde ligging. Bv \'n program kan jou benaderde ligging gebruik om nabygeleë koffiewinkels op te spoor.</string>
<string name="location_access_summary"><b>Laat programme toe wat jou toestemming gevra het</b> om jou ligging inligting te gebruik. Dit kan jou huidige ligging en plekke asook liggings en plekke uit die verlede insluit.</string> <string name="location_access_summary"><b>Laat programme toe wat jou toestemming gevra het</b> om jou ligging inligting te gebruik. Dit kan jou huidige ligging en plekke asook liggings en plekke uit die verlede insluit.</string>
<string name="location_gps" product="tablet"><b>Verbeter ligging akkuraatheid</b> deur programme toe te laat om jou GPS te kan gebruik op jou tablet.</string> <string name="location_gps" product="tablet"><b>Verbeter ligging akkuraatheid</b> deur programme toe te laat om jou GPS te kan gebruik op jou tablet.</string>
@@ -53,9 +54,14 @@
<string name="yes">Ja</string> <string name="yes">Ja</string>
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string> <string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
<string name="emergency_call">Noodoproep</string> <string name="emergency_call">Noodoproep</string>
<string name="setup_services">Cyanogen funksies</string>
<string name="services_explanation" product="tablet">Hierdie dienste werk vir jou om die vermoëns van jou tablet uit te brei. Data sal in ooreenkomstig gebruik word met Cyanogen\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
<string name="services_explanation" product="default">Hierdie dienste werk vir jou om die vermoëns van jou foon uit te brei. Data sal in ooreenkomstig gebruik word met Cyanogen\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
<string name="services_privacy_policy">Privaatheid beleid</string> <string name="services_privacy_policy">Privaatheid beleid</string>
<string name="services_help_improve_cm">Help verbeter <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string> <string name="services_help_improve_cm">Help verbeter <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> deur outomaties diagnostiese en gebruikers data te stuur na Cyanogen. Hierdie inligting kan nie gebruik word om jou te identifiseer nie en help spanne werk op dinge soos battery lewe, program werkverrigting en nuwe <xliff:g id="name" example="CyanogenMod">%s</xliff:g> funksies.</string> <string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> deur outomaties diagnostiese en gebruikers data te stuur na Cyanogen. Hierdie inligting kan nie gebruik word om jou te identifiseer nie en help spanne werk op dinge soos battery lewe, program werkverrigting en nuwe <xliff:g id="name" example="CyanogenMod">%s</xliff:g> funksies.</string>
<string name="services_apply_theme">Pas <xliff:g id="name" example="Material">%s</xliff:g> tema toe</string>
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> aktiveer unieke ikone, agtergronde en lettertipe.</string>
<string name="services_os_nav_keys_label"><b>Gebruik skerm navigasie sleutels</b> in plaas van hardeware sleutels.</string> <string name="services_os_nav_keys_label"><b>Gebruik skerm navigasie sleutels</b> in plaas van hardeware sleutels.</string>
<string name="services_use_secure_sms">Maak gebruik van veilige SMS</string> <string name="services_use_secure_sms">Maak gebruik van veilige SMS</string>
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> om SMS gesprekke met ander gebruikers te enkripteer met behulp van veilige SMS op \'n <xliff:g id="name" example="CyanogenMod">%s</xliff:g> toestel.</string> <string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> om SMS gesprekke met ander gebruikers te enkripteer met behulp van veilige SMS op \'n <xliff:g id="name" example="CyanogenMod">%s</xliff:g> toestel.</string>

View File

@@ -18,10 +18,13 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">Quraşdırma Sehrbazı</string> <string name="app_name">Quraşdırma Sehrbazı</string>
<string name="next">Sonrakı</string> <string name="next">Sonrakı</string>
<string name="skip">Keç</string> <string name="skip">Ötür</string>
<string name="setup_choose_data_sim">Verilənlər üçün bir SIM seçin</string> <string name="setup_choose_data_sim">Verilənlər üçün bir SIM seçin</string>
<string name="choose_data_sim_summary" product="tablet">Hansı SIM\'dən verilənlər üçün istifadə etmək istəyirsiz? Şəbəkə planşetinizin quraşdırılması üçün seçilən SIM\'ə görə ödəniş tətbiq edə bilər.</string> <string name="choose_data_sim_summary" product="tablet">Hansı SIM\'dən verilənlər üçün istifadə etmək istəyirsiz? Şəbəkə planşetinizin quraşdırılması üçün seçilən SIM\'ə görə ödəniş tətbiq edə bilər.</string>
<string name="choose_data_sim_summary" product="default">Hansı SIM\'dən verilənlər üçün istifadə etmək istəyirsiz? Şəbəkə telefonunuzun quraşdırılması üçün seçilən SIM\'ə görə ödəniş tətbiq edə bilər.</string> <string name="choose_data_sim_summary" product="default">Hansı SIM\'dən verilənlər üçün istifadə etmək istəyirsiz? Şəbəkə telefonunuzun quraşdırılması üçün seçilən SIM\'ə görə ödəniş tətbiq edə bilər.</string>
<string name="backup_data_summary">Tətbiqetmə verilənlərini, Wi-Fi şifrələri və digər tənzimləmələri Google serverlərinə <b>nüsxələ</b></string> <string name="backup_data_summary">Tətbiqetmə verilənlərini, Wi-Fi şifrələri və digər tənzimləmələri Google serverlərinə <b>nüsxələ</b></string>
<string name="setup_mobile_data">Mobil verilənləri aç</string> <string name="setup_mobile_data">Mobil verilənləri aç</string>
<string name="setup_mobile_data_no_service">Xidmət yoxdur</string>
<string name="enable_mobile_data_summary">Quraşdırma vaxtı mobil verilənlərdən istifadə etmək istəyirsiniz? Mobil verilənləri açmaq əlavə ödənişə səbəb ola bilər.</string>
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
</resources> </resources>

View File

@@ -59,7 +59,7 @@
<string name="services_explanation" product="default">Tyto služby rozšiřují funkce vašeho telefonu. Data budou použita v souladu se zásadami ochrany osobních údajů Cyanogen <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string> <string name="services_explanation" product="default">Tyto služby rozšiřují funkce vašeho telefonu. Data budou použita v souladu se zásadami ochrany osobních údajů Cyanogen <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
<string name="services_privacy_policy">Zásady ochrany osobních údajů</string> <string name="services_privacy_policy">Zásady ochrany osobních údajů</string>
<string name="services_help_improve_cm">Pomozte zlepšovat <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string> <string name="services_help_improve_cm">Pomozte zlepšovat <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
<string name="services_metrics_label">&lt;b&gt;Pomozte zlepšovat <xliff:g id="name" example="CyanogenMod">%s</xliff:g>&lt;/b&gt; automatickým odesíláním dat o používání do Cyanogenu. Tyto informace nebudou použity k vaší identifikaci, ale pomohou vývojářům v práci na věcech jako výdrž baterie, rychlost aplikací nebo vývoj nových <xliff:g id="name" example="CyanogenMod">%s</xliff:g> funkcí.</string> <string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> automatickým odesíláním dat o používání. Tato data nelze použít pro Vaší identifikaci, ale pomohou vývojářskému týmu s informacemi o výdrži baterie, výkonu aplikací a vývoji nových vlastností <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
<string name="services_apply_theme">Použít motiv <xliff:g id="name" example="Material">%s</xliff:g></string> <string name="services_apply_theme">Použít motiv <xliff:g id="name" example="Material">%s</xliff:g></string>
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> povolí unikátní ikony, tapety a písma.</string> <string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> povolí unikátní ikony, tapety a písma.</string>
<string name="services_os_nav_keys_label"><b>Použít navigační klávesy na obrazovce</b> namísto hw kláves.</string> <string name="services_os_nav_keys_label"><b>Použít navigační klávesy na obrazovce</b> namísto hw kláves.</string>

View File

@@ -54,11 +54,14 @@
<string name="yes">Ja</string> <string name="yes">Ja</string>
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> <xliff:g id="name">%s</xliff:g></string> <string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> <xliff:g id="name">%s</xliff:g></string>
<string name="emergency_call">Notruf</string> <string name="emergency_call">Notruf</string>
<string name="setup_services">Cyanogen-Funktionen</string>
<string name="services_explanation" product="tablet">Diese Dienste werden verwendet, um die Funktionen Ihres Tablets zu erweitern. Die Daten werden in Übereinstimmung mit Cyanogens <xliff:g id="name" example="Privacy Policy">%s</xliff:g> verwendet.</string> <string name="services_explanation" product="tablet">Diese Dienste werden verwendet, um die Funktionen Ihres Tablets zu erweitern. Die Daten werden in Übereinstimmung mit Cyanogens <xliff:g id="name" example="Privacy Policy">%s</xliff:g> verwendet.</string>
<string name="services_explanation" product="default">Diese Dienste werden verwendet, um die Funktionen Ihres Telefons zu erweitern. Die Daten werden in Übereinstimmung mit Cyanogens <xliff:g id="name" example="Privacy Policy">%s</xliff:g> verwendet.</string> <string name="services_explanation" product="default">Diese Dienste werden verwendet, um die Funktionen Ihres Telefons zu erweitern. Die Daten werden in Übereinstimmung mit Cyanogens <xliff:g id="name" example="Privacy Policy">%s</xliff:g> verwendet.</string>
<string name="services_privacy_policy">Datenschutzbestimmungen</string> <string name="services_privacy_policy">Datenschutzbestimmungen</string>
<string name="services_help_improve_cm">Helfen Sie <xliff:g id="name" example="CyanogenMod">%s</xliff:g> zu verbessern</string> <string name="services_help_improve_cm">Helfen Sie <xliff:g id="name" example="CyanogenMod">%s</xliff:g> zu verbessern</string>
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> indem Sie automatisch Diagnose- und Nutzungsdaten an CyanogenMod senden. Diese Information können nicht verwendet werden, um Sie zu identifizieren. Es hilft unseren Teams, die an Dingen wie Akkulaufzeit, App-Leistung oder an neuen <xliff:g id="name" example="CyanogenMod">%s</xliff:g>-Funktionen arbeiten.</string> <string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> indem Sie automatisch Diagnose- und Nutzungsdaten an CyanogenMod senden. Diese Information können nicht verwendet werden, um Sie zu identifizieren. Es hilft unseren Teams, die an Dingen wie Akkulaufzeit, App-Leistung oder an neuen <xliff:g id="name" example="CyanogenMod">%s</xliff:g>-Funktionen arbeiten.</string>
<string name="services_apply_theme"><xliff:g id="name" example="Material">%s</xliff:g>-Design anwenden</string>
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g>, um spezifische Symbole, Hintergrundbilder und Schriftarten zu aktivieren.</string>
<string name="services_os_nav_keys_label"><b>Bildschirm-Navigationstasten</b> statt Hardwaretasten verwenden.</string> <string name="services_os_nav_keys_label"><b>Bildschirm-Navigationstasten</b> statt Hardwaretasten verwenden.</string>
<string name="services_use_secure_sms">Sichere SMS verwenden</string> <string name="services_use_secure_sms">Sichere SMS verwenden</string>
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g>, um SMS-Konversationen mit anderen Nutzern auf einem <xliff:g id="name" example="CyanogenMod">%s</xliff:g>-Gerät zu verschlüsseln.</string> <string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g>, um SMS-Konversationen mit anderen Nutzern auf einem <xliff:g id="name" example="CyanogenMod">%s</xliff:g>-Gerät zu verschlüsseln.</string>

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<!--
Copyright (C) 2013-2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">Setup Wizard</string>
<string name="next">Next</string>
<string name="skip">Skip</string>
<string name="start">Start</string>
<string name="ok">OK</string>
<string name="loading">Just a sec\u2026</string>
<string name="setup_complete">Setup is complete</string>
<string name="setup_welcome">Welcome</string>
<string name="setup_wifi">Select Wi-Fi</string>
<string name="setup_sim_missing">SIM card missing</string>
<string name="setup_choose_data_sim">Choose a SIM for data</string>
<string name="setup_location">Location services</string>
<string name="setup_other">Other services</string>
<string name="setup_datetime">Date &amp; time</string>
<string name="setup_current_date">Current date</string>
<string name="setup_current_time">Current time</string>
<string name="sim_missing_summary" product="tablet">A SIM card has not been detected in your tablet. To insert a SIM card, read the instructions that came with your device.</string>
<string name="sim_missing_summary" product="default">A SIM card has not been detected in your phone. To insert a SIM card, read the instructions that came with your device.</string>
<string name="choose_data_sim_summary" product="tablet">Which SIM do you want to use for data? The selected SIM may incur network charges as it will be used to set up your tablet.</string>
<string name="choose_data_sim_summary" product="default">Which SIM do you want to use for data? The selected SIM may incur network charges as it will be used to set up your phone.</string>
<string name="date_time_summary">Set your time zone and adjust current date and time if needed</string>
<string name="backup_data_summary"><b>Back up</b> app data, Wi-Fi passwords, and other settings to Google servers</string>
<string name="other_services_summary">These services put Google to work for you, and you can turn them on or off at any time. Data will be used in accordance with Google\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
<string name="location_services_summary">Location services allows system and third party apps to gather and use data such as your approximate location. For example, an app may use your approximate location to locate nearby coffee shops.</string>
<string name="location_access_summary"><b>Allow apps that have asked your permission</b> to use your location information. This may include your current location and past locations.</string>
<string name="location_gps" product="tablet"><b>Improve location accuracy</b> by allowing apps to use the GPS on your tablet.</string>
<string name="location_gps" product="default"><b>Improve location accuracy</b> by allowing apps to use the GPS on your phone.</string>
<string name="location_network"><b>Use Wi-Fi</b> to help apps determine your location.</string>
<string name="location_network_telephony"><b>Use Wi-Fi and mobile networks</b> to help apps determine your location.</string>
<string name="location_network_gms"><b>Use Google\'s location service</b> to help apps determine your location. This means sending anonymous location data to Google, even when no apps are running.</string>
<string name="setup_mobile_data">Turn on mobile data</string>
<string name="setup_mobile_data_no_service">No service</string>
<string name="setup_mobile_data_emergency_only">Emergency calls only</string>
<string name="enable_mobile_data_summary">Do you want to use mobile data during setup? Turning on mobile data may be subject to data charges.</string>
<string name="no">No</string>
<string name="yes">Yes</string>
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
<string name="emergency_call">Emergency call</string>
<string name="setup_services">Cyanogen features</string>
<string name="services_explanation" product="tablet">These services work for you to extend the capabilities of your tablet. Data will be used in accordance with Cyanogen\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
<string name="services_explanation" product="default">These services work for you to extend the capabilities of your phone. Data will be used in accordance with Cyanogen\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
<string name="services_privacy_policy">Privacy Policy</string>
<string name="services_help_improve_cm">Help improve <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> by automatically sending diagnostic and usage data to Cyanogen. This information cant be used to identify you and lends a hand to teams working on things like battery life, app performance, and new <xliff:g id="name" example="CyanogenMod">%s</xliff:g> features.</string>
<string name="services_apply_theme">Apply the <xliff:g id="name" example="Material">%s</xliff:g> theme</string>
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> enabling unique icons, wallpapers, and fonts.</string>
<string name="services_os_nav_keys_label"><b>Use on screen navigation keys</b> instead of hardware keys.</string>
<string name="services_use_secure_sms">Use secure SMS</string>
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> to encrypt SMS conversations with other users using secure SMS on a <xliff:g id="name" example="CyanogenMod">%s</xliff:g> device.</string>
</resources>

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<!--
Copyright (C) 2013-2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">Setup Wizard</string>
<string name="next">Next</string>
<string name="skip">Skip</string>
<string name="start">Start</string>
<string name="ok">OK</string>
<string name="loading">Just a sec\u2026</string>
<string name="setup_complete">Setup is complete</string>
<string name="setup_welcome">Welcome</string>
<string name="setup_wifi">Select Wi-Fi</string>
<string name="setup_sim_missing">SIM card missing</string>
<string name="setup_choose_data_sim">Choose a SIM for data</string>
<string name="setup_location">Location services</string>
<string name="setup_other">Other services</string>
<string name="setup_datetime">Date &amp; time</string>
<string name="setup_current_date">Current date</string>
<string name="setup_current_time">Current time</string>
<string name="sim_missing_summary" product="tablet">A SIM card has not been detected in your tablet. To insert a SIM card, read the instructions that came with your device.</string>
<string name="sim_missing_summary" product="default">A SIM card has not been detected in your phone. To insert a SIM card, read the instructions that came with your device.</string>
<string name="choose_data_sim_summary" product="tablet">Which SIM do you want to use for data? The selected SIM may incur network charges as it will be used to set up your tablet.</string>
<string name="choose_data_sim_summary" product="default">Which SIM do you want to use for data? The selected SIM may incur network charges as it will be used to set up your phone.</string>
<string name="date_time_summary">Set your time zone and adjust current date and time if needed</string>
<string name="backup_data_summary"><b>Back up</b> app data, Wi-Fi passwords, and other settings to Google servers</string>
<string name="other_services_summary">These services put Google to work for you, and you can turn them on or off at any time. Data will be used in accordance with Google\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
<string name="location_services_summary">Location services allows system and third party apps to gather and use data such as your approximate location. For example, an app may use your approximate location to locate nearby coffee shops.</string>
<string name="location_access_summary"><b>Allow apps that have asked your permission</b> to use your location information. This may include your current location and past locations.</string>
<string name="location_gps" product="tablet"><b>Improve location accuracy</b> by allowing apps to use the GPS on your tablet.</string>
<string name="location_gps" product="default"><b>Improve location accuracy</b> by allowing apps to use the GPS on your phone.</string>
<string name="location_network"><b>Use Wi-Fi</b> to help apps determine your location.</string>
<string name="location_network_telephony"><b>Use Wi-Fi and mobile networks</b> to help apps determine your location.</string>
<string name="location_network_gms"><b>Use Google\'s location service</b> to help apps determine your location. This means sending anonymous location data to Google, even when no apps are running.</string>
<string name="setup_mobile_data">Turn on mobile data</string>
<string name="setup_mobile_data_no_service">No service</string>
<string name="setup_mobile_data_emergency_only">Emergency calls only</string>
<string name="enable_mobile_data_summary">Do you want to use mobile data during setup? Turning on mobile data may be subject to data charges.</string>
<string name="no">No</string>
<string name="yes">Yes</string>
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
<string name="emergency_call">Emergency call</string>
<string name="setup_services">Cyanogen features</string>
<string name="services_explanation" product="tablet">These services work for you to extend the capabilities of your tablet. Data will be used in accordance with Cyanogen\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
<string name="services_explanation" product="default">These services work for you to extend the capabilities of your phone. Data will be used in accordance with Cyanogen\'s <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
<string name="services_privacy_policy">Privacy Policy</string>
<string name="services_help_improve_cm">Help improve <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> by automatically sending diagnostic and usage data to Cyanogen. This information cant be used to identify you and lends a hand to teams working on things like battery life, app performance, and new <xliff:g id="name" example="CyanogenMod">%s</xliff:g> features.</string>
<string name="services_apply_theme">Apply the <xliff:g id="name" example="Material">%s</xliff:g> theme</string>
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> enabling unique icons, wallpapers, and fonts.</string>
<string name="services_os_nav_keys_label"><b>Use on screen navigation keys</b> instead of hardware keys.</string>
<string name="services_use_secure_sms">Use secure SMS</string>
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> to encrypt SMS conversations with other users using secure SMS on a <xliff:g id="name" example="CyanogenMod">%s</xliff:g> device.</string>
</resources>

View File

@@ -27,7 +27,7 @@
<string name="setup_wifi">Selecciona una red Wi-Fi</string> <string name="setup_wifi">Selecciona una red Wi-Fi</string>
<string name="setup_sim_missing">Falta la tarjeta SIM</string> <string name="setup_sim_missing">Falta la tarjeta SIM</string>
<string name="setup_choose_data_sim">Elige una SIM para datos</string> <string name="setup_choose_data_sim">Elige una SIM para datos</string>
<string name="setup_location">Servicios de localizacion</string> <string name="setup_location">Servicios de ubicación</string>
<string name="setup_other">Otros servicios</string> <string name="setup_other">Otros servicios</string>
<string name="setup_datetime">Fecha y hora</string> <string name="setup_datetime">Fecha y hora</string>
<string name="setup_current_date">Fecha actual</string> <string name="setup_current_date">Fecha actual</string>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<!--
Copyright (C) 2013-2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="backup_data_summary">Aplikazio datuen, Wi-Fi pasahitzen, eta bestelako ezarpenen <b>segurtasun kopia</b> egin Google zerbitzarietan</string>
<string name="other_services_summary">Zerbitzu hauek Google zure mesedetan lanean jartzen dute, edozein unetan piztu edo itzali ditzakezu. Datuak Google <xliff:g id="name" example="Privacy Policy">%s</xliff:g> arabera erabiliko dira.</string>
</resources>

View File

@@ -38,7 +38,7 @@
<string name="choose_data_sim_summary" product="default">Mitä SIM-korttia haluat käyttää mobiilitiedonsiirtoon? Mobiilidatan käyttö voi aiheuttaa tiedonsiirtokuluja.</string> <string name="choose_data_sim_summary" product="default">Mitä SIM-korttia haluat käyttää mobiilitiedonsiirtoon? Mobiilidatan käyttö voi aiheuttaa tiedonsiirtokuluja.</string>
<string name="date_time_summary">Valitse aikavyöhyke ja määritä aika ja päivämäärä tarvittaessa</string> <string name="date_time_summary">Valitse aikavyöhyke ja määritä aika ja päivämäärä tarvittaessa</string>
<string name="backup_data_summary"><b>Varmuuskopioi</b> sovellusten tiedot, Wi-FI-salasanat ja muut asetukset Googlen palvelimille</string> <string name="backup_data_summary"><b>Varmuuskopioi</b> sovellusten tiedot, Wi-FI-salasanat ja muut asetukset Googlen palvelimille</string>
<string name="other_services_summary">Tämä ottaa Googlen palvelut käyttöön, ja voit ottaa ne käyttöön tai poistaa käytöstä milloin tahansa. Tietoja käytetään Googlen <xliff:g id="name" example="Privacy Policy">%s</xliff:g>n mukaisesti.</string> <string name="other_services_summary">Tämä ottaa Googlen palvelut käyttöön, ja voit ottaa ne käyttöön tai poistaa käytöstä milloin tahansa. Tietoja käytetään Googlen <xliff:g id="name" example="Privacy Policy">%s</xliff:g> mukaisesti.</string>
<string name="location_services_summary">Sijaintipalvelut sallii järjestelmän ja muiden sovellusten kerätä ja käyttää tietoja kuten likimääräinen sijaintisi. Esimerkiksi sovellus voi paikantaa sinut ja etsiä lähistöllä olevia kahviloita.</string> <string name="location_services_summary">Sijaintipalvelut sallii järjestelmän ja muiden sovellusten kerätä ja käyttää tietoja kuten likimääräinen sijaintisi. Esimerkiksi sovellus voi paikantaa sinut ja etsiä lähistöllä olevia kahviloita.</string>
<string name="location_access_summary"><b>Salli sovellusten, jotka ovat kysyneet sinulta lupaa</b> käyttää sijaintitietojasi. Tämä saattaa sisältää nykyisen sijaintisi ja aiemmat sijaintisi.</string> <string name="location_access_summary"><b>Salli sovellusten, jotka ovat kysyneet sinulta lupaa</b> käyttää sijaintitietojasi. Tämä saattaa sisältää nykyisen sijaintisi ja aiemmat sijaintisi.</string>
<string name="location_gps" product="tablet"><b>Paranna paikannuksen tarkkuutta</b> sallimalla sovellusten käyttää GPS:ää tabletissasi.</string> <string name="location_gps" product="tablet"><b>Paranna paikannuksen tarkkuutta</b> sallimalla sovellusten käyttää GPS:ää tabletissasi.</string>

View File

@@ -54,9 +54,14 @@
<string name="yes">Oui</string> <string name="yes">Oui</string>
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string> <string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
<string name="emergency_call">Appel d\'urgence</string> <string name="emergency_call">Appel d\'urgence</string>
<string name="setup_services">Fonctionnalités Cyanogen</string>
<string name="services_explanation" product="tablet">Ces services fonctionnent pour étendre les fonctionnalités de votre tablette. Les données seront utilisées conformément à la <xliff:g id="name" example="Politique de confidentialité">%s</xliff:g> de Cyanogen.</string>
<string name="services_explanation" product="default">Ces services fonctionnent pour étendre les fonctionnalités de votre téléphone. Les données seront utilisées conformément à la <xliff:g id="name" example="Politique de confidentialité">%s</xliff:g> de Cyanogen.</string>
<string name="services_privacy_policy">Politique de confidentialité</string> <string name="services_privacy_policy">Politique de confidentialité</string>
<string name="services_help_improve_cm">Aider à améliorer <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string> <string name="services_help_improve_cm">Aider à améliorer <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> en envoyant automatiquement des données de diagnostics et d\'utilisation à Cyanogen. Ces informations ne peuvent pas être utilisées pour vous identifier et elles pourront aider les équipes qui travaillent sur des choses telles que la durée de vie de la batterie, les performances des applications et les nouvelles fonctionnalités <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string> <string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> en envoyant automatiquement des données de diagnostics et d\'utilisation à Cyanogen. Ces informations ne peuvent pas être utilisées pour vous identifier et elles pourront aider les équipes qui travaillent sur des choses telles que la durée de vie de la batterie, les performances des applications et les nouvelles fonctionnalités <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
<string name="services_apply_theme">Appliquer le thème <xliff:g id="name" example="Material">%s</xliff:g></string>
<string name="services_apply_theme_label"><xliff:g id="name" example="Appliquer le thème Material">%s</xliff:g> active les icônes uniques, fonds d\'écran, et polices.</string>
<string name="services_os_nav_keys_label"><b>Utilisation des touches de navigation de l\'écran</b> au lieu des touches physiques.</string> <string name="services_os_nav_keys_label"><b>Utilisation des touches de navigation de l\'écran</b> au lieu des touches physiques.</string>
<string name="services_use_secure_sms">Utiliser les SMS sécurisés</string> <string name="services_use_secure_sms">Utiliser les SMS sécurisés</string>
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> pour crypter les conversations SMS avec les autres utilisateurs utilisant les SMS sécurisés sur leurs appareils <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string> <string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> pour crypter les conversations SMS avec les autres utilisateurs utilisant les SMS sécurisés sur leurs appareils <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<!--
Copyright (C) 2013-2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="ok">OK</string>
</resources>

68
res/values-hi/strings.xml Normal file
View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<!--
Copyright (C) 2013-2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">सेटअप विज़ार्ड</string>
<string name="next">अगला</string>
<string name="skip">छोड़ें</string>
<string name="start">शुरू करें</string>
<string name="ok">ठीक है</string>
<string name="loading">एक सेकंड\u2026</string>
<string name="setup_complete">सेटअप पूरा हो गया</string>
<string name="setup_welcome">स्वागत</string>
<string name="setup_wifi">वाई-फाई चुनें</string>
<string name="setup_sim_missing">सिम कार्ड नहीं है</string>
<string name="setup_choose_data_sim">डेटा के लिए सिम कार्ड चुनें</string>
<string name="setup_location">स्थान सेवाएँ</string>
<string name="setup_other">अन्य सेवाएँ</string>
<string name="setup_datetime">तिथि और समय</string>
<string name="setup_current_date">वर्तमान तिथि</string>
<string name="setup_current_time">वर्तमान समय</string>
<string name="sim_missing_summary" product="tablet">आपके टैब्लेट के लिए सिम कार्ड पहचाना नहीं जा सका है। सिम कार्ड डालने के लिए अपने उपकरण के साथ आए निर्देशों को देखें।</string>
<string name="sim_missing_summary" product="default">आपके फ़ोन के लिए सिम कार्ड पहचाना नहीं जा सका है। सिम कार्ड डालने के लिए अपने उपकरण के साथ आए निर्देशों को देखें।</string>
<string name="choose_data_sim_summary" product="tablet">डेटा के लिए आप किस सिम का उपयोग करना चाहते हैं? चयनित सिम कार्ड के लिए नेटवर्क शुल्क लग सकते हैं क्योंकि उसका उपयोग आपके टैब्लेट को सेटअप करने के लिए किया जाएगा।</string>
<string name="choose_data_sim_summary" product="default">डेटा के लिए आप किस सिम का उपयोग करना चाहते हैं? चयनित सिम कार्ड के लिए नेटवर्क शुल्क लग सकते हैं क्योंकि उसका उपयोग आपके फ़ोन को सेटअप करने के लिए किया जाएगा।</string>
<string name="date_time_summary">अपना समय क्षेत्र सेटअप करें और यदि आवश्यक हो तो वर्तमान तिथि और समय को समायोजित करें</string>
<string name="backup_data_summary">ऐप डेटा, वाई-फ़ाई पासवर्ड, और अन्य सेटिंगि का गूगल सर्वरों में <b>बैकअप लें</b></string>
<string name="other_services_summary">इन सेवाओं के लिए गूगल से लाभ लिया जाता है, और आप उन्हें किसी भी समय बंद या चालू कर सकते हैं। डेटा का उपयोग गूगल की <xliff:g id="name" example="गोपनीयता नीति">%s</xliff:g> के अनुसार किया जाएगा।</string>
<string name="location_services_summary">स्थान सेवाएँ आपके सिस्टम को तृतीय पक्षीय ऐपों का उपयोग करके डेटा संग्रहण करने और डेटा उपयोग करने देती हैं ताकि आपके स्थान का अंदाज़ा लगाया जा सके। उदाहरण के लिए, कोई ऐप आपके स्थान के अनुमान का उपयोग निकट के कॉफ़ी शॉपों का पता करने के लिए कर सकता है।</string>
<string name="location_access_summary"><b>जिन ऐपों ने आपसे अनुमति ले ली है</b> उन्हें आपके स्थान संबंधी जानकारी का उपयोग करने दें। इस जानकारी में आपका वर्तमान स्थान और पहले के स्थान शामिल हो सकते हैं।</string>
<string name="location_gps" product="tablet">अपने टैब्लेट में ऐपों को जीपीएस का उपयोग करने देकर <b>स्थान सटीकता बढ़ाएँ</b></string>
<string name="location_gps" product="default">अपने फ़ोन में ऐपों को जीपीएस का उपयोग करने देकर <b>स्थान सटीकता बढ़ाएँ</b></string>
<string name="location_network">अपने स्थान को निर्धारित करने में ऐपों की मदद करने के लिए <b>वाई-फ़ाई</b> का उपयोग करें।</string>
<string name="location_network_telephony">ऐपों को आपके स्थान का निर्धारण करने में मदद करने के लिए <b>वाई-फ़ाई और मोबाइल नेटवर्कों का उपयोग करें।</b></string>
<string name="location_network_gms">ऐपों को अपने स्थान का निर्धारण करने में मदद करने के लिए <b>गूगल की स्थान सेवा का उपयोग करें।</b> इसका मतलब है कि गूगल को गुमनाम स्थान डेटा तब भी भेजा जाएगा जब कोई भी ऐप नहीं चल रहा हो।</string>
<string name="setup_mobile_data">मोबाइल डेटा को चालू करें</string>
<string name="setup_mobile_data_no_service">कोई सेवा नहीं है</string>
<string name="setup_mobile_data_emergency_only">केवल आपातकालीन कॉल</string>
<string name="enable_mobile_data_summary">क्या आप सेटअप के दौरान मोबाइल डेटा का उपयोग करना चाहते हैं? मोबाइल डेटा को चालू करने पर डेटा शुल्क लग सकते हैं।</string>
<string name="no">नहीं</string>
<string name="yes">हाँ</string>
<string name="data_sim_name">सिम <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
<string name="emergency_call">आपातकालीन कॉल</string>
<string name="setup_services">सियानोजेन सुविधाएँ</string>
<string name="services_explanation" product="tablet">ये सेवाएँ आपके टैब्लेट की क्षमताओं को बढ़ाती हैं। डेटा का उपयोग सियानोजेन की <xliff:g id="name" example="Privacy Policy">%s</xliff:g> के अनुसार किया जाएगा।</string>
<string name="services_explanation" product="default">ये सेवाएँ आपके फ़ोन की क्षमताओं को बढ़ाती हैं। डेटा का उपयोग सियानोजेन की <xliff:g id="name" example="Privacy Policy">%s</xliff:g> के अनुसार किया जाएगा।</string>
<string name="services_privacy_policy">गोपनीयता नीति</string>
<string name="services_help_improve_cm"><xliff:g id="name" example="CyanogenMod">%s</xliff:g> को सुधारने में मदद करें</string>
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> - सियानोजेन को अपने आप ही निदानात्मक और उपयोग से संबंधित डेटा भेजें। इस जानकारी का उपयोग आपको पहचानने के लिए नहीं हो सकता है। वह केवल बैटरी की आयु, ऐप के निष्पादन और नए <xliff:g id="name" example="CyanogenMod">%s</xliff:g> प्रकार्यों पर काम करने वाली टीमों की मदद के लिए है।</string>
<string name="services_apply_theme"><xliff:g id="name" example="Material">%s</xliff:g> थीम को लागू करें</string>
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> जो अद्वितीय आइकन, वॉलपेपर, और फ़ॉन्टों को सक्षम करता है।</string>
<string name="services_os_nav_keys_label">हार्डवेयर कुंजियों की जगह <b>स्क्रीन पर मौजूद नेविगेशन कुंजियों का उपयोग करें।</b></string>
<string name="services_use_secure_sms">सुरक्षित एसएमएस का उपयोग करें</string>
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> का उपयोग करके सुरक्षित एसएमएस का उपयोग करने वाले अन्य उपयोगकर्ताओं के साथ के एसएमएस वार्तालापों को <xliff:g id="name" example="CyanogenMod">%s</xliff:g> उपकरण में कूटलेखित करें।</string>
</resources>

View File

@@ -30,9 +30,12 @@
<string name="date_time_summary">Atur zona waktu dan sesuaikan tanggal dan waktu jika diperlukan</string> <string name="date_time_summary">Atur zona waktu dan sesuaikan tanggal dan waktu jika diperlukan</string>
<string name="location_access_summary"><b>Izinkan aplikasi yang telah meminta izin Anda</b> menggunakan informasi lokasi Anda. Ini mungkin termasuk lokasi Anda saat ini dan lokasi terakhir.</string> <string name="location_access_summary"><b>Izinkan aplikasi yang telah meminta izin Anda</b> menggunakan informasi lokasi Anda. Ini mungkin termasuk lokasi Anda saat ini dan lokasi terakhir.</string>
<string name="location_gps" product="default"><b>Meningkatkan akurasi lokasi</b> dengan mengizinkan aplikasi untuk menggunakan GPS pada ponsel Anda.</string> <string name="location_gps" product="default"><b>Meningkatkan akurasi lokasi</b> dengan mengizinkan aplikasi untuk menggunakan GPS pada ponsel Anda.</string>
<string name="setup_mobile_data">Aktifkan data seluler</string>
<string name="setup_mobile_data_no_service">Tidak ada layanan</string> <string name="setup_mobile_data_no_service">Tidak ada layanan</string>
<string name="setup_mobile_data_emergency_only">Panggilan darurat saja</string> <string name="setup_mobile_data_emergency_only">Panggilan darurat saja</string>
<string name="enable_mobile_data_summary">Apakah Anda ingin menggunakan mobile data selama setup? Menyalakan mobile data mungkin akan dikenakan biaya data.</string> <string name="enable_mobile_data_summary">Apakah Anda ingin menggunakan mobile data selama setup? Menyalakan mobile data mungkin akan dikenakan biaya data.</string>
<string name="no">Tidak</string>
<string name="yes">Ya</string>
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string> <string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
<string name="services_privacy_policy">Kebijakan privasi</string> <string name="services_privacy_policy">Kebijakan privasi</string>
</resources> </resources>

View File

@@ -17,30 +17,30 @@
--> -->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">Installazione guidata</string> <string name="app_name">Installazione guidata</string>
<string name="next">Avanti</string> <string name="next">Prossimo</string>
<string name="skip">Salta</string> <string name="skip">Salta</string>
<string name="start">Cominciamo</string> <string name="start">Inizio</string>
<string name="ok">OK</string> <string name="ok">Ok</string>
<string name="loading">Solo un secondo\u2026</string> <string name="loading">Solo un secondo\u2026</string>
<string name="setup_complete">Il setup è completo</string> <string name="setup_complete">Installazione completata</string>
<string name="setup_welcome">Benvenuto</string> <string name="setup_welcome">Benvenuto</string>
<string name="setup_wifi">Seleziona Wi-Fi</string> <string name="setup_wifi">Seleziona Wi-Fi</string>
<string name="setup_sim_missing">Scheda SIM non inserita</string> <string name="setup_sim_missing">Scheda SIM non inserita</string>
<string name="setup_choose_data_sim">Scegli una SIM per la connessione dati</string> <string name="setup_choose_data_sim">Scegli una SIM per la connessione dati</string>
<string name="setup_location">Servizi di localizzazione</string> <string name="setup_location">Servizi di localizzazione</string>
<string name="setup_other">Altri servizi</string> <string name="setup_other">Altri servizi</string>
<string name="setup_datetime">Data &amp; Ora</string> <string name="setup_datetime">Data &amp; ora</string>
<string name="setup_current_date">Data corrente</string> <string name="setup_current_date">Data corrente</string>
<string name="setup_current_time">Ora corrente</string> <string name="setup_current_time">Ora corrente</string>
<string name="sim_missing_summary" product="tablet">Non è stata riconosciuta alcuna scheda SIM nel tuo tablet. Per inserire una scheda SIM, leggi le istruzioni comprese col tuo dispositivo.</string> <string name="sim_missing_summary" product="tablet">Non è stata riconosciuta alcuna scheda SIM nel tuo tablet. Per inserire una scheda SIM, leggi le istruzioni comprese col tuo dispositivo.</string>
<string name="sim_missing_summary" product="default">Non è stata rilevata alcuna scheda SIM nel tuo cellulare. Per inserire una scheda SIM, leggi le istruzioni comprese col tuo dispositivo.</string> <string name="sim_missing_summary" product="default">Non è stata rilevata alcuna scheda SIM nel tuo cellulare. Per inserire una scheda SIM, leggi le istruzioni comprese col tuo dispositivo.</string>
<string name="choose_data_sim_summary" product="tablet">Quale SIM vuoi utilizzare per la connessione dati? La SIM selezionata può incorrere in costi di rete durante la configurazione del dispositivo.</string> <string name="choose_data_sim_summary" product="tablet">Quale SIM vuoi utilizzare per la connessione dati? La SIM selezionata può incorrere in costi di rete durante la configurazione del dispositivo.</string>
<string name="choose_data_sim_summary" product="default">Quale SIM vuoi utilizzare per la connessione dati? La SIM selezionata può incorrere in costi di rete durante la configurazione del dispositivo.</string> <string name="choose_data_sim_summary" product="default">Quale SIM vuoi utilizzare per la connessione dati? La SIM selezionata può incorrere in costi di rete durante la configurazione del dispositivo.</string>
<string name="date_time_summary">Imposta il fuso orario e se necessario regola ora e data corrente</string> <string name="date_time_summary">Imposta il fuso orario e se necessario regola data e ora corrente</string>
<string name="backup_data_summary"><b>Esegui il Back-up</b> dei dati delle app, password Wi-Fi e altre impostazioni sui server di Google</string> <string name="backup_data_summary"><b>Esegui il Back-up</b> dei dati delle app, password Wi-Fi e altre impostazioni sui server di Google</string>
<string name="other_services_summary">Questi servizi consentono a Google di lavorare per te, ed è possibile attivarli o disattivarli in qualsiasi momento. I dati saranno utilizzati in conformità con la <xliff:g id="name" example="Privacy Policy">%s</xliff:g> di Google.</string> <string name="other_services_summary">Questi servizi consentono a Google di lavorare per te, ed è possibile attivarli o disattivarli in qualsiasi momento. I dati saranno utilizzati in conformità con la <xliff:g id="name" example="Privacy Policy">%s</xliff:g> di Google.</string>
<string name="location_services_summary">I servizi di localizzazione permettono a Maps e ad altre applicazioni di raccogliere ed utilizzare dati come la tua posizione. Ad esempio, Maps potrebbe utilizzare la tua posizione per individuare negozi di caffè nelle tue vicinanze.</string> <string name="location_services_summary">I servizi di localizzazione permettono a Maps e ad altre applicazioni di raccogliere ed utilizzare dati come la tua posizione. Ad esempio, Maps potrebbe utilizzare la tua posizione per individuare negozi di caffè nelle tue vicinanze.</string>
<string name="location_access_summary"><b>Consenti alle applicazioni che hanno chiesto la tua autorizzazione</b> ad utilizzare informazioni sulla tua posizione. Ciò può includere la tua posizione attuale e quelle precedenti.</string> <string name="location_access_summary"><b>Consenti alle applicazioni che hanno chiesto la tua autorizzazione</b> di utilizzare informazioni sulla tua posizione. Ciò può includere la tua posizione attuale e quelle precedenti.</string>
<string name="location_gps" product="tablet"><b>Migliora l\'accuratezza della localizzazione</b> consentendo alle app di usare il GPS sul tuo tablet.</string> <string name="location_gps" product="tablet"><b>Migliora l\'accuratezza della localizzazione</b> consentendo alle app di usare il GPS sul tuo tablet.</string>
<string name="location_gps" product="default"><b>Migliora l\'accuratezza della localizzazione</b> permettendo alle applicazioni di utilizzare il GPS sul tuo telefono.</string> <string name="location_gps" product="default"><b>Migliora l\'accuratezza della localizzazione</b> permettendo alle applicazioni di utilizzare il GPS sul tuo telefono.</string>
<string name="location_network"><b>Usa il Wi-Fi</b> per aiutare le app a determinare la tua posizione.</string> <string name="location_network"><b>Usa il Wi-Fi</b> per aiutare le app a determinare la tua posizione.</string>
@@ -57,7 +57,7 @@
<string name="setup_services">Funzioni di Cyanogenmod</string> <string name="setup_services">Funzioni di Cyanogenmod</string>
<string name="services_explanation" product="tablet">Questi servizi funzionano per estendere le funzioni del tablet. I dati saranno utilizzati in accordo con <xliff:g id="name" example="Privacy Policy">%s</xliff:g>di Cyanogen.</string> <string name="services_explanation" product="tablet">Questi servizi funzionano per estendere le funzioni del tablet. I dati saranno utilizzati in accordo con <xliff:g id="name" example="Privacy Policy">%s</xliff:g>di Cyanogen.</string>
<string name="services_explanation" product="default">Questi servizi funzionano per estendere le funzioni del telefono. I dati saranno utilizzati in accordo con <xliff:g id="name" example="Privacy Policy">%s</xliff:g>di Cyanogen.</string> <string name="services_explanation" product="default">Questi servizi funzionano per estendere le funzioni del telefono. I dati saranno utilizzati in accordo con <xliff:g id="name" example="Privacy Policy">%s</xliff:g>di Cyanogen.</string>
<string name="services_privacy_policy">Condizioni sulla Privacy</string> <string name="services_privacy_policy">Informativa sulla privacy</string>
<string name="services_help_improve_cm">Aiuta a migliorare <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string> <string name="services_help_improve_cm">Aiuta a migliorare <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> inviando automaticamente dati di diagnostica e sull\'utilizzo a Cyanogen. Queste informazioni non possono essere utilizzate per identificarti e servono ad aiutare i team che lavorano sulla durata della batteria, sulle prestazioni delle app, e su nuove funzionalità <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string> <string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> inviando automaticamente dati di diagnostica e sull\'utilizzo a Cyanogen. Queste informazioni non possono essere utilizzate per identificarti e servono ad aiutare i team che lavorano sulla durata della batteria, sulle prestazioni delle app, e su nuove funzionalità <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
<string name="services_apply_theme">Applica il tema<xliff:g id="name" example="Material">%s</xliff:g></string> <string name="services_apply_theme">Applica il tema<xliff:g id="name" example="Material">%s</xliff:g></string>

View File

@@ -25,7 +25,7 @@
<string name="setup_complete">ההגדרה הושלמה</string> <string name="setup_complete">ההגדרה הושלמה</string>
<string name="setup_welcome">ברוך הבא</string> <string name="setup_welcome">ברוך הבא</string>
<string name="setup_wifi">בחר רשת Wi-Fi</string> <string name="setup_wifi">בחר רשת Wi-Fi</string>
<string name="setup_sim_missing">חסר כרטיס SIM</string> <string name="setup_sim_missing">כרטיס SIM חסר</string>
<string name="setup_choose_data_sim">בחר כרטיס SIM עבור נתונים</string> <string name="setup_choose_data_sim">בחר כרטיס SIM עבור נתונים</string>
<string name="setup_location">שירותי מיקום</string> <string name="setup_location">שירותי מיקום</string>
<string name="setup_other">שירותים אחרים</string> <string name="setup_other">שירותים אחרים</string>
@@ -35,17 +35,17 @@
<string name="sim_missing_summary" product="tablet">לא זוהה כרטיס SIM בטאבלט שלך. כדי להכניס כרטיס SIM, קרא את הוראות ההפעלה שהגיעו יחד עם מכשירך.</string> <string name="sim_missing_summary" product="tablet">לא זוהה כרטיס SIM בטאבלט שלך. כדי להכניס כרטיס SIM, קרא את הוראות ההפעלה שהגיעו יחד עם מכשירך.</string>
<string name="sim_missing_summary" product="default">לא זוהה כרטיס SIM במכשיר. כדי להכניס כרטיס SIM, קרא את הוראות ההפעלה שהגיעו יחד עם מכשירך.</string> <string name="sim_missing_summary" product="default">לא זוהה כרטיס SIM במכשיר. כדי להכניס כרטיס SIM, קרא את הוראות ההפעלה שהגיעו יחד עם מכשירך.</string>
<string name="choose_data_sim_summary" product="tablet">באיזה כרטיס SIM הנך מעוניין להשתמש עבור אינטרנט סלולרי? יתכן ויחולו חיובי רשת ב-SIM הנבחר בעקבות שימוש באינטרנט במהלך הגדרת הטאבלט שלך.</string> <string name="choose_data_sim_summary" product="tablet">באיזה כרטיס SIM הנך מעוניין להשתמש עבור אינטרנט סלולרי? יתכן ויחולו חיובי רשת ב-SIM הנבחר בעקבות שימוש באינטרנט במהלך הגדרת הטאבלט שלך.</string>
<string name="choose_data_sim_summary" product="default">באיזה כרטיס SIM הנך מעוניין להשתמש עבור אינטרנט סלולרי? יתכן ויחולו חיובי רשת ב-SIM הנבחר בעקבות שימוש באינטרנט במהלך הגדרת המכשיר.</string> <string name="choose_data_sim_summary" product="default">באיזה כרטיס SIM הנך מעוניין להשתמש עבור אינטרנט סלולרי? יתכן ויחולו חיובי רשת ב-SIM הנבחר בעקבות שימוש באינטרנט במהלך הגדרת מכשירך.</string>
<string name="date_time_summary">הגדר את אזור הזמן שלך והתאם את התאריך ואת השעה הנוכחיים במידת הצורך</string> <string name="date_time_summary">הגדר את אזור הזמן שלך והתאם את התאריך ואת השעה הנוכחיים במידת הצורך</string>
<string name="backup_data_summary"><b>גבה</b> נתוני יישומים, סיסמאות Wi-Fi והגדרות אחרות לשרתי Google</string> <string name="backup_data_summary"><b>גבה</b> נתוני יישומים, סיסמאות Wi-Fi והגדרות אחרות לשרתי Google</string>
<string name="other_services_summary">שירותים אלו נותנים ל-Google לעבוד בשבילך, ואתה יכול לכבות/להדליק אותם בכל זמן. מידע ישומש בכפוף ל<xliff:g id="name" example="Privacy Policy">%s</xliff:g> של Google.</string> <string name="other_services_summary">שירותים אלו נותנים ל-Google לעבוד בשבילך, ואתה יכול לכבות/להדליק אותם בכל זמן. מידע ישומש בכפוף ל<xliff:g id="name" example="Privacy Policy">%s</xliff:g> של Google.</string>
<string name="location_services_summary">שירותי מיקום מאפשרים ליישום המפות וליישומים אחרים להשתמש במיקומך. לדוגמא, יישום המפות עשוי להשתמש במידע זה על מנת להציג לך בתי קפה הנמצאים בקרבתך.</string> <string name="location_services_summary">שירותי מיקום מאפשרים ליישום המפות וליישומים אחרים להשתמש במיקומך. לדוגמא, יישום המפות עשוי להשתמש במידע זה על מנת להציג לך בתי קפה הנמצאים בקרבתך.</string>
<string name="location_access_summary"><b>אפשר ליישומים שביקשו את אישורך</b> להשתמש במידע על מיקומך.</string> <string name="location_access_summary"><b>אפשר ליישומים שביקשו את רשותך</b> להשתמש במידע על מיקומך. הדבר עלול לכלול את מיקומך הנוכחי ומיקומים קודמים.</string>
<string name="location_gps" product="tablet"><b>שפר דיוק מיקום</b> ע\"י נתינת הרשאה ליישומים להשתמש ב-GPS בטאבלט.</string> <string name="location_gps" product="tablet"><b>שפר דיוק מיקום</b> על-ידי נתינת הרשאה ליישומים להשתמש ב-GPS בטאבלט.</string>
<string name="location_gps" product="default"><b>שפר דיוק מיקום</b> ע\"י נתינת הרשאה ליישומים להשתמש ב-GPS בטלפון.</string> <string name="location_gps" product="default"><b>שפר דיוק מיקום</b> על-ידי נתינת הרשאה ליישומים להשתמש ב-GPS במכשירך.</string>
<string name="location_network"><b>השתמש ב-Wi-Fi</b> כדי לסייע לאפליקציות לקבוע את מיקומך.</string> <string name="location_network"><b>השתמש ב-Wi-Fi</b> כדי לסייע ליישומים לקבוע את מיקומך.</string>
<string name="location_network_telephony"><b>השתמש ב-Wi-Fi וברשתות סלולריות</b> כדי לסייע לאפליקציות לקבוע את מיקומך.</string> <string name="location_network_telephony"><b>השתמש ב-Wi-Fi וברשתות סלולריות</b> כדי לסייע ליישומים לקבוע את מיקומך.</string>
<string name="location_network_gms"><b>השתמש בשירותי המיקום של Google</b> כדי לשלוח נתוני מיקום אנונימיים ל-Google, גם כשיישומים לא פועלים.</string> <string name="location_network_gms"><b>השתמש בשירותי המיקום של Google</b> כדי לשלוח נתוני מיקום אנונימיים ל-Google, גם כאשר אין יישומים פועלים.</string>
<string name="setup_mobile_data">הפעל נתונים ניידים</string> <string name="setup_mobile_data">הפעל נתונים ניידים</string>
<string name="setup_mobile_data_no_service">אין שירות</string> <string name="setup_mobile_data_no_service">אין שירות</string>
<string name="setup_mobile_data_emergency_only">שיחות חירום בלבד</string> <string name="setup_mobile_data_emergency_only">שיחות חירום בלבד</string>
@@ -54,9 +54,14 @@
<string name="yes">כן</string> <string name="yes">כן</string>
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string> <string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
<string name="emergency_call">שיחת חירום</string> <string name="emergency_call">שיחת חירום</string>
<string name="setup_services">תכונות Cyanogen</string>
<string name="services_explanation" product="tablet">שירותים אלה עובדים בשבילך כדי להרחיב את יכולותיו של הטאבלט שלך. מידע ישומש בכפוף ל<xliff:g id="name" example="Privacy Policy">%s</xliff:g> של Cyanogen.</string>
<string name="services_explanation" product="default">שירותים אלה עובדים בשבילך כדי להרחיב את יכולותיו של מכשירך. מידע ישומש בכפוף ל<xliff:g id="name" example="Privacy Policy">%s</xliff:g> של Cyanogen.</string>
<string name="services_privacy_policy">מדיניות הפרטיות</string> <string name="services_privacy_policy">מדיניות הפרטיות</string>
<string name="services_help_improve_cm">עזור לשפר את <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string> <string name="services_help_improve_cm">עזור לשפר את <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> על ידי שליחת נתוני אבחון ושימוש למפתחים. מידע זה לא יוכל לשמש כדי לזהות אותך והוא תורם לצוותים העובדים על דברים כמו חיי סוללה, ביצועים ותכונות חדשות ל-<xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string> <string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> על-ידי שליחת נתוני אבחון ושימוש למפתחים. מידע זה לא יוכל לשמש כדי לזהות אותך והוא תורם לצוותים העובדים על דברים כמו חיי סוללה, ביצועים ותכונות חדשות ל-<xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>
<string name="services_apply_theme">החל את ערכת העיצוב <xliff:g id="name" example="Material">%s</xliff:g></string>
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> הופך לזמין סמלים ייחודיים, טפטים וגופנים.</string>
<string name="services_os_nav_keys_label"><b>השתמש במקשי הניווט במסך</b> במקום במקשים הפיזיים.</string> <string name="services_os_nav_keys_label"><b>השתמש במקשי הניווט במסך</b> במקום במקשים הפיזיים.</string>
<string name="services_use_secure_sms">השתמש ב-SMS מאובטח</string> <string name="services_use_secure_sms">השתמש ב-SMS מאובטח</string>
<string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> להצפנת שיחות SMS עם משתמשים אחרים באמצעות SMS מאובטח במכשיר <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string> <string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g> להצפנת שיחות SMS עם משתמשים אחרים באמצעות SMS מאובטח במכשיר <xliff:g id="name" example="CyanogenMod">%s</xliff:g>.</string>

View File

@@ -53,7 +53,9 @@
<string name="yes">Jo</string> <string name="yes">Jo</string>
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string> <string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
<string name="emergency_call">Noutruff</string> <string name="emergency_call">Noutruff</string>
<string name="setup_services">Cyanogen-Funktiounen</string>
<string name="services_privacy_policy">Dateschutzerklärung</string> <string name="services_privacy_policy">Dateschutzerklärung</string>
<string name="services_help_improve_cm">Hëllef <xliff:g id="name" example="CyanogenMod">%s</xliff:g> ze verbesseren</string> <string name="services_help_improve_cm">Hëllef <xliff:g id="name" example="CyanogenMod">%s</xliff:g> ze verbesseren</string>
<string name="services_apply_theme">Den Design <xliff:g id="name" example="Material">%s</xliff:g> applizéieren</string>
<string name="services_use_secure_sms">Sécher SMSe benotzen</string> <string name="services_use_secure_sms">Sécher SMSe benotzen</string>
</resources> </resources>

View File

@@ -16,7 +16,7 @@
limitations under the License. limitations under the License.
--> -->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">Sąrankos vedlys</string> <string name="app_name">Sąrankos vediklis</string>
<string name="next">Kitas</string> <string name="next">Kitas</string>
<string name="skip">Praleisti</string> <string name="skip">Praleisti</string>
<string name="start">Pradėti</string> <string name="start">Pradėti</string>
@@ -45,7 +45,7 @@
<string name="location_gps" product="default"><b>Pagerinti vietos tikslumą</b> leidžiant programoms naudotis GPS jūsų telefone.</string> <string name="location_gps" product="default"><b>Pagerinti vietos tikslumą</b> leidžiant programoms naudotis GPS jūsų telefone.</string>
<string name="location_network"><b>Naudoti „Wi-Fi“</b> , kad padėti programoms nustatyti jūsų buvimo vietą.</string> <string name="location_network"><b>Naudoti „Wi-Fi“</b> , kad padėti programoms nustatyti jūsų buvimo vietą.</string>
<string name="location_network_telephony"><b>Naudoti „Wi-Fi“ ir mobiliuosius duomenis</b> , kad padėti programoms nustatyti jūsų buvimo vietą.</string> <string name="location_network_telephony"><b>Naudoti „Wi-Fi“ ir mobiliuosius duomenis</b> , kad padėti programoms nustatyti jūsų buvimo vietą.</string>
<string name="location_network_gms"><b>Naudoti „Google“ vietos paslaugą</b>, kad padėtumėte programoms nustatyti jūsų buvimo vietą. Tai reiškia, anoniminių vietos duomenų siuntimą į „Google“, net tada, kai neveikia jokios programos.</string> <string name="location_network_gms"><b>Naudoti „Google“ vietos paslaugą</b>, kad padėti programoms nustatyti jūsų buvimo vietą. Tai reiškia, anoniminių vietos duomenų siuntimą į „Google“, net tada, kai neveikia jokios programos.</string>
<string name="setup_mobile_data">Įjungti mobiliuosius duomenis</string> <string name="setup_mobile_data">Įjungti mobiliuosius duomenis</string>
<string name="setup_mobile_data_no_service">Nėra paslaugos</string> <string name="setup_mobile_data_no_service">Nėra paslaugos</string>
<string name="setup_mobile_data_emergency_only">Tik pagalbos skambučiai</string> <string name="setup_mobile_data_emergency_only">Tik pagalbos skambučiai</string>
@@ -58,11 +58,11 @@
<string name="services_explanation" product="tablet">Šios paslaugos dirba už jus, kad išplėstu jūsų planšetinio kompiuterio galimybes. Duomenys bus naudojami pagal „Cyanogen\'s“ <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string> <string name="services_explanation" product="tablet">Šios paslaugos dirba už jus, kad išplėstu jūsų planšetinio kompiuterio galimybes. Duomenys bus naudojami pagal „Cyanogen\'s“ <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
<string name="services_explanation" product="default">Šios paslaugos dirba už jus, kad išplėstu jūsų telefono galimybes. Duomenys bus naudojami pagal „Cyanogen\'s“ <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string> <string name="services_explanation" product="default">Šios paslaugos dirba už jus, kad išplėstu jūsų telefono galimybes. Duomenys bus naudojami pagal „Cyanogen\'s“ <xliff:g id="name" example="Privacy Policy">%s</xliff:g>.</string>
<string name="services_privacy_policy">Privatumo politika</string> <string name="services_privacy_policy">Privatumo politika</string>
<string name="services_help_improve_cm">Padėti tobulinti <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string> <string name="services_help_improve_cm">Padėti tobulinti <xliff:g id="name" example="CyanogenMod">%s</xliff:g></string>
<string name="services_metrics_label"><xliff:g id="name" example="Padėti tobulinti „CyanogenMod">%s</xliff:g> automatiškai siunčiant diagnostikos ir naudojimo duomenis „Cyanogen“. Ši informacija negali būti naudojama jūsų identifikavimui, pateikti duomenys padės komandoms dirbančioms prie akumuliatoriaus veikimo laiko, programų našumo ir naujų <xliff:g id="name" example="CyanogenMod">%s</xliff:g> funkcijų.</string> <string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> automatiškai siunčiant diagnostikos ir naudojimo duomenis „Cyanogen“. Ši informacija negali būti naudojama jūsų identifikavimui, pateikti duomenys padės komandoms dirbančioms prie akumuliatoriaus veikimo laiko, programų našumo ir naujų <xliff:g id="name" example="CyanogenMod">%s</xliff:g> funkcijų.</string>
<string name="services_apply_theme">Taikyti <xliff:g id="name" example="Material">%s</xliff:g> temą</string> <string name="services_apply_theme">Taikyti <xliff:g id="name" example="Material">%s</xliff:g> temą</string>
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> įgalina unikalias piktogramas, ekrano fonus ir šriftus.</string> <string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s</xliff:g> įgalina unikalias piktogramas, ekrano fonus ir šriftus.</string>
<string name="services_os_nav_keys_label"><b>Naudokite ekrane rodomus naršymo klavišus</b> vietoj aparatūrinių klavišų.</string> <string name="services_os_nav_keys_label"><b>Naudokite ekrane rodomus naršymo klavišus</b> vietoj aparatūrinių klavišų.</string>
<string name="services_use_secure_sms">Naudoti saugius SMS</string> <string name="services_use_secure_sms">Naudoti saugius SMS</string>
<string name="services_secure_sms_label"><xliff:g id="name" example="Naudoti saugius SMS">%s</xliff:g>, kad užšifruoti SMS pokalbius su kitais vartotojais, naudojančiais saugius SMS <xliff:g id="name" example="CyanogenMod">%s</xliff:g> įrenginyje.</string> <string name="services_secure_sms_label"><xliff:g id="name" example="Use secure SMS">%s</xliff:g>, kad užšifruoti SMS pokalbius su kitais vartotojais, naudojančiais saugius SMS <xliff:g id="name" example="CyanogenMod">%s</xliff:g> įrenginyje.</string>
</resources> </resources>

View File

@@ -37,7 +37,7 @@
<string name="choose_data_sim_summary" product="tablet">Qual o cartão SIM que quer usar para os dados? O SIM selecionado pode incorrer em custos de rede adicionais, pois será usado para configurar o seu tablet.</string> <string name="choose_data_sim_summary" product="tablet">Qual o cartão SIM que quer usar para os dados? O SIM selecionado pode incorrer em custos de rede adicionais, pois será usado para configurar o seu tablet.</string>
<string name="choose_data_sim_summary" product="default">Qual o cartão SIM que quer usar para os dados? O SIM selecionado pode incorrer em custos de rede adicionais, pois será usado para configurar o seu telefone.</string> <string name="choose_data_sim_summary" product="default">Qual o cartão SIM que quer usar para os dados? O SIM selecionado pode incorrer em custos de rede adicionais, pois será usado para configurar o seu telefone.</string>
<string name="date_time_summary">Defina o fuso horário e ajuste a hora e a data atual, se necessário</string> <string name="date_time_summary">Defina o fuso horário e ajuste a hora e a data atual, se necessário</string>
<string name="backup_data_summary">Efetuar uma <b>cópia de segurança</b> dos dados das aplicações, senhas de acesso de redes sem fios e outras definições para os servidores da Google</string> <string name="backup_data_summary">Efetuar uma <b>cópia de segurança</b> dos dados das aplicações, palavras-passe de acesso de redes sem fios e outras definições para os servidores da Google</string>
<string name="other_services_summary">Estes serviços colocam o Google a trabalhar para si, e pode ligá-los ou desligá-los a qualquer momento. Os dados serão utilizados em conformidade com a <xliff:g id="name" example="Privacy Policy">%s</xliff:g> do Google.</string> <string name="other_services_summary">Estes serviços colocam o Google a trabalhar para si, e pode ligá-los ou desligá-los a qualquer momento. Os dados serão utilizados em conformidade com a <xliff:g id="name" example="Privacy Policy">%s</xliff:g> do Google.</string>
<string name="location_services_summary">Os serviços de localização permitem às aplicações de sistema e de terceiros reunir e utilizar dados tais como a sua localização aproximada. Por exemplo, uma aplicação pode usar a sua localização aproximada para localizar cafés ou bares nas proximidades.</string> <string name="location_services_summary">Os serviços de localização permitem às aplicações de sistema e de terceiros reunir e utilizar dados tais como a sua localização aproximada. Por exemplo, uma aplicação pode usar a sua localização aproximada para localizar cafés ou bares nas proximidades.</string>
<string name="location_access_summary"><b>Permitir às aplicações que pediram a sua permissão</b> para usar as suas informações de localização. Isso pode incluir a sua localização atual bem como localizações anteriores.</string> <string name="location_access_summary"><b>Permitir às aplicações que pediram a sua permissão</b> para usar as suas informações de localização. Isso pode incluir a sua localização atual bem como localizações anteriores.</string>

View File

@@ -17,13 +17,20 @@
--> -->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">Expert de instalare</string> <string name="app_name">Expert de instalare</string>
<string name="skip">Omite</string>
<string name="start">Pornire</string> <string name="start">Pornire</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="loading">Doar o secundă\u2026</string>
<string name="setup_complete">Configurarea este completă</string> <string name="setup_complete">Configurarea este completă</string>
<string name="setup_welcome">Bine ați venit</string>
<string name="setup_wifi">Selectaţi Wi-Fi</string> <string name="setup_wifi">Selectaţi Wi-Fi</string>
<string name="setup_sim_missing">Lipsă card SIM</string>
<string name="setup_location">Servicii de localizare</string>
<string name="setup_other">Alte servicii</string>
<string name="setup_datetime">Dată &amp; oră</string> <string name="setup_datetime">Dată &amp; oră</string>
<string name="setup_current_date">Data curentă</string> <string name="setup_current_date">Data curentă</string>
<string name="setup_current_time">Ora curentă</string> <string name="setup_current_time">Ora curentă</string>
<string name="setup_mobile_data">Porniți datele mobile</string>
<string name="setup_mobile_data_emergency_only">Numai apeluri de urgenţă</string> <string name="setup_mobile_data_emergency_only">Numai apeluri de urgenţă</string>
<string name="no">Nu</string> <string name="no">Nu</string>
<string name="yes">Da</string> <string name="yes">Da</string>

View File

@@ -16,12 +16,23 @@
limitations under the License. limitations under the License.
--> -->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">Installationsguide</string>
<string name="next">Nästa</string> <string name="next">Nästa</string>
<string name="skip">Hoppa över</string>
<string name="start">Start</string> <string name="start">Start</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="setup_welcome">Välkommen</string> <string name="setup_welcome">Välkommen</string>
<string name="setup_wifi">Välj Wi-Fi</string>
<string name="setup_sim_missing">SIM-kort saknas</string>
<string name="setup_location">Platstjänster</string>
<string name="setup_other">Andra tjänster</string>
<string name="setup_datetime">Datum &amp; tid</string>
<string name="setup_current_date">Aktuellt datum</string>
<string name="setup_current_time">Aktuell tid</string> <string name="setup_current_time">Aktuell tid</string>
<string name="setup_mobile_data_no_service">Ingen service</string> <string name="setup_mobile_data_no_service">Ingen service</string>
<string name="setup_mobile_data_emergency_only">Endast nödsamtal</string>
<string name="no">Nej</string> <string name="no">Nej</string>
<string name="yes">Ja</string> <string name="yes">Ja</string>
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
<string name="emergency_call">Nödsamtal</string>
</resources> </resources>

View File

@@ -54,9 +54,14 @@
<string name="yes">Так</string> <string name="yes">Так</string>
<string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string> <string name="data_sim_name">SIM <xliff:g id="sub">%d</xliff:g> - <xliff:g id="name">%s</xliff:g></string>
<string name="emergency_call">Екстрений виклик</string> <string name="emergency_call">Екстрений виклик</string>
<string name="setup_services">Особливості Cyanogen</string>
<string name="services_explanation" product="tablet">Ці послуги створено, щоб розширити можливості Вашого пристрою. Особисті дані буде використано у відповідності до <xliff:g id="name" example="Privacy Policy">%s </xliff:g>.</string>
<string name="services_explanation" product="default">Ці послуги створено, щоб розширити можливості Вашого пристрою. Особисті дані буде використано у відповідності до <xliff:g id="name" example="Privacy Policy">%s </xliff:g>.</string>
<string name="services_privacy_policy">Політика Конфіденційності</string> <string name="services_privacy_policy">Політика Конфіденційності</string>
<string name="services_help_improve_cm">Допомогти поліпшити <xliff:g id="name" example="CyanogenMod">%s </xliff:g></string> <string name="services_help_improve_cm">Допомогти поліпшити <xliff:g id="name" example="CyanogenMod">%s </xliff:g></string>
<string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> автоматично надсилаючи дані, щодо використання та диагностики у Cyanogen. Ця інформація не може бути використована для ідентифікації користувача, але дуже допоможе розробникам, що працюють над такими речами, як: час праці батареї, продуктивність додатків і нові функції <xliff:g id="name" example="CyanogenMod"> %s </xliff:g>.</string> <string name="services_metrics_label"><xliff:g id="name" example="Help improve CyanogenMod">%s</xliff:g> автоматично надсилаючи дані, щодо використання та диагностики у Cyanogen. Ця інформація не може бути використована для ідентифікації користувача, але дуже допоможе розробникам, що працюють над такими речами, як: час праці батареї, продуктивність додатків і нові функції <xliff:g id="name" example="CyanogenMod"> %s </xliff:g>.</string>
<string name="services_apply_theme">Застосувати тему <xliff:g id="name" example="Material">%s </xliff:g></string>
<string name="services_apply_theme_label"><xliff:g id="name" example="Apply the Material theme">%s </xliff:g> дає можливість використовувати унікальні іконки, шпалери і шрифти.</string>
<string name="services_os_nav_keys_label"><b>Використовувати навігаційні кнопки на екрані <string name="services_os_nav_keys_label"><b>Використовувати навігаційні кнопки на екрані
</b> замість апаратних.</string> </b> замість апаратних.</string>
<string name="services_use_secure_sms">Використовувати безпечні SMS</string> <string name="services_use_secure_sms">Використовувати безпечні SMS</string>

View File

@@ -20,6 +20,8 @@ package com.cyanogenmod.setupwizard;
import android.app.Application; import android.app.Application;
import android.app.StatusBarManager; import android.app.StatusBarManager;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Handler;
import android.provider.Settings; import android.provider.Settings;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils; import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -46,14 +48,33 @@ public class SetupWizardApp extends Application {
private static final String KEY_DETECT_CAPTIVE_PORTAL = "captive_portal_detection_enabled"; private static final String KEY_DETECT_CAPTIVE_PORTAL = "captive_portal_detection_enabled";
private static final String[] THEME_PACKAGES = {
"org.cyanogenmod.theme.chooser",
"com.cyngn.theme.chooser",
"com.cyngn.themestore"
};
public static final int REQUEST_CODE_SETUP_WIFI = 0; public static final int REQUEST_CODE_SETUP_WIFI = 0;
public static final int REQUEST_CODE_SETUP_GMS= 1; public static final int REQUEST_CODE_SETUP_GMS= 1;
public static final int REQUEST_CODE_RESTORE_GMS= 2; public static final int REQUEST_CODE_RESTORE_GMS= 2;
public static final int REQUEST_CODE_SETUP_CYANOGEN= 3; public static final int REQUEST_CODE_SETUP_CYANOGEN= 3;
public static final int REQUEST_CODE_SETUP_CAPTIVE_PORTAL= 4; public static final int REQUEST_CODE_SETUP_CAPTIVE_PORTAL= 4;
public static final int RADIO_READY_TIMEOUT = 10 * 1000;
private boolean mIsRadioReady = false;
private StatusBarManager mStatusBarManager; private StatusBarManager mStatusBarManager;
private final Handler mHandler = new Handler();
private final Runnable mRadioTimeoutRunnable = new Runnable() {
@Override
public void run() {
mIsRadioReady = true;
}
};
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
@@ -61,11 +82,15 @@ public class SetupWizardApp extends Application {
try { try {
// Since this is a new component, we need to disable here if the user // Since this is a new component, we need to disable here if the user
// has already been through setup on a previous version. // has already been through setup on a previous version.
if (!SetupWizardUtils.isOwner() final boolean isOwner = SetupWizardUtils.isOwner();
if (!isOwner
|| Settings.Secure.getInt(getContentResolver(), || Settings.Secure.getInt(getContentResolver(),
Settings.Secure.USER_SETUP_COMPLETE) == 1) { Settings.Secure.USER_SETUP_COMPLETE) == 1) {
SetupWizardUtils.disableGMSSetupWizard(this); SetupWizardUtils.disableGMSSetupWizard(this);
SetupWizardUtils.disableSetupWizard(this); SetupWizardUtils.disableSetupWizard(this);
if (!isOwner) {
disableThemeComponentsForSecondaryUser();
}
} else { } else {
disableCaptivePortalDetection(); disableCaptivePortalDetection();
} }
@@ -73,7 +98,18 @@ public class SetupWizardApp extends Application {
// Continue with setup // Continue with setup
disableCaptivePortalDetection(); disableCaptivePortalDetection();
} }
mHandler.postDelayed(mRadioTimeoutRunnable, SetupWizardApp.RADIO_READY_TIMEOUT);
}
public boolean isRadioReady() {
return mIsRadioReady;
}
public void setRadioReady(boolean radioReady) {
if (!mIsRadioReady && radioReady) {
mHandler.removeCallbacks(mRadioTimeoutRunnable);
}
mIsRadioReady = radioReady;
} }
public void disableStatusBar() { public void disableStatusBar() {
@@ -93,4 +129,17 @@ public class SetupWizardApp extends Application {
public void enableCaptivePortalDetection() { public void enableCaptivePortalDetection() {
Settings.Global.putInt(getContentResolver(), KEY_DETECT_CAPTIVE_PORTAL, 1); Settings.Global.putInt(getContentResolver(), KEY_DETECT_CAPTIVE_PORTAL, 1);
} }
private void disableThemeComponentsForSecondaryUser() {
PackageManager pm = getPackageManager();
for(String pkgName : THEME_PACKAGES) {
try {
pm.getApplicationInfo(pkgName, 0);
pm.setApplicationEnabledSetting(pkgName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER, 0);
} catch (PackageManager.NameNotFoundException e) {
// don't care
}
}
}
} }

View File

@@ -20,12 +20,15 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.telephony.SubInfoRecord;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.TelephonyIntents;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils; import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
public class CMSetupWizardData extends AbstractSetupData { public class CMSetupWizardData extends AbstractSetupData {
@@ -44,10 +47,12 @@ public class CMSetupWizardData extends AbstractSetupData {
pages.add(new WelcomePage(mContext, this)); pages.add(new WelcomePage(mContext, this));
pages.add(new WifiSetupPage(mContext, this)); pages.add(new WifiSetupPage(mContext, this));
if (SetupWizardUtils.hasTelephony(mContext)) { if (SetupWizardUtils.hasTelephony(mContext)) {
pages.add(new SimCardMissingPage(mContext, this).setHidden(isSimInserted())); pages.add(new SimCardMissingPage(mContext, this)
.setHidden(isSimInserted()));
} }
if (SetupWizardUtils.isMultiSimDevice(mContext)) { if (SetupWizardUtils.isMultiSimDevice(mContext)) {
pages.add(new ChooseDataSimPage(mContext, this).setHidden(!allSimsInserted())); pages.add(new ChooseDataSimPage(mContext, this)
.setHidden(!allSimsInserted()));
} }
if (SetupWizardUtils.hasTelephony(mContext)) { if (SetupWizardUtils.hasTelephony(mContext)) {
pages.add(new MobileDataPage(mContext, this) pages.add(new MobileDataPage(mContext, this)
@@ -68,19 +73,8 @@ public class CMSetupWizardData extends AbstractSetupData {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) { if (intent.getAction().equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) {
ChooseDataSimPage chooseDataSimPage = showHideDataSimPage();
(ChooseDataSimPage) getPage(ChooseDataSimPage.TAG); showHideSimMissingPage();
if (chooseDataSimPage != null) {
chooseDataSimPage.setHidden(!allSimsInserted());
}
SimCardMissingPage simCardMissingPage =
(SimCardMissingPage) getPage(SimCardMissingPage.TAG);
if (simCardMissingPage != null) {
simCardMissingPage.setHidden(isSimInserted());
if (isCurrentPage(simCardMissingPage)) {
onNextPage();
}
}
showHideMobileDataPage(); showHideMobileDataPage();
} else if (intent.getAction() } else if (intent.getAction()
.equals(ConnectivityManager.CONNECTIVITY_ACTION) || .equals(ConnectivityManager.CONNECTIVITY_ACTION) ||
@@ -116,12 +110,30 @@ public class CMSetupWizardData extends AbstractSetupData {
} }
} }
private void showHideSimMissingPage() {
SimCardMissingPage simCardMissingPage =
(SimCardMissingPage) getPage(SimCardMissingPage.TAG);
if (simCardMissingPage != null && isSimInserted()) {
simCardMissingPage.setHidden(true);
if (isCurrentPage(simCardMissingPage)) {
onNextPage();
}
}
}
private void showHideDataSimPage() {
ChooseDataSimPage chooseDataSimPage =
(ChooseDataSimPage) getPage(ChooseDataSimPage.TAG);
if (chooseDataSimPage != null) {
chooseDataSimPage.setHidden(!allSimsInserted());
}
}
private void showHideMobileDataPage() { private void showHideMobileDataPage() {
MobileDataPage mobileDataPage = MobileDataPage mobileDataPage =
(MobileDataPage) getPage(MobileDataPage.TAG); (MobileDataPage) getPage(MobileDataPage.TAG);
if (mobileDataPage != null) { if (mobileDataPage != null) {
mobileDataPage.setHidden(!isSimInserted() || mobileDataPage.setHidden(!isSimInserted());
SetupWizardUtils.isMobileDataEnabled(mContext));
} }
} }
@@ -165,13 +177,14 @@ public class CMSetupWizardData extends AbstractSetupData {
private boolean allSimsInserted() { private boolean allSimsInserted() {
TelephonyManager tm = TelephonyManager.from(mContext); TelephonyManager tm = TelephonyManager.from(mContext);
int simSlotCount = tm.getSimCount(); int simSlotCount = tm.getSimCount();
List<SubInfoRecord> subInfoRecords = SubscriptionManager.getActiveSubInfoList();
for (int i = 0; i < simSlotCount; i++) { for (int i = 0; i < simSlotCount; i++) {
int state = tm.getSimState(i); int state = tm.getSimState(i);
if (state == TelephonyManager.SIM_STATE_ABSENT) { if (state == TelephonyManager.SIM_STATE_ABSENT) {
return false; return false;
} }
} }
return true; return simSlotCount == subInfoRecords.size();
} }
} }

View File

@@ -20,6 +20,7 @@ import android.app.Fragment;
import android.app.FragmentManager; import android.app.FragmentManager;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.telephony.PhoneStateListener; import android.telephony.PhoneStateListener;
import android.telephony.ServiceState; import android.telephony.ServiceState;
import android.telephony.SignalStrength; import android.telephony.SignalStrength;
@@ -31,13 +32,17 @@ import android.util.SparseArray;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import com.cyanogenmod.setupwizard.R; import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
import com.cyanogenmod.setupwizard.cmstats.SetupStats; import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment; import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
import java.util.List; import java.util.List;
@@ -76,18 +81,30 @@ public class ChooseDataSimPage extends SetupPage {
public static class ChooseDataSimFragment extends SetupPageFragment { public static class ChooseDataSimFragment extends SetupPageFragment {
private ViewGroup mPageView; private ViewGroup mPageView;
private ProgressBar mProgressBar;
private SparseArray<TextView> mNameViews; private SparseArray<TextView> mNameViews;
private SparseArray<ImageView> mSignalViews; private SparseArray<ImageView> mSignalViews;
private SparseArray<CheckBox> mCheckBoxes; private SparseArray<CheckBox> mCheckBoxes;
private TelephonyManager mPhone; private TelephonyManager mPhone;
private List<SubInfoRecord> mSubInfoRecords; private SparseArray<SubInfoRecord> mSubInfoRecords;
private SparseArray<SignalStrength> mSignalStrengths; private SparseArray<SignalStrength> mSignalStrengths;
private SparseArray<ServiceState> mServiceStates; private SparseArray<ServiceState> mServiceStates;
private SparseArray<PhoneStateListener> mPhoneStateListeners; private SparseArray<PhoneStateListener> mPhoneStateListeners;
private boolean mIsAttached = false; private boolean mIsAttached = false;
private Context mContext;
private final Handler mHandler = new Handler();
private final Runnable mRadioReadyRunnable = new Runnable() {
@Override
public void run() {
hideWaitForRadio();
}
};
private View.OnClickListener mSetDataSimClickListener = new View.OnClickListener() { private View.OnClickListener mSetDataSimClickListener = new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
@@ -102,8 +119,13 @@ public class ChooseDataSimPage extends SetupPage {
@Override @Override
protected void initializePage() { protected void initializePage() {
mPageView = (ViewGroup)mRootView.findViewById(R.id.page_view); mPageView = (ViewGroup)mRootView.findViewById(R.id.page_view);
mSubInfoRecords = SubscriptionManager.getActiveSubInfoList(); mProgressBar = (ProgressBar) mRootView.findViewById(R.id.progress);
int simCount = mSubInfoRecords.size(); List<SubInfoRecord> subInfoRecords = SubscriptionManager.getActiveSubInfoList();
int simCount = subInfoRecords.size();
mSubInfoRecords = new SparseArray<SubInfoRecord>(simCount);
for (SubInfoRecord subInfoRecord : subInfoRecords) {
mSubInfoRecords.put(subInfoRecord.slotId, subInfoRecord);
}
mNameViews = new SparseArray<TextView>(simCount); mNameViews = new SparseArray<TextView>(simCount);
mSignalViews = new SparseArray<ImageView>(simCount); mSignalViews = new SparseArray<ImageView>(simCount);
mCheckBoxes = new SparseArray<CheckBox>(simCount); mCheckBoxes = new SparseArray<CheckBox>(simCount);
@@ -114,13 +136,17 @@ public class ChooseDataSimPage extends SetupPage {
for (int i = 0; i < simCount; i++) { for (int i = 0; i < simCount; i++) {
View simRow = inflater.inflate(R.layout.data_sim_row, null); View simRow = inflater.inflate(R.layout.data_sim_row, null);
mPageView.addView(simRow); mPageView.addView(simRow);
SubInfoRecord subInfoRecord = mSubInfoRecords.get(i); SubInfoRecord subInfoRecord = mSubInfoRecords.valueAt(i);
simRow.setTag(subInfoRecord); simRow.setTag(subInfoRecord);
simRow.setOnClickListener(mSetDataSimClickListener); simRow.setOnClickListener(mSetDataSimClickListener);
mNameViews.put(i, (TextView) simRow.findViewById(R.id.sim_title)); mNameViews.put(subInfoRecord.slotId,
mSignalViews.put(i, (ImageView) simRow.findViewById(R.id.signal)); (TextView) simRow.findViewById(R.id.sim_title));
mCheckBoxes.put(i, (CheckBox) simRow.findViewById(R.id.enable_check)); mSignalViews.put(subInfoRecord.slotId,
mPhoneStateListeners.put(i, createPhoneStateListener(subInfoRecord)); (ImageView) simRow.findViewById(R.id.signal));
mCheckBoxes.put(subInfoRecord.slotId,
(CheckBox) simRow.findViewById(R.id.enable_check));
mPhoneStateListeners.put(subInfoRecord.slotId,
createPhoneStateListener(subInfoRecord));
mPageView.addView(inflater.inflate(R.layout.divider, null)); mPageView.addView(inflater.inflate(R.layout.divider, null));
} }
updateSignalStrengths(); updateSignalStrengths();
@@ -136,14 +162,21 @@ public class ChooseDataSimPage extends SetupPage {
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
mIsAttached = true; mIsAttached = true;
mContext = getActivity().getApplicationContext();
mPhone = (TelephonyManager)getActivity().getSystemService(Context.TELEPHONY_SERVICE); mPhone = (TelephonyManager)getActivity().getSystemService(Context.TELEPHONY_SERVICE);
for (int i = 0; i < mPhoneStateListeners.size(); i++) { for (int i = 0; i < mPhoneStateListeners.size(); i++) {
mPhone.listen(mPhoneStateListeners.get(i), mPhone.listen(mPhoneStateListeners.valueAt(i),
PhoneStateListener.LISTEN_SERVICE_STATE PhoneStateListener.LISTEN_SERVICE_STATE
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
} }
updateSignalStrengths(); updateSignalStrengths();
updateCurrentDataSub(); updateCurrentDataSub();
if (SetupWizardUtils.isRadioReady(mContext, null)) {
hideWaitForRadio();
} else if (mTitleView != null) {
mTitleView.setText(R.string.loading);
mHandler.postDelayed(mRadioReadyRunnable, SetupWizardApp.RADIO_READY_TIMEOUT);
}
} }
@Override @Override
@@ -151,7 +184,7 @@ public class ChooseDataSimPage extends SetupPage {
super.onPause(); super.onPause();
mIsAttached = false; mIsAttached = false;
for (int i = 0; i < mPhoneStateListeners.size(); i++) { for (int i = 0; i < mPhoneStateListeners.size(); i++) {
mPhone.listen(mPhoneStateListeners.get(i), PhoneStateListener.LISTEN_NONE); mPhone.listen(mPhoneStateListeners.valueAt(i), PhoneStateListener.LISTEN_NONE);
} }
} }
@@ -160,26 +193,39 @@ public class ChooseDataSimPage extends SetupPage {
@Override @Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) { public void onSignalStrengthsChanged(SignalStrength signalStrength) {
if (mIsAttached) {
mSignalStrengths.put(subInfoRecord.slotId, signalStrength); mSignalStrengths.put(subInfoRecord.slotId, signalStrength);
updateSignalStrength(subInfoRecord); updateSignalStrength(subInfoRecord);
}
} }
@Override @Override
public void onServiceStateChanged(ServiceState state) { public void onServiceStateChanged(ServiceState state) {
if (mIsAttached) { if (SetupWizardUtils.isRadioReady(mContext, state)) {
mServiceStates.put(subInfoRecord.slotId, state); hideWaitForRadio();
updateSignalStrength(subInfoRecord);
} }
mServiceStates.put(subInfoRecord.slotId, state);
updateSignalStrength(subInfoRecord);
} }
}; };
} }
private void hideWaitForRadio() {
if (getUserVisibleHint() && mProgressBar.isShown()) {
mHandler.removeCallbacks(mRadioReadyRunnable);
if (mTitleView != null) {
mTitleView.setText(mPage.getTitleResId());
}
mProgressBar.setVisibility(View.GONE);
mPageView.setVisibility(View.VISIBLE);
mPageView.startAnimation(
AnimationUtils.loadAnimation(getActivity(), R.anim.translucent_enter));
}
}
private void updateSignalStrengths() { private void updateSignalStrengths() {
if (mIsAttached) { if (mIsAttached) {
for (int i = 0; i < mSubInfoRecords.size(); i++) { for (int i = 0; i < mSubInfoRecords.size(); i++) {
updateSignalStrength(mSubInfoRecords.get(i)); updateSignalStrength(mSubInfoRecords.valueAt(i));
} }
} }
} }
@@ -188,10 +234,10 @@ public class ChooseDataSimPage extends SetupPage {
if (mIsAttached) { if (mIsAttached) {
for (int i = 0; i < mCheckBoxes.size(); i++) { for (int i = 0; i < mCheckBoxes.size(); i++) {
if (subInfoRecord.slotId == i) { if (subInfoRecord.slotId == i) {
mCheckBoxes.get(i).setChecked(true); mCheckBoxes.get(subInfoRecord.slotId).setChecked(true);
SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED, SetupStats.addEvent(SetupStats.Categories.SETTING_CHANGED,
SetupStats.Action.PREFERRED_DATA_SIM, SetupStats.Action.PREFERRED_DATA_SIM,
SetupStats.Label.SLOT, String.valueOf(i + 1)); SetupStats.Label.SLOT, String.valueOf(subInfoRecord.slotId + 1));
} else { } else {
mCheckBoxes.get(i).setChecked(false); mCheckBoxes.get(i).setChecked(false);
} }
@@ -203,9 +249,10 @@ public class ChooseDataSimPage extends SetupPage {
private void updateCurrentDataSub() { private void updateCurrentDataSub() {
if (mIsAttached) { if (mIsAttached) {
for (int i = 0; i < mSubInfoRecords.size(); i++) { for (int i = 0; i < mSubInfoRecords.size(); i++) {
SubInfoRecord subInfoRecord = mSubInfoRecords.get(i); SubInfoRecord subInfoRecord = mSubInfoRecords.valueAt(i);
mCheckBoxes.get(i).setChecked(SubscriptionManager.getDefaultDataSubId() final long defaultDataSubId = SubscriptionManager.getDefaultDataSubId();
== subInfoRecord.subId); mCheckBoxes.get(subInfoRecord.slotId)
.setChecked(defaultDataSubId == subInfoRecord.subId);
} }
} }

View File

@@ -28,6 +28,7 @@ import android.app.FragmentManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import com.cyanogenmod.setupwizard.R; import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp; import com.cyanogenmod.setupwizard.SetupWizardApp;
@@ -83,17 +84,13 @@ public class CyanogenServicesPage extends SetupPage {
if (!SetupWizardUtils.accountExists(mContext, if (!SetupWizardUtils.accountExists(mContext,
mContext.getString(R.string.cm_account_type))) { mContext.getString(R.string.cm_account_type))) {
super.doLoadAction(fragmentManager, action); super.doLoadAction(fragmentManager, action);
launchCyanogenAccountSetup();
} else { } else {
getCallbacks().onNextPage(); getCallbacks().onNextPage();
} }
} }
} }
@Override
public void onFragmentReady() {
launchCyanogenAccountSetup();
}
@Override @Override
public boolean onActivityResult(int requestCode, int resultCode, Intent data) { public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN) { if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN) {
@@ -127,6 +124,7 @@ public class CyanogenServicesPage extends SetupPage {
null, new AccountManagerCallback<Bundle>() { null, new AccountManagerCallback<Bundle>() {
@Override @Override
public void run(AccountManagerFuture<Bundle> future) { public void run(AccountManagerFuture<Bundle> future) {
boolean error = false;
try { try {
Bundle result = future.getResult(); Bundle result = future.getResult();
Intent intent = result Intent intent = result
@@ -135,24 +133,26 @@ public class CyanogenServicesPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext, ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in, android.R.anim.fade_in,
android.R.anim.fade_out); android.R.anim.fade_out);
if (!mFragment.isDetached()) { SetupStats
SetupStats .addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD, SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
SetupStats.Action.EXTERNAL_PAGE_LAUNCH, SetupStats.Label.PAGE,
SetupStats.Label.PAGE, SetupStats.Label.CYANOGEN_ACCOUNT);
SetupStats.Label.CYANOGEN_ACCOUNT); mFragment.startActivityForResult(intent,
mFragment.startActivityForResult(intent, SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN,
SetupWizardApp.REQUEST_CODE_SETUP_CYANOGEN, options.toBundle());
options.toBundle());
} else {
if (getCallbacks().
isCurrentPage(CyanogenServicesPage.this)) {
getCallbacks().onNextPage();
}
}
} catch (OperationCanceledException e) { } catch (OperationCanceledException e) {
error = true;
} catch (IOException e) { } catch (IOException e) {
error = true;
} catch (AuthenticatorException e) { } catch (AuthenticatorException e) {
Log.e(TAG, "Error launching cm account", e);
error = true;
} finally {
if (error && getCallbacks().
isCurrentPage(CyanogenServicesPage.this)) {
getCallbacks().onNextPage();
}
} }
} }
}, null); }, null);

View File

@@ -203,7 +203,7 @@ public class CyanogenSettingsPage extends SetupPage {
SetupWizardUtils.isSimMissing(context)); SetupWizardUtils.isSimMissing(context));
} }
protected static boolean hideThemeSwitch(Context context) { private static boolean hideThemeSwitch(Context context) {
return ThemeUtils.getDefaultThemePackageName(context).equals(ThemeConfig.SYSTEM_DEFAULT); return ThemeUtils.getDefaultThemePackageName(context).equals(ThemeConfig.SYSTEM_DEFAULT);
} }
@@ -218,6 +218,10 @@ public class CyanogenSettingsPage extends SetupPage {
private CheckBox mNavKeys; private CheckBox mNavKeys;
private CheckBox mSecureSms; private CheckBox mSecureSms;
private boolean mHideNavKeysRow = false;
private boolean mHideThemeRow = false;
private boolean mHideSmsRow = false;
private View.OnClickListener mMetricsClickListener = new View.OnClickListener() { private View.OnClickListener mMetricsClickListener = new View.OnClickListener() {
@Override @Override
@@ -257,7 +261,6 @@ public class CyanogenSettingsPage extends SetupPage {
@Override @Override
protected void initializePage() { protected void initializePage() {
final Bundle myPageBundle = mPage.getData();
String privacy_policy = getString(R.string.services_privacy_policy); String privacy_policy = getString(R.string.services_privacy_policy);
String policySummary = getString(R.string.services_explanation, privacy_policy); String policySummary = getString(R.string.services_explanation, privacy_policy);
SpannableString ss = new SpannableString(policySummary); SpannableString ss = new SpannableString(policySummary);
@@ -288,14 +291,10 @@ public class CyanogenSettingsPage extends SetupPage {
TextView metrics = (TextView) mRootView.findViewById(R.id.enable_metrics_summary); TextView metrics = (TextView) mRootView.findViewById(R.id.enable_metrics_summary);
metrics.setText(metricsSpan); metrics.setText(metricsSpan);
mMetrics = (CheckBox) mRootView.findViewById(R.id.enable_metrics_checkbox); mMetrics = (CheckBox) mRootView.findViewById(R.id.enable_metrics_checkbox);
boolean metricsChecked =
!myPageBundle.containsKey(KEY_SEND_METRICS) || myPageBundle
.getBoolean(KEY_SEND_METRICS);
mMetrics.setChecked(metricsChecked);
myPageBundle.putBoolean(KEY_SEND_METRICS, metricsChecked);
mDefaultThemeRow = mRootView.findViewById(R.id.theme); mDefaultThemeRow = mRootView.findViewById(R.id.theme);
if (hideThemeSwitch(getActivity())) { mHideThemeRow = hideThemeSwitch(getActivity());
if (mHideThemeRow) {
mDefaultThemeRow.setVisibility(View.GONE); mDefaultThemeRow.setVisibility(View.GONE);
} else { } else {
mDefaultThemeRow.setOnClickListener(mDefaultThemeClickListener); mDefaultThemeRow.setOnClickListener(mDefaultThemeClickListener);
@@ -311,11 +310,6 @@ public class CyanogenSettingsPage extends SetupPage {
TextView theme = (TextView) mRootView.findViewById(R.id.enable_theme_summary); TextView theme = (TextView) mRootView.findViewById(R.id.enable_theme_summary);
theme.setText(themeSpan); theme.setText(themeSpan);
mDefaultTheme = (CheckBox) mRootView.findViewById(R.id.enable_theme_checkbox); mDefaultTheme = (CheckBox) mRootView.findViewById(R.id.enable_theme_checkbox);
boolean themesChecked =
!myPageBundle.containsKey(KEY_APPLY_DEFAULT_THEME) || myPageBundle
.getBoolean(KEY_APPLY_DEFAULT_THEME);
mDefaultTheme.setChecked(themesChecked);
myPageBundle.putBoolean(KEY_APPLY_DEFAULT_THEME, themesChecked);
} }
mNavKeysRow = mRootView.findViewById(R.id.nav_keys); mNavKeysRow = mRootView.findViewById(R.id.nav_keys);
@@ -327,7 +321,8 @@ public class CyanogenSettingsPage extends SetupPage {
needsNavBar = windowManager.needsNavigationBar(); needsNavBar = windowManager.needsNavigationBar();
} catch (RemoteException e) { } catch (RemoteException e) {
} }
if (hideKeyDisabler(getActivity()) || needsNavBar) { mHideNavKeysRow = hideKeyDisabler(getActivity());
if (mHideNavKeysRow || needsNavBar) {
mNavKeysRow.setVisibility(View.GONE); mNavKeysRow.setVisibility(View.GONE);
} else { } else {
boolean navKeysDisabled = boolean navKeysDisabled =
@@ -346,15 +341,11 @@ public class CyanogenSettingsPage extends SetupPage {
0, useSecureSms.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 0, useSecureSms.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
TextView secureSms = (TextView) mRootView.findViewById(R.id.secure_sms_summary); TextView secureSms = (TextView) mRootView.findViewById(R.id.secure_sms_summary);
secureSms.setText(secureSmsSpan); secureSms.setText(secureSmsSpan);
if (hideWhisperPush(getActivity())) { mHideSmsRow = hideWhisperPush(getActivity());
if (mHideSmsRow) {
mSecureSmsRow.setVisibility(View.GONE); mSecureSmsRow.setVisibility(View.GONE);
} }
mSecureSms = (CheckBox) mRootView.findViewById(R.id.secure_sms_checkbox); mSecureSms = (CheckBox) mRootView.findViewById(R.id.secure_sms_checkbox);
boolean smsChecked = myPageBundle.containsKey(KEY_REGISTER_WHISPERPUSH) ?
myPageBundle.getBoolean(KEY_REGISTER_WHISPERPUSH) :
false;
mSecureSms.setChecked(smsChecked);
myPageBundle.putBoolean(KEY_REGISTER_WHISPERPUSH, smsChecked);
} }
@Override @Override
@@ -366,15 +357,53 @@ public class CyanogenSettingsPage extends SetupPage {
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
updateDisableNavkeysOption(); updateDisableNavkeysOption();
updateMetricsOption();
updateThemeOption();
updateSmsOption();
}
private void updateMetricsOption() {
final Bundle myPageBundle = mPage.getData();
boolean metricsChecked =
!myPageBundle.containsKey(KEY_SEND_METRICS) || myPageBundle
.getBoolean(KEY_SEND_METRICS);
mMetrics.setChecked(metricsChecked);
myPageBundle.putBoolean(KEY_SEND_METRICS, metricsChecked);
}
private void updateThemeOption() {
if (!mHideThemeRow) {
final Bundle myPageBundle = mPage.getData();
boolean themesChecked =
!myPageBundle.containsKey(KEY_APPLY_DEFAULT_THEME) || myPageBundle
.getBoolean(KEY_APPLY_DEFAULT_THEME);
mDefaultTheme.setChecked(themesChecked);
myPageBundle.putBoolean(KEY_APPLY_DEFAULT_THEME, themesChecked);
}
}
private void updateSmsOption() {
if (!mHideSmsRow) {
final Bundle myPageBundle = mPage.getData();
boolean smsChecked = myPageBundle.containsKey(KEY_REGISTER_WHISPERPUSH) ?
myPageBundle.getBoolean(KEY_REGISTER_WHISPERPUSH) :
false;
mSecureSms.setChecked(smsChecked);
myPageBundle.putBoolean(KEY_REGISTER_WHISPERPUSH, smsChecked);
}
} }
private void updateDisableNavkeysOption() { private void updateDisableNavkeysOption() {
boolean enabled = Settings.Secure.getInt(getActivity().getContentResolver(), if (!mHideNavKeysRow) {
Settings.Secure.DEV_FORCE_SHOW_NAVBAR, 0) != 0; final Bundle myPageBundle = mPage.getData();
boolean checked = mPage.getData().containsKey(KEY_ENABLE_NAV_KEYS) ? boolean enabled = Settings.Secure.getInt(getActivity().getContentResolver(),
mPage.getData().getBoolean(KEY_ENABLE_NAV_KEYS) : Settings.Secure.DEV_FORCE_SHOW_NAVBAR, 0) != 0;
enabled; boolean checked = myPageBundle.containsKey(KEY_ENABLE_NAV_KEYS) ?
mNavKeys.setChecked(checked); myPageBundle.getBoolean(KEY_ENABLE_NAV_KEYS) :
enabled;
mNavKeys.setChecked(checked);
myPageBundle.putBoolean(KEY_ENABLE_NAV_KEYS, checked);
}
} }
} }

View File

@@ -114,14 +114,10 @@ public class GmsAccountPage extends SetupPage {
getCallbacks().onPreviousPage(); getCallbacks().onPreviousPage();
} else { } else {
super.doLoadAction(fragmentManager, action); super.doLoadAction(fragmentManager, action);
launchGmsAccountSetup();
} }
} }
@Override
public void onFragmentReady() {
launchGmsAccountSetup();
}
@Override @Override
public boolean onActivityResult(int requestCode, int resultCode, Intent data) { public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS) { if (requestCode == SetupWizardApp.REQUEST_CODE_SETUP_GMS) {
@@ -180,31 +176,33 @@ public class GmsAccountPage extends SetupPage {
private void launchGmsRestorePage() { private void launchGmsRestorePage() {
try { try {
// GMS can disable this after logging in sometimes // GMS can disable this after logging in sometimes
SetupWizardUtils.enableGMSSetupWizard(mContext); if (SetupWizardUtils.enableGMSSetupWizard(mContext)) {
Intent intent = new Intent(ACTION_RESTORE); Intent intent = new Intent(ACTION_RESTORE);
intent.putExtra(SetupWizardApp.EXTRA_ALLOW_SKIP, true); intent.putExtra(SetupWizardApp.EXTRA_ALLOW_SKIP, true);
intent.putExtra(SetupWizardApp.EXTRA_USE_IMMERSIVE, true); intent.putExtra(SetupWizardApp.EXTRA_USE_IMMERSIVE, true);
intent.putExtra(SetupWizardApp.EXTRA_FIRST_RUN, true); intent.putExtra(SetupWizardApp.EXTRA_FIRST_RUN, true);
intent.putExtra(SetupWizardApp.EXTRA_THEME, SetupWizardApp.EXTRA_MATERIAL_LIGHT); intent.putExtra(SetupWizardApp.EXTRA_THEME, SetupWizardApp.EXTRA_MATERIAL_LIGHT);
// XXX: Fool G's setup wizard into thinking it is their setup wizard. // XXX: Fool G's setup wizard into thinking it is their setup wizard.
// This is necessary to get the material theme on the restore page. // This is necessary to get the material theme on the restore page.
intent.putExtra("scriptUri", RESTORE_WIZARD_SCRIPT); intent.putExtra("scriptUri", RESTORE_WIZARD_SCRIPT);
ActivityOptions options = ActivityOptions options =
ActivityOptions.makeCustomAnimation(mContext, ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in, android.R.anim.fade_in,
android.R.anim.fade_out); android.R.anim.fade_out);
SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD, SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
SetupStats.Action.EXTERNAL_PAGE_LAUNCH, SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
SetupStats.Label.PAGE, SetupStats.Label.RESTORE); SetupStats.Label.PAGE, SetupStats.Label.RESTORE);
mFragment.startActivityForResult( mFragment.startActivityForResult(
intent, intent,
SetupWizardApp.REQUEST_CODE_RESTORE_GMS, options.toBundle()); SetupWizardApp.REQUEST_CODE_RESTORE_GMS, options.toBundle());
return;
}
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
// XXX: In open source, we don't know what gms version a user has. // XXX: In open source, we don't know what gms version a user has.
// Bail if the restore activity is not found. // Bail if the restore activity is not found.
getCallbacks().onNextPage();
} }
getCallbacks().onNextPage();
} }
private void launchGmsAccountSetup() { private void launchGmsAccountSetup() {
@@ -217,6 +215,7 @@ public class GmsAccountPage extends SetupPage {
bundle, null, new AccountManagerCallback<Bundle>() { bundle, null, new AccountManagerCallback<Bundle>() {
@Override @Override
public void run(AccountManagerFuture<Bundle> future) { public void run(AccountManagerFuture<Bundle> future) {
boolean error = false;
try { try {
Bundle result = future.getResult(); Bundle result = future.getResult();
Intent intent = result Intent intent = result
@@ -225,20 +224,23 @@ public class GmsAccountPage extends SetupPage {
ActivityOptions.makeCustomAnimation(mContext, ActivityOptions.makeCustomAnimation(mContext,
android.R.anim.fade_in, android.R.anim.fade_in,
android.R.anim.fade_out); android.R.anim.fade_out);
if (!mFragment.isDetached()) { SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD,
SetupStats.addEvent(SetupStats.Categories.EXTERNAL_PAGE_LOAD, SetupStats.Action.EXTERNAL_PAGE_LAUNCH,
SetupStats.Action.EXTERNAL_PAGE_LAUNCH, SetupStats.Label.PAGE, SetupStats.Label.GMS_ACCOUNT);
SetupStats.Label.PAGE, SetupStats.Label.GMS_ACCOUNT); mFragment.startActivityForResult(intent,
mFragment.startActivityForResult(intent, SetupWizardApp.REQUEST_CODE_SETUP_GMS, options.toBundle());
SetupWizardApp.REQUEST_CODE_SETUP_GMS, options.toBundle());
} else {
if (getCallbacks().isCurrentPage(GmsAccountPage.this)) {
getCallbacks().onNextPage();
}
}
} catch (OperationCanceledException e) { } catch (OperationCanceledException e) {
error = true;
} catch (IOException e) { } catch (IOException e) {
error = true;
} catch (AuthenticatorException e) { } catch (AuthenticatorException e) {
Log.e(TAG, "Error launching gms account", e);
error = true;
} finally {
if (error && getCallbacks().
isCurrentPage(GmsAccountPage.this)) {
getCallbacks().onNextPage();
}
} }
} }
}, null); }, null);

View File

@@ -20,6 +20,7 @@ import android.app.Fragment;
import android.app.FragmentManager; import android.app.FragmentManager;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.telephony.PhoneStateListener; import android.telephony.PhoneStateListener;
import android.telephony.ServiceState; import android.telephony.ServiceState;
import android.telephony.SignalStrength; import android.telephony.SignalStrength;
@@ -27,11 +28,15 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Switch; import android.widget.Switch;
import android.widget.TextView; import android.widget.TextView;
import com.cyanogenmod.setupwizard.R; import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
import com.cyanogenmod.setupwizard.cmstats.SetupStats; import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment; import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils; import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -69,6 +74,8 @@ public class MobileDataPage extends SetupPage {
public static class MobileDataFragment extends SetupPageFragment { public static class MobileDataFragment extends SetupPageFragment {
private ViewGroup mPageView;
private ProgressBar mProgressBar;
private View mEnableDataRow; private View mEnableDataRow;
private Switch mEnableMobileData; private Switch mEnableMobileData;
private ImageView mSignalView; private ImageView mSignalView;
@@ -80,26 +87,36 @@ public class MobileDataPage extends SetupPage {
private boolean mIsAttached = false; private boolean mIsAttached = false;
private Context mContext;
private final Handler mHandler = new Handler();
private final Runnable mRadioReadyRunnable = new Runnable() {
@Override
public void run() {
hideWaitForRadio();
}
};
private PhoneStateListener mPhoneStateListener = private PhoneStateListener mPhoneStateListener =
new PhoneStateListener(SubscriptionManager.getDefaultDataSubId()) { new PhoneStateListener(SubscriptionManager.getDefaultDataSubId()) {
@Override @Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) { public void onSignalStrengthsChanged(SignalStrength signalStrength) {
if (mIsAttached) { mSignalStrength = signalStrength;
mSignalStrength = signalStrength; updateSignalStrength();
updateSignalStrength(); }
}
}
@Override @Override
public void onServiceStateChanged(ServiceState state) { public void onServiceStateChanged(ServiceState state) {
if (mIsAttached) { if (SetupWizardUtils.isRadioReady(mContext, state)) {
mServiceState = state; hideWaitForRadio();
updateSignalStrength(); }
} mServiceState = state;
} updateSignalStrength();
}
}; };
private View.OnClickListener mEnableDataClickListener = new View.OnClickListener() { private View.OnClickListener mEnableDataClickListener = new View.OnClickListener() {
@Override @Override
@@ -115,6 +132,8 @@ public class MobileDataPage extends SetupPage {
@Override @Override
protected void initializePage() { protected void initializePage() {
mPageView = (ViewGroup)mRootView.findViewById(R.id.page_view);
mProgressBar = (ProgressBar) mRootView.findViewById(R.id.progress);
mEnableDataRow = mRootView.findViewById(R.id.data); mEnableDataRow = mRootView.findViewById(R.id.data);
mEnableDataRow.setOnClickListener(mEnableDataClickListener); mEnableDataRow.setOnClickListener(mEnableDataClickListener);
mEnableMobileData = (Switch) mRootView.findViewById(R.id.data_switch); mEnableMobileData = (Switch) mRootView.findViewById(R.id.data_switch);
@@ -133,12 +152,19 @@ public class MobileDataPage extends SetupPage {
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
mIsAttached = true; mIsAttached = true;
mContext = getActivity().getApplicationContext();
mPhone = (TelephonyManager)getActivity().getSystemService(Context.TELEPHONY_SERVICE); mPhone = (TelephonyManager)getActivity().getSystemService(Context.TELEPHONY_SERVICE);
mPhone.listen(mPhoneStateListener, mPhone.listen(mPhoneStateListener,
PhoneStateListener.LISTEN_SERVICE_STATE PhoneStateListener.LISTEN_SERVICE_STATE
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
updateDataConnectionStatus(); updateDataConnectionStatus();
updateSignalStrength(); updateSignalStrength();
if (SetupWizardUtils.isRadioReady(mContext, null)) {
hideWaitForRadio();
} else if (mTitleView != null) {
mTitleView.setText(R.string.loading);
mHandler.postDelayed(mRadioReadyRunnable, SetupWizardApp.RADIO_READY_TIMEOUT);
}
} }
@Override @Override
@@ -148,6 +174,19 @@ public class MobileDataPage extends SetupPage {
mPhone.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); mPhone.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
} }
private void hideWaitForRadio() {
if (getUserVisibleHint() && mProgressBar.isShown()) {
mHandler.removeCallbacks(mRadioReadyRunnable);
if (mTitleView != null) {
mTitleView.setText(mPage.getTitleResId());
}
mProgressBar.setVisibility(View.GONE);
mPageView.setVisibility(View.VISIBLE);
mPageView.startAnimation(
AnimationUtils.loadAnimation(getActivity(), R.anim.translucent_enter));
}
}
private void updateCarrierText() { private void updateCarrierText() {
if (mIsAttached) { if (mIsAttached) {
String name = String name =

View File

@@ -136,18 +136,13 @@ public class OtherSettingsPage extends SetupPage {
} }
}; };
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mContentResolver = getActivity().getContentResolver();
mBackupManager = IBackupManager.Stub.asInterface(
ServiceManager.getService(Context.BACKUP_SERVICE));
}
@Override @Override
protected void initializePage() { protected void initializePage() {
final boolean hasGms = SetupWizardUtils.hasGMS(getActivity()); final boolean hasGms = SetupWizardUtils.hasGMS(getActivity());
final boolean hasTelephony = SetupWizardUtils.hasTelephony(getActivity()); final boolean hasTelephony = SetupWizardUtils.hasTelephony(getActivity());
mContentResolver = getActivity().getContentResolver();
mBackupManager = IBackupManager.Stub.asInterface(
ServiceManager.getService(Context.BACKUP_SERVICE));
TextView summaryView = (TextView) mRootView.findViewById(android.R.id.summary); TextView summaryView = (TextView) mRootView.findViewById(android.R.id.summary);
if (hasGms) { if (hasGms) {
String privacy_policy = getString(R.string.services_privacy_policy); String privacy_policy = getString(R.string.services_privacy_policy);
@@ -275,6 +270,10 @@ public class OtherSettingsPage extends SetupPage {
SetupStats.Action.ENABLE_NETWORK_LOCATION, SetupStats.Action.ENABLE_NETWORK_LOCATION,
SetupStats.Label.CHECKED, String.valueOf(networkEnabled)); SetupStats.Label.CHECKED, String.valueOf(networkEnabled));
mLocationAccess.setChecked(gpsEnabled || networkEnabled); mLocationAccess.setChecked(gpsEnabled || networkEnabled);
mGps.setEnabled(gpsEnabled || networkEnabled);
mGpsRow.setEnabled(gpsEnabled || networkEnabled);
mNetwork.setEnabled(gpsEnabled || networkEnabled);
mNetworkRow.setEnabled(gpsEnabled || networkEnabled);
} }
private void onToggleLocationAccess(boolean checked) { private void onToggleLocationAccess(boolean checked) {

View File

@@ -43,7 +43,6 @@ public interface Page {
public boolean doPreviousAction(); public boolean doPreviousAction();
public boolean doNextAction(); public boolean doNextAction();
public void doLoadAction(FragmentManager fragmentManager, int action); public void doLoadAction(FragmentManager fragmentManager, int action);
public void onFragmentReady();
public void onFinishSetup(); public void onFinishSetup();
public boolean onActivityResult(int requestCode, int resultCode, Intent data); public boolean onActivityResult(int requestCode, int resultCode, Intent data);
public SetupDataCallbacks getCallbacks(); public SetupDataCallbacks getCallbacks();

View File

@@ -96,9 +96,6 @@ public abstract class SetupPage implements Page {
} }
} }
@Override
public void onFragmentReady(){}
@Override @Override
public boolean onActivityResult(int requestCode, int resultCode, Intent data) { public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
return false; return false;

View File

@@ -136,8 +136,10 @@ public class WifiSetupPage extends SetupPage {
return R.string.loading; return R.string.loading;
} }
@Override @Override
public void onFragmentReady() { public void doLoadAction(FragmentManager fragmentManager, int action) {
super.doLoadAction(fragmentManager, action);
launchWifiSetup(); launchWifiSetup();
} }

View File

@@ -16,9 +16,39 @@
package com.cyanogenmod.setupwizard.ui; package com.cyanogenmod.setupwizard.ui;
import android.content.Intent;
import android.os.Bundle;
import com.cyanogenmod.setupwizard.R; import com.cyanogenmod.setupwizard.R;
public class LoadingFragment extends SetupPageFragment { public class LoadingFragment extends SetupPageFragment {
private StartActivityForResultRunnable mStartActivityForResultRunnable;
@Override
public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
if (isResumed()) {
super.startActivityForResult(intent, requestCode, options);
} else {
mStartActivityForResultRunnable =
new StartActivityForResultRunnable(this, intent, requestCode, options);
}
}
@Override
public void onResume() {
super.onResume();
if (mStartActivityForResultRunnable != null) {
mStartActivityForResultRunnable.run();
}
}
@Override
public void onPause() {
super.onPause();
mStartActivityForResultRunnable = null;
}
@Override @Override
protected void initializePage() {} protected void initializePage() {}
@@ -26,4 +56,26 @@ public class LoadingFragment extends SetupPageFragment {
protected int getLayoutResource() { protected int getLayoutResource() {
return R.layout.setup_loading_page; return R.layout.setup_loading_page;
} }
private static class StartActivityForResultRunnable implements Runnable {
private final LoadingFragment mLoadingFragment;
private final Intent mIntent;
private final int mRequestCode;
private final Bundle mOptions;
private StartActivityForResultRunnable(LoadingFragment loadingFragment,
Intent intent, int requestCode, Bundle options) {
mLoadingFragment = loadingFragment;
mIntent = intent;
mRequestCode = requestCode;
mOptions = options;
}
@Override
public void run() {
mLoadingFragment.startActivityForResult(mIntent, mRequestCode, mOptions);
mLoadingFragment.mStartActivityForResultRunnable = null;
}
}
} }

View File

@@ -43,11 +43,6 @@ public abstract class SetupPageFragment extends Fragment {
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setRetainInstance(true); setRetainInstance(true);
Bundle args = getArguments();
mKey = args.getString(Page.KEY_PAGE_ARGUMENT);
if (mKey == null) {
throw new IllegalArgumentException("No KEY_PAGE_ARGUMENT given");
}
SetupStats.addEvent(SetupStats.Categories.PAGE_LOAD, SetupStats.Action.PAGE_LOADED, SetupStats.addEvent(SetupStats.Categories.PAGE_LOAD, SetupStats.Action.PAGE_LOADED,
mKey, String.valueOf(System.currentTimeMillis())); mKey, String.valueOf(System.currentTimeMillis()));
} }
@@ -58,25 +53,18 @@ public abstract class SetupPageFragment extends Fragment {
mRootView = inflater.inflate(getLayoutResource(), container, false); mRootView = inflater.inflate(getLayoutResource(), container, false);
mTitleView = (TextView) mRootView.findViewById(android.R.id.title); mTitleView = (TextView) mRootView.findViewById(android.R.id.title);
mHeaderView = (ViewGroup ) mRootView.findViewById(R.id.header); mHeaderView = (ViewGroup ) mRootView.findViewById(R.id.header);
getActivity().startPostponedEnterTransition();
return mRootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mPage = mCallbacks.getPage(mKey);
if (mTitleView != null) {
mTitleView.setText(mPage.getTitleResId());
}
initializePage(); initializePage();
mPage.onFragmentReady(); return mRootView;
mCallbacks.onPageLoaded(mPage);
} }
@Override @Override
public void onAttach(Activity activity) { public void onAttach(Activity activity) {
super.onAttach(activity); super.onAttach(activity);
Bundle args = getArguments();
mKey = args.getString(Page.KEY_PAGE_ARGUMENT);
if (mKey == null) {
throw new IllegalArgumentException("No KEY_PAGE_ARGUMENT given");
}
if (!(activity instanceof SetupDataCallbacks)) { if (!(activity instanceof SetupDataCallbacks)) {
throw new ClassCastException("Activity implement SetupDataCallbacks"); throw new ClassCastException("Activity implement SetupDataCallbacks");
} }
@@ -89,8 +77,24 @@ public abstract class SetupPageFragment extends Fragment {
mCallbacks = null; mCallbacks = null;
} }
@Override
public void onResume() {
super.onResume();
mPage = mCallbacks.getPage(mKey);
if (mTitleView != null) {
mTitleView.setText(mPage.getTitleResId());
}
mCallbacks.onPageLoaded(mPage);
getActivity().startPostponedEnterTransition();
}
@Override @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
// On low mem devices, this fragment might get destroyed by
// fragment manager while we are in another activity.
if (mPage == null) {
mPage = mCallbacks.getPage(mKey);
}
mPage.onActivityResult(requestCode, resultCode, data); mPage.onActivityResult(requestCode, resultCode, data);
} }

View File

@@ -56,6 +56,12 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
private static final String TAG = SetupWizardActivity.class.getSimpleName(); private static final String TAG = SetupWizardActivity.class.getSimpleName();
private static final int UI_FLAGS = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
private View mRootView; private View mRootView;
private View mButtonBar; private View mButtonBar;
private Button mNextButton; private Button mNextButton;
@@ -77,12 +83,25 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
final View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(UI_FLAGS);
decorView.setOnSystemUiVisibilityChangeListener(
new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
decorView.setSystemUiVisibility(UI_FLAGS);
}
}
});
if (sLaunchTime == 0) { if (sLaunchTime == 0) {
SetupStats.addEvent(SetupStats.Categories.APP_LAUNCH, TAG); SetupStats.addEvent(SetupStats.Categories.APP_LAUNCH, TAG);
sLaunchTime = System.nanoTime(); sLaunchTime = System.nanoTime();
} }
setContentView(R.layout.setup_main); setContentView(R.layout.setup_main);
mRootView = findViewById(R.id.root); mRootView = findViewById(R.id.root);
mRootView.setSystemUiVisibility(UI_FLAGS);
mReveal = (ImageView)mRootView.findViewById(R.id.reveal); mReveal = (ImageView)mRootView.findViewById(R.id.reveal);
mButtonBar = findViewById(R.id.button_bar); mButtonBar = findViewById(R.id.button_bar);
mFinishingProgressBar = (ProgressBar)findViewById(R.id.finishing_bar); mFinishingProgressBar = (ProgressBar)findViewById(R.id.finishing_bar);
@@ -124,7 +143,9 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
mRootView.setOnTouchListener(new View.OnTouchListener() { mRootView.setOnTouchListener(new View.OnTouchListener() {
@Override @Override
public boolean onTouch(View v, MotionEvent event) { public boolean onTouch(View v, MotionEvent event) {
return mEnableAccessibilityController.onInterceptTouchEvent(event); return
mEnableAccessibilityController.onInterceptTouchEvent(event) &
mEnableAccessibilityController.onTouchEvent(event);
} }
}); });
registerReceiver(mSetupData, mSetupData.getIntentFilter()); registerReceiver(mSetupData, mSetupData.getIntentFilter());
@@ -132,10 +153,8 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
@Override @Override
protected void onResume() { protected void onResume() {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE final View decorView = getWindow().getDecorView();
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN decorView.setSystemUiVisibility(UI_FLAGS);
| View.SYSTEM_UI_FLAG_IMMERSIVE
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
super.onResume(); super.onResume();
if (mSetupData.isFinished()) { if (mSetupData.isFinished()) {
mHandler.postDelayed(new Runnable() { mHandler.postDelayed(new Runnable() {
@@ -273,7 +292,7 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
@Override @Override
public void onFinish() { public void onFinish() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
Animation fadeOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out); Animation fadeOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
mNextButton.startAnimation(fadeOut); mNextButton.startAnimation(fadeOut);
mNextButton.setVisibility(View.INVISIBLE); mNextButton.setVisibility(View.INVISIBLE);

View File

@@ -130,7 +130,7 @@ public class EnableAccessibilityController {
// accessibility service, then we have nothing to do. // accessibility service, then we have nothing to do.
if (accessibilityManager.isEnabled() if (accessibilityManager.isEnabled()
&& !accessibilityManager.getEnabledAccessibilityServiceList( && !accessibilityManager.getEnabledAccessibilityServiceList(
AccessibilityServiceInfo.FEEDBACK_SPOKEN).isEmpty()) { AccessibilityServiceInfo.FEEDBACK_SPOKEN).isEmpty()) {
return false; return false;
} }
@@ -168,7 +168,7 @@ public class EnableAccessibilityController {
mHandler.sendEmptyMessageDelayed(MESSAGE_SPEAK_WARNING, mHandler.sendEmptyMessageDelayed(MESSAGE_SPEAK_WARNING,
SPEAK_WARNING_DELAY_MILLIS); SPEAK_WARNING_DELAY_MILLIS);
mHandler.sendEmptyMessageDelayed(MESSAGE_ENABLE_ACCESSIBILITY, mHandler.sendEmptyMessageDelayed(MESSAGE_ENABLE_ACCESSIBILITY,
ENABLE_ACCESSIBILITY_DELAY_MILLIS); ENABLE_ACCESSIBILITY_DELAY_MILLIS);
return true; return true;
} }
return false; return false;
@@ -188,8 +188,14 @@ public class EnableAccessibilityController {
if (pointerCount > 2) { if (pointerCount > 2) {
cancel(); cancel();
} }
} break; }
break;
case MotionEvent.ACTION_MOVE: { case MotionEvent.ACTION_MOVE: {
//We only care about a 2 fingered move
if (pointerCount < 2) {
cancel();
return false;
}
final float firstPointerMove = MathUtils.dist(event.getX(0), final float firstPointerMove = MathUtils.dist(event.getX(0),
event.getY(0), mFirstPointerDownX, mFirstPointerDownY); event.getY(0), mFirstPointerDownX, mFirstPointerDownY);
if (Math.abs(firstPointerMove) > mTouchSlop) { if (Math.abs(firstPointerMove) > mTouchSlop) {
@@ -200,11 +206,13 @@ public class EnableAccessibilityController {
if (Math.abs(secondPointerMove) > mTouchSlop) { if (Math.abs(secondPointerMove) > mTouchSlop) {
cancel(); cancel();
} }
} break; }
break;
case MotionEvent.ACTION_POINTER_UP: case MotionEvent.ACTION_POINTER_UP:
case MotionEvent.ACTION_CANCEL: { case MotionEvent.ACTION_CANCEL: {
cancel(); cancel();
} break; }
break;
} }
return true; return true;
} }
@@ -287,4 +295,4 @@ public class EnableAccessibilityController {
} }
} }
} }
} }

View File

@@ -27,11 +27,13 @@ import android.net.NetworkInfo;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Settings; import android.telephony.ServiceState;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.Log; import android.util.Log;
import com.cyanogenmod.setupwizard.SetupWizardApp;
import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.common.GooglePlayServicesUtil;
@@ -122,6 +124,19 @@ public class SetupWizardUtils {
return true; return true;
} }
public static boolean isRadioReady(Context context, ServiceState state) {
final SetupWizardApp setupWizardApp = (SetupWizardApp)context.getApplicationContext();
if (setupWizardApp.isRadioReady()) {
return true;
} else {
final boolean ready = state != null
&& state.getState() != ServiceState.STATE_POWER_OFF;
setupWizardApp.setRadioReady(ready);
return ready;
}
}
public static boolean isGuestUser(Context context) { public static boolean isGuestUser(Context context) {
UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
return userManager.isGuestUser(); return userManager.isGuestUser();
@@ -159,7 +174,7 @@ public class SetupWizardUtils {
} }
} }
public static void enableGMSSetupWizard(Context context) { public static boolean enableGMSSetupWizard(Context context) {
try { try {
PackageInfo packageInfo = context.getPackageManager() PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(GOOGLE_SETUPWIZARD_PACKAGE, .getPackageInfo(GOOGLE_SETUPWIZARD_PACKAGE,
@@ -168,8 +183,10 @@ public class SetupWizardUtils {
enableComponentArray(context, packageInfo.activities); enableComponentArray(context, packageInfo.activities);
enableComponentArray(context, packageInfo.services); enableComponentArray(context, packageInfo.services);
enableComponentArray(context, packageInfo.receivers); enableComponentArray(context, packageInfo.receivers);
return true;
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Unable to disable GMS"); Log.e(TAG, "Unable to enable GMS");
return false;
} }
} }