Merge "[WifiSetup] Progress when wifi scanning" into lmp-dev
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 1503f22..57f4690 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -321,8 +321,7 @@
 
         prepareWifiAssistantCard();
 
-        mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
-        getListView().setEmptyView(mEmptyView);
+        mEmptyView = initEmptyView();
         registerForContextMenu(getListView());
         setHasOptionsMenu(true);
     }
@@ -773,6 +772,12 @@
         editor.apply();
     }
 
+    protected TextView initEmptyView() {
+        TextView emptyView = (TextView) getActivity().findViewById(android.R.id.empty);
+        getListView().setEmptyView(emptyView);
+        return emptyView;
+    }
+
     private void setOffMessage() {
         if (mEmptyView != null) {
             mEmptyView.setCompoundDrawablesWithIntrinsicBounds(0,
diff --git a/src/com/android/settings/wifi/WifiSettingsForSetupWizard.java b/src/com/android/settings/wifi/WifiSettingsForSetupWizard.java
index b52aaa7..c4a5c96 100644
--- a/src/com/android/settings/wifi/WifiSettingsForSetupWizard.java
+++ b/src/com/android/settings/wifi/WifiSettingsForSetupWizard.java
@@ -18,18 +18,19 @@
 
 import android.content.Intent;
 import android.content.res.TypedArray;
+import android.database.DataSetObserver;
 import android.net.wifi.WifiConfiguration;
 import android.os.Bundle;
+import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
-import android.widget.ImageButton;
+import android.widget.AbsListView.LayoutParams;
+import android.widget.ListAdapter;
 import android.widget.ListView;
-import android.widget.PopupMenu;
-import android.widget.PopupMenu.OnMenuItemClickListener;
 import android.widget.TextView;
 
 import com.android.settings.R;
@@ -47,6 +48,11 @@
     // show a text regarding data charges when wifi connection is required during setup wizard
     protected static final String EXTRA_SHOW_WIFI_REQUIRED_INFO = "wifi_show_wifi_required_info";
 
+    private View mAddOtherNetworkItem;
+    private ListAdapter mAdapter;
+    private TextView mEmptyFooter;
+    private boolean mListLastEmpty = false;
+
     @Override
     public View onCreateView(final LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
@@ -60,9 +66,9 @@
             list.addHeaderView(header, null, false);
         }
 
-        final View other = inflater.inflate(R.layout.setup_wifi_add_network, list, false);
-        list.addFooterView(other, null, true);
-        other.setOnClickListener(new OnClickListener() {
+        mAddOtherNetworkItem = inflater.inflate(R.layout.setup_wifi_add_network, list, false);
+        list.addFooterView(mAddOtherNetworkItem, null, true);
+        mAddOtherNetworkItem.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {
                 if (mWifiManager.isWifiEnabled()) {
@@ -92,6 +98,15 @@
         if (hasNextButton()) {
             getNextButton().setVisibility(View.GONE);
         }
+
+        mAdapter = getPreferenceScreen().getRootAdapter();
+        mAdapter.registerDataSetObserver(new DataSetObserver() {
+            @Override
+            public void onChanged() {
+                super.onChanged();
+                updateFooter();
+            }
+        });
     }
 
     @Override
@@ -133,4 +148,30 @@
         activity.networkSelected();
         super.connect(networkId);
     }
+
+    @Override
+    protected TextView initEmptyView() {
+        mEmptyFooter = new TextView(getActivity());
+        mEmptyFooter.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
+                LayoutParams.MATCH_PARENT));
+        mEmptyFooter.setGravity(Gravity.CENTER);
+        mEmptyFooter.setCompoundDrawablesWithIntrinsicBounds(0,
+                R.drawable.ic_wifi_emptystate, 0,0);
+        return mEmptyFooter;
+    }
+
+    protected void updateFooter() {
+        final boolean isEmpty = mAdapter.isEmpty();
+        if (isEmpty != mListLastEmpty) {
+            final ListView list = getListView();
+            if (isEmpty) {
+                list.removeFooterView(mAddOtherNetworkItem);
+                list.addFooterView(mEmptyFooter, null, false);
+            } else {
+                list.removeFooterView(mEmptyFooter);
+                list.addFooterView(mAddOtherNetworkItem, null, true);
+            }
+            mListLastEmpty = isEmpty;
+        }
+    }
 }