X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2FAccountSummary.java;h=0885b0903ac1c7e14eb2639a2de58b7a987c59f8;hb=6ad340af404bd6ffc6eb524894ca0f11f0ee6acf;hp=a516722fde74061b790a5070d5bfa2a24ad8456b;hpb=7e41ae1d0d50379d8f96f5687a2633a62e34ae8b;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/AccountSummary.java b/app/src/main/java/net/ktnx/mobileledger/AccountSummary.java index a516722f..0885b090 100644 --- a/app/src/main/java/net/ktnx/mobileledger/AccountSummary.java +++ b/app/src/main/java/net/ktnx/mobileledger/AccountSummary.java @@ -16,6 +16,7 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.util.TypedValue; +import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -28,6 +29,8 @@ import android.widget.TableRow; import android.widget.TextView; import java.util.Date; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import static android.view.View.GONE; import static net.ktnx.mobileledger.MobileLedgerDB.db; @@ -191,11 +194,28 @@ public class AccountSummary extends AppCompatActivity { return Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics())); } + Pattern higher_account = Pattern.compile("^[^:]+:"); + + private String strip_higher_accounts(String acc_name, int[] count) { + count[0] = 0; + while (true) { + Matcher m = higher_account.matcher(acc_name); + if (m.find()) { + count[0]++; + acc_name = m.replaceFirst(""); + } + else break; + } + + return acc_name; + } + @SuppressLint("DefaultLocale") private void update_account_table() { LinearLayout root = findViewById(R.id.account_root); root.removeAllViewsInLayout(); + try (Cursor cursor = db.rawQuery("SELECT name FROM accounts ORDER BY name;", null)) { boolean even = false; while (cursor.moveToNext()) { @@ -204,18 +224,24 @@ public class AccountSummary extends AppCompatActivity { TableLayout t = new TableLayout(this); TableRow r = new TableRow(this); r.setLayoutParams(new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + r.setGravity(Gravity.CENTER_VERTICAL); + r.setPadding(getResources().getDimensionPixelSize(R.dimen.activity_horizontal_margin), dp2px(2), getResources().getDimensionPixelSize(R.dimen.activity_horizontal_margin), dp2px(4)); if (even) r.setBackgroundColor(getResources().getColor(R.color.table_row_even_bg, getTheme())); even = !even; TextView acc_tv = new TextView(this, null, R.style.account_summary_account_name); acc_tv.setLayoutParams(new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, 9f)); - acc_tv.setText(acc_name); + int[] indent_level = new int[]{0}; + String short_acc_name = strip_higher_accounts(acc_name, indent_level); + acc_tv.setPadding(indent_level[0] * getResources().getDimensionPixelSize(R.dimen.activity_horizontal_margin) / 2, 0, 0, 0); + acc_tv.setText(short_acc_name); r.addView(acc_tv); TextView amt_tv = new TextView(this, null, R.style.account_summary_amounts); amt_tv.setLayoutParams(new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1f)); amt_tv.setTextAlignment(EditText.TEXT_ALIGNMENT_VIEW_END); + amt_tv.setGravity(Gravity.CENTER); amt_tv.setMinWidth(dp2px(40f)); StringBuilder amt_text = new StringBuilder(); try (Cursor cAmounts = db.rawQuery("SELECT currency, value FROM account_values WHERE account = ?", new String[]{acc_name})) {