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
...@@ -51,6 +51,11 @@ ...@@ -51,6 +51,11 @@
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
</config> </config>
</layout> </layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_confirm_buy_data_pack.xml">
<config>
<theme>@style/AppBaseTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_confirmation.xml"> <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_confirmation.xml">
<config> <config>
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
...@@ -66,11 +71,21 @@ ...@@ -66,11 +71,21 @@
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
</config> </config>
</layout> </layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_get_more_data.xml">
<config>
<theme>@style/AppBaseTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_home.xml"> <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_home.xml">
<config> <config>
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
</config> </config>
</layout> </layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_login.xml">
<config>
<theme>@style/AppBaseTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_main.xml"> <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_main.xml">
<config> <config>
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
...@@ -91,6 +106,11 @@ ...@@ -91,6 +106,11 @@
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
</config> </config>
</layout> </layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_roaming.xml">
<config>
<theme>@style/AppBaseTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_setting.xml"> <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_setting.xml">
<config> <config>
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
...@@ -116,6 +136,16 @@ ...@@ -116,6 +136,16 @@
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
</config> </config>
</layout> </layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/dialog_custom.xml">
<config>
<theme>@style/AppBaseTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/dialog_game.xml">
<config>
<theme>@style/AppBaseTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/dialog_support.xml"> <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/dialog_support.xml">
<config> <config>
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
...@@ -171,6 +201,11 @@ ...@@ -171,6 +201,11 @@
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
</config> </config>
</layout> </layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_profile.xml">
<config>
<theme>@style/AppBaseTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_services.xml"> <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/fragment_services.xml">
<config> <config>
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
...@@ -226,6 +261,11 @@ ...@@ -226,6 +261,11 @@
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
</config> </config>
</layout> </layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_layout_roaming_list.xml">
<config>
<theme>@style/AppBaseTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_loy_kob_list.xml"> <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_loy_kob_list.xml">
<config> <config>
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
...@@ -241,6 +281,16 @@ ...@@ -241,6 +281,16 @@
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
</config> </config>
</layout> </layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_my_subscription_data_pack.xml">
<config>
<theme>@style/AppBaseTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_my_subscription_post_paid.xml">
<config>
<theme>@style/AppBaseTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_order_view_holder.xml"> <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_order_view_holder.xml">
<config> <config>
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
...@@ -286,6 +336,11 @@ ...@@ -286,6 +336,11 @@
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
</config> </config>
</layout> </layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/layout_rik_reay.xml">
<config>
<theme>@style/AppBaseTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/layout_selected_number.xml"> <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/layout_selected_number.xml">
<config> <config>
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
...@@ -296,6 +351,11 @@ ...@@ -296,6 +351,11 @@
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
</config> </config>
</layout> </layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/layout_win_angpav.xml">
<config>
<theme>@style/AppBaseTheme</theme>
</config>
</layout>
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/term_service_privacy_policy.xml"> <layout url="file://$PROJECT_DIR$/app/src/main/res/layout/term_service_privacy_policy.xml">
<config> <config>
<theme>@style/AppBaseTheme</theme> <theme>@style/AppBaseTheme</theme>
...@@ -343,275 +403,52 @@ ...@@ -343,275 +403,52 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="b947e2f9-b70e-404d-b6f9-40fd3f83c1e2" name="Changes" comment="fix pinfragment and update game"> <list default="true" id="b947e2f9-b70e-404d-b6f9-40fd3f83c1e2" name="Changes" comment="fix pinfragment and update game">
<change afterPath="$PROJECT_DIR$/app/libs/circleprogressbar-debug.aar" afterDir="false" /> <change afterPath="$PROJECT_DIR$/.idea/android-yes.iml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/ImageSliderAdapter.kt" afterDir="false" /> <change afterPath="$PROJECT_DIR$/.idea/assetWizardSettings.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/model/ContactService.kt" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/RoamingActivity.kt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/ProfileFaceScanActivity.java" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/Roaming1Adapter.kt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/yes_member/YesMemberAdapter.kt" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/RoamingAdapter.kt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/yes_member/YesMemberFragment.kt" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/RoamingListAdapter.kt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/yes_member/adapter/PartnerCategoryAdapter.kt" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/dialogannouncement/CustomDialog.kt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/yes_member/interactor/TopPartnerInteractor.kt" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/bg_dialog_round.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/yes_member/model/PartnerCategoryModelItem.kt" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/bg_frame_selector.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/yes_member/model/TopPartnerModelItem.kt" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/bg_roaming_round_gray.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/yes_member/presenter/TopPartnerPresenter.kt" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/bg_roaming_round_pink.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/CircularFrameLayout.java" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/bg_transparent_roaming_round_pink.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/RoundedPreviewView.java" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_confirmation.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/BottomSheetFaceScanFragment.kt" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_roaming_banner.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/background_rewardldpi.png" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_roaming.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/bg_cholchoung.jpg" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/res/layout/dialog_custom.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/bg_yes_member.xml" afterDir="false" /> <change afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_layout_roaming_list.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/billing_selector.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.gradle/8.9/checksums/checksums.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.9/checksums/checksums.lock" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/cholchoung.png" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.gradle/8.9/executionHistory/executionHistory.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.9/executionHistory/executionHistory.bin" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/custom_thumb.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.gradle/8.9/executionHistory/executionHistory.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.9/executionHistory/executionHistory.lock" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/custom_track.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.gradle/8.9/fileHashes/fileHashes.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.9/fileHashes/fileHashes.bin" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/home_selector.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.gradle/8.9/fileHashes/fileHashes.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.9/fileHashes/fileHashes.lock" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_billing_selected.png" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.gradle/8.9/fileHashes/resourceHashesCache.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.9/fileHashes/resourceHashesCache.bin" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_camera_len_clean.png" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_choung.png" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_face.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_face_pf.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_home_selected.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_light.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_packages_selected.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_profile_face_scan.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_profile_selected.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_seatel_logo_selected.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_yes_memeber_selected.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/packages_selector.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/profile_selector.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/yes_member_selector.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_cholchoung.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_face_scan.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_yes_member.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_image_slider.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_layout_roaming.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_partner_category.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_yes_member.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/layout_bottom_sheet_face_scan_dialog.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/rounded_preview_view.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/src/main/res/raw/cholchoung.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/7.2/dependencies-accessors/dependencies-accessors.lock" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/7.2/dependencies-accessors/gc.properties" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/7.2/executionHistory/executionHistory.bin" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/7.2/executionHistory/executionHistory.lock" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/7.2/fileChanges/last-build.bin" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/7.2/fileHashes/fileHashes.bin" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/7.2/fileHashes/fileHashes.lock" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/7.2/fileHashes/resourceHashesCache.bin" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/7.2/gc.properties" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/buildOutputCleanup/cache.properties" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/buildOutputCleanup/outputFiles.bin" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/checksums/checksums.lock" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/checksums/md5-checksums.bin" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/checksums/sha1-checksums.bin" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/vcs-1/gc.properties" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.gitignore" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.name" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/compiler.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/gradle.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/kotlinc.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/navEditor.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/app/build.gradle" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/app/build.gradle" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/release/output-metadata.json" beforeDir="false" afterPath="$PROJECT_DIR$/app/release/output-metadata.json" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/release/output-metadata.json" beforeDir="false" afterPath="$PROJECT_DIR$/app/release/output-metadata.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/data/network/BaseApiResponse.kt" beforeDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/data/prefs/SeatelSharePreferences.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/data/prefs/SeatelSharePreferences.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/data/network/repository/HomeRepository.kt" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/data/network/repository/ViewModelProviderFactory.kt" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/data/network/retrofit/API.kt" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/data/network/retrofit/RetrofitInstance.kt" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/data/network/viewmodel/HomeViewModel.kt" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/base/activity/BaseActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/base/activity/BaseActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/base/fragment/BaseFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/base/fragment/BaseFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/game/GameActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/game/GameActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/game/GameModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/game/GameModel.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/game/GamePresenter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/game/GamePresenter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/game/GameRewardActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/game/GameRewardActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/game/GameRewardAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/game/GameRewardAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/AliPayMpayPaymentActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/AliPayMpayPaymentActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/AliPayPaymentActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/AliPayPaymentActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/BaseProductAndServiceActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/BaseProductAndServiceActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/BuyTopUpCardActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/BuyTopUpCardActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/BuyYesNumberPhasePlanSubscriptionActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/BuyYesNumberPhasePlanSubscriptionActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/BuyYesNumberPhaseSummaryActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/BuyYesNumberPhaseSummaryActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/BuyYesNumberPhaseTopUpActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/BuyYesNumberPhaseTopUpActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/BuyYesNumberPhaseTwoActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/BuyYesNumberPhaseTwoActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/ConfirmBuyDataPackActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/ConfirmBuyDataPackActivity.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/ConfirmBuyDataPackActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/ConfirmBuyDataPackActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/ConfirmationActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/ConfirmationActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/ContactUsActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/ContactUsActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/DataPackActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/DataPackActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/DeviceDetailActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/DeviceDetailActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/EShopPhaseTwoActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/EShopPhaseTwoActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/FaqDetailActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/FaqDetailActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/HistoryActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/HistoryActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/InternationalCallDetailActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/InternationalCallDetailActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/LocationShopMapActivity.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/LocationShopMapActivity.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/LoyKobActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/LoyKobActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/MyCartActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/MyCartActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/MyOrderActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/MyOrderActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/MySubscriptionsActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/MySubscriptionsActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/NotificationListActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/NotificationListActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/OnePlanDetailActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/OnePlanDetailActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/OrderActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/OrderActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/OrderPaymentSuccessActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/OrderPaymentSuccessActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/PaymentActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/PaymentActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/ProductServiceActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/ProductServiceActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/ProductServiceDetailActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/ProductServiceDetailActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/PromotionActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/PromotionActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/SuccessBuyDataPackActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/SuccessBuyDataPackActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/SupportActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/SupportActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/SupportListActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/SupportListActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/TopUpActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/TopUpActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/TopUpSuccessActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/TopUpSuccessActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/WingPaymentActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/WingPaymentActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/YesHubNearestActivity.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/activity/YesHubNearestActivity.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/AdapterListParentOrder.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/AdapterListParentOrder.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/AdapterParentOrder.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/AdapterParentOrder.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/BuySimSummaryAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/BuySimSummaryAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/EshopPhaseTwoAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/EshopPhaseTwoAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/FAQsAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/FAQsAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/FullNumberAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/FullNumberAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/MyCartAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/MyCartAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/NearestYesHubLocationAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/NearestYesHubLocationAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/OrderSummaryAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/OrderSummaryAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/PromotionAdapter.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/PromotionAdapter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/RelatedQuestionListAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/RelatedQuestionListAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/ShopLocationAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/ShopLocationAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/SupportAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/SupportAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/SupportListAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/SupportListAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/SupportedDeviceDetailAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/adapter/SupportedDeviceDetailAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/BaseBuySimFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/BaseBuySimFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/FullNumberFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/FullNumberFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/HomeFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/HomeFragment.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/HomeFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/HomeFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/LastFourDigitFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/LastFourDigitFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/OrderPaymentFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/OrderPaymentFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/OrderPickUpDeliveryFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/OrderPickUpDeliveryFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/OrderReviewConfirmFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/OrderReviewConfirmFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/OrderSummaryFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/OrderSummaryFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/PinFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/PinFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/PinlessFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/PinlessFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/PrefixNumberOneFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/PrefixNumberOneFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/PrefixNumberTwoFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/PrefixNumberTwoFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/SupportBottomSheetFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/fragment/SupportBottomSheetFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/model/BannersModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/model/BannersModel.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/model/MainDataModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/model/MainDataModel.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/model/MainDataModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/model/MainDataModel.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/presenter/ProfilePresenter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/presenter/ProfilePresenter.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/model/OnePlanDetailSecOneModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/model/OnePlanDetailSecOneModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/BuySimSummaryHolder.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/BuySimSummaryHolder.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/model/ValuePackSecTwoModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/model/ValuePackSecTwoModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/CartDeviceViewHolder.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/CartDeviceViewHolder.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/model/ValuePackTableModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/model/ValuePackTableModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/CartScratchViewHolder.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/CartScratchViewHolder.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/presenter/ProductServiceDetailPrsenter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/presenter/ProductServiceDetailPrsenter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/CartSimViewHolder.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/CartSimViewHolder.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/fragment/ServicesFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/fragment/ServicesFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/EhubViewHolder.kt" beforeDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/adapter/MySubscriptionAdapter.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/adapter/MySubscriptionAdapter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/MyOrderHeaderIdViewHolder.kt" beforeDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/fragment/ProfilesFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/fragment/ProfilesFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/MyOrderMainRowViewHolder.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/MyOrderMainRowViewHolder.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/OrderViewHolder.kt" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/PlanSubscriptionViewHolder.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/PlanSubscriptionViewHolder.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/PrefixBottomSheetViewHolder.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/PrefixBottomSheetViewHolder.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/SimPriceViewHolder.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/home/viewholder/SimPriceViewHolder.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/invite_friend/BottomInviteFriendAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/invite_friend/BottomInviteFriendAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/invite_friend/InviteFriendActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/invite_friend/InviteFriendActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/invite_friend/InviteFriendQrcodeActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/invite_friend/InviteFriendQrcodeActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/invite_friend/InviteFriendScanQrActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/invite_friend/InviteFriendScanQrActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/invite_friend/InviteFriendScanSuccessActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/invite_friend/InviteFriendScanSuccessActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/lang/adapter/LanguageAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/lang/adapter/LanguageAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/lang/fragment/LanguageFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/lang/fragment/LanguageFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/activity/LoginActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/activity/LoginActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/activity/TermsAndConditionsActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/activity/TermsAndConditionsActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/activity/UpdatedSimProfileActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/activity/UpdatedSimProfileActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/fragment/ConfirmationForgotPassFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/fragment/ConfirmationForgotPassFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/fragment/ConfirmationFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/fragment/ConfirmationFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/fragment/ForgotPasswordFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/fragment/ForgotPasswordFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/fragment/LoginFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/fragment/LoginFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/fragment/NewPasswordFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/fragment/NewPasswordFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/fragment/SignUpFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/fragment/SignUpFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/model/ProfileModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/login/model/ProfileModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/main/MainActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/main/MainActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/InternationalAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/InternationalAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/LoyKobListAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/LoyKobListAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/LoyKobsAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/LoyKobsAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/ProductServicePackageAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/ProductServicePackageAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/RikReayAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/adapter/RikReayAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/fragment/PackageFragment.kt" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/fragment/TestFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/packages/fragment/ServicesFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/ChangePasswordActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/ChangePasswordActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/ChangePasswordCompletedActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/ChangePasswordCompletedActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/EnableFingerprintActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/EnableFingerprintActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/FingerprintConfirmationActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/FingerprintConfirmationActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/GetMoreDataActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/GetMoreDataActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/ProfileActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/ProfileActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/ScanMRZActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/ScanMRZActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/SettingActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/SettingActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/SettingLanguageActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/activity/SettingLanguageActivity.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/adapter/BottomAccountChooserAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/adapter/BottomAccountChooserAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/fragment/BottomSheetFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/fragment/BottomSheetFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/usage/fragement/InternetFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/usage/fragement/InternetFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/usage/fragement/UsageFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/usage/fragement/UsageFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/usage/fragement/VoiceFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/usage/fragement/VoiceFragment.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/AngPavDialog.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/AngPavDialog.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/BottomAccountChooserDialog.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/BottomAccountChooserDialog.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/BottomInviteFriendDialog.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/BottomInviteFriendDialog.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/Constant.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/Constant.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/ActivateBuySimView.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/ActivateBuySimView.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/BottomChooserDialog.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/BottomChooserDialog.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/DialogAddCart.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/DialogAddCart.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/InternetPackDetailView.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/InternetPackDetailView.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/ListSubscriptionPostPaidCircleBalancesView.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/ListSubscriptionPostPaidCircleBalancesView.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/OrderSectionView.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/OrderSectionView.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/TermServicePrivacyPolicyView.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/TermServicePrivacyPolicyView.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/adapter/BottomChooserAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/customview/adapter/BottomChooserAdapter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/dialogannouncement/CustomGameDialog.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/dialogannouncement/CustomGameDialog.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/request/GetMainData.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/request/GetMainData.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/request/GetMainData.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/request/GetMainData.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/view/ActivateBuySimView.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/view/ActivateBuySimView.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/res/drawable/custom_thumb.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/drawable/custom_thumb.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/view/ItemDataPackView.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/view/ItemDataPackView.kt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/res/drawable/custom_track.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/drawable/custom_track.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/view/OrderBottomBarView.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/view/OrderBottomBarView.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/view/ViewDataPackTabFooter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/util/view/ViewDataPackTabFooter.kt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/drawable/bg_dialog_game.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/drawable/bg_dialog_game.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/drawable/bg_radius_white.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/drawable/bg_radius_white.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/drawable/ic_billing.png" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_billing.png" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/drawable/ic_inactive_packages.png" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_packages.png" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/activity_ang_pao_list.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/activity_buy_number_plan_subscription.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_buy_number_plan_subscription.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/activity_buy_number_sumarry.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_buy_number_sumarry.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/activity_buy_top_up_card.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_buy_top_up_card.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/activity_change_password.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_change_password.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/activity_eshop_phase_two.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_eshop_phase_two.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/activity_profile.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_profile.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/activity_top_up_amount.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_top_up_amount.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/activity_veaykaorm.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/dialog_ang_pao_claimed.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/dialog_game.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/dialog_game.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/dialog_support.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/dialog_support.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/dialog_valentine.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_full_number.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_full_number.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_full_number.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_full_number.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_home.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_home.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_services.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_services.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_last_four_digit.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_last_four_digit.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/res/layout/item_layout_roaming.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_layout_roaming.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_package.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_pin.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_pin.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_pinless.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_pinless.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_prefix_number_two.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_prefix_number_two.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_test.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_services.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/item_game_reward.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_game_reward.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/item_layout_loy_kob_tab.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_layout_loy_kob_tab.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/item_loy_kob_list.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_loy_kob_list.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/item_my_subscription_data_pack.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_my_subscription_data_pack.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/item_order_view_holder.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/item_order_view_holder.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/layout_bottom_billing.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/layout_game_reward.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/layout_game_reward.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/valentine_reward_item.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/valentine_reward_layout.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/view_activate_buy_sim.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/view_activate_buy_sim.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/layout/view_data_pack_tab_footer.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/view_data_pack_tab_footer.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/menu/bottom_nav_menu.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/menu/bottom_nav_menu.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/navigation/mobile_navigation.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/navigation/mobile_navigation.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/raw/mystery_box.json" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/values/colors.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values/colors.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/values/themes.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values/themes.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gradle.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gradle.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/settings.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/settings.gradle" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
...@@ -621,7 +458,7 @@ ...@@ -621,7 +458,7 @@
<component name="ClangdSettings"> <component name="ClangdSettings">
<option name="formatViaClangd" value="false" /> <option name="formatViaClangd" value="false" />
</component> </component>
<component name="ExecutionTargetManager" SELECTED_TARGET="device_and_snapshot_combo_box_target[]" /> <component name="ExecutionTargetManager" SELECTED_TARGET="device_and_snapshot_combo_box_target[DeviceId(pluginId=PhysicalDevice, isTemplate=false, identifier=serial=RFCT414QYJF)]" />
<component name="ExternalProjectsData"> <component name="ExternalProjectsData">
<projectState path="$PROJECT_DIR$"> <projectState path="$PROJECT_DIR$">
<ProjectState /> <ProjectState />
...@@ -671,17 +508,17 @@ ...@@ -671,17 +508,17 @@
<option value="Kotlin File" /> <option value="Kotlin File" />
<option value="Kotlin Interface" /> <option value="Kotlin Interface" />
<option value="Kotlin Data Class" /> <option value="Kotlin Data Class" />
<option value="resourceFile" />
<option value="Kotlin Class" /> <option value="Kotlin Class" />
<option value="layoutResourceFile" /> <option value="layoutResourceFile" />
<option value="resourceFile" />
</list> </list>
</option> </option>
</component> </component>
<component name="GenerateSignedApkSettings"> <component name="GenerateSignedApkSettings">
<option name="EXPORT_PRIVATE_KEY" value="false" />
<option name="KEY_STORE_PATH" value="$PROJECT_DIR$/seashop.jks" /> <option name="KEY_STORE_PATH" value="$PROJECT_DIR$/seashop.jks" />
<option name="KEY_ALIAS" value="seatel_Cambodia" /> <option name="KEY_ALIAS" value="seatel_Cambodia" />
<option name="REMEMBER_PASSWORDS" value="true" /> <option name="REMEMBER_PASSWORDS" value="true" />
<option name="BUILD_TARGET_KEY" value="apk" />
</component> </component>
<component name="Git.Settings"> <component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
...@@ -717,53 +554,54 @@ ...@@ -717,53 +554,54 @@
<option name="hideEmptyMiddlePackages" value="true" /> <option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent">{ <component name="PropertiesComponent"><![CDATA[{
&quot;keyToString&quot;: { "keyToString": {
&quot;Android App.app.executor&quot;: &quot;Run&quot;, "Android App.app.executor": "Run",
&quot;ApkExportedModule&quot;: &quot;seatel.app&quot;, "ApkExportedModule": "seatel.app",
&quot;BundleExportedModule&quot;: &quot;seatel.app&quot;, "BundleExportedModule": "seatel.app",
&quot;ExportApk.ApkPathForseatel.app&quot;: &quot;/Users/seatel/seatel_project/android-yes/app&quot;, "ExportApk.ApkPathForseatel.app": "/Users/seatel/seatel_project/android-yes/app",
&quot;ExportBundle.BundlePathForseatel.app&quot;: &quot;/Users/seatel/Documents/yes_apk&quot;, "ExportBundle.BundlePathForseatel.app": "/Users/seatel/Desktop/yes_apk",
&quot;Gradle.Upgrade Gradle wrapper.executor&quot;: &quot;Run&quot;, "Gradle.Upgrade Gradle wrapper.executor": "Run",
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;, "RunOnceActivity.OpenProjectViewOnStart": "true",
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;, "RunOnceActivity.ShowReadmeOnStart": "true",
&quot;RunOnceActivity.cidr.known.project.marker&quot;: &quot;true&quot;, "RunOnceActivity.cidr.known.project.marker": "true",
&quot;RunOnceActivity.readMode.enableVisualFormatting&quot;: &quot;true&quot;, "RunOnceActivity.readMode.enableVisualFormatting": "true",
&quot;android-custom-view/Users/seatel/.gradle/caches/modules-2/files-2.1/androidx.recyclerview/recyclerview/1.2.1/f0f93e67af3f7417bdd560d5142f6dec4fe629c3/recyclerview-1.2.1-sources.jar!/androidx/recyclerview/widget/RecyclerView.java_SELECTED&quot;: &quot;RecyclerView&quot;, "SHARE_PROJECT_CONFIGURATION_FILES": "true",
&quot;android-custom-view/Users/seatel/.gradle/caches/modules-2/files-2.1/com.airbnb.android/lottie/6.0.0/5aee39d6c9bb4328e5d6a48e37f39fbff6c80a92/lottie-6.0.0-sources.jar!/com/airbnb/lottie/LottieAnimationView.java_SELECTED&quot;: &quot;LottieAnimationView&quot;, "android-custom-view/Users/seatel/.gradle/caches/modules-2/files-2.1/androidx.recyclerview/recyclerview/1.2.1/f0f93e67af3f7417bdd560d5142f6dec4fe629c3/recyclerview-1.2.1-sources.jar!/androidx/recyclerview/widget/RecyclerView.java_SELECTED": "RecyclerView",
&quot;android-custom-view/Users/seatel/.gradle/caches/modules-2/files-2.1/com.google.android.material/material/1.6.1/d4d703885d24c61bc0ec39a9a705969e41d773ef/material-1.6.1-sources.jar!/com/google/android/material/navigation/NavigationBarView.java_SELECTED&quot;: &quot;NavigationBarView&quot;, "android-custom-view/Users/seatel/.gradle/caches/modules-2/files-2.1/com.airbnb.android/lottie/6.0.0/5aee39d6c9bb4328e5d6a48e37f39fbff6c80a92/lottie-6.0.0-sources.jar!/com/airbnb/lottie/LottieAnimationView.java_SELECTED": "LottieAnimationView",
&quot;android-custom-view/Users/seatel/Library/Android/sdk/sources/android-33/android/view/View.java_SELECTED&quot;: &quot;View&quot;, "android-custom-view/Users/seatel/.gradle/caches/modules-2/files-2.1/com.google.android.material/material/1.6.1/d4d703885d24c61bc0ec39a9a705969e41d773ef/material-1.6.1-sources.jar!/com/google/android/material/navigation/NavigationBarView.java_SELECTED": "NavigationBarView",
&quot;android-custom-view/Users/seatel/android-yes/app/src/main/java/com/seatel/mobilehall/util/circleprogress/ArcProgress.java_SELECTED&quot;: &quot;ArcProgress&quot;, "android-custom-view/Users/seatel/Library/Android/sdk/sources/android-33/android/view/View.java_SELECTED": "View",
&quot;android-custom-view/Users/seatel/android-yes/app/src/main/java/com/seatel/mobilehall/util/customview/CustomButton.kt_SELECTED&quot;: &quot;CustomButton&quot;, "android-custom-view/Users/seatel/android-yes/app/src/main/java/com/seatel/mobilehall/util/circleprogress/ArcProgress.java_SELECTED": "ArcProgress",
&quot;android-custom-view/Users/seatel/android-yes/app/src/main/java/com/seatel/mobilehall/util/customview/CustomTextView.kt_SELECTED&quot;: &quot;CustomTextView&quot;, "android-custom-view/Users/seatel/android-yes/app/src/main/java/com/seatel/mobilehall/util/customview/CustomButton.kt_SELECTED": "CustomButton",
&quot;android-custom-view/Users/seatel/android-yes/app/src/main/java/com/seatel/mobilehall/util/customview/ErrorHandleView.java_SELECTED&quot;: &quot;ErrorHandleView&quot;, "android-custom-view/Users/seatel/android-yes/app/src/main/java/com/seatel/mobilehall/util/customview/CustomTextView.kt_SELECTED": "CustomTextView",
&quot;android-custom-view/Users/seatel/android-yes/app/src/main/java/com/seatel/mobilehall/util/view/ViewDataPackTabFooter.kt_SELECTED&quot;: &quot;ViewDataPackTabFooter&quot;, "android-custom-view/Users/seatel/android-yes/app/src/main/java/com/seatel/mobilehall/util/customview/ErrorHandleView.java_SELECTED": "ErrorHandleView",
&quot;android-custom-view/Users/seatel/seatel_project/android-yes/app/src/main/java/com/seatel/mobilehall/util/CircularFrameLayout.java_SELECTED&quot;: &quot;CircularFrameLayout&quot;, "android-custom-view/Users/seatel/android-yes/app/src/main/java/com/seatel/mobilehall/util/view/ViewDataPackTabFooter.kt_SELECTED": "ViewDataPackTabFooter",
&quot;android-custom-view/Users/seatel/seatel_project/android-yes/app/src/main/java/com/seatel/mobilehall/util/RoundedPreviewView.java_SELECTED&quot;: &quot;RoundedPreviewView&quot;, "android-custom-view/Users/seatel/seatel_project/android-yes/app/src/main/java/com/seatel/mobilehall/util/CircularFrameLayout.java_SELECTED": "CircularFrameLayout",
&quot;android-custom-view/Users/seatel/seatel_project/android-yes/app/src/main/java/com/seatel/mobilehall/util/customview/ActivateBuySimView.kt_SELECTED&quot;: &quot;ActivateBuySimView&quot;, "android-custom-view/Users/seatel/seatel_project/android-yes/app/src/main/java/com/seatel/mobilehall/util/RoundedPreviewView.java_SELECTED": "RoundedPreviewView",
&quot;android-custom-view/Users/seatel/seatel_project/android-yes/app/src/main/java/com/seatel/mobilehall/util/view/ActivateBuySimView.kt_SELECTED&quot;: &quot;ActivateBuySimView&quot;, "android-custom-view/Users/seatel/seatel_project/android-yes/app/src/main/java/com/seatel/mobilehall/util/customview/ActivateBuySimView.kt_SELECTED": "ActivateBuySimView",
&quot;cf.first.check.clang-format&quot;: &quot;false&quot;, "android-custom-view/Users/seatel/seatel_project/android-yes/app/src/main/java/com/seatel/mobilehall/util/view/ActivateBuySimView.kt_SELECTED": "ActivateBuySimView",
&quot;cidr.known.project.marker&quot;: &quot;true&quot;, "cf.first.check.clang-format": "false",
&quot;com.google.services.firebase.aqiPopupShown&quot;: &quot;true&quot;, "cidr.known.project.marker": "true",
&quot;dart.analysis.tool.window.visible&quot;: &quot;false&quot;, "com.google.services.firebase.aqiPopupShown": "true",
&quot;git-widget-placeholder&quot;: &quot;main&quot;, "dart.analysis.tool.window.visible": "false",
&quot;kotlin-language-version-configured&quot;: &quot;true&quot;, "git-widget-placeholder": "main",
&quot;last_directory_selection&quot;: &quot;/Users/seatel/seatel_project/android-yes/app/src/main/res/drawable&quot;, "kotlin-language-version-configured": "true",
&quot;last_opened_file_path&quot;: &quot;/Users/seatel/seatel_project/android-yes/app/src/main/res/drawable&quot;, "last_directory_selection": "/Users/seatel/seatel_project/android-yes/app/src/main/res/drawable",
&quot;memory.settings.postsync.last.time.stamp&quot;: &quot;1725420718992&quot;, "last_opened_file_path": "/Users/seatel/seatel_project/android-yes/app/src/main/res/drawable",
&quot;project.structure.last.edited&quot;: &quot;SDK Location&quot;, "memory.settings.postsync.last.time.stamp": "1725420718992",
&quot;project.structure.proportion&quot;: &quot;0.17&quot;, "project.structure.last.edited": "SDK Location",
&quot;project.structure.side.proportion&quot;: &quot;0.2&quot;, "project.structure.proportion": "0.17",
&quot;run.code.analysis.last.selected.profile&quot;: &quot;pProject Default&quot;, "project.structure.side.proportion": "0.2",
&quot;settings.editor.selected.configurable&quot;: &quot;reference.settingsdialog.project.gradle&quot;, "run.code.analysis.last.selected.profile": "pProject Default",
&quot;show.migrate.to.gradle.popup&quot;: &quot;false&quot; "settings.editor.selected.configurable": "reference.settingsdialog.project.gradle",
"show.migrate.to.gradle.popup": "false"
}, },
&quot;keyToStringList&quot;: { "keyToStringList": {
&quot;ExportApk.BuildVariants&quot;: [ "ExportApk.BuildVariants": [
&quot;release&quot; "release"
] ]
} }
}</component> }]]></component>
<component name="PsdUISettings"> <component name="PsdUISettings">
<option name="LAST_EDITED_BUILD_TYPE" value="release" /> <option name="LAST_EDITED_BUILD_TYPE" value="release" />
</component> </component>
...@@ -781,9 +619,10 @@ ...@@ -781,9 +619,10 @@
<recent name="com.seatel.mobilehall.ui.usage.fragement" /> <recent name="com.seatel.mobilehall.ui.usage.fragement" />
</key> </key>
<key name="CopyKotlinDeclarationDialog.RECENTS_KEY"> <key name="CopyKotlinDeclarationDialog.RECENTS_KEY">
<recent name="com.seatel.mobilehall.ui.packages.adapter" />
<recent name="com.seatel.mobilehall.util.dialogannouncement" />
<recent name="com.seatel.mobilehall.util.customview" /> <recent name="com.seatel.mobilehall.util.customview" />
<recent name="com.seatel.mobilehall.ui.yes_member.adapter" /> <recent name="com.seatel.mobilehall.ui.yes_member.adapter" />
<recent name="com.seatel.mobilehall.util.dialogannouncement" />
<recent name="com.seatel.mobilehall.ui.home.adapter" /> <recent name="com.seatel.mobilehall.ui.home.adapter" />
</key> </key>
<key name="CopyClassDialog.RECENTS_KEY"> <key name="CopyClassDialog.RECENTS_KEY">
...@@ -973,6 +812,14 @@ ...@@ -973,6 +812,14 @@
<line>106</line> <line>106</line>
<option name="timeStamp" value="5" /> <option name="timeStamp" value="5" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="kotlin-line">
<url>file://$PROJECT_DIR$/app/src/main/java/com/seatel/mobilehall/ui/profile/fragment/ProfilesFragment.kt</url>
<line>141</line>
<properties>
<option name="lambda-ordinal" value="-1" />
</properties>
<option name="timeStamp" value="6" />
</line-breakpoint>
</breakpoints> </breakpoints>
</breakpoint-manager> </breakpoint-manager>
</component> </component>
......
...@@ -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()
......
package com.seatel.mobilehall.ui.home.activity package com.seatel.mobilehall.ui.home.activity
import android.content.Context import android.content.Context
import android.content.DialogInterface
import android.content.Intent import android.content.Intent
import android.graphics.Typeface
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.text.Html
import android.text.SpannableString
import android.text.style.StyleSpan
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -25,7 +21,6 @@ import com.seatel.mobilehall.util.Constant ...@@ -25,7 +21,6 @@ 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.SeatelUtils
import com.seatel.mobilehall.util.customview.ErrorHandleView import com.seatel.mobilehall.util.customview.ErrorHandleView
import java.text.DecimalFormat
class ConfirmBuyDataPackActivity : BaseActivity<ActivityConfirmBuyDataPackBinding>(), class ConfirmBuyDataPackActivity : BaseActivity<ActivityConfirmBuyDataPackBinding>(),
BuyDataPackFreedomInteractor.View { BuyDataPackFreedomInteractor.View {
...@@ -55,31 +50,29 @@ class ConfirmBuyDataPackActivity : BaseActivity<ActivityConfirmBuyDataPackBindin ...@@ -55,31 +50,29 @@ class ConfirmBuyDataPackActivity : BaseActivity<ActivityConfirmBuyDataPackBindin
private var pricePlanCode: String = "" private var pricePlanCode: String = ""
private var requestTime: String? = null private var requestTime: String? = null
// private var valuePackSectionModel: ValuePackSectionModel? = null
override fun onBuyDataSucceed() { override fun onBuyDataSucceed() {
SuccessBuyDataPackActivity.launch(this, name, data, isAddON)/* if (isValuePack || isFortunePlan || isVipFortunePlan) mDataValuePack?.let { SuccessBuyDataPackActivity.launch(this, name, data, isAddON)
when {
isFortunePlan -> {
SuccessBuyDataPackActivity.lunchFromValuePack(this, it, isFortunePlan = true)
}
isVipFortunePlan -> {
SuccessBuyDataPackActivity.lunchFromValuePack(this, it, isVipFortunePlan = true)
}
else -> SuccessBuyDataPackActivity.lunchFromValuePack(this, it)
}
}
else SuccessBuyDataPackActivity.lunch(this, mDataSize, mAccountNumber, isDataFreedom)*/
finish() finish()
} }
override fun onBuyDataFailed(error: VolleyError) { override fun onBuyDataFailed(error: VolleyError) {
Log.d("---buyDataFailed", "onBuyDataFailed: $error") Log.d("---buyDataFailed", "onBuyDataFailed: ${error.message}")
binding.errorView.visibility = View.GONE binding.errorView.visibility = View.GONE
SeatelAlertDialog.with(this, SeatelSuperRequest.getErrorMessageFrom(error)).show() if ( SeatelSuperRequest.getErrorMessageFrom(error).equals("Balance is not enough or no effective balance.")) {
SeatelAlertDialog.with(this, SeatelSuperRequest.getErrorMessageFrom(error))
.setPositiveButton("Top UP",
DialogInterface.OnClickListener { dialog, which ->
TopUpActivity.lunch(this)
}).show()
} else {
SeatelAlertDialog.with(this, SeatelSuperRequest.getErrorMessageFrom(error)).show()
}
binding.buttonOk.isEnabled = true binding.buttonOk.isEnabled = true
isAllowBackPressed = true isAllowBackPressed = true
} }
private fun startBuyData() { private fun startBuyData() {
...@@ -100,16 +93,6 @@ class ConfirmBuyDataPackActivity : BaseActivity<ActivityConfirmBuyDataPackBindin ...@@ -100,16 +93,6 @@ class ConfirmBuyDataPackActivity : BaseActivity<ActivityConfirmBuyDataPackBindin
pricePlanCode, pricePlanCode,
requestTime!! requestTime!!
) )
//note: if amount 0.5 then change it to 0.1 for CRM(do it for CRM)
/*if (mAmountPost == 0.5 && !isValuePack && !isFortunePlan) {
mBuyDataPackFreedomPresenter.onBuyData(getPhoneLogin(), mTypeBuy, 0.1, isTypeAddon)
} else
mBuyDataPackFreedomPresenter.onBuyData(
getPhoneLogin(),
mTypeBuy,
mAmountPost,
isTypeAddon
)*/
} }
override fun getViewBinding(): ActivityConfirmBuyDataPackBinding { override fun getViewBinding(): ActivityConfirmBuyDataPackBinding {
...@@ -119,7 +102,6 @@ class ConfirmBuyDataPackActivity : BaseActivity<ActivityConfirmBuyDataPackBindin ...@@ -119,7 +102,6 @@ class ConfirmBuyDataPackActivity : BaseActivity<ActivityConfirmBuyDataPackBindin
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
activityEnterFadeInAnimation() activityEnterFadeInAnimation()
// setContentView(R.layout.activity_confirm_buy_data_pack)
val tsLong = System.currentTimeMillis() / 1000 val tsLong = System.currentTimeMillis() / 1000
requestTime = tsLong.toString() requestTime = tsLong.toString()
...@@ -132,301 +114,6 @@ class ConfirmBuyDataPackActivity : BaseActivity<ActivityConfirmBuyDataPackBindin ...@@ -132,301 +114,6 @@ class ConfirmBuyDataPackActivity : BaseActivity<ActivityConfirmBuyDataPackBindin
} }
private fun setupView() {
isDataFreedom = intent.getBooleanExtra(Constant.LAUNCH_FROM, false)
isValuePack = intent.getBooleanExtra("IS_VALUE_PACK", false)
isFortunePlan = intent.getBooleanExtra("IS_FORTUNE_PACK", false)
isVipFortunePlan = intent.getBooleanExtra("IS_VIP_FORTUNE_PACK", false)
isloykob = intent.getBooleanExtra("IS_LOY_KOB", false)
isTypeAddon = intent.getStringExtra("add-on").toString()
mAccountNumber =
if (intent.hasExtra(Constant.MPAY_ACCOUNT_TRANFER)) intent.getStringExtra(Constant.MPAY_ACCOUNT_TRANFER)
.toString()
else getPhoneLogin()
var datePlan = 0
if (intent.hasExtra(Constant.DURATION_PLAN_DATE_SELECT)) datePlan =
intent.getIntExtra(Constant.DURATION_PLAN_DATE_SELECT, 0)
val dayStr = if (datePlan > 1) SeatelUtils.translatForDialog(
this, "Days"
) else SeatelUtils.translatForDialog(this, "Day")
val dataMB: Double
val amountMB: String
Log.d("---isValuePack", "onCreate: $isValuePack")
when {
isDataFreedom -> {
mTypeBuy = Constant.FREEDOM_INTERNET //"freedom-data"
val amountTransfer: Long = intent.getLongExtra(Constant.MPAY_AMOUNT, 0)
mAmountPost = amountTransfer.toDouble()
dataMB = SeatelUtils.calcualateFreedomDataInput(amountTransfer)
val convertSucess = SeatelUtils.displayDataFreedomDataInput(dataMB)
val dataMBDisplay = convertSucess[0]
mDataSize = convertSucess[0].toString()
val str = "$dataMBDisplay${convertSucess[1]} = $"
val wordDataBuy = SpannableString("$str$amountTransfer")
wordDataBuy.setSpan(StyleSpan(Typeface.BOLD), 0, dataMBDisplay.length, 0)
binding.cvDataBuy.text = wordDataBuy
binding.ctvDeduct.text = "${
SeatelUtils.translatForDialog(
this, getString(R.string.we_will_deduct)
)
} $$amountTransfer ${
SeatelUtils.translatForDialog(
this, getString(R.string.from_ur_balance)
)
}"
}
isValuePack -> {
if (intent.hasExtra("VALUE_PACK_DATA")) {
mTypeBuy = Constant.VALUE_PACK
mDataValuePack = Gson().fromJson(
intent.getStringExtra("VALUE_PACK_DATA"), ValuePackTableModel::class.java
)
val price = mDataValuePack?.valuePrice?.replace("$", "")
if (price != null) {
mAmountPost = price.toDouble()
}
val formatterPrice = DecimalFormat("$#0")
val strValidity = "${mDataValuePack?.validityDate}"
val amount = mDataValuePack?.priceChange?.replace("$", "")
val strAmount = "${formatterPrice.format(amount?.toDouble())}"
val formatter = DecimalFormat("$#0.00")
// val priceChange = mDataValuePack?.valuePrice?.replace("$","")
val str = "${
SeatelUtils.translatForDialog(
this, "Value Pack"
)
} <b>${mDataValuePack?.valuePrice} = $strAmount</b> "
val strValid = "${
SeatelUtils.translatForDialog(
this, "Valid for"
)
} <b>${strValidity.toLowerCase()}</b> "
binding.cvDataValidValuePack.visibility = View.VISIBLE
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
binding.cvDataBuy.text = Html.fromHtml(str, Html.FROM_HTML_MODE_COMPACT)
binding.cvDataValidValuePack.text =
Html.fromHtml(strValid, Html.FROM_HTML_MODE_COMPACT)
} else {
binding.cvDataBuy.text = Html.fromHtml(str)
binding.cvDataValidValuePack.text = Html.fromHtml(strValid)
}
binding.ctvDeduct.text = "${
SeatelUtils.translatForDialog(
this, getString(R.string.we_will_deduct)
)
} ${formatter.format(mAmountPost)} ${
SeatelUtils.translatForDialog(
this, getString(R.string.from_ur_balance)
)
}"
}
}
isFortunePlan -> {
if (intent.hasExtra("VALUE_PACK_DATA")) {
binding.ctvBuyData.text = "Buy Fortune Pack"
mTypeBuy = Constant.FORTUNE_PACK
mDataValuePack = Gson().fromJson(
intent.getStringExtra("VALUE_PACK_DATA"), ValuePackTableModel::class.java
)
val price = mDataValuePack?.valuePrice?.replace("$", "")
if (price != null) {
mAmountPost = price.toDouble()
}
//val formatterPrice = DecimalFormat("$#0")
val strValidity = "${mDataValuePack?.validityDate}"
//val amount = mDataValuePack?.priceChange
val strAmount = mDataValuePack?.priceChange
val formatter = DecimalFormat("$#0.00")
// val priceChange = mDataValuePack?.valuePrice?.replace("$","")
val str = "${
SeatelUtils.translatForDialog(
this, "Fortune Pack"
)
} <b>${mDataValuePack?.valuePrice} = $strAmount</b> "
val strValid = "${
SeatelUtils.translatForDialog(
this, "Valid for"
)
} <b>${strValidity.toLowerCase()}</b> "
binding.cvDataValidValuePack.visibility = View.VISIBLE
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
binding.cvDataBuy.text = Html.fromHtml(str, Html.FROM_HTML_MODE_COMPACT)
binding.cvDataValidValuePack.text =
Html.fromHtml(strValid, Html.FROM_HTML_MODE_COMPACT)
} else {
binding.cvDataBuy.text = Html.fromHtml(str)
binding.cvDataValidValuePack.text = Html.fromHtml(strValid)
}
binding.ctvDeduct.text = "${
SeatelUtils.translatForDialog(
this, getString(R.string.we_will_deduct)
)
} ${formatter.format(mAmountPost)} ${
SeatelUtils.translatForDialog(
this, getString(R.string.from_ur_balance)
)
}"
}
}
isVipFortunePlan -> {
if (intent.hasExtra("VALUE_PACK_DATA")) {
binding.ctvBuyData.text = "Buy VIP Fortune Pack"
mTypeBuy = Constant.VIP_FORTUNE_PACK
mDataValuePack = Gson().fromJson(
intent.getStringExtra("VALUE_PACK_DATA"), ValuePackTableModel::class.java
)
val price = mDataValuePack?.valuePrice?.replace("$", "")
if (price != null) {
mAmountPost = price.toDouble()
}
//val formatterPrice = DecimalFormat("$#0")
val strValidity = "${mDataValuePack?.validityDate}"
//val amount = mDataValuePack?.priceChange
val strAmount = mDataValuePack?.priceChange
val formatter = DecimalFormat("$#0.00")
// val priceChange = mDataValuePack?.valuePrice?.replace("$","")
val str = "${
SeatelUtils.translatForDialog(
this, "VIP Fortune Pack"
)
} <b>${mDataValuePack?.valuePrice} = $strAmount</b> "
val strValid = "${
SeatelUtils.translatForDialog(
this, "Valid for"
)
} <b>${strValidity.toLowerCase()}</b> "
binding.cvDataValidValuePack.visibility = View.VISIBLE
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
binding.cvDataBuy.text = Html.fromHtml(str, Html.FROM_HTML_MODE_COMPACT)
binding.cvDataValidValuePack.text =
Html.fromHtml(strValid, Html.FROM_HTML_MODE_COMPACT)
} else {
binding.cvDataBuy.text = Html.fromHtml(str)
binding.cvDataValidValuePack.text = Html.fromHtml(strValid)
}
binding.ctvDeduct.text = "${
SeatelUtils.translatForDialog(
this, getString(R.string.we_will_deduct)
)
} ${formatter.format(mAmountPost)} ${
SeatelUtils.translatForDialog(
this, getString(R.string.from_ur_balance)
)
}"
}
}
isloykob -> {
if (intent.hasExtra("VALUE_PACK_DATA")) {
binding.ctvBuyData.text = Constant.IS_LOY_KOB
mTypeBuy = Constant.IS_LOY_KOB
mDataValuePack = Gson().fromJson(
intent.getStringExtra("VALUE_PACK_DATA"), ValuePackTableModel::class.java
)
val price = mDataValuePack?.valuePrice?.replace("$", "")
if (price != null) {
mAmountPost = price.toDouble()
}
//val formatterPrice = DecimalFormat("$#0")
val strValidity = "${mDataValuePack?.validityDate}"
//val amount = mDataValuePack?.priceChange
val strAmount = mDataValuePack?.priceChange
val formatter = DecimalFormat("$#0.00")
// val priceChange = mDataValuePack?.valuePrice?.replace("$","")
val str = "${
SeatelUtils.translatForDialog(
this, "VIP Fortune Pack"
)
} <b>${mDataValuePack?.valuePrice} = $strAmount</b> "
val strValid = "${
SeatelUtils.translatForDialog(
this, "Valid for"
)
} <b>${strValidity.toLowerCase()}</b> "
binding.cvDataValidValuePack.visibility = View.VISIBLE
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
binding.cvDataBuy.text = Html.fromHtml(str, Html.FROM_HTML_MODE_COMPACT)
binding.cvDataValidValuePack.text =
Html.fromHtml(strValid, Html.FROM_HTML_MODE_COMPACT)
} else {
binding.cvDataBuy.text = Html.fromHtml(str)
binding.cvDataValidValuePack.text = Html.fromHtml(strValid)
}
binding.ctvDeduct.text = "${
SeatelUtils.translatForDialog(
this, getString(R.string.we_will_deduct)
)
} ${formatter.format(mAmountPost)} ${
SeatelUtils.translatForDialog(
this, getString(R.string.from_ur_balance)
)
}"
}
}
else -> {
mTypeBuy = Constant.INTERNET_PACK //"datapack"
val price = intent.getStringExtra(Constant.PRICE_VALUE)
if (price!!.isNotEmpty()) mAmountPost = price.substring(1).toDouble()
amountMB = intent.getStringExtra(Constant.MPAY_AMOUNT).toString()
mDataSize = amountMB
// binding.cvDataBuy.text = "$datePlan$dayStr (\$$price = $amountMB)"
val str = "<font size=5>$datePlan$dayStr </font> <b>( ${
SeatelUtils.formatDecimalNumber(
mAmountPost, "$#.##"
)
} = $amountMB )</b> "
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
binding.cvDataBuy.text = Html.fromHtml(str, Html.FROM_HTML_MODE_COMPACT)
} else binding.cvDataBuy.text = Html.fromHtml(str)
binding.ctvDeduct.text = "${
SeatelUtils.translatForDialog(
this, getString(R.string.we_will_deduct)
)
} $price ${
SeatelUtils.translatForDialog(
this, getString(R.string.from_ur_balance)
)
}"
}
}
binding.tvPhoneNumber.text = SeatelUtils.phoneNumberFormat(mAccountNumber)
binding.buttonOk.setOnClickListener {
startBuyData()
binding.buttonOk.isEnabled = false
isAllowBackPressed = false
}
if (isDataFreedom) {
binding.ctvBuyData.text = getString(R.string.buy_freedom_internet)
} else if (isValuePack || isFortunePlan) binding.ctvBuyData.text = "Activate"
binding.imageViewBack.setOnClickListener {
onBackPressed()
}
}
private fun getData() { private fun getData() {
name = intent.getStringExtra("NAME").toString() name = intent.getStringExtra("NAME").toString()
...@@ -445,11 +132,6 @@ class ConfirmBuyDataPackActivity : BaseActivity<ActivityConfirmBuyDataPackBindin ...@@ -445,11 +132,6 @@ class ConfirmBuyDataPackActivity : BaseActivity<ActivityConfirmBuyDataPackBindin
binding.cvDataBuy.text = SeatelUtils.translatForDialog(this, "$fee") binding.cvDataBuy.text = SeatelUtils.translatForDialog(this, "$fee")
binding.tvPhoneNumber.text = getPhoneLogin() binding.tvPhoneNumber.text = getPhoneLogin()
// valuePackSectionModel = intent.getSerializableExtra("valuePackSectionModel") as ValuePackSectionModel
// binding.ctvBuyData.text = SeatelUtils.translatForDialog(this,"Buy ${valuePackSectionModel!!.name}")
// binding.cvDataBuy.text = SeatelUtils.translatForDialog(this, "${valuePackSectionModel!!.valuePackSecTwoModel.table[0].valuePrice}")
// Log.d("TAG::>>>", "init: $valuePackSectionModel")
binding.ctvDeduct.text = "${ binding.ctvDeduct.text = "${
SeatelUtils.translatForDialog( SeatelUtils.translatForDialog(
this, getString(R.string.we_will_deduct) this, getString(R.string.we_will_deduct)
......
...@@ -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.content.DialogInterface
import android.content.Intent
import android.provider.Settings
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.animation.AccelerateDecelerateInterpolator
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.android.volley.Request
import com.android.volley.VolleyError
import com.bumptech.glide.Glide
import com.facebook.internal.Utility.logd
import com.google.gson.Gson
import com.seatel.mobilehall.R
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.databinding.ItemLayoutRoamingBinding
import com.seatel.mobilehall.ui.base.adapter.BaseAdapter
import com.seatel.mobilehall.ui.home.activity.ConfirmBuyDataPackActivity
import com.seatel.mobilehall.ui.home.model.ValuePackSectionModel
import com.seatel.mobilehall.ui.packages.RoamingActivity
import com.seatel.mobilehall.ui.packages.fragment.ServicesFragment
import com.seatel.mobilehall.util.dialogannouncement.CustomDialog
import org.json.JSONObject
class Roaming1Adapter(
private var mContext: Context,
private var phoneLogin: String,
private var type: String,
private var canSubscribe: Boolean,
private var appProductsDetail: ValuePackSectionModel
) : BaseAdapter<Roaming1Adapter.ViewHolder>() {
private var isSwitchChangingState = false
private var isRoaming = false
private var isSpecialSim = false
class ViewHolder(var binding: ItemLayoutRoamingBinding) : RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Roaming1Adapter.ViewHolder {
val binding = ItemLayoutRoamingBinding.inflate(
LayoutInflater.from(parent.context), parent, false
)
return ViewHolder(binding)
}
override fun getItemCount(): Int {
return 1
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val context = holder.binding.root.context
Glide.with(mContext)
.load(appProductsDetail.dataPackDetailSecOneModel.mobileImageUrl)
.into(holder.binding.ivBanner)
holder.binding.tvMainTitle.text = appProductsDetail.valuePackSecTwoModel.title
holder.binding.tvRemindTitle.apply {
settings.javaScriptEnabled = true
loadDataWithBaseURL(
null,
appProductsDetail.valuePackSecTwoModel.subTitle,
"text/html",
"UTF-8",
null
)
settings.defaultFontSize = 12
}
holder.binding.customTextView.apply {
settings.javaScriptEnabled = true
loadDataWithBaseURL(
null,
appProductsDetail.valuePackSecThreeModel.description,
"text/html",
"UTF-8",
null
)
settings.defaultFontSize = 12
}
holder.binding.swOnOff.isChecked =
SeatelSharePreferences.getInstance(mContext)?.isRoamingActivation()!!
holder.binding.swOnOff.setOnCheckedChangeListener { _, isChecked ->
if (isSwitchChangingState) return@setOnCheckedChangeListener
isRoaming = SeatelSharePreferences.getInstance(mContext)?.isRoamingActivation()!!
isSpecialSim = SeatelSharePreferences.getInstance(mContext)?.isSpecialSimcard()!!
holder.binding.swOnOff.isEnabled = false
if (isSpecialSim) {
handleSpecialSimToggle(context, isChecked, isRoaming, holder.binding)
} else {
isSwitchChangingState = true
holder.binding.swOnOff.isChecked = isRoaming
isSwitchChangingState = false
val dialog =
CustomDialog(
mContext,
"",
mContext.getString(R.string.not_special_sim_msg),
R.drawable.ic_warning, "OK", ""
).setPositiveButton(
"Ok",
DialogInterface.OnClickListener { dialog, which -> dialog.dismiss() })
dialog.show()
}
holder.binding.swOnOff.isEnabled = true
}
Glide.with(mContext)
.load(appProductsDetail.dataPackDetailSecOneModel.mobileImageUrl2)
.into(holder.binding.ivBannerTwo)
holder.binding.roamingRecycler.layoutManager =
LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false)
holder.binding.roamingRecycler.adapter =
RoamingListAdapter(
mContext,
appProductsDetail.valuePackSecTwoModel.table
) { item ->
holder.binding.layoutDetail.postDelayed({
animateItem(holder.binding.layoutDetail)
}, 100)
if (context is RoamingActivity) {
context.scrollToLastPosition()
}
holder.binding.layoutDetail.visibility = ViewGroup.VISIBLE
holder.binding.tvData.text = item.priceChange
Glide.with(context).load(item.icon).into(holder.binding.icLogo)
holder.binding.btnSubscribe.setOnClickListener {
val checkIsRoaming =
SeatelSharePreferences.getInstance(mContext)?.isRoamingActivation()
if (!checkIsRoaming!!) {
val dialog =
CustomDialog(
mContext,
"Attention",
mContext.getString(R.string.inactive_roaming_service_msg),
R.drawable.ic_warning, "Ok", ""
).setPositiveButton(
"Ok",
DialogInterface.OnClickListener { dialog, which ->
dialog.dismiss()
holder.binding.layoutDetail.postDelayed({
animateItem(holder.binding.layoutDetail)
}, 100)
})
dialog.show()
} else
if (item.activateBtn) {
val name = item.title
val type = appProductsDetail.type
val validity = item.validityDate
val fee = item.valuePrice
val data = item.priceChange
val pricePlanCode = item.code
val isAddOn = false
ConfirmBuyDataPackActivity.launch(
mContext,
name,
type,
validity,
fee,
data,
pricePlanCode,
isAddOn
)
}
}
}
}
private fun animateItem(view: View) {
// Set the initial position below the screen
view.translationY = view.height.toFloat()
// Animate the view to its normal position
view.animate()
.translationY(0f)
.setDuration(300) // Duration for the animation
.setInterpolator(AccelerateDecelerateInterpolator()) // Interpolator for smoothness
.start()
}
private fun handleSpecialSimToggle(
context: Context,
isChecked: Boolean,
isRoaming: Boolean,
binding: ItemLayoutRoamingBinding
) {
if (!isRoaming) {
val dialog =
CustomDialog(
mContext,
"Confirmation",
mContext.getString(R.string.active_roaming_service_msg),
R.drawable.ic_confirmation, "Confirm", "NO"
).setPositiveButton("Confirm", DialogInterface.OnClickListener { dialog, which ->
requestRoamingService(
phoneNumber = phoneLogin,
type = appProductsDetail.type,
action = "activate",
onSuccess = {
updateSwitchState(binding, isChecked)
showActivationSuccessDialog(context)
},
onFailure = {
revertSwitchState(binding, isRoaming)
showToast(context, SeatelSuperRequest.getErrorMessageFrom(it))
}
)
dialog.dismiss()
}).setNegativeButton("NO", DialogInterface.OnClickListener { dialog, which ->
revertSwitchState(binding, isRoaming)
dialog.dismiss()
})
dialog.show()
} else {
val dialog =
CustomDialog(
mContext,
"Confirmation", mContext.getString(R.string.confirm_deactivate_roaming_msg),
R.drawable.ic_confirmation, "Confirm", "NO"
).setPositiveButton("Confirm", DialogInterface.OnClickListener { dialog, _ ->
requestRoamingService(
phoneNumber = phoneLogin,
type = appProductsDetail.type,
action = "activate",
onSuccess = {
updateSwitchState(binding, isChecked)
showDeactivationDialog(context)
},
onFailure = {
revertSwitchState(binding, isRoaming)
showToast(context, SeatelSuperRequest.getErrorMessageFrom(it))
}
)
dialog.dismiss()
}).setNegativeButton("NO", DialogInterface.OnClickListener { dialog, _ ->
revertSwitchState(binding, isRoaming)
dialog.dismiss()
})
dialog.show()
}
}
private fun updateSwitchState(binding: ItemLayoutRoamingBinding, isChecked: Boolean) {
SeatelSharePreferences.getInstance(mContext)
?.setRoamingActivation(isChecked)
isSwitchChangingState = true
binding.swOnOff.isChecked = isChecked
isSwitchChangingState = false
binding.swOnOff.isEnabled = true
}
private fun revertSwitchState(binding: ItemLayoutRoamingBinding, previousState: Boolean) {
isSwitchChangingState = true
binding.swOnOff.isChecked = previousState
isSwitchChangingState = false
binding.swOnOff.isEnabled = true
}
private fun showActivationSuccessDialog(context: Context) {
val dialog =
CustomDialog(
mContext,
"Attention",
mContext.getString(R.string.active_roaming_service_success_msg),
R.drawable.ic_warning, "OK", ""
).setPositiveButton(mContext.getString(R.string.enable_roaming_msg),
DialogInterface.OnClickListener { dialog, _ ->
val intent = Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)
context.startActivity(intent)
dialog.dismiss()
})
dialog.show()
}
private fun showDeactivationDialog(context: Context) {
val dialog =
CustomDialog(
mContext,
"Attention",
"You’ve successfully deactivated the Roaming Service. Please disable the 'Data Roaming' function in your device settings.",
R.drawable.ic_warning, "Confirm", ""
).setPositiveButton(
"Disable Data Roaming in Settings",
DialogInterface.OnClickListener { dialog, which ->
val intent = Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)
context.startActivity(intent)
dialog.dismiss()
})
dialog.show()
}
private fun showToast(context: Context, message: String) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}
private fun requestRoamingService(
phoneNumber: String,
type: String,
action: String,
onSuccess: () -> Unit,
onFailure: (VolleyError) -> Unit
) {
object : SeatelJSONObjectRequest(mContext) {
override fun getFunctionName(): String = "seatel/buy-service"
override fun getMethod(): Int = Request.Method.POST
override fun onGetBodyRequest(): String {
val obj = JSONObject()
obj.put("phoneNumber", phoneNumber)
obj.put("type", type)
obj.put("action", action)
return obj.toString()
}
}.setOnErrorListener {
onFailure(it)
}.execute {
logd("requestRoamingService", "Response: ${Gson().toJson(it)}")
onSuccess()
}
}
}
\ No newline at end of file
package com.seatel.mobilehall.ui.packages.adapter
import android.content.Context
import android.content.DialogInterface
import android.content.Intent
import android.provider.Settings
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.animation.AccelerateDecelerateInterpolator
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.android.volley.Request
import com.android.volley.VolleyError
import com.bumptech.glide.Glide
import com.facebook.internal.Utility.logd
import com.google.gson.Gson
import com.seatel.mobilehall.R
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.databinding.ItemLayoutRoamingBinding
import com.seatel.mobilehall.ui.base.adapter.BaseAdapter
import com.seatel.mobilehall.ui.home.activity.ConfirmBuyDataPackActivity
import com.seatel.mobilehall.ui.home.model.ValuePackSectionModel
import com.seatel.mobilehall.ui.packages.fragment.ServicesFragment
import com.seatel.mobilehall.util.dialogannouncement.CustomDialog
import org.json.JSONObject
class RoamingAdapter(
private var serviceFragment: ServicesFragment,
private var mContext: Context,
private var phoneLogin: String,
private var type: String,
private var canSubscribe: Boolean,
private var appProductsDetail: ValuePackSectionModel
) : BaseAdapter<RoamingAdapter.ViewHolder>() {
private var isSwitchChangingState = false
private var isRoaming = false
private var isSpecialSim = false
class ViewHolder(var binding: ItemLayoutRoamingBinding) : RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RoamingAdapter.ViewHolder {
val binding = ItemLayoutRoamingBinding.inflate(
LayoutInflater.from(parent.context), parent, false
)
return ViewHolder(binding)
}
override fun getItemCount(): Int {
return 1
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val context = holder.binding.root.context
Glide.with(mContext)
.load(appProductsDetail.dataPackDetailSecOneModel.mobileImageUrl)
.into(holder.binding.ivBanner)
holder.binding.tvMainTitle.text = appProductsDetail.valuePackSecTwoModel.title
holder.binding.tvRemindTitle.apply {
settings.javaScriptEnabled = true
loadDataWithBaseURL(
null,
appProductsDetail.valuePackSecTwoModel.subTitle,
"text/html",
"UTF-8",
null
)
settings.defaultFontSize = 12
}
holder.binding.customTextView.apply {
settings.javaScriptEnabled = true
loadDataWithBaseURL(
null,
appProductsDetail.valuePackSecThreeModel.description,
"text/html",
"UTF-8",
null
)
settings.defaultFontSize = 12
}
holder.binding.swOnOff.isChecked =
SeatelSharePreferences.getInstance(mContext)?.isRoamingActivation()!!
holder.binding.swOnOff.setOnCheckedChangeListener { _, isChecked ->
if (isSwitchChangingState) return@setOnCheckedChangeListener
isRoaming = SeatelSharePreferences.getInstance(mContext)?.isRoamingActivation()!!
isSpecialSim = SeatelSharePreferences.getInstance(mContext)?.isSpecialSimcard()!!
holder.binding.swOnOff.isEnabled = false
if (isSpecialSim) {
handleSpecialSimToggle(context, isChecked, isRoaming, holder.binding)
} else {
isSwitchChangingState = true
holder.binding.swOnOff.isChecked = isRoaming
isSwitchChangingState = false
val dialog =
CustomDialog(
mContext,
"",
mContext.getString(R.string.not_special_sim_msg),
R.drawable.ic_warning, "OK", ""
).setPositiveButton(
"Ok",
DialogInterface.OnClickListener { dialog, which -> dialog.dismiss() })
dialog.show()
}
holder.binding.swOnOff.isEnabled = true
}
Glide.with(mContext)
.load(appProductsDetail.dataPackDetailSecOneModel.mobileImageUrl2)
.into(holder.binding.ivBannerTwo)
holder.binding.roamingRecycler.layoutManager =
LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false)
holder.binding.roamingRecycler.adapter =
RoamingListAdapter(
mContext,
appProductsDetail.valuePackSecTwoModel.table
) { item ->
holder.binding.layoutDetail.postDelayed({
animateItem(holder.binding.layoutDetail)
}, 100)
serviceFragment.scrollToLastPosition()
holder.binding.layoutDetail.visibility = ViewGroup.VISIBLE
holder.binding.tvData.text = item.priceChange
Glide.with(context).load(item.icon).into(holder.binding.icLogo)
holder.binding.btnSubscribe.setOnClickListener {
val checkIsRoaming =
SeatelSharePreferences.getInstance(mContext)?.isRoamingActivation()
if (!checkIsRoaming!!) {
val dialog =
CustomDialog(
mContext,
"Attention",
mContext.getString(R.string.inactive_roaming_service_msg),
R.drawable.ic_warning, "Ok", ""
).setPositiveButton(
"Ok",
DialogInterface.OnClickListener { dialog, which ->
dialog.dismiss()
holder.binding.layoutDetail.postDelayed({
animateItem(holder.binding.layoutDetail)
}, 100)
})
dialog.show()
} else
if (item.activateBtn) {
val name = item.title
val type = appProductsDetail.type
val validity = item.validityDate
val fee = item.valuePrice
val data = item.priceChange
val pricePlanCode = item.code
val isAddOn = false
ConfirmBuyDataPackActivity.launch(
mContext,
name,
type,
validity,
fee,
data,
pricePlanCode,
isAddOn
)
}
}
}
}
private fun animateItem(view: View) {
// Set the initial position below the screen
view.translationY = view.height.toFloat()
// Animate the view to its normal position
view.animate()
.translationY(0f)
.setDuration(300) // Duration for the animation
.setInterpolator(AccelerateDecelerateInterpolator()) // Interpolator for smoothness
.start()
}
private fun handleSpecialSimToggle(
context: Context,
isChecked: Boolean,
isRoaming: Boolean,
binding: ItemLayoutRoamingBinding
) {
if (!isRoaming) {
val dialog =
CustomDialog(
mContext,
"Confirmation",
mContext.getString(R.string.active_roaming_service_msg),
R.drawable.ic_confirmation, "Confirm", "NO"
).setPositiveButton("Confirm", DialogInterface.OnClickListener { dialog, which ->
requestRoamingService(
phoneNumber = phoneLogin,
type = appProductsDetail.type,
action = "activate",
onSuccess = {
updateSwitchState(binding, isChecked)
showActivationSuccessDialog(context)
},
onFailure = {
revertSwitchState(binding, isRoaming)
showToast(context, SeatelSuperRequest.getErrorMessageFrom(it))
}
)
dialog.dismiss()
}).setNegativeButton("NO", DialogInterface.OnClickListener { dialog, which ->
revertSwitchState(binding, isRoaming)
dialog.dismiss()
})
dialog.show()
} else {
val dialog =
CustomDialog(
mContext,
"Confirmation", mContext.getString(R.string.confirm_deactivate_roaming_msg),
R.drawable.ic_confirmation, "Confirm", "NO"
).setPositiveButton("Confirm", DialogInterface.OnClickListener { dialog, _ ->
requestRoamingService(
phoneNumber = phoneLogin,
type = appProductsDetail.type,
action = "activate",
onSuccess = {
updateSwitchState(binding, isChecked)
showDeactivationDialog(context)
},
onFailure = {
revertSwitchState(binding, isRoaming)
showToast(context, SeatelSuperRequest.getErrorMessageFrom(it))
}
)
dialog.dismiss()
}).setNegativeButton("NO", DialogInterface.OnClickListener { dialog, _ ->
revertSwitchState(binding, isRoaming)
dialog.dismiss()
})
dialog.show()
}
}
private fun updateSwitchState(binding: ItemLayoutRoamingBinding, isChecked: Boolean) {
SeatelSharePreferences.getInstance(mContext)
?.setRoamingActivation(isChecked)
isSwitchChangingState = true
binding.swOnOff.isChecked = isChecked
isSwitchChangingState = false
binding.swOnOff.isEnabled = true
}
private fun revertSwitchState(binding: ItemLayoutRoamingBinding, previousState: Boolean) {
isSwitchChangingState = true
binding.swOnOff.isChecked = previousState
isSwitchChangingState = false
binding.swOnOff.isEnabled = true
}
private fun showActivationSuccessDialog(context: Context) {
val dialog =
CustomDialog(
mContext,
"Attention",
mContext.getString(R.string.active_roaming_service_success_msg),
R.drawable.ic_warning, "OK", ""
).setPositiveButton(mContext.getString(R.string.enable_roaming_msg),
DialogInterface.OnClickListener { dialog, _ ->
val intent = Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)
context.startActivity(intent)
dialog.dismiss()
})
dialog.show()
}
private fun showDeactivationDialog(context: Context) {
val dialog =
CustomDialog(
mContext,
"Attention",
"You’ve successfully deactivated the Roaming Service. Please disable the 'Data Roaming' function in your device settings.",
R.drawable.ic_warning, "Confirm", ""
).setPositiveButton(
"Disable Data Roaming in Settings",
DialogInterface.OnClickListener { dialog, which ->
val intent = Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)
context.startActivity(intent)
dialog.dismiss()
})
dialog.show()
}
private fun showToast(context: Context, message: String) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}
private fun requestRoamingService(
phoneNumber: String,
type: String,
action: String,
onSuccess: () -> Unit,
onFailure: (VolleyError) -> Unit
) {
object : SeatelJSONObjectRequest(mContext) {
override fun getFunctionName(): String = "seatel/buy-service"
override fun getMethod(): Int = Request.Method.POST
override fun onGetBodyRequest(): String {
val obj = JSONObject()
obj.put("phoneNumber", phoneNumber)
obj.put("type", type)
obj.put("action", action)
return obj.toString()
}
}.setOnErrorListener {
onFailure(it)
}.execute {
logd("requestRoamingService", "Response: ${Gson().toJson(it)}")
onSuccess()
}
}
}
\ 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>
......
...@@ -3,94 +3,201 @@ ...@@ -3,94 +3,201 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="wrap_content"
android:background="@color/colorBgWhiteGray">
<!-- Banner Image -->
<ImageView <ImageView
android:adjustViewBounds="true"
android:id="@+id/iv_banner" android:id="@+id/iv_banner"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="150dp" android:layout_height="100dp"
android:scaleType="centerCrop" android:scaleType="fitCenter"
android:src="@drawable/ic_invite_friend_banner" android:src="@drawable/ic_roaming_banner"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<!-- Main Title -->
<com.seatel.mobilehall.util.customview.CustomTextView <com.seatel.mobilehall.util.customview.CustomTextView
android:id="@+id/tv_main_title" android:id="@+id/tv_main_title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_2x_size"
android:gravity="center" android:gravity="center"
android:text="Enjoying Roaming to Mainland China!" android:text="Enjoying Roaming to Mainland China!"
android:textColor="@color/colorPrimary" android:textColor="@color/colorPrimary"
android:textSize="@dimen/extra_large_text_size" android:textSize="@dimen/extra_large_text_size"
app:layout_constraintTop_toBottomOf="@+id/iv_banner" android:textStyle="bold"
tools:layout_editor_absoluteX="-16dp" /> app:layout_constraintTop_toBottomOf="@+id/iv_banner" />
<View <!-- Reminder Title -->
android:id="@+id/view_top"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="@dimen/margin_1x_size"
android:background="@color/colorGray"
app:layout_constraintTop_toBottomOf="@+id/tv_main_title" />
<com.seatel.mobilehall.util.customview.CustomTextView <WebView
android:id="@+id/tv_remind_title" android:id="@+id/tv_remind_title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_1x_size" android:layout_marginTop="@dimen/margin_2x_size"
android:gravity="center" android:background="@color/white"
android:text="* Your current SIM card must be switch to a new preferable special SIM card." android:padding="@dimen/margin_4x_size"
android:textSize="@dimen/large_text_size" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_main_title" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_main_title"
tools:ignore="WebViewLayout" />
<View
android:id="@+id/view_bottom" <WebView
android:id="@+id/custom_TextView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_1x_size" android:layout_marginTop="@dimen/margin_2x_size"
android:background="@color/colorGray" android:background="@color/white"
app:layout_constraintTop_toBottomOf="@+id/tv_remind_title" /> android:padding="@dimen/margin_3x_size"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_remind_title"
tools:ignore="WebViewLayout" />
<com.seatel.mobilehall.util.customview.CustomTextView
android:id="@+id/customTextView2" <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/frame_check"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Activate Roaming on your phone" android:layout_marginTop="10dp"
android:textColor="@color/black" android:background="@color/white"
android:textSize="@dimen/extra_large_text_size" android:padding="@dimen/margin_2x_size"
app:layout_constraintTop_toBottomOf="@+id/view_bottom" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/custom_TextView">
<com.seatel.mobilehall.util.customview.CustomTextView <com.seatel.mobilehall.util.customview.CustomTextView
android:id="@+id/customTextView3" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/roaming_service"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/swOnOff"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginEnd="10dp"
android:thumb="@drawable/custom_thumb"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:track="@drawable/custom_track" />
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/iv_banner_two"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="@dimen/margin_2x_size"
android:scaleType="fitCenter"
android:src="@drawable/ic_roaming_banner"
app:layout_constraintTop_toBottomOf="@+id/frame_check" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/roaming_recycler"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_2x_size" android:layout_marginTop="@dimen/margin_1x_size"
android:text="How to enable roaming:" android:padding="@dimen/margin_1x_size"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/customTextView2" /> app:layout_constraintTop_toBottomOf="@+id/iv_banner_two" />
<com.seatel.mobilehall.util.customview.CustomTextView <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/customTextView4" android:id="@+id/layout_detail"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text=". To activate the Roaming Server by toggling the button below. android:padding="@dimen/margin_2x_size"
. You must also enable data roaming in your phone setting to use the internet in the country you're visiting." android:visibility="gone"
app:layout_constraintTop_toBottomOf="@+id/customTextView3" /> app:layout_constraintTop_toBottomOf="@+id/roaming_recycler">
<com.seatel.mobilehall.util.customview.CustomTextView
android:id="@+id/basic_benefit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_1x_size"
android:text="Basic Benefit"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.SwitchCompat <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/swOnOff" android:id="@+id/constraintLayout3"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:background="@drawable/bg_tab_box_round_gray"
android:thumb="@drawable/custom_thumb" android:padding="@dimen/margin_1x_size"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/basic_benefit">
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/customTextView4" <ImageView
app:showText="true" android:id="@+id/ic_logo"
app:track="@drawable/custom_track" /> android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_one_plan"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.seatel.mobilehall.util.customview.CustomTextView
android:id="@+id/customTextView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_1x_size"
android:text="Data Internet"
android:textSize="@dimen/large_text_size"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@+id/ic_logo"
app:layout_constraintTop_toTopOf="parent" />
<com.seatel.mobilehall.util.customview.CustomTextView
android:id="@+id/tv_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_1x_size"
android:text="5 GB"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/large_text_size"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/ic_logo"
app:layout_constraintTop_toBottomOf="@+id/customTextView2" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.seatel.mobilehall.util.customview.CustomTextView
android:id="@+id/tv_note"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/note_roaming_service"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout3" />
<com.seatel.mobilehall.util.customview.CustomButton
android:id="@+id/btn_subscribe"
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_marginStart="20dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="@dimen/margin_1x_size"
android:background="@drawable/bg_round_button_primary"
android:gravity="center"
android:text="subscribe"
android:textColor="@color/white"
app:layout_constraintTop_toBottomOf="@+id/tv_note"
tools:layout_editor_absoluteX="0dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </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"
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