]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsFragment.java
template deletion, with undo
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / templates / TemplateDetailsFragment.java
index b72272ebcfad42b39252afda1c734cb0af0c44ed..d8d1bb907195d71fb3016b9716e198ab5c22846c 100644 (file)
@@ -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,10 +87,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);
@@ -102,4 +130,7 @@ public class TemplateDetailsFragment extends QRScanCapableFragment {
         if (text != null)
             mViewModel.setTestText(text);
     }
+    interface InteractionListener {
+        void onDeleteTemplate(@NonNull Long templateId);
+    }
 }
\ No newline at end of file