X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Ftemplates%2FTemplateDetailsFragment.java;h=03dd0ddf5a040eb342e975a0c13629e020586890;hb=7d66376e2470788c6b1ad5df18603c814aa389ea;hp=b72272ebcfad42b39252afda1c734cb0af0c44ed;hpb=3d855beaa8fea2442b1eacba88ed485cd75c63df;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 b72272eb..03dd0ddf 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,31 +20,35 @@ 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; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelStoreOwner; 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; +import net.ktnx.mobileledger.ui.FabManager; import net.ktnx.mobileledger.utils.Logger; -public class TemplateDetailsFragment extends QRScanCapableFragment { +public class TemplateDetailsFragment extends Fragment { 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() { } public static TemplateDetailsFragment newInstance(int columnCount, int patternId) { @@ -57,6 +61,24 @@ public class TemplateDetailsFragment extends QRScanCapableFragment { return fragment; } @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + inflater.inflate(R.menu.template_details_menu, menu); + } + @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 +89,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_template)); + mViewModel.setDefaultTemplateName(getString(R.string.unnamed_template)); Logger.debug("flow", "PatternDetailsFragment.onCreateView(): model=" + mViewModel); b = TemplateDetailsFragmentBinding.inflate(inflater); @@ -89,17 +119,18 @@ 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); + FragmentActivity activity = requireActivity(); + if (activity instanceof FabManager.FabHandler) + FabManager.handle((FabManager.FabHandler) activity, b.patternDetailsRecyclerView); + return b.getRoot(); } - @Override - protected void onQrScanned(String text) { - Logger.debug("PatDet_fr", String.format("Got scanned text '%s'", text)); - if (text != null) - mViewModel.setTestText(text); + interface InteractionListener { + void onDeleteTemplate(@NonNull Long templateId); } } \ No newline at end of file