14d48e820ac6d77dea33df9b5c432100345266972Tony Mantler/* 24d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * Copyright (C) 2015 The Android Open Source Project 34d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * 44d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 54d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * you may not use this file except in compliance with the License. 64d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * You may obtain a copy of the License at 74d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * 84d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * http://www.apache.org/licenses/LICENSE-2.0 94d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * 104d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * Unless required by applicable law or agreed to in writing, software 114d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 124d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * See the License for the specific language governing permissions and 144d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * limitations under the License 154d48e820ac6d77dea33df9b5c432100345266972Tony Mantler */ 164d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 174d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerpackage com.android.tv.settings.device.apps; 184d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 194d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.content.Context; 204d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.os.Bundle; 214d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.support.annotation.NonNull; 224d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.support.v17.leanback.widget.GuidanceStylist; 234d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.text.format.Formatter; 244d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 254d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport com.android.settingslib.applications.ApplicationsState; 264d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport com.android.tv.settings.R; 274d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 284d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerpublic class ClearCachePreference extends AppActionPreference { 294d48e820ac6d77dea33df9b5c432100345266972Tony Mantler private boolean mClearingCache; 304d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 314d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public ClearCachePreference(Context context, ApplicationsState.AppEntry entry) { 324d48e820ac6d77dea33df9b5c432100345266972Tony Mantler super(context, entry); 334d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 344d48e820ac6d77dea33df9b5c432100345266972Tony Mantler refresh(); 354d48e820ac6d77dea33df9b5c432100345266972Tony Mantler ConfirmationFragment.prepareArgs(getExtras(), mEntry.info.packageName); 364d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 374d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 384d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public void refresh() { 394d48e820ac6d77dea33df9b5c432100345266972Tony Mantler setTitle(R.string.device_apps_app_management_clear_cache); 404d48e820ac6d77dea33df9b5c432100345266972Tony Mantler final Context context = getContext(); 414d48e820ac6d77dea33df9b5c432100345266972Tony Mantler setSummary(mClearingCache ? context.getString(R.string.computing_size) 424d48e820ac6d77dea33df9b5c432100345266972Tony Mantler : Formatter.formatFileSize(context, mEntry.cacheSize + mEntry.externalCacheSize)); 43d710de4d973671d830d5633ca0c9ae4bcf87a186Leif Hendrik Wilden setEnabled(!mClearingCache && mEntry.cacheSize > 0); 444d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 454d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 464d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public void setClearingCache(boolean clearingCache) { 474d48e820ac6d77dea33df9b5c432100345266972Tony Mantler mClearingCache = clearingCache; 484d48e820ac6d77dea33df9b5c432100345266972Tony Mantler refresh(); 494d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 504d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 514d48e820ac6d77dea33df9b5c432100345266972Tony Mantler @Override 524d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public String getFragment() { 534d48e820ac6d77dea33df9b5c432100345266972Tony Mantler return ConfirmationFragment.class.getName(); 544d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 554d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 564d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public static class ConfirmationFragment extends AppActionPreference.ConfirmationFragment { 574d48e820ac6d77dea33df9b5c432100345266972Tony Mantler private static final String ARG_PACKAGE_NAME = "packageName"; 584d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 594d48e820ac6d77dea33df9b5c432100345266972Tony Mantler private static void prepareArgs(@NonNull Bundle args, String packageName) { 604d48e820ac6d77dea33df9b5c432100345266972Tony Mantler args.putString(ARG_PACKAGE_NAME, packageName); 614d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 624d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 634d48e820ac6d77dea33df9b5c432100345266972Tony Mantler @NonNull 644d48e820ac6d77dea33df9b5c432100345266972Tony Mantler @Override 654d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) { 664d48e820ac6d77dea33df9b5c432100345266972Tony Mantler final AppManagementFragment fragment = (AppManagementFragment) getTargetFragment(); 674d48e820ac6d77dea33df9b5c432100345266972Tony Mantler return new GuidanceStylist.Guidance( 684d48e820ac6d77dea33df9b5c432100345266972Tony Mantler getString(R.string.device_apps_app_management_clear_cache), 694d48e820ac6d77dea33df9b5c432100345266972Tony Mantler null, 704d48e820ac6d77dea33df9b5c432100345266972Tony Mantler fragment.getAppName(), 714d48e820ac6d77dea33df9b5c432100345266972Tony Mantler fragment.getAppIcon()); 724d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 734d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 744d48e820ac6d77dea33df9b5c432100345266972Tony Mantler @Override 754d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public void onOk() { 764d48e820ac6d77dea33df9b5c432100345266972Tony Mantler final AppManagementFragment fragment = 774d48e820ac6d77dea33df9b5c432100345266972Tony Mantler (AppManagementFragment) getTargetFragment(); 784d48e820ac6d77dea33df9b5c432100345266972Tony Mantler fragment.clearCache(); 794d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 804d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 814d48e820ac6d77dea33df9b5c432100345266972Tony Mantler} 82