X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Ftemplates%2FTemplateDetailsFragment.java;h=50088be306dd7bdd3f83c779d1e1d71879f29786;hb=4b16829ace7160afba02d7f9bba516bd40f1fcbd;hp=94e6989e6227bbdc3494fbfcea5ec4ab31b31df9;hpb=d95839304defead7c7d605cab2e612f1227cbfed;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsFragment.java b/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsFragment.java index 94e6989e..50088be3 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsFragment.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsFragment.java @@ -20,6 +20,9 @@ package net.ktnx.mobileledger.ui.templates; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -31,8 +34,6 @@ import androidx.navigation.NavController; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; -import com.google.android.material.snackbar.Snackbar; - import net.ktnx.mobileledger.R; import net.ktnx.mobileledger.databinding.TemplateDetailsFragmentBinding; import net.ktnx.mobileledger.ui.QRScanCapableFragment; @@ -41,12 +42,18 @@ import net.ktnx.mobileledger.utils.Logger; public class TemplateDetailsFragment extends QRScanCapableFragment { static final String ARG_TEMPLATE_ID = "pattern-id"; private static final String ARG_COLUMN_COUNT = "column-count"; - TemplateDetailsFragmentBinding b; + private TemplateDetailsFragmentBinding b; private TemplateDetailsViewModel mViewModel; private int mColumnCount = 1; private Long mPatternId; + private InteractionListener interactionListener; public TemplateDetailsFragment() { } + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + inflater.inflate(R.menu.template_details_menu, menu); + } public static TemplateDetailsFragment newInstance(int columnCount, int patternId) { final TemplateDetailsFragment fragment = new TemplateDetailsFragment(); Bundle args = new Bundle(); @@ -57,6 +64,19 @@ public class TemplateDetailsFragment extends QRScanCapableFragment { return fragment; } @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == R.id.delete_template) { + signalDeleteTemplateInteraction(); + return true; + } + + return super.onOptionsItemSelected(item); + } + private void signalDeleteTemplateInteraction() { + if (interactionListener != null) + interactionListener.onDeleteTemplate(mPatternId); + } + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -67,15 +87,23 @@ public class TemplateDetailsFragment extends QRScanCapableFragment { if (mPatternId == -1) mPatternId = null; } + + setHasOptionsMenu(mPatternId != null); } @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + if (!(getActivity() instanceof InteractionListener)) + throw new IllegalStateException( + "Containing activity must implement TemplateDetailsFragment" + + ".InteractionListener"); + interactionListener = (InteractionListener) getActivity(); + NavController controller = ((TemplatesActivity) requireActivity()).getNavController(); final ViewModelStoreOwner viewModelStoreOwner = controller.getViewModelStoreOwner(R.id.template_list_navigation); mViewModel = new ViewModelProvider(viewModelStoreOwner).get(TemplateDetailsViewModel.class); - mViewModel.setDefaultPatternName(getString(R.string.unnamed_pattern)); + mViewModel.setDefaultPatternName(getString(R.string.unnamed_template)); Logger.debug("flow", "PatternDetailsFragment.onCreateView(): model=" + mViewModel); b = TemplateDetailsFragmentBinding.inflate(inflater); @@ -89,7 +117,7 @@ public class TemplateDetailsFragment extends QRScanCapableFragment { } - TemplateDetailsAdapter adapter = new TemplateDetailsAdapter(); + TemplateDetailsAdapter adapter = new TemplateDetailsAdapter(mViewModel); b.patternDetailsRecyclerView.setAdapter(adapter); mViewModel.getItems(mPatternId) .observe(getViewLifecycleOwner(), adapter::setItems); @@ -102,12 +130,7 @@ public class TemplateDetailsFragment extends QRScanCapableFragment { if (text != null) mViewModel.setTestText(text); } - public void onSavePattern() { - mViewModel.onSaveTemplate(); - final Snackbar snackbar = Snackbar.make(b.getRoot(), - "One Save pattern action coming up soon in a fragment near you", - Snackbar.LENGTH_INDEFINITE); -// snackbar.setAction("Action", v -> snackbar.dismiss()); - snackbar.show(); + interface InteractionListener { + void onDeleteTemplate(@NonNull Long templateId); } } \ No newline at end of file