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