]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionItemsAdapter.java
more heuristics when filling accounts from a previous transaction
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / activity / NewTransactionItemsAdapter.java
index 88f99a20fe330a71f38027171879acd4ffaee494..710b4d682e1cbace0703111b010042141c9e6aca 100644 (file)
@@ -227,7 +227,9 @@ class NewTransactionItemsAdapter extends RecyclerView.Adapter<NewTransactionItem
             tr = profile.loadTransaction(transactionId);
             ArrayList<LedgerTransactionAccount> accounts = tr.getAccounts();
             NewTransactionModel.Item firstNegative = null;
-            boolean singleNegative = false;
+            NewTransactionModel.Item firstPositive = null;
+            int singleNegativeIndex = -1;
+            int singlePositiveIndex = -1;
             int negativeCount = 0;
             for (int i = 0; i < accounts.size(); i++) {
                 LedgerTransactionAccount acc = accounts.get(i);
@@ -246,10 +248,18 @@ class NewTransactionItemsAdapter extends RecyclerView.Adapter<NewTransactionItem
                     if (acc.getAmount() < 0) {
                         if (firstNegative == null) {
                             firstNegative = item;
-                            singleNegative = true;
+                            singleNegativeIndex = i;
                         }
                         else
-                            singleNegative = false;
+                            singleNegativeIndex = -1;
+                    }
+                    else {
+                        if (firstPositive == null) {
+                            firstPositive = item;
+                            singlePositiveIndex = i;
+                        }
+                        else
+                            singlePositiveIndex = -1;
                     }
                 }
                 else
@@ -258,9 +268,15 @@ class NewTransactionItemsAdapter extends RecyclerView.Adapter<NewTransactionItem
                 notifyItemChanged(i + 1);
             }
 
-            if (singleNegative) {
+            if (singleNegativeIndex != -1) {
                 firstNegative.getAccount()
                              .resetAmount();
+                model.moveItemLast(singleNegativeIndex);
+            }
+            else if (singlePositiveIndex != -1) {
+                firstPositive.getAccount()
+                             .resetAmount();
+                model.moveItemLast(singlePositiveIndex);
             }
         }
         model.checkTransactionSubmittable(this);
@@ -287,9 +303,15 @@ class NewTransactionItemsAdapter extends RecyclerView.Adapter<NewTransactionItem
         model.updateFocusedItem(position);
     }
     public void noteFocusIsOnAccount(int position) {
-        model.noteFocusIsOnAccount(position);
+        model.noteFocusChanged(position, NewTransactionModel.FocusedElement.Account);
     }
     public void noteFocusIsOnAmount(int position) {
-        model.noteFocusIsOnAmount(position);
+        model.noteFocusChanged(position, NewTransactionModel.FocusedElement.Amount);
+    }
+    public void noteFocusIsOnComment(int position) {
+        model.noteFocusChanged(position, NewTransactionModel.FocusedElement.Comment);
+    }
+    public void toggleComment(int position) {
+        model.toggleComment(position);
     }
 }