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; 20c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport android.graphics.drawable.ColorDrawable; 21c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport android.graphics.drawable.Drawable; 22c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport android.preference.Preference; 23c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport android.text.format.Formatter; 240ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglioimport android.util.AttributeSet; 25c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport android.view.View; 26c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport android.widget.ProgressBar; 27c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport android.widget.TextView; 28c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport com.android.settings.R; 297253df35a09d8d61ececedbb66179171802e42a7Elliott Hughesimport com.android.settings.Utils; 30c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn 31c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornpublic class ProcessStatsPreference extends Preference { 320ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio private ProcStatsEntry mEntry; 33c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn private int mProgress; 34c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn private CharSequence mProgressText; 35c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn 360ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio public ProcessStatsPreference(Context context) { 370ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio this(context, null); 380ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio } 390ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio 400ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio public ProcessStatsPreference(Context context, AttributeSet attrs) { 410ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio this(context, attrs, 0); 420ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio } 430ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio 440ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio public ProcessStatsPreference(Context context, AttributeSet attrs, int defStyleAttr) { 450ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio this(context, attrs, defStyleAttr, 0); 460ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio } 470ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio 480ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio public ProcessStatsPreference(Context context, AttributeSet attrs, int defStyleAttr, 490ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio int defStyleRes) { 500ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio super(context, attrs, defStyleAttr, defStyleRes); 51200cca4c1d849ba4c62674fcfd32c621805b2bd4Fabrice Di Meglio setLayoutResource(R.layout.preference_app_percentage); 520ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio } 530ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio 540ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio public void init(Drawable icon, ProcStatsEntry entry) { 550ec4251d12cdce0dfbc9cb3d9f46e33acf20af3fFabrice Di Meglio mEntry = entry; 56c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn setIcon(icon != null ? icon : new ColorDrawable(0)); 57c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn } 58c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn 5904486738342fa5e11a78df836efe34b85bee125aDianne Hackborn public ProcStatsEntry getEntry() { 6004486738342fa5e11a78df836efe34b85bee125aDianne Hackborn return mEntry; 6104486738342fa5e11a78df836efe34b85bee125aDianne Hackborn } 6204486738342fa5e11a78df836efe34b85bee125aDianne Hackborn 63c9e4bd111664705959716629c2535c085e6c7cd6Dianne Hackborn public void setPercent(double percentOfWeight, double percentOfTime) { 64c9e4bd111664705959716629c2535c085e6c7cd6Dianne Hackborn mProgress = (int) Math.ceil(percentOfWeight); 657253df35a09d8d61ececedbb66179171802e42a7Elliott Hughes mProgressText = Utils.formatPercentage((int) percentOfTime); 66c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn notifyChanged(); 67c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn } 68c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn 69c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn @Override 70c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn protected void onBindView(View view) { 71c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn super.onBindView(view); 72c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn 73c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn final ProgressBar progress = (ProgressBar) view.findViewById(android.R.id.progress); 74c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn progress.setProgress(mProgress); 75c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn 76c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn final TextView text1 = (TextView) view.findViewById(android.R.id.text1); 77c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn text1.setText(mProgressText); 78c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn } 79c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn} 80