Files
app_Settings/src/com/android/settings/deletionhelper/AutomaticStorageManagerSettings.java
Daniel Nishi fa3766a220 Don't show warning dialog on opening ASM settings.
On older devices, the activation warning dialog would show upon the
switchbar changing to On. This was occurring when the page opens
because the status was changing onResume. By shuffling the switchbar
changes into the ASMSwitchBarController, we can register our listener
after the initialization of the switch bar's first status.

Change-Id: I3610d07345684d1e66444981a8059d1c2965e955
Fixes: 37472724
Test: Settings robotests
2017-04-19 14:04:50 -07:00

168 lines
6.1 KiB
Java

/**
* 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.content.ContentResolver;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v7.preference.DropDownPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.Preference.OnPreferenceChangeListener;
import android.text.format.DateUtils;
import android.text.format.Formatter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.widget.SwitchBar;
/**
* AutomaticStorageManagerSettings is the Settings screen for configuration and management of the
* automatic storage manager.
*/
public class AutomaticStorageManagerSettings extends SettingsPreferenceFragment
implements OnPreferenceChangeListener {
private static final String KEY_DAYS = "days";
private static final String KEY_FREED = "freed_bytes";
private static final String STORAGE_MANAGER_ENABLED_BY_DEFAULT_PROPERTY =
"ro.storage_manager.enabled";
private AutomaticStorageManagerSwitchBarController mSwitchController;
private DropDownPreference mDaysToRetain;
private Preference mFreedBytes;
private SwitchBar mSwitchBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.automatic_storage_management_settings);
}
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
initializeDaysToRetainPreference();
initializeFreedBytesPreference();
initializeSwitchBar();
return view;
}
private void initializeDaysToRetainPreference() {
mDaysToRetain = (DropDownPreference) findPreference(KEY_DAYS);
mDaysToRetain.setOnPreferenceChangeListener(this);
ContentResolver cr = getContentResolver();
int photosDaysToRetain = Settings.Secure.getInt(cr,
Settings.Secure.AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN,
Settings.Secure.AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN_DEFAULT);
String[] stringValues =
getResources().getStringArray(R.array.automatic_storage_management_days_values);
mDaysToRetain.setValue(stringValues[daysValueToIndex(photosDaysToRetain, stringValues)]);
}
private void initializeSwitchBar() {
final SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar();
mSwitchBar.show();
mSwitchController =
new AutomaticStorageManagerSwitchBarController(
getContext(),
mSwitchBar,
mMetricsFeatureProvider,
mDaysToRetain,
getFragmentManager());
}
private void initializeFreedBytesPreference() {
ContentResolver cr = getContentResolver();
mFreedBytes = findPreference(KEY_FREED);
long freedBytes = Settings.Secure.getLong(cr,
Settings.Secure.AUTOMATIC_STORAGE_MANAGER_BYTES_CLEARED,
0);
long lastRunMillis = Settings.Secure.getLong(cr,
Settings.Secure.AUTOMATIC_STORAGE_MANAGER_LAST_RUN,
0);
if (freedBytes == 0 || lastRunMillis == 0) {
mFreedBytes.setVisible(false);
} else {
final Activity activity = getActivity();
mFreedBytes.setSummary(
activity.getString(
R.string.automatic_storage_manager_freed_bytes,
Formatter.formatFileSize(activity, freedBytes),
DateUtils.formatDateTime(
activity, lastRunMillis, DateUtils.FORMAT_SHOW_DATE)));
}
}
@Override
public void onResume() {
super.onResume();
boolean isStorageManagerChecked =
Settings.Secure.getInt(getContentResolver(),
Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED, 0) != 0;
mDaysToRetain.setEnabled(isStorageManagerChecked);
}
@Override
public void onDestroyView() {
super.onDestroyView();
mSwitchBar.hide();
mSwitchController.tearDown();
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (KEY_DAYS.equals(preference.getKey())) {
Settings.Secure.putInt(
getContentResolver(),
Settings.Secure.AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN,
Integer.parseInt((String) newValue));
}
return true;
}
@Override
public int getMetricsCategory() {
return MetricsEvent.STORAGE_MANAGER_SETTINGS;
}
@Override
protected int getHelpResource() {
return R.string.help_uri_storage;
}
private static int daysValueToIndex(int value, String[] indices) {
for (int i = 0; i < indices.length; i++) {
int thisValue = Integer.parseInt(indices[i]);
if (value == thisValue) {
return i;
}
}
return indices.length - 1;
}
}