diff --git a/app/build.gradle b/app/build.gradle index 0bec0769..ed064adc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,8 +48,8 @@ android { applicationId "com.handydev.financier" minSdkVersion 21 targetSdkVersion 29 - versionCode 219 - versionName "2.0.19" + versionCode 220 + versionName "2.0.20" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true javaCompileOptions { diff --git a/app/src/main/java/com/handydev/financier/activity/RecurActivity.java b/app/src/main/java/com/handydev/financier/activity/RecurActivity.java index d4f14473..90894369 100644 --- a/app/src/main/java/com/handydev/financier/activity/RecurActivity.java +++ b/app/src/main/java/com/handydev/financier/activity/RecurActivity.java @@ -198,7 +198,7 @@ private void addSpinnerItems(Spinner spinner, LocalizableEnum[] a) { String value = x.name(); items[i] = new SpinnerItem(title, value); } - ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, items); + ArrayAdapter adapter = new ArrayAdapter<>(this, R.layout.spinner_item, items); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); } diff --git a/app/src/main/java/com/handydev/financier/adapter/CategoryListAdapter2.java b/app/src/main/java/com/handydev/financier/adapter/CategoryListAdapter2.java index 1fcef2c8..29d33b4d 100644 --- a/app/src/main/java/com/handydev/financier/adapter/CategoryListAdapter2.java +++ b/app/src/main/java/com/handydev/financier/adapter/CategoryListAdapter2.java @@ -27,8 +27,11 @@ import android.view.View.OnClickListener; import android.widget.BaseAdapter; import android.widget.ImageView; +import android.widget.RelativeLayout; import android.widget.TextView; +import androidx.core.content.ContextCompat; + public class CategoryListAdapter2 extends BaseAdapter { private final LayoutInflater inflater; @@ -49,8 +52,8 @@ public CategoryListAdapter2(Context context, CategoryTree categories) this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.categories = categories; Resources resources = context.getResources(); - this.expandedDrawable = resources.getDrawable(R.drawable.expander_ic_maximized); - this.collapsedDrawable = resources.getDrawable(R.drawable.expander_ic_minimized); + this.expandedDrawable = ContextCompat.getDrawable(context, R.drawable.expander_ic_maximized); + this.collapsedDrawable = ContextCompat.getDrawable(context, R.drawable.expander_ic_minimized); this.incomeColor = resources.getColor(R.color.category_type_income); this.expenseColor = resources.getColor(R.color.category_type_expense); this.levelPadding = resources.getDimensionPixelSize(R.dimen.category_padding); @@ -108,21 +111,14 @@ public View getView(final int position, View convertView, ViewGroup parent) { if (c.hasChildren()) { span.setImageDrawable(state.contains(c.id) ? expandedDrawable : collapsedDrawable); span.setClickable(true); - span.setOnClickListener(new OnClickListener(){ - @Override - public void onClick(View v) { - onListItemClick(c.id); - } - }); - span.setPadding(padding, 0, 0, 0); + span.setOnClickListener(v -> onListItemClick(c.id)); span.setVisibility(View.VISIBLE); - padding += collapsedDrawable.getMinimumWidth(); } else { - padding += levelPadding/2; span.setVisibility(View.GONE); } - title.setPadding(padding, 0, 0, 0); - label.setPadding(padding, 0, 0, 0); + RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) indicator.getLayoutParams(); + layoutParams.leftMargin = padding + 8; + indicator.requestLayout(); long id = c.id; if (attributes != null && attributes.containsKey(id)) { label.setText(attributes.get(id)); @@ -193,10 +189,10 @@ private static class Holder { public static Holder create(View convertView) { Holder h = new Holder(); - h.indicator = (TextView)convertView.findViewById(R.id.indicator); - h.span = (ImageView)convertView.findViewById(R.id.span); - h.title = (TextView)convertView.findViewById(R.id.line1); - h.label = (TextView)convertView.findViewById(R.id.label); + h.indicator = convertView.findViewById(R.id.indicator); + h.span = convertView.findViewById(R.id.span); + h.title = convertView.findViewById(R.id.line1); + h.label = convertView.findViewById(R.id.label); convertView.setTag(h); return h; } diff --git a/app/src/main/java/com/handydev/financier/db/DatabaseAdapter.kt b/app/src/main/java/com/handydev/financier/db/DatabaseAdapter.kt index ee338b69..dcaf4476 100644 --- a/app/src/main/java/com/handydev/financier/db/DatabaseAdapter.kt +++ b/app/src/main/java/com/handydev/financier/db/DatabaseAdapter.kt @@ -626,7 +626,7 @@ open class DatabaseAdapter(context: Context?) : MyEntityManager(context) { { val category = categories.firstOrNull { it.id == excludingTreeId } if(category != null) { - categories = categories.filter { it.id < category.left || it.id > category.right } + categories = categories.filter { !((it.id == category.id && it.level == category.level) || (it.id >= category.left && it.id <= category.right && it.level > category.level)) } } } return CategoryTree.createFromCache(categories) diff --git a/app/src/main/java/com/handydev/financier/export/CategoryCache.java b/app/src/main/java/com/handydev/financier/export/CategoryCache.java index 07c5e220..5a44ba35 100644 --- a/app/src/main/java/com/handydev/financier/export/CategoryCache.java +++ b/app/src/main/java/com/handydev/financier/export/CategoryCache.java @@ -125,7 +125,7 @@ private Category insertChildCategory(String name, boolean income) { Category child = categoryNameToCategory.get(name); if (child == null) { child = createCategoryInCache(name, childCategoryName, income); - parent.addChild(child); + parent.addChild(child, true); } return child; } diff --git a/app/src/main/java/com/handydev/financier/fragments/BudgetListFragment.kt b/app/src/main/java/com/handydev/financier/fragments/BudgetListFragment.kt index 2c594b8d..d1960f08 100644 --- a/app/src/main/java/com/handydev/financier/fragments/BudgetListFragment.kt +++ b/app/src/main/java/com/handydev/financier/fragments/BudgetListFragment.kt @@ -98,9 +98,9 @@ class BudgetListFragment: AbstractListFragment(R.layout.budget_list) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { val unmaskedRequestCode = requestCode and 0x0000ffff if (unmaskedRequestCode == FILTER_BUDGET_REQUEST) { - if (unmaskedRequestCode == Activity.RESULT_FIRST_USER) { + if (resultCode == Activity.RESULT_FIRST_USER) { filter.clear() - } else if (unmaskedRequestCode == Activity.RESULT_OK) { + } else if (resultCode == Activity.RESULT_OK) { val periodType = data?.getStringExtra(DateFilterActivity.EXTRA_FILTER_PERIOD_TYPE) if(periodType != null) { val p = PeriodType.valueOf(periodType) diff --git a/app/src/main/java/com/handydev/financier/model/CategoryEntity.kt b/app/src/main/java/com/handydev/financier/model/CategoryEntity.kt index dd630ab9..22d4b654 100644 --- a/app/src/main/java/com/handydev/financier/model/CategoryEntity.kt +++ b/app/src/main/java/com/handydev/financier/model/CategoryEntity.kt @@ -36,11 +36,11 @@ open class CategoryEntity> : MyEntity() { val parentId: Long get() = if (parent != null) parent!!.id else 0 - fun addChild(category: T) { + fun addChild(category: T, uniqueOnly: Boolean = true) { if (children == null) { children = CategoryTree() } - if(children?.any { it.id == category.id } == true) { + if(uniqueOnly && children?.any { it.id == category.id } == true) { return } category.parent = this as T diff --git a/app/src/main/java/com/handydev/financier/model/CategoryTree.kt b/app/src/main/java/com/handydev/financier/model/CategoryTree.kt index 833689b7..b46728cf 100644 --- a/app/src/main/java/com/handydev/financier/model/CategoryTree.kt +++ b/app/src/main/java/com/handydev/financier/model/CategoryTree.kt @@ -184,7 +184,7 @@ class CategoryTree> : Iterable { val category = creator.createNode(c) while (parent != null) { parent = if (category.left > parent.left && category.right < parent.right) { - parent.addChild(category) + parent.addChild(category, false) break } else { parent.parent diff --git a/app/src/main/java/com/handydev/financier/model/CategoryTreeNavigator.java b/app/src/main/java/com/handydev/financier/model/CategoryTreeNavigator.java index ef7befa9..9326b375 100644 --- a/app/src/main/java/com/handydev/financier/model/CategoryTreeNavigator.java +++ b/app/src/main/java/com/handydev/financier/model/CategoryTreeNavigator.java @@ -152,9 +152,9 @@ public void separateIncomeAndExpense() { newCategories.add(category); } else { if (category.isIncome()) { - income.addChild(category); + income.addChild(category, true); } else { - expense.addChild(category); + expense.addChild(category, true); } } } diff --git a/app/src/main/java/com/handydev/financier/recur/RecurrenceViewFactory.java b/app/src/main/java/com/handydev/financier/recur/RecurrenceViewFactory.java index 15029358..2f6f0e38 100644 --- a/app/src/main/java/com/handydev/financier/recur/RecurrenceViewFactory.java +++ b/app/src/main/java/com/handydev/financier/recur/RecurrenceViewFactory.java @@ -35,6 +35,8 @@ import static com.handydev.financier.activity.UiUtils.applyTheme; +import androidx.core.content.ContextCompat; + public class RecurrenceViewFactory { private final RecurrenceActivity activity; @@ -722,6 +724,7 @@ private class StopsOnDateView extends AbstractView { public void createNodes(LinearLayout layout) { onDateText = x.addInfoNode(layout, R.id.date, R.string.recur_repeat_stops_on, DateUtils.getMediumDateFormat(activity).format(c.getTime())); + //onDateText.setTextColor(ContextCompat.getColor()); } @Override diff --git a/app/src/main/java/com/handydev/financier/report/SubCategoryReport.java b/app/src/main/java/com/handydev/financier/report/SubCategoryReport.java index d3902e5e..515be41f 100644 --- a/app/src/main/java/com/handydev/financier/report/SubCategoryReport.java +++ b/app/src/main/java/com/handydev/financier/report/SubCategoryReport.java @@ -70,7 +70,7 @@ public CategoryAmount createNode(Cursor c) { }); ArrayList roots = createTree(amounts, 0); - ArrayList units = new ArrayList(); + ArrayList units = new ArrayList<>(); flattenTree(roots, units); Total total = calculateTotal(roots); return new ReportData(units, total); diff --git a/app/src/main/res/layout/category_list_item2.xml b/app/src/main/res/layout/category_list_item2.xml index 98af984c..de41957b 100644 --- a/app/src/main/res/layout/category_list_item2.xml +++ b/app/src/main/res/layout/category_list_item2.xml @@ -16,7 +16,7 @@ android:layout_alignParentLeft="true" android:layout_height="fill_parent" android:layout_width="3dp" - android:layout_marginLeft="5dp" + android:layout_marginLeft="50dp" android:layout_marginBottom="3dp" android:layout_marginTop="3dp"/> - + + + android:layout_height="wrap_content" android:layout_width="fill_parent" + android:orientation="vertical"> + + + +