Add AP support for tethering

First phase of the AP support in
UI and framework
Bug: 2421638

Change-Id: I0b6c31be5fe79bd4d33c292464d271b054754e8d
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index 3e41bb8..9430c19 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -16,6 +16,8 @@
 
 package com.android.settings;
 
+import com.android.settings.wifi.WifiApEnabler;
+
 import android.os.Bundle;
 import android.os.SystemProperties;
 import android.content.BroadcastReceiver;
@@ -32,14 +34,21 @@
 import android.util.Log;
 
 import java.util.ArrayList;
+
 /*
  * Displays preferences for Tethering.
  */
 public class TetherSettings extends PreferenceActivity {
     private static final String USB_TETHER_SETTINGS = "usb_tether_settings";
+    private static final String ENABLE_WIFI_AP = "enable_wifi_ap";
+    private static final String WIFI_AP_SETTINGS = "wifi_ap_settings";
 
     private PreferenceScreen mUsbTether;
 
+    private CheckBoxPreference mEnableWifiAp;
+    private PreferenceScreen mWifiApSettings;
+    private WifiApEnabler mWifiApEnabler;
+
     private BroadcastReceiver mTetherChangeReceiver;
 
     private String[] mUsbRegexs;
@@ -55,6 +64,8 @@
         addPreferencesFromResource(R.xml.tether_prefs);
 
         mUsbTether = (PreferenceScreen) findPreference(USB_TETHER_SETTINGS);
+        mEnableWifiAp = (CheckBoxPreference) findPreference(ENABLE_WIFI_AP);
+        mWifiApSettings = (PreferenceScreen) findPreference(WIFI_AP_SETTINGS);
 
         ConnectivityManager cm =
                 (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
@@ -62,7 +73,13 @@
         if (mUsbRegexs.length == 0) {
             getPreferenceScreen().removePreference(mUsbTether);
         }
+
         mWifiRegexs = cm.getTetherableWifiRegexs();
+        if (mWifiRegexs.length == 0) {
+            getPreferenceScreen().removePreference(mEnableWifiAp);
+            getPreferenceScreen().removePreference(mWifiApSettings);
+        }
+        mWifiApEnabler = new WifiApEnabler(this, mEnableWifiAp);
     }
 
 
@@ -91,6 +108,7 @@
         Intent intent = registerReceiver(mTetherChangeReceiver, filter);
 
         if (intent != null) mTetherChangeReceiver.onReceive(this, intent);
+        mWifiApEnabler.resume();
     }
 
     @Override
@@ -98,6 +116,7 @@
         super.onPause();
         unregisterReceiver(mTetherChangeReceiver);
         mTetherChangeReceiver = null;
+        mWifiApEnabler.pause();
     }
 
     private void updateState(ArrayList<String> available, ArrayList<String> tethered,