Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
android-yes
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kheang Chenda
android-yes
Commits
ab53d5c7
Commit
ab53d5c7
authored
Jul 03, 2025
by
Seatel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
upgrade solutions yes members and yes coins
parent
e29d07be
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
241 additions
and
134 deletions
+241
-134
build.gradle
app/build.gradle
+9
-3
HomeImageSliderAdapter.kt
...atel/mobilehall/ui/home/adapter/HomeImageSliderAdapter.kt
+79
-80
ImageSliderAdapter.kt
...m/seatel/mobilehall/ui/home/adapter/ImageSliderAdapter.kt
+40
-13
HomeFragment.kt
...va/com/seatel/mobilehall/ui/home/fragment/HomeFragment.kt
+60
-19
YesMemberFragment.kt
...el/mobilehall/ui/yes_member/fragment/YesMemberFragment.kt
+12
-0
YesMemberMainModel.kt
...atel/mobilehall/ui/yes_member/model/YesMemberMainModel.kt
+3
-1
activity_home.xml
app/src/main/res/layout/activity_home.xml
+1
-0
fragment_home.xml
app/src/main/res/layout/fragment_home.xml
+15
-14
fragment_yes_member.xml
app/src/main/res/layout/fragment_yes_member.xml
+7
-0
item.xml
app/src/main/res/layout/item.xml
+13
-0
item_home_image_slider.xml
app/src/main/res/layout/item_home_image_slider.xml
+0
-1
settings.gradle
settings.gradle
+2
-3
No files found.
app/build.gradle
View file @
ab53d5c7
...
@@ -17,7 +17,7 @@ android {
...
@@ -17,7 +17,7 @@ android {
storePassword
'seatel_Cambodia'
storePassword
'seatel_Cambodia'
keyPassword
'seatel_Cambodia'
keyPassword
'seatel_Cambodia'
keyAlias
'seatel_cambodia'
keyAlias
'seatel_cambodia'
storeFile
file
(
'/Users/
luckeavan/Documents/YES-Seatel/YesApp-Android/android-yes/seashop
.jks'
)
storeFile
file
(
'/Users/
ryan/Documents/Project/Seatel_android_project/sea-tel-android/app/key/release
.jks'
)
}
}
}
}
compileSdk
34
compileSdk
34
...
@@ -127,6 +127,7 @@ dependencies {
...
@@ -127,6 +127,7 @@ dependencies {
annotationProcessor
'com.github.bumptech.glide:compiler:4.13.0'
annotationProcessor
'com.github.bumptech.glide:compiler:4.13.0'
implementation
'com.android.support:multidex:1.0.3'
implementation
'com.android.support:multidex:1.0.3'
implementation
'com.github.bigstark:fresco-parallax-drawee-view:1.2.1'
implementation
'com.github.bigstark:fresco-parallax-drawee-view:1.2.1'
implementation
'com.github.bigstark:fresco-parallax-drawee-view:1.2.0'
implementation
'com.facebook.android:facebook-android-sdk:4.42.0'
implementation
'com.facebook.android:facebook-android-sdk:4.42.0'
implementation
'com.mcxiaoke.volley:library:1.0.19'
implementation
'com.mcxiaoke.volley:library:1.0.19'
implementation
'com.jaredrummler:android-device-names:1.1.7'
implementation
'com.jaredrummler:android-device-names:1.1.7'
...
@@ -216,7 +217,8 @@ dependencies {
...
@@ -216,7 +217,8 @@ dependencies {
// implementation 'com.dinuscxj:circleprogressbar:1.3.6'
// implementation 'com.dinuscxj:circleprogressbar:1.3.6'
// implementation(name: 'circleprogressbar-debug', ext: 'aar')
// implementation(name: 'circleprogressbar-debug', ext: 'aar')
implementation
'com.github.smarteist:autoimageslider:1.4.0'
//implementation 'com.github.smarteist:autoimageslider:1.4.0'
//implementation ("com.github.smarteist:autoimageslider:1.4.0-appcompat")
//api 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
//api 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
implementation
(
"com.vanniktech:android-image-cropper:4.6.0"
)
implementation
(
"com.vanniktech:android-image-cropper:4.6.0"
)
...
@@ -230,4 +232,8 @@ dependencies {
...
@@ -230,4 +232,8 @@ dependencies {
//noinspection GradleDependency
//noinspection GradleDependency
androidTestImplementation
'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation
'androidx.test.espresso:espresso-core:3.4.0'
implementation
'androidx.viewpager2:viewpager2:1.0.0'
implementation
'com.google.android.material:material:1.11.0'
implementation
(
"io.coil-kt:coil:2.4.0"
)
}
}
app/src/main/java/com/seatel/mobilehall/ui/home/adapter/HomeImageSliderAdapter.kt
View file @
ab53d5c7
package
com.seatel.mobilehall.ui.home.adapter
////package com.seatel.mobilehall.ui.home.adapter
////
import
android.content.Context
////import android.content.Context
import
android.view.LayoutInflater
////import android.view.LayoutInflater
import
android.view.View
////import android.view.View
import
android.view.ViewGroup
////import android.view.ViewGroup
import
coil.load
////import coil.load
import
com.seatel.mobilehall.R
////import com.seatel.mobilehall.R
import
com.seatel.mobilehall.databinding.ItemHomeImageSliderBinding
////import com.seatel.mobilehall.databinding.ItemHomeImageSliderBinding
import
com.seatel.mobilehall.ui.home.model.BannersModel
////import com.seatel.mobilehall.ui.home.model.BannersModel
import
com.seatel.mobilehall.ui.login.activity.TermsAndConditionsActivity
////import com.seatel.mobilehall.ui.login.activity.TermsAndConditionsActivity
import
com.smarteist.autoimageslider.SliderViewAdapter
////
//class HomeImageSliderAdapter(
class
HomeImageSliderAdapter
(
//// var context: Context,
var
context
:
Context
,
//// private var onActionLink: (String) -> Unit,
private
var
onActionLink
:
(
String
)
->
Unit
,
////) : SliderViewAdapter<HomeImageSliderAdapter.SliderAdapterVH>() {
)
:
SliderViewAdapter
<
HomeImageSliderAdapter
.
SliderAdapterVH
>()
{
////
//// private var mSliderItems = mutableListOf<BannersModel>()
private
var
mSliderItems
=
mutableListOf
<
BannersModel
>()
////
//// fun renewItems(sliderItems: MutableList<BannersModel>) {
fun
renewItems
(
sliderItems
:
MutableList
<
BannersModel
>)
{
//// mSliderItems = sliderItems
mSliderItems
=
sliderItems
//// notifyDataSetChanged()
notifyDataSetChanged
()
//// }
}
////
//// fun deleteItem(position: Int) {
fun
deleteItem
(
position
:
Int
)
{
//// mSliderItems.removeAt(position)
mSliderItems
.
removeAt
(
position
)
//// notifyDataSetChanged()
notifyDataSetChanged
()
//// }
}
////
//// fun addItem(sliderItem: List<BannersModel>) {
fun
addItem
(
sliderItem
:
List
<
BannersModel
>)
{
//// mSliderItems = sliderItem.toMutableList()
mSliderItems
=
sliderItem
.
toMutableList
()
//// notifyDataSetChanged()
notifyDataSetChanged
()
//// }
}
////
//// override fun onCreateViewHolder(parent: ViewGroup): SliderAdapterVH {
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
):
SliderAdapterVH
{
////
//// val binding =
val
binding
=
//// ItemHomeImageSliderBinding.inflate(LayoutInflater.from(parent.context), parent, false)
ItemHomeImageSliderBinding
.
inflate
(
LayoutInflater
.
from
(
parent
.
context
),
parent
,
false
)
//// return SliderAdapterVH(binding)
return
SliderAdapterVH
(
binding
)
////
//// }
}
////
//// override fun onBindViewHolder(viewHolder: SliderAdapterVH, position: Int) {
override
fun
onBindViewHolder
(
viewHolder
:
SliderAdapterVH
,
position
:
Int
)
{
//// val sliderItem = mSliderItems[position]
val
sliderItem
=
mSliderItems
[
position
]
////
//// // Load image with Coil
// Load image with Coil
//// viewHolder.view.ivAutoImageSlider.load(sliderItem.imageUrl) {
viewHolder
.
view
.
ivAutoImageSlider
.
load
(
sliderItem
.
imageUrl
)
{
//// crossfade(true)
crossfade
(
true
)
//// placeholder(R.drawable.bg_round_gray_section)
placeholder
(
R
.
drawable
.
bg_round_gray_section
)
//// error(R.drawable.bg_round_gray_section)
error
(
R
.
drawable
.
bg_round_gray_section
)
//// }
}
//// viewHolder.itemView.setOnClickListener(View.OnClickListener {
viewHolder
.
itemView
.
setOnClickListener
(
View
.
OnClickListener
{
////
//// when (sliderItem.actionType) {
when
(
sliderItem
.
actionType
)
{
//// "in-app" -> {
"in-app"
->
{
//// TermsAndConditionsActivity.launch(
TermsAndConditionsActivity
.
launch
(
//// context, sliderItem.imageUrl!!
context
,
sliderItem
.
imageUrl
!!
//// )
)
//// }
}
////
//// "out-app" -> {
"out-app"
->
{
//// sliderItem.url?.let { url ->
sliderItem
.
url
?.
let
{
url
->
//// onActionLink.invoke(url)
onActionLink
.
invoke
(
url
)
//// }
}
////
//// }
}
//// }
}
////
////
//// })
})
//// }
}
////
//// override fun getCount(): Int {
override
fun
getCount
():
Int
{
//// //slider view count could be dynamic size
//slider view count could be dynamic size
//// return mSliderItems.size
return
mSliderItems
.
size
//// }
}
////
//// class SliderAdapterVH(val view: ItemHomeImageSliderBinding) : ViewHolder(view.root)
class
SliderAdapterVH
(
val
view
:
ItemHomeImageSliderBinding
)
:
ViewHolder
(
view
.
root
)
////}
}
\ No newline at end of file
\ No newline at end of file
app/src/main/java/com/seatel/mobilehall/ui/home/adapter/ImageSliderAdapter.kt
View file @
ab53d5c7
package
com.seatel.mobilehall.ui.home.adapter
package
com.seatel.mobilehall.ui.home.adapter
import
android.os.Handler
import
android.os.Looper
import
android.view.LayoutInflater
import
android.view.LayoutInflater
import
android.view.View
import
android.view.View
import
android.view.ViewGroup
import
android.view.ViewGroup
import
android.widget.ImageView
import
android.widget.ImageView
import
androidx.core.view.size
import
androidx.recyclerview.widget.RecyclerView
import
androidx.recyclerview.widget.RecyclerView
import
androidx.viewpager2.widget.ViewPager2
import
coil.load
import
com.bumptech.glide.Glide
import
com.bumptech.glide.Glide
import
com.seatel.mobilehall.R
import
com.seatel.mobilehall.R
import
com.seatel.mobilehall.databinding.ItemBinding
import
com.seatel.mobilehall.ui.home.model.BannersModel
import
com.seatel.mobilehall.ui.home.model.BannersModel
import
com.seatel.mobilehall.ui.login.activity.TermsAndConditionsActivity
class
ImageSliderAdapter
(
private
val
banners
:
List
<
BannersModel
>)
:
RecyclerView
.
Adapter
<
ImageSliderAdapter
.
ViewHolder
>()
{
class
ImageSliderAdapter
(
private
val
banners
:
List
<
BannersModel
>,
private
var
onActionLink
:
(
String
)
->
Unit
,
)
:
RecyclerView
.
Adapter
<
ImageSliderAdapter
.
SliderVH
>()
{
class
ViewHolder
(
itemView
:
View
)
:
RecyclerView
.
ViewHolder
(
itemView
)
{
private
val
newList
:
List
<
BannersModel
>
=
val
imageView
:
ImageView
=
itemView
.
findViewById
(
R
.
id
.
imageView
)
listOf
(
banners
.
last
())
+
banners
+
listOf
(
banners
.
first
())
}
class
SliderVH
(
val
binding
:
ItemBinding
)
:
RecyclerView
.
ViewHolder
(
binding
.
root
)
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
ViewHolder
{
lateinit
var
binding
:
ItemBinding
val
view
=
LayoutInflater
.
from
(
parent
.
context
).
inflate
(
R
.
layout
.
item_image_slider
,
parent
,
false
)
override
fun
onCreateViewHolder
(
return
ViewHolder
(
view
)
parent
:
ViewGroup
,
viewType
:
Int
):
ImageSliderAdapter
.
SliderVH
{
val
binding
=
ItemBinding
.
inflate
(
LayoutInflater
.
from
(
parent
.
context
),
parent
,
false
)
return
SliderVH
(
binding
)
}
}
override
fun
onBindViewHolder
(
holder
:
ViewHolder
,
position
:
Int
)
{
override
fun
onBindViewHolder
(
holder
:
ImageSliderAdapter
.
SliderVH
,
position
:
Int
)
{
val
banner
=
banners
[
position
]
val
banner
=
newList
[
position
]
Glide
.
with
(
holder
.
imageView
.
context
)
Glide
.
with
(
holder
.
itemView
.
context
).
load
(
banner
.
imageUrl
).
into
(
holder
.
binding
.
imageView
)
.
load
(
banner
.
imageUrl
)
// Use banner.url here
holder
.
itemView
.
setOnClickListener
(
View
.
OnClickListener
{
.
into
(
holder
.
imageView
)
when
(
banner
.
actionType
)
{
"in-app"
->
{
TermsAndConditionsActivity
.
launch
(
holder
.
itemView
.
context
,
banner
.
imageUrl
!!
)
}
"out-app"
->
{
banner
.
url
?.
let
{
url
->
onActionLink
.
invoke
(
url
)
}
}
}
})
}
}
override
fun
getItemCount
():
Int
{
override
fun
getItemCount
():
Int
{
return
banners
.
size
return
newList
.
size
}
}
}
}
\ No newline at end of file
app/src/main/java/com/seatel/mobilehall/ui/home/fragment/HomeFragment.kt
View file @
ab53d5c7
...
@@ -4,6 +4,8 @@ import android.content.Context
...
@@ -4,6 +4,8 @@ import android.content.Context
import
android.content.Intent
import
android.content.Intent
import
android.net.Uri
import
android.net.Uri
import
android.os.Bundle
import
android.os.Bundle
import
android.os.Handler
import
android.os.Looper
import
android.text.TextUtils
import
android.text.TextUtils
import
android.util.Log
import
android.util.Log
import
android.view.LayoutInflater
import
android.view.LayoutInflater
...
@@ -12,6 +14,7 @@ import android.view.ViewGroup
...
@@ -12,6 +14,7 @@ import android.view.ViewGroup
import
android.widget.RelativeLayout
import
android.widget.RelativeLayout
import
android.widget.Toast
import
android.widget.Toast
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.viewpager2.widget.ViewPager2
import
coil.load
import
coil.load
import
coil.transform.CircleCropTransformation
import
coil.transform.CircleCropTransformation
import
com.android.volley.Request
import
com.android.volley.Request
...
@@ -45,7 +48,7 @@ import com.seatel.mobilehall.ui.home.activity.PromotionActivity
...
@@ -45,7 +48,7 @@ import com.seatel.mobilehall.ui.home.activity.PromotionActivity
import
com.seatel.mobilehall.ui.home.activity.SupportActivity
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.
Home
ImageSliderAdapter
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
...
@@ -70,9 +73,6 @@ import com.seatel.mobilehall.util.lang.FirstLoginPreference
...
@@ -70,9 +73,6 @@ import com.seatel.mobilehall.util.lang.FirstLoginPreference
import
com.seatel.mobilehall.util.manager.OrderingManager
import
com.seatel.mobilehall.util.manager.OrderingManager
import
com.seatel.mobilehall.util.request.GetMainData
import
com.seatel.mobilehall.util.request.GetMainData
import
com.seatel.mobilehall.util.viewFragmentBinding
import
com.seatel.mobilehall.util.viewFragmentBinding
import
com.smarteist.autoimageslider.IndicatorView.animation.type.IndicatorAnimationType
import
com.smarteist.autoimageslider.SliderAnimations
import
com.smarteist.autoimageslider.SliderView
import
org.json.JSONArray
import
org.json.JSONArray
import
org.json.JSONObject
import
org.json.JSONObject
...
@@ -101,9 +101,12 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie
...
@@ -101,9 +101,12 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie
private
var
contactService
=
ArrayList
<
ContactService
>()
private
var
contactService
=
ArrayList
<
ContactService
>()
private
lateinit
var
homeImageSliderAdapter
:
HomeImageSliderAdapter
//private lateinit var homeImageSliderAdapter: HomeImageSliderAdapter
private
lateinit
var
imageSliderAdapter
:
ImageSliderAdapter
private
var
handler
=
Handler
(
Looper
.
getMainLooper
())
private
lateinit
var
categoryAdapter
:
CategoryAdapter
private
lateinit
var
categoryAdapter
:
CategoryAdapter
private
var
autoScrollRunnable
:
Runnable
?
=
null
private
val
autoScrollDelay
=
3000L
override
fun
onAttach
(
context
:
Context
)
{
override
fun
onAttach
(
context
:
Context
)
{
super
.
onAttach
(
context
)
super
.
onAttach
(
context
)
...
@@ -126,6 +129,7 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie
...
@@ -126,6 +129,7 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie
binding
.
mSwipeRefreshLayout
.
isRefreshing
=
false
binding
.
mSwipeRefreshLayout
.
isRefreshing
=
false
// initEvent()
// initEvent()
// checkLogin()
// checkLogin()
stopAutoScroll
()
}
}
return
binding
.
root
return
binding
.
root
...
@@ -251,6 +255,8 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie
...
@@ -251,6 +255,8 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie
override
fun
onStop
()
{
override
fun
onStop
()
{
super
.
onStop
()
super
.
onStop
()
if
(
player
!=
null
)
player
!!
.
stop
()
if
(
player
!=
null
)
player
!!
.
stop
()
println
(
"on stop"
)
stopAutoScroll
()
}
}
private
fun
checkLogin
()
{
private
fun
checkLogin
()
{
...
@@ -381,8 +387,6 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie
...
@@ -381,8 +387,6 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie
txtExpiresVal
.
visibility
=
View
.
VISIBLE
txtExpiresVal
.
visibility
=
View
.
VISIBLE
txtExpires
.
visibility
=
View
.
VISIBLE
txtExpires
.
visibility
=
View
.
VISIBLE
}
}
}
}
dataMainScreen
.
getContactService
().
forEach
{
dataMainScreen
.
getContactService
().
forEach
{
...
@@ -472,22 +476,59 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie
...
@@ -472,22 +476,59 @@ class HomeFragment : BaseFragment(), View.OnClickListener, BannersInteractor.Vie
override
fun
onGetBannersSucceed
(
bannersList
:
ArrayList
<
BannersModel
>)
{
override
fun
onGetBannersSucceed
(
bannersList
:
ArrayList
<
BannersModel
>)
{
if
(
bannersList
.
isEmpty
())
{
println
(
"bannersList is empty"
)
}
else
{
binding
.
run
{
binding
.
run
{
bannersList
.
let
{
imageSliderAdapter
=
ImageSliderAdapter
(
it
.
run
{
bannersList
,
homeImageSliderAdapter
=
HomeImageSliderAdapter
(
requireContext
())
{
onActionLink
=
{
gotoPlayStore
(
packageName
=
"com.nacd.stopdrug"
)
gotoPlayStore
(
packageName
=
"com.nacd.stopdrug"
)
}
}
homeImageSliderAdapter
.
addItem
(
it
)
)
homeImageSlider
.
setSliderAdapter
(
homeImageSliderAdapter
)
viewpager2
.
adapter
=
imageSliderAdapter
homeImageSlider
.
setIndicatorAnimation
(
IndicatorAnimationType
.
WORM
)
viewpager2
.
currentItem
=
1
homeImageSlider
.
autoCycleDirection
=
SliderView
.
LAYOUT_DIRECTION_INHERIT
setupAutoScroll
(
bannersList
.
size
+
2
)
homeImageSlider
.
setSliderTransformAnimation
(
SliderAnimations
.
SIMPLETRANSFORMATION
)
startAutoScroll
()
homeImageSlider
.
scrollTimeInSec
=
3
}
homeImageSlider
.
startAutoCycle
()
}
}
private
fun
setupAutoScroll
(
bannerList
:
Int
){
binding
.
viewpager2
.
registerOnPageChangeCallback
(
object
:
ViewPager2
.
OnPageChangeCallback
(){
override
fun
onPageScrollStateChanged
(
state
:
Int
)
{
super
.
onPageScrollStateChanged
(
state
)
if
(
state
==
ViewPager2
.
SCROLL_STATE_IDLE
){
when
(
binding
.
viewpager2
.
currentItem
){
bannerList
-
1
->
binding
.
viewpager2
.
setCurrentItem
(
1
,
false
)
0
->
binding
.
viewpager2
.
setCurrentItem
(
bannerList
-
2
,
false
)
}
}
}
}
}
override
fun
onPageSelected
(
position
:
Int
)
{
super
.
onPageSelected
(
position
)
if
(
position
!=
0
&&
position
!=
bannerList
-
1
)
{
//pageIndicatorView.setSelected(position-1)
}
}
})
}
private
fun
stopAutoScroll
()
{
autoScrollRunnable
?.
let
{
handler
.
removeCallbacks
(
it
)
}
}
private
fun
startAutoScroll
()
{
autoScrollRunnable
=
object
:
Runnable
{
override
fun
run
()
{
val
current
=
binding
.
viewpager2
.
currentItem
val
next
=
current
+
1
binding
.
viewpager2
.
setCurrentItem
(
next
,
true
)
handler
.
postDelayed
(
this
,
autoScrollDelay
)
}
}
}
handler
.
postDelayed
(
autoScrollRunnable
!!
,
autoScrollDelay
)
}
}
...
...
app/src/main/java/com/seatel/mobilehall/ui/yes_member/fragment/YesMemberFragment.kt
View file @
ab53d5c7
...
@@ -5,6 +5,7 @@ import android.os.Bundle
...
@@ -5,6 +5,7 @@ import android.os.Bundle
import
android.view.LayoutInflater
import
android.view.LayoutInflater
import
android.view.View
import
android.view.View
import
android.view.ViewGroup
import
android.view.ViewGroup
import
android.widget.Toast
import
androidx.core.content.ContextCompat
import
androidx.core.content.ContextCompat
import
androidx.core.view.ViewCompat
import
androidx.core.view.ViewCompat
import
androidx.recyclerview.widget.GridLayoutManager
import
androidx.recyclerview.widget.GridLayoutManager
...
@@ -88,12 +89,15 @@ class YesMemberFragment : BaseFragment(), MainTopPartnerInteractor.View {
...
@@ -88,12 +89,15 @@ class YesMemberFragment : BaseFragment(), MainTopPartnerInteractor.View {
LinearLayoutManager
(
context
,
LinearLayoutManager
.
HORIZONTAL
,
false
)
LinearLayoutManager
(
context
,
LinearLayoutManager
.
HORIZONTAL
,
false
)
adapter
=
YesMemberAdapter
(
requireContext
(),
topPartnerList
)
adapter
=
YesMemberAdapter
(
requireContext
(),
topPartnerList
)
binding
.
recyclerPartner
.
adapter
=
adapter
binding
.
recyclerPartner
.
adapter
=
adapter
Toast
.
makeText
(
context
,
"amount of the top partner is ${topPartnerList.size}"
,
Toast
.
LENGTH_SHORT
).
show
()
if
(
topPartnerList
.
isNotEmpty
())
binding
.
tvPartner
.
visibility
=
View
.
VISIBLE
else
binding
.
tvPartner
.
visibility
=
View
.
GONE
}
}
override
fun
responsePartnerCategorySucceed
(
partnerCategory
:
ArrayList
<
PartnerCategoryModelItem
>)
{
override
fun
responsePartnerCategorySucceed
(
partnerCategory
:
ArrayList
<
PartnerCategoryModelItem
>)
{
binding
.
RecyclerPartnerCategory
.
layoutManager
=
GridLayoutManager
(
context
,
2
)
binding
.
RecyclerPartnerCategory
.
layoutManager
=
GridLayoutManager
(
context
,
2
)
partnerCategoryAdapter
=
MainPartnerCategoryAdapter
(
requireContext
(),
partnerCategory
)
partnerCategoryAdapter
=
MainPartnerCategoryAdapter
(
requireContext
(),
partnerCategory
)
binding
.
RecyclerPartnerCategory
.
adapter
=
partnerCategoryAdapter
binding
.
RecyclerPartnerCategory
.
adapter
=
partnerCategoryAdapter
if
(
partnerCategory
.
isNotEmpty
())
binding
.
tvPartnerCategory
.
visibility
=
View
.
VISIBLE
else
binding
.
tvPartnerCategory
.
visibility
=
View
.
GONE
}
}
...
@@ -133,6 +137,14 @@ class YesMemberFragment : BaseFragment(), MainTopPartnerInteractor.View {
...
@@ -133,6 +137,14 @@ class YesMemberFragment : BaseFragment(), MainTopPartnerInteractor.View {
CoinActivity
.
launch
(
requireContext
(),
imgCoin
!!
,
coinEarn
!!
,
coinDescription
!!
)
CoinActivity
.
launch
(
requireContext
(),
imgCoin
!!
,
coinEarn
!!
,
coinDescription
!!
)
}
}
if
(
mainModel
.
coinHidden
)
binding
.
frameYesCoins
.
visibility
=
View
.
GONE
else
binding
.
frameYesCoins
.
visibility
=
View
.
VISIBLE
if
(
mainModel
.
partnerHidden
){
binding
.
frameYesPartner
.
visibility
=
View
.
GONE
binding
.
qrCodeContainer
.
visibility
=
View
.
GONE
}
else
{
binding
.
frameYesPartner
.
visibility
=
View
.
VISIBLE
binding
.
qrCodeContainer
.
visibility
=
View
.
VISIBLE
}
}
}
override
fun
responseYesMemberMainFail
(
error
:
VolleyError
)
{
override
fun
responseYesMemberMainFail
(
error
:
VolleyError
)
{
...
...
app/src/main/java/com/seatel/mobilehall/ui/yes_member/model/YesMemberMainModel.kt
View file @
ab53d5c7
...
@@ -8,5 +8,7 @@ data class YesMemberMainModel(
...
@@ -8,5 +8,7 @@ data class YesMemberMainModel(
val
eligiblePartner
:
Boolean
,
val
eligiblePartner
:
Boolean
,
val
partnerBanner
:
String
,
val
partnerBanner
:
String
,
val
partnerDescription
:
String
,
val
partnerDescription
:
String
,
val
status
:
String
val
status
:
String
,
val
coinHidden
:
Boolean
,
val
partnerHidden
:
Boolean
,
)
)
\ No newline at end of file
app/src/main/res/layout/activity_home.xml
View file @
ab53d5c7
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:fresco=
"http://schemas.android.com/apk/res-auto"
xmlns:fresco=
"http://schemas.android.com/apk/res-auto"
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=
"match_parent"
android:background=
"@color/colorPinkSoft"
>
android:background=
"@color/colorPinkSoft"
>
...
...
app/src/main/res/layout/fragment_home.xml
View file @
ab53d5c7
...
@@ -217,8 +217,20 @@
...
@@ -217,8 +217,20 @@
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
app:layout_constraintTop_toTopOf=
"parent"
/>
<com.smarteist.autoimageslider.SliderView
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/homeImageSlider"
android:layout_width=
"match_parent"
android:id=
"@+id/viewpager_banner"
android:background=
"@color/browser_actions_bg_grey"
android:layout_height=
"0dp"
android:paddingTop=
"5dp"
android:layout_marginStart=
"@dimen/margin_1x_size"
android:layout_marginEnd=
"@dimen/margin_1x_size"
app:layout_constraintBottom_toBottomOf=
"@id/viewpager2"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/viewpager2"
/>
<androidx.viewpager2.widget.ViewPager2
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_height=
"0dp"
android:layout_marginStart=
"@dimen/margin_1x_size"
android:layout_marginStart=
"@dimen/margin_1x_size"
...
@@ -227,18 +239,7 @@
...
@@ -227,18 +239,7 @@
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"
app:sliderAnimationDuration=
"600"
android:id=
"@+id/viewpager2"
/>
app:sliderAutoCycleDirection=
"back_and_forth"
app:sliderAutoCycleEnabled=
"true"
app:sliderIndicatorAnimationDuration=
"600"
app:sliderIndicatorGravity=
"center_horizontal|bottom"
app:sliderIndicatorMarginBottom=
"@dimen/margin_5x_size"
app:sliderIndicatorOrientation=
"horizontal"
app:sliderIndicatorSelectedColor=
"@color/colorPrimaryDark"
app:sliderIndicatorUnselectedColor=
"#FFF"
app:sliderScrollTimeInSec=
"1"
app:sliderStartAutoCycle=
"true"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
...
...
app/src/main/res/layout/fragment_yes_member.xml
View file @
ab53d5c7
...
@@ -121,6 +121,7 @@
...
@@ -121,6 +121,7 @@
android:background=
"@drawable/bg_yes_member"
android:background=
"@drawable/bg_yes_member"
android:backgroundTint=
"@android:color/darker_gray"
android:backgroundTint=
"@android:color/darker_gray"
android:gravity=
"center_vertical"
android:gravity=
"center_vertical"
android:visibility=
"gone"
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"
>
...
@@ -194,6 +195,8 @@
...
@@ -194,6 +195,8 @@
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"150dp"
android:layout_height=
"150dp"
android:layout_marginTop=
"@dimen/margin_2x_size"
android:layout_marginTop=
"@dimen/margin_2x_size"
android:visibility=
"gone"
tools:visibility=
"visible"
android:background=
"@drawable/bg_yes_member"
android:background=
"@drawable/bg_yes_member"
android:backgroundTint=
"@android:color/darker_gray"
android:backgroundTint=
"@android:color/darker_gray"
android:gravity=
"center_vertical"
android:gravity=
"center_vertical"
...
@@ -275,6 +278,8 @@
...
@@ -275,6 +278,8 @@
android:text=
"Top yes Partner"
android:text=
"Top yes Partner"
android:textColor=
"@color/colorPrimary"
android:textColor=
"@color/colorPrimary"
android:textSize=
"@dimen/extra_large_text_size"
android:textSize=
"@dimen/extra_large_text_size"
android:visibility=
"gone"
tools:visibility=
"visible"
android:textStyle=
"bold"
android:textStyle=
"bold"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/constraintLayout2"
/>
app:layout_constraintTop_toBottomOf=
"@+id/constraintLayout2"
/>
...
@@ -297,6 +302,7 @@
...
@@ -297,6 +302,7 @@
android:textColor=
"@color/colorPrimary"
android:textColor=
"@color/colorPrimary"
android:textSize=
"@dimen/extra_large_text_size"
android:textSize=
"@dimen/extra_large_text_size"
android:textStyle=
"bold"
android:textStyle=
"bold"
android:visibility=
"gone"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/recyclerPartner"
/>
app:layout_constraintTop_toBottomOf=
"@+id/recyclerPartner"
/>
...
@@ -317,6 +323,7 @@
...
@@ -317,6 +323,7 @@
android:id=
"@+id/qrCodeContainer"
android:id=
"@+id/qrCodeContainer"
android:layout_width=
"80dp"
android:layout_width=
"80dp"
android:layout_height=
"35dp"
android:layout_height=
"35dp"
android:visibility=
"gone"
android:layout_marginEnd=
"@dimen/margin_2x_size"
android:layout_marginEnd=
"@dimen/margin_2x_size"
android:layout_marginBottom=
"@dimen/margin_2x_size"
android:layout_marginBottom=
"@dimen/margin_2x_size"
android:background=
"@drawable/rounded_corner"
android:background=
"@drawable/rounded_corner"
...
...
app/src/main/res/layout/item.xml
0 → 100644
View file @
ab53d5c7
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
>
<androidx.appcompat.widget.AppCompatImageView
android:id=
"@+id/imageView"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:adjustViewBounds=
"true"
android:scaleType=
"fitXY"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/item_home_image_slider.xml
View file @
ab53d5c7
...
@@ -11,5 +11,4 @@
...
@@ -11,5 +11,4 @@
android:adjustViewBounds=
"true"
android:adjustViewBounds=
"true"
android:scaleType=
"fitXY"
/>
android:scaleType=
"fitXY"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
settings.gradle
View file @
ab53d5c7
pluginManagement
{
pluginManagement
{
repositories
{
repositories
{
maven
{
url
'https://jitpack.io'
}
gradlePluginPortal
()
gradlePluginPortal
()
google
()
google
()
jcenter
()
jcenter
()
mavenCentral
()
mavenCentral
()
maven
{
url
'https://jitpack.io'
}
}
}
}
}
dependencyResolutionManagement
{
dependencyResolutionManagement
{
repositoriesMode
.
set
(
RepositoriesMode
.
FAIL_ON_PROJECT_REPOS
)
repositoriesMode
.
set
(
RepositoriesMode
.
FAIL_ON_PROJECT_REPOS
)
repositories
{
repositories
{
maven
{
url
=
uri
(
"https://jitpack.io"
)
}
google
()
google
()
jcenter
()
jcenter
()
mavenCentral
()
mavenCentral
()
...
@@ -18,7 +18,6 @@ dependencyResolutionManagement {
...
@@ -18,7 +18,6 @@ dependencyResolutionManagement {
maven
{
url
'https://jitpack.io'
}
maven
{
url
'https://jitpack.io'
}
maven
{
url
"https://jcenter.bintray.com"
}
maven
{
url
"https://jcenter.bintray.com"
}
maven
{
url
"https://anylinesdk.blob.core.windows.net/maven/"
}
maven
{
url
"https://anylinesdk.blob.core.windows.net/maven/"
}
}
}
}
}
rootProject
.
name
=
"seatel"
rootProject
.
name
=
"seatel"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment