Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4a6b9095 authored by Jason Monk's avatar Jason Monk Committed by Android (Google) Code Review
Browse files

Merge "Change move storage from dropdown pref to dialog" into mnc-dev

parents 4595978b e8400c2f
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -6460,6 +6460,12 @@
   <!-- Title of storage preference to control where app is stored -->
   <string name="storage_used">Storage used</string>
   <!-- Title of button to change storage [CHAR LIMIT=25] -->
   <string name="change">Change</string>
   <!-- Title of dialog to change storage [CHAR LIMIT=25] -->
   <string name="change_storage">Change storage</string>
   <!-- Label for notification settings for an specific app [CHAR LIMIT=40] -->
   <string name="notifications_label">Notifications</string>
   <!-- App notification summary with notifications enabled [CHAR LIMIT=40] -->
+11 −3
Original line number Diff line number Diff line
@@ -17,11 +17,19 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
                  android:title="@string/application_info_label">

    <com.android.settings.DropDownPreference
        android:key="app_location_setting"
    <com.android.settings.applications.SpacePreference
        android:layout_height="8dp" />

    <Preference
        android:key="storage_used"
        android:title="@string/storage_used"
        android:summary="@string/storage_type_internal"
        android:selectable="true" />
        android:selectable="false"
        android:layout="@layout/horizontal_preference" />

    <com.android.settings.applications.LayoutPreference
        android:key="change_storage_button"
        android:layout="@layout/single_button_panel" />

    <PreferenceCategory
        android:key="storage_category"
+40 −21
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@ import android.view.View.OnClickListener;
import android.widget.Button;

import com.android.internal.logging.MetricsLogger;
import com.android.settings.DropDownPreference;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.deviceinfo.StorageWizardMoveConfirm;
@@ -51,7 +50,7 @@ import java.util.List;
import java.util.Objects;

public class AppStorageSettings extends AppInfoWithHeader
        implements OnClickListener, Callbacks, DropDownPreference.Callback {
        implements OnClickListener, Callbacks, DialogInterface.OnClickListener {
    private static final String TAG = AppStorageSettings.class.getSimpleName();

    //internal constants used in Handler
@@ -70,7 +69,8 @@ public class AppStorageSettings extends AppInfoWithHeader
    private static final int DLG_CLEAR_DATA = DLG_BASE + 1;
    private static final int DLG_CANNOT_CLEAR_DATA = DLG_BASE + 2;

    private static final String KEY_MOVE_PREFERENCE = "app_location_setting";
    private static final String KEY_STORAGE_USED = "storage_used";
    private static final String KEY_CHANGE_STORAGE = "change_storage_button";
    private static final String KEY_STORAGE_CATEGORY = "storage_category";

    private static final String KEY_TOTAL_SIZE = "total_size";
@@ -94,7 +94,8 @@ public class AppStorageSettings extends AppInfoWithHeader
    private Button mClearDataButton;
    private Button mClearCacheButton;

    private DropDownPreference mMoveDropDown;
    private Preference mStorageUsed;
    private Button mChangeStorageButton;

    private boolean mCanClearData = true;
    private boolean mHaveSizes = false;
@@ -113,6 +114,9 @@ public class AppStorageSettings extends AppInfoWithHeader
    private CharSequence mInvalidSizeStr;
    private CharSequence mComputingStr;

    private VolumeInfo[] mCandidates;
    private AlertDialog.Builder mDialogBuilder;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -146,8 +150,11 @@ public class AppStorageSettings extends AppInfoWithHeader
        mClearDataButton = (Button) ((LayoutPreference) findPreference(KEY_CLEAR_DATA))
                .findViewById(R.id.button);

        mMoveDropDown = (DropDownPreference) findPreference(KEY_MOVE_PREFERENCE);
        mMoveDropDown.setCallback(this);
        mStorageUsed = findPreference(KEY_STORAGE_USED);
        mChangeStorageButton = (Button) ((LayoutPreference) findPreference(KEY_CHANGE_STORAGE))
                .findViewById(R.id.button);
        mChangeStorageButton.setText(R.string.change);
        mChangeStorageButton.setOnClickListener(this);

        // Cache section
        mCacheSize = findPreference(KEY_CACHE_SIZE);
@@ -175,15 +182,17 @@ public class AppStorageSettings extends AppInfoWithHeader
            } else {
                showDialogInner(DLG_CLEAR_DATA, 0);
            }
        } else if (v == mChangeStorageButton) {
            mDialogBuilder.show();
        }
    }

    @Override
    public boolean onItemSelected(int pos, Object value) {
    public void onClick(DialogInterface dialog, int which) {
        final Context context = getActivity();

        // If not current volume, kick off move wizard
        final VolumeInfo targetVol = (VolumeInfo) value;
        final VolumeInfo targetVol = mCandidates[which];
        final VolumeInfo currentVol = context.getPackageManager().getPackageCurrentVolume(
                mAppEntry.info);
        if (!Objects.equals(targetVol, currentVol)) {
@@ -192,8 +201,7 @@ public class AppStorageSettings extends AppInfoWithHeader
            intent.putExtra(Intent.EXTRA_PACKAGE_NAME, mAppEntry.info.packageName);
            startActivity(intent);
        }

        return true;
        dialog.dismiss();
    }

    private String getSizeStr(long size) {
@@ -273,18 +281,20 @@ public class AppStorageSettings extends AppInfoWithHeader
    @Override
    protected boolean refreshUi() {
        retrieveAppEntry();
        refreshButtons();
        refreshSizeInfo();

        final VolumeInfo currentVol = getActivity().getPackageManager()
                .getPackageCurrentVolume(mAppEntry.info);
        mMoveDropDown.setSelectedValue(currentVol);
        final StorageManager storage = getContext().getSystemService(StorageManager.class);
        mStorageUsed.setSummary(storage.getBestVolumeDescription(currentVol));

        refreshButtons();

        return true;
    }

    private void refreshButtons() {
        initMoveDropDown();
        initMoveDialog();
        initDataButtons();
    }

@@ -314,7 +324,7 @@ public class AppStorageSettings extends AppInfoWithHeader
        }
    }

    private void initMoveDropDown() {
    private void initMoveDialog() {
        final Context context = getActivity();
        final StorageManager storage = context.getSystemService(StorageManager.class);

@@ -323,14 +333,23 @@ public class AppStorageSettings extends AppInfoWithHeader
        if (candidates.size() > 1) {
            Collections.sort(candidates, VolumeInfo.getDescriptionComparator());

            mMoveDropDown.clearItems();
            for (VolumeInfo vol : candidates) {
                final String volDescrip = storage.getBestVolumeDescription(vol);
                mMoveDropDown.addItem(volDescrip, vol);
            CharSequence[] labels = new CharSequence[candidates.size()];
            int current = -1;
            for (int i = 0; i < candidates.size(); i++) {
                final String volDescrip = storage.getBestVolumeDescription(candidates.get(i));
                if (Objects.equals(volDescrip, mStorageUsed.getSummary())) {
                    current = i;
                }
                labels[i] = volDescrip;
            }
            mMoveDropDown.setSelectable(!mAppControlRestricted);
            mCandidates = candidates.toArray(new VolumeInfo[candidates.size()]);
            mDialogBuilder = new AlertDialog.Builder(getContext())
                    .setTitle(R.string.change_storage)
                    .setSingleChoiceItems(labels, current, this)
                    .setNegativeButton(R.string.cancel, null);
        } else {
            removePreference(KEY_MOVE_PREFERENCE);
            removePreference(KEY_STORAGE_USED);
            removePreference(KEY_CHANGE_STORAGE);
        }
    }