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