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 android.content.Context;
20511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport android.preference.Preference;
21511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport android.util.AttributeSet;
22511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport android.view.View;
23511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
24e6c5003278184c202833209164ddf1ae8c083f12Jeff Sharkeyimport com.android.settings.R;
25e6c5003278184c202833209164ddf1ae8c083f12Jeff Sharkeyimport com.google.android.collect.Lists;
26e6c5003278184c202833209164ddf1ae8c083f12Jeff Sharkey
2704df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkeyimport java.util.Collections;
2804df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkeyimport java.util.List;
29511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
30511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root/**
31511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root * Creates a percentage bar chart inside a preference.
32511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root */
33511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootpublic class UsageBarPreference extends Preference {
34511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    private PercentageBarChart mChart = null;
35511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
3604df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkey    private final List<PercentageBarChart.Entry> mEntries = Lists.newArrayList();
37511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
38511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public UsageBarPreference(Context context) {
391e0e0ed6dfa608c168b38cbf73ee8ad38ac563c0Fabrice Di Meglio        this(context, null);
40511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
41511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
42511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public UsageBarPreference(Context context, AttributeSet attrs) {
431e0e0ed6dfa608c168b38cbf73ee8ad38ac563c0Fabrice Di Meglio        this(context, attrs, 0);
441e0e0ed6dfa608c168b38cbf73ee8ad38ac563c0Fabrice Di Meglio    }
451e0e0ed6dfa608c168b38cbf73ee8ad38ac563c0Fabrice Di Meglio
461e0e0ed6dfa608c168b38cbf73ee8ad38ac563c0Fabrice Di Meglio    public UsageBarPreference(Context context, AttributeSet attrs, int defStyle) {
471e0e0ed6dfa608c168b38cbf73ee8ad38ac563c0Fabrice Di Meglio        this(context, attrs, defStyle, 0);
481e0e0ed6dfa608c168b38cbf73ee8ad38ac563c0Fabrice Di Meglio    }
491e0e0ed6dfa608c168b38cbf73ee8ad38ac563c0Fabrice Di Meglio
501e0e0ed6dfa608c168b38cbf73ee8ad38ac563c0Fabrice Di Meglio    public UsageBarPreference(Context context, AttributeSet attrs, int defStyleAttr,
511e0e0ed6dfa608c168b38cbf73ee8ad38ac563c0Fabrice Di Meglio            int defStyleRes) {
521e0e0ed6dfa608c168b38cbf73ee8ad38ac563c0Fabrice Di Meglio        super(context, attrs, defStyleAttr, defStyleRes);
53783be0a24f328d7e781b5765b7688c55fb24c89cGilles Debunne        setLayoutResource(R.layout.preference_memoryusage);
54511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
55511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
5604df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkey    public void addEntry(int order, float percentage, int color) {
5704df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkey        mEntries.add(PercentageBarChart.createEntry(order, percentage, color));
5804df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkey        Collections.sort(mEntries);
59511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
60511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
61511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    @Override
62511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    protected void onBindView(View view) {
63511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        super.onBindView(view);
64511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
65511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        mChart = (PercentageBarChart) view.findViewById(R.id.percentage_bar_chart);
66511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        mChart.setEntries(mEntries);
67511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
68511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
69511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public void commit() {
70511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        if (mChart != null) {
71511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root            mChart.invalidate();
72511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        }
73511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
74511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
75511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public void clear() {
76511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        mEntries.clear();
77511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
78511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root}
79