Commit 00f102af authored by satya's avatar satya

update roaming2china

parent 2447e684
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="WizardSettings">
<option name="children">
<map>
<entry key="vectorWizard">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="vectorAssetStep">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="clipartAsset">
<value>
<PersistentState>
<option name="values">
<map>
<entry key="url" value="file:$USER_HOME$/Library/Android/sdk/icons/material/materialicons/help/baseline_help_24.xml" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
<option name="values">
<map>
<entry key="color" value="ec008c" />
<entry key="outputName" value="ic_confirmation" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</component>
</project>
\ No newline at end of file
This diff is collapsed.
...@@ -26,8 +26,8 @@ android { ...@@ -26,8 +26,8 @@ android {
applicationId "com.seatel.mobilehall" applicationId "com.seatel.mobilehall"
minSdk 23 minSdk 23
targetSdk 34 targetSdk 34
versionCode 201907115 versionCode 201907116
versionName "2.3.14" versionName "2.3.15"
multiDexEnabled true multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
signingConfig signingConfigs.release signingConfig signingConfigs.release
...@@ -41,7 +41,6 @@ android { ...@@ -41,7 +41,6 @@ android {
buildConfigField 'String', 'CLIENT_SECRET', '"MjExNzM0NWNiNTA3NDZmNzg4NmE0NTNlYjYyMWNkODk="' buildConfigField 'String', 'CLIENT_SECRET', '"MjExNzM0NWNiNTA3NDZmNzg4NmE0NTNlYjYyMWNkODk="'
minifyEnabled false minifyEnabled false
shrinkResources false shrinkResources false
debuggable true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release signingConfig signingConfigs.release
proguardFile '/Users/ryan/Documents/Project/Seatel_android_project/sea-tel-android/app/proguard-rules.pro' proguardFile '/Users/ryan/Documents/Project/Seatel_android_project/sea-tel-android/app/proguard-rules.pro'
......
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
"type": "SINGLE", "type": "SINGLE",
"filters": [], "filters": [],
"attributes": [], "attributes": [],
"versionCode": 201907114, "versionCode": 201907116,
"versionName": "2.3.13", "versionName": "2.3.15",
"outputFile": "app-release.apk" "outputFile": "app-release.apk"
} }
], ],
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools">
>
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
...@@ -90,8 +89,7 @@ ...@@ -90,8 +89,7 @@
<activity <activity
android:name="com.canhub.cropper.CropImageActivity" android:name="com.canhub.cropper.CropImageActivity"
android:theme="@style/Base.Theme.AppCompat" android:theme="@style/Base.Theme.AppCompat" />
/>
<!--- custom scan barcode orientation --> <!--- custom scan barcode orientation -->
<activity <activity
...@@ -352,6 +350,10 @@ ...@@ -352,6 +350,10 @@
android:name=".ui.profile.activity.ProfileFaceScanActivity" android:name=".ui.profile.activity.ProfileFaceScanActivity"
android:screenOrientation="locked" /> android:screenOrientation="locked" />
<activity
android:name=".ui.packages.RoamingActivity"
android:screenOrientation="locked" />
</application> </application>
......
...@@ -155,6 +155,23 @@ class SeatelSharePreferences(context: Context) { ...@@ -155,6 +155,23 @@ class SeatelSharePreferences(context: Context) {
return sharedPref?.getBoolean("HAS_INSTALMENT_PLAN", false) return sharedPref?.getBoolean("HAS_INSTALMENT_PLAN", false)
} }
fun setRoamingActivation(value: Boolean?) {
sharedPref?.edit()?.putBoolean("roamingActivation", value!!)?.apply()
}
fun isRoamingActivation(): Boolean? {
return sharedPref?.getBoolean("roamingActivation", false)
}
fun setSpecialSimcard(value: Boolean?) {
sharedPref?.edit()?.putBoolean("roaming", value!!)?.apply()
}
fun isSpecialSimcard(): Boolean? {
return sharedPref?.getBoolean("roaming", false)
}
fun setMainScreenData(mainScreenData: String?) { fun setMainScreenData(mainScreenData: String?) {
sharedPref?.edit()?.putString("MAIN_SCREEN_DATA", mainScreenData) sharedPref?.edit()?.putString("MAIN_SCREEN_DATA", mainScreenData)
?.apply() ?.apply()
......
...@@ -47,7 +47,6 @@ import com.seatel.mobilehall.ui.home.activity.SupportActivity ...@@ -47,7 +47,6 @@ import com.seatel.mobilehall.ui.home.activity.SupportActivity
import com.seatel.mobilehall.ui.home.activity.TopUpActivity import com.seatel.mobilehall.ui.home.activity.TopUpActivity
import com.seatel.mobilehall.ui.home.adapter.CategoryAdapter import com.seatel.mobilehall.ui.home.adapter.CategoryAdapter
import com.seatel.mobilehall.ui.home.adapter.HomeImageSliderAdapter import com.seatel.mobilehall.ui.home.adapter.HomeImageSliderAdapter
import com.seatel.mobilehall.ui.home.adapter.ImageSliderAdapter
import com.seatel.mobilehall.ui.home.interactor.BadgesCountInteractor import com.seatel.mobilehall.ui.home.interactor.BadgesCountInteractor
import com.seatel.mobilehall.ui.home.interactor.BannersInteractor import com.seatel.mobilehall.ui.home.interactor.BannersInteractor
import com.seatel.mobilehall.ui.home.interactor.CategoryInteractor import com.seatel.mobilehall.ui.home.interactor.CategoryInteractor
...@@ -308,11 +307,16 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie ...@@ -308,11 +307,16 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie
Log.d(TAG, "getDataMainScreenToken: $token") Log.d(TAG, "getDataMainScreenToken: $token")
GetMainData(requireActivity(), getPhoneLogin(), token) { it -> GetMainData(requireActivity(), getPhoneLogin(), token) { it ->
if (it) { if (it) {
dataMainScreen = Gson().fromJson( dataMainScreen = Gson().fromJson(
SeatelSharePreferences.getInstance(requireActivity())?.getMainScreenData(), SeatelSharePreferences.getInstance(requireActivity())?.getMainScreenData(),
MainDataModel::class.java MainDataModel::class.java
) )
dataMainScreen?.let { showDataMainScreen(it) } dataMainScreen?.let {
showDataMainScreen(it)
}
} }
...@@ -381,9 +385,9 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie ...@@ -381,9 +385,9 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie
} }
dataMainScreen.getContactService().forEach { dataMainScreen.getContactService().forEach {
contactService.add(it) contactService.add(it)
} }
// Show alert force update and complete info after buy sim // Show alert force update and complete info after buy sim
if (dataMainScreen.getIsNewUpdateAvailable()) { if (dataMainScreen.getIsNewUpdateAvailable()) {
......
...@@ -65,9 +65,29 @@ class MainDataModel { ...@@ -65,9 +65,29 @@ class MainDataModel {
private var eventGame: Boolean = false private var eventGame: Boolean = false
private var roamingActivation: Boolean = false
private var specialSimcard: Boolean = false
private var bannerBuySim: String = "" private var bannerBuySim: String = ""
private var bannerBuyTopup: String = "" private var bannerBuyTopup: String = ""
fun setSpecialSimcard(value: Boolean) {
this.specialSimcard = value
}
fun getSpecialSimcard(): Boolean {
return specialSimcard
}
fun setRoamingActivation(value: Boolean) {
this.roamingActivation = value
}
fun getRoamingActivation(): Boolean {
return roamingActivation
}
fun setEventGame(eventGame: Boolean) { fun setEventGame(eventGame: Boolean) {
this.eventGame = eventGame this.eventGame = eventGame
} }
...@@ -317,11 +337,11 @@ class MainDataModel { ...@@ -317,11 +337,11 @@ class MainDataModel {
return bannerBuyTopup return bannerBuyTopup
} }
fun setContactService (contactService: ArrayList<ContactService>) { fun setContactService(contactService: ArrayList<ContactService>) {
this.contactService = contactService this.contactService = contactService
} }
fun getContactService (): ArrayList<ContactService> { fun getContactService(): ArrayList<ContactService> {
return contactService return contactService
} }
} }
\ No newline at end of file
...@@ -5,6 +5,7 @@ import java.io.Serializable; ...@@ -5,6 +5,7 @@ import java.io.Serializable;
public class OnePlanDetailSecOneModel implements Serializable { public class OnePlanDetailSecOneModel implements Serializable {
private String mobileImageUrl; private String mobileImageUrl;
private String desktopImageUrl; private String desktopImageUrl;
private String mobileImageUrl2;
private String imageUrl; private String imageUrl;
public void setMobileImageUrl(String mobileImageUrl) { public void setMobileImageUrl(String mobileImageUrl) {
...@@ -31,11 +32,20 @@ public class OnePlanDetailSecOneModel implements Serializable { ...@@ -31,11 +32,20 @@ public class OnePlanDetailSecOneModel implements Serializable {
this.imageUrl = imageUrl; this.imageUrl = imageUrl;
} }
public String getMobileImageUrl2() {
return mobileImageUrl2;
}
public void setMobileImageUrl2(String mobileImageUrl2) {
this.mobileImageUrl2 = mobileImageUrl2;
}
@Override @Override
public String toString() { public String toString() {
return return
"OnePlanDetailSecOneModel{" + "OnePlanDetailSecOneModel{" +
"mobileImageUrl = '" + mobileImageUrl + '\'' + "mobileImageUrl = '" + mobileImageUrl + '\'' +
"mobileImageUrl2 = '" + mobileImageUrl2 + '\'' +
",desktopImageUrl = '" + desktopImageUrl + '\'' + ",desktopImageUrl = '" + desktopImageUrl + '\'' +
",imageUrl = '" + imageUrl + '\'' + ",imageUrl = '" + imageUrl + '\'' +
"}"; "}";
......
...@@ -27,6 +27,9 @@ public class ValuePackSecTwoModel implements Serializable { ...@@ -27,6 +27,9 @@ public class ValuePackSecTwoModel implements Serializable {
@Expose @Expose
private List<String> featureList = null; private List<String> featureList = null;
public String getTitle() { public String getTitle() {
return title; return title;
} }
......
...@@ -29,6 +29,15 @@ public class ValuePackTableModel implements Serializable { ...@@ -29,6 +29,15 @@ public class ValuePackTableModel implements Serializable {
@SerializedName("code") @SerializedName("code")
@Expose @Expose
private String code; private String code;
@SerializedName("title")
@Expose
private String title;
@SerializedName("icon")
@Expose
private String icon;
@SerializedName("activateBtn") @SerializedName("activateBtn")
@Expose @Expose
private Boolean activateBtn; private Boolean activateBtn;
...@@ -38,6 +47,14 @@ public class ValuePackTableModel implements Serializable { ...@@ -38,6 +47,14 @@ public class ValuePackTableModel implements Serializable {
private String benefitOffer; private String benefitOffer;
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getActivation() { public String getActivation() {
return activation; return activation;
} }
...@@ -86,6 +103,14 @@ public class ValuePackTableModel implements Serializable { ...@@ -86,6 +103,14 @@ public class ValuePackTableModel implements Serializable {
return code; return code;
} }
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Boolean getActivateBtn() { public Boolean getActivateBtn() {
return activateBtn; return activateBtn;
} }
......
...@@ -35,6 +35,9 @@ class ProductServiceDetailPrsenter( ...@@ -35,6 +35,9 @@ class ProductServiceDetailPrsenter(
val dataPackSectionOneModel = OnePlanDetailSecOneModel() val dataPackSectionOneModel = OnePlanDetailSecOneModel()
dataPackSectionOneModel.mobileImageUrl = dataPackSectionOneModel.mobileImageUrl =
response.optJSONObject("section1").optString("mobileImageUrl") response.optJSONObject("section1").optString("mobileImageUrl")
dataPackSectionOneModel.mobileImageUrl2 = response.optJSONObject("section1").optString("mobileImageUrl2")
dataPackSectionOneModel.imageUrl = response.optJSONObject("section1").optString("imageUrl") dataPackSectionOneModel.imageUrl = response.optJSONObject("section1").optString("imageUrl")
dataPackSection.dataPackDetailSecOneModel = dataPackSectionOneModel dataPackSection.dataPackDetailSecOneModel = dataPackSectionOneModel
...@@ -58,6 +61,7 @@ class ProductServiceDetailPrsenter( ...@@ -58,6 +61,7 @@ class ProductServiceDetailPrsenter(
val validate = table.optJSONObject(i).optJSONArray("validity") val validate = table.optJSONObject(i).optJSONArray("validity")
val activation = table.optJSONObject(i).optJSONArray("activation") val activation = table.optJSONObject(i).optJSONArray("activation")
val benefitOffer = table.optJSONObject(i).optString("benefitOffer") val benefitOffer = table.optJSONObject(i).optString("benefitOffer")
val activateBtn = table.optJSONObject(i).optBoolean("activateBtn")
if (table.optJSONObject(i).optJSONArray("callsms") != null && !table.optJSONObject(i) if (table.optJSONObject(i).optJSONArray("callsms") != null && !table.optJSONObject(i)
.optString("code").isNullOrBlank() .optString("code").isNullOrBlank()
...@@ -66,14 +70,19 @@ class ProductServiceDetailPrsenter( ...@@ -66,14 +70,19 @@ class ProductServiceDetailPrsenter(
val callSmsList = ArrayList<String>() val callSmsList = ArrayList<String>()
(0 until callsms.length()).mapTo(callSmsList) { callsms.optString(it) } (0 until callsms.length()).mapTo(callSmsList) { callsms.optString(it) }
val code = table.optJSONObject(i).optString("code") val code = table.optJSONObject(i).optString("code")
val title = table.optJSONObject(i).optString("title")
val icon = table.optJSONObject(i).optString("icon")
dataPackTableModel.callsmsList = callSmsList dataPackTableModel.callsmsList = callSmsList
dataPackTableModel.code = code dataPackTableModel.code = code
dataPackTableModel.title = title
dataPackTableModel.icon = icon
} }
dataPackTableModel.valuePrice = fee.optString(0) dataPackTableModel.valuePrice = fee.optString(0)
dataPackTableModel.priceChange = data.optString(0) dataPackTableModel.priceChange = data.optString(0)
dataPackTableModel.validityDate = validate.optString(0) dataPackTableModel.validityDate = validate.optString(0)
dataPackTableModel.activation = activation.optString(0) dataPackTableModel.activation = activation.optString(0)
dataPackTableModel.activateBtn = activateBtn
dataPackTableModel.benefitOffer = benefitOffer dataPackTableModel.benefitOffer = benefitOffer
......
package com.seatel.mobilehall.ui.packages
import android.content.Context
import android.content.Intent
import android.os.Bundle
import com.android.volley.VolleyError
import com.seatel.mobilehall.R
import com.seatel.mobilehall.data.network.SeatelSuperRequest
import com.seatel.mobilehall.databinding.ActivityRoamingBinding
import com.seatel.mobilehall.ui.base.activity.BaseActivity
import com.seatel.mobilehall.ui.home.interactor.ProductServiceDetailInteractor
import com.seatel.mobilehall.ui.home.model.ValuePackSectionModel
import com.seatel.mobilehall.ui.home.presenter.ProductServiceDetailPrsenter
import com.seatel.mobilehall.ui.packages.adapter.Roaming1Adapter
import com.seatel.mobilehall.util.SeatelAlertDialog
class RoamingActivity : BaseActivity<ActivityRoamingBinding>(),
ProductServiceDetailInteractor.View {
companion object {
fun lunch(context: Context) {
val intent = Intent(context, RoamingActivity::class.java)
context.startActivity(intent)
}
}
override fun getViewBinding(): ActivityRoamingBinding {
return ActivityRoamingBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityEnterRightAnimation()
ProductServiceDetailPrsenter(this, this).onProServiceDetail(
"roaming-to-china",
getPhoneLogin()
)
}
fun scrollToLastPosition() {
val recyclerView = binding.recyclerRoaming
val lastPosition = recyclerView.adapter!!.itemCount + 1
recyclerView.smoothScrollToPosition(lastPosition)
}
override fun onProServiceDetailSucceed(valuePackSectionModel: ValuePackSectionModel) {
binding.recyclerRoaming.adapter =
Roaming1Adapter(this, this.getPhoneLogin(), "any", false, valuePackSectionModel)
}
override fun onProServiceDetailFailed(error: VolleyError) {
SeatelAlertDialog.with(this, SeatelSuperRequest.getErrorMessageFrom(error)).show()
}
override fun onBackPressed() {
super.onBackPressed()
activityExitLeftAnimation()
}
override fun getToolbarTitle(): String {
return resources.getString(R.string.roaming_service)
}
}
\ No newline at end of file
package com.seatel.mobilehall.ui.packages.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.seatel.mobilehall.R
import com.seatel.mobilehall.databinding.ItemLayoutRoamingListBinding
import com.seatel.mobilehall.ui.base.adapter.BaseAdapter
import com.seatel.mobilehall.ui.home.model.ValuePackTableModel
class RoamingListAdapter(
private val context: Context,
private val tableList: List<ValuePackTableModel>,
private val onItemClick: (item: ValuePackTableModel) -> Unit
) : BaseAdapter<RoamingListAdapter.ViewHolder>() {
private var selectedItemPosition: Int = -1 // Holds the position of the selected item
class ViewHolder(var binding: ItemLayoutRoamingListBinding) :
RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): RoamingListAdapter.ViewHolder {
val binding = ItemLayoutRoamingListBinding.inflate(
LayoutInflater.from(parent.context), parent, false
)
return ViewHolder(binding)
}
override fun onBindViewHolder(holder: RoamingListAdapter.ViewHolder, position: Int) {
val item = tableList[position]
// Bind data to views
holder.binding.tvFee.text = item.valuePrice
holder.binding.tvValidity.text = item.validityDate
holder.binding.tvTitle.text = item.title
// Check if the item is selected and update the background accordingly
val isSelected = position == selectedItemPosition
val background = if (isSelected) {
ContextCompat.getDrawable(holder.itemView.context, R.drawable.bg_roaming_round_pink)
} else {
ContextCompat.getDrawable(holder.itemView.context, R.drawable.bg_roaming_round_gray)
}
holder.binding.bgFrame.background = background
// Handle item click to update selection state
holder.itemView.setOnClickListener {
if (selectedItemPosition != position) {
selectedItemPosition = position
notifyDataSetChanged() // Refresh the entire list to update backgrounds
}
onItemClick(item)
}
}
override fun getItemCount(): Int = tableList.size
}
...@@ -28,11 +28,13 @@ import com.seatel.mobilehall.ui.packages.adapter.LoyKobsAdapter ...@@ -28,11 +28,13 @@ import com.seatel.mobilehall.ui.packages.adapter.LoyKobsAdapter
import com.seatel.mobilehall.ui.packages.adapter.OnePlanDetailAdapter import com.seatel.mobilehall.ui.packages.adapter.OnePlanDetailAdapter
import com.seatel.mobilehall.ui.packages.adapter.ProductServicePackageAdapter import com.seatel.mobilehall.ui.packages.adapter.ProductServicePackageAdapter
import com.seatel.mobilehall.ui.packages.adapter.RikReayAdapter import com.seatel.mobilehall.ui.packages.adapter.RikReayAdapter
import com.seatel.mobilehall.ui.packages.adapter.RoamingAdapter
import com.seatel.mobilehall.ui.packages.interactor.RikReayInteractor import com.seatel.mobilehall.ui.packages.interactor.RikReayInteractor
import com.seatel.mobilehall.ui.packages.model.RikReayModel import com.seatel.mobilehall.ui.packages.model.RikReayModel
import com.seatel.mobilehall.ui.packages.presenter.RikReayPresenter import com.seatel.mobilehall.ui.packages.presenter.RikReayPresenter
import com.seatel.mobilehall.util.Constant import com.seatel.mobilehall.util.Constant
import com.seatel.mobilehall.util.SeatelAlertDialog import com.seatel.mobilehall.util.SeatelAlertDialog
import com.seatel.mobilehall.util.SeatelUtils
import com.seatel.mobilehall.util.viewFragmentBinding import com.seatel.mobilehall.util.viewFragmentBinding
import org.json.JSONObject import org.json.JSONObject
...@@ -169,8 +171,9 @@ class ServicesFragment : BaseFragment(), AppProductsInteractor.View, ...@@ -169,8 +171,9 @@ class ServicesFragment : BaseFragment(), AppProductsInteractor.View,
} }
else -> { else -> {
binding.mRecyclerDetail.adapter = binding.mRecyclerDetail.adapter = RoamingAdapter(this,requireContext(),getPhoneLogin(),"any",mCanSubscribe,valuePackSectionModel)
LoyKobsAdapter(requireContext(), "any", mCanSubscribe, valuePackSectionModel) /* binding.mRecyclerDetail.adapter =
LoyKobsAdapter(requireContext(), "any", mCanSubscribe, valuePackSectionModel)*/
} }
} }
} }
...@@ -240,6 +243,11 @@ class ServicesFragment : BaseFragment(), AppProductsInteractor.View, ...@@ -240,6 +243,11 @@ class ServicesFragment : BaseFragment(), AppProductsInteractor.View,
} }
private fun updateButtonColors() { private fun updateButtonColors() {
binding.btnPackage.text = SeatelUtils.translatForDialog(getmContext(),"Packages")
binding.btnPricePlan.text = SeatelUtils.translatForDialog(getmContext(),"Price Plans")
val defaultColor = ContextCompat.getColor(requireContext(), R.color.white) val defaultColor = ContextCompat.getColor(requireContext(), R.color.white)
val selectedColor = val selectedColor =
ContextCompat.getDrawable(requireContext(), R.drawable.bg_button_round_service) ContextCompat.getDrawable(requireContext(), R.drawable.bg_button_round_service)
...@@ -272,6 +280,12 @@ class ServicesFragment : BaseFragment(), AppProductsInteractor.View, ...@@ -272,6 +280,12 @@ class ServicesFragment : BaseFragment(), AppProductsInteractor.View,
} }
} }
fun scrollToLastPosition() {
val recyclerView = binding.mRecyclerDetail
val lastPosition = recyclerView.adapter!!.itemCount + 1
recyclerView.smoothScrollToPosition(lastPosition)
}
override fun buttonActive( override fun buttonActive(
dataValuePack: ValuePackTableModel, dataValuePack: ValuePackTableModel,
amountMB: String, amountMB: String,
......
...@@ -21,12 +21,15 @@ import android.widget.ScrollView; ...@@ -21,12 +21,15 @@ import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.seatel.mobilehall.R; import com.seatel.mobilehall.R;
import com.seatel.mobilehall.ui.base.adapter.BaseAdapter; import com.seatel.mobilehall.ui.base.adapter.BaseAdapter;
import com.seatel.mobilehall.ui.home.activity.TopUpActivity; import com.seatel.mobilehall.ui.home.activity.TopUpActivity;
import com.seatel.mobilehall.ui.packages.RoamingActivity;
import com.seatel.mobilehall.ui.profile.activity.GetMoreDataActivity; import com.seatel.mobilehall.ui.profile.activity.GetMoreDataActivity;
import com.seatel.mobilehall.ui.profile.interactor.SubRowListValuePackInteractor; import com.seatel.mobilehall.ui.profile.interactor.SubRowListValuePackInteractor;
import com.seatel.mobilehall.ui.profile.model.BalancesPostPaidModel; import com.seatel.mobilehall.ui.profile.model.BalancesPostPaidModel;
...@@ -591,12 +594,6 @@ public class MySubscriptionAdapter extends BaseAdapter<RecyclerView.ViewHolder> ...@@ -591,12 +594,6 @@ public class MySubscriptionAdapter extends BaseAdapter<RecyclerView.ViewHolder>
scrollViewKeepListInternetPack = itemView.findViewById(R.id.scroll_list_internet_pack); scrollViewKeepListInternetPack = itemView.findViewById(R.id.scroll_list_internet_pack);
viewListContent = itemView.findViewById(R.id.view_list_content_internet); viewListContent = itemView.findViewById(R.id.view_list_content_internet);
buttonBuy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
GetMoreDataActivity.Companion.lunch(mContext);
}
});
actionSubList = this; actionSubList = this;
} }
...@@ -606,7 +603,17 @@ public class MySubscriptionAdapter extends BaseAdapter<RecyclerView.ViewHolder> ...@@ -606,7 +603,17 @@ public class MySubscriptionAdapter extends BaseAdapter<RecyclerView.ViewHolder>
public void bind(final DataPlansModel dataPlansModel) { public void bind(final DataPlansModel dataPlansModel) {
boolean isValuePackRow = false; boolean isValuePackRow = false;
if (!dataPlansModel.getBuyMore()){ buttonBuy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (dataPlansModel.getName().equals("China Mainland Pack")) {
RoamingActivity.Companion.lunch(mContext);
} else
GetMoreDataActivity.Companion.lunch(mContext);
}
});
if (!dataPlansModel.getBuyMore()) {
buttonBuy.setVisibility(View.GONE); buttonBuy.setVisibility(View.GONE);
} }
...@@ -626,6 +633,7 @@ public class MySubscriptionAdapter extends BaseAdapter<RecyclerView.ViewHolder> ...@@ -626,6 +633,7 @@ public class MySubscriptionAdapter extends BaseAdapter<RecyclerView.ViewHolder>
buttonBuy.setVisibility(View.GONE); buttonBuy.setVisibility(View.GONE);
} }
Log.d("TAG::>>>", "bind: " + dataPlansModel.getName());
title.setText(dataPlansModel.getName()); title.setText(dataPlansModel.getName());
subDate.setText(SeatelUtils subDate.setText(SeatelUtils
......
...@@ -16,6 +16,7 @@ import com.android.volley.VolleyError ...@@ -16,6 +16,7 @@ import com.android.volley.VolleyError
import com.google.gson.Gson import com.google.gson.Gson
import com.seatel.mobilehall.R import com.seatel.mobilehall.R
import com.seatel.mobilehall.data.network.SeatelJSONObjectRequest import com.seatel.mobilehall.data.network.SeatelJSONObjectRequest
import com.seatel.mobilehall.data.network.SeatelSuperRequest
import com.seatel.mobilehall.data.prefs.SeatelSharePreferences import com.seatel.mobilehall.data.prefs.SeatelSharePreferences
import com.seatel.mobilehall.databinding.FragmentProfileBinding import com.seatel.mobilehall.databinding.FragmentProfileBinding
import com.seatel.mobilehall.ui.application.MyApplication import com.seatel.mobilehall.ui.application.MyApplication
...@@ -235,6 +236,8 @@ class ProfilesFragment : BaseFragment(), RequestSlideAccountUserNameInteractor.V ...@@ -235,6 +236,8 @@ class ProfilesFragment : BaseFragment(), RequestSlideAccountUserNameInteractor.V
} }
}.setOnErrorListener { }.setOnErrorListener {
SeatelAlertDialog.with(requireContext(), SeatelSuperRequest.getErrorMessageFrom(it))
.show()
}.execute { }.execute {
it as JSONObject it as JSONObject
......
package com.seatel.mobilehall.util.dialogannouncement
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.view.View
import android.view.ViewGroup
import android.view.Window
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import com.bumptech.glide.Glide
import com.seatel.mobilehall.R
import com.seatel.mobilehall.util.SeatelUtils.Companion.translatForDialog
class CustomDialog(
context: Context,
title: String,
subtitle: String = "",
image: Int,
positiveButtonText: String = "",
negativeButtonText: String = ""
) : Dialog(context) {
private var positiveClickListener: DialogInterface.OnClickListener? = null
private var negativeClickListener: DialogInterface.OnClickListener? = null
init {
initValentine(title, subtitle, image, positiveButtonText, negativeButtonText)
}
private fun initValentine(
title: String,
subtitle: String,
image: Int,
positiveButtonText: String,
negativeButtonText: String
) {
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.dialog_custom)
setCancelable(false)
window?.apply {
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
attributes.windowAnimations = R.style.DialogAnimationScaleInOut
setDimAmount(0.5f)
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
}
val mIcon = findViewById<ImageView>(R.id.logo)
val mTitle = findViewById<TextView>(R.id.title)
val mDescription = findViewById<TextView>(R.id.description)
val mBtnNegative = findViewById<Button>(R.id.btn_negative)
val mBtnPositive = findViewById<Button>(R.id.btn_positive)
mTitle?.text = translatForDialog(context, title)
mDescription?.text = translatForDialog(context, subtitle)
Glide.with(context)
.load(image)
.placeholder(R.drawable.ic_logo)
.into(mIcon)
mBtnPositive?.apply {
text = translatForDialog(context, positiveButtonText)
visibility = if (positiveButtonText.isNotEmpty()) View.VISIBLE else View.GONE
setOnClickListener {
positiveClickListener?.onClick(
this@CustomDialog,
DialogInterface.BUTTON_POSITIVE
)
}
}
mBtnNegative?.apply {
text = translatForDialog(context, negativeButtonText)
visibility = if (negativeButtonText.isNotEmpty()) View.VISIBLE else View.GONE
setOnClickListener {
negativeClickListener?.onClick(
this@CustomDialog,
DialogInterface.BUTTON_NEGATIVE
)
}
}
}
fun setPositiveButton(
text: String,
clickListener: DialogInterface.OnClickListener
): CustomDialog {
val mBtnPositive = findViewById<Button>(R.id.btn_positive)
mBtnPositive?.text = translatForDialog(context, text)
mBtnPositive?.visibility = View.VISIBLE
positiveClickListener = clickListener
return this
}
fun setNegativeButton(
text: String,
clickListener: DialogInterface.OnClickListener
): CustomDialog {
val mBtnNegative = findViewById<Button>(R.id.btn_negative)
mBtnNegative?.text = translatForDialog(context, text)
mBtnNegative?.visibility = View.VISIBLE
negativeClickListener = clickListener
return this
}
}
...@@ -2,6 +2,8 @@ package com.seatel.mobilehall.util.request ...@@ -2,6 +2,8 @@ package com.seatel.mobilehall.util.request
import android.content.Context import android.content.Context
import android.text.TextUtils import android.text.TextUtils
import android.util.Log
import androidx.core.content.ContentProviderCompat.requireContext
import com.android.volley.VolleyError import com.android.volley.VolleyError
import com.seatel.mobilehall.data.prefs.SeatelSharePreferences import com.seatel.mobilehall.data.prefs.SeatelSharePreferences
import com.seatel.mobilehall.ui.home.model.MainDataModel import com.seatel.mobilehall.ui.home.model.MainDataModel
...@@ -65,6 +67,9 @@ class GetMainData( ...@@ -65,6 +67,9 @@ class GetMainData(
model.setEventGame(response.optBoolean("eventGame", false)) model.setEventGame(response.optBoolean("eventGame", false))
model.setBannerBuySim(response.optString("bannerBuySim", "")) model.setBannerBuySim(response.optString("bannerBuySim", ""))
model.setBannerBuyTopup(response.optString("bannerBuyTopup", "")) model.setBannerBuyTopup(response.optString("bannerBuyTopup", ""))
model.setRoamingActivation(response.optBoolean("roamingActivation", false))
model.setSpecialSimcard(response.optBoolean("specialSimcard",false))
if (response.has("profilePicture")) model.setProfilePicture(response.optString("profilePicture")) if (response.has("profilePicture")) model.setProfilePicture(response.optString("profilePicture"))
if (response.has("orderIds")) { if (response.has("orderIds")) {
val dataId = response.optJSONArray("orderIds") val dataId = response.optJSONArray("orderIds")
...@@ -90,17 +95,17 @@ class GetMainData( ...@@ -90,17 +95,17 @@ class GetMainData(
} }
val contactService = response.optJSONArray("contactService") val contactService = response.optJSONArray("contactService")
val mContactService : ArrayList<ContactService> = ArrayList() val mContactService: ArrayList<ContactService> = ArrayList()
for (i in 0 until contactService.length()){ for (i in 0 until contactService.length()) {
mContactService.add( mContactService.add(
ContactService( ContactService(
contactService.optJSONObject(i).optString("type"), contactService.optJSONObject(i).optString("type"),
contactService.optJSONObject(i).optString("value"), contactService.optJSONObject(i).optString("value"),
contactService.optJSONObject(i).optString("label"), contactService.optJSONObject(i).optString("label"),
contactService.optJSONObject(i).optString("icon") contactService.optJSONObject(i).optString("icon")
)
) )
} )
}
model.setContactService(mContactService) model.setContactService(mContactService)
...@@ -109,6 +114,10 @@ class GetMainData( ...@@ -109,6 +114,10 @@ class GetMainData(
response.optString("mrzKey") response.optString("mrzKey")
SeatelSharePreferences.getInstance(context)?.setMainScreenData(Gson().toJson(model)) SeatelSharePreferences.getInstance(context)?.setMainScreenData(Gson().toJson(model))
SeatelSharePreferences.getInstance(context)
?.setRoamingActivation(model.getRoamingActivation())
SeatelSharePreferences.getInstance(context)
?.setSpecialSimcard(model.getSpecialSimcard())
successRespond(true) successRespond(true)
} }
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1.5dp"
android:color="@color/colorGray" />
<corners
android:bottomLeftRadius="15dp"
android:bottomRightRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
<solid android:color="@android:color/white" />
</shape>
\ No newline at end of file
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_roaming_round_pink" android:state_selected="true" />
<item android:drawable="@drawable/bg_roaming_round_gray" android:state_selected="false" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1.5dp"
android:color="@color/colorGray" />
<corners
android:bottomLeftRadius="15dp"
android:bottomRightRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
<solid android:color="@android:color/white" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1.5dp"
android:color="@color/colorPrimary" />
<corners
android:bottomLeftRadius="15dp"
android:bottomRightRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
<solid android:color="@android:color/white" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1.5dp"
android:color="@color/colorPrimary" />
<corners
android:bottomLeftRadius="15dp"
android:bottomRightRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
<solid android:color="@android:color/transparent" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector <selector xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false"> <item android:state_checked="false">
<shape android:shape="oval"> <shape android:shape="oval">
<solid android:color="#2196F3"/> <solid android:color="#2196F3" />
<size android:width="50dp" <size android:width="30dp" android:height="30dp" />
android:height="50dp"/> <stroke android:width="3dp" android:color="#8D727272" />
<stroke android:width="3dp"
android:color="#8D727272"/>
</shape> </shape>
</item> </item>
<item android:state_checked="true"> <item android:state_checked="true">
<shape android:shape="oval"> <shape android:shape="oval">
<solid android:color="#2196F3"/> <solid android:color="#2196F3" />
<size android:width="40dp" <size android:width="30dp" android:height="30dp" />
android:height="40dp"/> <stroke android:width="3dp" android:color="#34c759" />
<stroke android:width="3dp"
android:color="#34c759"/>
</shape> </shape>
</item> </item>
</selector> </selector>
\ No newline at end of file
...@@ -2,17 +2,17 @@ ...@@ -2,17 +2,17 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false"> <item android:state_checked="false">
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<corners android:radius="50dp" /> <corners android:radius="20dp" />
<solid android:color="#818C8C8C" /> <solid android:color="@color/colorBgWhiteGray" />
<stroke android:color="#8D727272" android:width="1dp"/> <stroke android:width="1dp" android:color="#8D727272" />
<size android:height="20dp" /> <size android:height="20dp" />
</shape> </shape>
</item> </item>
<item android:state_checked="true"> <item android:state_checked="true">
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<corners android:radius="50dp" /> <corners android:radius="20dp" />
<solid android:color="#34c759" /> <solid android:color="#34c759" />
<stroke android:color="#8c8c8c" android:width="1dp"/> <stroke android:width="1dp" android:color="#8c8c8c" />
<size android:height="20dp" /> <size android:height="20dp" />
</shape> </shape>
</item> </item>
......
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:height="24dp" android:tint="#EC008C" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,19h-2v-2h2v2zM15.07,11.25l-0.9,0.92C13.45,12.9 13,13.5 13,15h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2L8,9c0,-2.21 1.79,-4 4,-4s4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_roaming"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/margin_2x_size"
android:layout_marginEnd="@dimen/margin_2x_size"
android:background="@drawable/bg_dialog_round"
android:backgroundTint="@color/white"
android:padding="@dimen/margin_2x_size">
<ImageView
android:id="@+id/logo"
android:layout_width="50dp"
android:layout_height="50dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_logo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.seatel.mobilehall.util.customview.CustomTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/logo" />
<TextView
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_1x_size"
android:gravity="center"
android:text=""
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title" />
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="@dimen/margin_1x_size"
android:background="@color/bg_grey"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/description" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_1x_size"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/view">
<Button
android:id="@+id/btn_negative"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_marginEnd="@dimen/margin_2x_size"
android:layout_weight="1"
android:background="@drawable/bg_box_white_stroke_primary"
android:padding="@dimen/margin_2x_size"
android:textColor="@color/black"
android:textSize="@dimen/small_text_size"
android:visibility="visible" />
<Button
android:id="@+id/btn_positive"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_weight="1"
android:background="@drawable/bg_button_primary"
android:padding="@dimen/margin_2x_size"
android:textColor="@color/white"
android:textSize="@dimen/small_text_size"
android:visibility="gone" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -132,6 +132,7 @@ ...@@ -132,6 +132,7 @@
</RelativeLayout> </RelativeLayout>
<include <include
android:visibility="gone"
android:id="@+id/layout_bottom_sheet_buy_yes_number_next" android:id="@+id/layout_bottom_sheet_buy_yes_number_next"
layout="@layout/layout_bottom_sheet_buy_yes_number_next" /> layout="@layout/layout_bottom_sheet_buy_yes_number_next" />
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>
......
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
<Button <Button
android:id="@+id/btn_package" android:id="@+id/btn_package"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="40dp"
android:layout_weight="1" android:layout_weight="1"
android:text="Packages" android:text="Packages"
android:textAllCaps="false" android:textAllCaps="false"
...@@ -92,12 +92,13 @@ ...@@ -92,12 +92,13 @@
<Button <Button
android:id="@+id/btn_price_plan" android:id="@+id/btn_price_plan"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="40dp"
android:layout_weight="1" android:layout_weight="1"
android:text="Price Plans" android:text="Price Plans"
android:textAllCaps="false" android:textAllCaps="false"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="12sp" /> android:textSize="12sp" />
</LinearLayout> </LinearLayout>
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/bg_frame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/margin_1x_size"
android:padding="@dimen/margin_2x_size">
<com.seatel.mobilehall.util.customview.CustomTextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_2x_size"
app:layout_constraintBottom_toTopOf="@+id/view"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginTop="@dimen/margin_2x_size"
android:layout_marginBottom="@dimen/margin_2x_size"
android:background="@color/colorGray"
app:layout_constraintBottom_toTopOf="@+id/tv_fee"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title" />
<com.seatel.mobilehall.util.customview.CustomTextView
android:id="@+id/tv_fee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/xxl_large_text_size"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/tv_validity"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<com.seatel.mobilehall.util.customview.CustomTextView
android:id="@+id/tv_validity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/margin_2x_size"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/large_text_size"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -640,4 +640,15 @@ ...@@ -640,4 +640,15 @@
<!-- TODO: Remove or change this placeholder text --> <!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string> <string name="hello_blank_fragment">Hello blank fragment</string>
<!-- Roaming1China -->
<string name="not_special_sim_msg">Not Special Sim Message</string>
<string name="confirm_deactivate_roaming_msg">Confirm Deactivate Roaming Message</string>
<string name="active_roaming_service_msg">Are you sure want to activate the Roaming to China Mainland service?</string>
<string name="active_roaming_service_success_msg">You’ve successfully activated the Roaming Service. Please enable “Data Roaming” function in your device setting.</string>
<string name="inactive_roaming_service_msg">Not Yet Turn On Roaming</string>
<string name="enable_roaming_msg">Enable “Data Roaming” in setting</string>
<string name="roaming_service">Roaming Service</string>
<string name="note_roaming_service">Note: This Package does not automatically renew</string>
</resources> </resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment