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