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