Skip to content
This repository was archived by the owner on Feb 17, 2020. It is now read-only.

Commit 7e2aca3

Browse files
committed
Convert Favourites to a ConstraintLayout
1 parent 578e593 commit 7e2aca3

2 files changed

Lines changed: 107 additions & 82 deletions

File tree

app/src/main/java/net/squanchy/favorites/FavoritesPageView.kt

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package net.squanchy.favorites
22

33
import android.content.Context
4-
import android.support.design.widget.CoordinatorLayout
4+
import android.support.constraint.ConstraintLayout
55
import android.util.AttributeSet
66
import android.view.MenuItem
77
import androidx.view.isVisible
@@ -10,6 +10,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
1010
import io.reactivex.disposables.CompositeDisposable
1111
import io.reactivex.functions.BiFunction
1212
import io.reactivex.schedulers.Schedulers
13+
import kotlinx.android.synthetic.main.merge_no_favorites_view.view.*
1314
import kotlinx.android.synthetic.main.view_page_favorites.view.*
1415
import net.squanchy.R
1516
import net.squanchy.analytics.Analytics
@@ -26,7 +27,7 @@ class FavoritesPageView @JvmOverloads constructor(
2627
context: Context?,
2728
attrs: AttributeSet? = null,
2829
defStyleAttr: Int = 0
29-
) : CoordinatorLayout(context, attrs, defStyleAttr), Loadable {
30+
) : ConstraintLayout(context, attrs, defStyleAttr), Loadable {
3031

3132
private lateinit var favoritesService: FavoritesService
3233
private lateinit var navigator: Navigator
@@ -35,10 +36,12 @@ class FavoritesPageView @JvmOverloads constructor(
3536
private val disposable = CompositeDisposable()
3637

3738
init {
38-
with(favoritesComponent(context.unwrapToActivityContext())) {
39-
favoritesService = favoritesService()
40-
navigator = navigator()
41-
analytics = analytics()
39+
if (!isInEditMode) {
40+
with(favoritesComponent(context.unwrapToActivityContext())) {
41+
favoritesService = favoritesService()
42+
navigator = navigator()
43+
analytics = analytics()
44+
}
4245
}
4346
}
4447

@@ -98,8 +101,9 @@ class FavoritesPageView @JvmOverloads constructor(
98101
private fun showFavorites(favorites: List<FavoritesItem>) {
99102
favoritesListView.updateWith(favorites, ::navigateToEventDetails)
100103
favoritesListView.isVisible = true
101-
emptyViewSignedIn.isVisible = false
104+
progressBar.isVisible = false
102105
emptyViewSignedOut.isVisible = false
106+
emptyViewSignedIn.isVisible = false
103107
}
104108

105109
private fun navigateToEventDetails(event: Event) {
@@ -108,17 +112,17 @@ class FavoritesPageView @JvmOverloads constructor(
108112
}
109113

110114
private fun promptToSign() {
111-
emptyViewSignedOut.isVisible = true
112115
favoritesListView.isVisible = false
113116
progressBar.isVisible = false
117+
emptyViewSignedOut.isVisible = true
114118
emptyViewSignedIn.isVisible = false
115119
}
116120

117121
private fun promptToFavorite() {
118-
emptyViewSignedIn.isVisible = true
119122
favoritesListView.isVisible = false
120123
progressBar.isVisible = false
121124
emptyViewSignedOut.isVisible = false
125+
emptyViewSignedIn.isVisible = true
122126
}
123127

124128
private fun showSignIn() {

app/src/main/res/layout/view_page_favorites.xml

Lines changed: 94 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -9,88 +9,109 @@
99
tools:context="net.squanchy.home.HomeActivity">
1010

1111
<android.support.design.widget.AppBarLayout
12+
android:id="@+id/appBarLayout"
1213
style="@style/Squanchy.Appbar"
1314
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
14-
android:layout_width="match_parent"
15-
android:layout_height="wrap_content">
15+
android:layout_width="@dimen/match_constraint"
16+
android:layout_height="wrap_content"
17+
app:layout_constraintStart_toStartOf="parent"
18+
app:layout_constraintTop_toTopOf="parent"
19+
app:layout_constraintEnd_toEndOf="parent">
1620

1721
<android.support.v7.widget.Toolbar
1822
android:id="@+id/toolbar"
1923
android:layout_width="match_parent"
20-
android:layout_height="?attr/actionBarSize" />
24+
android:layout_height="wrap_content" />
2125

2226
</android.support.design.widget.AppBarLayout>
2327

24-
<FrameLayout
25-
android:layout_width="match_parent"
26-
android:layout_height="match_parent"
27-
android:clipChildren="false"
28-
android:clipToPadding="false"
29-
app:layout_behavior="@string/appbar_scrolling_view_behavior">
30-
31-
<net.squanchy.favorites.view.FavoritesSignedInEmptyLayout
32-
android:id="@+id/emptyViewSignedIn"
33-
android:layout_width="match_parent"
34-
android:layout_height="wrap_content"
35-
android:layout_gravity="center"
36-
android:layout_marginStart="@dimen/favorites_empty_margin_horizontal"
37-
android:layout_marginEnd="@dimen/favorites_empty_margin_horizontal"
38-
android:visibility="gone"
39-
tools:visibility="visible">
40-
41-
<include layout="@layout/merge_no_favorites_view" />
42-
43-
</net.squanchy.favorites.view.FavoritesSignedInEmptyLayout>
44-
45-
<LinearLayout
46-
android:id="@+id/emptyViewSignedOut"
47-
android:layout_width="match_parent"
48-
android:layout_height="wrap_content"
49-
android:layout_gravity="center"
50-
android:layout_marginStart="@dimen/favorites_empty_margin_horizontal"
51-
android:layout_marginEnd="@dimen/favorites_empty_margin_horizontal"
52-
android:clipChildren="false"
53-
android:clipToPadding="false"
54-
android:gravity="center"
55-
android:orientation="vertical"
56-
android:visibility="gone">
57-
58-
<ImageView
59-
android:layout_width="wrap_content"
60-
android:layout_height="wrap_content"
61-
android:layout_marginBottom="@dimen/favorites_empty_image_margin_bottom"
62-
android:contentDescription="@null"
63-
android:scaleType="fitCenter"
64-
app:srcCompat="@drawable/ic_favorites_empty_not_signed_in" />
65-
66-
<TextView
67-
style="@style/Favorite.Empty.Blurb"
68-
android:layout_width="wrap_content"
69-
android:layout_height="wrap_content"
70-
android:layout_marginBottom="@dimen/favorites_empty_blurb_margin_bottom"
71-
android:text="@string/favorites_empty_state_signed_out_blurb" />
72-
73-
<Button
74-
android:id="@+id/emptyViewSignedOutButton"
75-
style="@style/Favorite.Empty.Cta"
76-
android:layout_width="wrap_content"
77-
android:layout_height="@dimen/favorites_empty_cta_height"
78-
android:text="@string/favorites_empty_state_signed_out_cta" />
79-
80-
</LinearLayout>
81-
82-
<ProgressBar
83-
android:id="@+id/progressBar"
28+
<net.squanchy.favorites.view.FavoritesSignedInEmptyLayout
29+
android:id="@+id/emptyViewSignedIn"
30+
android:layout_width="wrap_content"
31+
android:layout_height="wrap_content"
32+
android:layout_gravity="center"
33+
android:layout_marginStart="@dimen/favorites_empty_margin_horizontal"
34+
android:layout_marginEnd="@dimen/favorites_empty_margin_horizontal"
35+
android:visibility="gone"
36+
app:layout_constraintBottom_toBottomOf="parent"
37+
app:layout_constraintTop_toBottomOf="@+id/appBarLayout"
38+
app:layout_constraintEnd_toEndOf="parent"
39+
app:layout_constraintStart_toStartOf="parent">
40+
41+
<include
42+
layout="@layout/merge_no_favorites_view"
8443
android:layout_width="wrap_content"
85-
android:layout_height="wrap_content"
86-
android:layout_gravity="center"
87-
android:visibility="gone" />
88-
89-
<net.squanchy.favorites.view.FavoritesListView
90-
android:id="@+id/favoritesListView"
91-
android:layout_width="match_parent"
92-
android:layout_height="match_parent" />
93-
94-
</FrameLayout>
44+
android:layout_height="wrap_content" />
45+
46+
</net.squanchy.favorites.view.FavoritesSignedInEmptyLayout>
47+
48+
<android.support.constraint.Group
49+
android:id="@+id/emptyViewSignedOut"
50+
android:layout_width="wrap_content"
51+
android:layout_height="wrap_content"
52+
android:visibility="gone"
53+
app:constraint_referenced_ids="imageView,textView,emptyViewSignedOutButton" />
54+
55+
<ImageView
56+
android:id="@+id/imageView"
57+
android:layout_width="wrap_content"
58+
android:layout_height="wrap_content"
59+
android:layout_marginBottom="@dimen/favorites_empty_image_margin_bottom"
60+
android:contentDescription="@null"
61+
android:scaleType="fitCenter"
62+
app:layout_constraintStart_toStartOf="parent"
63+
app:layout_constraintTop_toBottomOf="@+id/appBarLayout"
64+
app:layout_constraintEnd_toEndOf="parent"
65+
app:layout_constraintBottom_toTopOf="@+id/textView"
66+
app:layout_constraintVertical_chainStyle="packed"
67+
app:srcCompat="@drawable/ic_favorites_empty_not_signed_in" />
68+
69+
<TextView
70+
android:id="@+id/textView"
71+
style="@style/Favorite.Empty.Blurb"
72+
android:layout_width="wrap_content"
73+
android:layout_height="wrap_content"
74+
android:layout_marginBottom="@dimen/favorites_empty_blurb_margin_bottom"
75+
android:text="@string/favorites_empty_state_signed_out_blurb"
76+
android:paddingStart="@dimen/favorites_empty_margin_horizontal"
77+
android:paddingEnd="@dimen/favorites_empty_margin_horizontal"
78+
app:layout_constraintStart_toStartOf="parent"
79+
app:layout_constraintTop_toBottomOf="@+id/imageView"
80+
app:layout_constraintEnd_toEndOf="parent"
81+
app:layout_constraintBottom_toTopOf="@+id/emptyViewSignedOutButton"
82+
app:layout_constraintVertical_chainStyle="packed" />
83+
84+
<Button
85+
android:id="@+id/emptyViewSignedOutButton"
86+
style="@style/Favorite.Empty.Cta"
87+
android:layout_width="wrap_content"
88+
android:layout_height="wrap_content"
89+
android:text="@string/favorites_empty_state_signed_out_cta"
90+
app:layout_constraintStart_toStartOf="@+id/textView"
91+
app:layout_constraintTop_toBottomOf="@+id/textView"
92+
app:layout_constraintBottom_toBottomOf="parent"
93+
app:layout_constraintEnd_toEndOf="@+id/textView" />
94+
95+
<ProgressBar
96+
android:id="@+id/progressBar"
97+
android:layout_width="wrap_content"
98+
android:layout_height="wrap_content"
99+
android:visibility="visible"
100+
app:layout_constraintStart_toStartOf="parent"
101+
app:layout_constraintTop_toBottomOf="@+id/appBarLayout"
102+
app:layout_constraintEnd_toEndOf="parent"
103+
app:layout_constraintBottom_toBottomOf="parent"
104+
tools:visibility="gone"/>
105+
106+
<net.squanchy.favorites.view.FavoritesListView
107+
android:id="@+id/favoritesListView"
108+
android:layout_width="@dimen/match_constraint"
109+
android:layout_height="@dimen/match_constraint"
110+
android:visibility="gone"
111+
app:layout_constraintStart_toStartOf="parent"
112+
app:layout_constraintTop_toBottomOf="@+id/appBarLayout"
113+
app:layout_constraintEnd_toEndOf="parent"
114+
app:layout_constraintBottom_toBottomOf="parent"
115+
tools:visibility="visible"/>
95116

96117
</net.squanchy.favorites.FavoritesPageView>

0 commit comments

Comments
 (0)