UsageBarPreference.java revision 511c8cf103193fb41c915941b1b1d2a442a1ae12
1511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root/*
2511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root * Copyright (C) 2010 The Android Open Source Project
3511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root *
4511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root * Licensed under the Apache License, Version 2.0 (the "License");
5511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root * you may not use this file except in compliance with the License.
6511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root * You may obtain a copy of the License at
7511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root *
8511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root *      http://www.apache.org/licenses/LICENSE-2.0
9511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root *
10511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root * Unless required by applicable law or agreed to in writing, software
11511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root * distributed under the License is distributed on an "AS IS" BASIS,
12511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root * See the License for the specific language governing permissions and
14511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root * limitations under the License.
15511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root */
16511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
17511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootpackage com.android.settings.deviceinfo;
18511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
19511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport com.android.settings.R;
20511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
21511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport android.content.Context;
22511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport android.preference.Preference;
23511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport android.util.AttributeSet;
24511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport android.view.View;
25511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
26511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport java.util.ArrayList;
27511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport java.util.Collection;
28511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
29511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root/**
30511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root * Creates a percentage bar chart inside a preference.
31511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root */
32511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootpublic class UsageBarPreference extends Preference {
33511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    private PercentageBarChart mChart = null;
34511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
35511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    private final Collection<PercentageBarChart.Entry> mEntries = new ArrayList<PercentageBarChart.Entry>();
36511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
37511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public UsageBarPreference(Context context, AttributeSet attrs, int defStyle) {
38511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        super(context, attrs, defStyle);
39511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        setWidgetLayoutResource(R.layout.preference_memoryusage);
40511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
41511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
42511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public UsageBarPreference(Context context) {
43511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        super(context);
44511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        setWidgetLayoutResource(R.layout.preference_memoryusage);
45511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
46511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
47511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public UsageBarPreference(Context context, AttributeSet attrs) {
48511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        super(context, attrs);
49511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        setWidgetLayoutResource(R.layout.preference_memoryusage);
50511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
51511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
52511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public void addEntry(float percentage, int color) {
53511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        mEntries.add(PercentageBarChart.createEntry(percentage, color));
54511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
55511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
56511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    @Override
57511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    protected void onBindView(View view) {
58511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        super.onBindView(view);
59511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
60511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        mChart = (PercentageBarChart) view.findViewById(R.id.percentage_bar_chart);
61511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
62511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        mChart.setEntries(mEntries);
63511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
64511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
65511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public void commit() {
66511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        if (mChart != null) {
67511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root            mChart.invalidate();
68511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        }
69511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
70511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
71511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public void clear() {
72511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        mEntries.clear();
73511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
74511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root}
75