Display a progress bar when a network is being brought up.

Change-Id: I5d2c14ffc6010d29ffb832cb924c6b0108fd0048
diff --git a/apps/Development/res/layout/connectivity.xml b/apps/Development/res/layout/connectivity.xml
index 86a4273..e5020d8 100644
--- a/apps/Development/res/layout/connectivity.xml
+++ b/apps/Development/res/layout/connectivity.xml
@@ -256,6 +256,9 @@
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@string/release_mms" />
+        <ProgressBar android:id="@+id/mms_progress"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content" />
     </LinearLayout>
     <LinearLayout
       android:orientation="horizontal"
@@ -269,6 +272,9 @@
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@string/release_supl" />
+        <ProgressBar android:id="@+id/supl_progress"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content" />
     </LinearLayout>
     <LinearLayout
       android:orientation="horizontal"
@@ -282,6 +288,9 @@
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@string/release_cell" />
+        <ProgressBar android:id="@+id/cell_progress"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content" />
     </LinearLayout>
     <LinearLayout
       android:orientation="horizontal"
@@ -295,6 +304,9 @@
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@string/release_wifi" />
+        <ProgressBar android:id="@+id/wifi_progress"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content" />
     </LinearLayout>
     <LinearLayout
       android:orientation="horizontal"
diff --git a/apps/Development/src/com/android/development/Connectivity.java b/apps/Development/src/com/android/development/Connectivity.java
index 2778454..53df614 100644
--- a/apps/Development/src/com/android/development/Connectivity.java
+++ b/apps/Development/src/com/android/development/Connectivity.java
@@ -292,22 +292,25 @@
 
     private class RequestableNetwork {
         private final NetworkRequest mRequest;
-        private final int mRequestButton, mReleaseButton;
+        private final int mRequestButton, mReleaseButton, mProgressBar;
         private NetworkCallback mCallback;
         private Network mNetwork;
 
-        public RequestableNetwork(NetworkRequest request, int requestButton, int releaseButton) {
+        public RequestableNetwork(NetworkRequest request, int requestButton, int releaseButton,
+                int progressBar) {
             mRequest = request;
             mRequestButton = requestButton;
             mReleaseButton = releaseButton;
+            mProgressBar = progressBar;
         }
 
-        public RequestableNetwork(int capability, int requestButton, int releaseButton) {
+        public RequestableNetwork(int capability, int requestButton, int releaseButton,
+                int progressBar) {
             this(new NetworkRequest.Builder()
                     .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
                     .addCapability(capability)
                     .build(),
-                    requestButton, releaseButton);
+                    requestButton, releaseButton, progressBar);
         }
 
         public void addOnClickListener() {
@@ -320,6 +323,8 @@
         public void setRequested(boolean requested) {
             findViewById(mRequestButton).setEnabled(!requested);
             findViewById(mReleaseButton).setEnabled(requested);
+            findViewById(mProgressBar).setVisibility(
+                    requested ? View.VISIBLE : View.GONE);
         }
 
         public void request() {
@@ -329,6 +334,16 @@
                     public void onAvailable(Network network) {
                         mNetwork = network;
                         onHttpRequestResults(null);
+// TODO: replace with:
+//                      runOnUiThread(() -> {
+//                            findViewById(mProgressBar).setVisibility(View.GONE);
+//                      });
+                        runOnUiThread(new Runnable() {
+                            @Override
+                            public void run() {
+                                findViewById(mProgressBar).setVisibility(View.GONE);
+                            }
+                        });
                     }
                     @Override
                     public void onLost(Network network) {
@@ -364,15 +379,20 @@
         mRequestableNetworks.add(network);
     }
 
-    private void addRequestableNetwork(int capability, int requestButton, int releaseButton) {
-        mRequestableNetworks.add(new RequestableNetwork(capability, requestButton, releaseButton));
+    private void addRequestableNetwork(int capability, int requestButton, int releaseButton,
+            int progressBar) {
+        mRequestableNetworks.add(new RequestableNetwork(capability, requestButton, releaseButton,
+                progressBar));
     }
 
     public Connectivity() {
         super();
-        addRequestableNetwork(NET_CAPABILITY_MMS, R.id.request_mms, R.id.release_mms);
-        addRequestableNetwork(NET_CAPABILITY_SUPL, R.id.request_supl, R.id.release_supl);
-        addRequestableNetwork(NET_CAPABILITY_INTERNET, R.id.request_cell, R.id.release_cell);
+        addRequestableNetwork(NET_CAPABILITY_MMS, R.id.request_mms, R.id.release_mms,
+                R.id.mms_progress);
+        addRequestableNetwork(NET_CAPABILITY_SUPL, R.id.request_supl, R.id.release_supl,
+                R.id.supl_progress);
+        addRequestableNetwork(NET_CAPABILITY_INTERNET, R.id.request_cell, R.id.release_cell,
+                R.id.cell_progress);
 
         // Make bound requests use cell data.
         mBoundTestNetwork = mRequestableNetworks.get(mRequestableNetworks.size() - 1);