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;
2004df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkeyimport com.google.common.collect.Lists;
21511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
22511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport android.content.Context;
23511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport android.preference.Preference;
24511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport android.util.AttributeSet;
25511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport android.view.View;
26511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
27511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport java.util.ArrayList;
28511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootimport java.util.Collection;
2904df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkeyimport java.util.Collections;
3004df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkeyimport java.util.List;
31511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
32511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root/**
33511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root * Creates a percentage bar chart inside a preference.
34511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root */
35511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Rootpublic class UsageBarPreference extends Preference {
36511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    private PercentageBarChart mChart = null;
37511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
3804df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkey    private final List<PercentageBarChart.Entry> mEntries = Lists.newArrayList();
39511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
40511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public UsageBarPreference(Context context, AttributeSet attrs, int defStyle) {
41511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        super(context, attrs, defStyle);
42783be0a24f328d7e781b5765b7688c55fb24c89cGilles Debunne        setLayoutResource(R.layout.preference_memoryusage);
43511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
44511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
45511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public UsageBarPreference(Context context) {
46511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        super(context);
47783be0a24f328d7e781b5765b7688c55fb24c89cGilles Debunne        setLayoutResource(R.layout.preference_memoryusage);
48511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
49511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
50511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public UsageBarPreference(Context context, AttributeSet attrs) {
51511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        super(context, attrs);
52783be0a24f328d7e781b5765b7688c55fb24c89cGilles Debunne        setLayoutResource(R.layout.preference_memoryusage);
53511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
54511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
5504df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkey    public void addEntry(int order, float percentage, int color) {
5604df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkey        mEntries.add(PercentageBarChart.createEntry(order, percentage, color));
5704df8b77a40c06488a954a22cc5be638179b7747Jeff Sharkey        Collections.sort(mEntries);
58511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
59511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
60511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    @Override
61511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    protected void onBindView(View view) {
62511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        super.onBindView(view);
63511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
64511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        mChart = (PercentageBarChart) view.findViewById(R.id.percentage_bar_chart);
65511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        mChart.setEntries(mEntries);
66511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
67511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
68511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public void commit() {
69511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        if (mChart != null) {
70511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root            mChart.invalidate();
71511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        }
72511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
73511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root
74511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    public void clear() {
75511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root        mEntries.clear();
76511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root    }
77511c8cf103193fb41c915941b1b1d2a442a1ae12Kenny Root}
78