Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Standardize styling of the various search icons #297

Merged
merged 4 commits into from
Oct 22, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@ import android.os.Bundle
import android.support.annotation.UiThread
import android.support.v4.content.ContextCompat
import android.view.View
import com.fuzz.rx.bindTo
import com.fuzz.rx.bindToMain
import com.fuzz.rx.defaultThrottle
import com.fuzz.rx.disposedBy
import com.fuzz.rx.*
import com.google.zxing.BarcodeFormat
import com.jakewharton.rxbinding2.view.clicks
import com.jakewharton.rxbinding2.view.visibility
Expand All @@ -21,8 +18,11 @@ import com.jakewharton.rxbinding2.widget.textChanges
import edu.artic.accesscard.barcode.BarcodeEncoder
import edu.artic.analytics.ScreenName
import edu.artic.base.LoadStatus
import edu.artic.base.utils.asDeepLinkIntent
import edu.artic.base.utils.hideSoftKeyboard
import edu.artic.navigation.NavigationConstants
import edu.artic.viewmodel.BaseViewModelFragment
import edu.artic.viewmodel.Navigate
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.rxkotlin.subscribeBy
import kotlinx.android.synthetic.main.fragment_validate_member_information.*
Expand Down Expand Up @@ -120,6 +120,14 @@ class AccessMemberCardFragment : BaseViewModelFragment<AccessMemberCardViewModel
}
}.disposedBy(disposeBag)

searchIcon
.clicks()
.defaultThrottle()
.subscribe {
viewModel.onClickSearch()
}
.disposedBy(disposeBag)

viewModel.selectedCardHolder
.observeOn(AndroidSchedulers.mainThread())
.bindTo(cardHolder.text())
Expand Down Expand Up @@ -161,6 +169,22 @@ class AccessMemberCardFragment : BaseViewModelFragment<AccessMemberCardViewModel
.disposedBy(disposeBag)
}

override fun setupNavigationBindings(viewModel: AccessMemberCardViewModel) {
super.setupNavigationBindings(viewModel)
viewModel.navigateTo
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Identical blocks of code found in 4 locations. Consider refactoring.

.observeOn(AndroidSchedulers.mainThread())
.filterFlatMap({ it is Navigate.Forward }, { (it as Navigate.Forward).endpoint })
.subscribeBy {
when (it) {
AccessMemberCardViewModel.NavigationEndpoint.Search -> {
val intent = NavigationConstants.SEARCH.asDeepLinkIntent()
startActivity(intent)
}
}
}
.disposedBy(navigationDisposeBag)
}

/**
* Generate the barcode using memberID.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ import edu.artic.membership.MemberDataProvider
import edu.artic.membership.MemberInfo
import edu.artic.membership.MemberInfoPreferencesManager
import edu.artic.membership.SOAPMemberInfoResponse
import edu.artic.viewmodel.BaseViewModel
import edu.artic.viewmodel.NavViewViewModel
import edu.artic.viewmodel.Navigate
import io.reactivex.Observable
import io.reactivex.rxkotlin.Observables
import io.reactivex.rxkotlin.subscribeBy
Expand All @@ -39,14 +40,18 @@ class AccessMemberCardViewModel @Inject constructor(
private val service: MemberDataProvider,
private val infoPreferencesManager: MemberInfoPreferencesManager,
private val analyticsTracker: AnalyticsTracker
) : BaseViewModel() {
) : NavViewViewModel<AccessMemberCardViewModel.NavigationEndpoint>() {

sealed class DisplayMode {
object DisplayForm : DisplayMode()
class DisplayAccessCard(val memberID: String) : DisplayMode()
class UpdateForm(val memberID: String, val zipCode: String) : DisplayMode()
}

sealed class NavigationEndpoint {
object Search : NavigationEndpoint()
}

/**
* Emits events for various loading states.
*/
Expand Down Expand Up @@ -213,6 +218,10 @@ class AccessMemberCardViewModel @Inject constructor(
}
}

fun onClickSearch() {
navigateTo.onNext(Navigate.Forward(NavigationEndpoint.Search))
}

/**
* Switch the Cardholder.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,9 @@
android:background="?attr/colorPrimary">

<ImageView
android:contentDescription="@string/search"
android:id="@+id/searchIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginEnd="@dimen/marginTwenty"
android:scaleType="centerCrop"
android:src="@drawable/ic_search_24dp" />
style="@style/Search.SubScreen"
/>

</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
Expand Down
9 changes: 1 addition & 8 deletions audio/src/main/res/layout/fragment_audio_lookup.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,13 @@
>

<ImageView
android:contentDescription="@string/search"
android:id="@+id/searchIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="11dp"
android:layout_marginEnd="@dimen/marginTwenty"
android:background="@drawable/ic_search_background"
android:scaleType="centerCrop"
android:src="@drawable/ic_search_24dp"
app:layout_constrainedHeight="true"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
style="@style/Search.PrimaryScreen"
/>


Expand Down
10 changes: 2 additions & 8 deletions events/src/main/res/layout/fragment_all_events.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,8 @@

<ImageView
android:id="@+id/searchIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginEnd="@dimen/marginTwenty"
android:background="@null"
android:scaleType="centerCrop"
android:contentDescription="@string/search"
android:src="@drawable/ic_search_24dp" />
style="@style/Search.SubScreen"
/>

</android.support.v7.widget.Toolbar>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ package edu.artic.exhibitions

import android.os.Bundle
import android.support.v7.widget.GridLayoutManager
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import com.fuzz.rx.bindToMain
import com.fuzz.rx.defaultThrottle
import com.fuzz.rx.disposedBy
import com.fuzz.rx.filterFlatMap
import com.jakewharton.rxbinding2.view.clicks
import edu.artic.adapter.itemChanges
import edu.artic.adapter.itemClicksWithPosition
import edu.artic.analytics.ScreenName
Expand All @@ -16,6 +16,8 @@ import edu.artic.exhibitions.recyclerview.AllExhibitionsItemDecoration
import edu.artic.navigation.NavigationConstants
import edu.artic.viewmodel.BaseViewModelFragment
import edu.artic.viewmodel.Navigate
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.rxkotlin.subscribeBy
import kotlinx.android.synthetic.main.fragment_all_exhibitions.*
import kotlin.reflect.KClass

Expand All @@ -31,11 +33,6 @@ class AllExhibitionsFragment : BaseViewModelFragment<AllExhibitionsViewModel>()

override val title = R.string.onView

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

Expand All @@ -50,6 +47,16 @@ class AllExhibitionsFragment : BaseViewModelFragment<AllExhibitionsViewModel>()

override fun setupBindings(viewModel: AllExhibitionsViewModel) {
val adapter = (recyclerView.adapter as AllExhibitionsAdapter)

/* Ensure search events go through ok. */
searchIcon
.clicks()
.defaultThrottle()
.subscribe {
viewModel.onClickSearch()
}
.disposedBy(disposeBag)

viewModel.exhibitions
.bindToMain(adapter.itemChanges())
.disposedBy(disposeBag)
Expand All @@ -63,44 +70,22 @@ class AllExhibitionsFragment : BaseViewModelFragment<AllExhibitionsViewModel>()
}

override fun setupNavigationBindings(viewModel: AllExhibitionsViewModel) {
viewModel.navigateTo.subscribe {
when (it) {
is Navigate.Forward -> {
when (it.endpoint) {
viewModel.navigateTo
.observeOn(AndroidSchedulers.mainThread())
.filterFlatMap({ it is Navigate.Forward }, { (it as Navigate.Forward).endpoint })
.subscribeBy {
when (it) {
is AllExhibitionsViewModel.NavigationEndpoint.ExhibitionDetails -> {
val endpoint = it.endpoint as AllExhibitionsViewModel.NavigationEndpoint.ExhibitionDetails
val intent = NavigationConstants.DETAILS.asDeepLinkIntent().apply {
putExtras(ExhibitionDetailFragment.argsBundle(endpoint.exhibition))
putExtras(ExhibitionDetailFragment.argsBundle(it.exhibition))
}
startActivity(intent)
}
AllExhibitionsViewModel.NavigationEndpoint.Search -> {
val intent = NavigationConstants.SEARCH.asDeepLinkIntent()
startActivity(intent)
}
}
}
else -> {

}
}
}.disposedBy(navigationDisposeBag)
}

override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
super.onCreateOptionsMenu(menu, inflater)
inflater?.inflate(R.menu.menu_all_exhibitions, menu)
}

override fun onOptionsItemSelected(item: MenuItem?): Boolean {
item?.let {
when(it.itemId) {
R.id.search -> {
val intent = NavigationConstants.SEARCH.asDeepLinkIntent()
startActivity(intent)
return true
}
else -> {
return super.onOptionsItemSelected(item)
}
}
}
return super.onOptionsItemSelected(item)
}.disposedBy(navigationDisposeBag)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class AllExhibitionsViewModel @Inject constructor(

sealed class NavigationEndpoint {
class ExhibitionDetails(val pos: Int, val exhibition: ArticExhibition) : NavigationEndpoint()
object Search: NavigationEndpoint()
}

val exhibitions: Subject<List<AllExhibitionsCellViewModel>> = BehaviorSubject.create()
Expand All @@ -47,6 +48,10 @@ class AllExhibitionsViewModel @Inject constructor(
.disposedBy(disposeBag)
}

fun onClickSearch() {
navigateTo.onNext(Navigate.Forward(NavigationEndpoint.Search))
}

fun onClickExhibition(position: Int, exhibition: ArticExhibition) {
analyticsTracker.reportEvent(EventCategoryName.Exhibition, AnalyticsAction.OPENED, exhibition.title)
navigateTo.onNext(Navigate.Forward(NavigationEndpoint.ExhibitionDetails(position, exhibition)))
Expand Down
26 changes: 13 additions & 13 deletions exhibitions/src/main/res/layout/fragment_all_exhibitions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,32 @@
android:layout_height="match_parent"
android:animateLayoutChanges="true">

<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:fitsSystemWindows="true"
>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:titleTextColor="@color/white"
android:fitsSystemWindows="true"
app:layout_constraintHeight_max="?attr/actionBarSize"
tools:title="On View"
tools:layout_height="52dp" >

<ImageView
android:id="@+id/searchIcon"
style="@style/Search.SubScreen"
/>

</android.support.design.widget.AppBarLayout>
</android.support.v7.widget.Toolbar>

<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/appBarLayout"
app:layout_constraintTop_toBottomOf="@id/toolbar"
app:layout_constraintBottom_toBottomOf="parent"
tools:listitem="@layout/cell_all_exhibitions_layout"
/>
Expand Down
9 changes: 2 additions & 7 deletions info/src/main/res/layout/fragment_museum_information.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,8 @@

<ImageView
android:id="@+id/searchIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginEnd="@dimen/marginTwenty"
android:contentDescription="@string/search"
android:scaleType="centerCrop"
android:src="@drawable/ic_search_24dp" />
style="@style/Search.SubScreen"
/>

</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,8 @@

<ImageView
android:id="@+id/searchIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginEnd="@dimen/marginTwenty"
android:contentDescription="@string/search"
android:scaleType="centerCrop"
android:src="@drawable/ic_search_24dp" />
style="@style/Search.SubScreen"
/>

</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
Expand Down
Loading