]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateViewHolder.java
add divider before fallback templates
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / templates / TemplateViewHolder.java
index e9b9032d2a24dcde22ea6c6affca7568a2fdb140..aeb1dc13e5d5c889bb4d24d29467747e002493c2 100644 (file)
 
 package net.ktnx.mobileledger.ui.templates;
 
+import android.view.View;
+
 import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
 import androidx.recyclerview.widget.RecyclerView;
 
+import net.ktnx.mobileledger.R;
 import net.ktnx.mobileledger.databinding.TemplateListTemplateItemBinding;
+import net.ktnx.mobileledger.databinding.TemplatesFallbackDividerBinding;
 import net.ktnx.mobileledger.db.TemplateHeader;
 
-class TemplateViewHolder extends RecyclerView.ViewHolder {
-    final TemplateListTemplateItemBinding b;
-    public TemplateViewHolder(@NonNull TemplateListTemplateItemBinding binding) {
-        super(binding.getRoot());
-        b = binding;
+abstract class BaseTemplateViewHolder extends RecyclerView.ViewHolder {
+    public BaseTemplateViewHolder(@NonNull View itemView) {
+        super(itemView);
+    }
+    abstract void bindToItem(TemplatesRecyclerViewAdapter.BaseTemplateItem item);
+    static class TemplateDividerViewHolder extends BaseTemplateViewHolder {
+        public TemplateDividerViewHolder(@NonNull TemplatesFallbackDividerBinding binding) {
+            super(binding.getRoot());
+        }
+        @Override
+        void bindToItem(TemplatesRecyclerViewAdapter.BaseTemplateItem item) {
+            // nothing
+        }
     }
-    public void bindToItem(TemplateHeader item) {
-        b.templateName.setText(item.getName());
-        b.editButton.setOnClickListener(v -> {
-            ((TemplatesActivity) v.getContext()).onEditTemplate(item.getId());
-        });
+
+    static class TemplateViewHolder extends BaseTemplateViewHolder {
+        final TemplateListTemplateItemBinding b;
+        public TemplateViewHolder(@NonNull TemplateListTemplateItemBinding binding) {
+            super(binding.getRoot());
+            b = binding;
+        }
+        @Override
+        public void bindToItem(TemplatesRecyclerViewAdapter.BaseTemplateItem baseItem) {
+            TemplateHeader item = ((TemplatesRecyclerViewAdapter.TemplateItem) baseItem).template;
+            b.templateName.setText(item.getName());
+            b.templateName.setOnClickListener(
+                    v -> ((TemplatesActivity) v.getContext()).onEditTemplate(item.getId()));
+            b.templateName.setOnLongClickListener((v) -> {
+                TemplatesActivity activity = (TemplatesActivity) v.getContext();
+                AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+                final String templateName = item.getName();
+                builder.setTitle(templateName);
+                builder.setItems(R.array.templates_ctx_menu, (dialog, which) -> {
+                    if (which == 0) { // edit
+                        activity.onEditTemplate(item.getId());
+                    }
+                    else if (which == 1) { // duplicate
+                        activity.onDuplicateTemplate(item.getId());
+                    }
+                    else if (which == 2) { // delete
+                        activity.onDeleteTemplate(item.getId());
+                    }
+                    else {
+                        throw new RuntimeException(
+                                String.format("Unknown menu item id (%d)", which));
+                    }
+                    dialog.dismiss();
+                });
+                builder.show();
+                return true;
+            });
+        }
     }
-}
+}
\ No newline at end of file