1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/* 2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License. 6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at 7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and 14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License. 15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings; 18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 19afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Context; 209416136b4d27d3de50422f0634424594f28edc39Gilles Debunneimport android.preference.Preference; 21afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.util.AttributeSet; 22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.View; 23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 24d36699282cbd0a6897f425106081d3f2c0db55d4Daisuke Miyakawapublic class ProgressCategory extends ProgressCategoryBase { 25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 269e143f5e9d836d2d3dd0b2f59f7d14327ade0193Jeff Brown private final int mEmptyTextRes; 27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private boolean mProgress = false; 289416136b4d27d3de50422f0634424594f28edc39Gilles Debunne private Preference mNoDeviceFoundPreference; 299a4543e1de4251463cf14150260baaf8753bd3c0Jake Hamby private boolean mNoDeviceFoundAdded; 30d4cebee1e4b68e8b6c1e2ad8b82da6e2414f2e5bthigobr 319e143f5e9d836d2d3dd0b2f59f7d14327ade0193Jeff Brown public ProgressCategory(Context context, AttributeSet attrs, 329e143f5e9d836d2d3dd0b2f59f7d14327ade0193Jeff Brown int emptyTextRes) { 33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super(context, attrs); 34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setLayoutResource(R.layout.preference_progress_category); 359e143f5e9d836d2d3dd0b2f59f7d14327ade0193Jeff Brown mEmptyTextRes = emptyTextRes; 36afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 379a4543e1de4251463cf14150260baaf8753bd3c0Jake Hamby 38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onBindView(View view) { 40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onBindView(view); 41d36699282cbd0a6897f425106081d3f2c0db55d4Daisuke Miyakawa final View progressBar = view.findViewById(R.id.scanning_progress); 42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 439a4543e1de4251463cf14150260baaf8753bd3c0Jake Hamby boolean noDeviceFound = (getPreferenceCount() == 0 || 449a4543e1de4251463cf14150260baaf8753bd3c0Jake Hamby (getPreferenceCount() == 1 && getPreference(0) == mNoDeviceFoundPreference)); 45648f4f66887e3bb0a289ff92f19c0c86e898c9a9Gilles Debunne progressBar.setVisibility(mProgress ? View.VISIBLE : View.GONE); 469416136b4d27d3de50422f0634424594f28edc39Gilles Debunne 47de53b46b165ca65a464ecc6f062da55e11050389Jake Hamby if (mProgress || !noDeviceFound) { 489a4543e1de4251463cf14150260baaf8753bd3c0Jake Hamby if (mNoDeviceFoundAdded) { 499416136b4d27d3de50422f0634424594f28edc39Gilles Debunne removePreference(mNoDeviceFoundPreference); 509a4543e1de4251463cf14150260baaf8753bd3c0Jake Hamby mNoDeviceFoundAdded = false; 519416136b4d27d3de50422f0634424594f28edc39Gilles Debunne } 529416136b4d27d3de50422f0634424594f28edc39Gilles Debunne } else { 53de53b46b165ca65a464ecc6f062da55e11050389Jake Hamby if (!mNoDeviceFoundAdded) { 549416136b4d27d3de50422f0634424594f28edc39Gilles Debunne if (mNoDeviceFoundPreference == null) { 559416136b4d27d3de50422f0634424594f28edc39Gilles Debunne mNoDeviceFoundPreference = new Preference(getContext()); 569a4543e1de4251463cf14150260baaf8753bd3c0Jake Hamby mNoDeviceFoundPreference.setLayoutResource(R.layout.preference_empty_list); 579e143f5e9d836d2d3dd0b2f59f7d14327ade0193Jeff Brown mNoDeviceFoundPreference.setTitle(mEmptyTextRes); 589a4543e1de4251463cf14150260baaf8753bd3c0Jake Hamby mNoDeviceFoundPreference.setSelectable(false); 599416136b4d27d3de50422f0634424594f28edc39Gilles Debunne } 609416136b4d27d3de50422f0634424594f28edc39Gilles Debunne addPreference(mNoDeviceFoundPreference); 619a4543e1de4251463cf14150260baaf8753bd3c0Jake Hamby mNoDeviceFoundAdded = true; 629416136b4d27d3de50422f0634424594f28edc39Gilles Debunne } 639416136b4d27d3de50422f0634424594f28edc39Gilles Debunne } 64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 65d36699282cbd0a6897f425106081d3f2c0db55d4Daisuke Miyakawa 66d36699282cbd0a6897f425106081d3f2c0db55d4Daisuke Miyakawa @Override 67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void setProgress(boolean progressOn) { 68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mProgress = progressOn; 69afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project notifyChanged(); 70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 72