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
e95ce74e
Commit
e95ce74e
authored
Apr 09, 2020
by
Vladislav Bogdashkin
🎣
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/esates_fix' into develop
parents
9c1dc92c
ada433bd
Changes
62
Hide whitespace changes
Inline
Side-by-side
Showing
62 changed files
with
425 additions
and
166 deletions
+425
-166
PhotoDialogController.kt
...isual/roompark/conductor/dialogs/PhotoDialogController.kt
+9
-1
DownloadTourDialogController.kt
...ctor/dialogs/tour_chooser/DownloadTourDialogController.kt
+7
-3
TourChooserDialogController.kt
...uctor/dialogs/tour_chooser/TourChooserDialogController.kt
+1
-0
AlbumsRepository.kt
...to/visual/roompark/data/data_provider/AlbumsRepository.kt
+3
-1
ToursRepository.kt
...nto/visual/roompark/data/data_provider/ToursRepository.kt
+42
-0
IDb.kt
...ava/com/biganto/visual/roompark/data/repository/db/IDb.kt
+3
-0
RequeryRepository.kt
.../roompark/data/repository/db/requrey/RequeryRepository.kt
+7
-0
FileModule.kt
...iganto/visual/roompark/data/repository/file/FileModule.kt
+13
-6
AppComponent.kt
...ava/com/biganto/visual/roompark/di/dagger/AppComponent.kt
+2
-0
DataModule.kt
.../java/com/biganto/visual/roompark/di/dagger/DataModule.kt
+4
-0
TourContract.kt
...m/biganto/visual/roompark/domain/contract/TourContract.kt
+2
-0
settings.kt
...com/biganto/visual/roompark/domain/interactor/settings.kt
+3
-3
tours.kt
...va/com/biganto/visual/roompark/domain/interactor/tours.kt
+7
-1
DownloadUseCase.kt
...iganto/visual/roompark/domain/use_case/DownloadUseCase.kt
+5
-1
settingsUseCase.kt
...iganto/visual/roompark/domain/use_case/settingsUseCase.kt
+11
-8
ScreenController.kt
...l/roompark/presentation/screen/albums/ScreenController.kt
+4
-2
AlbumHeaderAdapter.kt
...ark/presentation/screen/albums/util/AlbumHeaderAdapter.kt
+7
-0
ScreenContract.kt
...isual/roompark/presentation/screen/deal/ScreenContract.kt
+1
-0
ScreenController.kt
...ual/roompark/presentation/screen/deal/ScreenController.kt
+23
-0
ScreenPresenter.kt
...sual/roompark/presentation/screen/deal/ScreenPresenter.kt
+17
-3
ScreenViewState.kt
...sual/roompark/presentation/screen/deal/ScreenViewState.kt
+2
-0
ScreenContract.kt
...sual/roompark/presentation/screen/deals/ScreenContract.kt
+3
-0
ScreenController.kt
...al/roompark/presentation/screen/deals/ScreenController.kt
+22
-8
ScreenPresenter.kt
...ual/roompark/presentation/screen/deals/ScreenPresenter.kt
+12
-2
ScreenViewState.kt
...ual/roompark/presentation/screen/deals/ScreenViewState.kt
+2
-0
Adapter.kt
...visual/roompark/presentation/screen/deals/util/Adapter.kt
+2
-2
ScreenController.kt
...l/roompark/presentation/screen/estate/ScreenController.kt
+1
-1
ScreenContract.kt
.../roompark/presentation/screen/favorites/ScreenContract.kt
+3
-0
ScreenController.kt
...oompark/presentation/screen/favorites/ScreenController.kt
+20
-0
ScreenPresenter.kt
...roompark/presentation/screen/favorites/ScreenPresenter.kt
+12
-2
ScreenViewState.kt
...roompark/presentation/screen/favorites/ScreenViewState.kt
+2
-0
FavoritesAdapter.kt
...rk/presentation/screen/favorites/util/FavoritesAdapter.kt
+17
-0
DevProgressPreviewAdapter.kt
...sentation/screen/feeds/utils/DevProgressPreviewAdapter.kt
+3
-0
ScreenPresenter.kt
.../roompark/presentation/screen/settings/ScreenPresenter.kt
+3
-0
ScreenContract.kt
...al/roompark/presentation/screen/to_flat/ScreenContract.kt
+1
-1
ScreenController.kt
.../roompark/presentation/screen/to_flat/ScreenController.kt
+21
-6
ScreenPresenter.kt
...l/roompark/presentation/screen/to_flat/ScreenPresenter.kt
+14
-1
ScreenViewState.kt
...l/roompark/presentation/screen/to_flat/ScreenViewState.kt
+1
-0
bell_switch_track.xml
app/src/main/res/drawable/bell_switch_track.xml
+1
-1
def_switch_track.xml
app/src/main/res/drawable/def_switch_track.xml
+49
-0
default_switch_view.xml
app/src/main/res/layout-v23/default_switch_view.xml
+18
-0
estate_card_viewholder.xml
app/src/main/res/layout-v23/estate_card_viewholder.xml
+5
-1
activity_main.xml
app/src/main/res/layout/activity_main.xml
+1
-1
album_header_preview_viewholder.xml
app/src/main/res/layout/album_header_preview_viewholder.xml
+0
-2
album_preview_card_viewholder.xml
app/src/main/res/layout/album_preview_card_viewholder.xml
+3
-3
albums_screen.xml
app/src/main/res/layout/albums_screen.xml
+2
-1
bell_switch_view.xml
app/src/main/res/layout/bell_switch_view.xml
+1
-0
deal_card_viewholder.xml
app/src/main/res/layout/deal_card_viewholder.xml
+4
-7
deal_screen.xml
app/src/main/res/layout/deal_screen.xml
+4
-7
estate_card_viewholder.xml
app/src/main/res/layout/estate_card_viewholder.xml
+0
-66
favorite_card_viewholder.xml
app/src/main/res/layout/favorite_card_viewholder.xml
+1
-1
feed_direct_viewholder.xml
app/src/main/res/layout/feed_direct_viewholder.xml
+0
-1
feed_preview_viewholder.xml
app/src/main/res/layout/feed_preview_viewholder.xml
+0
-2
feed_read_screen.xml
app/src/main/res/layout/feed_read_screen.xml
+1
-2
feed_viewholder.xml
app/src/main/res/layout/feed_viewholder.xml
+0
-2
flat_plan_type_selector_view.xml
app/src/main/res/layout/flat_plan_type_selector_view.xml
+4
-4
info_ceil_view.xml
app/src/main/res/layout/info_ceil_view.xml
+2
-2
photo_viewer.xml
app/src/main/res/layout/photo_viewer.xml
+7
-5
progress_status_title_vertical.xml
app/src/main/res/layout/progress_status_title_vertical.xml
+1
-2
status_layout_toolbar.xml
app/src/main/res/layout/status_layout_toolbar.xml
+0
-1
text_description_viewholder.xml
app/src/main/res/layout/text_description_viewholder.xml
+1
-2
styles.xml
app/src/main/res/values/styles.xml
+8
-1
No files found.
app/src/main/java/com/biganto/visual/roompark/conductor/dialogs/PhotoDialogController.kt
View file @
e95ce74e
...
@@ -7,6 +7,7 @@ import android.os.Bundle
...
@@ -7,6 +7,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.ImageView
import
android.widget.ProgressBar
import
android.widget.ProgressBar
import
androidx.annotation.LayoutRes
import
androidx.annotation.LayoutRes
import
androidx.core.os.bundleOf
import
androidx.core.os.bundleOf
...
@@ -21,6 +22,7 @@ import com.bumptech.glide.request.RequestListener
...
@@ -21,6 +22,7 @@ import com.bumptech.glide.request.RequestListener
import
com.bumptech.glide.request.target.Target
import
com.bumptech.glide.request.target.Target
import
com.github.chrisbanes.photoview.PhotoView
import
com.github.chrisbanes.photoview.PhotoView
import
com.google.android.material.snackbar.Snackbar
import
com.google.android.material.snackbar.Snackbar
import
timber.log.Timber
/**
/**
...
@@ -45,7 +47,6 @@ class PhotoDialogController : Controller {
...
@@ -45,7 +47,6 @@ class PhotoDialogController : Controller {
val
progress
=
view
.
findViewById
<
ProgressBar
>(
R
.
id
.
photo_load_progress_bar
)
val
progress
=
view
.
findViewById
<
ProgressBar
>(
R
.
id
.
photo_load_progress_bar
)
progress
.
visibility
=
View
.
VISIBLE
progress
.
visibility
=
View
.
VISIBLE
view
.
findViewById
<
View
>(
R
.
id
.
close_current_button
).
setOnClickListener
{
handleBack
()
}
activity
?.
requestedOrientation
=
ActivityInfo
.
SCREEN_ORIENTATION_USER_LANDSCAPE
activity
?.
requestedOrientation
=
ActivityInfo
.
SCREEN_ORIENTATION_USER_LANDSCAPE
...
@@ -81,6 +82,13 @@ class PhotoDialogController : Controller {
...
@@ -81,6 +82,13 @@ class PhotoDialogController : Controller {
})
})
.
into
(
photoView
)
.
into
(
photoView
)
}
}
view
.
findViewById
<
ImageView
>(
R
.
id
.
close_current_button
).
setOnClickListener
{
Timber
.
d
(
"Clicked"
)
handleBack
()
}
return
view
return
view
}
}
...
...
app/src/main/java/com/biganto/visual/roompark/conductor/dialogs/tour_chooser/DownloadTourDialogController.kt
View file @
e95ce74e
...
@@ -17,6 +17,7 @@ import com.biganto.visual.roompark.di.dagger.AppComponent
...
@@ -17,6 +17,7 @@ import com.biganto.visual.roompark.di.dagger.AppComponent
import
com.biganto.visual.roompark.di.dagger.PerScreen
import
com.biganto.visual.roompark.di.dagger.PerScreen
import
com.biganto.visual.roompark.domain.interactor.ToursInteractor
import
com.biganto.visual.roompark.domain.interactor.ToursInteractor
import
com.biganto.visual.roompark.domain.model.TourModel
import
com.biganto.visual.roompark.domain.model.TourModel
import
com.biganto.visual.roompark.domain.model.fromEntity
import
com.biganto.visual.roompark.domain.use_case.DownloadUseCase
import
com.biganto.visual.roompark.domain.use_case.DownloadUseCase
import
com.biganto.visual.roompark.util.view_utils.snackbar.ISnackBarProvider
import
com.biganto.visual.roompark.util.view_utils.snackbar.ISnackBarProvider
import
com.biganto.visual.roomparkvr.data.repository.db.requery.model.TourPreviewEntity
import
com.biganto.visual.roomparkvr.data.repository.db.requery.model.TourPreviewEntity
...
@@ -100,8 +101,8 @@ class DownloadTourDialogController : Controller {
...
@@ -100,8 +101,8 @@ class DownloadTourDialogController : Controller {
downloadTourTitleText
.
text
=
tour
.
title
downloadTourTitleText
.
text
=
tour
.
title
Glide
.
with
(
view
)
Glide
.
with
(
view
)
.
load
(
tour
.
previewUrl
)
.
load
(
tour
.
previewUrl
)
.
transform
(
BlurTransformation
(
13
,
8
)
)
.
transform
(
BlurTransformation
(
13
,
8
)
.
transform
(
ColorFilterTransformation
(
0
x99000000
.
toInt
()))
,
ColorFilterTransformation
(
0
x99000000
.
toInt
()))
.
into
(
downloaderBg
)
.
into
(
downloaderBg
)
disposables
.
add
(
disposables
.
add
(
...
@@ -114,7 +115,10 @@ class DownloadTourDialogController : Controller {
...
@@ -114,7 +115,10 @@ class DownloadTourDialogController : Controller {
{
model
->
{
model
->
updateProgressBar
(
model
.
downloadedFiles
,
model
.
overallFiles
)
updateProgressBar
(
model
.
downloadedFiles
,
model
.
overallFiles
)
if
(
model
.
overallFiles
==
model
.
downloadedFiles
)
if
(
model
.
overallFiles
==
model
.
downloadedFiles
)
activity
?.
let
{
startPlayer
(
it
,
tour
)
}
activity
?.
let
{
startPlayer
(
it
,
fromEntity
(
model
))
handleBack
()
}
}
}
,{
error
->
,{
error
->
Timber
.
e
(
error
)
Timber
.
e
(
error
)
...
...
app/src/main/java/com/biganto/visual/roompark/conductor/dialogs/tour_chooser/TourChooserDialogController.kt
View file @
e95ce74e
...
@@ -91,6 +91,7 @@ class ChooseTourDialogController : Controller {
...
@@ -91,6 +91,7 @@ class ChooseTourDialogController : Controller {
when
(
tour
.
downloadState
)
{
when
(
tour
.
downloadState
)
{
DownloadState
.
Downloaded
->
{
DownloadState
.
Downloaded
->
{
activity
?.
let
{
startPlayer
(
it
,
tour
)
}
activity
?.
let
{
startPlayer
(
it
,
tour
)
}
handleBack
()
}
}
else
->
{
else
->
{
router
.
replaceTopController
(
router
.
replaceTopController
(
...
...
app/src/main/java/com/biganto/visual/roompark/data/data_provider/AlbumsRepository.kt
View file @
e95ce74e
...
@@ -73,7 +73,9 @@ class AlbumsContractModule @Inject constructor(
...
@@ -73,7 +73,9 @@ class AlbumsContractModule @Inject constructor(
arrayListOf
(
fetchTopLevelAlbumsDb
,
fetchTopLevelAlbumsApi
)
arrayListOf
(
fetchTopLevelAlbumsDb
,
fetchTopLevelAlbumsApi
)
)
)
.
doOnNext
{
Timber
.
d
(
"got entity $it"
)
}
.
doOnNext
{
Timber
.
d
(
"got entity $it"
)
}
.
map
{
fromEntity
(
it
,
::
fromEntity
)
}
.
map
{
fromEntity
(
it
,
::
fromEntity
).
sortedByDescending
{
album
->
album
.
published
}
}
//endregion allAlbums
//endregion allAlbums
//region concrete Albums
//region concrete Albums
...
...
app/src/main/java/com/biganto/visual/roompark/data/data_provider/ToursRepository.kt
0 → 100644
View file @
e95ce74e
package
com.biganto.visual.roompark.data.data_provider
import
com.biganto.visual.roompark.data.repository.db.IDb
import
com.biganto.visual.roompark.data.repository.file.FileModule
import
com.biganto.visual.roompark.domain.contract.TourContract
import
com.biganto.visual.roompark.domain.model.AuthInfoModel
import
io.reactivex.Completable
import
io.reactivex.Observable
import
timber.log.Timber
import
javax.inject.Inject
/**
* Created by Vladislav Bogdashkin on 29.10.2019.
*/
//@Singleton
class
ToursRepository
@Inject
constructor
(
private
val
files
:
FileModule
,
private
val
db
:
IDb
):
TourContract
{
override
fun
getMultiTourId
(
building
:
Int
,
number
:
Int
):
Observable
<
AuthInfoModel
>
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
override
fun
getOffer
(
offerId
:
Int
):
Observable
<
AuthInfoModel
>
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
override
fun
deleteToursDbInfo
():
Completable
=
Completable
.
merge
(
arrayListOf
(
db
.
dropTourFileJuncTable
(),
db
.
dropFileTable
(),
db
.
dropTourTable
()
))
.
doOnComplete
{
Timber
.
w
(
"Completed --"
)
}
.
doOnError
{
Timber
.
e
(
it
)
}
}
app/src/main/java/com/biganto/visual/roompark/data/repository/db/IDb.kt
View file @
e95ce74e
...
@@ -69,4 +69,7 @@ interface IDb {
...
@@ -69,4 +69,7 @@ interface IDb {
fun
getTourPreview
(
tourId
:
String
):
ReactiveResult
<
TourPreviewEntity
>
fun
getTourPreview
(
tourId
:
String
):
ReactiveResult
<
TourPreviewEntity
>
fun
getTourPreviewsObservableResult
(
estateId
:
Int
):
Observable
<
ReactiveResult
<
TourPreviewEntity
>>
fun
getTourPreviewsObservableResult
(
estateId
:
Int
):
Observable
<
ReactiveResult
<
TourPreviewEntity
>>
fun
getEstateTourPreviews
(
estateId
:
Int
):
Observable
<
List
<
TourPreviewEntity
>>
fun
getEstateTourPreviews
(
estateId
:
Int
):
Observable
<
List
<
TourPreviewEntity
>>
fun
dropFileTable
():
Completable
fun
dropTourFileJuncTable
():
Completable
fun
dropTourTable
():
Completable
}
}
\ No newline at end of file
app/src/main/java/com/biganto/visual/roompark/data/repository/db/requrey/RequeryRepository.kt
View file @
e95ce74e
...
@@ -14,6 +14,7 @@ import io.reactivex.BackpressureStrategy
...
@@ -14,6 +14,7 @@ import io.reactivex.BackpressureStrategy
import
io.reactivex.Completable
import
io.reactivex.Completable
import
io.reactivex.Observable
import
io.reactivex.Observable
import
io.reactivex.Single
import
io.reactivex.Single
import
io.reactivex.rxkotlin.toCompletable
import
io.reactivex.schedulers.Schedulers
import
io.reactivex.schedulers.Schedulers
import
io.requery.Persistable
import
io.requery.Persistable
import
io.requery.android.sqlite.DatabaseSource
import
io.requery.android.sqlite.DatabaseSource
...
@@ -51,6 +52,12 @@ class RequeryRepository @Inject constructor(
...
@@ -51,6 +52,12 @@ class RequeryRepository @Inject constructor(
)
)
:
IDb
{
:
IDb
{
override
fun
dropTourTable
()
=
store
.
delete
(
TourPreviewEntity
::
class
).
get
().
toCompletable
()
override
fun
dropTourFileJuncTable
()
=
store
.
delete
(
TourFileJunctionEntity
::
class
).
get
().
toCompletable
()
override
fun
dropFileTable
()
=
store
.
delete
(
FileEntity
::
class
).
get
().
toCompletable
()
private
inline
fun
<
reified
T
:
Persistable
>
fetchAll
()
=
private
inline
fun
<
reified
T
:
Persistable
>
fetchAll
()
=
store
.
select
(
T
::
class
)
store
.
select
(
T
::
class
)
...
...
app/src/main/java/com/biganto/visual/roompark/data/repository/file/FileModule.kt
View file @
e95ce74e
...
@@ -33,9 +33,14 @@ class FileModule @Inject constructor(val context: Application) {
...
@@ -33,9 +33,14 @@ class FileModule @Inject constructor(val context: Application) {
fun
getFile
(
fileUri
:
String
):
File
{
fun
getFile
(
fileUri
:
String
):
File
{
try
{
try
{
val
fileName
=
if
(
fileUri
.
contains
(
"/"
))
fileUri
.
substring
(
fileUri
.
lastIndexOf
(
"/"
))
else
fileUri
val
fileName
=
val
fileDir
=
if
(
fileUri
.
contains
(
"/"
))
fileUri
.
substring
(
0
,
fileUri
.
lastIndexOf
(
"/"
))
else
""
if
(
fileUri
.
contains
(
"/"
))
fileUri
.
substring
(
fileUri
.
lastIndexOf
(
"/"
))
val
directory
=
File
(
rootFolder
,
fileDir
)
else
fileUri
val
fileDir
=
if
(
fileUri
.
contains
(
"/"
))
fileUri
.
substring
(
0
,
fileUri
.
lastIndexOf
(
"/"
))
else
""
val
directory
=
File
(
assetsFile
(
context
),
fileDir
)
directory
.
mkdirs
()
directory
.
mkdirs
()
val
file
=
File
(
directory
,
fileName
)
val
file
=
File
(
directory
,
fileName
)
...
@@ -61,7 +66,7 @@ class FileModule @Inject constructor(val context: Application) {
...
@@ -61,7 +66,7 @@ class FileModule @Inject constructor(val context: Application) {
file
.
writeText
(
content
)
//to json array because core unity method parse data like TourData[] Estate[] etc..
file
.
writeText
(
content
)
//to json array because core unity method parse data like TourData[] Estate[] etc..
}
}
fun
deleteFile
(
uri
:
String
)=
getFile
(
uri
).
delete
()
//
fun deleteFile(uri:String)= getFile(uri).delete()
fun
deleteAllCacheObservable
()
=
fun
deleteAllCacheObservable
()
=
Observable
.
create
<
Pair
<
Int
,
Int
>>
{
emitter
->
Observable
.
create
<
Pair
<
Int
,
Int
>>
{
emitter
->
...
@@ -89,9 +94,11 @@ class FileModule @Inject constructor(val context: Application) {
...
@@ -89,9 +94,11 @@ class FileModule @Inject constructor(val context: Application) {
fun
getDirectory
(
context
:
Context
,
dirType
:
FileDirectory
):
File
=
fun
getDirectory
(
context
:
Context
,
dirType
:
FileDirectory
):
File
=
File
(
context
.
filesDir
.
absolutePath
.
plus
(
dirType
.
dir
))
File
(
context
.
filesDir
.
absolutePath
.
plus
(
dirType
.
dir
))
fun
assetsDirectory
(
context
:
Context
):
String
=
context
.
filesDir
.
absolutePath
fun
assetsDirectory
(
context
:
Context
):
String
=
getDirectory
(
context
,
FileDirectory
.
ToursDir
(
"biganto"
)).
absolutePath
fun
assetsFile
(
context
:
Context
):
File
=
context
.
filesDir
.
absoluteFile
fun
assetsFile
(
context
:
Context
):
File
=
getDirectory
(
context
,
FileDirectory
.
ToursDir
(
"biganto"
))
}
}
...
...
app/src/main/java/com/biganto/visual/roompark/di/dagger/AppComponent.kt
View file @
e95ce74e
...
@@ -62,6 +62,8 @@ interface AppComponent : AndroidInjector<RoomParkApplication>{
...
@@ -62,6 +62,8 @@ interface AppComponent : AndroidInjector<RoomParkApplication>{
fun
provideUtils
():
DeviceUtilsContract
fun
provideUtils
():
DeviceUtilsContract
fun
provideTour
():
TourContract
fun
provideAppContext
():
Application
fun
provideAppContext
():
Application
fun
provideFileSystem
():
FileModule
fun
provideFileSystem
():
FileModule
...
...
app/src/main/java/com/biganto/visual/roompark/di/dagger/DataModule.kt
View file @
e95ce74e
...
@@ -51,6 +51,10 @@ abstract class ContractRepositoryModule {
...
@@ -51,6 +51,10 @@ abstract class ContractRepositoryModule {
@Binds
@Binds
@Singleton
@Singleton
abstract
fun
provideDeviceContract
(
impl
:
DeviceUtilsRepository
):
DeviceUtilsContract
abstract
fun
provideDeviceContract
(
impl
:
DeviceUtilsRepository
):
DeviceUtilsContract
@Binds
@Singleton
abstract
fun
provideTourContract
(
impl
:
ToursRepository
):
TourContract
}
}
...
...
app/src/main/java/com/biganto/visual/roompark/domain/contract/TourContract.kt
View file @
e95ce74e
package
com.biganto.visual.roompark.domain.contract
package
com.biganto.visual.roompark.domain.contract
import
com.biganto.visual.roompark.domain.model.AuthInfoModel
import
com.biganto.visual.roompark.domain.model.AuthInfoModel
import
io.reactivex.Completable
import
io.reactivex.Observable
import
io.reactivex.Observable
...
@@ -10,4 +11,5 @@ import io.reactivex.Observable
...
@@ -10,4 +11,5 @@ import io.reactivex.Observable
interface
TourContract
{
interface
TourContract
{
fun
getMultiTourId
(
building
:
Int
,
number
:
Int
)
:
Observable
<
AuthInfoModel
>
fun
getMultiTourId
(
building
:
Int
,
number
:
Int
)
:
Observable
<
AuthInfoModel
>
fun
getOffer
(
offerId
:
Int
)
:
Observable
<
AuthInfoModel
>
fun
getOffer
(
offerId
:
Int
)
:
Observable
<
AuthInfoModel
>
fun
deleteToursDbInfo
():
Completable
}
}
\ No newline at end of file
app/src/main/java/com/biganto/visual/roompark/domain/interactor/settings.kt
View file @
e95ce74e
...
@@ -36,9 +36,9 @@ class SettingsInteractor @Inject constructor(
...
@@ -36,9 +36,9 @@ class SettingsInteractor @Inject constructor(
}
}
private
val
plans
private
val
plans
:
Observable
<
CachedDataModel
>
get
()
=
settingsUseCase
.
planTypesSize
.
map
{
get
()
=
settingsUseCase
.
planTypesSize
.
map
{
CachedDataModel
(
activity
.
resources
.
getString
(
R
.
string
.
plans_cache
),
it
,
1
)
CachedDataModel
(
activity
.
resources
.
getString
(
R
.
string
.
plans_cache
),
it
,
1
)
}
}
private
val
tours
private
val
tours
...
@@ -64,7 +64,7 @@ class SettingsInteractor @Inject constructor(
...
@@ -64,7 +64,7 @@ class SettingsInteractor @Inject constructor(
fun
deleteCacheFiles
()
=
settingsUseCase
.
clearAllCache
()
fun
deleteCacheFiles
()
=
settingsUseCase
.
clearAllCache
()
fun
getCacheInfo
()
=
fun
getCacheInfo
()
:
Observable
<
MutableList
<
CachedDataModel
>>
=
Observable
.
concatArray
(
plans
,
tours
,
feeds
,
albums
,
overall
).
toList
().
toObservable
()
Observable
.
concatArray
(
plans
,
tours
,
feeds
,
albums
,
overall
).
toList
().
toObservable
()
fun
fetchSettings
():
Observable
<
SettingsModel
>
=
Observable
.
just
(
sampleSettings
)
fun
fetchSettings
():
Observable
<
SettingsModel
>
=
Observable
.
just
(
sampleSettings
)
...
...
app/src/main/java/com/biganto/visual/roompark/domain/interactor/tours.kt
View file @
e95ce74e
package
com.biganto.visual.roompark.domain.interactor
package
com.biganto.visual.roompark.domain.interactor
import
com.biganto.visual.roompark.domain.model.EstateModel
import
com.biganto.visual.roompark.domain.model.EstateModel
import
com.biganto.visual.roompark.domain.model.TourModel
import
com.biganto.visual.roompark.domain.use_case.DownloadUseCase
import
com.biganto.visual.roompark.domain.use_case.DownloadUseCase
import
com.biganto.visual.roompark.domain.use_case.TourPreviewsUseCase
import
com.biganto.visual.roompark.domain.use_case.TourPreviewsUseCase
import
io.reactivex.Observable
import
javax.inject.Inject
import
javax.inject.Inject
/**
/**
...
@@ -14,7 +16,11 @@ class ToursInteractor @Inject constructor(
...
@@ -14,7 +16,11 @@ class ToursInteractor @Inject constructor(
private
val
tourUseCase
:
TourPreviewsUseCase
private
val
tourUseCase
:
TourPreviewsUseCase
){
){
fun
getEstateTourList
(
estate
:
EstateModel
)
=
fun
getEstateTourList
(
multiTourId
:
Int
?,
estateId
:
Int
)
=
tourUseCase
.
fetchTourOffer
(
multiTourId
?:
error
(
"Отсутсвуют виртуальные туры для данного объекта"
),
estateId
)
fun
getEstateTourList
(
estate
:
EstateModel
):
Observable
<
List
<
TourModel
>>
=
tourUseCase
.
fetchTourOffer
(
estate
.
multitourId
tourUseCase
.
fetchTourOffer
(
estate
.
multitourId
?:
error
(
"Отсутсвуют виртуальные туры для данного объекта"
),
estate
.
id
)
?:
error
(
"Отсутсвуют виртуальные туры для данного объекта"
),
estate
.
id
)
...
...
app/src/main/java/com/biganto/visual/roompark/domain/use_case/DownloadUseCase.kt
View file @
e95ce74e
...
@@ -277,7 +277,11 @@ class DownloadUseCase @Inject constructor(
...
@@ -277,7 +277,11 @@ class DownloadUseCase @Inject constructor(
tour
.
let
{
tour
.
let
{
val
metaUri
=
RevisionString
(
"$META_PREDICTION${tour.id}$META_FILE_TYPE"
)
val
metaUri
=
RevisionString
(
"$META_PREDICTION${tour.id}$META_FILE_TYPE"
)
it
.
setMetaFileEntityId
(
metaUri
)
it
.
setMetaFileEntityId
(
metaUri
)
fileModule
.
saveFileToDisk
(
fileModule
.
getFile
(
metaUri
.
uri
()),
meta
)
fileModule
.
saveFileToDisk
(
File
(
FileModule
.
assetsDirectory
(
context
).
plus
(
metaUri
.
uri
())
),
meta
)
}
}
}
}
?.
map
{
tour
}
?.
map
{
tour
}
...
...
app/src/main/java/com/biganto/visual/roompark/domain/use_case/settingsUseCase.kt
View file @
e95ce74e
...
@@ -2,6 +2,7 @@ package com.biganto.visual.roompark.domain.use_case
...
@@ -2,6 +2,7 @@ package com.biganto.visual.roompark.domain.use_case
import
com.biganto.visual.roompark.data.data_provider.AuthContractModule
import
com.biganto.visual.roompark.data.data_provider.AuthContractModule
import
com.biganto.visual.roompark.domain.contract.FilesContract
import
com.biganto.visual.roompark.domain.contract.FilesContract
import
com.biganto.visual.roompark.domain.contract.TourContract
import
io.reactivex.Observable
import
io.reactivex.Observable
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -11,26 +12,28 @@ import javax.inject.Inject
...
@@ -11,26 +12,28 @@ import javax.inject.Inject
class
SettingsUseCase
@Inject
constructor
(
class
SettingsUseCase
@Inject
constructor
(
private
val
authContract
:
AuthContractModule
,
private
val
authContract
:
AuthContractModule
,
private
val
fileContract
:
FilesContract
private
val
fileContract
:
FilesContract
,
private
val
tourContract
:
TourContract
){
){
fun
signOut
()
=
authContract
.
signOut
()
fun
signOut
()
=
authContract
.
signOut
()
fun
clearAllCache
()
=
fileContract
.
deleteAllFiles
()
fun
clearAllCache
():
Observable
<
Pair
<
Int
,
Int
>>
=
tourContract
.
deleteToursDbInfo
()
.
andThen
(
fileContract
.
deleteAllFiles
())
val
planTypesSize
val
planTypesSize
get
()
=
Observable
.
just
(
fileContract
.
getPlansSize
())
get
()
=
Observable
.
defer
{
Observable
.
just
(
fileContract
.
getPlansSize
())
}
val
albumsSize
val
albumsSize
get
()
=
Observable
.
just
(
fileContract
.
getAlbumSize
())
get
()
=
Observable
.
defer
{
Observable
.
just
(
fileContract
.
getAlbumSize
())
}
val
feedsSize
val
feedsSize
get
()
=
Observable
.
just
(
fileContract
.
getFeedSize
())
get
()
=
Observable
.
defer
{
Observable
.
just
(
fileContract
.
getFeedSize
())
}
val
toursSize
val
toursSize
get
()
=
Observable
.
just
(
fileContract
.
getToursSize
())
get
()
=
Observable
.
defer
{
Observable
.
just
(
fileContract
.
getToursSize
())
}
val
overallSize
val
overallSize
get
()
=
Observable
.
just
(
fileContract
.
allCacheSize
())
get
()
=
Observable
.
defer
{
Observable
.
just
(
fileContract
.
allCacheSize
())
}
}
}
\ No newline at end of file
app/src/main/java/com/biganto/visual/roompark/presentation/screen/albums/ScreenController.kt
View file @
e95ce74e
...
@@ -34,6 +34,7 @@ import io.reactivex.Observable
...
@@ -34,6 +34,7 @@ import io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.android.schedulers.AndroidSchedulers
import
jp.wasabeef.glide.transformations.BlurTransformation
import
jp.wasabeef.glide.transformations.BlurTransformation
import
jp.wasabeef.glide.transformations.ColorFilterTransformation
import
jp.wasabeef.glide.transformations.ColorFilterTransformation
import
jp.wasabeef.glide.transformations.CropTransformation
import
timber.log.Timber
import
timber.log.Timber
import
java.util.concurrent.TimeUnit
import
java.util.concurrent.TimeUnit
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -289,8 +290,9 @@ class AlbumsScreenController :
...
@@ -289,8 +290,9 @@ class AlbumsScreenController :
private
fun
loadGlideBlurred
(
url
:
String
,
context
:
Context
,
drawable
:
Target
<
Drawable
>)
=
private
fun
loadGlideBlurred
(
url
:
String
,
context
:
Context
,
drawable
:
Target
<
Drawable
>)
=
Glide
.
with
(
context
)
Glide
.
with
(
context
)
.
load
(
url
)
.
load
(
url
)
.
transform
(
BlurTransformation
(
13
,
2
))
.
transform
(
CropTransformation
(
nestedScrollView
.
width
,
nestedScrollView
.
height
)
.
transform
(
ColorFilterTransformation
(
0
xCC000000
.
toInt
()))
,
BlurTransformation
(
8
,
1
)
,
ColorFilterTransformation
(
0
xCC000000
.
toInt
()))
.
into
(
drawable
)
.
into
(
drawable
)
override
fun
onAlbumSelected
():
Observable
<
AlbumPreviewModel
>
override
fun
onAlbumSelected
():
Observable
<
AlbumPreviewModel
>
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/albums/util/AlbumHeaderAdapter.kt
View file @
e95ce74e
...
@@ -10,6 +10,8 @@ import com.biganto.visual.roompark.presentation.screen.settings.util.CommonRecyc
...
@@ -10,6 +10,8 @@ import com.biganto.visual.roompark.presentation.screen.settings.util.CommonRecyc
import
com.biganto.visual.roompark.presentation.screen.settings.util.CommonViewHolder
import
com.biganto.visual.roompark.presentation.screen.settings.util.CommonViewHolder
import
com.bumptech.glide.Glide
import
com.bumptech.glide.Glide
import
com.bumptech.glide.load.engine.DiskCacheStrategy
import
com.bumptech.glide.load.engine.DiskCacheStrategy
import
java.text.SimpleDateFormat
import
java.util.*
/**
/**
...
@@ -31,12 +33,17 @@ class AlbumsHeaderAdapter : CommonRecyclerAdapter<AlbumsHeaderViewHolder, AlbumP
...
@@ -31,12 +33,17 @@ class AlbumsHeaderAdapter : CommonRecyclerAdapter<AlbumsHeaderViewHolder, AlbumP
class
AlbumsHeaderViewHolder
(
itemView
:
View
)
:
CommonViewHolder
<
AlbumPreviewModel
>(
itemView
)
{
class
AlbumsHeaderViewHolder
(
itemView
:
View
)
:
CommonViewHolder
<
AlbumPreviewModel
>(
itemView
)
{
private
val
dateFormatter
=
SimpleDateFormat
(
"dd MMMM yyyy"
,
Locale
(
"ru"
))
@BindView
(
R
.
id
.
preview
)
lateinit
var
preview
:
ImageView
@BindView
(
R
.
id
.
preview
)
lateinit
var
preview
:
ImageView
@BindView
(
R
.
id
.
card_title
)
lateinit
var
articleTitle
:
TextView
@BindView
(
R
.
id
.
card_title
)
lateinit
var
articleTitle
:
TextView
@BindView
(
R
.
id
.
card_updated
)
lateinit
var
articleDate
:
TextView
@BindView
(
R
.
id
.
card_updated
)
lateinit
var
articleDate
:
TextView
override
fun
onViewBound
(
model
:
AlbumPreviewModel
)
{
override
fun
onViewBound
(
model
:
AlbumPreviewModel
)
{
articleTitle
.
text
=
model
.
title
articleTitle
.
text
=
model
.
title
articleDate
.
text
=
dateFormatter
.
format
(
model
.
published
)
Glide
.
with
(
itemView
)
Glide
.
with
(
itemView
)
.
load
(
model
.
previewUrl
)
.
load
(
model
.
previewUrl
)
.
centerCrop
()
.
centerCrop
()
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deal/ScreenContract.kt
View file @
e95ce74e
...
@@ -9,5 +9,6 @@ import io.reactivex.Observable
...
@@ -9,5 +9,6 @@ import io.reactivex.Observable
interface
DealScreen
:
BigantoBaseContract
<
DealScreenViewState
>
{
interface
DealScreen
:
BigantoBaseContract
<
DealScreenViewState
>
{
fun
onSubscription
():
Observable
<
Boolean
>
fun
onSubscription
():
Observable
<
Boolean
>
fun
tourCardClicked
():
Observable
<
Int
>
}
}
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deal/ScreenController.kt
View file @
e95ce74e
...
@@ -12,10 +12,13 @@ import com.biganto.visual.roompark.base.HeaderToolbarModel
...
@@ -12,10 +12,13 @@ import com.biganto.visual.roompark.base.HeaderToolbarModel
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.conductor.dialogs.change_handler.DialogChangeHandler
import
com.biganto.visual.roompark.conductor.dialogs.tour_chooser.ChooseTourDialogController
import
com.biganto.visual.roompark.domain.model.DealModel
import
com.biganto.visual.roompark.domain.model.DealModel
import
com.biganto.visual.roompark.domain.model.typeDoubleString
import
com.biganto.visual.roompark.domain.model.typeDoubleString
import
com.biganto.visual.roompark.domain.model.typeShortString
import
com.biganto.visual.roompark.domain.model.typeShortString
import
com.biganto.visual.roompark.presentation.screen.estate.EstateScreenController
import
com.biganto.visual.roompark.presentation.screen.estate.EstateScreenController
import
com.biganto.visual.roompark.util.extensions.setGone
import
com.biganto.visual.roompark.util.extensions.toRubly
import
com.biganto.visual.roompark.util.extensions.toRubly
import
com.biganto.visual.roompark.util.monades.ExceptionString
import
com.biganto.visual.roompark.util.monades.ExceptionString
import
com.biganto.visual.roompark.util.view_utils.image_view.RoundedImageView
import
com.biganto.visual.roompark.util.view_utils.image_view.RoundedImageView
...
@@ -96,6 +99,14 @@ class DealScreenController :
...
@@ -96,6 +99,14 @@ class DealScreenController :
@BindView
(
R
.
id
.
start_tour_image_view
)
lateinit
var
tourScreen
:
RoundedImageView
@BindView
(
R
.
id
.
start_tour_image_view
)
lateinit
var
tourScreen
:
RoundedImageView
override
fun
tourCardClicked
():
Observable
<
Int
>
=
tourScreen
.
clicks
()
.
map
{
1
}
.
debounce
(
320L
,
TimeUnit
.
MILLISECONDS
)
.
observeOn
(
AndroidSchedulers
.
mainThread
())
private
var
servedDeal
:
DealModel
?
=
null
private
var
servedDeal
:
DealModel
?
=
null
override
fun
onAttach
(
view
:
View
)
{
override
fun
onAttach
(
view
:
View
)
{
...
@@ -189,6 +200,7 @@ class DealScreenController :
...
@@ -189,6 +200,7 @@ class DealScreenController :
is
DealScreenViewState
.
RestoreView
->
render
(
viewState
)
is
DealScreenViewState
.
RestoreView
->
render
(
viewState
)
is
DealScreenViewState
.
SubscriptionStatus
->
render
(
viewState
)
is
DealScreenViewState
.
SubscriptionStatus
->
render
(
viewState
)
is
DealScreenViewState
.
SubscriptionError
->
render
(
viewState
)
is
DealScreenViewState
.
SubscriptionError
->
render
(
viewState
)
is
DealScreenViewState
.
ToursLoaded
->
render
(
viewState
)
}
}
}
}
...
@@ -232,6 +244,15 @@ class DealScreenController :
...
@@ -232,6 +244,15 @@ class DealScreenController :
}
}
}
}
private
fun
render
(
viewState
:
DealScreenViewState
.
ToursLoaded
)
{
router
.
pushController
(
RouterTransaction
.
with
(
ChooseTourDialogController
(
ArrayList
(
viewState
.
tours
))
)
.
popChangeHandler
(
DialogChangeHandler
())
.
pushChangeHandler
(
DialogChangeHandler
())
)
}
private
fun
render
(
viewState
:
DealScreenViewState
.
SomeError
)
=
private
fun
render
(
viewState
:
DealScreenViewState
.
SomeError
)
=
showError
(
viewState
.
exception
)
showError
(
viewState
.
exception
)
...
@@ -245,6 +266,8 @@ class DealScreenController :
...
@@ -245,6 +266,8 @@ class DealScreenController :
private
fun
render
(
viewState
:
DealScreenViewState
.
LoadDeal
)
{
private
fun
render
(
viewState
:
DealScreenViewState
.
LoadDeal
)
{
servedDeal
=
viewState
.
estate
servedDeal
=
viewState
.
estate
startTourView
.
setGone
(
servedDeal
?.
estate
?.
multitourId
==
null
)
dealTitle
.
text
=
resources
?.
getString
(
dealTitle
.
text
=
resources
?.
getString
(
viewState
.
estate
.
estate
.
type
.
typeDoubleString
(),
viewState
.
estate
.
estate
.
type
.
typeDoubleString
(),
viewState
.
estate
.
estate
.
number
viewState
.
estate
.
estate
.
number
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deal/ScreenPresenter.kt
View file @
e95ce74e
...
@@ -3,6 +3,8 @@ package com.biganto.visual.roompark.presentation.screen.deal
...
@@ -3,6 +3,8 @@ package com.biganto.visual.roompark.presentation.screen.deal
import
android.content.Context
import
android.content.Context
import
com.biganto.visual.roompark.conductor.BigantoBasePresenter
import
com.biganto.visual.roompark.conductor.BigantoBasePresenter
import
com.biganto.visual.roompark.domain.interactor.DealInteractor
import
com.biganto.visual.roompark.domain.interactor.DealInteractor
import
com.biganto.visual.roompark.domain.interactor.ToursInteractor
import
com.biganto.visual.roompark.domain.model.DealModel
import
com.biganto.visual.roompark.domain.model.SubscriptionModel
import
com.biganto.visual.roompark.domain.model.SubscriptionModel
import
com.biganto.visual.roompark.util.monades.ExceptionString
import
com.biganto.visual.roompark.util.monades.ExceptionString
import
io.reactivex.Observable
import
io.reactivex.Observable
...
@@ -19,6 +21,7 @@ import javax.inject.Named
...
@@ -19,6 +21,7 @@ import javax.inject.Named
class
DealScreenPresenter
@Inject
constructor
(
class
DealScreenPresenter
@Inject
constructor
(
private
val
interactor
:
DealInteractor
,
private
val
interactor
:
DealInteractor
,
private
val
toursInteractor
:
ToursInteractor
,
private
val
context
:
Context
,
private
val
context
:
Context
,
@Named
(
SELECTED_DEAL_ID_KEY
)
private
val
dealId
:
String
@Named
(
SELECTED_DEAL_ID_KEY
)
private
val
dealId
:
String
)
)
...
@@ -28,7 +31,7 @@ class DealScreenPresenter @Inject constructor(
...
@@ -28,7 +31,7 @@ class DealScreenPresenter @Inject constructor(
override
fun
defaultErrorViewStateHandler
()
=
override
fun
defaultErrorViewStateHandler
()
=
{
e
:
ExceptionString
->
DealScreenViewState
.
SomeError
(
e
)
}
{
e
:
ExceptionString
->
DealScreenViewState
.
SomeError
(
e
)
}
private
var
restoreModel
=
RestoreModel
(
null
)
private
var
restoreModel
=
RestoreModel
(
null
,
null
)
override
fun
detachView
()
{
override
fun
detachView
()
{
super
.
detachView
()
super
.
detachView
()
...
@@ -38,6 +41,7 @@ class DealScreenPresenter @Inject constructor(
...
@@ -38,6 +41,7 @@ class DealScreenPresenter @Inject constructor(
override
fun
bindIntents
()
{
override
fun
bindIntents
()
{
val
fetchDeal
=
interactor
.
getDeal
(
dealId
)
val
fetchDeal
=
interactor
.
getDeal
(
dealId
)
.
doOnNext
{
restoreModel
.
deal
=
it
}
.
map
<
DealScreenViewState
>{
deal
->
.
map
<
DealScreenViewState
>{
deal
->
DealScreenViewState
.
LoadDeal
(
deal
,
interactor
.
getStatusListSync
())
DealScreenViewState
.
LoadDeal
(
deal
,
interactor
.
getStatusListSync
())
}
}
...
@@ -64,13 +68,23 @@ class DealScreenPresenter @Inject constructor(
...
@@ -64,13 +68,23 @@ class DealScreenPresenter @Inject constructor(
.
map
<
DealScreenViewState
>
{
DealScreenViewState
.
SubscriptionStatus
(
it
.
state
)
}
.
map
<
DealScreenViewState
>
{
DealScreenViewState
.
SubscriptionStatus
(
it
.
state
)
}
.
startWith
(
Observable
.
just
<
DealScreenViewState
>(
DealScreenViewState
.
Idle
()))
.
startWith
(
Observable
.
just
<
DealScreenViewState
>(
DealScreenViewState
.
Idle
()))
val
onStartTours
=
intent
(
DealScreen
::
tourCardClicked
)
.
map
{
restoreModel
.
deal
}
.
map
{
it
.
estate
}
.
flatMap
{
estate
->
toursInteractor
.
getEstateTourList
(
estate
)
.
map
{
DealScreenViewState
.
ToursLoaded
(
it
)
}
}
val
state
=
Observable
.
mergeDelayError
(
val
state
=
Observable
.
mergeDelayError
(
arrayListOf
(
arrayListOf
(
restoreStateObservable
,
restoreStateObservable
,
fetchDeal
,
fetchDeal
,
setRead
,
setRead
,
onSubChecked
,
onSubChecked
,
fetchSubscription
fetchSubscription
,
onStartTours
))
))
.
doOnError
{
Timber
.
e
(
it
)
}
.
doOnError
{
Timber
.
e
(
it
)
}
.
onErrorReturn
(
::
parseError
)
.
onErrorReturn
(
::
parseError
)
...
@@ -83,4 +97,4 @@ class DealScreenPresenter @Inject constructor(
...
@@ -83,4 +97,4 @@ class DealScreenPresenter @Inject constructor(
data class
RestoreModel
(
var
sub
:
SubscriptionModel
?)
data class
RestoreModel
(
var
sub
:
SubscriptionModel
?,
var
deal
:
DealModel
?)
\ No newline at end of file
\ No newline at end of file
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deal/ScreenViewState.kt
View file @
e95ce74e
...
@@ -3,6 +3,7 @@ package com.biganto.visual.roompark.presentation.screen.deal
...
@@ -3,6 +3,7 @@ package com.biganto.visual.roompark.presentation.screen.deal
import
com.biganto.visual.roompark.conductor.BigantoBaseViewState
import
com.biganto.visual.roompark.conductor.BigantoBaseViewState
import
com.biganto.visual.roompark.domain.model.DealModel
import
com.biganto.visual.roompark.domain.model.DealModel
import
com.biganto.visual.roompark.domain.model.StatusModel
import
com.biganto.visual.roompark.domain.model.StatusModel
import
com.biganto.visual.roompark.domain.model.TourModel
import
com.biganto.visual.roompark.util.monades.ExceptionString
import
com.biganto.visual.roompark.util.monades.ExceptionString
/**
/**
...
@@ -17,4 +18,5 @@ sealed class DealScreenViewState : BigantoBaseViewState() {
...
@@ -17,4 +18,5 @@ sealed class DealScreenViewState : BigantoBaseViewState() {
class
RestoreView
(
val
restore
:
RestoreModel
)
:
DealScreenViewState
()
class
RestoreView
(
val
restore
:
RestoreModel
)
:
DealScreenViewState
()
class
SubscriptionStatus
(
val
subState
:
Boolean
)
:
DealScreenViewState
()
class
SubscriptionStatus
(
val
subState
:
Boolean
)
:
DealScreenViewState
()
class
SubscriptionError
(
val
subState
:
Boolean
)
:
DealScreenViewState
()
class
SubscriptionError
(
val
subState
:
Boolean
)
:
DealScreenViewState
()
class
ToursLoaded
(
val
tours
:
List
<
TourModel
>)
:
DealScreenViewState
()
}
}
\ No newline at end of file
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deals/ScreenContract.kt
View file @
e95ce74e
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.DealPreviewModel
import
io.reactivex.Observable
/**
/**
* Created by Vladislav Bogdashkin on 30.09.2019.
* Created by Vladislav Bogdashkin on 30.09.2019.
*/
*/
interface
DealsScreen
:
BigantoBaseContract
<
DealsScreenViewState
>
{
interface
DealsScreen
:
BigantoBaseContract
<
DealsScreenViewState
>
{
fun
tourCardClicked
():
Observable
<
DealPreviewModel
>
}
}
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deals/ScreenController.kt
View file @
e95ce74e
...
@@ -9,12 +9,16 @@ import com.biganto.visual.roompark.base.HeaderToolbarModel
...
@@ -9,12 +9,16 @@ import com.biganto.visual.roompark.base.HeaderToolbarModel
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.conductor.dialogs.change_handler.DialogChangeHandler
import
com.biganto.visual.roompark.conductor.dialogs.tour_chooser.ChooseTourDialogController
import
com.biganto.visual.roompark.domain.model.DealPreviewModel
import
com.biganto.visual.roompark.presentation.screen.deal.DealScreenController
import
com.biganto.visual.roompark.presentation.screen.deal.DealScreenController
import
com.biganto.visual.roompark.presentation.screen.deals.util.DealsListAdapter
import
com.biganto.visual.roompark.presentation.screen.deals.util.DealsListAdapter
import
com.biganto.visual.roompark.presentation.screen.estate.EstateScreenController
import
com.biganto.visual.roompark.presentation.screen.estate.EstateScreenController
import
com.biganto.visual.roompark.util.view_utils.grid.CeilsDecoration
import
com.biganto.visual.roompark.util.view_utils.grid.CeilsDecoration
import
com.bluelinelabs.conductor.RouterTransaction
import
com.bluelinelabs.conductor.RouterTransaction
import
com.bluelinelabs.conductor.changehandler.FadeChangeHandler
import
com.bluelinelabs.conductor.changehandler.FadeChangeHandler
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.android.schedulers.AndroidSchedulers
import
timber.log.Timber
import
timber.log.Timber
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -90,14 +94,7 @@ class DealsScreenController :
...
@@ -90,14 +94,7 @@ class DealsScreenController :
.
popChangeHandler
(
FadeChangeHandler
())
.
popChangeHandler
(
FadeChangeHandler
())
.
pushChangeHandler
(
FadeChangeHandler
())
.
pushChangeHandler
(
FadeChangeHandler
())
)
)
},
}
(
dealsRecyclerView
.
adapter
as
DealsListAdapter
)
.
startTour
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
{
Timber
.
d
(
"got tour clicked $it"
)
showMessage
(
R
.
string
.
tour_not_allowed
)
}
)
)
}
}
...
@@ -107,6 +104,12 @@ class DealsScreenController :
...
@@ -107,6 +104,12 @@ class DealsScreenController :
bindRecycler
()
bindRecycler
()
}
}
override
fun
tourCardClicked
():
Observable
<
DealPreviewModel
>
=
(
dealsRecyclerView
.
adapter
as
DealsListAdapter
)
.
startTour
.
map
{
it
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
override
fun
render
(
viewState
:
DealsScreenViewState
)
{
override
fun
render
(
viewState
:
DealsScreenViewState
)
{
super
.
render
(
viewState
)
super
.
render
(
viewState
)
Timber
.
d
(
"Render state $viewState"
)
Timber
.
d
(
"Render state $viewState"
)
...
@@ -114,6 +117,7 @@ class DealsScreenController :
...
@@ -114,6 +117,7 @@ class DealsScreenController :
is
DealsScreenViewState
.
Idle
->
render
(
viewState
)
is
DealsScreenViewState
.
Idle
->
render
(
viewState
)
is
DealsScreenViewState
.
DealsLoaded
->
render
(
viewState
)
is
DealsScreenViewState
.
DealsLoaded
->
render
(
viewState
)
is
DealsScreenViewState
.
SomeError
->
render
(
viewState
)
is
DealsScreenViewState
.
SomeError
->
render
(
viewState
)
is
DealsScreenViewState
.
ToursLoaded
->
render
(
viewState
)
}
}
}
}
...
@@ -125,6 +129,16 @@ class DealsScreenController :
...
@@ -125,6 +129,16 @@ class DealsScreenController :
(
dealsRecyclerView
.
adapter
as
DealsListAdapter
).
addItems
(
viewState
.
items
)
(
dealsRecyclerView
.
adapter
as
DealsListAdapter
).
addItems
(
viewState
.
items
)
}
}
private
fun
render
(
viewState
:
DealsScreenViewState
.
ToursLoaded
)
{
router
.
pushController
(
RouterTransaction
.
with
(
ChooseTourDialogController
(
ArrayList
(
viewState
.
tours
))
)
.
popChangeHandler
(
DialogChangeHandler
())
.
pushChangeHandler
(
DialogChangeHandler
())
)
}
private
fun
render
(
viewState
:
DealsScreenViewState
.
SomeError
)
=
private
fun
render
(
viewState
:
DealsScreenViewState
.
SomeError
)
=
showError
(
viewState
.
exception
)
showError
(
viewState
.
exception
)
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deals/ScreenPresenter.kt
View file @
e95ce74e
...
@@ -2,6 +2,7 @@ package com.biganto.visual.roompark.presentation.screen.deals
...
@@ -2,6 +2,7 @@ package com.biganto.visual.roompark.presentation.screen.deals
import
com.biganto.visual.roompark.conductor.BigantoBasePresenter
import
com.biganto.visual.roompark.conductor.BigantoBasePresenter
import
com.biganto.visual.roompark.domain.interactor.DealsInteractor
import
com.biganto.visual.roompark.domain.interactor.DealsInteractor
import
com.biganto.visual.roompark.domain.interactor.ToursInteractor
import
com.biganto.visual.roompark.domain.model.DealPreviewModel
import
com.biganto.visual.roompark.domain.model.DealPreviewModel
import
com.biganto.visual.roompark.util.monades.ExceptionString
import
com.biganto.visual.roompark.util.monades.ExceptionString
import
io.reactivex.Observable
import
io.reactivex.Observable
...
@@ -16,7 +17,8 @@ import javax.inject.Inject
...
@@ -16,7 +17,8 @@ import javax.inject.Inject
class
DealsScreenPresenter
@Inject
constructor
(
class
DealsScreenPresenter
@Inject
constructor
(
private
val
interactor
:
DealsInteractor
private
val
interactor
:
DealsInteractor
,
private
val
toursInteractor
:
ToursInteractor
)
)
:
BigantoBasePresenter
<
DealsScreen
,
DealsScreenViewState
>()
{
:
BigantoBasePresenter
<
DealsScreen
,
DealsScreenViewState
>()
{
...
@@ -42,10 +44,18 @@ class DealsScreenPresenter @Inject constructor(
...
@@ -42,10 +44,18 @@ class DealsScreenPresenter @Inject constructor(
.
map
<
DealsScreenViewState
>(
DealsScreenViewState
::
DealsLoaded
)
.
map
<
DealsScreenViewState
>(
DealsScreenViewState
::
DealsLoaded
)
.
onErrorReturn
(
::
parseError
)
.
onErrorReturn
(
::
parseError
)
val
onStartTours
=
intent
(
DealsScreen
::
tourCardClicked
)
.
flatMap
{
dealPreview
->
toursInteractor
.
getEstateTourList
(
dealPreview
.
tourId
,
dealPreview
.
estateId
)
.
map
{
DealsScreenViewState
.
ToursLoaded
(
it
)
}
}
val
state
=
Observable
.
mergeDelayError
(
val
state
=
Observable
.
mergeDelayError
(
arrayListOf
(
arrayListOf
(
restoreStateObservable
,
restoreStateObservable
,
fetchDeals
fetchDeals
,
onStartTours
)
)
)
)
.
doOnError
{
Timber
.
e
(
it
)
}
.
doOnError
{
Timber
.
e
(
it
)
}
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deals/ScreenViewState.kt
View file @
e95ce74e
...
@@ -2,6 +2,7 @@ package com.biganto.visual.roompark.presentation.screen.deals
...
@@ -2,6 +2,7 @@ package com.biganto.visual.roompark.presentation.screen.deals
import
com.biganto.visual.roompark.conductor.BigantoBaseViewState
import
com.biganto.visual.roompark.conductor.BigantoBaseViewState
import
com.biganto.visual.roompark.domain.model.DealPreviewModel
import
com.biganto.visual.roompark.domain.model.DealPreviewModel
import
com.biganto.visual.roompark.domain.model.TourModel
import
com.biganto.visual.roompark.util.monades.ExceptionString
import
com.biganto.visual.roompark.util.monades.ExceptionString
/**
/**
...
@@ -13,5 +14,6 @@ sealed class DealsScreenViewState : BigantoBaseViewState() {
...
@@ -13,5 +14,6 @@ sealed class DealsScreenViewState : BigantoBaseViewState() {
class
Idle
:
DealsScreenViewState
()
class
Idle
:
DealsScreenViewState
()
class
DealsLoaded
(
val
items
:
List
<
DealPreviewModel
>)
:
DealsScreenViewState
()
class
DealsLoaded
(
val
items
:
List
<
DealPreviewModel
>)
:
DealsScreenViewState
()
class
SomeError
(
val
exception
:
ExceptionString
)
:
DealsScreenViewState
()
class
SomeError
(
val
exception
:
ExceptionString
)
:
DealsScreenViewState
()
class
ToursLoaded
(
val
tours
:
List
<
TourModel
>)
:
DealsScreenViewState
()
}
}
app/src/main/java/com/biganto/visual/roompark/presentation/screen/deals/util/Adapter.kt
View file @
e95ce74e
...
@@ -34,7 +34,7 @@ class DealsListAdapter : CommonRecyclerAdapter<DealViewHolder, DealPreviewModel>
...
@@ -34,7 +34,7 @@ class DealsListAdapter : CommonRecyclerAdapter<DealViewHolder, DealPreviewModel>
override
fun
getVhLayout
()
=
R
.
layout
.
deal_card_viewholder
override
fun
getVhLayout
()
=
R
.
layout
.
deal_card_viewholder
private
val
onFlatClicked
=
PublishSubject
.
create
<
Int
>()
private
val
onFlatClicked
=
PublishSubject
.
create
<
Int
>()
private
val
onTourClickced
=
PublishSubject
.
create
<
Int
>()
private
val
onTourClickced
=
PublishSubject
.
create
<
DealPreviewModel
>()
override
fun
onBindViewHolder
(
holder
:
DealViewHolder
,
position
:
Int
)
{
override
fun
onBindViewHolder
(
holder
:
DealViewHolder
,
position
:
Int
)
{
super
.
onBindViewHolder
(
holder
,
position
)
super
.
onBindViewHolder
(
holder
,
position
)
...
@@ -73,7 +73,7 @@ class DealViewHolder(itemView: View) : CommonViewHolder<DealPreviewModel>(itemVi
...
@@ -73,7 +73,7 @@ class DealViewHolder(itemView: View) : CommonViewHolder<DealPreviewModel>(itemVi
@BindView
(
R
.
id
.
deal_read
)
lateinit
var
dealReadFlag
:
View
@BindView
(
R
.
id
.
deal_read
)
lateinit
var
dealReadFlag
:
View
val
onStartFlatObs
:
Observable
<
Int
?>
get
()
=
startFlat
.
clicks
().
map
{
bindedModel
.
estateId
}
val
onStartFlatObs
:
Observable
<
Int
?>
get
()
=
startFlat
.
clicks
().
map
{
bindedModel
.
estateId
}
val
onStartTourObs
:
Observable
<
Int
?>
get
()
=
startTour
.
clicks
().
map
{
bindedModel
.
tourId
}
val
onStartTourObs
:
Observable
<
DealPreviewModel
>
get
()
=
startTour
.
clicks
().
map
{
bindedModel
}
override
fun
onViewBound
(
model
:
DealPreviewModel
)
{
override
fun
onViewBound
(
model
:
DealPreviewModel
)
{
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/estate/ScreenController.kt
View file @
e95ce74e
...
@@ -270,6 +270,7 @@ class EstateScreenController :
...
@@ -270,6 +270,7 @@ class EstateScreenController :
}
}
private
fun
render
(
viewState
:
EstateScreenViewState
.
SomeError
)
=
private
fun
render
(
viewState
:
EstateScreenViewState
.
SomeError
)
=
showError
(
viewState
.
exception
)
showError
(
viewState
.
exception
)
...
@@ -318,7 +319,6 @@ class EstateScreenController :
...
@@ -318,7 +319,6 @@ class EstateScreenController :
}
}
private
fun
render
(
viewState
:
EstateScreenViewState
.
ToursLoaded
)
{
private
fun
render
(
viewState
:
EstateScreenViewState
.
ToursLoaded
)
{
Timber
.
d
(
"Wtf"
)
router
.
pushController
(
RouterTransaction
.
with
(
router
.
pushController
(
RouterTransaction
.
with
(
ChooseTourDialogController
(
ArrayList
(
viewState
.
tours
)))
ChooseTourDialogController
(
ArrayList
(
viewState
.
tours
)))
.
popChangeHandler
(
DialogChangeHandler
())
.
popChangeHandler
(
DialogChangeHandler
())
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/favorites/ScreenContract.kt
View file @
e95ce74e
package
com.biganto.visual.roompark.presentation.screen.favorites
package
com.biganto.visual.roompark.presentation.screen.favorites
import
com.biganto.visual.roompark.conductor.BigantoBaseContract
import
com.biganto.visual.roompark.conductor.BigantoBaseContract
import
com.biganto.visual.roompark.domain.model.EstateModel
import
io.reactivex.Observable
/**
/**
* Created by Vladislav Bogdashkin on 30.09.2019.
* Created by Vladislav Bogdashkin on 30.09.2019.
*/
*/
interface
FavoritesScreen
:
BigantoBaseContract
<
FavoritesScreenViewState
>
{
interface
FavoritesScreen
:
BigantoBaseContract
<
FavoritesScreenViewState
>
{
fun
tourCardClicked
():
Observable
<
EstateModel
>
}
}
app/src/main/java/com/biganto/visual/roompark/presentation/screen/favorites/ScreenController.kt
View file @
e95ce74e
...
@@ -9,13 +9,18 @@ import com.biganto.visual.roompark.base.HeaderToolbarModel
...
@@ -9,13 +9,18 @@ import com.biganto.visual.roompark.base.HeaderToolbarModel
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.conductor.dialogs.change_handler.DialogChangeHandler
import
com.biganto.visual.roompark.conductor.dialogs.tour_chooser.ChooseTourDialogController
import
com.biganto.visual.roompark.domain.model.EstateModel
import
com.biganto.visual.roompark.presentation.screen.estate.EstateScreenController
import
com.biganto.visual.roompark.presentation.screen.estate.EstateScreenController
import
com.biganto.visual.roompark.presentation.screen.favorites.util.FavoritesListAdapter
import
com.biganto.visual.roompark.presentation.screen.favorites.util.FavoritesListAdapter
import
com.biganto.visual.roompark.util.view_utils.grid.CeilsDecoration
import
com.biganto.visual.roompark.util.view_utils.grid.CeilsDecoration
import
com.bluelinelabs.conductor.RouterTransaction
import
com.bluelinelabs.conductor.RouterTransaction
import
com.bluelinelabs.conductor.changehandler.FadeChangeHandler
import
com.bluelinelabs.conductor.changehandler.FadeChangeHandler
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.android.schedulers.AndroidSchedulers
import
timber.log.Timber
import
timber.log.Timber
import
java.util.concurrent.TimeUnit
import
javax.inject.Inject
import
javax.inject.Inject
/**
/**
...
@@ -38,6 +43,11 @@ class FavoritesScreenController :
...
@@ -38,6 +43,11 @@ class FavoritesScreenController :
@BindView
(
R
.
id
.
favorites_cards_recycler_view
)
@BindView
(
R
.
id
.
favorites_cards_recycler_view
)
lateinit
var
favoritesRecyclerView
:
RecyclerView
lateinit
var
favoritesRecyclerView
:
RecyclerView
override
fun
tourCardClicked
():
Observable
<
EstateModel
>
=
(
favoritesRecyclerView
.
adapter
as
FavoritesListAdapter
)
.
startTour
.
debounce
(
220L
,
TimeUnit
.
MILLISECONDS
)
.
observeOn
(
AndroidSchedulers
.
mainThread
())
override
fun
onAttach
(
view
:
View
)
{
override
fun
onAttach
(
view
:
View
)
{
super
.
onAttach
(
view
)
super
.
onAttach
(
view
)
...
@@ -93,6 +103,7 @@ class FavoritesScreenController :
...
@@ -93,6 +103,7 @@ class FavoritesScreenController :
is
FavoritesScreenViewState
.
Idle
->
render
(
viewState
)
is
FavoritesScreenViewState
.
Idle
->
render
(
viewState
)
is
FavoritesScreenViewState
.
FavoriteEstatesLoaded
->
render
(
viewState
)
is
FavoritesScreenViewState
.
FavoriteEstatesLoaded
->
render
(
viewState
)
is
FavoritesScreenViewState
.
SomeError
->
render
(
viewState
)
is
FavoritesScreenViewState
.
SomeError
->
render
(
viewState
)
is
FavoritesScreenViewState
.
ToursLoaded
->
render
(
viewState
)
}
}
}
}
...
@@ -100,6 +111,15 @@ class FavoritesScreenController :
...
@@ -100,6 +111,15 @@ class FavoritesScreenController :
}
}
private
fun
render
(
viewState
:
FavoritesScreenViewState
.
ToursLoaded
)
{
router
.
pushController
(
RouterTransaction
.
with
(
ChooseTourDialogController
(
ArrayList
(
viewState
.
tours
))
)
.
popChangeHandler
(
DialogChangeHandler
())
.
pushChangeHandler
(
DialogChangeHandler
())
)
}
private
fun
render
(
viewState
:
FavoritesScreenViewState
.
SomeError
)
=
private
fun
render
(
viewState
:
FavoritesScreenViewState
.
SomeError
)
=
showError
(
viewState
.
exception
)
showError
(
viewState
.
exception
)
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/favorites/ScreenPresenter.kt
View file @
e95ce74e
...
@@ -2,6 +2,7 @@ package com.biganto.visual.roompark.presentation.screen.favorites
...
@@ -2,6 +2,7 @@ package com.biganto.visual.roompark.presentation.screen.favorites
import
com.biganto.visual.roompark.conductor.BigantoBasePresenter
import
com.biganto.visual.roompark.conductor.BigantoBasePresenter
import
com.biganto.visual.roompark.domain.interactor.FavoritesInteractor
import
com.biganto.visual.roompark.domain.interactor.FavoritesInteractor
import
com.biganto.visual.roompark.domain.interactor.ToursInteractor
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
...
@@ -15,7 +16,8 @@ import javax.inject.Inject
...
@@ -15,7 +16,8 @@ import javax.inject.Inject
class
FavoritesScreenPresenter
@Inject
constructor
(
class
FavoritesScreenPresenter
@Inject
constructor
(
private
val
interactor
:
FavoritesInteractor
private
val
interactor
:
FavoritesInteractor
,
private
val
toursInteractor
:
ToursInteractor
)
)
:
BigantoBasePresenter
<
FavoritesScreen
,
FavoritesScreenViewState
>()
{
:
BigantoBasePresenter
<
FavoritesScreen
,
FavoritesScreenViewState
>()
{
...
@@ -27,10 +29,18 @@ class FavoritesScreenPresenter @Inject constructor(
...
@@ -27,10 +29,18 @@ class FavoritesScreenPresenter @Inject constructor(
val
prefetchCards
=
interactor
.
getFavoritesForCurrentUser
()
val
prefetchCards
=
interactor
.
getFavoritesForCurrentUser
()
.
map
{
FavoritesScreenViewState
.
FavoriteEstatesLoaded
(
it
)
}
.
map
{
FavoritesScreenViewState
.
FavoriteEstatesLoaded
(
it
)
}
val
onStartTours
=
intent
(
FavoritesScreen
::
tourCardClicked
)
.
flatMap
{
estate
->
toursInteractor
.
getEstateTourList
(
estate
)
.
map
{
FavoritesScreenViewState
.
ToursLoaded
(
it
)
}
}
val
state
=
Observable
.
mergeDelayError
(
val
state
=
Observable
.
mergeDelayError
(
arrayListOf
(
arrayListOf
(
restoreStateObservable
,
restoreStateObservable
,
prefetchCards
prefetchCards
,
onStartTours
)
)
)
)
.
doOnError
{
Timber
.
e
(
it
)
}
.
doOnError
{
Timber
.
e
(
it
)
}
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/favorites/ScreenViewState.kt
View file @
e95ce74e
...
@@ -2,6 +2,7 @@ package com.biganto.visual.roompark.presentation.screen.favorites
...
@@ -2,6 +2,7 @@ package com.biganto.visual.roompark.presentation.screen.favorites
import
com.biganto.visual.roompark.conductor.BigantoBaseViewState
import
com.biganto.visual.roompark.conductor.BigantoBaseViewState
import
com.biganto.visual.roompark.domain.model.EstateModel
import
com.biganto.visual.roompark.domain.model.EstateModel
import
com.biganto.visual.roompark.domain.model.TourModel
import
com.biganto.visual.roompark.util.monades.ExceptionString
import
com.biganto.visual.roompark.util.monades.ExceptionString
/**
/**
...
@@ -13,4 +14,5 @@ sealed class FavoritesScreenViewState : BigantoBaseViewState() {
...
@@ -13,4 +14,5 @@ sealed class FavoritesScreenViewState : BigantoBaseViewState() {
class
Idle
:
FavoritesScreenViewState
()
class
Idle
:
FavoritesScreenViewState
()
class
FavoriteEstatesLoaded
(
val
items
:
List
<
EstateModel
>)
:
FavoritesScreenViewState
()
class
FavoriteEstatesLoaded
(
val
items
:
List
<
EstateModel
>)
:
FavoritesScreenViewState
()
class
SomeError
(
val
exception
:
ExceptionString
)
:
FavoritesScreenViewState
()
class
SomeError
(
val
exception
:
ExceptionString
)
:
FavoritesScreenViewState
()
class
ToursLoaded
(
val
tours
:
List
<
TourModel
>)
:
FavoritesScreenViewState
()
}
}
\ No newline at end of file
app/src/main/java/com/biganto/visual/roompark/presentation/screen/favorites/util/FavoritesAdapter.kt
View file @
e95ce74e
...
@@ -14,6 +14,9 @@ import com.biganto.visual.roompark.presentation.screen.settings.util.CommonRecyc
...
@@ -14,6 +14,9 @@ import com.biganto.visual.roompark.presentation.screen.settings.util.CommonRecyc
import
com.biganto.visual.roompark.presentation.screen.settings.util.CommonViewHolder
import
com.biganto.visual.roompark.presentation.screen.settings.util.CommonViewHolder
import
com.biganto.visual.roompark.util.extensions.setGone
import
com.biganto.visual.roompark.util.extensions.setGone
import
com.biganto.visual.roompark.util.extensions.startUrl
import
com.biganto.visual.roompark.util.extensions.startUrl
import
com.jakewharton.rxbinding3.view.clicks
import
io.reactivex.Observable
import
io.reactivex.subjects.PublishSubject
/**
/**
* Created by Vladislav Bogdashkin on 16.10.2019.
* Created by Vladislav Bogdashkin on 16.10.2019.
...
@@ -22,6 +25,15 @@ import com.biganto.visual.roompark.util.extensions.startUrl
...
@@ -22,6 +25,15 @@ import com.biganto.visual.roompark.util.extensions.startUrl
class
FavoritesListAdapter
:
CommonRecyclerAdapter
<
FavoriteViewHolder
,
EstateModel
>()
{
class
FavoritesListAdapter
:
CommonRecyclerAdapter
<
FavoriteViewHolder
,
EstateModel
>()
{
override
val
vhKlazz
=
FavoriteViewHolder
::
class
override
val
vhKlazz
=
FavoriteViewHolder
::
class
override
fun
getVhLayout
():
Int
=
R
.
layout
.
favorite_card_viewholder
override
fun
getVhLayout
():
Int
=
R
.
layout
.
favorite_card_viewholder
private
val
onTourClickced
=
PublishSubject
.
create
<
EstateModel
>()
override
fun
onBindViewHolder
(
holder
:
FavoriteViewHolder
,
position
:
Int
)
{
super
.
onBindViewHolder
(
holder
,
position
)
holder
.
onStartTourObs
.
subscribe
(
onTourClickced
)
}
val
startTour
get
()
=
onTourClickced
}
}
...
@@ -45,10 +57,13 @@ class FavoriteViewHolder(itemView: View) : CommonViewHolder<EstateModel>(itemVie
...
@@ -45,10 +57,13 @@ class FavoriteViewHolder(itemView: View) : CommonViewHolder<EstateModel>(itemVie
init
{
init
{
ButterKnife
.
bind
(
this
,
itemView
)
ButterKnife
.
bind
(
this
,
itemView
)
}
}
val
onStartTourObs
:
Observable
<
EstateModel
>
get
()
=
startTour
.
clicks
().
map
{
bindedModel
}
override
fun
onViewBound
(
model
:
EstateModel
)
{
override
fun
onViewBound
(
model
:
EstateModel
)
{
estateTitle
.
text
=
estateTitle
.
text
=
itemView
.
context
.
resources
?.
getString
(
model
.
type
.
typeDoubleString
(),
model
.
number
)
itemView
.
context
.
resources
?.
getString
(
model
.
type
.
typeDoubleString
(),
model
.
number
)
...
@@ -57,6 +72,8 @@ class FavoriteViewHolder(itemView: View) : CommonViewHolder<EstateModel>(itemVie
...
@@ -57,6 +72,8 @@ class FavoriteViewHolder(itemView: View) : CommonViewHolder<EstateModel>(itemVie
startTour
.
setGone
(
model
.
type
!=
FlatType
.
FLAT
)
startTour
.
setGone
(
model
.
type
!=
FlatType
.
FLAT
)
startTour
.
setGone
(
model
.
multitourId
==
null
)
siteLink
.
setGone
(
model
.
url
==
null
)
siteLink
.
setGone
(
model
.
url
==
null
)
siteLinkDivider
.
setGone
(
model
.
url
==
null
)
siteLinkDivider
.
setGone
(
model
.
url
==
null
)
model
.
url
?.
let
{
url
->
model
.
url
?.
let
{
url
->
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/feeds/utils/DevProgressPreviewAdapter.kt
View file @
e95ce74e
...
@@ -41,6 +41,9 @@ class AlbumCardViewHolder(itemView: View) : CommonViewHolder<AlbumPreviewModel>(
...
@@ -41,6 +41,9 @@ class AlbumCardViewHolder(itemView: View) : CommonViewHolder<AlbumPreviewModel>(
articleTitle
.
text
=
model
.
title
articleTitle
.
text
=
model
.
title
articleTitle
.
text
=
model
.
title
articleTitle
.
text
=
model
.
title
articleDate
.
text
=
dateFormatter
.
format
(
model
.
published
)
Glide
.
with
(
preview
)
Glide
.
with
(
preview
)
.
load
(
model
.
previewUrl
)
.
load
(
model
.
previewUrl
)
.
centerCrop
()
.
centerCrop
()
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/settings/ScreenPresenter.kt
View file @
e95ce74e
...
@@ -11,6 +11,7 @@ import io.reactivex.Observable
...
@@ -11,6 +11,7 @@ import io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.schedulers.Schedulers
import
io.reactivex.schedulers.Schedulers
import
timber.log.Timber
import
timber.log.Timber
import
java.util.concurrent.TimeUnit
import
javax.inject.Inject
import
javax.inject.Inject
/**
/**
...
@@ -95,10 +96,12 @@ class SettingsScreenPresenter @Inject constructor(
...
@@ -95,10 +96,12 @@ class SettingsScreenPresenter @Inject constructor(
.
flatMap
{
.
flatMap
{
interactor
.
deleteCacheFiles
()
interactor
.
deleteCacheFiles
()
.
map
<
SettingsScreenViewState
>
{
.
map
<
SettingsScreenViewState
>
{
Timber
.
d
(
" got progress: ${it.first} / ${it.second.toFloat()}"
)
SettingsScreenViewState
.
OnCacheDeleting
(
SettingsScreenViewState
.
OnCacheDeleting
(
it
.
first
/
it
.
second
.
toFloat
()
it
.
first
/
it
.
second
.
toFloat
()
)
)
}
}
.
delay
(
500
,
TimeUnit
.
MILLISECONDS
)
.
startWith
(
SettingsScreenViewState
.
OnCacheDeleting
(
0f
))
.
startWith
(
SettingsScreenViewState
.
OnCacheDeleting
(
0f
))
.
doOnError
{
Timber
.
e
(
it
)
}
.
doOnError
{
Timber
.
e
(
it
)
}
}
}
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/to_flat/ScreenContract.kt
View file @
e95ce74e
...
@@ -9,7 +9,7 @@ import io.reactivex.Observable
...
@@ -9,7 +9,7 @@ import io.reactivex.Observable
interface
FindFlatScreen
:
BigantoBaseContract
<
FindFlatScreenViewState
>
{
interface
FindFlatScreen
:
BigantoBaseContract
<
FindFlatScreenViewState
>
{
fun
getFlat
()
:
Observable
<
FlatRequestModel
>
fun
getFlat
()
:
Observable
<
FlatRequestModel
>
fun
openFlat
()
:
Observable
<
Int
>
fun
openFlat
()
:
Observable
<
FlatRequestModel
>
}
}
data class
FlatRequestModel
(
val
building
:
Int
,
val
number
:
Int
)
data class
FlatRequestModel
(
val
building
:
Int
,
val
number
:
Int
)
\ No newline at end of file
app/src/main/java/com/biganto/visual/roompark/presentation/screen/to_flat/ScreenController.kt
View file @
e95ce74e
...
@@ -36,11 +36,20 @@ class FindFlatScreenController :
...
@@ -36,11 +36,20 @@ class FindFlatScreenController :
,
FindFlatScreenPresenter
>()
,
FindFlatScreenPresenter
>()
,
FindFlatScreen
{
,
FindFlatScreen
{
private
val
flatModel
:
FlatRequestModel
get
(){
return
FlatRequestModel
(
estateTabs
[
flatTabs
.
selectedTabPosition
].
building
,
flatNumberInput
.
editText
?.
text
.
toString
().
toInt
()
)
}
override
fun
openFlat
():
Observable
<
Int
>
=
override
fun
openFlat
():
Observable
<
FlatRequestModel
>
=
findFlatButton
.
clicks
()
findFlatButton
.
clicks
()
.
map
{
1
}
.
map
{
1
}
.
mergeWith
(
flatNumberEditor
.
keys
{
it
.
keyCode
==
KeyEvent
.
KEYCODE_ENTER
}.
map
{
1
})
.
mergeWith
(
flatNumberEditor
.
keys
{
it
.
keyCode
==
KeyEvent
.
KEYCODE_ENTER
}.
map
{
1
})
.
map
{
flatModel
}
.
doOnNext
{
flatNumberEditor
.
hideKeyboard
()
}
.
doOnNext
{
flatNumberEditor
.
hideKeyboard
()
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
...
@@ -48,12 +57,9 @@ class FindFlatScreenController :
...
@@ -48,12 +57,9 @@ class FindFlatScreenController :
flatNumberEditor
.
afterTextChangeEvents
()
// keys{ it.keyCode == KeyEvent.KEYCODE_ENTER }
flatNumberEditor
.
afterTextChangeEvents
()
// keys{ it.keyCode == KeyEvent.KEYCODE_ENTER }
.
filter
{
flatNumberInput
.
editText
?.
text
?.
isNotEmpty
()
?:
false
}
.
filter
{
flatNumberInput
.
editText
?.
text
?.
isNotEmpty
()
?:
false
}
.
map
{
.
map
{
FlatRequestModel
(
flatModel
estateTabs
[
flatTabs
.
selectedTabPosition
].
building
,
flatNumberInput
.
editText
?.
text
.
toString
().
toInt
()
)
}
}
.
debounce
(
30
0
,
TimeUnit
.
MILLISECONDS
)
.
debounce
(
12
0
,
TimeUnit
.
MILLISECONDS
)
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
override
fun
injectDependencies
()
{
override
fun
injectDependencies
()
{
...
@@ -118,6 +124,7 @@ class FindFlatScreenController :
...
@@ -118,6 +124,7 @@ class FindFlatScreenController :
is
FindFlatScreenViewState
.
FlatFounded
->
render
(
viewState
)
is
FindFlatScreenViewState
.
FlatFounded
->
render
(
viewState
)
is
FindFlatScreenViewState
.
FlatNotFound
->
render
(
viewState
)
is
FindFlatScreenViewState
.
FlatNotFound
->
render
(
viewState
)
is
FindFlatScreenViewState
.
StartFlat
->
render
(
viewState
)
is
FindFlatScreenViewState
.
StartFlat
->
render
(
viewState
)
is
FindFlatScreenViewState
.
RestoreView
->
render
(
viewState
)
}
}
}
}
...
@@ -127,6 +134,14 @@ class FindFlatScreenController :
...
@@ -127,6 +134,14 @@ class FindFlatScreenController :
private
fun
render
(
viewState
:
FindFlatScreenViewState
.
Idle
){
private
fun
render
(
viewState
:
FindFlatScreenViewState
.
Idle
){
}
}
private
fun
render
(
viewState
:
FindFlatScreenViewState
.
RestoreView
){
val
tabIndex
=
viewState
.
restore
.
building
-
1
Timber
.
d
(
":: ${viewState.restore.building} : $tabIndex"
)
flatTabs
.
getTabAt
(
tabIndex
)
?.
select
()
//zero-based
flatNumberInput
.
editText
?.
setText
(
viewState
.
restore
.
number
.
toString
())
}
private
fun
render
(
viewState
:
FindFlatScreenViewState
.
FlatFounded
){
private
fun
render
(
viewState
:
FindFlatScreenViewState
.
FlatFounded
){
findFlatButton
.
isEnabled
=
true
findFlatButton
.
isEnabled
=
true
findFlatButton
.
text
=
resources
?.
getString
(
R
.
string
.
flat_ready_to_watch
)
findFlatButton
.
text
=
resources
?.
getString
(
R
.
string
.
flat_ready_to_watch
)
...
...
app/src/main/java/com/biganto/visual/roompark/presentation/screen/to_flat/ScreenPresenter.kt
View file @
e95ce74e
...
@@ -27,6 +27,13 @@ class FindFlatScreenPresenter @Inject constructor(
...
@@ -27,6 +27,13 @@ class FindFlatScreenPresenter @Inject constructor(
//estateId
//estateId
private
var
recentFlat
:
Int
?
=
null
private
var
recentFlat
:
Int
?
=
null
private
var
restoreModel
=
RestoreModel
(-
1
,-
1
)
override
fun
detachView
()
{
super
.
detachView
()
restoreStateObservable
.
accept
(
FindFlatScreenViewState
.
RestoreView
(
restoreModel
))
}
override
fun
vsByCode
(
code
:
Int
):
(
ExceptionString
)
->
FindFlatScreenViewState
=
override
fun
vsByCode
(
code
:
Int
):
(
ExceptionString
)
->
FindFlatScreenViewState
=
when
(
code
)
{
when
(
code
)
{
304
->
{
message
:
ExceptionString
->
FindFlatScreenViewState
.
FlatNotFound
(
message
)}
304
->
{
message
:
ExceptionString
->
FindFlatScreenViewState
.
FlatNotFound
(
message
)}
...
@@ -36,6 +43,7 @@ class FindFlatScreenPresenter @Inject constructor(
...
@@ -36,6 +43,7 @@ class FindFlatScreenPresenter @Inject constructor(
override
fun
bindIntents
()
{
override
fun
bindIntents
()
{
val
getFlatIntent
=
intent
(
FindFlatScreen
::
getFlat
)
val
getFlatIntent
=
intent
(
FindFlatScreen
::
getFlat
)
.
doOnNext
{
restoreModel
.
building
=
it
.
building
;
restoreModel
.
number
=
it
.
number
}
.
doOnNext
{
recentFlat
=
null
}
.
doOnNext
{
recentFlat
=
null
}
.
doOnNext
{
Timber
.
d
(
" flat is $it"
)}
.
doOnNext
{
Timber
.
d
(
" flat is $it"
)}
.
flatMap
{
request
->
.
flatMap
{
request
->
...
@@ -47,6 +55,7 @@ class FindFlatScreenPresenter @Inject constructor(
...
@@ -47,6 +55,7 @@ class FindFlatScreenPresenter @Inject constructor(
.
startWith
(
Observable
.
just
(
FindFlatScreenViewState
.
RequstFlatProgress
()))
.
startWith
(
Observable
.
just
(
FindFlatScreenViewState
.
RequstFlatProgress
()))
val
startFlatIntent
=
intent
(
FindFlatScreen
::
openFlat
)
val
startFlatIntent
=
intent
(
FindFlatScreen
::
openFlat
)
.
doOnNext
{
restoreModel
.
building
=
it
.
building
;
restoreModel
.
number
=
it
.
number
}
.
map
{
.
map
{
if
(
recentFlat
!=
null
)
{
FindFlatScreenViewState
.
StartFlat
(
recentFlat
as
Int
)}
if
(
recentFlat
!=
null
)
{
FindFlatScreenViewState
.
StartFlat
(
recentFlat
as
Int
)}
else
FindFlatScreenViewState
.
FlatNotFound
(
else
FindFlatScreenViewState
.
FlatNotFound
(
...
@@ -55,6 +64,7 @@ class FindFlatScreenPresenter @Inject constructor(
...
@@ -55,6 +64,7 @@ class FindFlatScreenPresenter @Inject constructor(
}
}
val
state
=
restoreStateObservable
val
state
=
restoreStateObservable
.
mergeWith
(
getFlatIntent
)
.
mergeWith
(
getFlatIntent
)
.
mergeWith
(
startFlatIntent
)
.
mergeWith
(
startFlatIntent
)
...
@@ -64,4 +74,7 @@ class FindFlatScreenPresenter @Inject constructor(
...
@@ -64,4 +74,7 @@ class FindFlatScreenPresenter @Inject constructor(
subscribeViewState
(
state
.
cast
(
FindFlatScreenViewState
::
class
.
java
),
FindFlatScreen
::
render
)
subscribeViewState
(
state
.
cast
(
FindFlatScreenViewState
::
class
.
java
),
FindFlatScreen
::
render
)
}
}
}
}
\ No newline at end of file
data class
RestoreModel
(
var
building
:
Int
,
var
number
:
Int
)
app/src/main/java/com/biganto/visual/roompark/presentation/screen/to_flat/ScreenViewState.kt
View file @
e95ce74e
...
@@ -15,4 +15,5 @@ sealed class FindFlatScreenViewState : BigantoBaseViewState() {
...
@@ -15,4 +15,5 @@ sealed class FindFlatScreenViewState : BigantoBaseViewState() {
class
FlatNotFound
(
val
exceptionString
:
ExceptionString
)
:
FindFlatScreenViewState
()
class
FlatNotFound
(
val
exceptionString
:
ExceptionString
)
:
FindFlatScreenViewState
()
class
StartFlat
(
val
esateId
:
Int
)
:
FindFlatScreenViewState
()
class
StartFlat
(
val
esateId
:
Int
)
:
FindFlatScreenViewState
()
class
SomeError
(
val
exception
:
ExceptionString
)
:
FindFlatScreenViewState
()
class
SomeError
(
val
exception
:
ExceptionString
)
:
FindFlatScreenViewState
()
class
RestoreView
(
val
restore
:
RestoreModel
)
:
FindFlatScreenViewState
()
}
}
\ No newline at end of file
app/src/main/res/drawable/bell_switch_track.xml
View file @
e95ce74e
...
@@ -41,7 +41,7 @@
...
@@ -41,7 +41,7 @@
android:top=
"5dp"
android:top=
"5dp"
android:bottom=
"5dp"
android:bottom=
"5dp"
android:src=
"@drawable/ic_bell_on"
android:src=
"@drawable/ic_bell_on"
android:mipMap=
"
tru
e"
android:mipMap=
"
fals
e"
android:gravity=
"start"
android:gravity=
"start"
android:tintMode=
"screen"
android:tintMode=
"screen"
android:tint=
"@color/colorPrimaryDark"
/>
android:tint=
"@color/colorPrimaryDark"
/>
...
...
app/src/main/res/drawable/def_switch_track.xml
0 → 100644
View file @
e95ce74e
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:width=
"http://schemas.android.com/apk/res-auto"
>
<item
android:state_checked=
"false"
>
<layer-list>
<item>
<shape
android:shape=
"rectangle"
android:dither=
"true"
android:useLevel=
"false"
>
<size
android:width=
"48dp"
android:height=
"24dp"
/>
<corners
android:radius=
"12dp"
/>
</shape>
</item>
<item
android:right=
"8dp"
>
<shape
android:shape=
"ring"
android:width=
"14dp"
android:height=
"15dp"
android:gravity=
"end"
android:tint=
"@color/colorPrimaryDark"
/>
</item>
</layer-list>
</item>
<item
android:state_checked=
"true"
>
<layer-list>
<item>
<shape
android:shape=
"rectangle"
android:dither=
"true"
android:useLevel=
"false"
>
<size
android:width=
"48dp"
android:height=
"24dp"
/>
<solid
android:color=
"#FFFFFFFF"
/>
<corners
android:radius=
"12dp"
/>
</shape>
</item>
<item
android:left=
"8dp"
>
<shape
android:shape=
"ring"
android:right=
"27dp"
android:top=
"5dp"
android:bottom=
"5dp"
android:gravity=
"start"
android:tintMode=
"screen"
android:tint=
"@color/colorPrimaryDark"
/>
</item>
</layer-list>
</item>
</selector>
\ No newline at end of file
app/src/main/res/layout-v23/default_switch_view.xml
0 → 100644
View file @
e95ce74e
<?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/bell_container"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<com.google.android.material.switchmaterial.SwitchMaterial
style=
"@style/Widget.MaterialComponents.CompoundButton.Switch.DefaultSwitchStyle"
android:id=
"@+id/switch1"
android:layout_width=
"48dp"
android:layout_height=
"24dp"
android:height=
"24dp"
android:checked=
"false"
app:switchMinWidth=
"48dp"
/>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout-v23/estate_card_viewholder.xml
View file @
e95ce74e
...
@@ -4,7 +4,11 @@
...
@@ -4,7 +4,11 @@
android:layout_width=
"284dp"
android:layout_width=
"284dp"
android:layout_height=
"189dp"
android:layout_height=
"189dp"
android:layout_margin=
"16dp"
android:layout_margin=
"16dp"
app:cardElevation=
"0dp"
app:cardElevation=
"8dp"
app:cardMaxElevation=
"12dp"
android:padding=
"16dp"
app:cardCornerRadius=
"4dp"
app:cardForegroundColor=
"#00000000"
app:cardForegroundColor=
"#00000000"
app:cardPreventCornerOverlap=
"false"
app:cardPreventCornerOverlap=
"false"
app:cardUseCompatPadding=
"false"
>
app:cardUseCompatPadding=
"false"
>
...
...
app/src/main/res/layout/activity_main.xml
View file @
e95ce74e
...
@@ -127,7 +127,7 @@
...
@@ -127,7 +127,7 @@
android:fitsSystemWindows=
"true"
android:fitsSystemWindows=
"true"
android:visibility=
"gone"
android:visibility=
"gone"
app:elevation=
"0dp"
app:elevation=
"0dp"
app:itemBackground=
"@color/color
OpacityBackgroundInv
"
app:itemBackground=
"@color/color
Primary
"
app:itemHorizontalTranslationEnabled=
"false"
app:itemHorizontalTranslationEnabled=
"false"
app:itemIconTint=
"@drawable/bottom_navigation_icon_selector"
app:itemIconTint=
"@drawable/bottom_navigation_icon_selector"
app:labelVisibilityMode=
"unlabeled"
app:labelVisibilityMode=
"unlabeled"
...
...
app/src/main/res/layout/album_header_preview_viewholder.xml
View file @
e95ce74e
...
@@ -35,7 +35,6 @@
...
@@ -35,7 +35,6 @@
android:layout_marginTop=
"32dp"
android:layout_marginTop=
"32dp"
android:layout_marginBottom=
"4dp"
android:layout_marginBottom=
"4dp"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
android:text=
"Дом №1"
android:textAlignment=
"center"
/>
android:textAlignment=
"center"
/>
<com.google.android.material.textview.MaterialTextView
<com.google.android.material.textview.MaterialTextView
...
@@ -49,7 +48,6 @@
...
@@ -49,7 +48,6 @@
android:gravity=
"center"
android:gravity=
"center"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
android:maxLines=
"1"
android:maxLines=
"1"
android:text=
"14 декабря 2019г"
android:textAlignment=
"center"
/>
android:textAlignment=
"center"
/>
<FrameLayout
<FrameLayout
...
...
app/src/main/res/layout/album_preview_card_viewholder.xml
View file @
e95ce74e
...
@@ -4,9 +4,11 @@
...
@@ -4,9 +4,11 @@
android:layout_width=
"142dp"
android:layout_width=
"142dp"
android:layout_height=
"94dp"
android:layout_height=
"94dp"
android:layout_margin=
"16dp"
android:layout_margin=
"16dp"
android:padding=
"8dp"
app:cardCornerRadius=
"4dp"
app:cardElevation=
"4dp"
app:cardElevation=
"4dp"
app:cardMaxElevation=
"8dp"
app:cardForegroundColor=
"#00000000"
app:cardForegroundColor=
"#00000000"
app:cardMaxElevation=
"6dp"
app:cardPreventCornerOverlap=
"false"
app:cardPreventCornerOverlap=
"false"
app:cardUseCompatPadding=
"false"
app:cardUseCompatPadding=
"false"
app:contentPadding=
"8dp"
>
app:contentPadding=
"8dp"
>
...
@@ -34,7 +36,6 @@
...
@@ -34,7 +36,6 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"32dp"
android:layout_marginTop=
"32dp"
android:layout_marginBottom=
"4dp"
android:layout_marginBottom=
"4dp"
android:text=
"Дом №1"
android:textAlignment=
"center"
/>
android:textAlignment=
"center"
/>
<com.google.android.material.textview.MaterialTextView
<com.google.android.material.textview.MaterialTextView
...
@@ -47,7 +48,6 @@
...
@@ -47,7 +48,6 @@
android:layout_marginEnd=
"8dp"
android:layout_marginEnd=
"8dp"
android:gravity=
"center"
android:gravity=
"center"
android:maxLines=
"1"
android:maxLines=
"1"
android:text=
"14 декабря 2019г"
android:textAlignment=
"center"
/>
android:textAlignment=
"center"
/>
<FrameLayout
<FrameLayout
...
...
app/src/main/res/layout/albums_screen.xml
View file @
e95ce74e
...
@@ -37,7 +37,8 @@
...
@@ -37,7 +37,8 @@
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_height=
"0dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:background=
"@color/colorOpacityBackground"
>
android:background=
"@color/colorOpacityBackground"
>
<LinearLayout
<LinearLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
...
app/src/main/res/layout/bell_switch_view.xml
View file @
e95ce74e
...
@@ -7,6 +7,7 @@
...
@@ -7,6 +7,7 @@
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<com.google.android.material.switchmaterial.SwitchMaterial
<com.google.android.material.switchmaterial.SwitchMaterial
style=
"@style/Widget.MaterialComponents.CompoundButton.Switch.BellSwitchStyle"
android:id=
"@+id/switch1"
android:id=
"@+id/switch1"
android:layout_width=
"48dp"
android:layout_width=
"48dp"
android:layout_height=
"24dp"
android:layout_height=
"24dp"
...
...
app/src/main/res/layout/deal_card_viewholder.xml
View file @
e95ce74e
...
@@ -43,7 +43,7 @@
...
@@ -43,7 +43,7 @@
android:layout_marginStart=
"16dp"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"16dp"
android:layout_marginTop=
"16dp"
android:layout_marginEnd=
"16dp"
android:layout_marginEnd=
"16dp"
android:text=
"
КВАРТИРА\n№452
"
/>
android:text=
"
\n
"
/>
<include
<include
layout=
"@layout/horizontal_divider"
layout=
"@layout/horizontal_divider"
...
@@ -139,8 +139,7 @@
...
@@ -139,8 +139,7 @@
android:layout_marginEnd=
"16dp"
android:layout_marginEnd=
"16dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:gravity=
"bottom|end"
android:gravity=
"bottom|end"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
/>
android:text=
"5 165 301 ₽"
/>
</LinearLayout>
</LinearLayout>
...
@@ -173,8 +172,7 @@
...
@@ -173,8 +172,7 @@
android:layout_marginEnd=
"16dp"
android:layout_marginEnd=
"16dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:gravity=
"bottom|end"
android:gravity=
"bottom|end"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
/>
android:text=
"1 332 543 ₽"
/>
</LinearLayout>
</LinearLayout>
...
@@ -207,8 +205,7 @@
...
@@ -207,8 +205,7 @@
android:layout_marginEnd=
"16dp"
android:layout_marginEnd=
"16dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:gravity=
"bottom|end"
android:gravity=
"bottom|end"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
/>
android:text=
"32 543 ₽"
/>
</LinearLayout>
</LinearLayout>
<include
<include
...
...
app/src/main/res/layout/deal_screen.xml
View file @
e95ce74e
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
android:layout_marginStart=
"16dp"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"16dp"
android:layout_marginTop=
"16dp"
android:layout_marginEnd=
"16dp"
android:layout_marginEnd=
"16dp"
android:text=
"
КВАРТИРА\n№452
"
/>
android:text=
"
\n
"
/>
<include
<include
layout=
"@layout/horizontal_divider"
layout=
"@layout/horizontal_divider"
...
@@ -138,8 +138,7 @@
...
@@ -138,8 +138,7 @@
android:layout_marginEnd=
"16dp"
android:layout_marginEnd=
"16dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:gravity=
"bottom|end"
android:gravity=
"bottom|end"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
/>
android:text=
"5 165 301 ₽"
/>
</LinearLayout>
</LinearLayout>
<include
<include
...
@@ -178,8 +177,7 @@
...
@@ -178,8 +177,7 @@
android:layout_marginEnd=
"16dp"
android:layout_marginEnd=
"16dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:gravity=
"bottom|end"
android:gravity=
"bottom|end"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
/>
android:text=
"1 332 543 ₽"
/>
</LinearLayout>
</LinearLayout>
...
@@ -219,8 +217,7 @@
...
@@ -219,8 +217,7 @@
android:layout_marginEnd=
"16dp"
android:layout_marginEnd=
"16dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:gravity=
"bottom|end"
android:gravity=
"bottom|end"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
/>
android:text=
"32 543 ₽"
/>
</LinearLayout>
</LinearLayout>
...
...
app/src/main/res/layout/estate_card_viewholder.xml
deleted
100644 → 0
View file @
9c1dc92c
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_width=
"284dp"
android:layout_height=
"189dp"
android:layout_margin=
"16dp"
app:cardElevation=
"4dp"
app:cardMaxElevation=
"8dp"
app:cardForegroundColor=
"#00000000"
app:cardPreventCornerOverlap=
"false"
app:cardUseCompatPadding=
"false"
>
<com.biganto.visual.roompark.util.view_utils.image_view.RoundedImageView
android:id=
"@+id/preview"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:adjustViewBounds=
"true"
android:background=
"@drawable/default_image_placeholder"
android:cropToPadding=
"true"
android:foreground=
"@color/colorOpacityBackground"
android:scaleType=
"centerCrop"
app:image_corner_radius=
"4dp"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<com.google.android.material.textview.MaterialTextView
android:id=
"@+id/card_title"
style=
"@style/Header_TextView.Inverted_Header"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"64dp"
android:layout_marginBottom=
"4dp"
android:text=
"Дом №1"
android:textAlignment=
"center"
/>
<com.google.android.material.textview.MaterialTextView
android:id=
"@+id/textView6"
style=
"@style/Common_Text.Inverted"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:text=
"Последнее обновление"
android:textAlignment=
"center"
/>
<com.google.android.material.textview.MaterialTextView
android:id=
"@+id/card_updated"
style=
"@style/Accent_Minor_TextView.DatePlaceHolder"
android:layout_width=
"match_parent"
android:layout_height=
"24dp"
android:layout_marginStart=
"64dp"
android:layout_marginTop=
"4dp"
android:layout_marginEnd=
"64dp"
android:gravity=
"center"
android:maxLines=
"1"
android:text=
"14 декабря 2019г"
android:textAlignment=
"center"
/>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
</FrameLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
\ No newline at end of file
app/src/main/res/layout/favorite_card_viewholder.xml
View file @
e95ce74e
...
@@ -47,7 +47,7 @@
...
@@ -47,7 +47,7 @@
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:layout_marginTop=
"16dp"
android:text=
"
КВАРТИРА\n№ 452
"
android:text=
"
\n
"
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/feed_date_text_view3"
/>
app:layout_constraintTop_toBottomOf=
"@+id/feed_date_text_view3"
/>
...
...
app/src/main/res/layout/feed_direct_viewholder.xml
View file @
e95ce74e
...
@@ -74,7 +74,6 @@
...
@@ -74,7 +74,6 @@
android:layout_marginStart=
"8dp"
android:layout_marginStart=
"8dp"
android:layout_marginTop=
"8dp"
android:layout_marginTop=
"8dp"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
android:text=
"В «РУМЯНЦЕВО-ПАРК» ПРИСТУПИЛИ К МОНТАЖУ ОКОННЫХ БЛОКОВ"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"@+id/guideline"
app:layout_constraintStart_toStartOf=
"@+id/guideline"
...
...
app/src/main/res/layout/feed_preview_viewholder.xml
View file @
e95ce74e
...
@@ -44,7 +44,6 @@
...
@@ -44,7 +44,6 @@
android:layout_marginStart=
"8dp"
android:layout_marginStart=
"8dp"
android:layout_marginTop=
"8dp"
android:layout_marginTop=
"8dp"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
android:text=
"22 / 02 / 2019"
android:visibility=
"visible"
android:visibility=
"visible"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toEndOf=
"@+id/feed_read"
app:layout_constraintStart_toEndOf=
"@+id/feed_read"
...
@@ -58,7 +57,6 @@
...
@@ -58,7 +57,6 @@
android:layout_marginStart=
"8dp"
android:layout_marginStart=
"8dp"
android:layout_marginTop=
"4dp"
android:layout_marginTop=
"4dp"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
android:text=
"В «РУМЯНЦЕВО-ПАРК» ПРИСТУПИЛИ К МОНТАЖУ ОКОННЫХ БЛОКОВ"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"@+id/guideline"
app:layout_constraintStart_toStartOf=
"@+id/guideline"
...
...
app/src/main/res/layout/feed_read_screen.xml
View file @
e95ce74e
...
@@ -29,8 +29,7 @@
...
@@ -29,8 +29,7 @@
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:paddingStart=
"16dp"
android:paddingStart=
"16dp"
android:paddingEnd=
"16dp"
android:paddingEnd=
"16dp"
/>
android:text=
"В ЖК «РУМЯНЦЕВО-ПАРК» ИПОТЕЧНАЯ СТАВКА - 6,5%"
/>
<androidx.recyclerview.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/articleBodyRecyclerView"
android:id=
"@+id/articleBodyRecyclerView"
...
...
app/src/main/res/layout/feed_viewholder.xml
View file @
e95ce74e
...
@@ -45,7 +45,6 @@
...
@@ -45,7 +45,6 @@
android:layout_marginTop=
"8dp"
android:layout_marginTop=
"8dp"
android:layout_marginEnd=
"32dp"
android:layout_marginEnd=
"32dp"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
android:text=
"22 / 02 / 2019"
android:visibility=
"visible"
android:visibility=
"visible"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintHorizontal_bias=
"0.0"
app:layout_constraintHorizontal_bias=
"0.0"
...
@@ -61,7 +60,6 @@
...
@@ -61,7 +60,6 @@
android:layout_marginEnd=
"32dp"
android:layout_marginEnd=
"32dp"
android:includeFontPadding=
"false"
android:includeFontPadding=
"false"
android:maxLines=
"3"
android:maxLines=
"3"
android:text=
"В «РУМЯНЦЕВО-ПАРК» ПРИСТУПИЛИ К МОН ТАЖУ dadasdasd a 22ЫХ БЛОКОВ"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toEndOf=
"@+id/guideline"
app:layout_constraintStart_toEndOf=
"@+id/guideline"
...
...
app/src/main/res/layout/flat_plan_type_selector_view.xml
View file @
e95ce74e
...
@@ -97,7 +97,7 @@
...
@@ -97,7 +97,7 @@
<include
<include
android:id=
"@+id/sizes_switcher"
android:id=
"@+id/sizes_switcher"
layout=
"@layout/
bell
_switch_view"
layout=
"@layout/
default
_switch_view"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"end|center_vertical"
android:layout_gravity=
"end|center_vertical"
...
@@ -140,7 +140,7 @@
...
@@ -140,7 +140,7 @@
<include
<include
android:id=
"@+id/furniture_switcher"
android:id=
"@+id/furniture_switcher"
layout=
"@layout/
bell
_switch_view"
layout=
"@layout/
default
_switch_view"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"end|center_vertical"
android:layout_gravity=
"end|center_vertical"
...
@@ -183,7 +183,7 @@
...
@@ -183,7 +183,7 @@
<include
<include
android:id=
"@+id/electricity_switcher"
android:id=
"@+id/electricity_switcher"
layout=
"@layout/
bell
_switch_view"
layout=
"@layout/
default
_switch_view"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"end|center_vertical"
android:layout_gravity=
"end|center_vertical"
...
@@ -227,7 +227,7 @@
...
@@ -227,7 +227,7 @@
<include
<include
android:id=
"@+id/walls_switcher"
android:id=
"@+id/walls_switcher"
layout=
"@layout/
bell
_switch_view"
layout=
"@layout/
default
_switch_view"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"end|center_vertical"
android:layout_gravity=
"end|center_vertical"
...
...
app/src/main/res/layout/info_ceil_view.xml
View file @
e95ce74e
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
android:id=
"@+id/info_ceil_header"
android:id=
"@+id/info_ceil_header"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"Цена за м²"
/>
/>
<com.google.android.material.textview.MaterialTextView
<com.google.android.material.textview.MaterialTextView
style=
"@style/Common_Text.Default"
style=
"@style/Common_Text.Default"
...
@@ -17,5 +17,5 @@
...
@@ -17,5 +17,5 @@
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"4dp"
android:layout_marginTop=
"4dp"
android:text=
"165 301 ₽"
/>
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/photo_viewer.xml
View file @
e95ce74e
...
@@ -22,16 +22,18 @@
...
@@ -22,16 +22,18 @@
<ImageView
<ImageView
android:id=
"@+id/close_current_button"
android:id=
"@+id/close_current_button"
android:layout_width=
"
32
dp"
android:layout_width=
"
56
dp"
android:layout_height=
"
32
dp"
android:layout_height=
"
64
dp"
android:layout_alignParentTop=
"true"
android:layout_alignParentTop=
"true"
android:layout_alignParentEnd=
"true"
android:layout_alignParentEnd=
"true"
android:layout_marginTop=
"
16
dp"
android:layout_marginTop=
"
0
dp"
android:layout_marginEnd=
"
8
dp"
android:layout_marginEnd=
"
0
dp"
android:clickable=
"true"
android:clickable=
"true"
android:contentDescription=
"@string/content_description_close"
android:contentDescription=
"@string/content_description_close"
android:focusable=
"true"
android:focusable=
"true"
android:focusableInTouchMode=
"true"
android:focusableInTouchMode=
"false"
android:padding=
"16dp"
android:paddingEnd=
"8dp"
android:scaleType=
"fitXY"
android:scaleType=
"fitXY"
android:src=
"@drawable/ic_close_circled"
/>
android:src=
"@drawable/ic_close_circled"
/>
...
...
app/src/main/res/layout/progress_status_title_vertical.xml
View file @
e95ce74e
...
@@ -22,8 +22,7 @@
...
@@ -22,8 +22,7 @@
android:layout_marginStart=
"16dp"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"8dp"
android:layout_marginTop=
"8dp"
android:layout_marginBottom=
"8dp"
android:layout_marginBottom=
"8dp"
android:orientation=
"vertical"
android:orientation=
"vertical"
>
android:text=
"Договор готовится для подачи на гос. регистрацию b,kf,kf,fk"
>
</com.google.android.material.textview.MaterialTextView>
</com.google.android.material.textview.MaterialTextView>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/status_layout_toolbar.xml
View file @
e95ce74e
...
@@ -44,7 +44,6 @@
...
@@ -44,7 +44,6 @@
android:layout_marginEnd=
"8dp"
android:layout_marginEnd=
"8dp"
android:ellipsize=
"end"
android:ellipsize=
"end"
android:fitsSystemWindows=
"true"
android:fitsSystemWindows=
"true"
android:text=
"СВОБОДНА"
app:layout_constraintBottom_toBottomOf=
"@+id/status_icon"
app:layout_constraintBottom_toBottomOf=
"@+id/status_icon"
app:layout_constraintEnd_toStartOf=
"@+id/back_cross"
app:layout_constraintEnd_toStartOf=
"@+id/back_cross"
app:layout_constraintHorizontal_bias=
"0.0"
app:layout_constraintHorizontal_bias=
"0.0"
...
...
app/src/main/res/layout/text_description_viewholder.xml
View file @
e95ce74e
...
@@ -12,8 +12,7 @@
...
@@ -12,8 +12,7 @@
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:gravity=
"start|center_vertical"
android:gravity=
"start|center_vertical"
/>
android:text=
"блабла"
/>
<com.google.android.material.textview.MaterialTextView
<com.google.android.material.textview.MaterialTextView
android:id=
"@+id/descriptionText"
android:id=
"@+id/descriptionText"
...
...
app/src/main/res/values/styles.xml
View file @
e95ce74e
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
<item
name=
"colorAccent"
>
@color/colorAccent
</item>
<item
name=
"colorAccent"
>
@color/colorAccent
</item>
<item
name=
"materialCardViewStyle"
>
@style/Widget.Biganto.MaterialCardView
</item>
<item
name=
"materialCardViewStyle"
>
@style/Widget.Biganto.MaterialCardView
</item>
<item
name=
"switchStyle"
>
@style/Widget.MaterialComponents.CompoundButton.Switch.BellSwitchStyle
</item
>
<!-- <item name="switchStyle">@style/Widget.MaterialComponents.CompoundButton.Switch.BellSwitchStyle</item>--
>
<item
name=
"colorControlActivated"
>
@color/colorAccent
</item>
<item
name=
"colorControlActivated"
>
@color/colorAccent
</item>
<item
name=
"colorControlHighlight"
>
@color/colorAccent
</item>
<item
name=
"colorControlHighlight"
>
@color/colorAccent
</item>
<item
name=
"colorControlNormal"
>
@color/colorAccent
</item>
<item
name=
"colorControlNormal"
>
@color/colorAccent
</item>
...
@@ -43,6 +43,13 @@
...
@@ -43,6 +43,13 @@
<item
name=
"trackTint"
>
@drawable/bell_switch_track_tint
</item>
<item
name=
"trackTint"
>
@drawable/bell_switch_track_tint
</item>
</style>
</style>
<style
name=
"Widget.MaterialComponents.CompoundButton.Switch.DefaultSwitchStyle"
>
<item
name=
"track"
>
@drawable/def_switch_track
</item>
<item
name=
"android:thumb"
>
@drawable/bell_switcher
</item>
<item
name=
"thumbTint"
>
@color/colorPrimaryDark
</item>
<item
name=
"trackTint"
>
@drawable/bell_switch_track_tint
</item>
</style>
<style
name=
"Widget.Biganto.MaterialCardView"
parent=
"Widget.MaterialComponents.CardView"
>
<style
name=
"Widget.Biganto.MaterialCardView"
parent=
"Widget.MaterialComponents.CardView"
>
<item
name=
"cardUseCompatPadding"
>
false
</item>
<item
name=
"cardUseCompatPadding"
>
false
</item>
<item
name=
"strokeWidth"
>
0dp
</item>
<item
name=
"strokeWidth"
>
0dp
</item>
...
...
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