Checkpoint of new storage wizards.
Use frameworks/opt/setupwizard/library/ for consistent behavior and styling on phones and tablets. Implement every step of wizard flow and connect them together, even though some steps are currently non-functional. All strings to match UX spec, with some adjustment. Wizards inherit from helper base class. New interstitials before unmounting or formatting private storage to confirm user knows consequences. Bug: 19993667 Change-Id: I2c774e1718d513805ee8aecfc96d066d4730450c
@@ -19,6 +19,7 @@ LOCAL_PRIVILEGED_MODULE := true
|
|||||||
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
|
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
|
||||||
|
|
||||||
include frameworks/opt/setupwizard/navigationbar/common.mk
|
include frameworks/opt/setupwizard/navigationbar/common.mk
|
||||||
|
include frameworks/opt/setupwizard/library/common.mk
|
||||||
include frameworks/base/packages/SettingsLib/common.mk
|
include frameworks/base/packages/SettingsLib/common.mk
|
||||||
|
|
||||||
include $(BUILD_PACKAGE)
|
include $(BUILD_PACKAGE)
|
||||||
|
@@ -1441,6 +1441,37 @@
|
|||||||
android:resource="@id/storage_settings" />
|
android:resource="@id/storage_settings" />
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
<!-- Exported for SystemUI to launch into -->
|
||||||
|
<activity android:name=".deviceinfo.StorageWizardInit"
|
||||||
|
android:theme="@style/SuwThemeMaterial.Light"
|
||||||
|
android:taskAffinity="com.android.settings.storage_wizard"
|
||||||
|
android:exported="true" />
|
||||||
|
<activity android:name=".deviceinfo.StorageWizardFormatConfirm"
|
||||||
|
android:taskAffinity="com.android.settings.storage_wizard"
|
||||||
|
android:exported="false" />
|
||||||
|
<activity android:name=".deviceinfo.StorageWizardFormatProgress"
|
||||||
|
android:taskAffinity="com.android.settings.storage_wizard"
|
||||||
|
android:exported="false" />
|
||||||
|
<activity android:name=".deviceinfo.StorageWizardMigrate"
|
||||||
|
android:taskAffinity="com.android.settings.storage_wizard"
|
||||||
|
android:exported="false" />
|
||||||
|
<activity android:name=".deviceinfo.StorageWizardMigrateConfirm"
|
||||||
|
android:taskAffinity="com.android.settings.storage_wizard"
|
||||||
|
android:exported="false" />
|
||||||
|
<activity android:name=".deviceinfo.StorageWizardMigrateProgress"
|
||||||
|
android:taskAffinity="com.android.settings.storage_wizard"
|
||||||
|
android:exported="false" />
|
||||||
|
<activity android:name=".deviceinfo.StorageWizardReady"
|
||||||
|
android:taskAffinity="com.android.settings.storage_wizard"
|
||||||
|
android:exported="false" />
|
||||||
|
|
||||||
|
<activity android:name=".deviceinfo.StorageWizardMoveConfirm"
|
||||||
|
android:taskAffinity="com.android.settings.storage_wizard"
|
||||||
|
android:exported="false" />
|
||||||
|
<activity android:name=".deviceinfo.StorageWizardMoveProgress"
|
||||||
|
android:taskAffinity="com.android.settings.storage_wizard"
|
||||||
|
android:exported="false" />
|
||||||
|
|
||||||
<activity android:name="ApnEditor"
|
<activity android:name="ApnEditor"
|
||||||
android:label="@string/apn_edit">
|
android:label="@string/apn_edit">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
BIN
res/drawable-hdpi/illustration_horizontal.jpg
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
res/drawable-hdpi/illustration_tile.jpg
Normal file
After Width: | Height: | Size: 8.7 KiB |
BIN
res/drawable-mdpi/illustration_horizontal.jpg
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
res/drawable-mdpi/illustration_tile.jpg
Normal file
After Width: | Height: | Size: 8.1 KiB |
BIN
res/drawable-nodpi/illustration_generic.jpg
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
res/drawable-sw600dp-hdpi/illustration_generic.jpg
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
res/drawable-sw600dp-mdpi/illustration_generic.jpg
Normal file
After Width: | Height: | Size: 6.0 KiB |
BIN
res/drawable-sw600dp-xhdpi/illustration_generic.jpg
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
res/drawable-sw600dp-xxhdpi/illustration_generic.jpg
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
res/drawable-xhdpi/illustration_horizontal.jpg
Normal file
After Width: | Height: | Size: 6.0 KiB |
BIN
res/drawable-xhdpi/illustration_tile.jpg
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
res/drawable-xxhdpi/illustration_horizontal.jpg
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
res/drawable-xxhdpi/illustration_tile.jpg
Normal file
After Width: | Height: | Size: 12 KiB |
@@ -1,55 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!--
|
|
||||||
/*
|
|
||||||
** Copyright 2010, The Android Open Source Project
|
|
||||||
**
|
|
||||||
** Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
** you may not use this file except in compliance with the License.
|
|
||||||
** You may obtain a copy of the License at
|
|
||||||
**
|
|
||||||
** http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
**
|
|
||||||
** Unless required by applicable law or agreed to in writing, software
|
|
||||||
** distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
** See the License for the specific language governing permissions and
|
|
||||||
** limitations under the License.
|
|
||||||
*/
|
|
||||||
-->
|
|
||||||
|
|
||||||
<com.android.settings.deviceinfo.FileItemInfoLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="?android:attr/listPreferredItemHeight"
|
|
||||||
android:paddingEnd="?android:attr/scrollbarSize"
|
|
||||||
android:background="?android:attr/selectableItemBackground"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:focusable="true">
|
|
||||||
|
|
||||||
<CheckBox android:id="@+id/misc_checkbox"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:paddingStart="16dip"
|
|
||||||
android:scaleType="fitCenter"
|
|
||||||
android:layout_centerVertical="true"/>
|
|
||||||
|
|
||||||
<TextView android:id="@+id/misc_filename"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_toEndOf="@id/misc_checkbox"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:paddingStart="16dip"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceSmall"/>
|
|
||||||
|
|
||||||
<TextView android:id="@+id/misc_filesize"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_toEndOf="@id/misc_checkbox"
|
|
||||||
android:layout_below="@id/misc_filename"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:paddingStart="16dip"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
|
||||||
</com.android.settings.deviceinfo.FileItemInfoLayout>
|
|
||||||
|
|
@@ -1,32 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!--
|
|
||||||
/*
|
|
||||||
** Copyright 2010, The Android Open Source Project
|
|
||||||
**
|
|
||||||
** Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
** you may not use this file except in compliance with the License.
|
|
||||||
** You may obtain a copy of the License at
|
|
||||||
**
|
|
||||||
** http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
**
|
|
||||||
** Unless required by applicable law or agreed to in writing, software
|
|
||||||
** distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
** See the License for the specific language governing permissions and
|
|
||||||
** limitations under the License.
|
|
||||||
*/
|
|
||||||
-->
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:paddingEnd="16dip"
|
|
||||||
android:paddingStart="16dip">
|
|
||||||
|
|
||||||
<ListView android:id="@android:id/list"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
51
res/layout/storage_internal_format.xml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2015 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1">
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/body"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="@dimen/suw_description_margin_top"
|
||||||
|
android:paddingBottom="@dimen/suw_description_margin_bottom"
|
||||||
|
android:paddingStart="@dimen/suw_layout_margin_sides"
|
||||||
|
android:paddingEnd="@dimen/suw_layout_margin_sides"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Body1"
|
||||||
|
android:textColor="?android:attr/textColorPrimary" />
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="4dp">
|
||||||
|
<Button
|
||||||
|
android:id="@+id/confirm"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/storage_menu_format" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
56
res/layout/storage_internal_unmount.xml
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2015 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1">
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/body"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="@dimen/suw_description_margin_top"
|
||||||
|
android:paddingBottom="@dimen/suw_description_margin_bottom"
|
||||||
|
android:paddingStart="@dimen/suw_layout_margin_sides"
|
||||||
|
android:paddingEnd="@dimen/suw_layout_margin_sides"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Body1"
|
||||||
|
android:textColor="?android:attr/textColorPrimary" />
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
|
<Space
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1" />
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="4dp">
|
||||||
|
<Button
|
||||||
|
android:id="@+id/confirm"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/storage_menu_unmount" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
54
res/layout/storage_wizard_generic.xml
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2015 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<com.android.setupwizardlib.SetupWizardLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:id="@+id/setup_wizard_layout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
app:suwBackgroundTile="@drawable/illustration_tile"
|
||||||
|
app:suwIllustrationHorizontalTile="@drawable/illustration_horizontal"
|
||||||
|
app:suwIllustrationImage="@drawable/illustration_generic">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
style="@style/SuwContentFrame"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/storage_wizard_body"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/suw_description_margin_top"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Body1"
|
||||||
|
android:textColor="?android:attr/textColorPrimary" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/storage_wizard_second_body"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/suw_description_margin_top"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Body1"
|
||||||
|
android:textColor="?android:attr/textColorPrimary" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</com.android.setupwizardlib.SetupWizardLayout>
|
73
res/layout/storage_wizard_init.xml
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2015 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<com.android.setupwizardlib.SetupWizardLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:id="@+id/setup_wizard_layout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
app:suwBackgroundTile="@drawable/illustration_tile"
|
||||||
|
app:suwIllustrationHorizontalTile="@drawable/illustration_horizontal"
|
||||||
|
app:suwIllustrationImage="@drawable/illustration_generic">
|
||||||
|
|
||||||
|
<!-- android:layout="@layout/suw_template_short" -->
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
style="@style/SuwContentFrame"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/storage_wizard_init_external_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/suw_description_margin_top"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Subhead"
|
||||||
|
android:textColor="?android:attr/textColorPrimary"
|
||||||
|
android:text="@string/storage_wizard_init_external_title" />
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/storage_wizard_init_external_summary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Body1"
|
||||||
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
|
android:text="@string/storage_wizard_init_external_summary" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/storage_wizard_init_internal_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/suw_description_margin_top"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Subhead"
|
||||||
|
android:textColor="?android:attr/textColorPrimary"
|
||||||
|
android:text="@string/storage_wizard_init_internal_title" />
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/storage_wizard_init_internal_summary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Body1"
|
||||||
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
|
android:text="@string/storage_wizard_init_internal_summary" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</com.android.setupwizardlib.SetupWizardLayout>
|
63
res/layout/storage_wizard_migrate.xml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2015 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<com.android.setupwizardlib.SetupWizardLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:id="@+id/setup_wizard_layout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
app:suwBackgroundTile="@drawable/illustration_tile"
|
||||||
|
app:suwIllustrationHorizontalTile="@drawable/illustration_horizontal"
|
||||||
|
app:suwIllustrationImage="@drawable/illustration_generic">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
style="@style/SuwContentFrame"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/storage_wizard_body"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/suw_description_margin_top"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Body1"
|
||||||
|
android:textColor="?android:attr/textColorPrimary" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/storage_wizard_migrate_now"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/suw_description_margin_top"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Subhead"
|
||||||
|
android:textColor="?android:attr/textColorPrimary"
|
||||||
|
android:text="@string/storage_wizard_migrate_now" />
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/storage_wizard_migrate_later"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Subhead"
|
||||||
|
android:textColor="?android:attr/textColorPrimary"
|
||||||
|
android:text="@string/storage_wizard_migrate_later" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</com.android.setupwizardlib.SetupWizardLayout>
|
59
res/layout/storage_wizard_progress.xml
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2015 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<com.android.setupwizardlib.SetupWizardLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:id="@+id/setup_wizard_layout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
app:suwBackgroundTile="@drawable/illustration_tile"
|
||||||
|
app:suwIllustrationHorizontalTile="@drawable/illustration_horizontal"
|
||||||
|
app:suwIllustrationImage="@drawable/illustration_generic">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
style="@style/SuwContentFrame"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/storage_wizard_progress"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/suw_description_margin_top"
|
||||||
|
android:indeterminate="false"
|
||||||
|
style="?android:attr/progressBarStyleHorizontal" />
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/storage_wizard_progress_summary"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Body1"
|
||||||
|
android:textColor="?android:attr/textColorSecondary" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/storage_wizard_body"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/suw_description_margin_top"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Body1"
|
||||||
|
android:textColor="?android:attr/textColorPrimary" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</com.android.setupwizardlib.SetupWizardLayout>
|
44
res/layout/storage_wizard_ready.xml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2015 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<com.android.setupwizardlib.SetupWizardLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:id="@+id/setup_wizard_layout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
app:suwBackgroundTile="@drawable/illustration_tile"
|
||||||
|
app:suwIllustrationHorizontalTile="@drawable/illustration_horizontal"
|
||||||
|
app:suwIllustrationImage="@drawable/illustration_generic">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
style="@style/SuwContentFrame"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/storage_wizard_ready_body"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/suw_description_margin_top"
|
||||||
|
android:lineSpacingExtra="@dimen/suw_description_line_spacing_extra"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Material.Body1"
|
||||||
|
android:textColor="?android:attr/textColorPrimary" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</com.android.setupwizardlib.SetupWizardLayout>
|
@@ -16,16 +16,12 @@
|
|||||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||||
<!-- Strings for Dialog yes button -->
|
<!-- Strings for Dialog yes button -->
|
||||||
<string name="yes">"Yes"</string>
|
<string name="yes">"Yes"</string>
|
||||||
|
|
||||||
<!-- Strings for Dialog no button -->
|
<!-- Strings for Dialog no button -->
|
||||||
<string name="no">"No"</string>
|
<string name="no">"No"</string>
|
||||||
|
|
||||||
<!-- Strings for Dialog create button -->
|
<!-- Strings for Dialog create button -->
|
||||||
<string name="create">Create</string>
|
<string name="create">Create</string>
|
||||||
|
|
||||||
<!-- Strings for Dialog allow button -->
|
<!-- Strings for Dialog allow button -->
|
||||||
<string name="allow">Allow</string>
|
<string name="allow">Allow</string>
|
||||||
|
|
||||||
<!-- Strings for Dialog deny button -->
|
<!-- Strings for Dialog deny button -->
|
||||||
<string name="deny">Deny</string>
|
<string name="deny">Deny</string>
|
||||||
|
|
||||||
@@ -586,15 +582,14 @@
|
|||||||
|
|
||||||
<!-- Button label for generic cancel action [CHAR LIMIT=20] -->
|
<!-- Button label for generic cancel action [CHAR LIMIT=20] -->
|
||||||
<string name="cancel">Cancel</string>
|
<string name="cancel">Cancel</string>
|
||||||
|
|
||||||
<!-- Button label for generic OK action [CHAR LIMIT=20] -->
|
<!-- Button label for generic OK action [CHAR LIMIT=20] -->
|
||||||
<string name="okay">OK</string>
|
<string name="okay">OK</string>
|
||||||
|
|
||||||
<!-- Button label for generic forget action [CHAR LIMIT=20] -->
|
<!-- Button label for generic forget action [CHAR LIMIT=20] -->
|
||||||
<string name="forget">Forget</string>
|
<string name="forget">Forget</string>
|
||||||
|
|
||||||
<!-- Button label for generic save action [CHAR LIMIT=20] -->
|
<!-- Button label for generic save action [CHAR LIMIT=20] -->
|
||||||
<string name="save">Save</string>
|
<string name="save">Save</string>
|
||||||
|
<!-- Button label for generic done action [CHAR LIMIT=20] -->
|
||||||
|
<string name="done">Done</string>
|
||||||
|
|
||||||
<!-- Title of the Settings activity shown within the application itself. -->
|
<!-- Title of the Settings activity shown within the application itself. -->
|
||||||
<string name="settings_label">Settings</string>
|
<string name="settings_label">Settings</string>
|
||||||
@@ -2332,6 +2327,99 @@
|
|||||||
<!-- Title of dialog prompting user to rename a storage volume [CHAR LIMIT=32]-->
|
<!-- Title of dialog prompting user to rename a storage volume [CHAR LIMIT=32]-->
|
||||||
<string name="storage_rename_title">Rename storage</string>
|
<string name="storage_rename_title">Rename storage</string>
|
||||||
|
|
||||||
|
<!-- Body of dialog informing user about consequences of formatting an internal storage device [CHAR LIMIT=NONE]-->
|
||||||
|
<string name="storage_internal_format_details">After formatting, you can use this <xliff:g id="name" example="SD card">^1</xliff:g> in other devices.
|
||||||
|
\n\nAll data on this <xliff:g id="name" example="SD card">^1</xliff:g> will be erased. Consider backing up first.
|
||||||
|
\n\n<b>Back up photos & other media</b>
|
||||||
|
\nMove your media files to alternative storage on this device, or transfer them to a computer using a USB cable.
|
||||||
|
\n\n<b>Back up apps</b>
|
||||||
|
\nAll apps stored on this <xliff:g id="name" example="SD card">^1</xliff:g> will be uninstalled and their data will be erased. To keep these apps, move them to alternative storage on this device.</string>
|
||||||
|
|
||||||
|
<!-- Body of dialog informing user about consequences of ejecting an internal storage device [CHAR LIMIT=NONE]-->
|
||||||
|
<string name="storage_internal_unmount_details"><b>When you eject this <xliff:g id="name" example="SD card">^1</xliff:g>, apps stored on it will stop working, and media files stored on it will not be available until it is reinserted.</b>
|
||||||
|
\n\nThis <xliff:g id="name" example="SD card">^1</xliff:g> is formatted to work on this device only. It won\'t work on any others.</string>
|
||||||
|
|
||||||
|
<!-- Title of wizard step prompting user to setup a storage device [CHAR LIMIT=32] -->
|
||||||
|
<string name="storage_wizard_init_title">Set up your <xliff:g id="name" example="SD card">^1</xliff:g></string>
|
||||||
|
<!-- Title of wizard choice to use storage device as external storage [CHAR LIMIT=64] -->
|
||||||
|
<string name="storage_wizard_init_external_title">Use as portable storage</string>
|
||||||
|
<!-- Summary of wizard choice to use storage device as external storage [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="storage_wizard_init_external_summary">For moving photos and other media between devices.</string>
|
||||||
|
<!-- Title of wizard choice to use storage device as internal storage [CHAR LIMIT=64] -->
|
||||||
|
<string name="storage_wizard_init_internal_title">Use as internal storage</string>
|
||||||
|
<!-- Summary of wizard choice to use storage device as internal storage [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="storage_wizard_init_internal_summary">For storing anything on this device only, including apps and photos. Requires formatting that prevents it from working with other devices.</string>
|
||||||
|
|
||||||
|
<!-- Title of wizard step prompting user to format a storage device [CHAR LIMIT=32] -->
|
||||||
|
<string name="storage_wizard_format_confirm_title">Format as internal storage</string>
|
||||||
|
<!-- Body of wizard step prompting user to format a storage device [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="storage_wizard_format_confirm_body">This requires the <xliff:g id="name" example="SD card">^1</xliff:g> to be formatted to make it secure.
|
||||||
|
\n\nAfter formatting, this <xliff:g id="name" example="SD card">^1</xliff:g> will only work in this device.
|
||||||
|
\n\n<b>Formatting erases all data currently stored on the <xliff:g id="name" example="SD card">^1</xliff:g>.</b> To avoid losing the data, consider backing it up.
|
||||||
|
</string>
|
||||||
|
<!-- Next button text of wizard step prompting user to format a storage device [CHAR LIMIT=32] -->
|
||||||
|
<string name="storage_wizard_format_confirm_next">Erase & format</string>
|
||||||
|
|
||||||
|
<!-- Title of wizard step showing formatting progress [CHAR LIMIT=32] -->
|
||||||
|
<string name="storage_wizard_format_progress_title">Formatting <xliff:g id="name" example="SD card">^1</xliff:g>\u2026</string>
|
||||||
|
<!-- Body of wizard step showing formatting progress [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="storage_wizard_format_progress_body">Don\'t remove the <xliff:g id="name" example="SD card">^1</xliff:g> while it\'s formatting.</string>
|
||||||
|
|
||||||
|
<!-- Title of wizard step prompting user to migrate data to new storage [CHAR LIMIT=32] -->
|
||||||
|
<string name="storage_wizard_migrate_title">Move data to new storage</string>
|
||||||
|
<!-- Body of wizard step prompting user to migrate data to new storage [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="storage_wizard_migrate_body">You can move your photos, files, and app data to this new <xliff:g id="name" example="SD card">^1</xliff:g>.
|
||||||
|
\n\nThe move takes about <xliff:g id="time" example="1 hour">^2</xliff:g> and will free <xliff:g id="size" example="1.2 GB">^3</xliff:g> on internal storage. Some apps won\'t work while it\'s underway.
|
||||||
|
</string>
|
||||||
|
<!-- Title of wizard choice to migrate data right now [CHAR LIMIT=64] -->
|
||||||
|
<string name="storage_wizard_migrate_now">Move now</string>
|
||||||
|
<!-- Title of wizard choice to migrate data at later time [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="storage_wizard_migrate_later">Move later</string>
|
||||||
|
|
||||||
|
<!-- Title of wizard step prompting user to start data migration [CHAR LIMIT=32] -->
|
||||||
|
<string name="storage_wizard_migrate_confirm_title">Move data now</string>
|
||||||
|
<!-- Body of wizard step providing details about data migration [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="storage_wizard_migrate_confirm_body"><b>The move takes about <xliff:g id="time" example="1 hour">^1</xliff:g>. It will free <xliff:g id="size" example="1.2 GB">^2</xliff:g> of internal storage.</b></string>
|
||||||
|
<!-- Title of wizard button prompting user to start data migration [CHAR LIMIT=32] -->
|
||||||
|
<string name="storage_wizard_migrate_confirm_next">Move</string>
|
||||||
|
|
||||||
|
<!-- Title of wizard step showing migration progress [CHAR LIMIT=32] -->
|
||||||
|
<string name="storage_wizard_migrate_progress_title">Moving data\u2026</string>
|
||||||
|
|
||||||
|
<!-- Body of wizard step providing details about data migration [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="storage_wizard_migrate_details">During the move:
|
||||||
|
\n\u2022 Don\'t remove the <xliff:g id="name" example="SD card">^1</xliff:g>.
|
||||||
|
\n\u2022 Some apps won\'t work correctly.
|
||||||
|
\n\u2022 Keep the device charged.
|
||||||
|
</string>
|
||||||
|
|
||||||
|
<!-- Title of wizard step indicating that storage is ready [CHAR LIMIT=32] -->
|
||||||
|
<string name="storage_wizard_ready_title"><xliff:g id="name" example="SD card">^1</xliff:g> is ready</string>
|
||||||
|
<!-- Body of wizard step indicating that external storage is ready [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="storage_wizard_ready_external_body">
|
||||||
|
Your <xliff:g id="name" example="SD card">^1</xliff:g> is all set to use with photos and other media.
|
||||||
|
</string>
|
||||||
|
<!-- Body of wizard step indicating that internal storage is ready [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="storage_wizard_ready_internal_body">Your new <xliff:g id="name" example="SD card">^1</xliff:g> is working.
|
||||||
|
\n\nTo move photos, files, and app data to this device, go to Settings > Storage.
|
||||||
|
</string>
|
||||||
|
|
||||||
|
<!-- Title of wizard step prompting user to move an app [CHAR LIMIT=32] -->
|
||||||
|
<string name="storage_wizard_move_confirm_title">Move <xliff:g id="app" example="Calculator">^1</xliff:g></string>
|
||||||
|
<!-- Body of wizard step prompting user to move an app [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="storage_wizard_move_confirm_body">Moving <xliff:g id="app" example="Calculator">^1</xliff:g> and its data to <xliff:g id="name" example="SD card">^2</xliff:g> will take only a few moments. You won\'t be able to use the app until the move is complete.
|
||||||
|
\n\nDon\'t remove the <xliff:g id="name" example="SD card">^2</xliff:g> during the move.
|
||||||
|
</string>
|
||||||
|
|
||||||
|
<!-- Title of wizard step showing app move progress [CHAR LIMIT=32] -->
|
||||||
|
<string name="storage_wizard_move_progress_title">Moving <xliff:g id="app" example="Calculator">^1</xliff:g>\u2026</string>
|
||||||
|
<!-- Body of wizard step showing app move progress [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="storage_wizard_move_progress_body">Don\'t remove the <xliff:g id="name" example="SD card">^1</xliff:g> during the move.
|
||||||
|
\n\nThe <xliff:g id="app" example="Calculator">^2</xliff:g> app on this device won\'t be available until the move is complete.
|
||||||
|
</string>
|
||||||
|
<!-- Title of wizard button offering to cancel move [CHAR LIMIT=32] -->
|
||||||
|
<string name="storage_wizard_move_progress_cancel">Cancel move</string>
|
||||||
|
|
||||||
<!-- Phone info screen, section titles: -->
|
<!-- Phone info screen, section titles: -->
|
||||||
<string name="battery_status_title">Battery status</string>
|
<string name="battery_status_title">Battery status</string>
|
||||||
<!-- Phone info screen, section titles: -->
|
<!-- Phone info screen, section titles: -->
|
||||||
|
@@ -204,7 +204,7 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
|
|||||||
if (summary != null) {
|
if (summary != null) {
|
||||||
mConfigure.setSummary(summary);
|
mConfigure.setSummary(summary);
|
||||||
} else {
|
} else {
|
||||||
mConfigure.setSummary(R.string.backup_configure_account_default_summary);
|
//mConfigure.setSummary(R.string.backup_configure_account_default_summary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,80 +0,0 @@
|
|||||||
// Copyright 2011 Google Inc. All Rights Reserved.
|
|
||||||
|
|
||||||
package com.android.settings.deviceinfo;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.os.Environment.UserEnvironment;
|
|
||||||
import android.os.UserHandle;
|
|
||||||
import android.util.AttributeSet;
|
|
||||||
import android.view.ViewDebug;
|
|
||||||
import android.widget.CheckBox;
|
|
||||||
import android.widget.Checkable;
|
|
||||||
import android.widget.RelativeLayout;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import com.android.settings.R;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles display of a single row entry on Settings --> Storage --> Misc Files screen
|
|
||||||
*/
|
|
||||||
public class FileItemInfoLayout extends RelativeLayout implements Checkable {
|
|
||||||
private TextView mFileNameView;
|
|
||||||
private TextView mFileSizeView;
|
|
||||||
private CheckBox mCheckbox;
|
|
||||||
|
|
||||||
private static final int sLengthExternalStorageDirPrefix = new UserEnvironment(
|
|
||||||
UserHandle.myUserId()).getExternalStorageDirectory().getAbsolutePath().length() + 1;
|
|
||||||
|
|
||||||
public FileItemInfoLayout(Context context) {
|
|
||||||
this(context, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public FileItemInfoLayout(Context context, AttributeSet attrs) {
|
|
||||||
this(context, attrs, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public FileItemInfoLayout(Context context, AttributeSet attrs, int defStyle) {
|
|
||||||
super(context, attrs, defStyle);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void toggle() {
|
|
||||||
setChecked(!mCheckbox.isChecked());
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see android.view.View#onFinishInflate()
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected void onFinishInflate() {
|
|
||||||
super.onFinishInflate();
|
|
||||||
mFileNameView = (TextView) findViewById(R.id.misc_filename);
|
|
||||||
mFileSizeView = (TextView) findViewById(R.id.misc_filesize);
|
|
||||||
mCheckbox = (CheckBox) findViewById(R.id.misc_checkbox);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFileName(String fileName) {
|
|
||||||
mFileNameView.setText(fileName.substring(sLengthExternalStorageDirPrefix));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFileSize(String filesize) {
|
|
||||||
mFileSizeView.setText(filesize);
|
|
||||||
}
|
|
||||||
|
|
||||||
@ViewDebug.ExportedProperty
|
|
||||||
public boolean isChecked() {
|
|
||||||
return mCheckbox.isChecked();
|
|
||||||
}
|
|
||||||
|
|
||||||
public CheckBox getCheckBox() {
|
|
||||||
return mCheckbox;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Changes the checked state of this text view.</p>
|
|
||||||
*
|
|
||||||
* @param checked true to check the text, false to uncheck it
|
|
||||||
*/
|
|
||||||
public void setChecked(boolean checked) {
|
|
||||||
mCheckbox.setChecked(checked);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.deviceinfo;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.storage.DiskInfo;
|
||||||
|
import android.os.storage.StorageManager;
|
||||||
|
import android.os.storage.VolumeInfo;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.View.OnClickListener;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.android.internal.logging.MetricsLogger;
|
||||||
|
import com.android.settings.InstrumentedFragment;
|
||||||
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
public class PrivateVolumeFormatConfirm extends InstrumentedFragment {
|
||||||
|
private VolumeInfo mVolume;
|
||||||
|
private DiskInfo mDisk;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getMetricsCategory() {
|
||||||
|
return MetricsLogger.DEVICEINFO_STORAGE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
|
Bundle savedInstanceState) {
|
||||||
|
final StorageManager storage = getActivity().getSystemService(StorageManager.class);
|
||||||
|
final String volumeId = getArguments().getString(StorageSettings.EXTRA_VOLUME_ID);
|
||||||
|
mVolume = storage.findVolumeById(volumeId);
|
||||||
|
mDisk = storage.findDiskByVolumeId(volumeId);
|
||||||
|
|
||||||
|
final View view = inflater.inflate(R.layout.storage_internal_format, container, false);
|
||||||
|
final TextView body = (TextView) view.findViewById(R.id.body);
|
||||||
|
final Button confirm = (Button) view.findViewById(R.id.confirm);
|
||||||
|
|
||||||
|
body.setText(TextUtils.expandTemplate(getText(R.string.storage_internal_format_details),
|
||||||
|
mDisk.getDescription()));
|
||||||
|
confirm.setOnClickListener(mConfirmListener);
|
||||||
|
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final OnClickListener mConfirmListener = new OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
final Intent intent = new Intent(getActivity(), StorageWizardFormatProgress.class);
|
||||||
|
intent.putExtra(StorageWizardBase.EXTRA_DISK_ID, mDisk.id);
|
||||||
|
intent.putExtra(StorageWizardFormatProgress.EXTRA_FORMAT_PUBLIC, true);
|
||||||
|
startActivity(intent);
|
||||||
|
getActivity().finish();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
@@ -58,9 +58,7 @@ import com.android.settings.Settings;
|
|||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
import com.android.settings.deviceinfo.StorageMeasurement.MeasurementDetails;
|
import com.android.settings.deviceinfo.StorageMeasurement.MeasurementDetails;
|
||||||
import com.android.settings.deviceinfo.StorageMeasurement.MeasurementReceiver;
|
import com.android.settings.deviceinfo.StorageMeasurement.MeasurementReceiver;
|
||||||
import com.android.settings.deviceinfo.StorageSettings.FormatTask;
|
|
||||||
import com.android.settings.deviceinfo.StorageSettings.MountTask;
|
import com.android.settings.deviceinfo.StorageSettings.MountTask;
|
||||||
import com.android.settings.deviceinfo.StorageSettings.UnmountTask;
|
|
||||||
import com.google.android.collect.Lists;
|
import com.google.android.collect.Lists;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -82,6 +80,7 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
|
|||||||
private StorageManager mStorageManager;
|
private StorageManager mStorageManager;
|
||||||
private UserManager mUserManager;
|
private UserManager mUserManager;
|
||||||
|
|
||||||
|
private String mVolumeId;
|
||||||
private VolumeInfo mVolume;
|
private VolumeInfo mVolume;
|
||||||
private VolumeInfo mSharedVolume;
|
private VolumeInfo mSharedVolume;
|
||||||
|
|
||||||
@@ -119,8 +118,10 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
|
|||||||
mUserManager = context.getSystemService(UserManager.class);
|
mUserManager = context.getSystemService(UserManager.class);
|
||||||
mStorageManager = context.getSystemService(StorageManager.class);
|
mStorageManager = context.getSystemService(StorageManager.class);
|
||||||
|
|
||||||
final String volId = getArguments().getString(EXTRA_VOLUME_ID);
|
mVolumeId = getArguments().getString(EXTRA_VOLUME_ID);
|
||||||
mVolume = Preconditions.checkNotNull(mStorageManager.findVolumeById(volId));
|
mVolume = mStorageManager.findVolumeById(mVolumeId);
|
||||||
|
|
||||||
|
Preconditions.checkNotNull(mVolume);
|
||||||
Preconditions.checkState(mVolume.type == VolumeInfo.TYPE_PRIVATE);
|
Preconditions.checkState(mVolume.type == VolumeInfo.TYPE_PRIVATE);
|
||||||
|
|
||||||
addPreferencesFromResource(R.xml.device_info_storage_volume);
|
addPreferencesFromResource(R.xml.device_info_storage_volume);
|
||||||
@@ -233,6 +234,14 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
|
// Refresh to verify that we haven't been formatted away
|
||||||
|
mVolume = mStorageManager.findVolumeById(mVolumeId);
|
||||||
|
if (mVolume == null) {
|
||||||
|
getActivity().finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
mStorageManager.registerListener(mStorageListener);
|
mStorageManager.registerListener(mStorageListener);
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
@@ -283,6 +292,7 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
final Context context = getActivity();
|
final Context context = getActivity();
|
||||||
|
final Bundle args = new Bundle();
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case R.id.storage_rename:
|
case R.id.storage_rename:
|
||||||
RenameFragment.show(this);
|
RenameFragment.show(this);
|
||||||
@@ -291,10 +301,14 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
|
|||||||
new MountTask(context, mVolume.id).execute();
|
new MountTask(context, mVolume.id).execute();
|
||||||
return true;
|
return true;
|
||||||
case R.id.storage_unmount:
|
case R.id.storage_unmount:
|
||||||
new UnmountTask(context, mVolume.id).execute();
|
args.putString(StorageSettings.EXTRA_VOLUME_ID, mVolume.id);
|
||||||
|
startFragment(this, PrivateVolumeUnmountConfirm.class.getCanonicalName(),
|
||||||
|
R.string.storage_menu_unmount, 0, args);
|
||||||
return true;
|
return true;
|
||||||
case R.id.storage_format:
|
case R.id.storage_format:
|
||||||
new FormatTask(context, mVolume.id).execute();
|
args.putString(StorageSettings.EXTRA_VOLUME_ID, mVolume.id);
|
||||||
|
startFragment(this, PrivateVolumeFormatConfirm.class.getCanonicalName(),
|
||||||
|
R.string.storage_menu_format, 0, args);
|
||||||
return true;
|
return true;
|
||||||
case R.id.storage_usb:
|
case R.id.storage_usb:
|
||||||
startFragment(this, UsbSettings.class.getCanonicalName(),
|
startFragment(this, UsbSettings.class.getCanonicalName(),
|
||||||
|
@@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.deviceinfo;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.storage.DiskInfo;
|
||||||
|
import android.os.storage.StorageManager;
|
||||||
|
import android.os.storage.VolumeInfo;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.View.OnClickListener;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.android.internal.logging.MetricsLogger;
|
||||||
|
import com.android.settings.InstrumentedFragment;
|
||||||
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.deviceinfo.StorageSettings.UnmountTask;
|
||||||
|
|
||||||
|
public class PrivateVolumeUnmountConfirm extends InstrumentedFragment {
|
||||||
|
private VolumeInfo mVolume;
|
||||||
|
private DiskInfo mDisk;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getMetricsCategory() {
|
||||||
|
return MetricsLogger.DEVICEINFO_STORAGE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
|
Bundle savedInstanceState) {
|
||||||
|
final StorageManager storage = getActivity().getSystemService(StorageManager.class);
|
||||||
|
final String volumeId = getArguments().getString(StorageSettings.EXTRA_VOLUME_ID);
|
||||||
|
mVolume = storage.findVolumeById(volumeId);
|
||||||
|
mDisk = storage.findDiskByVolumeId(volumeId);
|
||||||
|
|
||||||
|
final View view = inflater.inflate(R.layout.storage_internal_unmount, container, false);
|
||||||
|
final TextView body = (TextView) view.findViewById(R.id.body);
|
||||||
|
final Button confirm = (Button) view.findViewById(R.id.confirm);
|
||||||
|
|
||||||
|
body.setText(TextUtils.expandTemplate(getText(R.string.storage_internal_unmount_details),
|
||||||
|
mDisk.getDescription()));
|
||||||
|
confirm.setOnClickListener(mConfirmListener);
|
||||||
|
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final OnClickListener mConfirmListener = new OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
new UnmountTask(getActivity(), mVolume.id).execute();
|
||||||
|
getActivity().finish();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
@@ -19,9 +19,10 @@ package com.android.settings.deviceinfo;
|
|||||||
import static com.android.settings.deviceinfo.StorageSettings.EXTRA_VOLUME_ID;
|
import static com.android.settings.deviceinfo.StorageSettings.EXTRA_VOLUME_ID;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.SystemProperties;
|
import android.os.storage.DiskInfo;
|
||||||
import android.os.storage.StorageEventListener;
|
import android.os.storage.StorageEventListener;
|
||||||
import android.os.storage.StorageManager;
|
import android.os.storage.StorageManager;
|
||||||
import android.os.storage.VolumeInfo;
|
import android.os.storage.VolumeInfo;
|
||||||
@@ -52,7 +53,9 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {
|
|||||||
|
|
||||||
private StorageManager mStorageManager;
|
private StorageManager mStorageManager;
|
||||||
|
|
||||||
|
private String mVolumeId;
|
||||||
private VolumeInfo mVolume;
|
private VolumeInfo mVolume;
|
||||||
|
private DiskInfo mDisk;
|
||||||
|
|
||||||
private int mNextOrder = 0;
|
private int mNextOrder = 0;
|
||||||
|
|
||||||
@@ -94,6 +97,11 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {
|
|||||||
Preconditions.checkNotNull(mVolume);
|
Preconditions.checkNotNull(mVolume);
|
||||||
Preconditions.checkState(mVolume.type == VolumeInfo.TYPE_PUBLIC);
|
Preconditions.checkState(mVolume.type == VolumeInfo.TYPE_PUBLIC);
|
||||||
|
|
||||||
|
mDisk = mStorageManager.findDiskByVolumeId(mVolume.id);
|
||||||
|
Preconditions.checkNotNull(mDisk);
|
||||||
|
|
||||||
|
mVolumeId = mVolume.id;
|
||||||
|
|
||||||
addPreferencesFromResource(R.xml.device_info_storage_volume);
|
addPreferencesFromResource(R.xml.device_info_storage_volume);
|
||||||
|
|
||||||
mGraph = buildGraph();
|
mGraph = buildGraph();
|
||||||
@@ -127,7 +135,7 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {
|
|||||||
screen.addPreference(mUnmount);
|
screen.addPreference(mUnmount);
|
||||||
}
|
}
|
||||||
screen.addPreference(mFormat);
|
screen.addPreference(mFormat);
|
||||||
if (SystemProperties.getBoolean(PREF_FORMAT_INTERNAL, false)) {
|
if ((mDisk.flags & DiskInfo.FLAG_ADOPTABLE) != 0) {
|
||||||
screen.addPreference(mFormatInternal);
|
screen.addPreference(mFormatInternal);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,6 +175,14 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
|
// Refresh to verify that we haven't been formatted away
|
||||||
|
mVolume = mStorageManager.findVolumeById(mVolumeId);
|
||||||
|
if (mVolume == null) {
|
||||||
|
getActivity().finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
mStorageManager.registerListener(mStorageListener);
|
mStorageManager.registerListener(mStorageListener);
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
@@ -187,7 +203,9 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {
|
|||||||
} else if (pref == mFormat) {
|
} else if (pref == mFormat) {
|
||||||
new FormatTask(context, mVolume.id).execute();
|
new FormatTask(context, mVolume.id).execute();
|
||||||
} else if (pref == mFormatInternal) {
|
} else if (pref == mFormatInternal) {
|
||||||
// TODO: implement this
|
final Intent intent = new Intent(context, StorageWizardFormatConfirm.class);
|
||||||
|
intent.putExtra(StorageWizardBase.EXTRA_DISK_ID, mDisk.id);
|
||||||
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.onPreferenceTreeClick(preferenceScreen, pref);
|
return super.onPreferenceTreeClick(preferenceScreen, pref);
|
||||||
|
136
src/com/android/settings/deviceinfo/StorageWizardBase.java
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.deviceinfo;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.storage.DiskInfo;
|
||||||
|
import android.os.storage.StorageManager;
|
||||||
|
import android.os.storage.VolumeInfo;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.WindowManager;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.ProgressBar;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
|
import com.android.setupwizardlib.SetupWizardLayout;
|
||||||
|
import com.android.setupwizardlib.view.NavigationBar;
|
||||||
|
import com.android.setupwizardlib.view.NavigationBar.NavigationBarListener;
|
||||||
|
|
||||||
|
import java.text.NumberFormat;
|
||||||
|
|
||||||
|
public abstract class StorageWizardBase extends Activity implements NavigationBarListener {
|
||||||
|
protected static final String EXTRA_DISK_ID = "disk_id";
|
||||||
|
protected static final String EXTRA_VOLUME_ID = "volume_id";
|
||||||
|
|
||||||
|
protected StorageManager mStorage;
|
||||||
|
|
||||||
|
protected VolumeInfo mVolume;
|
||||||
|
protected DiskInfo mDisk;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
mStorage = getSystemService(StorageManager.class);
|
||||||
|
|
||||||
|
final String volumeId = getIntent().getStringExtra(EXTRA_VOLUME_ID);
|
||||||
|
if (!TextUtils.isEmpty(volumeId)) {
|
||||||
|
mVolume = mStorage.findVolumeById(volumeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
final String diskId = getIntent().getStringExtra(EXTRA_DISK_ID);
|
||||||
|
if (!TextUtils.isEmpty(diskId)) {
|
||||||
|
mDisk = mStorage.findDiskById(diskId);
|
||||||
|
} else {
|
||||||
|
mDisk = mStorage.findDiskByVolumeId(volumeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
setTheme(R.style.SuwThemeMaterial_Light);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostCreate(Bundle savedInstanceState) {
|
||||||
|
super.onPostCreate(savedInstanceState);
|
||||||
|
|
||||||
|
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS |
|
||||||
|
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
|
||||||
|
WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR);
|
||||||
|
|
||||||
|
getNavigationBar().setSystemUiVisibility(
|
||||||
|
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
||||||
|
|
||||||
|
getWindow().setStatusBarColor(Color.TRANSPARENT);
|
||||||
|
|
||||||
|
getNavigationBar().setNavigationBarListener(this);
|
||||||
|
getBackButton().setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected NavigationBar getNavigationBar() {
|
||||||
|
return (NavigationBar) findViewById(R.id.suw_layout_navigation_bar);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Button getBackButton() {
|
||||||
|
return getNavigationBar().getBackButton();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Button getNextButton() {
|
||||||
|
return getNavigationBar().getNextButton();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected SetupWizardLayout getSetupWizardLayout() {
|
||||||
|
return (SetupWizardLayout) findViewById(R.id.setup_wizard_layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ProgressBar getProgressBar() {
|
||||||
|
return (ProgressBar) findViewById(R.id.storage_wizard_progress);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setCurrentProgress(int progress) {
|
||||||
|
getProgressBar().setProgress(progress);
|
||||||
|
((TextView) findViewById(R.id.storage_wizard_progress_summary)).setText(
|
||||||
|
NumberFormat.getPercentInstance().format((double) progress / 100));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setHeaderText(int resId, String... args) {
|
||||||
|
getSetupWizardLayout().setHeaderText(TextUtils.expandTemplate(getText(resId), args));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setBodyText(int resId, String... args) {
|
||||||
|
((TextView) findViewById(R.id.storage_wizard_body)).setText(
|
||||||
|
TextUtils.expandTemplate(getText(resId), args));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setSecondaryBodyText(int resId, String... args) {
|
||||||
|
final TextView secondBody = ((TextView) findViewById(R.id.storage_wizard_second_body));
|
||||||
|
secondBody.setText(TextUtils.expandTemplate(getText(resId), args));
|
||||||
|
secondBody.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNavigateBack() {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNavigateNext() {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.deviceinfo;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import com.android.internal.util.Preconditions;
|
||||||
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
public class StorageWizardFormatConfirm extends StorageWizardBase {
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.storage_wizard_generic);
|
||||||
|
|
||||||
|
Preconditions.checkNotNull(mDisk);
|
||||||
|
|
||||||
|
setHeaderText(R.string.storage_wizard_format_confirm_title);
|
||||||
|
setBodyText(R.string.storage_wizard_format_confirm_body,
|
||||||
|
mDisk.getDescription());
|
||||||
|
|
||||||
|
// TODO: make this a big red scary button
|
||||||
|
getNextButton().setText(R.string.storage_wizard_format_confirm_next);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNavigateNext() {
|
||||||
|
final Intent intent = new Intent(this, StorageWizardFormatProgress.class);
|
||||||
|
intent.putExtra(EXTRA_DISK_ID, mDisk.id);
|
||||||
|
startActivity(intent);
|
||||||
|
finishAffinity();
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.deviceinfo;
|
||||||
|
|
||||||
|
import static com.android.settings.deviceinfo.StorageSettings.TAG;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.AsyncTask;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.android.internal.util.Preconditions;
|
||||||
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
public class StorageWizardFormatProgress extends StorageWizardBase {
|
||||||
|
public static final String EXTRA_FORMAT_PUBLIC = "format_private";
|
||||||
|
|
||||||
|
private boolean mFormatPublic;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.storage_wizard_progress);
|
||||||
|
|
||||||
|
Preconditions.checkNotNull(mDisk);
|
||||||
|
|
||||||
|
mFormatPublic = getIntent().getBooleanExtra(EXTRA_FORMAT_PUBLIC, false);
|
||||||
|
|
||||||
|
setHeaderText(R.string.storage_wizard_format_progress_title, mDisk.getDescription());
|
||||||
|
setBodyText(R.string.storage_wizard_format_progress_body, mDisk.getDescription());
|
||||||
|
|
||||||
|
setCurrentProgress(20);
|
||||||
|
|
||||||
|
getNextButton().setVisibility(View.GONE);
|
||||||
|
|
||||||
|
new PartitionTask().execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PartitionTask extends AsyncTask<Void, Void, Exception> {
|
||||||
|
@Override
|
||||||
|
protected Exception doInBackground(Void... params) {
|
||||||
|
try {
|
||||||
|
if (mFormatPublic) {
|
||||||
|
mStorage.partitionPublic(mDisk.id);
|
||||||
|
} else {
|
||||||
|
mStorage.partitionPrivate(mDisk.id);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
} catch (Exception e) {
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(Exception e) {
|
||||||
|
final Context context = StorageWizardFormatProgress.this;
|
||||||
|
if (e == null) {
|
||||||
|
if (!mFormatPublic) {
|
||||||
|
final Intent intent = new Intent(context, StorageWizardMigrate.class);
|
||||||
|
intent.putExtra(EXTRA_DISK_ID, mDisk.id);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
finishAffinity();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Log.e(TAG, "Failed to partition", e);
|
||||||
|
Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show();
|
||||||
|
finishAffinity();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
83
src/com/android/settings/deviceinfo/StorageWizardInit.java
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.deviceinfo;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.widget.CompoundButton;
|
||||||
|
import android.widget.CompoundButton.OnCheckedChangeListener;
|
||||||
|
import android.widget.RadioButton;
|
||||||
|
|
||||||
|
import com.android.internal.util.Preconditions;
|
||||||
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
public class StorageWizardInit extends StorageWizardBase {
|
||||||
|
private RadioButton mRadioExternal;
|
||||||
|
private RadioButton mRadioInternal;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.storage_wizard_init);
|
||||||
|
|
||||||
|
Preconditions.checkNotNull(mDisk);
|
||||||
|
|
||||||
|
setHeaderText(R.string.storage_wizard_init_title, mDisk.getDescription());
|
||||||
|
|
||||||
|
mRadioExternal = (RadioButton) findViewById(R.id.storage_wizard_init_external_title);
|
||||||
|
mRadioInternal = (RadioButton) findViewById(R.id.storage_wizard_init_internal_title);
|
||||||
|
|
||||||
|
mRadioExternal.setOnCheckedChangeListener(mRadioListener);
|
||||||
|
mRadioInternal.setOnCheckedChangeListener(mRadioListener);
|
||||||
|
|
||||||
|
findViewById(R.id.storage_wizard_init_external_summary).setPadding(
|
||||||
|
mRadioExternal.getCompoundPaddingLeft(), 0,
|
||||||
|
mRadioExternal.getCompoundPaddingRight(), 0);
|
||||||
|
findViewById(R.id.storage_wizard_init_internal_summary).setPadding(
|
||||||
|
mRadioExternal.getCompoundPaddingLeft(), 0,
|
||||||
|
mRadioExternal.getCompoundPaddingRight(), 0);
|
||||||
|
|
||||||
|
getNextButton().setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final OnCheckedChangeListener mRadioListener = new OnCheckedChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
|
if (isChecked) {
|
||||||
|
if (buttonView == mRadioExternal) {
|
||||||
|
mRadioInternal.setChecked(false);
|
||||||
|
} else if (buttonView == mRadioInternal) {
|
||||||
|
mRadioExternal.setChecked(false);
|
||||||
|
}
|
||||||
|
getNextButton().setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNavigateNext() {
|
||||||
|
if (mRadioExternal.isChecked()) {
|
||||||
|
final Intent intent = new Intent(this, StorageWizardReady.class);
|
||||||
|
intent.putExtra(EXTRA_DISK_ID, mDisk.id);
|
||||||
|
startActivity(intent);
|
||||||
|
} else if (mRadioInternal.isChecked()) {
|
||||||
|
final Intent intent = new Intent(this, StorageWizardFormatConfirm.class);
|
||||||
|
intent.putExtra(EXTRA_DISK_ID, mDisk.id);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.deviceinfo;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.text.format.DateUtils;
|
||||||
|
import android.text.format.Formatter;
|
||||||
|
import android.widget.CompoundButton;
|
||||||
|
import android.widget.CompoundButton.OnCheckedChangeListener;
|
||||||
|
import android.widget.RadioButton;
|
||||||
|
|
||||||
|
import com.android.internal.util.Preconditions;
|
||||||
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
public class StorageWizardMigrate extends StorageWizardBase {
|
||||||
|
private RadioButton mRadioNow;
|
||||||
|
private RadioButton mRadioLater;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.storage_wizard_migrate);
|
||||||
|
|
||||||
|
Preconditions.checkNotNull(mDisk);
|
||||||
|
|
||||||
|
final String time = DateUtils.formatDuration(0).toString();
|
||||||
|
final String size = Formatter.formatFileSize(this, 0);
|
||||||
|
|
||||||
|
setHeaderText(R.string.storage_wizard_migrate_title, mDisk.getDescription());
|
||||||
|
setBodyText(R.string.storage_wizard_migrate_body, mDisk.getDescription(), time, size);
|
||||||
|
|
||||||
|
mRadioNow = (RadioButton) findViewById(R.id.storage_wizard_migrate_now);
|
||||||
|
mRadioLater = (RadioButton) findViewById(R.id.storage_wizard_migrate_later);
|
||||||
|
|
||||||
|
mRadioNow.setOnCheckedChangeListener(mRadioListener);
|
||||||
|
mRadioLater.setOnCheckedChangeListener(mRadioListener);
|
||||||
|
|
||||||
|
mRadioNow.setChecked(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final OnCheckedChangeListener mRadioListener = new OnCheckedChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
|
if (isChecked) {
|
||||||
|
if (buttonView == mRadioNow) {
|
||||||
|
mRadioLater.setChecked(false);
|
||||||
|
} else if (buttonView == mRadioLater) {
|
||||||
|
mRadioNow.setChecked(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNavigateNext() {
|
||||||
|
if (mRadioNow.isChecked()) {
|
||||||
|
final Intent intent = new Intent(this, StorageWizardMigrateConfirm.class);
|
||||||
|
intent.putExtra(EXTRA_DISK_ID, mDisk.id);
|
||||||
|
startActivity(intent);
|
||||||
|
} else if (mRadioLater.isChecked()) {
|
||||||
|
final Intent intent = new Intent(this, StorageWizardReady.class);
|
||||||
|
intent.putExtra(EXTRA_DISK_ID, mDisk.id);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.deviceinfo;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.text.format.DateUtils;
|
||||||
|
import android.text.format.Formatter;
|
||||||
|
|
||||||
|
import com.android.internal.util.Preconditions;
|
||||||
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
public class StorageWizardMigrateConfirm extends StorageWizardBase {
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.storage_wizard_generic);
|
||||||
|
|
||||||
|
Preconditions.checkNotNull(mDisk);
|
||||||
|
|
||||||
|
final String time = DateUtils.formatDuration(0).toString();
|
||||||
|
final String size = Formatter.formatFileSize(this, 0);
|
||||||
|
|
||||||
|
setHeaderText(R.string.storage_wizard_migrate_confirm_title, mDisk.getDescription());
|
||||||
|
setBodyText(R.string.storage_wizard_migrate_confirm_body, time, size);
|
||||||
|
setSecondaryBodyText(R.string.storage_wizard_migrate_details, mDisk.getDescription());
|
||||||
|
|
||||||
|
getNextButton().setText(R.string.storage_wizard_migrate_confirm_next);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNavigateNext() {
|
||||||
|
final Intent intent = new Intent(this, StorageWizardMigrateProgress.class);
|
||||||
|
intent.putExtra(EXTRA_DISK_ID, mDisk.id);
|
||||||
|
startActivity(intent);
|
||||||
|
finishAffinity();
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,75 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.deviceinfo;
|
||||||
|
|
||||||
|
import static com.android.settings.deviceinfo.StorageSettings.TAG;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.AsyncTask;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.SystemClock;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.android.internal.util.Preconditions;
|
||||||
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
public class StorageWizardMigrateProgress extends StorageWizardBase {
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.storage_wizard_progress);
|
||||||
|
|
||||||
|
Preconditions.checkNotNull(mDisk);
|
||||||
|
|
||||||
|
setHeaderText(R.string.storage_wizard_migrate_progress_title, mDisk.getDescription());
|
||||||
|
setBodyText(R.string.storage_wizard_migrate_details, mDisk.getDescription());
|
||||||
|
|
||||||
|
setCurrentProgress(20);
|
||||||
|
|
||||||
|
getNextButton().setVisibility(View.GONE);
|
||||||
|
|
||||||
|
new MigrateTask().execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class MigrateTask extends AsyncTask<Void, Void, Exception> {
|
||||||
|
@Override
|
||||||
|
protected Exception doInBackground(Void... params) {
|
||||||
|
// TODO: wire up migration
|
||||||
|
SystemClock.sleep(2000);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(Exception e) {
|
||||||
|
final Context context = StorageWizardMigrateProgress.this;
|
||||||
|
if (e == null) {
|
||||||
|
final Intent intent = new Intent(context, StorageWizardReady.class);
|
||||||
|
intent.putExtra(EXTRA_DISK_ID, mDisk.id);
|
||||||
|
startActivity(intent);
|
||||||
|
finishAffinity();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Log.e(TAG, "Failed to migrate", e);
|
||||||
|
Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show();
|
||||||
|
finishAffinity();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
59
src/com/android/settings/deviceinfo/StorageWizardReady.java
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.deviceinfo;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.storage.VolumeInfo;
|
||||||
|
|
||||||
|
import com.android.internal.util.Preconditions;
|
||||||
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
public class StorageWizardReady extends StorageWizardBase {
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.storage_wizard_generic);
|
||||||
|
|
||||||
|
Preconditions.checkNotNull(mDisk);
|
||||||
|
|
||||||
|
setHeaderText(R.string.storage_wizard_ready_title, mDisk.getDescription());
|
||||||
|
|
||||||
|
// TODO: handle mixed partition cases instead of just guessing based on
|
||||||
|
// first volume type we encounter
|
||||||
|
for (String volId : mDisk.volumes) {
|
||||||
|
final VolumeInfo vol = mStorage.findVolumeById(volId);
|
||||||
|
if (vol == null) continue;
|
||||||
|
|
||||||
|
if (vol.type == VolumeInfo.TYPE_PUBLIC) {
|
||||||
|
setBodyText(R.string.storage_wizard_ready_external_body,
|
||||||
|
mDisk.getDescription());
|
||||||
|
break;
|
||||||
|
} else if (vol.type == VolumeInfo.TYPE_PRIVATE) {
|
||||||
|
setBodyText(R.string.storage_wizard_ready_internal_body,
|
||||||
|
mDisk.getDescription());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getNextButton().setText(R.string.done);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNavigateNext() {
|
||||||
|
finishAffinity();
|
||||||
|
}
|
||||||
|
}
|