import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView;
-import net.ktnx.mobileledger.App;
+import com.google.android.material.snackbar.Snackbar;
+
import net.ktnx.mobileledger.BuildConfig;
import net.ktnx.mobileledger.R;
import net.ktnx.mobileledger.async.DescriptionSelectedCallback;
class NewTransactionItemsAdapter extends RecyclerView.Adapter<NewTransactionItemHolder>
implements DescriptionSelectedCallback {
- NewTransactionModel model;
+ private NewTransactionModel model;
private MobileLedgerProfile mProfile;
private ItemTouchHelper touchHelper;
private RecyclerView recyclerView;
public void setProfile(MobileLedgerProfile profile) {
mProfile = profile;
}
- int addRow() {
+ private int addRow() {
return addRow(null);
}
- int addRow(String commodity) {
+ private int addRow(String commodity) {
final int newAccountCount = model.addAccount(new LedgerTransactionAccount("", commodity));
Logger.debug("new-transaction",
String.format(Locale.US, "invoking notifyItemInserted(%d)", newAccountCount));
public int getItemCount() {
return model.getAccountCount() + 2;
}
- boolean accountListIsEmpty() {
+ private boolean accountListIsEmpty() {
for (int i = 0; i < model.getAccountCount(); i++) {
LedgerTransactionAccount acc = model.getAccount(i);
if (!acc.getAccountName()
debug("descr", broaderSql);
debug("descr", description);
+ activity.runOnUiThread(() -> {
+ Snackbar.make(recyclerView, R.string.ignoring_preferred_account,
+ Snackbar.LENGTH_LONG)
+ .show();
+ });
+
MLDB.queryInBackground(broaderSql, new String[]{description},
new MLDB.CallbackHelper() {
@Override
// TODO perhaps do only one notification about the whole range (notifyDatasetChanged)?
}
}
- public void reset() {
+ void reset() {
int presentItemCount = model.getAccountCount();
model.reset();
notifyItemChanged(0); // header changed
if (presentItemCount > 2)
notifyItemRangeRemoved(3, presentItemCount - 2); // all the rest are gone
}
- public void updateFocusedItem(int position) {
+ void updateFocusedItem(int position) {
model.updateFocusedItem(position);
}
- public void noteFocusIsOnAccount(int position) {
+ void noteFocusIsOnAccount(int position) {
model.noteFocusChanged(position, NewTransactionModel.FocusedElement.Account);
}
- public void noteFocusIsOnAmount(int position) {
+ void noteFocusIsOnAmount(int position) {
model.noteFocusChanged(position, NewTransactionModel.FocusedElement.Amount);
}
- public void noteFocusIsOnComment(int position) {
+ void noteFocusIsOnComment(int position) {
model.noteFocusChanged(position, NewTransactionModel.FocusedElement.Comment);
}
+ void noteFocusIsOnTransactionComment(int position) {
+ model.noteFocusChanged(position, NewTransactionModel.FocusedElement.TransactionComment);
+ }
+ public void noteFocusIsOnDescription(int pos) {
+ model.noteFocusChanged(pos, NewTransactionModel.FocusedElement.Description);
+ }
private void holdSubmittableChecks() {
checkHoldCounter++;
}
itemsWithAccountForCurrency.add(currName, item);
}
- if (acc.isAmountSet()) {
+ if (!acc.isAmountValid()) {
+ Logger.debug("submittable",
+ String.format("Not submittable: row %d has an invalid amount", i + 1));
+ submittable = false;
+ }
+ else if (acc.isAmountSet()) {
itemsWithAmountForCurrency.add(currName, item);
balance.add(currName, acc.getAmount());
}
model.isSubmittable.setValue(false);
}
}
- private class BalanceForCurrency {
+
+ private static class BalanceForCurrency {
private HashMap<String, Float> hashMap = new HashMap<>();
float get(String currencyName) {
Float f = hashMap.get(currencyName);
}
}
- private class ItemsForCurrency {
+ private static class ItemsForCurrency {
private HashMap<String, List<NewTransactionModel.Item>> hashMap = new HashMap<>();
@NonNull
List<NewTransactionModel.Item> getList(@Nullable String currencyName) {