Merge "The password in the APN settings is shown instead of stars"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9b6977d..0a567f5 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -823,6 +823,9 @@
     <!-- Wi-Fi settings screen, advanced, title of the item to show the Wi-Fi device's MAC address. -->
     <string name="wifi_advanced_mac_address_title">MAC address</string>
 
+    <!-- Wi-Fi settings screen, advanced, title of the item to show the Wi-Fi device's current IP address. -->
+    <string name="wifi_advanced_ip_address_title">IP address</string>
+
     <!-- Status message of Wi-Fi when it is scanning -->
     <string name="fragment_status_scanning">Scanning\u2026</string>
     <!-- Status message of Wi-Fi when it is connecting to a particular network -->
diff --git a/res/xml/wifi_advanced_settings.xml b/res/xml/wifi_advanced_settings.xml
index 3e0ff05..e603be9 100644
--- a/res/xml/wifi_advanced_settings.xml
+++ b/res/xml/wifi_advanced_settings.xml
@@ -38,6 +38,11 @@
         android:title="@string/wifi_advanced_mac_address_title"
         />
     
+    <Preference android:key="current_ip_address"
+        style="?android:attr/preferenceInformationStyle"
+        android:title="@string/wifi_advanced_ip_address_title"
+        />
+
     <PreferenceCategory
             android:title="@string/wifi_ip_settings_titlebar"
             />
diff --git a/src/com/android/settings/wifi/AdvancedSettings.java b/src/com/android/settings/wifi/AdvancedSettings.java
index ff485de..cca10da 100644
--- a/src/com/android/settings/wifi/AdvancedSettings.java
+++ b/src/com/android/settings/wifi/AdvancedSettings.java
@@ -39,6 +39,7 @@
         implements Preference.OnPreferenceChangeListener {
 
     private static final String KEY_MAC_ADDRESS = "mac_address";
+    private static final String KEY_CURRENT_IP_ADDRESS = "current_ip_address";
     private static final String KEY_USE_STATIC_IP = "use_static_ip";
     private static final String KEY_NUM_CHANNELS = "num_channels";
     private static final String KEY_SLEEP_POLICY = "sleep_policy";
@@ -98,7 +99,7 @@
          */
         //initNumChannelsPreference();
         initSleepPolicyPreference();
-        refreshMacAddress();
+        refreshWifiInfo();
     }
 
     private void initNumChannelsPreference() {
@@ -296,7 +297,7 @@
         }
     }
     
-    private void refreshMacAddress() {
+    private void refreshWifiInfo() {
         WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
         WifiInfo wifiInfo = wifiManager.getConnectionInfo();
 
@@ -304,6 +305,20 @@
         String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress();
         wifiMacAddressPref.setSummary(!TextUtils.isEmpty(macAddress) ? macAddress 
                 : getString(R.string.status_unavailable));
+
+        Preference wifiIpAddressPref = findPreference(KEY_CURRENT_IP_ADDRESS);
+        String ipAddress = null;
+        if (wifiInfo != null) {
+            long addr = wifiInfo.getIpAddress();
+            if (addr != 0) {
+                // handle negative values whe first octet > 127
+                if (addr < 0) addr += 0x100000000L;
+                ipAddress = String.format("%d.%d.%d.%d",
+                        addr & 0xFF, (addr >> 8) & 0xFF, (addr >> 16) & 0xFF, (addr >> 24) & 0xFF);
+            }
+        }
+        wifiIpAddressPref.setSummary(ipAddress == null ?
+                getString(R.string.status_unavailable) : ipAddress);
     }
-    
+
 }