Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Room Park Android
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
Vladislav Bogdashkin
Room Park Android
Commits
102fada9
Commit
102fada9
authored
Oct 18, 2019
by
Vladislav Bogdashkin
🎣
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
deal status progress
deal card
parent
4638bb65
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
357 additions
and
74 deletions
+357
-74
deals.kt
...va/com/biganto/visual/roompark/domain/interactor/deals.kt
+1
-1
ScreenContract.kt
...sual/roompark/presentation/screen/deals/ScreenContract.kt
+36
-0
ScreenController.kt
...al/roompark/presentation/screen/deals/ScreenController.kt
+31
-1
ScreenPresenter.kt
...ual/roompark/presentation/screen/deals/ScreenPresenter.kt
+10
-0
ScreenViewState.kt
...ual/roompark/presentation/screen/deals/ScreenViewState.kt
+3
-1
Adapter.kt
...visual/roompark/presentation/screen/deals/util/Adapter.kt
+69
-23
FavoritesAdapter.kt
...rk/presentation/screen/favorites/util/FavoritesAdapter.kt
+6
-6
StatusProgressCeil.kt
...ark/view_utils/status_progress_view/StatusProgressCeil.kt
+12
-6
deal_card_viewholder.xml
app/src/main/res/layout/deal_card_viewholder.xml
+52
-35
progress_deal_state_pattern_view.xml
app/src/main/res/layout/progress_deal_state_pattern_view.xml
+0
-1
progress_deal_state_pattern_view_horizontal.xml
...es/layout/progress_deal_state_pattern_view_horizontal.xml
+130
-0
status_view.xml
app/src/main/res/layout/status_view.xml
+7
-0
No files found.
app/src/main/java/com/biganto/visual/roompark/domain/interactor/deals.kt
View file @
102fada9
...
@@ -12,7 +12,7 @@ class DealsInteractor @Inject constructor(
...
@@ -12,7 +12,7 @@ class DealsInteractor @Inject constructor(
){
){
fun
fetchDeals
()
=
Single
.
just
(
arrayListOf
(
dealFlat
,
dealParkign
))
fun
fetchDeals
()
=
Single
.
just
(
arrayListOf
(
dealFlat
,
dealParkign
))
fun
getStatusList
()
=
Single
.
just
(
statusList
.
sort
By
{
it
.
orderId
})
fun
getStatusList
()
=
Single
.
just
(
statusList
.
sort
edBy
{
it
.
orderId
})
companion
object
{
companion
object
{
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deals/ScreenContract.kt
View file @
102fada9
package
com.biganto.visual.roompark.presentation.screen.deals
package
com.biganto.visual.roompark.presentation.screen.deals
import
com.biganto.visual.roompark.conductor.BigantoBaseContract
import
com.biganto.visual.roompark.conductor.BigantoBaseContract
import
com.biganto.visual.roompark.domain.model.DealModel
import
com.biganto.visual.roompark.domain.model.StatusModel
/**
/**
* Created by Vladislav Bogdashkin on 30.09.2019.
* Created by Vladislav Bogdashkin on 30.09.2019.
...
@@ -9,3 +11,37 @@ import com.biganto.visual.roompark.conductor.BigantoBaseContract
...
@@ -9,3 +11,37 @@ import com.biganto.visual.roompark.conductor.BigantoBaseContract
interface
DealsScreen
:
BigantoBaseContract
<
DealsScreenViewState
>
{
interface
DealsScreen
:
BigantoBaseContract
<
DealsScreenViewState
>
{
}
}
data class
DealPreviewModel
(
val
id
:
String
,
val
type
:
String
,
val
name
:
String
,
val
building
:
Int
?,
val
section
:
Int
?,
val
floor
:
Int
?,
val
area
:
Float
?,
val
statusNo
:
Int
,
val
dealSum
:
Int
,
val
dealPayout
:
Int
,
val
dealToPay
:
Int
,
val
dealTourIds
:
List
<
Int
?>?,
val
isViewed
:
Boolean
=
true
,
val
statusList
:
List
<
StatusModel
>
){
constructor
(
data
:
Pair
<
DealModel
,
List
<
StatusModel
>>)
:
this
(
data
.
first
.
id
,
data
.
first
.
estate
.
type
,
data
.
first
.
estate
.
number
,
data
.
first
.
estate
.
commonInfo
?.
building
,
data
.
first
.
estate
.
commonInfo
?.
section_begin
,
data
.
first
.
estate
.
commonInfo
?.
floor
,
data
.
first
.
estate
.
commonInfo
?.
area
,
data
.
first
.
statusId
,
data
.
first
.
opportunitySum
,
data
.
first
.
paymentSum
,
data
.
first
.
amount_pay_sum
,
arrayListOf
<
Int
?>(
data
.
first
.
estate
.
multitourId
),
false
,
data
.
second
)
}
\ No newline at end of file
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deals/ScreenController.kt
View file @
102fada9
package
com.biganto.visual.roompark.presentation.screen.deals
package
com.biganto.visual.roompark.presentation.screen.deals
import
android.view.View
import
android.view.View
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
butterknife.BindView
import
com.biganto.visual.roompark.R
import
com.biganto.visual.roompark.R
import
com.biganto.visual.roompark.base.RoomParkApplication
import
com.biganto.visual.roompark.base.RoomParkApplication
import
com.biganto.visual.roompark.base.RoomParkMainActivity
import
com.biganto.visual.roompark.base.RoomParkMainActivity
import
com.biganto.visual.roompark.conductor.BigantoBaseController
import
com.biganto.visual.roompark.conductor.BigantoBaseController
import
com.biganto.visual.roompark.presentation.screen.deals.util.DealsListAdapter
import
com.biganto.visual.roompark.view_utils.grid.CeilsDecoration
import
timber.log.Timber
import
timber.log.Timber
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -22,12 +27,30 @@ class DealsScreenController :
...
@@ -22,12 +27,30 @@ class DealsScreenController :
getComponent
()
getComponent
()
}
}
@BindView
(
R
.
id
.
favorites_cards_recycler_view
)
lateinit
var
favoritesRecyclerView
:
RecyclerView
private
fun
bindRecycler
()
{
favoritesRecyclerView
.
isNestedScrollingEnabled
=
true
favoritesRecyclerView
.
layoutManager
=
LinearLayoutManager
(
activity
,
RecyclerView
.
VERTICAL
,
false
)
favoritesRecyclerView
.
adapter
=
DealsListAdapter
()
favoritesRecyclerView
.
itemAnimator
=
null
if
(
favoritesRecyclerView
.
itemDecorationCount
==
0
)
favoritesRecyclerView
.
addItemDecoration
(
CeilsDecoration
(
1
,
resources
?.
getDimensionPixelSize
(
R
.
dimen
.
ceil_grid_padding
))
)
}
@Inject
@Inject
override
lateinit
var
injectedPresenter
:
DealsScreenPresenter
override
lateinit
var
injectedPresenter
:
DealsScreenPresenter
override
fun
onViewBound
(
v
:
View
)
{
override
fun
onViewBound
(
v
:
View
)
{
bindRecycler
()
}
}
override
fun
render
(
viewState
:
DealsScreenViewState
)
{
override
fun
render
(
viewState
:
DealsScreenViewState
)
{
...
@@ -35,6 +58,7 @@ class DealsScreenController :
...
@@ -35,6 +58,7 @@ class DealsScreenController :
Timber
.
d
(
"Render state $viewState"
)
Timber
.
d
(
"Render state $viewState"
)
when
(
viewState
){
when
(
viewState
){
is
DealsScreenViewState
.
Idle
->
render
(
viewState
)
is
DealsScreenViewState
.
Idle
->
render
(
viewState
)
is
DealsScreenViewState
.
DealsLoaded
->
render
(
viewState
)
}
}
}
}
...
@@ -42,6 +66,12 @@ class DealsScreenController :
...
@@ -42,6 +66,12 @@ class DealsScreenController :
}
}
private
fun
render
(
viewState
:
DealsScreenViewState
.
DealsLoaded
){
(
favoritesRecyclerView
.
adapter
as
DealsListAdapter
).
addItems
(
viewState
.
items
)
}
private
fun
getComponent
()
=
DaggerDealsScreenComponent
.
factory
()
private
fun
getComponent
()
=
DaggerDealsScreenComponent
.
factory
()
.
create
(
RoomParkApplication
.
component
,
activity
as
RoomParkMainActivity
)
.
create
(
RoomParkApplication
.
component
,
activity
as
RoomParkMainActivity
)
.
inject
(
this
)
.
inject
(
this
)
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deals/ScreenPresenter.kt
View file @
102fada9
...
@@ -20,7 +20,17 @@ class DealsScreenPresenter @Inject constructor(
...
@@ -20,7 +20,17 @@ class DealsScreenPresenter @Inject constructor(
override
fun
bindIntents
()
{
override
fun
bindIntents
()
{
val
getStatusList
=
interactor
.
getStatusList
()
val
fetchDeals
=
interactor
.
fetchDeals
()
.
flatMap
{
deals
->
getStatusList
.
map
{
List
(
deals
.
size
)
{
index
->
DealPreviewModel
(
Pair
(
deals
[
index
],
it
))
}
}
}
.
map
(
DealsScreenViewState
::
DealsLoaded
)
val
state
=
restoreStateObservable
val
state
=
restoreStateObservable
.
mergeWith
(
fetchDeals
)
.
doOnError
{
Timber
.
e
(
it
)}
.
doOnError
{
Timber
.
e
(
it
)}
.
subscribeOn
(
Schedulers
.
io
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deals/ScreenViewState.kt
View file @
102fada9
...
@@ -9,4 +9,6 @@ import com.biganto.visual.roompark.conductor.BigantoBaseViewState
...
@@ -9,4 +9,6 @@ import com.biganto.visual.roompark.conductor.BigantoBaseViewState
sealed
class
DealsScreenViewState
:
BigantoBaseViewState
()
{
sealed
class
DealsScreenViewState
:
BigantoBaseViewState
()
{
class
Idle
:
DealsScreenViewState
()
class
Idle
:
DealsScreenViewState
()
}
class
DealsLoaded
(
val
items
:
List
<
DealPreviewModel
>)
:
DealsScreenViewState
()
\ No newline at end of file
}
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deals/util/Adapter.kt
View file @
102fada9
package
com.biganto.visual.roompark.presentation.screen.deals.util
package
com.biganto.visual.roompark.presentation.screen.deals.util
import
android.view.Gravity
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.LinearLayout
import
android.widget.TextView
import
android.widget.TextView
import
androidx.recyclerview.widget.RecyclerView
import
androidx.recyclerview.widget.RecyclerView
import
butterknife.BindView
import
butterknife.BindView
import
butterknife.ButterKnife
import
butterknife.ButterKnife
import
com.biganto.visual.roompark.R
import
com.biganto.visual.roompark.R
import
com.biganto.visual.roompark.domain.model.CommonInfoModel
import
com.biganto.visual.roompark.domain.model.StatusModel
import
com.biganto.visual.roompark.domain.model.DealModel
import
com.biganto.visual.roompark.presentation.screen.deals.DealPreviewModel
import
com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressAnimationState
import
com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
import
timber.log.Timber
/**
/**
* Created by Vladislav Bogdashkin on 16.10.2019.
* Created by Vladislav Bogdashkin on 16.10.2019.
*/
*/
class
DealsListAdapter
:
RecyclerView
.
Adapter
<
CamList
ViewHolder
>()
{
class
DealsListAdapter
:
RecyclerView
.
Adapter
<
Deal
ViewHolder
>()
{
private
var
list
:
MutableList
<
DealModel
>
=
mutableListOf
()
private
var
list
:
MutableList
<
Deal
Preview
Model
>
=
mutableListOf
()
fun
addItems
(
list
:
List
<
DealModel
>){
fun
addItems
(
list
:
List
<
Deal
Preview
Model
>){
this
.
list
.
clear
()
this
.
list
.
clear
()
this
.
list
.
addAll
(
list
)
this
.
list
.
addAll
(
list
)
notifyDataSetChanged
()
notifyDataSetChanged
()
}
}
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
CamList
ViewHolder
=
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
Deal
ViewHolder
=
CamList
ViewHolder
(
Deal
ViewHolder
(
LayoutInflater
.
from
(
parent
.
context
)
LayoutInflater
.
from
(
parent
.
context
)
.
inflate
(
R
.
layout
.
favorite
_card_viewholder
,
parent
,
false
)
.
inflate
(
R
.
layout
.
deal
_card_viewholder
,
parent
,
false
)
)
)
override
fun
getItemCount
():
Int
=
list
.
size
override
fun
getItemCount
():
Int
=
list
.
size
override
fun
onBindViewHolder
(
holder
:
CamList
ViewHolder
,
position
:
Int
)
{
override
fun
onBindViewHolder
(
holder
:
Deal
ViewHolder
,
position
:
Int
)
{
holder
.
bindModel
(
list
[
position
])
holder
.
bindModel
(
list
[
position
])
}
}
}
}
class
CamList
ViewHolder
(
itemView
:
View
)
:
RecyclerView
.
ViewHolder
(
itemView
)
{
class
Deal
ViewHolder
(
itemView
:
View
)
:
RecyclerView
.
ViewHolder
(
itemView
)
{
@BindView
(
R
.
id
.
object_card_title
)
lateinit
var
estateTitle
:
TextView
@BindView
(
R
.
id
.
deal_card_header
)
lateinit
var
estateTitle
:
TextView
@BindView
(
R
.
id
.
common_info_block
)
lateinit
var
commonInfo
:
View
@BindView
(
R
.
id
.
common_info_block
)
lateinit
var
commonInfo
:
View
@BindView
(
R
.
id
.
start_tour_button
)
lateinit
var
startTour
:
View
@BindView
(
R
.
id
.
start_tour_button
)
lateinit
var
startTour
:
View
...
@@ -54,6 +59,8 @@ class CamListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
...
@@ -54,6 +59,8 @@ class CamListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
@BindView
(
R
.
id
.
deal_payed_value_text_view
)
lateinit
var
dealPayed
:
TextView
@BindView
(
R
.
id
.
deal_payed_value_text_view
)
lateinit
var
dealPayed
:
TextView
@BindView
(
R
.
id
.
deal_to_pay_value_text_view
)
lateinit
var
dealSumToPay
:
TextView
@BindView
(
R
.
id
.
deal_to_pay_value_text_view
)
lateinit
var
dealSumToPay
:
TextView
@BindView
(
R
.
id
.
progress_holder
)
lateinit
var
statusContainer
:
LinearLayout
fun
typeName
(
type
:
String
)
=
when
(
type
){
fun
typeName
(
type
:
String
)
=
when
(
type
){
"flat"
->
"КВАРТИРА"
"flat"
->
"КВАРТИРА"
...
@@ -66,29 +73,29 @@ class CamListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
...
@@ -66,29 +73,29 @@ class CamListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
ButterKnife
.
bind
(
this
,
itemView
)
ButterKnife
.
bind
(
this
,
itemView
)
}
}
fun
bindModel
(
deal
:
DealModel
)
{
fun
bindModel
(
deal
:
DealPreviewModel
)
{
val
model
=
deal
.
estate
val
fullObjName
=
"${typeName(deal.type)}\n${deal.name}"
val
fullObjName
=
"${typeName(model.type)}\n${model.number}"
estateTitle
.
text
=
fullObjName
estateTitle
.
text
=
fullObjName
if
(
model
.
commonInfo
==
null
)
commonInfo
.
visibility
=
View
.
GONE
renderCommonInfo
(
deal
)
else
{
commonInfo
.
visibility
=
View
.
VISIBLE
;
renderCommonInfo
(
model
.
commonInfo
)}
if
(
model
.
type
==
"flat"
)
startTour
.
visibility
=
View
.
VISIBLE
if
(
deal
.
dealTourIds
.
isNullOrEmpty
()
)
startTour
.
visibility
=
View
.
VISIBLE
else
startTour
.
visibility
=
View
.
GONE
else
startTour
.
visibility
=
View
.
GONE
dealSum
.
text
=
deal
.
opportunitySum
.
toRubly
()
dealSum
.
text
=
deal
.
dealSum
.
toRubly
()
dealPayed
.
text
=
deal
.
paymentSum
.
toRubly
()
dealPayed
.
text
=
deal
.
dealPayout
.
toRubly
()
dealSumToPay
.
text
=
deal
.
amount_pay_sum
.
toRubly
()
dealSumToPay
.
text
=
deal
.
dealToPay
.
toRubly
()
createStatusView
(
statusContainer
,
deal
.
statusList
,
deal
.
statusNo
,
false
)
}
}
fun
renderCommonInfo
(
info
:
CommonInfo
Model
){
private
fun
renderCommonInfo
(
info
:
DealPreview
Model
){
if
(
info
.
building
==
null
)
info1
.
visibility
=
View
.
GONE
if
(
info
.
building
==
null
)
info1
.
visibility
=
View
.
GONE
else
{
info1
.
title
().
text
=
"Корпус"
;
info1
.
text
().
text
=
info
.
building
.
toString
()}
else
{
info1
.
title
().
text
=
"Корпус"
;
info1
.
text
().
text
=
info
.
building
.
toString
()}
if
(
info
.
section
_begin
==
null
)
info1
.
visibility
=
View
.
GONE
if
(
info
.
section
==
null
)
info1
.
visibility
=
View
.
GONE
else
{
info2
.
title
().
text
=
"Секция"
;
info2
.
text
().
text
=
info
.
section
_begin
.
toString
()}
else
{
info2
.
title
().
text
=
"Секция"
;
info2
.
text
().
text
=
info
.
section
.
toString
()}
if
(
info
.
floor
==
null
)
info1
.
visibility
=
View
.
GONE
if
(
info
.
floor
==
null
)
info1
.
visibility
=
View
.
GONE
else
{
info3
.
title
().
text
=
"Этаж"
;
info3
.
text
().
text
=
info
.
floor
.
toString
()}
else
{
info3
.
title
().
text
=
"Этаж"
;
info3
.
text
().
text
=
info
.
floor
.
toString
()}
...
@@ -103,6 +110,45 @@ class CamListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
...
@@ -103,6 +110,45 @@ class CamListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
return
String
.
format
(
"%,d \u20BD"
,
this
).
replace
(
','
,
' '
)
return
String
.
format
(
"%,d \u20BD"
,
this
).
replace
(
','
,
' '
)
}
}
}
fun
createStatusView
(
container
:
ViewGroup
,
list
:
List
<
StatusModel
>,
currentStatus
:
Int
,
isVertical
:
Boolean
){
container
.
removeAllViews
()
val
scale
=
container
.
resources
.
displayMetrics
.
density
.
toDouble
()
val
param24dp
=
kotlin
.
math
.
ceil
(
24
*
scale
).
toInt
()
val
wrapContent
=
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
(
container
as
LinearLayout
).
weightSum
=
10f
list
.
sortedBy
{
it
.
orderId
}.
forEach
{
val
ceil
=
LayoutInflater
.
from
(
container
.
context
)
.
inflate
(
R
.
layout
.
status_view
,
container
,
false
)
as
StatusProgressCeil
ceil
.
layoutParams
.
height
=
if
(
isVertical
)
wrapContent
else
param24dp
ceil
.
layoutParams
.
width
=
if
(
isVertical
)
param24dp
else
wrapContent
(
ceil
.
layoutParams
as
LinearLayout
.
LayoutParams
).
weight
=
1f
(
ceil
.
layoutParams
as
LinearLayout
.
LayoutParams
).
gravity
=
Gravity
.
BOTTOM
Timber
.
d
(
"${it.orderId-1} != ${list.size}"
)
ceil
.
setHasEnd
(
it
.
orderId
!=
list
.
size
)
ceil
.
setHasStart
(
it
.
orderId
>
1
)
Timber
.
d
(
"${it.orderId} == ${currentStatus}"
)
ceil
.
setIsEnabled
(
it
.
orderId
<=
currentStatus
)
Timber
.
d
(
"${it.orderId} <= ${currentStatus}"
)
ceil
.
setNext
(
it
.
orderId
<
currentStatus
)
if
(
it
.
orderId
>
currentStatus
)
ceil
.
setAnimState
(
StatusProgressAnimationState
.
DISABLE
)
ceil
.
invalidate
()
container
.
addView
(
ceil
)
Timber
.
d
(
"created view : $param24dp"
)
}
container
.
invalidate
()
}
}
\ No newline at end of file
app/src/main/java/com/biganto/visual/roompark/presentation/screen/favorites/util/FavoritesAdapter.kt
View file @
102fada9
...
@@ -15,7 +15,7 @@ import com.biganto.visual.roompark.domain.model.EstateModel
...
@@ -15,7 +15,7 @@ import com.biganto.visual.roompark.domain.model.EstateModel
* Created by Vladislav Bogdashkin on 16.10.2019.
* Created by Vladislav Bogdashkin on 16.10.2019.
*/
*/
class
FavoritesListAdapter
:
RecyclerView
.
Adapter
<
Deal
ViewHolder
>()
{
class
FavoritesListAdapter
:
RecyclerView
.
Adapter
<
Favorite
ViewHolder
>()
{
private
var
list
:
MutableList
<
EstateModel
>
=
mutableListOf
()
private
var
list
:
MutableList
<
EstateModel
>
=
mutableListOf
()
...
@@ -25,21 +25,21 @@ class FavoritesListAdapter : RecyclerView.Adapter<DealViewHolder>() {
...
@@ -25,21 +25,21 @@ class FavoritesListAdapter : RecyclerView.Adapter<DealViewHolder>() {
notifyDataSetChanged
()
notifyDataSetChanged
()
}
}
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
Deal
ViewHolder
=
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
Favorite
ViewHolder
=
Deal
ViewHolder
(
Favorite
ViewHolder
(
LayoutInflater
.
from
(
parent
.
context
)
LayoutInflater
.
from
(
parent
.
context
)
.
inflate
(
R
.
layout
.
deal
_card_viewholder
,
parent
,
false
)
.
inflate
(
R
.
layout
.
favorite
_card_viewholder
,
parent
,
false
)
)
)
override
fun
getItemCount
():
Int
=
list
.
size
override
fun
getItemCount
():
Int
=
list
.
size
override
fun
onBindViewHolder
(
holder
:
Deal
ViewHolder
,
position
:
Int
)
{
override
fun
onBindViewHolder
(
holder
:
Favorite
ViewHolder
,
position
:
Int
)
{
holder
.
bindModel
(
list
[
position
])
holder
.
bindModel
(
list
[
position
])
}
}
}
}
class
Deal
ViewHolder
(
itemView
:
View
)
:
RecyclerView
.
ViewHolder
(
itemView
)
{
class
Favorite
ViewHolder
(
itemView
:
View
)
:
RecyclerView
.
ViewHolder
(
itemView
)
{
@BindView
(
R
.
id
.
object_card_title
)
lateinit
var
estateTitle
:
TextView
@BindView
(
R
.
id
.
object_card_title
)
lateinit
var
estateTitle
:
TextView
@BindView
(
R
.
id
.
common_info_block
)
lateinit
var
commonInfo
:
View
@BindView
(
R
.
id
.
common_info_block
)
lateinit
var
commonInfo
:
View
...
...
app/src/main/java/com/biganto/visual/roompark/view_utils/status_progress_view/StatusProgressCeil.kt
View file @
102fada9
...
@@ -26,17 +26,23 @@ class StatusProgressCeil @JvmOverloads constructor(
...
@@ -26,17 +26,23 @@ class StatusProgressCeil @JvmOverloads constructor(
private
var
animateState
:
StatusProgressAnimationState
=
private
var
animateState
:
StatusProgressAnimationState
=
StatusProgressAnimationState
.
fromInt
(
array
.
getInt
(
R
.
styleable
.
StatusProgressCeil_anim_state
,
1
))
StatusProgressAnimationState
.
fromInt
(
array
.
getInt
(
R
.
styleable
.
StatusProgressCeil_anim_state
,
1
))
private
va
l
hasStart
:
Boolean
=
private
va
r
hasStart
:
Boolean
=
array
.
getBoolean
(
R
.
styleable
.
StatusProgressCeil_hasStart
,
false
)
array
.
getBoolean
(
R
.
styleable
.
StatusProgressCeil_hasStart
,
false
)
private
va
l
hasEnd
:
Boolean
=
private
va
r
hasEnd
:
Boolean
=
array
.
getBoolean
(
R
.
styleable
.
StatusProgressCeil_hasEnd
,
false
)
array
.
getBoolean
(
R
.
styleable
.
StatusProgressCeil_hasEnd
,
false
)
private
va
l
isEnable
:
Boolean
=
private
va
r
isEnable
:
Boolean
=
array
.
getBoolean
(
R
.
styleable
.
StatusProgressCeil_isEnable
,
false
)
array
.
getBoolean
(
R
.
styleable
.
StatusProgressCeil_isEnable
,
false
)
private
va
l
nextEnable
:
Boolean
=
private
va
r
nextEnable
:
Boolean
=
array
.
getBoolean
(
R
.
styleable
.
StatusProgressCeil_nextEnable
,
false
)
array
.
getBoolean
(
R
.
styleable
.
StatusProgressCeil_nextEnable
,
false
)
val
animationTimeMills
:
Long
=
80L
fun
setHasStart
(
has
:
Boolean
)
{
hasStart
=
has
}
var
lastAnimateStateChanged
:
Long
=
0L
fun
setHasEnd
(
has
:
Boolean
)
{
hasEnd
=
has
}
fun
setIsEnabled
(
isEnable
:
Boolean
)
{
this
.
isEnable
=
isEnable
}
fun
setNext
(
nextisEnable
:
Boolean
)
{
nextEnable
=
nextisEnable
}
fun
setAnimState
(
state
:
StatusProgressAnimationState
)
{
animateState
=
state
}
private
val
animationTimeMills
:
Long
=
80L
private
var
lastAnimateStateChanged
:
Long
=
0L
val
ifAnimateEnd
:
Boolean
get
(){
val
ifAnimateEnd
:
Boolean
get
(){
return
(
System
.
currentTimeMillis
()-
lastAnimateStateChanged
)
>
animationTimeMills
return
(
System
.
currentTimeMillis
()-
lastAnimateStateChanged
)
>
animationTimeMills
...
...
app/src/main/res/layout/deal_card_viewholder.xml
View file @
102fada9
...
@@ -26,48 +26,64 @@
...
@@ -26,48 +26,64 @@
android:layout_marginEnd=
"16dp"
android:layout_marginEnd=
"16dp"
android:layout_marginTop=
"16dp"
/>
android:layout_marginTop=
"16dp"
/>
<LinearLayout
<LinearLayout
android:layout_width=
"match_parent"
android:id=
"@+id/common_info_block"
android:layout_height=
"wrap_content"
android:layout_width=
"match_parent"
android:layout_marginStart=
"16dp"
android:layout_marginEnd=
"16dp"
android:layout_marginTop=
"8dp"
android:orientation=
"horizontal"
>
<include
android:id=
"@+id/info_ceil_1"
layout=
"@layout/info_ceil_view"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
/>
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"8dp"
android:layout_marginEnd=
"16dp"
android:orientation=
"horizontal"
>
<include
<include
android:id=
"@+id/info_ceil_2
"
android:id=
"@+id/info_ceil_1
"
layout=
"@layout/info_ceil_view"
layout=
"@layout/info_ceil_view"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
/>
android:layout_weight=
"1"
/>
<include
<include
android:id=
"@+id/info_ceil_3
"
android:id=
"@+id/info_ceil_2
"
layout=
"@layout/info_ceil_view"
layout=
"@layout/info_ceil_view"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
/>
android:layout_weight=
"1"
/>
<include
<include
android:id=
"@+id/info_ceil_4
"
android:id=
"@+id/info_ceil_3
"
layout=
"@layout/info_ceil_view"
layout=
"@layout/info_ceil_view"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
/>
android:layout_weight=
"1"
/>
</LinearLayout>
<include
android:id=
"@+id/info_ceil_4"
layout=
"@layout/info_ceil_view"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
/>
<include
layout=
"@layout/test_progress_status"
</LinearLayout>
android:layout_height=
"wrap_content"
<LinearLayout
android:id=
"@+id/progress_holder"
android:orientation=
"horizontal"
android:layout_height=
"60dp"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
/>
android:background=
"@drawable/gradient_background_accent"
>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:layout_width=
"24dp"
android:layout_height=
"wrap_content"
/>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:layout_width=
"24dp"
android:layout_height=
"wrap_content"
/>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:layout_width=
"24dp"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
<LinearLayout
<LinearLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
@@ -166,6 +182,7 @@
...
@@ -166,6 +182,7 @@
</LinearLayout>
</LinearLayout>
<include
<include
android:id=
"@+id/start_tour_button"
layout=
"@layout/start_tour_viewholder"
layout=
"@layout/start_tour_viewholder"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"64dp"
android:layout_height=
"64dp"
...
...
app/src/main/res/layout/progress_deal_state_pattern_view.xml
View file @
102fada9
...
@@ -11,7 +11,6 @@
...
@@ -11,7 +11,6 @@
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"24dp"
android:layout_height=
"24dp"
android:scaleType=
"fitEnd"
app:direction=
"vertical"
app:direction=
"vertical"
app:hasEnd=
"true"
app:hasEnd=
"true"
app:hasStart=
"false"
app:hasStart=
"false"
...
...
app/src/main/res/layout/progress_deal_state_pattern_view_horizontal.xml
0 → 100644
View file @
102fada9
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:id=
"@+id/sum"
android:layout_width=
"match_parent"
android:layout_height=
"24dp"
android:background=
"@color/colorCheckListGradientEnd"
android:orientation=
"horizontal"
android:weightSum=
"10"
>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
app:direction=
"horizontal"
app:hasEnd=
"true"
app:hasStart=
"false"
app:isEnable=
"true"
app:nextEnable=
"true"
/>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:id=
"@+id/statusProgressCeil2"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:scaleType=
"fitEnd"
app:direction=
"horizontal"
app:hasEnd=
"true"
app:hasStart=
"true"
app:isEnable=
"true"
app:nextEnable=
"true"
/>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:id=
"@+id/statusProgressCeil4"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:scaleType=
"fitEnd"
app:direction=
"horizontal"
app:hasEnd=
"true"
app:hasStart=
"true"
app:isEnable=
"true"
app:nextEnable=
"true"
/>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:id=
"@+id/statusProgressCeil5"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:scaleType=
"fitEnd"
app:direction=
"horizontal"
app:hasEnd=
"true"
app:hasStart=
"true"
app:isEnable=
"true"
app:nextEnable=
"true"
/>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:id=
"@+id/statusProgressCeil6"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:scaleType=
"fitEnd"
app:direction=
"horizontal"
app:hasEnd=
"true"
app:hasStart=
"true"
app:isEnable=
"true"
app:nextEnable=
"true"
/>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:id=
"@+id/statusProgressCeil3"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:scaleType=
"fitEnd"
app:direction=
"horizontal"
app:hasEnd=
"true"
app:hasStart=
"true"
app:isEnable=
"true"
app:nextEnable=
"true"
/>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:scaleType=
"fitEnd"
app:direction=
"horizontal"
app:hasEnd=
"true"
app:hasStart=
"true"
app:isEnable=
"true"
app:nextEnable=
"true"
/>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:scaleType=
"fitEnd"
app:direction=
"horizontal"
app:hasEnd=
"true"
app:hasStart=
"true"
app:isEnable=
"true"
app:nextEnable=
"true"
/>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:scaleType=
"fitEnd"
app:direction=
"horizontal"
app:hasEnd=
"true"
app:hasStart=
"true"
app:isEnable=
"true"
app:nextEnable=
"false"
/>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:scaleType=
"fitEnd"
app:anim_state=
"disable"
app:direction=
"horizontal"
app:hasEnd=
"false"
app:hasStart=
"true"
app:isEnable=
"false"
app:nextEnable=
"false"
/>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/status_view.xml
0 → 100644
View file @
102fada9
<?xml version="1.0" encoding="utf-8"?>
<com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
>
</com.biganto.visual.roompark.view_utils.status_progress_view.StatusProgressCeil>
\ No newline at end of file
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