1
0
Fork 0
mirror of https://gitlab.com/dadada_/uuidgen.git synced 2025-06-07 17:43:57 +02:00

Fix navigation

This commit is contained in:
Tim Schubert 2020-11-12 21:13:50 +01:00
parent 5efc5930da
commit ac6967f5a9
Signed by: dadada
GPG key ID: EEB8D1CE62C4DFEA
10 changed files with 97 additions and 25 deletions

View file

@ -31,7 +31,7 @@ class MainActivityTest {
Navigation.setViewNavController(fragment.requireView(), navController) Navigation.setViewNavController(fragment.requireView(), navController)
// Verify that performing a click changes the NavControllers state // Verify that performing a click changes the NavControllers state
onView(ViewMatchers.withId(R.id.action_history)).perform(click()) onView(ViewMatchers.withId(R.id.action_to_history)).perform(click())
} }
assertEquals(navController.currentDestination?.id, R.id.uuid_list_fragment) assertEquals(navController.currentDestination?.id, R.id.uuid_list_fragment)
} }

View file

@ -23,15 +23,4 @@ class MainActivity : AppCompatActivity(), CoroutineScope by MainScope() {
menuInflater.inflate(R.menu.menu_main, menu) menuInflater.inflate(R.menu.menu_main, menu)
return true return true
} }
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_history -> {
findNavController(R.id.nav_host_fragment)
.navigate(R.id.action_global_uuid_list_fragment)
true
}
else -> super.onOptionsItemSelected(item)
}
}
} }

View file

@ -3,12 +3,12 @@ package li.dadada.uuidgen.ui
import android.content.ClipboardManager import android.content.ClipboardManager
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.*
import android.view.View import androidx.appcompat.app.AppCompatActivity
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.MainScope import kotlinx.coroutines.MainScope
@ -32,15 +32,40 @@ class UuidGenFragment : Fragment(), CoroutineScope by MainScope() {
container: ViewGroup?, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View { ): View {
setHasOptionsMenu(true)
val binding: UuidGenFragmentBinding = val binding: UuidGenFragmentBinding =
DataBindingUtil.inflate(inflater, R.layout.uuid_gen_fragment, container, false) DataBindingUtil.inflate(inflater, R.layout.uuid_gen_fragment, container, false)
clipboardManager = inflater.context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager clipboardManager =
inflater.context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
binding.buttonGen.setOnClickListener { view -> binding.buttonGen.setOnClickListener { view ->
launch { genUuid(view) } launch { genUuid(view) }
} }
return binding.root return binding.root
} }
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.menu_create_uuid, menu)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
if (activity is AppCompatActivity) {
(activity as AppCompatActivity).supportActionBar?.title =
getString(R.string.title_generate_uuid)
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_to_history -> {
findNavController().navigate(R.id.action_global_uuid_list_fragment)
true
}
else -> super.onOptionsItemSelected(item)
}
}
private suspend fun genUuid(view: View) { private suspend fun genUuid(view: View) {
val uuid = viewModel.genUuid() val uuid = viewModel.genUuid()
if (uuid != null) { if (uuid != null) {

View file

@ -1,15 +1,16 @@
package li.dadada.uuidgen.ui package li.dadada.uuidgen.ui
import android.content.ClipboardManager import android.content.ClipboardManager
import android.content.Context
import android.content.Context.CLIPBOARD_SERVICE import android.content.Context.CLIPBOARD_SERVICE
import android.os.Bundle import android.os.Bundle
import android.view.*
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import li.dadada.uuidgen.R import li.dadada.uuidgen.R
import li.dadada.uuidgen.model.Uuid import li.dadada.uuidgen.model.Uuid
@ -40,6 +41,8 @@ class UuidListFragment : Fragment() {
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View? { ): View? {
setHasOptionsMenu(true)
binding = DataBindingUtil.inflate(inflater, R.layout.uuid_list_fragment, container, false) binding = DataBindingUtil.inflate(inflater, R.layout.uuid_list_fragment, container, false)
binding.listUuids.apply { binding.listUuids.apply {
adapter = uuidAdapter adapter = uuidAdapter
@ -49,10 +52,33 @@ class UuidListFragment : Fragment() {
return binding.root; return binding.root;
} }
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.menu_list, menu)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
if (activity is AppCompatActivity) {
(activity as AppCompatActivity).supportActionBar?.title =
getString(R.string.title_history)
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_to_creation -> {
findNavController().navigate(R.id.action_global_uuid_gen_fragment)
true
}
else -> super.onOptionsItemSelected(item)
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
val viewModel = ViewModelProvider(this).get(UuidViewModel::class.java) val viewModel = ViewModelProvider(this).get(UuidViewModel::class.java)
viewModel.uuidList.observe(viewLifecycleOwner, viewModel.uuidList.observe(viewLifecycleOwner,
Observer<List<Uuid>> { list -> uuidAdapter.submitList(list) }) Observer<List<Uuid>> { list -> uuidAdapter.submitList(list) })
} }
} }

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M13,7h-2v4L7,11v2h4v4h2v-4h4v-2h-4L13,7zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
</vector>

View file

@ -0,0 +1,10 @@
<?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/action_to_history"
android:icon="@drawable/ic_baseline_history_24"
android:orderInCategory="100"
android:title="@string/action_history"
app:showAsAction="always" />
</menu>

View file

@ -0,0 +1,11 @@
<?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/action_to_creation"
android:icon="@drawable/ic_baseline_add_circle_outline_24"
android:orderInCategory="100"
android:title="@string/action_to_create_uuid"
app:showAsAction="always" />
</menu>

View file

@ -2,10 +2,5 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
tools:context="li.dadada.uuidgen.ui.MainActivity"> tools:context="li.dadada.uuidgen.ui.MainActivity">
<item
android:id="@+id/action_history"
android:orderInCategory="100"
android:title="@string/action_history"
android:icon="@drawable/ic_baseline_history_24"
app:showAsAction="always" />
</menu> </menu>

View file

@ -18,4 +18,7 @@
<action android:id="@+id/action_global_uuid_list_fragment" <action android:id="@+id/action_global_uuid_list_fragment"
app:destination="@id/uuid_list_fragment"/> app:destination="@id/uuid_list_fragment"/>
<action android:id="@+id/action_global_uuid_gen_fragment"
app:destination="@id/uuid_gen_fragment"/>
</navigation> </navigation>

View file

@ -5,4 +5,7 @@
<string name="first_fragment_label">UUID List Fragment</string> <string name="first_fragment_label">UUID List Fragment</string>
<string name="warn_duplicate_uuid">Duplicate UUID. Try again!</string> <string name="warn_duplicate_uuid">Duplicate UUID. Try again!</string>
<string name="action_generate">Generate</string> <string name="action_generate">Generate</string>
<string name="title_history">History</string>
<string name="title_generate_uuid">Generate UUID</string>
<string name="action_to_create_uuid">Go to create UUID</string>
</resources> </resources>