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