blob: dd19de8882088b24537c41d3ef5302c533903076 [file] [log] [blame]
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -08001/*
2 * Copyright (C) 2008 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.settings;
18
19import android.content.Context;
Jason Monk39b46742015-09-10 15:52:51 -040020import android.support.v7.preference.Preference;
21import android.support.v7.preference.PreferenceViewHolder;
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080022import android.util.AttributeSet;
23import android.view.View;
24
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070025/**
26 * A category with a progress spinner
27 */
Daisuke Miyakawad3669922010-08-27 10:04:08 -070028public class ProgressCategory extends ProgressCategoryBase {
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080029
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070030 private int mEmptyTextRes;
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080031 private boolean mProgress = false;
Gilles Debunne94161362011-06-30 15:44:05 -070032 private Preference mNoDeviceFoundPreference;
Jake Hamby9a4543e2011-08-30 15:24:35 -070033 private boolean mNoDeviceFoundAdded;
thigobrd4cebee2010-07-21 13:10:04 -030034
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070035 public ProgressCategory(Context context) {
Fan Zhangec407ff2016-12-19 11:14:59 -080036 super(context);
37 setLayoutResource(R.layout.preference_progress_category);
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070038 }
39
40 public ProgressCategory(Context context, AttributeSet attrs) {
Fan Zhangec407ff2016-12-19 11:14:59 -080041 super(context, attrs);
42 setLayoutResource(R.layout.preference_progress_category);
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070043 }
44
Jeff Brown9e143f52012-09-19 20:46:07 -070045 public ProgressCategory(Context context, AttributeSet attrs,
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070046 int defStyleAttr) {
Fan Zhangec407ff2016-12-19 11:14:59 -080047 super(context, attrs, defStyleAttr);
48 setLayoutResource(R.layout.preference_progress_category);
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070049 }
50
51 public ProgressCategory(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
52 super(context, attrs, defStyleAttr, defStyleRes);
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080053 setLayoutResource(R.layout.preference_progress_category);
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070054 }
55
56 public void setEmptyTextRes(int emptyTextRes) {
Jeff Brown9e143f52012-09-19 20:46:07 -070057 mEmptyTextRes = emptyTextRes;
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080058 }
Jake Hamby9a4543e2011-08-30 15:24:35 -070059
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080060 @Override
Jason Monk39b46742015-09-10 15:52:51 -040061 public void onBindViewHolder(PreferenceViewHolder view) {
62 super.onBindViewHolder(view);
Daisuke Miyakawad3669922010-08-27 10:04:08 -070063 final View progressBar = view.findViewById(R.id.scanning_progress);
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080064
Jake Hamby9a4543e2011-08-30 15:24:35 -070065 boolean noDeviceFound = (getPreferenceCount() == 0 ||
66 (getPreferenceCount() == 1 && getPreference(0) == mNoDeviceFoundPreference));
Gilles Debunne648f4f62011-11-21 19:46:39 +010067 progressBar.setVisibility(mProgress ? View.VISIBLE : View.GONE);
Gilles Debunne94161362011-06-30 15:44:05 -070068
Jake Hambyde53b462011-09-06 15:38:23 -070069 if (mProgress || !noDeviceFound) {
Jake Hamby9a4543e2011-08-30 15:24:35 -070070 if (mNoDeviceFoundAdded) {
Gilles Debunne94161362011-06-30 15:44:05 -070071 removePreference(mNoDeviceFoundPreference);
Jake Hamby9a4543e2011-08-30 15:24:35 -070072 mNoDeviceFoundAdded = false;
Gilles Debunne94161362011-06-30 15:44:05 -070073 }
74 } else {
Jake Hambyde53b462011-09-06 15:38:23 -070075 if (!mNoDeviceFoundAdded) {
Gilles Debunne94161362011-06-30 15:44:05 -070076 if (mNoDeviceFoundPreference == null) {
Fan Zhangec407ff2016-12-19 11:14:59 -080077 mNoDeviceFoundPreference = new Preference(getContext());
Jake Hamby9a4543e2011-08-30 15:24:35 -070078 mNoDeviceFoundPreference.setLayoutResource(R.layout.preference_empty_list);
Jeff Brown9e143f52012-09-19 20:46:07 -070079 mNoDeviceFoundPreference.setTitle(mEmptyTextRes);
Jake Hamby9a4543e2011-08-30 15:24:35 -070080 mNoDeviceFoundPreference.setSelectable(false);
Gilles Debunne94161362011-06-30 15:44:05 -070081 }
82 addPreference(mNoDeviceFoundPreference);
Jake Hamby9a4543e2011-08-30 15:24:35 -070083 mNoDeviceFoundAdded = true;
Gilles Debunne94161362011-06-30 15:44:05 -070084 }
85 }
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080086 }
Daisuke Miyakawad3669922010-08-27 10:04:08 -070087
88 @Override
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080089 public void setProgress(boolean progressOn) {
90 mProgress = progressOn;
91 notifyChanged();
92 }
93}