blob: d87a3386f2aab85b029ad650a8ccfab9eb9f0f77 [file] [log] [blame]
/*
* 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.storagemanager.deletionhelper;
import android.content.Context;
import android.os.Handler;
import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder;
import android.util.AttributeSet;
import android.text.format.Formatter;
import android.view.View;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.storagemanager.R;
/**
* Preference to handle the deletion of photos and videos in the Deletion Helper.
*/
public class PhotosDeletionPreference extends DeletionPreference {
public static final int DAYS_TO_KEEP_DEFAULT = 30;
public static final int DAYS_TO_KEEP_MIN = 0;
private int mDaysToKeep;
private boolean mLoaded;
public PhotosDeletionPreference(Context context, AttributeSet attrs) {
super(context, attrs);
mDaysToKeep = DAYS_TO_KEEP_DEFAULT;
updatePreferenceText(0, 0);
setTitle(R.string.deletion_helper_photos_loading_title);
setSummary(R.string.deletion_helper_photos_loading_summary);
}
/**
* Updates the title and summary of the preference with fresh information.
*/
public void updatePreferenceText(int items, long bytes) {
Context context = getContext();
setTitle(context.getString(R.string.deletion_helper_photos_title));
mLoaded = true;
setSummary(
context.getString(
R.string.deletion_helper_photos_summary,
Formatter.formatFileSize(context, bytes),
mDaysToKeep));
}
public void setDaysToKeep(int daysToKeep) {
mDaysToKeep = daysToKeep;
updatePreferenceText(0, 0);
}
@Override
public void onFreeableChanged(int items, long bytes) {
// Because these operations may cause UI churn, we need to ensure they run on the main
// thread.
new Handler(getContext().getMainLooper()).post(new Runnable() {
@Override
public void run() {
PhotosDeletionPreference.super.onFreeableChanged(items, bytes);
updatePreferenceText(items, bytes);
}
});
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean checked = (boolean) newValue;
MetricsLogger.action(getContext(), MetricsEvent.ACTION_DELETION_SELECTION_PHOTOS, checked);
return super.onPreferenceChange(preference, newValue);
}
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
holder.findViewById(com.android.internal.R.id.icon).setVisibility(View.GONE);
}
public boolean isLoaded() {
return mLoaded;
}
}