Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

Commit 24fbc63

Browse files
author
Evgenii Kanivets
committed
#134. Add account goal to EditAccountFragment.
1 parent 3bb5ab2 commit 24fbc63

File tree

3 files changed

+91
-8
lines changed

3 files changed

+91
-8
lines changed

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/edit/fragment/EditAccountFragment.kt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,22 @@ import android.view.View
77
import com.blogspot.e_kanivets.moneytracker.R
88
import com.blogspot.e_kanivets.moneytracker.R.layout
99
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseFragment
10+
import com.blogspot.e_kanivets.moneytracker.controller.FormatController
1011
import com.blogspot.e_kanivets.moneytracker.controller.data.AccountController
1112
import com.blogspot.e_kanivets.moneytracker.entity.data.Account
13+
import com.blogspot.e_kanivets.moneytracker.util.validator.EditAccountValidator
14+
import com.blogspot.e_kanivets.moneytracker.util.validator.IValidator
1215
import kotlinx.android.synthetic.main.fragment_edit_account.*
1316
import javax.inject.Inject
1417

1518
class EditAccountFragment : BaseFragment() {
1619

1720
@Inject
1821
internal lateinit var accountController: AccountController
22+
@Inject
23+
internal lateinit var formatController: FormatController
24+
25+
private lateinit var accountValidator: IValidator<Account>
1926

2027
private lateinit var account: Account
2128

@@ -28,22 +35,23 @@ class EditAccountFragment : BaseFragment() {
2835

2936
override fun initViews(view: View) {
3037
etTitle.setText(account.title)
31-
etGoal.setText(account.goal.toString())
38+
etGoal.setText(formatController.formatPrecisionNone(account.goal))
3239
viewColor.setBackgroundColor(account.color)
3340

3441
val fabDone = view.rootView.findViewById<FloatingActionButton>(R.id.fabDone)
3542
fabDone.setOnClickListener { done() }
43+
44+
accountValidator = EditAccountValidator(context!!, view)
3645
}
3746

3847
private fun done() {
39-
val title = etTitle.text.toString().trim { it <= ' ' }
48+
if (accountValidator.validate()) {
49+
val title = etTitle.text.toString().trim { it <= ' ' }
50+
val goal = etGoal.text.toString().toDouble()
4051

41-
if (title.isEmpty()) {
42-
tilTitle.error = getString(R.string.field_cant_be_empty)
43-
} else {
4452
val newAccount = Account(
4553
account.id, title, account.curSum.toDouble(),
46-
account.currency, account.goal, account.isArchived, account.color
54+
account.currency, goal, account.isArchived, account.color
4755
)
4856
val updated = accountController.update(newAccount) != null
4957
if (updated) {
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.blogspot.e_kanivets.moneytracker.util.validator;
2+
3+
import android.content.Context;
4+
import android.support.annotation.NonNull;
5+
import android.support.design.widget.TextInputLayout;
6+
import android.view.View;
7+
import android.widget.EditText;
8+
import butterknife.BindView;
9+
import butterknife.ButterKnife;
10+
import com.blogspot.e_kanivets.moneytracker.R;
11+
import com.blogspot.e_kanivets.moneytracker.entity.data.Account;
12+
13+
/**
14+
* Util class for EditAccount validation.
15+
* Created on 16.09.2018.
16+
*
17+
* @author Evgenii Kanivets
18+
*/
19+
20+
public class EditAccountValidator implements IValidator<Account> {
21+
22+
@NonNull
23+
private final Context context;
24+
25+
@BindView(R.id.tilTitle)
26+
TextInputLayout tilTitle;
27+
@BindView(R.id.etTitle)
28+
EditText etTitle;
29+
@BindView(R.id.tilGoal)
30+
TextInputLayout tilGoal;
31+
@BindView(R.id.etGoal)
32+
EditText etGoal;
33+
34+
public EditAccountValidator(@NonNull Context context, @NonNull View view) {
35+
this.context = context;
36+
ButterKnife.bind(this, view);
37+
initTextWatchers();
38+
}
39+
40+
@Override
41+
public boolean validate() {
42+
String title = etTitle.getText().toString().trim();
43+
double goal = Double.MAX_VALUE;
44+
45+
try {
46+
goal = Double.parseDouble(etGoal.getText().toString().trim());
47+
} catch (NumberFormatException e) {
48+
e.printStackTrace();
49+
}
50+
51+
boolean valid = true;
52+
53+
if (title.isEmpty()) {
54+
tilTitle.setError(context.getString(R.string.field_cant_be_empty));
55+
valid = false;
56+
}
57+
58+
if (goal == Double.MAX_VALUE) {
59+
tilGoal.setError(context.getString(R.string.field_cant_be_empty));
60+
goal = 0;
61+
valid = false;
62+
}
63+
64+
if (Math.abs(goal) > MAX_ABS_VALUE) {
65+
tilGoal.setError(context.getString(R.string.too_rich_or_poor));
66+
valid = false;
67+
}
68+
69+
return valid;
70+
}
71+
72+
private void initTextWatchers() {
73+
etTitle.addTextChangedListener(new ClearErrorTextWatcher(tilTitle));
74+
etGoal.addTextChangedListener(new ClearErrorTextWatcher(tilGoal));
75+
}
76+
}

app/src/main/res/layout/fragment_edit_account.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,9 @@
2727
</android.support.design.widget.TextInputLayout>
2828

2929
<android.support.design.widget.TextInputLayout
30-
android:id="@+id/til_goal"
30+
android:id="@+id/tilGoal"
3131
android:layout_width="match_parent"
3232
android:layout_height="wrap_content"
33-
android:visibility="invisible"
3433
>
3534

3635
<EditText

0 commit comments

Comments
 (0)