OSDN Git Service

Fixed layout for "Available Devices" in Bluetooth
[android-x86/packages-apps-Settings.git] / src / com / android / settings / ProgressCategory.java
index bedcc98..c1b25d8 100644 (file)
 package com.android.settings;
 
 import android.content.Context;
+import android.preference.Preference;
 import android.util.AttributeSet;
 import android.view.View;
+import android.widget.TextView;
 
 public class ProgressCategory extends ProgressCategoryBase {
 
     private boolean mProgress = false;
+    private Preference mNoDeviceFoundPreference;
+    private boolean mNoDeviceFoundAdded;
 
     public ProgressCategory(Context context, AttributeSet attrs) {
         super(context, attrs);
         setLayoutResource(R.layout.preference_progress_category);
     }
-    
+
     @Override
     public void onBindView(View view) {
         super.onBindView(view);
-        final View textView = view.findViewById(R.id.scanning_text);
+        final TextView scanning = (TextView) view.findViewById(R.id.scanning_text);
         final View progressBar = view.findViewById(R.id.scanning_progress);
 
-        final int visibility = mProgress ? View.VISIBLE : View.INVISIBLE;
-        textView.setVisibility(visibility);
-        progressBar.setVisibility(visibility);
+        scanning.setText(mProgress ? R.string.progress_scanning : R.string.progress_tap_to_pair);
+        boolean noDeviceFound = (getPreferenceCount() == 0 ||
+                (getPreferenceCount() == 1 && getPreference(0) == mNoDeviceFoundPreference));
+        scanning.setVisibility(noDeviceFound ? View.GONE : View.VISIBLE);
+        progressBar.setVisibility(mProgress ? View.VISIBLE : View.GONE);
+
+        if (mProgress || !noDeviceFound) {
+            if (mNoDeviceFoundAdded) {
+                removePreference(mNoDeviceFoundPreference);
+                mNoDeviceFoundAdded = false;
+            }
+        } else {
+            if (!mNoDeviceFoundAdded) {
+                if (mNoDeviceFoundPreference == null) {
+                    mNoDeviceFoundPreference = new Preference(getContext());
+                    mNoDeviceFoundPreference.setLayoutResource(R.layout.preference_empty_list);
+                    mNoDeviceFoundPreference.setTitle(R.string.bluetooth_no_devices_found);
+                    mNoDeviceFoundPreference.setSelectable(false);
+                }
+                addPreference(mNoDeviceFoundPreference);
+                mNoDeviceFoundAdded = true;
+            }
+        }
     }
 
     @Override
@@ -46,4 +70,3 @@ public class ProgressCategory extends ProgressCategoryBase {
         notifyChanged();
     }
 }
-