Advertisement
Guest User

Untitled

a guest
Dec 9th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.71 KB | None | 0 0
  1. package com.example.zprokhorenko.donationsapplication;
  2.  
  3.  
  4. import android.graphics.Color;
  5. import android.os.Bundle;
  6. import android.support.v4.app.Fragment;
  7. import android.telephony.PhoneNumberUtils;
  8. import android.text.Editable;
  9. import android.text.TextUtils;
  10. import android.text.TextWatcher;
  11. import android.util.Log;
  12. import android.view.LayoutInflater;
  13. import android.view.View;
  14. import android.view.ViewGroup;
  15. import android.widget.Button;
  16. import android.widget.EditText;
  17. import android.widget.ImageView;
  18.  
  19. import java.util.ArrayList;
  20. import java.util.logging.Logger;
  21.  
  22. import butterknife.Bind;
  23. import butterknife.ButterKnife;
  24. import butterknife.OnClick;
  25.  
  26.  
  27. /**
  28. * A simple {@link Fragment} subclass.
  29. * Use the {@link DAInputFragment#newInstance} factory method to
  30. * create an instance of this fragment.
  31. */
  32. public class DAInputFragment extends Fragment {
  33. @Bind(R.id.etName)
  34. EditText etName;
  35.  
  36. @Bind(R.id.etSum)
  37. EditText etSum;
  38.  
  39. @Bind(R.id.etPhone)
  40. EditText etPhone;
  41.  
  42. @Bind(R.id.etMail)
  43. EditText etMail;
  44.  
  45.  
  46. @Bind(R.id.etMessage)
  47. EditText etMessage;
  48.  
  49. @Bind(R.id.btnSendDonation)
  50. Button btnSendDonation;
  51.  
  52. @Bind(R.id.ivClose)
  53. ImageView ivClose;
  54.  
  55.  
  56. public static final int CORRECT_DATA = 2;
  57. public static final int EMPTY_DATA = 0;
  58. public static final int INCORRECT_DATA = 1;
  59.  
  60. int minimSum = 10;
  61. int minSumFromDa = 15;
  62.  
  63. String[] mailError = {"Введите e-mail", "Некорректный e-mail"};
  64.  
  65. String[] phoneError = {"Введите номер", "Неправильный номер"};
  66.  
  67. String[] sumError = {"Введите сумму", "Сумма должна быть больше " + minSumFromDa + " р"};
  68.  
  69.  
  70. ValidationResult mailValidationResult;
  71. ValidationResult phoneValidationResult;
  72. ValidationResult sumValidationResult;
  73.  
  74.  
  75.  
  76.  
  77. public DAInputFragment() {
  78. // Required empty public constructor
  79. }
  80.  
  81.  
  82. public static DAInputFragment newInstance() {
  83.  
  84. return new DAInputFragment();
  85. }
  86.  
  87. @Override
  88. public void onCreate(Bundle savedInstanceState) {
  89. super.onCreate(savedInstanceState);
  90.  
  91.  
  92. }
  93.  
  94. @Override
  95. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  96. Bundle savedInstanceState) {
  97. View v = inflater.inflate(R.layout.fragment_dainput, container, false);
  98. ButterKnife.bind( this, v);
  99. setOnFocusChangedListener();
  100.  
  101.  
  102.  
  103.  
  104.  
  105. return v;
  106. }
  107.  
  108.  
  109. @OnClick (R.id.ivClose)
  110. public void closeDonations(){
  111. getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();
  112.  
  113. }
  114.  
  115.  
  116.  
  117. private void setOnFocusChangedListener(){
  118. etSum.setOnFocusChangeListener(new View.OnFocusChangeListener() {
  119. @Override
  120. public void onFocusChange(View view, boolean isFocused) {
  121. if(!isFocused){
  122. validateData();
  123. setSumValidationResult();
  124. }
  125.  
  126. }
  127. });
  128.  
  129. etPhone.setOnFocusChangeListener(new View.OnFocusChangeListener() {
  130. @Override
  131. public void onFocusChange(View view, boolean isFocused) {
  132. if(!isFocused) {
  133. validateData();
  134. setPhoneValidationResult();
  135.  
  136. }
  137. }
  138. });
  139.  
  140. etMail.setOnFocusChangeListener(new View.OnFocusChangeListener() {
  141. @Override
  142. public void onFocusChange(View view, boolean isFocused) {
  143. if(!isFocused) {
  144. validateData();
  145. setMailValidationResult();
  146.  
  147.  
  148.  
  149. }
  150. }
  151. });
  152. }
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160. private ValidationResult validateSum(int minSum){
  161. ValidationResult dataValidator;
  162.  
  163. if (minSum < minimSum){
  164. minSum = minimSum;
  165. }
  166.  
  167.  
  168.  
  169. if (etSum.getText().toString().equalsIgnoreCase("")){
  170.  
  171. dataValidator = new ValidationResult(EMPTY_DATA, false);
  172.  
  173. }else if(Integer.parseInt(etSum.getText().toString()) >= minSum){
  174.  
  175. dataValidator = new ValidationResult(CORRECT_DATA, true);
  176.  
  177.  
  178. }else {
  179.  
  180. dataValidator = new ValidationResult(INCORRECT_DATA, false);
  181.  
  182.  
  183. }
  184.  
  185. return dataValidator;
  186.  
  187.  
  188. }
  189.  
  190.  
  191. @OnClick(R.id.btnSendDonation)
  192. public void onBtnClick(){
  193.  
  194. validateData();
  195. setValidationResultsOnViews();
  196.  
  197.  
  198. }
  199.  
  200.  
  201.  
  202.  
  203.  
  204. private void setErrorMessage(ValidationResult dataValidator, EditText editText, String [] errorMessages){
  205. if(!dataValidator.isValid){
  206. editText.setError(errorMessages[dataValidator.getErrorCode()]);
  207.  
  208. }
  209.  
  210.  
  211. }
  212.  
  213. private void clearErrorMessage(ValidationResult dataValidator, EditText editText){
  214. if(dataValidator.isValid){
  215. editText.setError(null);
  216.  
  217. }
  218.  
  219.  
  220. }
  221.  
  222.  
  223.  
  224. private void setValidationResults (){
  225. mailValidationResult = validateMail();
  226. phoneValidationResult = validatePhone();
  227. sumValidationResult = validateSum(minSumFromDa);
  228.  
  229. }
  230.  
  231.  
  232. private boolean isDataValid(){
  233. setValidationResults();
  234. return (mailValidationResult.getIsValid() && phoneValidationResult.getIsValid() && sumValidationResult.getIsValid());
  235.  
  236. }
  237.  
  238.  
  239. private void validateData(){
  240. if(isDataValid()){
  241. btnSendDonation.setBackgroundColor(Color.parseColor("#ff3b80"));
  242. btnSendDonation.setTextColor(Color.parseColor("#ffffff"));
  243. }else {
  244. btnSendDonation.setBackgroundColor(Color.parseColor("#f5f5f5"));
  245. btnSendDonation.setTextColor(Color.parseColor("#838383"));
  246. }
  247. }
  248.  
  249.  
  250. private void setValidationResultsOnViews(){
  251. setMailValidationResult();
  252. setPhoneValidationResult();
  253. setSumValidationResult();
  254.  
  255. }
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262. private void setMailValidationResult(){
  263. setValidationResults();
  264. if(!mailValidationResult.getIsValid()){
  265. setErrorMessage(mailValidationResult, etMail, mailError);
  266.  
  267. } else {
  268. clearErrorMessage(mailValidationResult, etMail);
  269.  
  270. }
  271.  
  272. }
  273.  
  274.  
  275. private void setPhoneValidationResult(){
  276. setValidationResults();
  277. if(!phoneValidationResult.getIsValid()){
  278. setErrorMessage(phoneValidationResult, etPhone, phoneError);
  279.  
  280. }else {
  281. clearErrorMessage(phoneValidationResult, etPhone);
  282. }
  283.  
  284. }
  285.  
  286. private void setSumValidationResult(){
  287. setValidationResults();
  288. if(!sumValidationResult.getIsValid()){
  289. setErrorMessage(sumValidationResult, etSum, sumError);
  290.  
  291. }else {
  292. clearErrorMessage(sumValidationResult, etSum);
  293.  
  294. }
  295.  
  296. }
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304. private ValidationResult validateMail(){
  305.  
  306. ValidationResult dataValidator;
  307.  
  308. if (etMail.getText().toString().equalsIgnoreCase("")){
  309.  
  310. dataValidator = new ValidationResult(EMPTY_DATA, false);
  311.  
  312. }else if(isValidEmail(etMail.getText().toString())){
  313.  
  314. dataValidator = new ValidationResult(CORRECT_DATA, true);
  315.  
  316.  
  317. }else {
  318.  
  319. dataValidator =new ValidationResult(INCORRECT_DATA, false);
  320.  
  321.  
  322. }
  323.  
  324. return dataValidator;
  325.  
  326.  
  327. }
  328.  
  329.  
  330.  
  331. private ValidationResult validatePhone(){
  332. ValidationResult dataValidator;
  333.  
  334. if (etPhone.getText().toString().equalsIgnoreCase("")){
  335.  
  336. dataValidator = new ValidationResult(EMPTY_DATA, false);
  337.  
  338. }else if(isValidCellPhone(etPhone.getText().toString())){
  339.  
  340. dataValidator = new ValidationResult(CORRECT_DATA, true);
  341.  
  342.  
  343.  
  344. }else {
  345.  
  346. dataValidator =new ValidationResult(INCORRECT_DATA, false);
  347.  
  348.  
  349. }
  350.  
  351. return dataValidator;
  352.  
  353. }
  354.  
  355.  
  356. public final static boolean isValidEmail(CharSequence target) {
  357. if (TextUtils.isEmpty(target)) {
  358. return false;
  359. } else {
  360. return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
  361. }
  362. }
  363.  
  364.  
  365. public boolean isValidCellPhone(String number)
  366. {
  367. return (number.length() == 10 );
  368.  
  369.  
  370. }
  371.  
  372. public class ValidationResult{
  373. private int errorCode;
  374. private boolean isValid;
  375.  
  376. public ValidationResult( int errorCode, boolean isValid){
  377. this.errorCode = errorCode;
  378. this.isValid =isValid;
  379. }
  380.  
  381.  
  382. public int getErrorCode(){
  383. return errorCode;
  384. }
  385.  
  386. public boolean getIsValid(){
  387. return isValid;
  388. }
  389. }
  390.  
  391.  
  392. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement