X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Faccount_summary%2FAccountSummaryAdapter.java;h=47cc14b45bc5311858e0522a2cc05c1bf52d588d;hb=77b60ba7a9bff0d76a0955eb7009f0d77e0e938f;hp=52b27229dc1d00dcfb4d83561eda8a6f77ea74a9;hpb=254ccdbeec488fb1309513a3ff9be28f9b06855c;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/account_summary/AccountSummaryAdapter.java b/app/src/main/java/net/ktnx/mobileledger/ui/account_summary/AccountSummaryAdapter.java index 52b27229..47cc14b4 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/account_summary/AccountSummaryAdapter.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/account_summary/AccountSummaryAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright © 2019 Damyan Ivanov. + * Copyright © 2020 Damyan Ivanov. * This file is part of MoLe. * MoLe is free software: you can distribute it and/or modify it * under the term of the GNU General Public License as published by @@ -20,68 +20,66 @@ package net.ktnx.mobileledger.ui.account_summary; import android.content.Context; import android.content.res.Resources; import android.graphics.Typeface; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.CheckBox; -import android.widget.LinearLayout; +import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.recyclerview.widget.RecyclerView; + import net.ktnx.mobileledger.R; import net.ktnx.mobileledger.model.Data; import net.ktnx.mobileledger.model.LedgerAccount; -import net.ktnx.mobileledger.utils.Colors; - -import java.util.List; +import net.ktnx.mobileledger.ui.activity.MainActivity; +import net.ktnx.mobileledger.utils.LockHolder; -class AccountSummaryAdapter extends RecyclerView.Adapter { - private boolean selectionActive; +public class AccountSummaryAdapter + extends RecyclerView.Adapter { + public static final int AMOUNT_LIMIT = 3; - AccountSummaryAdapter() { - this.selectionActive = false; - } + AccountSummaryAdapter() { } public void onBindViewHolder(@NonNull LedgerRowHolder holder, int position) { - List accounts = Data.accounts.get(); - if (position < accounts.size()) { - LedgerAccount acc = accounts.get(position); - Context ctx = holder.row.getContext(); - Resources rm = ctx.getResources(); - - holder.row.setVisibility(View.VISIBLE); - holder.vTrailer.setVisibility(View.GONE); - holder.tvAccountName.setText(acc.getShortName()); - holder.tvAccountName.setPadding( - acc.getLevel() * rm.getDimensionPixelSize(R.dimen.activity_horizontal_margin) / - 2, 0, 0, 0); - holder.tvAccountAmounts.setText(acc.getAmountsString()); - - if (acc.isHidden()) { - holder.tvAccountName.setTypeface(null, Typeface.ITALIC); - holder.tvAccountAmounts.setTypeface(null, Typeface.ITALIC); - } - else { - holder.tvAccountName.setTypeface(null, Typeface.NORMAL); - holder.tvAccountAmounts.setTypeface(null, Typeface.NORMAL); - } - - if (position % 2 == 0) { - holder.row.setBackgroundColor(Colors.tableRowDarkBG); - } - else { - holder.row.setBackgroundColor(Colors.tableRowLightBG); - } - - holder.selectionCb.setVisibility(selectionActive ? View.VISIBLE : View.GONE); - holder.selectionCb.setChecked(!acc.isHiddenToBe()); - - holder.row.setTag(R.id.POS, position); - } - else { - holder.vTrailer.setVisibility(View.VISIBLE); - holder.row.setVisibility(View.GONE); + try (LockHolder lh = Data.accounts.lockForReading()) { + LedgerAccount acc = Data.accounts.get(position); + Context ctx = holder.row.getContext(); + Resources rm = ctx.getResources(); + + holder.row.setTag(acc); + holder.row.setVisibility(View.VISIBLE); + holder.tvAccountName.setText(acc.getShortName()); + ConstraintLayout.LayoutParams lp = + (ConstraintLayout.LayoutParams) holder.tvAccountName.getLayoutParams(); + lp.setMarginStart( + acc.getLevel() * rm.getDimensionPixelSize(R.dimen.thumb_row_height) / 3); + holder.expanderContainer.setVisibility( + acc.hasSubAccounts() ? View.VISIBLE : View.GONE); + holder.expanderContainer.setRotation(acc.isExpanded() ? 0 : 180); + int amounts = acc.getAmountCount(); + if ((amounts > AMOUNT_LIMIT) && !acc.amountsExpanded()) { + holder.tvAccountAmounts.setText(acc.getAmountsString(AMOUNT_LIMIT)); + holder.accountExpanderContainer.setVisibility(View.VISIBLE); + } + else { + holder.tvAccountAmounts.setText(acc.getAmountsString()); + holder.accountExpanderContainer.setVisibility(View.GONE); + } + + if (acc.isHiddenByStar()) { + holder.tvAccountName.setTypeface(null, Typeface.ITALIC); + holder.tvAccountAmounts.setTypeface(null, Typeface.ITALIC); + } + else { + holder.tvAccountName.setTypeface(null, Typeface.NORMAL); + holder.tvAccountAmounts.setTypeface(null, Typeface.NORMAL); + } + + holder.row.setTag(R.id.POS, position); } } @@ -89,59 +87,78 @@ class AccountSummaryAdapter extends RecyclerView.Adapter { + switch (which) { + case 0: + // show transactions + activity.showAccountTransactions(acc); + break; + } + dialog.dismiss(); + }); + builder.show(); + return true; } } }