]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsViewModel.java
template details model: method for creating a copy of the data list
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / templates / TemplateDetailsViewModel.java
index 40647875199f688c77a1a4602382318456815092..bf1dc35a1d1c904c34c2613d20c4bdeb53cd140d 100644 (file)
@@ -66,7 +66,7 @@ public class TemplateDetailsViewModel extends ViewModel {
         if (list.size() < 1) {
             final TemplateDetailsItem.Header header = TemplateDetailsItem.createHeader();
             header.setName(mDefaultPatternName);
-            header.setId(genItemId());
+            header.setId(0);
             list.add(header);
             changes = true;
         }
@@ -184,4 +184,31 @@ public class TemplateDetailsViewModel extends ViewModel {
             taDAO.finishSave(mPatternId);
         });
     }
+    private ArrayList<TemplateDetailsItem> copyItems() {
+        List<TemplateDetailsItem> oldList = items.getValue();
+        ArrayList<TemplateDetailsItem> result = new ArrayList<>(oldList.size());
+
+        for (TemplateDetailsItem item : oldList) {
+            if (item instanceof TemplateDetailsItem.Header)
+                result.add(new TemplateDetailsItem.Header(item.asHeaderItem()));
+            else if (item instanceof TemplateDetailsItem.AccountRow)
+                result.add(new TemplateDetailsItem.AccountRow(item.asAccountRowItem()));
+            else
+                throw new RuntimeException("Unexpected item " + item);
+        }
+
+        return result;
+    }
+    public void moveItem(int sourcePos, int targetPos) {
+        ArrayList<TemplateDetailsItem> newList = new ArrayList<>(items.getValue());
+        TemplateDetailsItem item = newList.remove(sourcePos);
+        newList.add(targetPos, item);
+        items.setValue(newList);
+    }
+    public void removeItem(int position) {
+        ArrayList<TemplateDetailsItem> newList = new ArrayList<>(items.getValue());
+        newList.remove(position);
+        checkItemConsistency(newList);
+        items.setValue(newList);
+    }
 }
\ No newline at end of file