173e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin/* 273e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * Copyright (C) 2009 The Android Open Source Project 373e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * 473e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 573e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * you may not use this file except in compliance with the License. 673e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * You may obtain a copy of the License at 773e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * 873e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * http://www.apache.org/licenses/LICENSE-2.0 973e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * 1073e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * Unless required by applicable law or agreed to in writing, software 1173e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * distributed under the License is distributed on an "AS IS" BASIS, 1273e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1373e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * See the License for the specific language governing permissions and 1473e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * limitations under the License. 1573e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin */ 1673e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin 1773e782de608cbe2ddffd75c055009ff2e208f78bOwen Linpackage com.android.camera; 1873e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin 1973e782de608cbe2ddffd75c055009ff2e208f78bOwen Linimport android.content.Context; 2073e782de608cbe2ddffd75c055009ff2e208f78bOwen Linimport android.util.AttributeSet; 2173e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin 22892781804513066b68b4a2fa6f846e862dac252aOwen Linimport java.util.ArrayList; 23892781804513066b68b4a2fa6f846e862dac252aOwen Lin 2473e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin/** 2573e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * A collection of <code>CameraPreference</code>s. It may contain other 2673e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * <code>PreferenceGroup</code> and form a tree structure. 2773e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin */ 2873e782de608cbe2ddffd75c055009ff2e208f78bOwen Linpublic class PreferenceGroup extends CameraPreference { 2973e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin private ArrayList<CameraPreference> list = 3073e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin new ArrayList<CameraPreference>(); 3173e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin 3273e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin public PreferenceGroup(Context context, AttributeSet attrs) { 3373e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin super(context, attrs); 3473e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin } 3573e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin 3673e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin public void addChild(CameraPreference child) { 3773e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin list.add(child); 3873e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin } 3973e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin 4073e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin public void removePreference(int index) { 4173e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin list.remove(index); 4273e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin } 4373e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin 4473e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin public CameraPreference get(int index) { 4573e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin return list.get(index); 4673e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin } 4773e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin 4873e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin public int size() { 4973e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin return list.size(); 5073e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin } 5173e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin 5252064aa4bacfae605823b99f675649b1786e8c8aOwen Lin @Override 5352064aa4bacfae605823b99f675649b1786e8c8aOwen Lin public void reloadValue() { 5452064aa4bacfae605823b99f675649b1786e8c8aOwen Lin for (CameraPreference pref : list) { 5552064aa4bacfae605823b99f675649b1786e8c8aOwen Lin pref.reloadValue(); 5652064aa4bacfae605823b99f675649b1786e8c8aOwen Lin } 5752064aa4bacfae605823b99f675649b1786e8c8aOwen Lin } 5852064aa4bacfae605823b99f675649b1786e8c8aOwen Lin 5973e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin /** 6073e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * Finds the preference with the given key recursively. Returns 6173e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin * <code>null</code> if cannot find. 6273e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin */ 6373e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin public ListPreference findPreference(String key) { 6473e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin // Find a leaf preference with the given key. Currently, the base 6573e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin // type of all "leaf" preference is "ListPreference". If we add some 6673e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin // other types later, we need to change the code. 6773e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin for (CameraPreference pref : list) { 6873e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin if (pref instanceof ListPreference) { 6973e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin ListPreference listPref = (ListPreference) pref; 7073e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin if(listPref.getKey().equals(key)) return listPref; 7173e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin } else if(pref instanceof PreferenceGroup) { 7273e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin ListPreference listPref = 7373e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin ((PreferenceGroup) pref).findPreference(key); 7473e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin if (listPref != null) return listPref; 7573e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin } 7673e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin } 7773e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin return null; 7873e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin } 7973e782de608cbe2ddffd75c055009ff2e208f78bOwen Lin} 80