Merge "Show VoLTE UI when VoIMS opt-in enabled" into sc-dev
diff --git a/src/com/android/settings/network/ims/VolteQueryImsState.java b/src/com/android/settings/network/ims/VolteQueryImsState.java
index 167b4b1..b09a130 100644
--- a/src/com/android/settings/network/ims/VolteQueryImsState.java
+++ b/src/com/android/settings/network/ims/VolteQueryImsState.java
@@ -16,11 +16,14 @@
 
 package com.android.settings.network.ims;
 
+import static android.telephony.ims.ProvisioningManager.KEY_VOIMS_OPT_IN_STATUS;
+
 import android.content.Context;
 import android.telecom.TelecomManager;
 import android.telephony.AccessNetworkConstants;
 import android.telephony.SubscriptionManager;
 import android.telephony.ims.ImsException;
+import android.telephony.ims.ProvisioningManager;
 import android.telephony.ims.feature.MmTelFeature;
 import android.telephony.ims.stub.ImsRegistrationImplBase;
 import android.util.Log;
@@ -133,4 +136,15 @@
         }
         return isEnabledByUser(mSubId);
     }
+
+    /**
+     * Get VoIMS opt-in configuration.
+     *
+     * @return true when VoIMS opt-in has been enabled, otherwise false
+     */
+    public boolean isVoImsOptInEnabled() {
+        int voImsOptInStatus = ProvisioningManager.createForSubscriptionId(mSubId)
+                .getProvisioningIntValue(KEY_VOIMS_OPT_IN_STATUS);
+        return voImsOptInStatus == ProvisioningManager.PROVISIONING_VALUE_ENABLED;
+    }
 }
diff --git a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java
index fbbdabc..c2b1fc4 100644
--- a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java
+++ b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java
@@ -107,12 +107,18 @@
         if (!isModeMatched()) {
             return CONDITIONALLY_UNAVAILABLE;
         }
+        final VolteQueryImsState queryState = queryImsState(subId);
+        // Show VoLTE settings if VoIMS opt-in has been enabled irrespective of other VoLTE settings
+        if (queryState.isVoImsOptInEnabled()) {
+            return AVAILABLE;
+        }
+
         final PersistableBundle carrierConfig = getCarrierConfigForSubId(subId);
         if ((carrierConfig == null)
                 || carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL)) {
             return CONDITIONALLY_UNAVAILABLE;
         }
-        final VolteQueryImsState queryState = queryImsState(subId);
+
         if (!queryState.isReadyToVoLte()) {
             return CONDITIONALLY_UNAVAILABLE;
         }