1
0
Fork 0
mirror of https://gitlab.com/dadada_/uuidgen.git synced 2025-06-07 09:33: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)
// 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)
}

View file

@ -23,15 +23,4 @@ class MainActivity : AppCompatActivity(), CoroutineScope by MainScope() {
menuInflater.inflate(R.menu.menu_main, menu)
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.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.*
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.MainScope
@ -32,15 +32,40 @@ class UuidGenFragment : Fragment(), CoroutineScope by MainScope() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
setHasOptionsMenu(true)
val binding: UuidGenFragmentBinding =
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 ->
launch { genUuid(view) }
}
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) {
val uuid = viewModel.genUuid()
if (uuid != null) {

View file

@ -1,15 +1,16 @@
package li.dadada.uuidgen.ui
import android.content.ClipboardManager
import android.content.Context
import android.content.Context.CLIPBOARD_SERVICE
import android.os.Bundle
import android.view.*
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import li.dadada.uuidgen.R
import li.dadada.uuidgen.model.Uuid
@ -40,6 +41,8 @@ class UuidListFragment : Fragment() {
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
setHasOptionsMenu(true)
binding = DataBindingUtil.inflate(inflater, R.layout.uuid_list_fragment, container, false)
binding.listUuids.apply {
adapter = uuidAdapter
@ -49,10 +52,33 @@ class UuidListFragment : Fragment() {
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?) {
super.onViewCreated(view, savedInstanceState)
val viewModel = ViewModelProvider(this).get(UuidViewModel::class.java)
viewModel.uuidList.observe(viewLifecycleOwner,
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:tools="http://schemas.android.com/tools"
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>

View file

@ -18,4 +18,7 @@
<action android:id="@+id/action_global_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>

View file

@ -5,4 +5,7 @@
<string name="first_fragment_label">UUID List Fragment</string>
<string name="warn_duplicate_uuid">Duplicate UUID. Try again!</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>