X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2FNewTransactionActivity.java;h=53cbc905d62cad18d25aa3abc7e4c2a3958a2882;hp=8ec820241caf42657295e189a385651f73a2ba77;hb=a62fd00f3bc04e39a97817e8eca0421dc962e4fd;hpb=0272b2095a6c19cd4ff779b63751c05c98459423 diff --git a/app/src/main/java/net/ktnx/mobileledger/NewTransactionActivity.java b/app/src/main/java/net/ktnx/mobileledger/NewTransactionActivity.java index 8ec82024..53cbc905 100644 --- a/app/src/main/java/net/ktnx/mobileledger/NewTransactionActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/NewTransactionActivity.java @@ -24,6 +24,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; +import android.view.inputmethod.EditorInfo; import android.widget.AutoCompleteTextView; import android.widget.EditText; import android.widget.FilterQueryProvider; @@ -33,6 +34,7 @@ import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; +import java.util.Date; import java.util.Objects; /* @@ -74,14 +76,29 @@ public class NewTransactionActivity extends AppCompatActivity implements TaskCal }); text_descr = findViewById(R.id.new_transaction_description); hook_autocompletion_adapter(text_descr, MobileLedgerDB.DESCRIPTION_HISTORY_TABLE, "description"); + hook_text_change_listener(text_descr); progress = findViewById(R.id.save_transaction_progress); Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true); table = findViewById(R.id.new_transaction_accounts_table); - table.removeAllViews(); - do_add_account_row(false); - do_add_account_row(false); + for (int i = 0; i < table.getChildCount(); i++) { + TableRow row = (TableRow) table.getChildAt(i); + AutoCompleteTextView acc_name_view = (AutoCompleteTextView) row.getChildAt(0); + TextView amount_view = (TextView) row.getChildAt(1); + hook_swipe_listener(row); + hook_autocompletion_adapter(acc_name_view, MobileLedgerDB.ACCOUNTS_TABLE, "name"); + hook_text_change_listener(acc_name_view); + hook_text_change_listener(amount_view); +// Log.d("swipe", "hooked to row "+i); + } + } + + @Override + protected + void onStart() { + super.onStart(); + if (text_descr.getText().toString().isEmpty()) text_descr.requestFocus(); } @Override @@ -108,7 +125,9 @@ public class NewTransactionActivity extends AppCompatActivity implements TaskCal saver = new SaveTransactionTask(this); saver.setPref(PreferenceManager.getDefaultSharedPreferences(this)); - LedgerTransaction tr = new LedgerTransaction(text_date.getText().toString(), text_descr.getText().toString()); + String date = text_date.getText().toString(); + if (date.isEmpty()) date = String.valueOf(new Date().getDate()); + LedgerTransaction tr = new LedgerTransaction(date, text_descr.getText().toString()); TableLayout table = findViewById(R.id.new_transaction_accounts_table); for ( int i = 0; i < table.getChildCount(); i++ ) { @@ -126,6 +145,8 @@ public class NewTransactionActivity extends AppCompatActivity implements TaskCal } private void toggle_all_editing(boolean enabled) { + text_date.setEnabled(enabled); + text_descr.setEnabled(enabled); TableLayout table = findViewById(R.id.new_transaction_accounts_table); for (int i = 0; i < table.getChildCount(); i++) { TableRow row = (TableRow) table.getChildAt(i); @@ -140,7 +161,26 @@ public class NewTransactionActivity extends AppCompatActivity implements TaskCal public void onSwipeLeft() { // Log.d("swipe", "LEFT" + row.getId()); if (table.getChildCount() > 2) { + TableRow prev_row = (TableRow) table.getChildAt(table.indexOfChild(row) - 1); + TableRow next_row = (TableRow) table.getChildAt(table.indexOfChild(row) + 1); + TextView prev_amt = + (prev_row != null) ? (TextView) prev_row.getChildAt(1) : text_descr; + TextView next_acc = + (next_row != null) ? (TextView) next_row.getChildAt(0) : null; + + if (next_acc == null) { + prev_amt.setNextFocusRightId(R.id.none); + prev_amt.setNextFocusForwardId(R.id.none); + prev_amt.setImeOptions(EditorInfo.IME_ACTION_DONE); + } + else { + prev_amt.setNextFocusRightId(next_acc.getId()); + prev_amt.setNextFocusForwardId(next_acc.getId()); + prev_amt.setImeOptions(EditorInfo.IME_ACTION_NEXT); + } + table.removeView(row); + check_transaction_submittable(); // Toast.makeText(NewTransactionActivity.this, "LEFT", Toast.LENGTH_LONG).show(); } else { @@ -254,6 +294,7 @@ public class NewTransactionActivity extends AppCompatActivity implements TaskCal acc.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 9f)); acc.setHint(R.string.new_transaction_account_hint); acc.setWidth(0); + acc.setImeOptions(EditorInfo.IME_ACTION_NEXT); final EditText amt = new EditText(this); amt.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, @@ -263,6 +304,16 @@ public class NewTransactionActivity extends AppCompatActivity implements TaskCal amt.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL ); amt.setMinWidth(dp2px(40)); amt.setTextAlignment(EditText.TEXT_ALIGNMENT_VIEW_END); + amt.setImeOptions(EditorInfo.IME_ACTION_DONE); + + // forward navigation support + final TableRow last_row = (TableRow) table.getChildAt(table.getChildCount() - 1); + final TextView last_amt = (TextView) last_row.getChildAt(1); + last_amt.setNextFocusForwardId(acc.getId()); + last_amt.setNextFocusRightId(acc.getId()); + last_amt.setImeOptions(EditorInfo.IME_ACTION_NEXT); + acc.setNextFocusForwardId(amt.getId()); + acc.setNextFocusRightId(amt.getId()); final TableRow row = new TableRow(this); row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT)); @@ -283,6 +334,11 @@ public class NewTransactionActivity extends AppCompatActivity implements TaskCal do_add_account_row(true); } + public + void resetTransactionFromMenu(MenuItem item) { + reset_form(); + } + public void saveTransactionFromMenu(MenuItem item) { save_transaction(); } @@ -387,6 +443,9 @@ public class NewTransactionActivity extends AppCompatActivity implements TaskCal private void reset_form() { text_date.setText(""); text_descr.setText(""); + + text_descr.requestFocus(); + while(table.getChildCount() > 2) { table.removeViewAt(2); } @@ -397,7 +456,5 @@ public class NewTransactionActivity extends AppCompatActivity implements TaskCal ((TextView)tr.getChildAt(0)).setText(""); ((TextView)tr.getChildAt(1)).setText(""); } - - text_descr.requestFocus(); } }