import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
+import android.widget.Toast;
import net.ktnx.mobileledger.R;
import net.ktnx.mobileledger.async.SaveTransactionTask;
import net.ktnx.mobileledger.async.TaskCallback;
+import net.ktnx.mobileledger.model.Data;
import net.ktnx.mobileledger.model.LedgerTransaction;
import net.ktnx.mobileledger.model.LedgerTransactionAccount;
import net.ktnx.mobileledger.ui.DatePickerFragment;
import net.ktnx.mobileledger.utils.Globals;
import net.ktnx.mobileledger.utils.MLDB;
+import java.text.ParseException;
import java.util.Date;
import java.util.Objects;
* TODO: reports
* TODO: get rid of the custom session/cookie and auth code?
* (the last problem with the POST was the missing content-length header)
- * TODO: app icon
* TODO: nicer swiping removal with visual feedback
* TODO: setup wizard
* TODO: update accounts/check settings upon change of backend settings
setContentView(R.layout.activity_new_transaction);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
+ toolbar.setSubtitle(Data.profile.get().getName());
tvDate = findViewById(R.id.new_transaction_date);
tvDate.setOnFocusChangeListener((v, hasFocus) -> {
if (mSave != null) mSave.setVisible(false);
toggleAllEditing(false);
progress.setVisibility(View.VISIBLE);
+ try {
- saver = new SaveTransactionTask(this);
+ saver = new SaveTransactionTask(this);
- String dateString = tvDate.getText().toString();
- Date date;
- if (dateString.isEmpty()) date = new Date();
- else date = Globals.parseLedgerDate(dateString);
- LedgerTransaction tr = new LedgerTransaction(date, tvDescription.getText().toString());
+ String dateString = tvDate.getText().toString();
+ Date date;
+ if (dateString.isEmpty()) date = new Date();
+ else date = Globals.parseLedgerDate(dateString);
+ LedgerTransaction tr = new LedgerTransaction(date, tvDescription.getText().toString());
- TableLayout table = findViewById(R.id.new_transaction_accounts_table);
- for (int i = 0; i < table.getChildCount(); i++) {
- TableRow row = (TableRow) table.getChildAt(i);
- String acc = ((TextView) row.getChildAt(0)).getText().toString();
- String amt = ((TextView) row.getChildAt(1)).getText().toString();
- LedgerTransactionAccount item =
- amt.length() > 0 ? new LedgerTransactionAccount(acc, Float.parseFloat(amt))
- : new LedgerTransactionAccount(acc);
+ TableLayout table = findViewById(R.id.new_transaction_accounts_table);
+ for (int i = 0; i < table.getChildCount(); i++) {
+ TableRow row = (TableRow) table.getChildAt(i);
+ String acc = ((TextView) row.getChildAt(0)).getText().toString();
+ String amt = ((TextView) row.getChildAt(1)).getText().toString();
+ LedgerTransactionAccount item =
+ amt.length() > 0 ? new LedgerTransactionAccount(acc, Float.parseFloat(amt))
+ : new LedgerTransactionAccount(acc);
+
+ tr.addAccount(item);
+ }
+ saver.execute(tr);
+ }
+ catch (ParseException e) {
+ Log.d("new-transaction", "Parse error", e);
+ Toast.makeText(this, getResources().getString(R.string.error_invalid_date),
+ Toast.LENGTH_LONG).show();
+ tvDate.requestFocus();
+
+ progress.setVisibility(View.GONE);
+ toggleAllEditing(true);
+ if (mSave != null) mSave.setVisible(true);
+ }
+ catch (Exception e) {
+ Log.d("new-transaction", "Unknown error", e);
- tr.addAccount(item);
+ progress.setVisibility(View.GONE);
+ toggleAllEditing(true);
+ if (mSave != null) mSave.setVisible(true);
}
- saver.execute(tr);
}
private void toggleAllEditing(boolean enabled) {
tvDate.setEnabled(enabled);