X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FNewTransactionActivity.java;h=b69710b3598c8c0d15d619e035e2fa8a930a49ef;hp=b522abc767966511602173dd1ef3f798dd082cba;hb=e975cffd3885678f30f69d09fbc99905c3118588;hpb=21b5399a3f4359ee2b8ff1395c2f892dafa8376b diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionActivity.java b/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionActivity.java index b522abc7..b69710b3 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionActivity.java @@ -19,13 +19,8 @@ package net.ktnx.mobileledger.ui.activity; import android.annotation.SuppressLint; import android.database.Cursor; +import android.os.AsyncTask; import android.os.Bundle; -import android.support.design.widget.BaseTransientBottomBar; -import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.Snackbar; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.text.Editable; import android.text.InputType; import android.text.TextWatcher; @@ -45,6 +40,11 @@ import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.snackbar.BaseTransientBottomBar; +import com.google.android.material.snackbar.Snackbar; + +import net.ktnx.mobileledger.BuildConfig; import net.ktnx.mobileledger.R; import net.ktnx.mobileledger.async.DescriptionSelectedCallback; import net.ktnx.mobileledger.async.SaveTransactionTask; @@ -65,17 +65,18 @@ import java.util.List; import java.util.Locale; import java.util.Objects; +import androidx.appcompat.widget.Toolbar; +import androidx.fragment.app.DialogFragment; + /* * TODO: nicer progress while transaction is submitted * 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: nicer swiping removal with visual feedback - * TODO: setup wizard - * TODO: update accounts/check settings upon change of backend settings * */ -public class NewTransactionActivity extends AppCompatActivity +public class NewTransactionActivity extends ProfileThemedActivity implements TaskCallback, DescriptionSelectedCallback { private static SaveTransactionTask saver; private TableLayout table; @@ -89,6 +90,7 @@ public class NewTransactionActivity extends AppCompatActivity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setContentView(R.layout.activity_new_transaction); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); @@ -245,10 +247,18 @@ public class NewTransactionActivity extends AppCompatActivity }); } + public boolean simulateCrash(MenuItem item) { + Log.d("crash", "Will crash intentionally"); + new AsyncCrasher().execute(); + return true; + } public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.new_transaction, menu); + if (BuildConfig.DEBUG) { + menu.findItem(R.id.action_simulate_crash).setVisible(true); + } check_transaction_submittable(); return true; @@ -303,6 +313,7 @@ public class NewTransactionActivity extends AppCompatActivity amt.setMinWidth(dp2px(40)); amt.setTextAlignment(EditText.TEXT_ALIGNMENT_VIEW_END); amt.setImeOptions(EditorInfo.IME_ACTION_DONE); + amt.setSelectAllOnFocus(true); // forward navigation support final TableRow last_row = (TableRow) table.getChildAt(table.getChildCount() - 1); @@ -497,6 +508,8 @@ public class NewTransactionActivity extends AppCompatActivity int i = 0; table = findViewById(R.id.new_transaction_accounts_table); ArrayList accounts = tr.getAccounts(); + TableRow firstNegative = null; + int negativeCount = 0; for (i = 0; i < accounts.size(); i++) { LedgerTransactionAccount acc = accounts.get(i); TableRow row = (TableRow) table.getChildAt(i); @@ -505,11 +518,23 @@ public class NewTransactionActivity extends AppCompatActivity ((TextView) row.getChildAt(0)).setText(acc.getAccountName()); ((TextView) row.getChildAt(1)) .setText(String.format(Locale.US, "%1.2f", acc.getAmount())); + + if (acc.getAmount() < 0.005) { + if (firstNegative == null) firstNegative = row; + negativeCount++; + } + } + + if (negativeCount == 1) { + ((TextView) firstNegative.getChildAt(1)).setText(null); } check_transaction_submittable(); - ((TableRow) table.getChildAt(table.getChildCount() - 1)).getChildAt(0).requestFocus(); + EditText firstAmount = (EditText) ((TableRow) table.getChildAt(0)).getChildAt(1); + String amtString = String.valueOf(firstAmount.getText()); + firstAmount.requestFocus(); + firstAmount.setSelection(0, amtString.length()); } } @@ -526,4 +551,10 @@ public class NewTransactionActivity extends AppCompatActivity return true; } + private class AsyncCrasher extends AsyncTask{ + @Override + protected Void doInBackground(Void... voids) { + throw new RuntimeException("Simulated crash"); + } + } }