From 24fbc63e6e7748f9addccdbd1d15ac4a2d3c5a0b Mon Sep 17 00:00:00 2001 From: Evgenii Kanivets Date: Sun, 16 Sep 2018 08:16:29 +0200 Subject: [PATCH 1/2] #134. Add account goal to EditAccountFragment. --- .../edit/fragment/EditAccountFragment.kt | 20 +++-- .../util/validator/EditAccountValidator.java | 76 +++++++++++++++++++ .../main/res/layout/fragment_edit_account.xml | 3 +- 3 files changed, 91 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/com/blogspot/e_kanivets/moneytracker/util/validator/EditAccountValidator.java diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/edit/fragment/EditAccountFragment.kt b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/edit/fragment/EditAccountFragment.kt index a33586a..c383b65 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/edit/fragment/EditAccountFragment.kt +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/edit/fragment/EditAccountFragment.kt @@ -7,8 +7,11 @@ import android.view.View import com.blogspot.e_kanivets.moneytracker.R import com.blogspot.e_kanivets.moneytracker.R.layout import com.blogspot.e_kanivets.moneytracker.activity.base.BaseFragment +import com.blogspot.e_kanivets.moneytracker.controller.FormatController import com.blogspot.e_kanivets.moneytracker.controller.data.AccountController import com.blogspot.e_kanivets.moneytracker.entity.data.Account +import com.blogspot.e_kanivets.moneytracker.util.validator.EditAccountValidator +import com.blogspot.e_kanivets.moneytracker.util.validator.IValidator import kotlinx.android.synthetic.main.fragment_edit_account.* import javax.inject.Inject @@ -16,6 +19,10 @@ class EditAccountFragment : BaseFragment() { @Inject internal lateinit var accountController: AccountController + @Inject + internal lateinit var formatController: FormatController + + private lateinit var accountValidator: IValidator private lateinit var account: Account @@ -28,22 +35,23 @@ class EditAccountFragment : BaseFragment() { override fun initViews(view: View) { etTitle.setText(account.title) - etGoal.setText(account.goal.toString()) + etGoal.setText(formatController.formatPrecisionNone(account.goal)) viewColor.setBackgroundColor(account.color) val fabDone = view.rootView.findViewById(R.id.fabDone) fabDone.setOnClickListener { done() } + + accountValidator = EditAccountValidator(context!!, view) } private fun done() { - val title = etTitle.text.toString().trim { it <= ' ' } + if (accountValidator.validate()) { + val title = etTitle.text.toString().trim { it <= ' ' } + val goal = etGoal.text.toString().toDouble() - if (title.isEmpty()) { - tilTitle.error = getString(R.string.field_cant_be_empty) - } else { val newAccount = Account( account.id, title, account.curSum.toDouble(), - account.currency, account.goal, account.isArchived, account.color + account.currency, goal, account.isArchived, account.color ) val updated = accountController.update(newAccount) != null if (updated) { diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/util/validator/EditAccountValidator.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/util/validator/EditAccountValidator.java new file mode 100644 index 0000000..43f39f4 --- /dev/null +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/util/validator/EditAccountValidator.java @@ -0,0 +1,76 @@ +package com.blogspot.e_kanivets.moneytracker.util.validator; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.support.design.widget.TextInputLayout; +import android.view.View; +import android.widget.EditText; +import butterknife.BindView; +import butterknife.ButterKnife; +import com.blogspot.e_kanivets.moneytracker.R; +import com.blogspot.e_kanivets.moneytracker.entity.data.Account; + +/** + * Util class for EditAccount validation. + * Created on 16.09.2018. + * + * @author Evgenii Kanivets + */ + +public class EditAccountValidator implements IValidator { + + @NonNull + private final Context context; + + @BindView(R.id.tilTitle) + TextInputLayout tilTitle; + @BindView(R.id.etTitle) + EditText etTitle; + @BindView(R.id.tilGoal) + TextInputLayout tilGoal; + @BindView(R.id.etGoal) + EditText etGoal; + + public EditAccountValidator(@NonNull Context context, @NonNull View view) { + this.context = context; + ButterKnife.bind(this, view); + initTextWatchers(); + } + + @Override + public boolean validate() { + String title = etTitle.getText().toString().trim(); + double goal = Double.MAX_VALUE; + + try { + goal = Double.parseDouble(etGoal.getText().toString().trim()); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + + boolean valid = true; + + if (title.isEmpty()) { + tilTitle.setError(context.getString(R.string.field_cant_be_empty)); + valid = false; + } + + if (goal == Double.MAX_VALUE) { + tilGoal.setError(context.getString(R.string.field_cant_be_empty)); + goal = 0; + valid = false; + } + + if (Math.abs(goal) > MAX_ABS_VALUE) { + tilGoal.setError(context.getString(R.string.too_rich_or_poor)); + valid = false; + } + + return valid; + } + + private void initTextWatchers() { + etTitle.addTextChangedListener(new ClearErrorTextWatcher(tilTitle)); + etGoal.addTextChangedListener(new ClearErrorTextWatcher(tilGoal)); + } +} diff --git a/app/src/main/res/layout/fragment_edit_account.xml b/app/src/main/res/layout/fragment_edit_account.xml index c09d09a..b45d7ce 100644 --- a/app/src/main/res/layout/fragment_edit_account.xml +++ b/app/src/main/res/layout/fragment_edit_account.xml @@ -27,10 +27,9 @@ Date: Sun, 16 Sep 2018 08:32:20 +0200 Subject: [PATCH 2/2] #134. Formatting. --- .../edit/fragment/EditAccountFragment.kt | 3 +++ .../util/validator/EditAccountValidator.java | 18 ++++++------------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/edit/fragment/EditAccountFragment.kt b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/edit/fragment/EditAccountFragment.kt index c383b65..9d0fc17 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/edit/fragment/EditAccountFragment.kt +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/account/edit/fragment/EditAccountFragment.kt @@ -10,6 +10,7 @@ import com.blogspot.e_kanivets.moneytracker.activity.base.BaseFragment import com.blogspot.e_kanivets.moneytracker.controller.FormatController import com.blogspot.e_kanivets.moneytracker.controller.data.AccountController import com.blogspot.e_kanivets.moneytracker.entity.data.Account +import com.blogspot.e_kanivets.moneytracker.util.AnswersProxy import com.blogspot.e_kanivets.moneytracker.util.validator.EditAccountValidator import com.blogspot.e_kanivets.moneytracker.util.validator.IValidator import kotlinx.android.synthetic.main.fragment_edit_account.* @@ -45,6 +46,7 @@ class EditAccountFragment : BaseFragment() { } private fun done() { + AnswersProxy.get().logButton("Edit Account") if (accountValidator.validate()) { val title = etTitle.text.toString().trim { it <= ' ' } val goal = etGoal.text.toString().toDouble() @@ -55,6 +57,7 @@ class EditAccountFragment : BaseFragment() { ) val updated = accountController.update(newAccount) != null if (updated) { + AnswersProxy.get().logEvent("Edit Account") activity?.setResult(Activity.RESULT_OK) activity?.finish() } diff --git a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/util/validator/EditAccountValidator.java b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/util/validator/EditAccountValidator.java index 43f39f4..fc2596a 100644 --- a/app/src/main/java/com/blogspot/e_kanivets/moneytracker/util/validator/EditAccountValidator.java +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/util/validator/EditAccountValidator.java @@ -19,17 +19,12 @@ public class EditAccountValidator implements IValidator { - @NonNull - private final Context context; + @NonNull private final Context context; - @BindView(R.id.tilTitle) - TextInputLayout tilTitle; - @BindView(R.id.etTitle) - EditText etTitle; - @BindView(R.id.tilGoal) - TextInputLayout tilGoal; - @BindView(R.id.etGoal) - EditText etGoal; + @BindView(R.id.tilTitle) TextInputLayout tilTitle; + @BindView(R.id.etTitle) EditText etTitle; + @BindView(R.id.tilGoal) TextInputLayout tilGoal; + @BindView(R.id.etGoal) EditText etGoal; public EditAccountValidator(@NonNull Context context, @NonNull View view) { this.context = context; @@ -37,8 +32,7 @@ public EditAccountValidator(@NonNull Context context, @NonNull View view) { initTextWatchers(); } - @Override - public boolean validate() { + @Override public boolean validate() { String title = etTitle.getText().toString().trim(); double goal = Double.MAX_VALUE;