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)); 434d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 444d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 454d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public void setClearingCache(boolean clearingCache) { 464d48e820ac6d77dea33df9b5c432100345266972Tony Mantler mClearingCache = clearingCache; 474d48e820ac6d77dea33df9b5c432100345266972Tony Mantler refresh(); 484d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 494d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 504d48e820ac6d77dea33df9b5c432100345266972Tony Mantler @Override 514d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public String getFragment() { 524d48e820ac6d77dea33df9b5c432100345266972Tony Mantler return ConfirmationFragment.class.getName(); 534d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 544d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 554d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public static class ConfirmationFragment extends AppActionPreference.ConfirmationFragment { 564d48e820ac6d77dea33df9b5c432100345266972Tony Mantler private static final String ARG_PACKAGE_NAME = "packageName"; 574d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 584d48e820ac6d77dea33df9b5c432100345266972Tony Mantler private static void prepareArgs(@NonNull Bundle args, String packageName) { 594d48e820ac6d77dea33df9b5c432100345266972Tony Mantler args.putString(ARG_PACKAGE_NAME, packageName); 604d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 614d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 624d48e820ac6d77dea33df9b5c432100345266972Tony Mantler @NonNull 634d48e820ac6d77dea33df9b5c432100345266972Tony Mantler @Override 644d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) { 654d48e820ac6d77dea33df9b5c432100345266972Tony Mantler final AppManagementFragment fragment = (AppManagementFragment) getTargetFragment(); 664d48e820ac6d77dea33df9b5c432100345266972Tony Mantler return new GuidanceStylist.Guidance( 674d48e820ac6d77dea33df9b5c432100345266972Tony Mantler getString(R.string.device_apps_app_management_clear_cache), 684d48e820ac6d77dea33df9b5c432100345266972Tony Mantler null, 694d48e820ac6d77dea33df9b5c432100345266972Tony Mantler fragment.getAppName(), 704d48e820ac6d77dea33df9b5c432100345266972Tony Mantler fragment.getAppIcon()); 714d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 724d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 734d48e820ac6d77dea33df9b5c432100345266972Tony Mantler @Override 744d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public void onOk() { 754d48e820ac6d77dea33df9b5c432100345266972Tony Mantler final AppManagementFragment fragment = 764d48e820ac6d77dea33df9b5c432100345266972Tony Mantler (AppManagementFragment) getTargetFragment(); 774d48e820ac6d77dea33df9b5c432100345266972Tony Mantler fragment.clearCache(); 784d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 794d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 804d48e820ac6d77dea33df9b5c432100345266972Tony Mantler} 81