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; 24c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport android.view.View; 25c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport android.widget.ProgressBar; 26c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport android.widget.TextView; 27c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornimport com.android.settings.R; 28c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn 29c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackbornpublic class ProcessStatsPreference extends Preference { 3004486738342fa5e11a78df836efe34b85bee125aDianne Hackborn private final ProcStatsEntry mEntry; 31c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn private int mProgress; 32c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn private CharSequence mProgressText; 33c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn 3404486738342fa5e11a78df836efe34b85bee125aDianne Hackborn public ProcessStatsPreference(Context context, Drawable icon, ProcStatsEntry entry) { 35c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn super(context); 3604486738342fa5e11a78df836efe34b85bee125aDianne Hackborn mEntry = entry; 37c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn setLayoutResource(R.layout.app_percentage_item); 38c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn setIcon(icon != null ? icon : new ColorDrawable(0)); 39c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn } 40c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn 4104486738342fa5e11a78df836efe34b85bee125aDianne Hackborn public ProcStatsEntry getEntry() { 4204486738342fa5e11a78df836efe34b85bee125aDianne Hackborn return mEntry; 4304486738342fa5e11a78df836efe34b85bee125aDianne Hackborn } 4404486738342fa5e11a78df836efe34b85bee125aDianne Hackborn 45c9e4bd111664705959716629c2535c085e6c7cd6Dianne Hackborn public void setPercent(double percentOfWeight, double percentOfTime) { 46c9e4bd111664705959716629c2535c085e6c7cd6Dianne Hackborn mProgress = (int) Math.ceil(percentOfWeight); 47c9e4bd111664705959716629c2535c085e6c7cd6Dianne Hackborn mProgressText = getContext().getResources().getString( 485635594c38fb319e050054e42109eb736f274accDianne Hackborn R.string.percentage, (int) Math.round(percentOfTime)); 49c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn notifyChanged(); 50c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn } 51c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn 52c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn @Override 53c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn protected void onBindView(View view) { 54c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn super.onBindView(view); 55c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn 56c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn final ProgressBar progress = (ProgressBar) view.findViewById(android.R.id.progress); 57c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn progress.setProgress(mProgress); 58c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn 59c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn final TextView text1 = (TextView) view.findViewById(android.R.id.text1); 60c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn text1.setText(mProgressText); 61c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn } 62c6d658e37d7c0ab2d264fff4850ea20823669558Dianne Hackborn} 63