Decouple WFC from Enhanced 4G LTE in settings

TMo requires WFC and Enhanced 4G LTE mode to be enabled/disabled independently.
IMS used to be stopped when 4G LTE was disabled and started when it was
enabled. Now we need to take WFC into account when making decision about
starting/stopping IMS.

Change-Id: Icc92097a98e07994783b2ec3579d86b05315d0a2
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index 62680e3..d36ccf2 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -306,8 +306,18 @@
                         TelephonyManager.NETWORK_TYPE_LTE,
                         enabled ? ImsConfig.FeatureValueConstants.ON
                                 : ImsConfig.FeatureValueConstants.OFF, null);
+
+                if (enabled) {
+                    imsManager.turnOnIms();
+                } else if (context.getResources().getBoolean(
+                        com.android.internal.R.bool.imsServiceAllowTurnOff)
+                        && (!isVolteEnabledByPlatform(context)
+                        || !isEnhanced4gLteModeSettingEnabledByUser(context))) {
+                    log("setWfcSetting() : imsServiceAllowTurnOff -> turnOffIms");
+                    imsManager.turnOffIms();
+                }
             } catch (ImsException e) {
-                // do nothing
+                loge("setWfcSetting(): " + e);
             }
         }
     }
@@ -872,7 +882,9 @@
         if (turnOn) {
             turnOnIms();
         } else if (mContext.getResources().getBoolean(
-                com.android.internal.R.bool.imsServiceAllowTurnOff)) {
+                com.android.internal.R.bool.imsServiceAllowTurnOff)
+                && (!isWfcEnabledByPlatform(mContext)
+                || !isWfcEnabledByUser(mContext))) {
             log("setAdvanced4GMode() : imsServiceAllowTurnOff -> turnOffIms");
             turnOffIms();
         }