Loading res/values/strings.xml +9 −0 Original line number Diff line number Diff line Loading @@ -7589,4 +7589,13 @@ <!-- Summary of how much backed up storage that photos and videos service can clear from the local device. [CHAR LIMIT=NONE]--> <string name="deletion_helper_photos_summary"><xliff:g id="used" example="1.2GB">%1$s</xliff:g>, older than <xliff:g id="days">%2$d</xliff:g> days</string> <!-- Preference title for the downloads deletion service. [CHAR LIMIT=40]--> <string name="deletion_helper_downloads_title">Downloads (<xliff:g id="numItems" example="67">%1$d</xliff:g>)</string> <!-- Summary of how much stale data can be cleared from the local download folder. [CHAR LIMIT=NONE]--> <string name="deletion_helper_downloads_summary"><xliff:g id="used" example="1.2GB">%1$s</xliff:g>, last modified <xliff:g id="days">%2$s</xliff:g></string> <!-- Summary for when when there is nothing in the downloads folder to clear. [CHAR LIMIT=NONE]--> <string name="deletion_helper_downloads_summary_empty"><xliff:g id="used" example="1.2GB">%1$s</xliff:g></string> </resources> res/xml/deletion_helper_list.xml +5 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,9 @@ <com.android.settings.PhotosDeletionPreference android:key="delete_photos" /> <com.android.settings.deletionhelper.DownloadsDeletionPreference android:key="delete_downloads" /> <PreferenceCategory android:key="apps_group" android:title="@string/deletion_helper_apps_title" /> Loading src/com/android/settings/DeletionPreference.java 0 → 100644 +117 −0 Original line number Diff line number Diff line /* * 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; import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.support.v7.preference.Preference; import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.CheckBoxPreference; import android.support.v7.preference.PreferenceViewHolder; import android.util.AttributeSet; import android.util.TypedValue; import android.text.format.Formatter; import android.widget.TextView; import com.android.settings.deletionhelper.DeletionType; /** * Preference to handle the deletion of various data types in the Deletion Helper. */ public abstract class DeletionPreference extends CheckBoxPreference implements DeletionType.FreeableChangedListener, OnPreferenceChangeListener { private DeletionType.FreeableChangedListener mListener; private boolean mChecked; private long mFreeableBytes; private int mFreeableItems; private DeletionType mDeletionService; public DeletionPreference(Context context, AttributeSet attrs) { super(context, attrs); setOnPreferenceChangeListener(this); } @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); final TextView titleView = (TextView) holder.findViewById(android.R.id.title); if (titleView != null) { titleView.setTextColor(getTintColor(getContext())); } } /** * Returns the number of bytes which can be cleared by the deletion service. * @return The number of bytes. */ public long getFreeableBytes() { return mChecked ? mFreeableBytes : 0; } /** * Register a listener to be called back on when the freeable bytes have changed. * @param listener The callback listener. */ public void registerFreeableChangedListener(DeletionType.FreeableChangedListener listener) { mListener = listener; } /** * Registers a deletion service to update the preference's information. * @param deletionService A photo/video deletion service. */ public void registerDeletionService(DeletionType deletionService) { mDeletionService = deletionService; if (mDeletionService != null) { mDeletionService.registerFreeableChangedListener(this); } } /** * Returns the deletion service powering the preference. * @return The deletion service. */ public DeletionType getDeletionService() { return mDeletionService; } @Override public void onFreeableChanged(int numItems, long freeableBytes) { mFreeableItems = numItems; mFreeableBytes = freeableBytes; maybeUpdateListener(); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { mChecked = (boolean) newValue; maybeUpdateListener(); return true; } private int getTintColor(Context context) { TypedValue value = new TypedValue(); context.getTheme().resolveAttribute(android.R.attr.colorAccent, value, true); return context.getColor(value.resourceId); } private void maybeUpdateListener() { if (mListener != null) { mListener.onFreeableChanged(mFreeableItems, getFreeableBytes()); } } } src/com/android/settings/PhotosDeletionPreference.java +8 −85 Original line number Diff line number Diff line Loading @@ -19,107 +19,36 @@ package com.android.settings; import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.support.v7.preference.Preference; import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.CheckBoxPreference; import android.support.v7.preference.PreferenceViewHolder; import android.util.AttributeSet; import android.util.TypedValue; import android.text.format.Formatter; import android.widget.TextView; import com.android.settings.deletionhelper.DeletionType; /** * Preference to handle the deletion of photos and videos in the Deletion Helper. */ public class PhotosDeletionPreference extends CheckBoxPreference implements DeletionType.FreeableChangedListener, OnPreferenceChangeListener { public class PhotosDeletionPreference extends DeletionPreference { // TODO(b/28560570): Remove this dummy value. private static final int FAKE_DAYS_TO_KEEP = 30; private DeletionType.FreeableChangedListener mListener; private boolean mChecked; private long mFreeableBytes; private int mFreeableItems; private DeletionType mDeletionService; public PhotosDeletionPreference(Context context, AttributeSet attrs) { super(context, attrs); setIcon(getIcon(context)); updatePreferenceText(); setOnPreferenceChangeListener(this); } @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); final TextView titleView = (TextView) holder.findViewById(android.R.id.title); if (titleView != null) { titleView.setTextColor(getTintColor(getContext())); } } /** * Get the tint color for the preference's icon and text. * @param context UI context to get the theme. * @return The tint color. */ public int getTintColor(Context context) { TypedValue value = new TypedValue(); context.getTheme().resolveAttribute(android.R.attr.colorAccent, value, true); return context.getColor(value.resourceId); updatePreferenceText(0, 0); } /** * Updates the title and summary of the preference with fresh information. */ public void updatePreferenceText() { public void updatePreferenceText(int items, long bytes) { Context context = getContext(); setTitle(context.getString(R.string.deletion_helper_photos_title, mFreeableItems)); setTitle(context.getString(R.string.deletion_helper_photos_title, items)); setSummary(context.getString(R.string.deletion_helper_photos_summary, Formatter.formatFileSize(context, mFreeableBytes), FAKE_DAYS_TO_KEEP)); } /** * Returns the number of bytes which can be cleared by the deletion service. * @return The number of bytes. */ public long getFreeableBytes() { return mChecked ? mFreeableBytes : 0; } /** * Register a listener to be called back on when the freeable bytes have changed. * @param listener The callback listener. */ public void registerFreeableChangedListener(DeletionType.FreeableChangedListener listener) { mListener = listener; } /** * Registers a deletion service to update the preference's information. * @param deletionService A photo/video deletion service. */ public void registerDeletionService(DeletionType deletionService) { mDeletionService = deletionService; if (mDeletionService != null) { mDeletionService.registerFreeableChangedListener(this); } Formatter.formatFileSize(context, bytes), FAKE_DAYS_TO_KEEP)); } @Override public void onFreeableChanged(int numItems, long freeableBytes) { mFreeableItems = numItems; mFreeableBytes = freeableBytes; updatePreferenceText(); maybeUpdateListener(); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { mChecked = (boolean) newValue; maybeUpdateListener(); return true; public void onFreeableChanged(int items, long bytes) { super.onFreeableChanged(items, bytes); updatePreferenceText(items, bytes); } private Drawable getIcon(Context context) { Loading @@ -134,10 +63,4 @@ public class PhotosDeletionPreference extends CheckBoxPreference implements } return iconDrawable; } private void maybeUpdateListener() { if (mListener != null) { mListener.onFreeableChanged(mFreeableItems, getFreeableBytes()); } } } src/com/android/settings/deletionhelper/DeletionHelperFragment.java +27 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.util.ArraySet; import android.util.Log; import android.view.View; import android.widget.Button; import com.android.settings.deletionhelper.DownloadsDeletionPreference; import com.android.settings.PhotosDeletionPreference; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.R; Loading Loading @@ -54,10 +55,14 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement private static final String KEY_APPS_GROUP = "apps_group"; private static final String KEY_PHOTOS_VIDEOS_PREFERENCE = "delete_photos"; private static final String KEY_DOWNLOADS_PREFERENCE = "delete_downloads"; private static final int DOWNLOADS_LOADER_ID = 1; private Button mCancel, mFree; private PreferenceGroup mApps; private PhotosDeletionPreference mPhotoPreference; private DownloadsDeletionPreference mDownloadsPreference; private ApplicationsState mState; private Session mSession; Loading @@ -67,6 +72,7 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement private boolean mHasReceivedAppEntries, mHasReceivedBridgeCallback, mFinishedLoading; private DeletionHelperFeatureProvider mProvider; private DeletionType mPhotoVideoDeletion; private DownloadsDeletionType mDownloadsDeletion; @Override public void onCreate(Bundle savedInstanceState) { Loading @@ -80,11 +86,14 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement addPreferencesFromResource(R.xml.deletion_helper_list); mApps = (PreferenceGroup) findPreference(KEY_APPS_GROUP); mPhotoPreference = (PhotosDeletionPreference) findPreference(KEY_PHOTOS_VIDEOS_PREFERENCE); mDownloadsPreference = (DownloadsDeletionPreference) findPreference(KEY_DOWNLOADS_PREFERENCE); mProvider = FeatureFactory.getFactory(app).getDeletionHelperFeatureProvider(); if (mProvider != null) { mPhotoVideoDeletion = mProvider.createPhotoVideoDeletionType(); } mDownloadsDeletion = new DownloadsDeletionType(getActivity()); if (savedInstanceState != null) { mHasReceivedAppEntries = Loading Loading @@ -117,6 +126,9 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement if (mPhotoPreference != null && mPhotoPreference.isChecked()) { mPhotoVideoDeletion.clearFreeableData(); } if (mDownloadsPreference != null && mDownloadsPreference.isChecked()) { mDownloadsDeletion.clearFreeableData(); } ArraySet<String> apps = new ArraySet<>(); for (AppEntry entry : mAppEntries) { Loading Loading @@ -153,6 +165,9 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement mPhotoPreference.registerFreeableChangedListener(this); mPhotoPreference.registerDeletionService(mPhotoVideoDeletion); } mDownloadsPreference.registerFreeableChangedListener(this); mDownloadsPreference.registerDeletionService(mDownloadsDeletion); } @Override Loading @@ -172,6 +187,10 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement if (mPhotoVideoDeletion != null) { mPhotoVideoDeletion.onResume(); } if (mDownloadsDeletion != null) { mDownloadsDeletion.onResume(); getLoaderManager().initLoader(DOWNLOADS_LOADER_ID, new Bundle(), mDownloadsDeletion); } } Loading @@ -193,6 +212,9 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement if (mPhotoVideoDeletion != null) { mPhotoVideoDeletion.onPause(); } if (mDownloadsDeletion != null) { mDownloadsDeletion.onPause(); } } private void rebuild() { Loading @@ -211,7 +233,8 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement for (int i = 0; i < entryCount; i++) { AppEntry entry = apps.get(i); final String packageName = entry.label; AppDeletionPreference preference = (AppDeletionPreference) getCachedPreference(entry.label); AppDeletionPreference preference = (AppDeletionPreference) getCachedPreference(entry.label); if (preference == null) { preference = new AppDeletionPreference(getActivity(), entry, mState); Loading Loading @@ -322,6 +345,9 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement if (mPhotoPreference != null) { freeableSpace += mPhotoPreference.getFreeableBytes(); } if (mDownloadsPreference != null) { freeableSpace += mDownloadsPreference.getFreeableBytes(); } return freeableSpace; } } No newline at end of file Loading
res/values/strings.xml +9 −0 Original line number Diff line number Diff line Loading @@ -7589,4 +7589,13 @@ <!-- Summary of how much backed up storage that photos and videos service can clear from the local device. [CHAR LIMIT=NONE]--> <string name="deletion_helper_photos_summary"><xliff:g id="used" example="1.2GB">%1$s</xliff:g>, older than <xliff:g id="days">%2$d</xliff:g> days</string> <!-- Preference title for the downloads deletion service. [CHAR LIMIT=40]--> <string name="deletion_helper_downloads_title">Downloads (<xliff:g id="numItems" example="67">%1$d</xliff:g>)</string> <!-- Summary of how much stale data can be cleared from the local download folder. [CHAR LIMIT=NONE]--> <string name="deletion_helper_downloads_summary"><xliff:g id="used" example="1.2GB">%1$s</xliff:g>, last modified <xliff:g id="days">%2$s</xliff:g></string> <!-- Summary for when when there is nothing in the downloads folder to clear. [CHAR LIMIT=NONE]--> <string name="deletion_helper_downloads_summary_empty"><xliff:g id="used" example="1.2GB">%1$s</xliff:g></string> </resources>
res/xml/deletion_helper_list.xml +5 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,9 @@ <com.android.settings.PhotosDeletionPreference android:key="delete_photos" /> <com.android.settings.deletionhelper.DownloadsDeletionPreference android:key="delete_downloads" /> <PreferenceCategory android:key="apps_group" android:title="@string/deletion_helper_apps_title" /> Loading
src/com/android/settings/DeletionPreference.java 0 → 100644 +117 −0 Original line number Diff line number Diff line /* * 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; import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.support.v7.preference.Preference; import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.CheckBoxPreference; import android.support.v7.preference.PreferenceViewHolder; import android.util.AttributeSet; import android.util.TypedValue; import android.text.format.Formatter; import android.widget.TextView; import com.android.settings.deletionhelper.DeletionType; /** * Preference to handle the deletion of various data types in the Deletion Helper. */ public abstract class DeletionPreference extends CheckBoxPreference implements DeletionType.FreeableChangedListener, OnPreferenceChangeListener { private DeletionType.FreeableChangedListener mListener; private boolean mChecked; private long mFreeableBytes; private int mFreeableItems; private DeletionType mDeletionService; public DeletionPreference(Context context, AttributeSet attrs) { super(context, attrs); setOnPreferenceChangeListener(this); } @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); final TextView titleView = (TextView) holder.findViewById(android.R.id.title); if (titleView != null) { titleView.setTextColor(getTintColor(getContext())); } } /** * Returns the number of bytes which can be cleared by the deletion service. * @return The number of bytes. */ public long getFreeableBytes() { return mChecked ? mFreeableBytes : 0; } /** * Register a listener to be called back on when the freeable bytes have changed. * @param listener The callback listener. */ public void registerFreeableChangedListener(DeletionType.FreeableChangedListener listener) { mListener = listener; } /** * Registers a deletion service to update the preference's information. * @param deletionService A photo/video deletion service. */ public void registerDeletionService(DeletionType deletionService) { mDeletionService = deletionService; if (mDeletionService != null) { mDeletionService.registerFreeableChangedListener(this); } } /** * Returns the deletion service powering the preference. * @return The deletion service. */ public DeletionType getDeletionService() { return mDeletionService; } @Override public void onFreeableChanged(int numItems, long freeableBytes) { mFreeableItems = numItems; mFreeableBytes = freeableBytes; maybeUpdateListener(); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { mChecked = (boolean) newValue; maybeUpdateListener(); return true; } private int getTintColor(Context context) { TypedValue value = new TypedValue(); context.getTheme().resolveAttribute(android.R.attr.colorAccent, value, true); return context.getColor(value.resourceId); } private void maybeUpdateListener() { if (mListener != null) { mListener.onFreeableChanged(mFreeableItems, getFreeableBytes()); } } }
src/com/android/settings/PhotosDeletionPreference.java +8 −85 Original line number Diff line number Diff line Loading @@ -19,107 +19,36 @@ package com.android.settings; import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.support.v7.preference.Preference; import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.CheckBoxPreference; import android.support.v7.preference.PreferenceViewHolder; import android.util.AttributeSet; import android.util.TypedValue; import android.text.format.Formatter; import android.widget.TextView; import com.android.settings.deletionhelper.DeletionType; /** * Preference to handle the deletion of photos and videos in the Deletion Helper. */ public class PhotosDeletionPreference extends CheckBoxPreference implements DeletionType.FreeableChangedListener, OnPreferenceChangeListener { public class PhotosDeletionPreference extends DeletionPreference { // TODO(b/28560570): Remove this dummy value. private static final int FAKE_DAYS_TO_KEEP = 30; private DeletionType.FreeableChangedListener mListener; private boolean mChecked; private long mFreeableBytes; private int mFreeableItems; private DeletionType mDeletionService; public PhotosDeletionPreference(Context context, AttributeSet attrs) { super(context, attrs); setIcon(getIcon(context)); updatePreferenceText(); setOnPreferenceChangeListener(this); } @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); final TextView titleView = (TextView) holder.findViewById(android.R.id.title); if (titleView != null) { titleView.setTextColor(getTintColor(getContext())); } } /** * Get the tint color for the preference's icon and text. * @param context UI context to get the theme. * @return The tint color. */ public int getTintColor(Context context) { TypedValue value = new TypedValue(); context.getTheme().resolveAttribute(android.R.attr.colorAccent, value, true); return context.getColor(value.resourceId); updatePreferenceText(0, 0); } /** * Updates the title and summary of the preference with fresh information. */ public void updatePreferenceText() { public void updatePreferenceText(int items, long bytes) { Context context = getContext(); setTitle(context.getString(R.string.deletion_helper_photos_title, mFreeableItems)); setTitle(context.getString(R.string.deletion_helper_photos_title, items)); setSummary(context.getString(R.string.deletion_helper_photos_summary, Formatter.formatFileSize(context, mFreeableBytes), FAKE_DAYS_TO_KEEP)); } /** * Returns the number of bytes which can be cleared by the deletion service. * @return The number of bytes. */ public long getFreeableBytes() { return mChecked ? mFreeableBytes : 0; } /** * Register a listener to be called back on when the freeable bytes have changed. * @param listener The callback listener. */ public void registerFreeableChangedListener(DeletionType.FreeableChangedListener listener) { mListener = listener; } /** * Registers a deletion service to update the preference's information. * @param deletionService A photo/video deletion service. */ public void registerDeletionService(DeletionType deletionService) { mDeletionService = deletionService; if (mDeletionService != null) { mDeletionService.registerFreeableChangedListener(this); } Formatter.formatFileSize(context, bytes), FAKE_DAYS_TO_KEEP)); } @Override public void onFreeableChanged(int numItems, long freeableBytes) { mFreeableItems = numItems; mFreeableBytes = freeableBytes; updatePreferenceText(); maybeUpdateListener(); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { mChecked = (boolean) newValue; maybeUpdateListener(); return true; public void onFreeableChanged(int items, long bytes) { super.onFreeableChanged(items, bytes); updatePreferenceText(items, bytes); } private Drawable getIcon(Context context) { Loading @@ -134,10 +63,4 @@ public class PhotosDeletionPreference extends CheckBoxPreference implements } return iconDrawable; } private void maybeUpdateListener() { if (mListener != null) { mListener.onFreeableChanged(mFreeableItems, getFreeableBytes()); } } }
src/com/android/settings/deletionhelper/DeletionHelperFragment.java +27 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.util.ArraySet; import android.util.Log; import android.view.View; import android.widget.Button; import com.android.settings.deletionhelper.DownloadsDeletionPreference; import com.android.settings.PhotosDeletionPreference; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.R; Loading Loading @@ -54,10 +55,14 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement private static final String KEY_APPS_GROUP = "apps_group"; private static final String KEY_PHOTOS_VIDEOS_PREFERENCE = "delete_photos"; private static final String KEY_DOWNLOADS_PREFERENCE = "delete_downloads"; private static final int DOWNLOADS_LOADER_ID = 1; private Button mCancel, mFree; private PreferenceGroup mApps; private PhotosDeletionPreference mPhotoPreference; private DownloadsDeletionPreference mDownloadsPreference; private ApplicationsState mState; private Session mSession; Loading @@ -67,6 +72,7 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement private boolean mHasReceivedAppEntries, mHasReceivedBridgeCallback, mFinishedLoading; private DeletionHelperFeatureProvider mProvider; private DeletionType mPhotoVideoDeletion; private DownloadsDeletionType mDownloadsDeletion; @Override public void onCreate(Bundle savedInstanceState) { Loading @@ -80,11 +86,14 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement addPreferencesFromResource(R.xml.deletion_helper_list); mApps = (PreferenceGroup) findPreference(KEY_APPS_GROUP); mPhotoPreference = (PhotosDeletionPreference) findPreference(KEY_PHOTOS_VIDEOS_PREFERENCE); mDownloadsPreference = (DownloadsDeletionPreference) findPreference(KEY_DOWNLOADS_PREFERENCE); mProvider = FeatureFactory.getFactory(app).getDeletionHelperFeatureProvider(); if (mProvider != null) { mPhotoVideoDeletion = mProvider.createPhotoVideoDeletionType(); } mDownloadsDeletion = new DownloadsDeletionType(getActivity()); if (savedInstanceState != null) { mHasReceivedAppEntries = Loading Loading @@ -117,6 +126,9 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement if (mPhotoPreference != null && mPhotoPreference.isChecked()) { mPhotoVideoDeletion.clearFreeableData(); } if (mDownloadsPreference != null && mDownloadsPreference.isChecked()) { mDownloadsDeletion.clearFreeableData(); } ArraySet<String> apps = new ArraySet<>(); for (AppEntry entry : mAppEntries) { Loading Loading @@ -153,6 +165,9 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement mPhotoPreference.registerFreeableChangedListener(this); mPhotoPreference.registerDeletionService(mPhotoVideoDeletion); } mDownloadsPreference.registerFreeableChangedListener(this); mDownloadsPreference.registerDeletionService(mDownloadsDeletion); } @Override Loading @@ -172,6 +187,10 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement if (mPhotoVideoDeletion != null) { mPhotoVideoDeletion.onResume(); } if (mDownloadsDeletion != null) { mDownloadsDeletion.onResume(); getLoaderManager().initLoader(DOWNLOADS_LOADER_ID, new Bundle(), mDownloadsDeletion); } } Loading @@ -193,6 +212,9 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement if (mPhotoVideoDeletion != null) { mPhotoVideoDeletion.onPause(); } if (mDownloadsDeletion != null) { mDownloadsDeletion.onPause(); } } private void rebuild() { Loading @@ -211,7 +233,8 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement for (int i = 0; i < entryCount; i++) { AppEntry entry = apps.get(i); final String packageName = entry.label; AppDeletionPreference preference = (AppDeletionPreference) getCachedPreference(entry.label); AppDeletionPreference preference = (AppDeletionPreference) getCachedPreference(entry.label); if (preference == null) { preference = new AppDeletionPreference(getActivity(), entry, mState); Loading Loading @@ -322,6 +345,9 @@ public class DeletionHelperFragment extends SettingsPreferenceFragment implement if (mPhotoPreference != null) { freeableSpace += mPhotoPreference.getFreeableBytes(); } if (mDownloadsPreference != null) { freeableSpace += mDownloadsPreference.getFreeableBytes(); } return freeableSpace; } } No newline at end of file