diff --git a/Android.mk b/Android.mk
index eb6cbdc..f4ef455 100644
--- a/Android.mk
+++ b/Android.mk
@@ -56,7 +56,8 @@
     android-support-design \
     com.android.vcard \
     guava \
-    libphonenumber
+    libphonenumber \
+    ims-ext-common
 
 LOCAL_PACKAGE_NAME := Dialer
 LOCAL_CERTIFICATE := shared
diff --git a/InCallUI/res/values-mcc405-mnc840/qticonfig.xml b/InCallUI/res/values-mcc405-mnc840/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc840/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc854/qticonfig.xml b/InCallUI/res/values-mcc405-mnc854/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc854/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc855/qticonfig.xml b/InCallUI/res/values-mcc405-mnc855/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc855/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc856/qticonfig.xml b/InCallUI/res/values-mcc405-mnc856/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc856/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc857/qticonfig.xml b/InCallUI/res/values-mcc405-mnc857/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc857/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc858/qticonfig.xml b/InCallUI/res/values-mcc405-mnc858/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc858/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc859/qticonfig.xml b/InCallUI/res/values-mcc405-mnc859/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc859/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc860/qticonfig.xml b/InCallUI/res/values-mcc405-mnc860/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc860/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc861/qticonfig.xml b/InCallUI/res/values-mcc405-mnc861/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc861/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc862/qticonfig.xml b/InCallUI/res/values-mcc405-mnc862/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc862/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc863/qticonfig.xml b/InCallUI/res/values-mcc405-mnc863/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc863/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc864/qticonfig.xml b/InCallUI/res/values-mcc405-mnc864/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc864/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc865/qticonfig.xml b/InCallUI/res/values-mcc405-mnc865/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc865/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc866/qticonfig.xml b/InCallUI/res/values-mcc405-mnc866/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc866/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc867/qticonfig.xml b/InCallUI/res/values-mcc405-mnc867/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc867/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc868/qticonfig.xml b/InCallUI/res/values-mcc405-mnc868/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc868/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc869/qticonfig.xml b/InCallUI/res/values-mcc405-mnc869/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc869/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc870/qticonfig.xml b/InCallUI/res/values-mcc405-mnc870/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc870/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc871/qticonfig.xml b/InCallUI/res/values-mcc405-mnc871/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc871/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc872/qticonfig.xml b/InCallUI/res/values-mcc405-mnc872/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc872/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc873/qticonfig.xml b/InCallUI/res/values-mcc405-mnc873/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc873/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc405-mnc874/qticonfig.xml b/InCallUI/res/values-mcc405-mnc874/qticonfig.xml
new file mode 100644
index 0000000..978755b
--- /dev/null
+++ b/InCallUI/res/values-mcc405-mnc874/qticonfig.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are
+  met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above
+         copyright notice, this list of conditions and the following
+         disclaimer in the documentation and/or other materials provided
+         with the distribution.
+       * Neither the name of The Linux Foundation nor the names of its
+         contributors may be used to endorse or promote products derived
+         from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<resources>
+
+    <!-- RJIL specific settings -->
+
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+
+</resources>
diff --git a/InCallUI/res/values-mcc460-mnc00/qticonfig.xml b/InCallUI/res/values-mcc460-mnc00/qticonfig.xml
new file mode 100644
index 0000000..aed87f3
--- /dev/null
+++ b/InCallUI/res/values-mcc460-mnc00/qticonfig.xml
@@ -0,0 +1,36 @@
+<!--
+  ~ Copyright (c) 2015, 2016, The Linux Foundation. All rights reserved.
+  ~
+  ~ Redistribution and use in source and binary forms, with or without
+  ~ modification, are permitted provided that the following conditions are
+  ~ met:
+  ~     * Redistributions of source code must retain the above copyright
+  ~       notice, this list of conditions and the following disclaimer.
+  ~     * Redistributions in binary form must reproduce the above
+  ~       copyright notice, this list of conditions and the following
+  ~       disclaimer in the documentation and/or other materials provided
+  ~       with the distribution.
+  ~     * Neither the name of The Linux Foundation nor the names of its
+  ~       contributors may be used to endorse or promote products derived
+  ~       from this software without specific prior written permission.
+  ~
+  ~ THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  ~ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  ~ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ~ ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  ~ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  ~ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  ~ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  ~ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  ~ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  ~ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  ~ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  -->
+<resources>
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+</resources>
diff --git a/InCallUI/res/values-mcc460-mnc02/qticonfig.xml b/InCallUI/res/values-mcc460-mnc02/qticonfig.xml
new file mode 100644
index 0000000..b23505a
--- /dev/null
+++ b/InCallUI/res/values-mcc460-mnc02/qticonfig.xml
@@ -0,0 +1,36 @@
+<!--
+  ~ Copyright (c) 2015,2016, The Linux Foundation. All rights reserved.
+  ~
+  ~ Redistribution and use in source and binary forms, with or without
+  ~ modification, are permitted provided that the following conditions are
+  ~ met:
+  ~     * Redistributions of source code must retain the above copyright
+  ~       notice, this list of conditions and the following disclaimer.
+  ~     * Redistributions in binary form must reproduce the above
+  ~       copyright notice, this list of conditions and the following
+  ~       disclaimer in the documentation and/or other materials provided
+  ~       with the distribution.
+  ~     * Neither the name of The Linux Foundation nor the names of its
+  ~       contributors may be used to endorse or promote products derived
+  ~       from this software without specific prior written permission.
+  ~
+  ~ THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  ~ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  ~ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ~ ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  ~ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  ~ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  ~ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  ~ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  ~ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  ~ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  ~ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  -->
+<resources>
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+</resources>
diff --git a/InCallUI/res/values-mcc460-mnc07/qticonfig.xml b/InCallUI/res/values-mcc460-mnc07/qticonfig.xml
new file mode 100644
index 0000000..aed87f3
--- /dev/null
+++ b/InCallUI/res/values-mcc460-mnc07/qticonfig.xml
@@ -0,0 +1,36 @@
+<!--
+  ~ Copyright (c) 2015, 2016, The Linux Foundation. All rights reserved.
+  ~
+  ~ Redistribution and use in source and binary forms, with or without
+  ~ modification, are permitted provided that the following conditions are
+  ~ met:
+  ~     * Redistributions of source code must retain the above copyright
+  ~       notice, this list of conditions and the following disclaimer.
+  ~     * Redistributions in binary form must reproduce the above
+  ~       copyright notice, this list of conditions and the following
+  ~       disclaimer in the documentation and/or other materials provided
+  ~       with the distribution.
+  ~     * Neither the name of The Linux Foundation nor the names of its
+  ~       contributors may be used to endorse or promote products derived
+  ~       from this software without specific prior written permission.
+  ~
+  ~ THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  ~ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  ~ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ~ ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  ~ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  ~ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  ~ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  ~ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  ~ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  ~ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  ~ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  -->
+<resources>
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+</resources>
diff --git a/InCallUI/res/values-mcc460-mnc08/qticonfig.xml b/InCallUI/res/values-mcc460-mnc08/qticonfig.xml
new file mode 100644
index 0000000..aed87f3
--- /dev/null
+++ b/InCallUI/res/values-mcc460-mnc08/qticonfig.xml
@@ -0,0 +1,36 @@
+<!--
+  ~ Copyright (c) 2015, 2016, The Linux Foundation. All rights reserved.
+  ~
+  ~ Redistribution and use in source and binary forms, with or without
+  ~ modification, are permitted provided that the following conditions are
+  ~ met:
+  ~     * Redistributions of source code must retain the above copyright
+  ~       notice, this list of conditions and the following disclaimer.
+  ~     * Redistributions in binary form must reproduce the above
+  ~       copyright notice, this list of conditions and the following
+  ~       disclaimer in the documentation and/or other materials provided
+  ~       with the distribution.
+  ~     * Neither the name of The Linux Foundation nor the names of its
+  ~       contributors may be used to endorse or promote products derived
+  ~       from this software without specific prior written permission.
+  ~
+  ~ THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+  ~ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  ~ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+  ~ ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+  ~ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  ~ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  ~ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+  ~ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+  ~ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  ~ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+  ~ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  -->
+<resources>
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">false</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">false</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">false</bool>
+</resources>
diff --git a/InCallUI/res/values/qticonfig.xml b/InCallUI/res/values/qticonfig.xml
index b822b2a..d42a691 100644
--- a/InCallUI/res/values/qticonfig.xml
+++ b/InCallUI/res/values/qticonfig.xml
@@ -1,5 +1,5 @@
 <!--
-  ~ Copyright (c) 2015, 2016 The Linux Foundation. All rights reserved.
+  ~ Copyright (c) 2015, 2016, The Linux Foundation. All rights reserved.
   ~
   ~ Redistribution and use in source and binary forms, with or without
   ~ modification, are permitted provided that the following conditions are
@@ -29,4 +29,10 @@
 <resources>
     <!-- Determines UI extensions for video calls should be used. -->
     <bool name="video_call_use_ext">true</bool>
+    <!-- Config to show/hide Video quality toast -->
+    <bool name="config_display_video_quality_toast">true</bool>
+    <!-- Config to show/hide call session event toast like player start/stop -->
+    <bool name="config_call_session_event_toast">true</bool>
+    <!-- Config to show/hide data usage toast -->
+    <bool name="config_display_data_usage_toast">true</bool>
 </resources>
diff --git a/InCallUI/res/values/qtistrings.xml b/InCallUI/res/values/qtistrings.xml
index e2ba3c3..f87a189 100644
--- a/InCallUI/res/values/qtistrings.xml
+++ b/InCallUI/res/values/qtistrings.xml
@@ -32,7 +32,7 @@
 <!-- The xml contains Qti specific resource strings neede for any value added features. -->
 <resources>
     <!-- Call substate label -->
-    <string name="call_substate_label"> : Call substate - \u000a</string>
+    <string name="call_substate_label"> Call substate - \u000a</string>
     <!-- Call substate label for call resumed -->
     <string name="call_substate_call_resumed">Resumed \u000a</string>
     <!-- Call substate label for call connected suspended (audio) -->
@@ -43,7 +43,7 @@
     <string name="call_substate_avp_retry">Avp Retry \u000a</string>
 
     <!-- Video quality changed message -->
-    <string name="video_quality_changed"> : Video quality changed to \u0020</string>
+    <string name="video_quality_changed"> Video quality changed to \u0020</string>
     <!-- Video quality High -->
     <string name="video_quality_high">High</string>
     <!-- Video quality Medium -->
diff --git a/InCallUI/src/com/android/incallui/CallSubstateNotifier.java b/InCallUI/src/com/android/incallui/CallSubstateNotifier.java
new file mode 100644
index 0000000..7d9cdee
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/CallSubstateNotifier.java
@@ -0,0 +1,114 @@
+/* Copyright (c) 2015, 2016, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package com.android.incallui;
+
+import org.codeaurora.ims.QtiCallConstants;
+import android.os.Bundle;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.List;
+
+import com.google.common.base.Preconditions;
+import com.android.incallui.InCallPresenter.InCallDetailsListener;
+
+/**
+ * This class listens to incoming events from the {@class InCallDetailsListener}.
+ * When call details change, this class is notified and we parse the extras from the details to
+ * figure out if call substate has changed and notify the {@class InCallMessageController} to
+ * display the indication on UI.
+ *
+ */
+public class CallSubstateNotifier implements InCallDetailsListener {
+
+    private final List<InCallSubstateListener> mCallSubstateListeners =
+            new CopyOnWriteArrayList<>();
+
+    private static CallSubstateNotifier sCallSubstateNotifier;
+    private int mCallSubstate = QtiCallConstants.CALL_SUBSTATE_NONE;
+
+    /**
+     * This method returns a singleton instance of {@class CallSubstateNotifier}
+     */
+    public static synchronized CallSubstateNotifier getInstance() {
+        if (sCallSubstateNotifier == null) {
+            sCallSubstateNotifier = new CallSubstateNotifier();
+        }
+        return sCallSubstateNotifier;
+    }
+
+    /**
+     * This method adds a new call substate listener. Users interested in listening to call
+     * substate changes should add a listener of type {@class InCallSubstateListener}
+     */
+    public void addListener(InCallSubstateListener listener) {
+        Preconditions.checkNotNull(listener);
+        mCallSubstateListeners.add(listener);
+    }
+
+    /**
+     * This method removes an existing call substate listener. Users listening to call
+     * substate changes when not interested any more can de-register an existing listener of type
+     * {@class InCallSubstateListener}
+     */
+    public void removeListener(InCallSubstateListener listener) {
+        if (listener != null) {
+            mCallSubstateListeners.remove(listener);
+        } else {
+            Log.e(this, "Can't remove null listener");
+        }
+    }
+
+    /**
+     * Private constructor. Must use getInstance() to get this singleton.
+     */
+    private CallSubstateNotifier() {
+    }
+
+    /**
+     * This method overrides onDetailsChanged method of {@class InCallDetailsListener}. We are
+     * notified when call details change and extract the call substate from the extras, detect if
+     * call substate changed and notify all registered listeners.
+     */
+    @Override
+    public void onDetailsChanged(Call call, android.telecom.Call.Details details) {
+        Log.d(this, "onDetailsChanged - call: " + call + "details: " + details);
+        final Bundle extras =  (call != null && details != null) ? details.getExtras() : null;
+        final int callSubstate = (extras != null) ? extras.getInt(
+                QtiCallConstants.CALL_SUBSTATE_EXTRA_KEY,
+                QtiCallConstants.CALL_SUBSTATE_NONE) :
+                QtiCallConstants.CALL_SUBSTATE_NONE;
+
+        if (callSubstate != mCallSubstate) {
+            mCallSubstate = callSubstate;
+            Preconditions.checkNotNull(mCallSubstateListeners);
+            for (InCallSubstateListener listener : mCallSubstateListeners) {
+                listener.onCallSubstateChanged(call, mCallSubstate);
+            }
+        }
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/InCallMessageController.java b/InCallUI/src/com/android/incallui/InCallMessageController.java
new file mode 100644
index 0000000..73f67e4
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/InCallMessageController.java
@@ -0,0 +1,197 @@
+/* Copyright (c) 2015, 2016, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package com.android.incallui;
+
+import android.content.Context;
+import android.content.res.Resources;
+
+import org.codeaurora.ims.QtiCallConstants;
+import com.android.incallui.InCallPresenter.InCallDetailsListener;
+import com.android.incallui.InCallVideoCallCallbackNotifier.VideoEventListener;
+
+
+/**
+ * This class listens to incoming events for the listener classes it implements. It should
+ * handle all UI notification to be shown to the user for any indication that is required to be
+ * shown like call substate indication, video quality indication, etc.
+ * For e.g., this class implements {@class InCallSubstateListener} and when call substate changes,
+ * {@class CallSubstateNotifier} notifies it through the onCallSubstateChanged callback.
+ */
+public class InCallMessageController implements InCallSubstateListener, VideoEventListener {
+
+    private static InCallMessageController sInCallMessageController;
+    private Context mContext;
+
+    /**
+     * Private constructor. Must use getInstance() to get this singleton.
+     */
+    private InCallMessageController() {
+    }
+
+    /**
+     * Handles set up of the {@class InCallSubstateListener}. Instantiates the context needed by
+     * the class and adds a listener to listen to call substate changes.
+     */
+    public void setUp(Context context) {
+        mContext = context;
+        CallSubstateNotifier.getInstance().addListener(this);
+        InCallVideoCallCallbackNotifier.getInstance().addVideoEventListener(this);
+    }
+
+    /**
+     * Handles tear down of the {@class InCallSubstateListener}. Sets the context to null and
+     * unregisters it's call substate listener.
+     */
+    public void tearDown() {
+        mContext = null;
+        CallSubstateNotifier.getInstance().removeListener(this);
+        InCallVideoCallCallbackNotifier.getInstance().removeVideoEventListener(this);
+    }
+
+    /**
+     * This method returns a singleton instance of {@class InCallMessageController}
+     */
+    public static synchronized InCallMessageController getInstance() {
+        if (sInCallMessageController == null) {
+            sInCallMessageController = new InCallMessageController();
+        }
+        return sInCallMessageController;
+    }
+
+    /**
+     * This method overrides onCallSubstateChanged method of {@interface InCallSubstateListener}
+     * We are notified when call substate changes and display a toast message on the UI.
+     */
+    @Override
+    public void onCallSubstateChanged(final Call call, final int callSubstate) {
+        Log.d(this, "onCallSubstateChanged - Call : " + call + " call substate changed to " +
+                callSubstate);
+
+        if (mContext == null) {
+            Log.e(this, "onCallSubstateChanged - Context is null. Return");
+            return;
+        }
+
+        String callSubstateChangedText = "";
+
+        if (QtiCallUtils.isEnabled(
+                QtiCallConstants.CALL_SUBSTATE_AUDIO_CONNECTED_SUSPENDED, callSubstate)) {
+            callSubstateChangedText +=
+                    mContext.getResources().getString(
+                    R.string.call_substate_connected_suspended_audio);
+        }
+
+        if (QtiCallUtils.isEnabled(
+                QtiCallConstants.CALL_SUBSTATE_VIDEO_CONNECTED_SUSPENDED, callSubstate)) {
+            callSubstateChangedText +=
+                    mContext.getResources().getString(
+                    R.string.call_substate_connected_suspended_video);
+        }
+
+        if (QtiCallUtils.isEnabled(QtiCallConstants.CALL_SUBSTATE_AVP_RETRY, callSubstate)) {
+            callSubstateChangedText +=
+                    mContext.getResources().getString(R.string.call_substate_avp_retry);
+        }
+
+        if (QtiCallUtils.isNotEnabled(QtiCallConstants.CALL_SUBSTATE_ALL, callSubstate)) {
+            callSubstateChangedText =
+                    mContext.getResources().getString(R.string.call_substate_call_resumed);
+        }
+
+        if (!callSubstateChangedText.isEmpty()) {
+            String callSubstateLabelText = mContext.getResources().getString(
+                    R.string.call_substate_label);
+            QtiCallUtils.displayToast(mContext, callSubstateLabelText + callSubstateChangedText);
+        }
+    }
+
+    /**
+     * This method overrides onVideoQualityChanged method of {@interface VideoEventListener}
+     * We are notified when video quality of the call changed and display a message on the UI.
+     */
+    @Override
+    public void onVideoQualityChanged(final Call call, final int videoQuality) {
+        Log.d(this, "Call : " + call + " onVideoQualityChanged. Video quality changed to " +
+                videoQuality);
+
+        if (mContext == null) {
+            Log.e(this, "onVideoQualityChanged - Context is null. Return");
+            return;
+        }
+        final Resources resources = mContext.getResources();
+        if (resources.getBoolean(R.bool.config_display_video_quality_toast)) {
+            final String videoQualityChangedText = resources.getString(
+                    R.string.video_quality_changed) + resources.getString(
+                    QtiCallUtils.getVideoQualityResourceId(videoQuality));
+            QtiCallUtils.displayToast(mContext, videoQualityChangedText);
+        }
+    }
+
+    /**
+     * This method overrides onCallSessionEvent method of {@interface VideoEventListener}
+     * We are notified when a new call session event is sent and display a message on the UI.
+     */
+    @Override
+    public void onCallSessionEvent(final int event) {
+        Log.d(this, "onCallSessionEvent: event = " + event);
+
+        if (mContext == null) {
+            Log.e(this, "onCallSessionEvent - Context is null. Return");
+            return;
+        }
+        final Resources resources = mContext.getResources();
+        if (resources.getBoolean(R.bool.config_call_session_event_toast)) {
+            QtiCallUtils.displayToast(mContext, QtiCallUtils.getCallSessionResourceId(event));
+        }
+    }
+
+    /**
+     * This method overrides onCallDataUsageChange method of {@interface VideoEventListener}
+     *  We are notified when data usage is changed and display a message on the UI.
+     */
+    @Override
+    public void onCallDataUsageChange(final long dataUsage) {
+        Log.d(this, "onCallDataUsageChange: dataUsage = " + dataUsage);
+        final Resources resources = mContext.getResources();
+        if (resources.getBoolean(R.bool.config_display_data_usage_toast)) {
+            final String dataUsageChangedText = mContext.getResources().getString(
+                    R.string.data_usage_label) + dataUsage;
+            QtiCallUtils.displayToast(mContext, dataUsageChangedText);
+        }
+    }
+
+    /**
+     * This method overrides onPeerPauseStateChanged method of {@interface VideoEventListener}
+     * Added for completeness. No implementation yet.
+     */
+    @Override
+    public void onPeerPauseStateChanged(final Call call, final boolean paused) {
+        //no-op
+    }
+}
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 12b90b2..11de502 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -345,6 +345,9 @@
         mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
         mCallList.setFilteredNumberQueryHandler(mFilteredQueryHandler);
 
+        InCallMessageController.getInstance().setUp(mContext);
+        addDetailsListener(CallSubstateNotifier.getInstance());
+
         Log.d(this, "Finished InCallPresenter.setUp");
     }
 
@@ -366,6 +369,9 @@
         mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
         VideoPauseController.getInstance().tearDown();
         InCallVideoCallCallbackNotifier.getInstance().removeSessionModificationListener(this);
+
+        InCallMessageController.getInstance().tearDown();
+        removeDetailsListener(CallSubstateNotifier.getInstance());
     }
 
     private void attemptFinishActivity() {
diff --git a/InCallUI/src/com/android/incallui/InCallSubstateListener.java b/InCallUI/src/com/android/incallui/InCallSubstateListener.java
new file mode 100644
index 0000000..20449c4
--- /dev/null
+++ b/InCallUI/src/com/android/incallui/InCallSubstateListener.java
@@ -0,0 +1,36 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *     * Neither the name of The Linux Foundation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package com.android.incallui;
+
+/**
+ * This interface will be implemented by classes that wish to listen to call substate changes.
+ */
+public interface InCallSubstateListener {
+    public void onCallSubstateChanged(final Call call, final int callSubstate);
+}
