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..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 @@ -7,8 +7,12 @@ 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.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.* import javax.inject.Inject @@ -16,6 +20,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,25 +36,28 @@ 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 <= ' ' } + AnswersProxy.get().logButton("Edit Account") + 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) { + 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 new file mode 100644 index 0000000..fc2596a --- /dev/null +++ b/app/src/main/java/com/blogspot/e_kanivets/moneytracker/util/validator/EditAccountValidator.java @@ -0,0 +1,70 @@ +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 @@