am 9a4543e1: Fix unresponsive UI during scan and display of "No Bluetooth devices"

* commit '9a4543e1de4251463cf14150260baaf8753bd3c0':
  Fix unresponsive UI during scan and display of "No Bluetooth devices"
This commit is contained in:
Jake Hamby
2011-08-31 18:06:01 -07:00
committed by Android Git Automerger
3 changed files with 42 additions and 6 deletions

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2011 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="48dip"
android:background="@android:color/transparent">
<TextView
android:id="@+android:id/title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@*android:dimen/preference_fragment_padding_side"
android:gravity="center" />
</LinearLayout>

View File

@@ -26,12 +26,13 @@ public class ProgressCategory extends ProgressCategoryBase {
private boolean mProgress = false; private boolean mProgress = false;
private Preference mNoDeviceFoundPreference; private Preference mNoDeviceFoundPreference;
private boolean mNoDeviceFoundAdded;
public ProgressCategory(Context context, AttributeSet attrs) { public ProgressCategory(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
setLayoutResource(R.layout.preference_progress_category); setLayoutResource(R.layout.preference_progress_category);
} }
@Override @Override
public void onBindView(View view) { public void onBindView(View view) {
super.onBindView(view); super.onBindView(view);
@@ -39,21 +40,26 @@ public class ProgressCategory extends ProgressCategoryBase {
final View progressBar = view.findViewById(R.id.scanning_progress); final View progressBar = view.findViewById(R.id.scanning_progress);
textView.setText(mProgress ? R.string.progress_scanning : R.string.progress_tap_to_pair); textView.setText(mProgress ? R.string.progress_scanning : R.string.progress_tap_to_pair);
boolean noDeviceFound = getPreferenceCount() == 0; boolean noDeviceFound = (getPreferenceCount() == 0 ||
(getPreferenceCount() == 1 && getPreference(0) == mNoDeviceFoundPreference));
textView.setVisibility(noDeviceFound ? View.INVISIBLE : View.VISIBLE); textView.setVisibility(noDeviceFound ? View.INVISIBLE : View.VISIBLE);
progressBar.setVisibility(mProgress ? View.VISIBLE : View.INVISIBLE); progressBar.setVisibility(mProgress ? View.VISIBLE : View.INVISIBLE);
if (mProgress) { if (mProgress) {
if (mNoDeviceFoundPreference != null) { if (mNoDeviceFoundAdded) {
removePreference(mNoDeviceFoundPreference); removePreference(mNoDeviceFoundPreference);
mNoDeviceFoundAdded = false;
} }
} else { } else {
if (noDeviceFound) { if (noDeviceFound && !mNoDeviceFoundAdded) {
if (mNoDeviceFoundPreference == null) { if (mNoDeviceFoundPreference == null) {
mNoDeviceFoundPreference = new Preference(getContext()); mNoDeviceFoundPreference = new Preference(getContext());
mNoDeviceFoundPreference.setSummary(R.string.bluetooth_no_devices_found); mNoDeviceFoundPreference.setLayoutResource(R.layout.preference_empty_list);
mNoDeviceFoundPreference.setTitle(R.string.bluetooth_no_devices_found);
mNoDeviceFoundPreference.setSelectable(false);
} }
addPreference(mNoDeviceFoundPreference); addPreference(mNoDeviceFoundPreference);
mNoDeviceFoundAdded = true;
} }
} }
} }

View File

@@ -99,8 +99,8 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
@Override @Override
public void onActivityCreated(Bundle savedInstanceState) { public void onActivityCreated(Bundle savedInstanceState) {
mActivityStarted = true;
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
mActivityStarted = (savedInstanceState == null); // don't auto start scan after rotation
mEmptyView = (TextView) getView().findViewById(android.R.id.empty); mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
getListView().setEmptyView(mEmptyView); getListView().setEmptyView(mEmptyView);