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