blob: 804d48b30b7e8bdaf53d90a1426934dc0e3a2b10 [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;
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080020import android.util.AttributeSet;
21import android.view.View;
22
Fan Zhangc7162cd2018-06-18 15:21:41 -070023import androidx.preference.Preference;
24import androidx.preference.PreferenceViewHolder;
25
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070026/**
27 * A category with a progress spinner
28 */
Daisuke Miyakawad3669922010-08-27 10:04:08 -070029public class ProgressCategory extends ProgressCategoryBase {
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080030
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070031 private int mEmptyTextRes;
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080032 private boolean mProgress = false;
Gilles Debunne94161362011-06-30 15:44:05 -070033 private Preference mNoDeviceFoundPreference;
Jake Hamby9a4543e2011-08-30 15:24:35 -070034 private boolean mNoDeviceFoundAdded;
thigobrd4cebee2010-07-21 13:10:04 -030035
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070036 public ProgressCategory(Context context) {
Fan Zhangec407ff2016-12-19 11:14:59 -080037 super(context);
38 setLayoutResource(R.layout.preference_progress_category);
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070039 }
40
41 public ProgressCategory(Context context, AttributeSet attrs) {
Fan Zhangec407ff2016-12-19 11:14:59 -080042 super(context, attrs);
43 setLayoutResource(R.layout.preference_progress_category);
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070044 }
45
Jeff Brown9e143f52012-09-19 20:46:07 -070046 public ProgressCategory(Context context, AttributeSet attrs,
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070047 int defStyleAttr) {
Fan Zhangec407ff2016-12-19 11:14:59 -080048 super(context, attrs, defStyleAttr);
49 setLayoutResource(R.layout.preference_progress_category);
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070050 }
51
52 public ProgressCategory(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
53 super(context, attrs, defStyleAttr, defStyleRes);
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080054 setLayoutResource(R.layout.preference_progress_category);
Fabrice Di Meglioab9d6982014-06-17 13:56:13 -070055 }
56
57 public void setEmptyTextRes(int emptyTextRes) {
Jeff Brown9e143f52012-09-19 20:46:07 -070058 mEmptyTextRes = emptyTextRes;
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080059 }
Jake Hamby9a4543e2011-08-30 15:24:35 -070060
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080061 @Override
Jason Monk39b46742015-09-10 15:52:51 -040062 public void onBindViewHolder(PreferenceViewHolder view) {
63 super.onBindViewHolder(view);
Daisuke Miyakawad3669922010-08-27 10:04:08 -070064 final View progressBar = view.findViewById(R.id.scanning_progress);
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080065
Jake Hamby9a4543e2011-08-30 15:24:35 -070066 boolean noDeviceFound = (getPreferenceCount() == 0 ||
67 (getPreferenceCount() == 1 && getPreference(0) == mNoDeviceFoundPreference));
Gilles Debunne648f4f62011-11-21 19:46:39 +010068 progressBar.setVisibility(mProgress ? View.VISIBLE : View.GONE);
Gilles Debunne94161362011-06-30 15:44:05 -070069
Jake Hambyde53b462011-09-06 15:38:23 -070070 if (mProgress || !noDeviceFound) {
Jake Hamby9a4543e2011-08-30 15:24:35 -070071 if (mNoDeviceFoundAdded) {
Gilles Debunne94161362011-06-30 15:44:05 -070072 removePreference(mNoDeviceFoundPreference);
Jake Hamby9a4543e2011-08-30 15:24:35 -070073 mNoDeviceFoundAdded = false;
Gilles Debunne94161362011-06-30 15:44:05 -070074 }
75 } else {
Jake Hambyde53b462011-09-06 15:38:23 -070076 if (!mNoDeviceFoundAdded) {
Gilles Debunne94161362011-06-30 15:44:05 -070077 if (mNoDeviceFoundPreference == null) {
Fan Zhangec407ff2016-12-19 11:14:59 -080078 mNoDeviceFoundPreference = new Preference(getContext());
Jake Hamby9a4543e2011-08-30 15:24:35 -070079 mNoDeviceFoundPreference.setLayoutResource(R.layout.preference_empty_list);
Jeff Brown9e143f52012-09-19 20:46:07 -070080 mNoDeviceFoundPreference.setTitle(mEmptyTextRes);
Jake Hamby9a4543e2011-08-30 15:24:35 -070081 mNoDeviceFoundPreference.setSelectable(false);
Gilles Debunne94161362011-06-30 15:44:05 -070082 }
83 addPreference(mNoDeviceFoundPreference);
Jake Hamby9a4543e2011-08-30 15:24:35 -070084 mNoDeviceFoundAdded = true;
Gilles Debunne94161362011-06-30 15:44:05 -070085 }
86 }
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080087 }
Daisuke Miyakawad3669922010-08-27 10:04:08 -070088
89 @Override
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080090 public void setProgress(boolean progressOn) {
91 mProgress = progressOn;
92 notifyChanged();
93 }
94}