am 084dd048: am fc963764: am bdb64bf1: am 7616b00b: Merge changes from topic \'mig\' into mnc-dev

* commit '084dd0487cc310e6aed81933a32d7f23b39797cf':
  Fix some ordering, colors, and accessibility bugs.
  Handle missing migration source volume.
This commit is contained in:
Jeff Sharkey
2015-07-06 19:18:51 +00:00
committed by Android Git Automerger
10 changed files with 102 additions and 53 deletions

View File

@@ -30,7 +30,6 @@
android:layout_gravity="center" android:layout_gravity="center"
android:gravity="center" android:gravity="center"
android:src="@drawable/ic_eject_24dp" android:src="@drawable/ic_eject_24dp"
android:tint="?android:attr/textColorSecondary"
android:background="?android:attr/selectableItemBackground" /> android:background="?android:attr/selectableItemBackground" />
</LinearLayout> </LinearLayout>

View File

@@ -44,7 +44,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textAlignment="viewStart" android:textAlignment="viewStart"
android:textAppearance="@android:style/TextAppearance.Material.Body1" android:textAppearance="@android:style/TextAppearance.Material.Body1"
android:textColor="?android:attr/textColorSecondaryNoDisable"
android:maxLines="10" /> android:maxLines="10" />
<ProgressBar <ProgressBar

View File

@@ -81,6 +81,11 @@ public abstract class MigrateEstimateTask extends AsyncTask<Void, Void, Long> im
final VolumeInfo privateVol = mContext.getPackageManager().getPrimaryStorageCurrentVolume(); final VolumeInfo privateVol = mContext.getPackageManager().getPrimaryStorageCurrentVolume();
final VolumeInfo emulatedVol = mStorage.findEmulatedForPrivate(privateVol); final VolumeInfo emulatedVol = mStorage.findEmulatedForPrivate(privateVol);
if (emulatedVol == null) {
Log.w(TAG, "Failed to find current primary storage");
return -1L;
}
final String path = emulatedVol.getPath().getAbsolutePath(); final String path = emulatedVol.getPath().getAbsolutePath();
Log.d(TAG, "Estimating for current path " + path); Log.d(TAG, "Estimating for current path " + path);

View File

@@ -96,8 +96,6 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
private UserInfo mCurrentUser; private UserInfo mCurrentUser;
private int mNextOrder = 0;
private StorageSummaryPreference mSummary; private StorageSummaryPreference mSummary;
private StorageItemPreference mApps; private StorageItemPreference mApps;
private StorageItemPreference mImages; private StorageItemPreference mImages;
@@ -140,6 +138,7 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
} }
addPreferencesFromResource(R.xml.device_info_storage_volume); addPreferencesFromResource(R.xml.device_info_storage_volume);
getPreferenceScreen().setOrderingAsAdded(true);
// Find the emulated shared storage layered above this private volume // Find the emulated shared storage layered above this private volume
mSharedVolume = mStorageManager.findEmulatedForPrivate(mVolume); mSharedVolume = mStorageManager.findEmulatedForPrivate(mVolume);
@@ -183,29 +182,29 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
screen.removeAll(); screen.removeAll();
screen.addPreference(mSummary); addPreference(mSummary);
final boolean showUsers = !mUsers.isEmpty(); final boolean showUsers = !mUsers.isEmpty();
final boolean showShared = (mSharedVolume != null) && mSharedVolume.isMountedReadable(); final boolean showShared = (mSharedVolume != null) && mSharedVolume.isMountedReadable();
if (showUsers) { if (showUsers) {
screen.addPreference(new PreferenceHeader(context, mCurrentUser.name)); addPreference(new PreferenceHeader(context, mCurrentUser.name));
} }
screen.addPreference(mApps); addPreference(mApps);
if (showShared) { if (showShared) {
screen.addPreference(mImages); addPreference(mImages);
screen.addPreference(mVideos); addPreference(mVideos);
screen.addPreference(mAudio); addPreference(mAudio);
screen.addPreference(mOther); addPreference(mOther);
} }
screen.addPreference(mCache); addPreference(mCache);
if (showShared) { if (showShared) {
screen.addPreference(mExplore); addPreference(mExplore);
} }
if (showUsers) { if (showUsers) {
screen.addPreference(new PreferenceHeader(context, R.string.storage_other_users)); addPreference(new PreferenceHeader(context, R.string.storage_other_users));
for (Preference pref : mUsers) { for (Preference pref : mUsers) {
screen.addPreference(pref); addPreference(pref);
} }
} }
@@ -231,16 +230,18 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment {
mMeasure.forceMeasure(); mMeasure.forceMeasure();
} }
private void addPreference(Preference pref) {
pref.setOrder(Preference.DEFAULT_ORDER);
getPreferenceScreen().addPreference(pref);
}
private StorageItemPreference buildItem(int titleRes) { private StorageItemPreference buildItem(int titleRes) {
final StorageItemPreference pref = new StorageItemPreference(getActivity(), titleRes); return new StorageItemPreference(getActivity(), titleRes);
pref.setOrder(mNextOrder++);
return pref;
} }
private Preference buildAction(int titleRes) { private Preference buildAction(int titleRes) {
final Preference pref = new Preference(getActivity()); final Preference pref = new Preference(getActivity());
pref.setTitle(titleRes); pref.setTitle(titleRes);
pref.setOrder(mNextOrder++);
return pref; return pref;
} }

View File

@@ -56,8 +56,6 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {
private VolumeInfo mVolume; private VolumeInfo mVolume;
private DiskInfo mDisk; private DiskInfo mDisk;
private int mNextOrder = 0;
private StorageSummaryPreference mSummary; private StorageSummaryPreference mSummary;
private Preference mMount; private Preference mMount;
@@ -108,6 +106,7 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {
mVolumeId = mVolume.getId(); mVolumeId = mVolume.getId();
addPreferencesFromResource(R.xml.device_info_storage_volume); addPreferencesFromResource(R.xml.device_info_storage_volume);
getPreferenceScreen().setOrderingAsAdded(true);
mSummary = new StorageSummaryPreference(context); mSummary = new StorageSummaryPreference(context);
@@ -133,7 +132,7 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {
screen.removeAll(); screen.removeAll();
if (mVolume.isMountedReadable()) { if (mVolume.isMountedReadable()) {
screen.addPreference(mSummary); addPreference(mSummary);
final File file = mVolume.getPath(); final File file = mVolume.getPath();
final long totalBytes = file.getTotalSpace(); final long totalBytes = file.getTotalSpace();
@@ -149,21 +148,25 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {
} }
if (mVolume.getState() == VolumeInfo.STATE_UNMOUNTED) { if (mVolume.getState() == VolumeInfo.STATE_UNMOUNTED) {
screen.addPreference(mMount); addPreference(mMount);
} }
if (mVolume.isMountedReadable()) { if (mVolume.isMountedReadable()) {
screen.addPreference(mUnmount); addPreference(mUnmount);
} }
screen.addPreference(mFormatPublic); addPreference(mFormatPublic);
if (mDisk.isAdoptable() && mIsPermittedToAdopt) { if (mDisk.isAdoptable() && mIsPermittedToAdopt) {
screen.addPreference(mFormatPrivate); addPreference(mFormatPrivate);
} }
} }
private void addPreference(Preference pref) {
pref.setOrder(Preference.DEFAULT_ORDER);
getPreferenceScreen().addPreference(pref);
}
private Preference buildAction(int titleRes) { private Preference buildAction(int titleRes) {
final Preference pref = new Preference(getActivity()); final Preference pref = new Preference(getActivity());
pref.setTitle(titleRes); pref.setTitle(titleRes);
pref.setOrder(mNextOrder++);
return pref; return pref;
} }

View File

@@ -17,9 +17,11 @@
package com.android.settings.deviceinfo; package com.android.settings.deviceinfo;
import android.content.Context; import android.content.Context;
import android.graphics.Color;
import android.preference.Preference; import android.preference.Preference;
import android.view.View; import android.view.View;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView;
import com.android.settings.R; import com.android.settings.R;
@@ -47,6 +49,9 @@ public class StorageSummaryPreference extends Preference {
progress.setVisibility(View.GONE); progress.setVisibility(View.GONE);
} }
final TextView summary = (TextView) view.findViewById(android.R.id.summary);
summary.setTextColor(Color.parseColor("#8a000000"));
super.onBindView(view); super.onBindView(view);
} }
} }

View File

@@ -28,7 +28,6 @@ import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.deviceinfo.StorageSettings.UnmountTask; import com.android.settings.deviceinfo.StorageSettings.UnmountTask;
@@ -101,6 +100,7 @@ public class StorageVolumePreference extends Preference {
protected void onBindView(View view) { protected void onBindView(View view) {
final ImageView unmount = (ImageView) view.findViewById(R.id.unmount); final ImageView unmount = (ImageView) view.findViewById(R.id.unmount);
if (unmount != null) { if (unmount != null) {
unmount.setImageTintList(ColorStateList.valueOf(Color.parseColor("#8a000000")));
unmount.setOnClickListener(mUnmountListener); unmount.setOnClickListener(mUnmountListener);
} }

View File

@@ -150,7 +150,9 @@ public abstract class StorageWizardBase extends Activity {
} }
protected void setHeaderText(int resId, String... args) { protected void setHeaderText(int resId, String... args) {
getSetupWizardLayout().setHeaderText(TextUtils.expandTemplate(getText(resId), args)); final CharSequence headerText = TextUtils.expandTemplate(getText(resId), args);
getSetupWizardLayout().setHeaderText(headerText);
setTitle(headerText);
} }
protected void setBodyText(int resId, String... args) { protected void setBodyText(int resId, String... args) {

View File

@@ -27,6 +27,7 @@ import android.content.Intent;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.os.storage.DiskInfo; import android.os.storage.DiskInfo;
import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo; import android.os.storage.VolumeInfo;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
@@ -40,6 +41,8 @@ public class StorageWizardFormatProgress extends StorageWizardBase {
private boolean mFormatPrivate; private boolean mFormatPrivate;
private PartitionTask mTask;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@@ -56,32 +59,48 @@ public class StorageWizardFormatProgress extends StorageWizardBase {
setHeaderText(R.string.storage_wizard_format_progress_title, mDisk.getDescription()); setHeaderText(R.string.storage_wizard_format_progress_title, mDisk.getDescription());
setBodyText(R.string.storage_wizard_format_progress_body, mDisk.getDescription()); setBodyText(R.string.storage_wizard_format_progress_body, mDisk.getDescription());
setCurrentProgress(20);
getNextButton().setVisibility(View.GONE); getNextButton().setVisibility(View.GONE);
new PartitionTask().execute(); mTask = (PartitionTask) getLastNonConfigurationInstance();
if (mTask == null) {
mTask = new PartitionTask();
mTask.setActivity(this);
mTask.execute();
} else {
mTask.setActivity(this);
}
} }
public class PartitionTask extends AsyncTask<Void, Integer, Exception> { @Override
public Object onRetainNonConfigurationInstance() {
return mTask;
}
public static class PartitionTask extends AsyncTask<Void, Integer, Exception> {
public StorageWizardFormatProgress mActivity;
private volatile int mProgress = 20;
private volatile long mInternalBench; private volatile long mInternalBench;
private volatile long mPrivateBench; private volatile long mPrivateBench;
@Override @Override
protected Exception doInBackground(Void... params) { protected Exception doInBackground(Void... params) {
final StorageWizardFormatProgress activity = mActivity;
final StorageManager storage = mActivity.mStorage;
try { try {
if (mFormatPrivate) { if (activity.mFormatPrivate) {
mStorage.partitionPrivate(mDisk.getId()); storage.partitionPrivate(activity.mDisk.getId());
publishProgress(40); publishProgress(40);
mInternalBench = mStorage.benchmark(null); mInternalBench = storage.benchmark(null);
publishProgress(60); publishProgress(60);
final VolumeInfo privateVol = findFirstVolume(VolumeInfo.TYPE_PRIVATE); final VolumeInfo privateVol = activity.findFirstVolume(VolumeInfo.TYPE_PRIVATE);
mPrivateBench = mStorage.benchmark(privateVol.id); mPrivateBench = storage.benchmark(privateVol.id);
} else { } else {
mStorage.partitionPublic(mDisk.getId()); storage.partitionPublic(activity.mDisk.getId());
} }
return null; return null;
} catch (Exception e) { } catch (Exception e) {
@@ -91,16 +110,22 @@ public class StorageWizardFormatProgress extends StorageWizardBase {
@Override @Override
protected void onProgressUpdate(Integer... progress) { protected void onProgressUpdate(Integer... progress) {
setCurrentProgress(progress[0]); mProgress = progress[0];
mActivity.setCurrentProgress(mProgress);
}
public void setActivity(StorageWizardFormatProgress activity) {
mActivity = activity;
mActivity.setCurrentProgress(mProgress);
} }
@Override @Override
protected void onPostExecute(Exception e) { protected void onPostExecute(Exception e) {
final Context context = StorageWizardFormatProgress.this; final StorageWizardFormatProgress activity = mActivity;
if (e != null) { if (e != null) {
Log.e(TAG, "Failed to partition", e); Log.e(TAG, "Failed to partition", e);
Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show(); Toast.makeText(activity, e.getMessage(), Toast.LENGTH_LONG).show();
finishAffinity(); activity.finishAffinity();
return; return;
} }
@@ -110,22 +135,24 @@ public class StorageWizardFormatProgress extends StorageWizardBase {
// TODO: refine this warning threshold // TODO: refine this warning threshold
if (mPrivateBench > 2000000000) { if (mPrivateBench > 2000000000) {
final SlowWarningFragment dialog = new SlowWarningFragment(); final SlowWarningFragment dialog = new SlowWarningFragment();
dialog.show(getFragmentManager(), TAG_SLOW_WARNING); dialog.show(activity.getFragmentManager(), TAG_SLOW_WARNING);
} else { } else {
onFormatFinished(); activity.onFormatFinished();
} }
} }
} }
public class SlowWarningFragment extends DialogFragment { public static class SlowWarningFragment extends DialogFragment {
@Override @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
final Context context = getActivity(); final Context context = getActivity();
final AlertDialog.Builder builder = new AlertDialog.Builder(context); final AlertDialog.Builder builder = new AlertDialog.Builder(context);
final String descrip = mDisk.getDescription(); final StorageWizardFormatProgress target =
final String genericDescip = getGenericDescription(mDisk); (StorageWizardFormatProgress) getActivity();
final String descrip = target.getDiskDescription();
final String genericDescip = target.getGenericDiskDescription();
builder.setMessage(TextUtils.expandTemplate(getText(R.string.storage_wizard_slow_body), builder.setMessage(TextUtils.expandTemplate(getText(R.string.storage_wizard_slow_body),
descrip, genericDescip)); descrip, genericDescip));
@@ -142,11 +169,15 @@ public class StorageWizardFormatProgress extends StorageWizardBase {
} }
} }
private String getGenericDescription(DiskInfo disk) { private String getDiskDescription() {
return mDisk.getDescription();
}
private String getGenericDiskDescription() {
// TODO: move this directly to DiskInfo // TODO: move this directly to DiskInfo
if (disk.isSd()) { if (mDisk.isSd()) {
return getString(com.android.internal.R.string.storage_sd_card); return getString(com.android.internal.R.string.storage_sd_card);
} else if (disk.isUsb()) { } else if (mDisk.isUsb()) {
return getString(com.android.internal.R.string.storage_usb_drive); return getString(com.android.internal.R.string.storage_usb_drive);
} else { } else {
return null; return null;

View File

@@ -16,10 +16,13 @@
package com.android.settings.deviceinfo; package com.android.settings.deviceinfo;
import static com.android.settings.deviceinfo.StorageSettings.TAG;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.storage.VolumeInfo; import android.os.storage.VolumeInfo;
import android.util.Log;
import com.android.settings.R; import com.android.settings.R;
@@ -36,12 +39,13 @@ public class StorageWizardMigrateConfirm extends StorageWizardBase {
mVolume = findFirstVolume(VolumeInfo.TYPE_PRIVATE); mVolume = findFirstVolume(VolumeInfo.TYPE_PRIVATE);
} }
if (mVolume == null) { final VolumeInfo sourceVol = getPackageManager().getPrimaryStorageCurrentVolume();
if (sourceVol == null || mVolume == null) {
Log.d(TAG, "Missing either source or target volume");
finish(); finish();
return; return;
} }
final VolumeInfo sourceVol = getPackageManager().getPrimaryStorageCurrentVolume();
final String sourceDescrip = mStorage.getBestVolumeDescription(sourceVol); final String sourceDescrip = mStorage.getBestVolumeDescription(sourceVol);
final String targetDescrip = mStorage.getBestVolumeDescription(mVolume); final String targetDescrip = mStorage.getBestVolumeDescription(mVolume);