X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Ftemplates%2FTemplateDetailsFragment.java;h=ac72d890e54811c8e81de420dffafec4ff986804;hb=d63a611dce420b30fa0c0711eea1d02603945a43;hp=b95ae29bcead60b38bdac0af004f2a718f1a9663;hpb=3ab99e1679326277d6ba7f8ce28f17a96dfa07aa;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 b95ae29b..ac72d890 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,10 +89,18 @@ 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); @@ -89,25 +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); - } - 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