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
8b13b35c
Commit
8b13b35c
authored
Jan 13, 2020
by
Vladislav Bogdashkin
🎣
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mapping common info
parent
841483ee
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
163 additions
and
18 deletions
+163
-18
ScreenContract.kt
...ual/roompark/presentation/screen/estate/ScreenContract.kt
+2
-0
ScreenController.kt
...l/roompark/presentation/screen/estate/ScreenController.kt
+11
-0
ScreenPresenter.kt
...al/roompark/presentation/screen/estate/ScreenPresenter.kt
+85
-17
info.kt
...o/visual/roompark/presentation/screen/estate/util/info.kt
+40
-0
flat_full_card_screen.xml
app/src/main/res/layout/flat_full_card_screen.xml
+2
-1
flate_measure_info_viewholder.xml
app/src/main/res/layout/flate_measure_info_viewholder.xml
+1
-0
strings.xml
app/src/main/res/values/strings.xml
+13
-0
mintty.exe.stackdump
mintty.exe.stackdump
+9
-0
No files found.
app/src/main/java/com/biganto/visual/roompark/presentation/screen/estate/ScreenContract.kt
View file @
8b13b35c
...
@@ -13,5 +13,7 @@ interface EstateScreen : BigantoBaseContract<EstateScreenViewState> {
...
@@ -13,5 +13,7 @@ interface EstateScreen : BigantoBaseContract<EstateScreenViewState> {
fun
switchWalls
():
Observable
<
Pair
<
Int
,
Boolean
>>
fun
switchWalls
():
Observable
<
Pair
<
Int
,
Boolean
>>
fun
switchFurniture
():
Observable
<
Pair
<
Int
,
Boolean
>>
fun
switchFurniture
():
Observable
<
Pair
<
Int
,
Boolean
>>
fun
switchElectric
():
Observable
<
Pair
<
Int
,
Boolean
>>
fun
switchElectric
():
Observable
<
Pair
<
Int
,
Boolean
>>
fun
showCommonInfo
():
Observable
<
Int
>
fun
showExplication
():
Observable
<
Int
>
}
}
app/src/main/java/com/biganto/visual/roompark/presentation/screen/estate/ScreenController.kt
View file @
8b13b35c
...
@@ -8,6 +8,8 @@ import android.webkit.WebView
...
@@ -8,6 +8,8 @@ import android.webkit.WebView
import
android.widget.LinearLayout
import
android.widget.LinearLayout
import
androidx.core.os.bundleOf
import
androidx.core.os.bundleOf
import
androidx.core.view.isNotEmpty
import
androidx.core.view.isNotEmpty
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
butterknife.BindView
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
...
@@ -15,6 +17,7 @@ import com.biganto.visual.roompark.base.RoomParkMainActivity
...
@@ -15,6 +17,7 @@ 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.domain.model.FeatureModel
import
com.biganto.visual.roompark.domain.model.FeatureModel
import
com.biganto.visual.roompark.domain.model.PlanPresetModel
import
com.biganto.visual.roompark.domain.model.PlanPresetModel
import
com.biganto.visual.roompark.presentation.screen.estate.util.FlatInfoAdapter
import
com.google.android.material.switchmaterial.SwitchMaterial
import
com.google.android.material.switchmaterial.SwitchMaterial
import
com.google.android.material.tabs.TabLayout
import
com.google.android.material.tabs.TabLayout
import
com.google.android.material.textview.MaterialTextView
import
com.google.android.material.textview.MaterialTextView
...
@@ -86,6 +89,9 @@ class EstateScreenController :
...
@@ -86,6 +89,9 @@ class EstateScreenController :
@BindView
(
R
.
id
.
flat_plan_webview
)
@BindView
(
R
.
id
.
flat_plan_webview
)
lateinit
var
planWebView
:
WebView
lateinit
var
planWebView
:
WebView
@BindView
(
R
.
id
.
flat_content_recycler_view
)
lateinit
var
flatInfoRecyclerView
:
RecyclerView
@BindView
(
R
.
id
.
sizes_switch_container
)
@BindView
(
R
.
id
.
sizes_switch_container
)
lateinit
var
sizesContainer
:
LinearLayout
lateinit
var
sizesContainer
:
LinearLayout
...
@@ -128,6 +134,11 @@ class EstateScreenController :
...
@@ -128,6 +134,11 @@ class EstateScreenController :
}
}
private
fun
bindRecycler
()
{
private
fun
bindRecycler
()
{
flatInfoRecyclerView
.
isNestedScrollingEnabled
=
true
flatInfoRecyclerView
.
layoutManager
=
LinearLayoutManager
(
activity
,
RecyclerView
.
VERTICAL
,
false
)
flatInfoRecyclerView
.
adapter
=
FlatInfoAdapter
()
flatInfoRecyclerView
.
itemAnimator
=
null
}
}
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/estate/ScreenPresenter.kt
View file @
8b13b35c
package
com.biganto.visual.roompark.presentation.screen.estate
package
com.biganto.visual.roompark.presentation.screen.estate
import
android.app.Activity
import
android.content.Context
import
androidx.annotation.StringRes
import
com.biganto.visual.roompark.R
import
com.biganto.visual.roompark.conductor.BigantoBasePresenter
import
com.biganto.visual.roompark.conductor.BigantoBasePresenter
import
com.biganto.visual.roompark.domain.interactor.EstateInteractor
import
com.biganto.visual.roompark.domain.interactor.EstateInteractor
import
com.biganto.visual.roompark.domain.model.CommonInfoModel
import
com.biganto.visual.roompark.domain.model.EstateModel
import
com.biganto.visual.roompark.domain.model.FeatureModel
import
com.biganto.visual.roompark.domain.model.FeatureModel
import
com.biganto.visual.roompark.domain.model.PlanPresetModel
import
com.biganto.visual.roompark.domain.model.PlanPresetModel
import
com.biganto.visual.roompark.presentation.screen.estate.util.DisplayInfoModel
import
com.biganto.visual.roompark.util.monades.ExceptionString
import
com.biganto.visual.roompark.util.monades.ExceptionString
import
io.reactivex.Observable
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.android.schedulers.AndroidSchedulers
...
@@ -19,22 +26,28 @@ import javax.inject.Named
...
@@ -19,22 +26,28 @@ import javax.inject.Named
class
EstateScreenPresenter
@Inject
constructor
(
class
EstateScreenPresenter
@Inject
constructor
(
private
val
interactor
:
EstateInteractor
,
private
val
interactor
:
EstateInteractor
,
private
val
context
:
Context
,
@Named
(
SELECTED_ESTATE_ID_KEY
)
private
val
estateId
:
Int
@Named
(
SELECTED_ESTATE_ID_KEY
)
private
val
estateId
:
Int
)
)
:
BigantoBasePresenter
<
EstateScreen
,
EstateScreenViewState
>()
{
:
BigantoBasePresenter
<
EstateScreen
,
EstateScreenViewState
>()
{
private
var
planList
:
List
<
PlanPresetModel
>?
=
null
private
var
planList
:
List
<
PlanPresetModel
>?
=
null
private
var
estate
:
EstateModel
?
=
null
private
var
showType
:
InfoShowType
=
InfoShowType
.
COMMON_INFO
override
fun
defaultErrorViewStateHandler
()
=
override
fun
defaultErrorViewStateHandler
()
=
{
e
:
ExceptionString
->
EstateScreenViewState
.
SomeError
(
e
)
}
{
e
:
ExceptionString
->
EstateScreenViewState
.
SomeError
(
e
)
}
private
fun
getPlan
(
plan
:
PlanPresetModel
):
Observable
<
EstateScreenViewState
>
=
private
fun
getPlan
(
plan
:
PlanPresetModel
):
Observable
<
EstateScreenViewState
>
=
interactor
.
getPlan
(
plan
)
interactor
.
getPlan
(
plan
)
.
map
<
EstateScreenViewState
>
{
EstateScreenViewState
.
LoadPlan
(
it
)
}
.
map
<
EstateScreenViewState
>
{
EstateScreenViewState
.
LoadPlan
(
it
)
}
override
fun
bindIntents
()
{
override
fun
bindIntents
()
{
val
prefetchCards
=
interactor
.
getEstate
(
estateId
)
val
prefetchCards
=
interactor
.
getEstate
(
estateId
)
.
doOnNext
{
estate
=
it
.
copy
()
}
.
map
{
EstateScreenViewState
.
LoadEstate
(
it
)
}
.
map
{
EstateScreenViewState
.
LoadEstate
(
it
)
}
val
fetchPlans
=
interactor
.
getPlanTypes
(
estateId
)
val
fetchPlans
=
interactor
.
getPlanTypes
(
estateId
)
...
@@ -43,35 +56,51 @@ class EstateScreenPresenter @Inject constructor(
...
@@ -43,35 +56,51 @@ class EstateScreenPresenter @Inject constructor(
val
fetchPlan
=
intent
(
EstateScreen
::
planTypesTabSelected
)
val
fetchPlan
=
intent
(
EstateScreen
::
planTypesTabSelected
)
.
map
{
planList
?.
get
(
it
)
}
.
map
{
planList
?.
get
(
it
)
}
.
flatMap
{
interactor
.
getPlan
(
it
)
.
flatMap
{
.
map
<
EstateScreenViewState
>
{
plan
->
EstateScreenViewState
.
LoadPlan
(
plan
)
}
interactor
.
getPlan
(
it
)
.
startWith
(
Observable
.
just
<
EstateScreenViewState
>(
EstateScreenViewState
.
PlanTypeSelected
(
it
)))
.
map
<
EstateScreenViewState
>
{
plan
->
EstateScreenViewState
.
LoadPlan
(
plan
)
}
.
startWith
(
Observable
.
just
<
EstateScreenViewState
>(
EstateScreenViewState
.
PlanTypeSelected
(
it
)
)
)
}
}
val
switchSizes
=
intent
(
EstateScreen
::
switchSizes
)
val
switchSizes
=
intent
(
EstateScreen
::
switchSizes
)
.
map
{
pair
->
.
map
{
pair
->
val
plan
=
planList
?.
first
{
it
.
planId
==
pair
.
first
}
val
plan
=
planList
?.
first
{
it
.
planId
==
pair
.
first
}
plan
?.
switchFeature
<
FeatureModel
.
Sizes
>(
pair
.
second
)
plan
?.
switchFeature
<
FeatureModel
.
Sizes
>(
pair
.
second
)
plan
plan
}.
flatMap
(
::
getPlan
)
}.
flatMap
(
::
getPlan
)
val
switchFurn
=
intent
(
EstateScreen
::
switchFurniture
)
val
switchFurn
=
intent
(
EstateScreen
::
switchFurniture
)
.
map
{
pair
->
.
map
{
pair
->
val
plan
=
planList
?.
first
{
it
.
planId
==
pair
.
first
}
val
plan
=
planList
?.
first
{
it
.
planId
==
pair
.
first
}
plan
?.
switchFeature
<
FeatureModel
.
Furniture
>(
pair
.
second
)
plan
?.
switchFeature
<
FeatureModel
.
Furniture
>(
pair
.
second
)
plan
plan
}.
flatMap
(
::
getPlan
)
}.
flatMap
(
::
getPlan
)
val
switchWalls
=
intent
(
EstateScreen
::
switchWalls
)
val
switchWalls
=
intent
(
EstateScreen
::
switchWalls
)
.
map
{
pair
->
.
map
{
pair
->
val
plan
=
planList
?.
first
{
it
.
planId
==
pair
.
first
}
val
plan
=
planList
?.
first
{
it
.
planId
==
pair
.
first
}
plan
?.
switchFeature
<
FeatureModel
.
Walls
>(
pair
.
second
)
plan
?.
switchFeature
<
FeatureModel
.
Walls
>(
pair
.
second
)
plan
plan
}.
flatMap
(
::
getPlan
)
}.
flatMap
(
::
getPlan
)
val
switchElectric
=
intent
(
EstateScreen
::
switchElectric
)
val
switchElectric
=
intent
(
EstateScreen
::
switchElectric
)
.
map
{
pair
->
.
map
{
pair
->
val
plan
=
planList
?.
first
{
it
.
planId
==
pair
.
first
}
val
plan
=
planList
?.
first
{
it
.
planId
==
pair
.
first
}
plan
?.
switchFeature
<
FeatureModel
.
Electric
>(
pair
.
second
)
plan
}.
flatMap
(
::
getPlan
)
val
showInfo
=
intent
(
EstateScreen
::
showCommonInfo
)
.
doOnNext
{
showType
=
InfoShowType
.
COMMON_INFO
}
.
map
{
pair
->
val
plan
=
planList
?.
first
{
it
.
planId
==
pair
.
first
}
plan
?.
switchFeature
<
FeatureModel
.
Electric
>(
pair
.
second
)
plan
?.
switchFeature
<
FeatureModel
.
Electric
>(
pair
.
second
)
plan
plan
}.
flatMap
(
::
getPlan
)
}.
flatMap
(
::
getPlan
)
...
@@ -84,11 +113,50 @@ class EstateScreenPresenter @Inject constructor(
...
@@ -84,11 +113,50 @@ class EstateScreenPresenter @Inject constructor(
.
mergeWith
(
switchFurn
)
.
mergeWith
(
switchFurn
)
.
mergeWith
(
switchSizes
)
.
mergeWith
(
switchSizes
)
.
mergeWith
(
switchWalls
)
.
mergeWith
(
switchWalls
)
.
doOnError
{
Timber
.
e
(
it
)
}
.
doOnError
{
Timber
.
e
(
it
)
}
.
subscribeOn
(
Schedulers
.
io
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
subscribeViewState
(
state
.
cast
(
EstateScreenViewState
::
class
.
java
),
EstateScreen
::
render
)
subscribeViewState
(
state
.
cast
(
EstateScreenViewState
::
class
.
java
),
EstateScreen
::
render
)
}
}
}
private
fun
langString
(
@StringRes
id
:
Int
)
=
context
.
resources
.
getString
(
id
)
\ No newline at end of file
private
fun
langString
(
@StringRes
id
:
Int
,
vararg
args
:
Any
)
=
context
.
resources
.
getString
(
id
,
args
)
private
fun
mapCommonInfo
(
info
:
CommonInfoModel
)
{
val
r
=
arrayListOf
<
DisplayInfoModel
>()
info
.
building
.
let
{
r
.
add
(
DisplayInfoModel
(
langString
(
R
.
string
.
building
),
"$it"
))
}
info
.
section_begin
.
let
{
r
.
add
(
DisplayInfoModel
(
langString
(
R
.
string
.
section_begin
),
"$it"
))
}
r
.
add
(
DisplayInfoModel
(
langString
(
R
.
string
.
floor
),
"${info.floor}/${info.floor_max}"
))
info
.
area
?.
let
{
r
.
add
(
DisplayInfoModel
(
langString
(
R
.
string
.
area
),
langString
(
R
.
string
.
area_value
,
it
)))
}
info
.
area_living
?.
let
{
r
.
add
(
DisplayInfoModel
(
langString
(
R
.
string
.
area_living
),
langString
(
R
.
string
.
area_value
,
it
))
)
}
info
.
rooms
?.
let
{
r
.
add
(
DisplayInfoModel
(
langString
(
R
.
string
.
rooms
),
"$it"
))}
info
.
kind
?.
let
{
r
.
add
(
DisplayInfoModel
(
langString
(
R
.
string
.
flat_kind
),
it
))}
info
.
decoration
?.
let
{
r
.
add
(
DisplayInfoModel
(
langString
(
R
.
string
.
flat_decoration
),
it
))}
info
.
ceiling
?.
let
{
r
.
add
(
DisplayInfoModel
(
langString
(
R
.
string
.
ceiling
)
,
langString
(
R
.
string
.
meters_value
,
it
)))
}
info
.
windows_face
?.
let
{
r
.
add
(
DisplayInfoModel
(
langString
(
R
.
string
.
window_face
),
it
))}
info
.
direction
?.
let
{
r
.
add
(
DisplayInfoModel
(
langString
(
R
.
string
.
direction
),
it
))}
}
}
private
enum
class
InfoShowType
{
COMMON_INFO
,
EXPLICATIONS
}
app/src/main/java/com/biganto/visual/roompark/presentation/screen/estate/util/info.kt
0 → 100644
View file @
8b13b35c
package
com.biganto.visual.roompark.presentation.screen.estate.util
import
android.view.View
import
butterknife.BindView
import
com.biganto.visual.roompark.R
import
com.biganto.visual.roompark.presentation.screen.settings.util.CommonRecyclerAdapter
import
com.biganto.visual.roompark.presentation.screen.settings.util.CommonViewHolder
import
com.google.android.material.textview.MaterialTextView
/**
* Created by Vladislav Bogdashkin on 16.10.2019.
*/
class
FlatInfoAdapter
:
CommonRecyclerAdapter
<
FlatInfoViewHolder
,
DisplayInfoModel
>()
{
override
val
vhKlazz
=
FlatInfoViewHolder
::
class
override
fun
getVhLayout
():
Int
=
R
.
layout
.
flate_measure_info_viewholder
}
class
FlatInfoViewHolder
(
itemView
:
View
)
:
CommonViewHolder
<
DisplayInfoModel
>(
itemView
)
{
@BindView
(
R
.
id
.
flat_measure_description
)
lateinit
var
infoTitle
:
MaterialTextView
@BindView
(
R
.
id
.
flat_measure_value
)
lateinit
var
infoValue
:
MaterialTextView
override
fun
onViewBound
(
model
:
DisplayInfoModel
)
{
infoTitle
.
text
=
model
.
langTitle
infoValue
.
text
=
model
.
langValue
}
}
data class
DisplayInfoModel
(
val
langTitle
:
String
,
val
langValue
:
String
)
\ No newline at end of file
app/src/main/res/layout/flat_full_card_screen.xml
View file @
8b13b35c
...
@@ -270,7 +270,8 @@
...
@@ -270,7 +270,8 @@
android:orientation=
"horizontal"
android:orientation=
"horizontal"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/switch_flat_content_tab"
/>
app:layout_constraintTop_toBottomOf=
"@+id/switch_flat_content_tab"
tools:listitem=
"@layout/flate_measure_info_viewholder"
/>
<include
<include
...
...
app/src/main/res/layout/flate_measure_info_viewholder.xml
View file @
8b13b35c
...
@@ -20,6 +20,7 @@
...
@@ -20,6 +20,7 @@
style=
"@style/Accent_Minor_TextView.Default"
style=
"@style/Accent_Minor_TextView.Default"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:layout_marginStart=
"16dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:gravity=
"center_vertical"
android:gravity=
"center_vertical"
android:text=
"4 000 000"
/>
android:text=
"4 000 000"
/>
...
...
app/src/main/res/values/strings.xml
View file @
8b13b35c
...
@@ -51,6 +51,19 @@
...
@@ -51,6 +51,19 @@
\nPassword at least %d symbols
</string>
\nPassword at least %d symbols
</string>
<string
name=
"feeds_tab_divider"
>
/
</string>
<string
name=
"feeds_tab_divider"
>
/
</string>
<string
name=
"unauthorized_user_request"
>
Пользователь не авторизован
</string>
<string
name=
"unauthorized_user_request"
>
Пользователь не авторизован
</string>
<string
name=
"building"
>
Корпус
</string>
<string
name=
"section_begin"
>
Секция
</string>
<string
name=
"floor"
>
Этаж
</string>
<string
name=
"area"
>
Общая площадь
</string>
<string
name=
"area_value"
>
%.1f м\u00B2
</string>
<string
name=
"area_living"
>
Жилая площадь
</string>
<string
name=
"rooms"
>
Кол-во комнат
</string>
<string
name=
"flat_kind"
>
Тип квартиры
</string>
<string
name=
"flat_decoration"
>
Наличие отделки
</string>
<string
name=
"ceiling"
>
Высота потолков
</string>
<string
name=
"meters_value"
>
%.1f м
</string>
<string
name=
"window_face"
>
Вид из окон
</string>
<string
name=
"direction"
>
Сторона света
</string>
<!--endregion-->
<!--endregion-->
</resources>
</resources>
mintty.exe.stackdump
0 → 100644
View file @
8b13b35c
Exception: STATUS_ACCESS_VIOLATION at rip=7FFC53A72768
rax=00007FFC53A72768 rbx=0000000000191500 rcx=0000000004858270
rdx=0000000000000009 rsi=0000000000000019 rdi=00000000000C5398
r8 =000000000019CD01 r9 =00000000000C5348 r10=0000000000000000
r11=00000000008CC690 r12=0000000000000000 r13=00007FFCA7666120
r14=00000000048A0FE0 r15=0000000000000002
rbp=0000000000000001 rsp=00000000008CC758
program=C:\Program Files\Git\usr\bin\mintty.exe, pid 19556, thread
cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B
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