From c50f79c273f4d6ce03e6bb71dbd270d925cb0b49 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Fri, 25 Jun 2021 20:33:33 -0700 Subject: [PATCH] Renames EditTraitListFragment to EditTraitsFragment to match the other list fragments. --- .../ui/editmonster/EditTraitListFragment.java | 114 ------------------ .../ui/editmonster/EditTraitsFragment.java | 54 +++------ .../ui/monster/MonsterDetailFragment.java | 2 + .../res/layout/fragment_edit_traits_list.xml | 2 +- .../main/res/navigation/mobile_navigation.xml | 2 +- 5 files changed, 22 insertions(+), 152 deletions(-) delete mode 100644 Android/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitListFragment.java diff --git a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitListFragment.java b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitListFragment.java deleted file mode 100644 index 299d89c..0000000 --- a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitListFragment.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.majinnaibu.monstercards.ui.editmonster; - -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.lifecycle.LiveData; -import androidx.lifecycle.ViewModelProvider; -import androidx.navigation.NavBackStackEntry; -import androidx.navigation.NavController; -import androidx.navigation.NavDirections; -import androidx.navigation.Navigation; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.ItemTouchHelper; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.google.android.material.floatingactionbutton.FloatingActionButton; -import com.majinnaibu.monstercards.R; -import com.majinnaibu.monstercards.data.enums.TraitType; -import com.majinnaibu.monstercards.models.Trait; -import com.majinnaibu.monstercards.ui.shared.MCFragment; -import com.majinnaibu.monstercards.ui.shared.SwipeToDeleteCallback; -import com.majinnaibu.monstercards.utils.Logger; - -import org.jetbrains.annotations.NotNull; - -import java.util.List; - -// TODO: rename to EditTraitsFragment -public class EditTraitListFragment extends MCFragment { - private EditMonsterViewModel mViewModel; - private ViewHolder mHolder; - private TraitType mTraitType; - - - @Override - public void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) { - if (getArguments() != null) { - EditTraitListFragmentArgs args = EditTraitListFragmentArgs.fromBundle(getArguments()); - mTraitType = args.getTraitType(); - } else { - Logger.logWTF("EditTraitFragment needs arguments"); - } - super.onCreate(savedInstanceState); - } - - @Nullable - @org.jetbrains.annotations.Nullable - @Override - public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) { - NavController navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment); - NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.edit_monster_navigation); - mViewModel = new ViewModelProvider(backStackEntry).get(EditMonsterViewModel.class); - View root = inflater.inflate(R.layout.fragment_edit_traits_list, container, false); - mHolder = new ViewHolder(root); - setupRecyclerView(mHolder.list); - setupAddButton(mHolder.addTrait); - return root; - } - - private void setupRecyclerView(@NonNull RecyclerView recyclerView) { - Context context = requireContext(); - LinearLayoutManager layoutManager = new LinearLayoutManager(context); - recyclerView.setLayoutManager(layoutManager); - - LiveData> traitData = mViewModel.getTraits(mTraitType); - if (traitData != null) { - traitData.observe(getViewLifecycleOwner(), traits -> { - EditTraitsRecyclerViewAdapter adapter = new EditTraitsRecyclerViewAdapter(traits, trait -> { - if (trait != null) { - navigateToEditTrait(trait); - } else { - Logger.logError("Can't navigate to EditTraitFragment with a null trait"); - } - }); - recyclerView.setAdapter(adapter); - }); - } - DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(context, layoutManager.getOrientation()); - recyclerView.addItemDecoration(dividerItemDecoration); - - ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new SwipeToDeleteCallback(context, position -> mViewModel.removeTrait(mTraitType, position))); - itemTouchHelper.attachToRecyclerView(recyclerView); - } - - private void setupAddButton(@NonNull FloatingActionButton fab) { - fab.setOnClickListener(view -> { - Trait newTrait = mViewModel.addNewTrait(mTraitType); - if (newTrait != null) { - navigateToEditTrait(newTrait); - } - }); - } - - protected void navigateToEditTrait(Trait trait) { - NavDirections action = EditTraitListFragmentDirections.actionEditTraitListFragmentToEditTraitFragment(trait.description, trait.name, mTraitType); - Navigation.findNavController(requireView()).navigate(action); - } - - private static class ViewHolder { - RecyclerView list; - FloatingActionButton addTrait; - - ViewHolder(View root) { - list = root.findViewById(R.id.list); - addTrait = root.findViewById(R.id.add_trait); - } - } -} diff --git a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitsFragment.java b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitsFragment.java index ab6b0de..71803d9 100644 --- a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitsFragment.java +++ b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditTraitsFragment.java @@ -27,17 +27,18 @@ import com.majinnaibu.monstercards.ui.shared.MCFragment; import com.majinnaibu.monstercards.ui.shared.SwipeToDeleteCallback; import com.majinnaibu.monstercards.utils.Logger; +import org.jetbrains.annotations.NotNull; + import java.util.List; public class EditTraitsFragment extends MCFragment { private EditMonsterViewModel mViewModel; private ViewHolder mHolder; private TraitType mTraitType; - private EditTraitsRecyclerViewAdapter mAdapter; @Override - public void onCreate(@Nullable Bundle savedInstanceState) { + public void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) { if (getArguments() != null) { EditTraitsFragmentArgs args = EditTraitsFragmentArgs.fromBundle(getArguments()); mTraitType = args.getTraitType(); @@ -48,60 +49,41 @@ public class EditTraitsFragment extends MCFragment { } @Nullable + @org.jetbrains.annotations.Nullable @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) { NavController navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment); NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.edit_monster_navigation); mViewModel = new ViewModelProvider(backStackEntry).get(EditMonsterViewModel.class); View root = inflater.inflate(R.layout.fragment_edit_traits_list, container, false); mHolder = new ViewHolder(root); - setTitle(getTitleForTraitType(mTraitType)); setupRecyclerView(mHolder.list); setupAddButton(mHolder.addTrait); return root; } - @NonNull - private String getTitleForTraitType(TraitType type) { - switch (type) { - case ABILITY: - return getString(R.string.title_editAbilities); - case ACTION: - return getString(R.string.title_editActions); - case LAIR_ACTION: - return getString(R.string.title_editLairActions); - case LEGENDARY_ACTION: - return getString(R.string.title_editLegendaryActions); - case REACTIONS: - return getString(R.string.title_editReactions); - case REGIONAL_ACTION: - return getString(R.string.title_editRegionalActions); - default: - return getString(R.string.title_editTraits); - } - } - private void setupRecyclerView(@NonNull RecyclerView recyclerView) { Context context = requireContext(); LinearLayoutManager layoutManager = new LinearLayoutManager(context); recyclerView.setLayoutManager(layoutManager); LiveData> traitData = mViewModel.getTraits(mTraitType); - mAdapter = new EditTraitsRecyclerViewAdapter(trait -> { - if (trait != null) { - navigateToEditTrait(trait); - } else { - Logger.logError("Can't navigate to EditTraitFragment with a null trait"); - } - }); if (traitData != null) { - traitData.observe(getViewLifecycleOwner(), traits -> mAdapter.submitList(traits)); + traitData.observe(getViewLifecycleOwner(), traits -> { + EditTraitsRecyclerViewAdapter adapter = new EditTraitsRecyclerViewAdapter(traits, trait -> { + if (trait != null) { + navigateToEditTrait(trait); + } else { + Logger.logError("Can't navigate to EditTraitFragment with a null trait"); + } + }); + recyclerView.setAdapter(adapter); + }); } - recyclerView.setAdapter(mAdapter); DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(context, layoutManager.getOrientation()); recyclerView.addItemDecoration(dividerItemDecoration); - ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new SwipeToDeleteCallback(context, (position, direction) -> mViewModel.removeTrait(mTraitType, position), (from, to) -> mViewModel.moveTrait(mTraitType, from, to))); + ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new SwipeToDeleteCallback(context, position -> mViewModel.removeTrait(mTraitType, position))); itemTouchHelper.attachToRecyclerView(recyclerView); } @@ -114,7 +96,7 @@ public class EditTraitsFragment extends MCFragment { }); } - protected void navigateToEditTrait(@NonNull Trait trait) { + protected void navigateToEditTrait(Trait trait) { NavDirections action = EditTraitsFragmentDirections.actionEditTraitListFragmentToEditTraitFragment(trait.description, trait.name, mTraitType); Navigation.findNavController(requireView()).navigate(action); } @@ -123,7 +105,7 @@ public class EditTraitsFragment extends MCFragment { RecyclerView list; FloatingActionButton addTrait; - ViewHolder(@NonNull View root) { + ViewHolder(View root) { list = root.findViewById(R.id.list); addTrait = root.findViewById(R.id.add_trait); } diff --git a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterDetailFragment.java b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterDetailFragment.java index cf0031d..11960a0 100644 --- a/Android/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterDetailFragment.java +++ b/Android/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterDetailFragment.java @@ -229,6 +229,8 @@ public class MonsterDetailFragment extends MCFragment { } }); + // TODO: add lair actions, legendary actions, reactions, and regional actions + return root; } diff --git a/Android/app/src/main/res/layout/fragment_edit_traits_list.xml b/Android/app/src/main/res/layout/fragment_edit_traits_list.xml index fde537b..a4b9f4b 100644 --- a/Android/app/src/main/res/layout/fragment_edit_traits_list.xml +++ b/Android/app/src/main/res/layout/fragment_edit_traits_list.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".ui.editmonster.EditTraitListFragment"> + tools:context=".ui.editmonster.EditTraitsFragment">