From 116a55cdabccb86e0c9a2548eebeb72b7d7d387e Mon Sep 17 00:00:00 2001 From: Daniel Nishi Date: Tue, 10 May 2016 17:35:57 -0700 Subject: [PATCH] Add the automatic storage manager settings. This provides a toggle for changing if the storage manager is turned on or off and how many days of data to retain. It is currently not hooked up to anything currently and only acts as the view, pending b/28600825. Bug: 28560570 Change-Id: Iaa2d819f26addab4dc02ced80e9ba79e0fcf0980 --- res/values/arrays.xml | 14 +++ res/values/bools.xml | 3 + res/values/strings.xml | 9 ++ .../automatic_storage_management_settings.xml | 35 +++++++ .../AutomaticStorageManagerSettings.java | 99 +++++++++++++++++++ .../deviceinfo/PrivateVolumeSettings.java | 11 +++ 6 files changed, 171 insertions(+) create mode 100644 res/xml/automatic_storage_management_settings.xml create mode 100644 src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 8adf331886b..6827e5bf718 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -1031,4 +1031,18 @@ Red + + + Over 30 days old + Over 60 days old + Over 90 days old + + + + 30 + 60 + 90 + + diff --git a/res/values/bools.xml b/res/values/bools.xml index 5ee0f7c91e2..6f0445712f2 100644 --- a/res/values/bools.xml +++ b/res/values/bools.xml @@ -40,4 +40,7 @@ false + + + false diff --git a/res/values/strings.xml b/res/values/strings.xml index 76f573ffa57..be829345c92 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -7604,4 +7604,13 @@ Remove + + Storage manager + + + To help free up storage space, storage manager removes backed up photos and videos from your device. + + + Remove photos & videos + diff --git a/res/xml/automatic_storage_management_settings.xml b/res/xml/automatic_storage_management_settings.xml new file mode 100644 index 00000000000..78606fb1e09 --- /dev/null +++ b/res/xml/automatic_storage_management_settings.xml @@ -0,0 +1,35 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java new file mode 100644 index 00000000000..1112eb10e44 --- /dev/null +++ b/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java @@ -0,0 +1,99 @@ +/** + * Copyright (C) 2016 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.deletionhelper; + +import android.app.Activity; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.Switch; +import android.support.v7.preference.DropDownPreference; +import android.support.v7.preference.Preference; +import android.support.v7.preference.Preference.OnPreferenceChangeListener; +import android.support.v7.preference.PreferenceScreen; + +import com.android.internal.logging.MetricsProto.MetricsEvent; +import com.android.settings.SettingsActivity; +import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.R; +import com.android.settings.widget.SwitchBar; +import com.android.settings.widget.SwitchBar.OnSwitchChangeListener; + +/** + * AutomaticStorageManagerSettings is the Settings screen for configuration and management of the + * automatic storage manager. + */ +public class AutomaticStorageManagerSettings extends SettingsPreferenceFragment implements + OnSwitchChangeListener, OnPreferenceChangeListener { + private static final String KEY_DAYS = "days"; + + private SwitchBar mSwitchBar; + private DropDownPreference mDaysToRetain; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.automatic_storage_management_settings); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + Activity activity = getActivity(); + mSwitchBar = ((SettingsActivity) activity).getSwitchBar(); + mSwitchBar.show(); + mSwitchBar.addOnSwitchChangeListener(this); + // TODO: Initialize the switch bar position based on if the storage manager is active. + + mDaysToRetain = (DropDownPreference) findPreference(KEY_DAYS); + mDaysToRetain.setOnPreferenceChangeListener(this); + } + + @Override + public void onResume() { + super.onResume(); + // TODO: Initialize the switch bar position based on if the storage manager is active. + maybeShowDayDropdown(mSwitchBar.isChecked()); + } + + @Override + public void onSwitchChanged(Switch switchView, boolean isChecked) { + // TODO: Flip a setting which controls if the storage manager should run. + maybeShowDayDropdown(isChecked); + } + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + // TODO: Configure a setting which controls how many days of data the storage manager + // should retain. + return true; + } + + @Override + protected int getMetricsCategory() { + return MetricsEvent.STORAGE_MANAGER_SETTINGS; + } + + private void maybeShowDayDropdown(boolean shouldShow) { + PreferenceScreen screen = getPreferenceScreen(); + if (shouldShow) { + screen.addPreference(mDaysToRetain); + } else { + screen.removePreference(mDaysToRetain); + } + } +} diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java index 442c8e3be49..d5cc27636a0 100644 --- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java +++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java @@ -59,6 +59,7 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.applications.ManageApplications; import com.android.settings.deletionhelper.DeletionHelperFragment; +import com.android.settings.deletionhelper.AutomaticStorageManagerSettings; import com.android.settings.deviceinfo.StorageSettings.MountTask; import com.android.settingslib.deviceinfo.StorageMeasurement; import com.android.settingslib.deviceinfo.StorageMeasurement.MeasurementDetails; @@ -117,6 +118,7 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { private int mItemPoolIndex; private Preference mExplore; + private Preference mAutomaticStorageManagement; private boolean mNeedsUpdate; @@ -164,6 +166,7 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { mCurrentUser = mUserManager.getUserInfo(UserHandle.myUserId()); mExplore = buildAction(R.string.storage_menu_explore); + mAutomaticStorageManagement = buildAction(R.string.storage_settings); mNeedsUpdate = true; @@ -190,6 +193,9 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { screen.removeAll(); + if (getResources().getBoolean(R.bool.config_has_storage_manager)) { + addPreference(screen, mAutomaticStorageManagement); + } addPreference(screen, mSummary); List allUsers = mUserManager.getUsers(); @@ -475,6 +481,11 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { case R.string.storage_menu_explore: { intent = mSharedVolume.buildBrowseIntent(); } break; + case R.string.storage_settings: { + startFragment(this, AutomaticStorageManagerSettings.class.getCanonicalName(), + R.string.automatic_storage_manager_settings, 0, null); + return true; + } case 0: { UserInfoFragment.show(this, pref.getTitle(), pref.getSummary()); return true;