Skip to content

Commit

Permalink
feat: contributing ui (#29)
Browse files Browse the repository at this point in the history
  • Loading branch information
jcaiqueoliveira authored Oct 21, 2019
1 parent 9e3b205 commit 9c2dc64
Show file tree
Hide file tree
Showing 11 changed files with 137 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.jcaique.presentation.contributing

internal object ContributingConst {
const val ANDROID = "https://github.com/jcaiqueoliveira/dialetus"
const val API = "https://github.com/mvfsillva/dialetus-service"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.jcaique.presentation.contributing

internal interface ContributingInteraction {
object OpenAndroid : ContributingInteraction
object OpenWeb : ContributingInteraction
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.jcaique.presentation.contributing

import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.jcaique.presentation.R
import com.jcaique.presentation.utils.dataflow.UnsupportedUserInteraction
import kotlinx.android.synthetic.main.regions_menu_view.*

internal class ContributingNavigation : BottomSheetDialogFragment() {

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.regions_menu_view, container, false)
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)

navigation.setNavigationItemSelectedListener { menuItem ->
when (menuItem.itemId) {
R.id.android -> handleClick(ContributingInteraction.OpenAndroid)
R.id.web -> handleClick(ContributingInteraction.OpenWeb)
}
true
}
}

private fun handleClick(interaction: ContributingInteraction) {
when (interaction) {
ContributingInteraction.OpenAndroid -> navigate(ContributingConst.ANDROID)
ContributingInteraction.OpenWeb -> navigate(ContributingConst.API)
else -> throw UnsupportedUserInteraction
}
}

private fun navigate(url: String) {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
dismiss()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import com.jcaique.presentation.R
import com.jcaique.presentation.contributing.ContributingNavigation
import com.jcaique.presentation.utils.DividerItemDecoration
import com.jcaique.presentation.utils.dataflow.UserInteraction.OpenedScreen
import com.jcaique.presentation.utils.dataflow.UserInteraction.RequestedFreshContent
Expand All @@ -14,7 +15,7 @@ import com.jcaique.presentation.utils.dataflow.ViewState.Failed
import com.jcaique.presentation.utils.dataflow.ViewState.Loading
import com.jcaique.presentation.utils.dataflow.ViewState.Success
import com.jcaique.presentation.utils.selfInject
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.activity_regions.*
import kotlinx.android.synthetic.main.error_state_layout.*
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
Expand All @@ -28,8 +29,9 @@ class RegionsActivity : AppCompatActivity(), KodeinAware {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setContentView(R.layout.activity_regions)
init()
setupBottomBar()
}

private fun init() {
Expand All @@ -43,6 +45,15 @@ class RegionsActivity : AppCompatActivity(), KodeinAware {
}
}

private fun setupBottomBar() {
setSupportActionBar(bar)
val bottom = ContributingNavigation()

bar.setNavigationOnClickListener {
bottom.show(supportFragmentManager, bottom.tag)
}
}

private fun handle(state: ViewState<RegionsPresentation>) {
controlVisibilities(state)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.jcaique.presentation.regions

import androidx.lifecycle.ViewModel
import com.jcaique.domain.regions.RegionsService
import com.jcaique.presentation.utils.dataflow.StateMachine
import com.jcaique.presentation.utils.dataflow.StateTransition
Expand All @@ -10,7 +9,7 @@ import com.jcaique.presentation.utils.dataflow.UserInteraction
internal class RegionsViewModel(
private val service: RegionsService,
private val machine: StateMachine<RegionsPresentation>
) : ViewModel() {
) {

fun bind() = machine.states()

Expand Down
9 changes: 9 additions & 0 deletions presentation/src/main/res/drawable/ic_android.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/black"
android:pathData="M6,18c0,0.55 0.45,1 1,1h1v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L11,19h2v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L16,19h1c0.55,0 1,-0.45 1,-1L18,8L6,8v10zM3.5,8C2.67,8 2,8.67 2,9.5v7c0,0.83 0.67,1.5 1.5,1.5S5,17.33 5,16.5v-7C5,8.67 4.33,8 3.5,8zM20.5,8c-0.83,0 -1.5,0.67 -1.5,1.5v7c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5v-7c0,-0.83 -0.67,-1.5 -1.5,-1.5zM15.53,2.16l1.3,-1.3c0.2,-0.2 0.2,-0.51 0,-0.71 -0.2,-0.2 -0.51,-0.2 -0.71,0l-1.48,1.48C13.85,1.23 12.95,1 12,1c-0.96,0 -1.86,0.23 -2.66,0.63L7.85,0.15c-0.2,-0.2 -0.51,-0.2 -0.71,0 -0.2,0.2 -0.2,0.51 0,0.71l1.31,1.31C6.97,3.26 6,5.01 6,7h12c0,-1.99 -0.97,-3.75 -2.47,-4.84zM10,5L9,5L9,4h1v1zM15,5h-1L14,4h1v1z"/>
</vector>
9 changes: 9 additions & 0 deletions presentation/src/main/res/drawable/ic_code.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/black"
android:pathData="M9.4,16.6L4.8,12l4.6,-4.6L8,6l-6,6 6,6 1.4,-1.4zM14.6,16.6l4.6,-4.6 -4.6,-4.6L16,6l6,6 -6,6 -1.4,-1.4z"/>
</vector>
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,15 @@
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/errorStateView"/>

<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:navigationIcon="@drawable/ic_menu"
app:backgroundTint="@color/colorPrimary"
app:hideOnScroll="true"
app:fabAlignmentMode="end"
/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>
19 changes: 19 additions & 0 deletions presentation/src/main/res/layout/regions_menu_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">


<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:menu="@menu/regions_menu"/>

</androidx.constraintlayout.widget.ConstraintLayout>
13 changes: 13 additions & 0 deletions presentation/src/main/res/menu/regions_menu.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">

<item android:id="@+id/web"
android:icon="@drawable/ic_code"
android:title="@string/menu_contribute_web"
app:showAsAction="ifRoom"/>

<item android:id="@+id/android"
android:icon="@drawable/ic_android"
android:title="@string/menu_android"
app:showAsAction="ifRoom"/>
</menu>
3 changes: 2 additions & 1 deletion presentation/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
<string name="app_name">Dialetus</string>
<string name="text_button_try_again">Tentar novamente</string>
<string name="text_title_error">Ops, algo deu errado.</string>
<string name="menu_contribute">Como contribuir</string>
<string name="menu_contribute_web">Adicionar mais dialetos</string>
<string name="text_description_error">Não conseguimos carregar as regiões</string>
<string name="title_no_events_found">Nenhum dialeto cadastrado</string>
<string name="text_description_no_dialects_found">Não foi encontrado nenhum dialeto ou região.</string>
<string name="menu_android">Contribuir com o aplicativo</string>
</resources>

0 comments on commit 9c2dc64

Please sign in to comment.