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