1c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn/*
2c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn * Copyright (C) 2013 The Android Open Source Project
3c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn *
4c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License");
5c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn * you may not use this file except in compliance with the License.
6c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn * You may obtain a copy of the License at
7c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn *
8c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn *      http://www.apache.org/licenses/LICENSE-2.0
9c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn *
10c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn * Unless required by applicable law or agreed to in writing, software
11c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS,
12c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn * See the License for the specific language governing permissions and
14c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn * limitations under the License.
15c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn */
16c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn
17c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornpackage com.android.settings.applications;
18c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn
19c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport android.content.Context;
202583fc1e069d0a54df46258d360499492d7e86d2Jason Monkimport android.content.pm.PackageManager;
21c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport android.graphics.drawable.ColorDrawable;
222583fc1e069d0a54df46258d360499492d7e86d2Jason Monkimport android.text.TextUtils;
23beb171d2e50f93b5fb78d73b372a4981e13e04ffJason Monkimport android.text.format.Formatter;
242583fc1e069d0a54df46258d360499492d7e86d2Jason Monk
2547d00cf15844d7af6788252763b454abc43acab0Salvador Martinezimport android.util.Log;
262cdafc6be386bb767404e42fc728a1a810aa896aJason Monkimport com.android.settings.AppProgressPreference;
27c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn
282cdafc6be386bb767404e42fc728a1a810aa896aJason Monkpublic class ProcessStatsPreference extends AppProgressPreference {
2947d00cf15844d7af6788252763b454abc43acab0Salvador Martinez    static final String TAG = "ProcessStatsPreference";
302583fc1e069d0a54df46258d360499492d7e86d2Jason Monk
31b94079a704ef9ca144ca94885d655b2befabcf45Dianne Hackborn    private ProcStatsPackageEntry mEntry;
32c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn
330ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio    public ProcessStatsPreference(Context context) {
342cdafc6be386bb767404e42fc728a1a810aa896aJason Monk        super(context, null);
350ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio    }
360ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio
37f4db340daeb50572d7e0ab12f4745affae8b567fJason Monk    public void init(ProcStatsPackageEntry entry, PackageManager pm, double maxMemory,
38beb171d2e50f93b5fb78d73b372a4981e13e04ffJason Monk            double weightToRam, double totalScale, boolean avg) {
390ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio        mEntry = entry;
4047d00cf15844d7af6788252763b454abc43acab0Salvador Martinez        String title = TextUtils.isEmpty(entry.mUiLabel) ? entry.mPackage : entry.mUiLabel;
4147d00cf15844d7af6788252763b454abc43acab0Salvador Martinez        setTitle(title);
4247d00cf15844d7af6788252763b454abc43acab0Salvador Martinez        if (TextUtils.isEmpty(title)) {
4347d00cf15844d7af6788252763b454abc43acab0Salvador Martinez            Log.d(TAG, "PackageEntry contained no package name or uiLabel");
4447d00cf15844d7af6788252763b454abc43acab0Salvador Martinez        }
452583fc1e069d0a54df46258d360499492d7e86d2Jason Monk        if (entry.mUiTargetApp != null) {
462583fc1e069d0a54df46258d360499492d7e86d2Jason Monk            setIcon(entry.mUiTargetApp.loadIcon(pm));
472583fc1e069d0a54df46258d360499492d7e86d2Jason Monk        } else {
4847d00cf15844d7af6788252763b454abc43acab0Salvador Martinez            setIcon(pm.getDefaultActivityIcon());
492583fc1e069d0a54df46258d360499492d7e86d2Jason Monk        }
502583fc1e069d0a54df46258d360499492d7e86d2Jason Monk        boolean statsForeground = entry.mRunWeight > entry.mBgWeight;
51beb171d2e50f93b5fb78d73b372a4981e13e04ffJason Monk        double amount = avg ? (statsForeground ? entry.mRunWeight : entry.mBgWeight) * weightToRam
52beb171d2e50f93b5fb78d73b372a4981e13e04ffJason Monk                : (statsForeground ? entry.mMaxRunMem : entry.mMaxBgMem) * totalScale * 1024;
53beb171d2e50f93b5fb78d73b372a4981e13e04ffJason Monk        setSummary(Formatter.formatShortFileSize(getContext(), (long) amount));
542cdafc6be386bb767404e42fc728a1a810aa896aJason Monk        setProgress((int) (100 * amount / maxMemory));
55c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn    }
56c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn
57b94079a704ef9ca144ca94885d655b2befabcf45Dianne Hackborn    public ProcStatsPackageEntry getEntry() {
5804486738342fa5e11a78df836efe34b85bee125aDianne Hackborn        return mEntry;
5904486738342fa5e11a78df836efe34b85bee125aDianne Hackborn    }
60c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn}
61