Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.foxtrapp.mysmallcommunity.ui.activities;
- import android.app.Activity;
- import android.app.ProgressDialog;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Color;
- import android.net.Uri;
- import android.nfc.Tag;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.support.annotation.Nullable;
- import android.support.v7.widget.Toolbar;
- import android.text.Editable;
- import android.text.TextWatcher;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.view.LayoutInflater;
- import android.view.MenuItem;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.AdapterView;
- import android.widget.ArrayAdapter;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Spinner;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.foxtrapp.mysmallcommunity.R;
- import com.foxtrapp.mysmallcommunity.api.ErrorHandler;
- import com.foxtrapp.mysmallcommunity.api.RetrofitAdapter;
- import com.foxtrapp.mysmallcommunity.base.BaseActivity;
- import com.foxtrapp.mysmallcommunity.global.Constants;
- import com.foxtrapp.mysmallcommunity.global.Tags;
- import com.foxtrapp.mysmallcommunity.interfaces.PhotoChooser;
- import com.foxtrapp.mysmallcommunity.models.APIModel.FormRegistrationError;
- import com.foxtrapp.mysmallcommunity.models.ErrorField;
- import com.foxtrapp.mysmallcommunity.ui.errors.ErrorsShower;
- import com.foxtrapp.mysmallcommunity.ui.fragments.dialog_fragment.ChooseDialogFragment;
- import com.foxtrapp.mysmallcommunity.utilities.KeyBoard;
- import com.foxtrapp.mysmallcommunity.utilities.PhotoUploadManager;
- import com.foxtrapp.mysmallcommunity.utilities.RquestBodyConvertor;
- import com.foxtrapp.mysmallcommunity.utilities.TokenProvider;
- import com.foxtrapp.mysmallcommunity.utilities.Waiters;
- import com.foxtrapp.mysmallcommunity.utility.CameraUntil;
- import com.foxtrapp.mysmallcommunity.utility.StreamContent;
- import com.nvanbenschoten.motion.ParallaxImageView;
- import java.util.ArrayList;
- import java.util.List;
- import de.hdodenhof.circleimageview.CircleImageView;
- import okhttp3.MediaType;
- import okhttp3.MultipartBody;
- import okhttp3.RequestBody;
- import retrofit2.Call;
- import retrofit2.Callback;
- import retrofit2.Response;
- /**
- * Created by root on 26/12/16.
- */
- public class RegisterByEmailActivity extends BaseActivity implements PhotoChooser {
- Button confirm;
- EditText firstName;
- EditText familyName;
- EditText email;
- EditText password;
- EditText confirmPassword;
- TextView errorFirstName, errorFamilyName, errorEmail, errorPassword, errorConfirmPassword, errorGender;
- Spinner gender;
- CircleImageView profilePicture;
- private ProgressDialog progressDialog;
- ParallaxImageView mBackground;
- boolean firstTime = true;
- boolean firstNameV = false, familyNameV = false,
- emailValid = false, passwordValid = false,
- confirmPasswordValid = false, genderValid = false;
- private Callback<Object> registerCallBack;
- private Uri uri;
- private Bitmap mBitmap;
- private boolean myFirst = true;
- @Override
- protected void onPause() {
- super.onPause();
- mBackground.unregisterSensorManager();
- }
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- this.requestWindowFeature(Window.FEATURE_NO_TITLE);
- this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
- super.onCreate(savedInstanceState);
- setContentView(R.layout.register_by_email);
- Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
- myToolbar.setTitle("");
- setSupportActionBar(myToolbar);
- android.support.v7.app.ActionBar bar = getSupportActionBar();
- bar.setDisplayShowCustomEnabled(true);
- bar.setDisplayHomeAsUpEnabled(true);
- findUI();
- setEvents();
- }
- @Override
- protected void onResume() {
- super.onResume();
- // Register a SensorManager to begin effect
- mBackground.registerSensorManager();
- }
- private void findUI() {
- confirm = (Button) findViewById(R.id.confirm);
- firstName = (EditText) findViewById(R.id.first_name);
- familyName = (EditText) findViewById(R.id.family_name);
- email = (EditText) findViewById(R.id.email);
- password = (EditText) findViewById(R.id.password);
- confirmPassword = (EditText) findViewById(R.id.confirm_password);
- gender = $(R.id.gender);
- profilePicture = (CircleImageView) findViewById(R.id.ivUserPhoto);
- progressDialog = Waiters.getProgressDialoge(this);
- mBackground = $(R.id.background_image);
- errorFirstName = $(R.id.error_first_name);
- errorFamilyName = $(R.id.error_family_name);
- errorEmail = $(R.id.error_email);
- errorPassword = $(R.id.error_password);
- errorConfirmPassword = $(R.id.error_confirm_password);
- errorGender = $(R.id.error_gender);
- List<SpinnerItem> items = new ArrayList<SpinnerItem>();
- items.add(new SpinnerItem("Gender"));
- items.add(new SpinnerItem("Male"));
- items.add(new SpinnerItem("Female"));
- SpinnerHintAdapter adapter = new SpinnerHintAdapter(this,R.id.gender, R.id.main_text, items, gender);
- adapter.setDropDownViewResource(R.layout.gender_drop_down_item);
- gender.setAdapter(adapter);
- gender.setSelection(0);
- confirm.setTransformationMethod(null);
- password.setTypeface(email.getTypeface());
- confirmPassword.setTypeface(email.getTypeface());
- checkConfirmValidity();
- }
- void checkFirstName(boolean hasFocus){
- String err = "";
- if (!hasFocus) {
- if (firstName.getText().length() < Constants.F_NAME_MIN_LENGTH) {
- firstNameV = false;
- err = "First name is too short";
- } else if (firstName.getText().length() > Constants.F_NAME_MAX_LENGTH) {
- firstNameV = false;
- err = "Family name is too long";
- } else
- firstNameV = true;
- }
- ErrorsShower.setError(this,firstName, errorFirstName, err);
- checkConfirmValidity();
- }
- private void setEvents() {
- firstName.setOnFocusChangeListener(new View.OnFocusChangeListener() {
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- checkFirstName(hasFocus);
- }
- });
- familyName.setOnFocusChangeListener(new View.OnFocusChangeListener() {
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- checkFamilyName(hasFocus);
- }
- });
- email.setOnFocusChangeListener(new View.OnFocusChangeListener() {
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- checkEmail(hasFocus);
- }
- });
- password.setOnFocusChangeListener(new View.OnFocusChangeListener() {
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- checkPassword(hasFocus);
- }
- });
- confirmPassword.setOnFocusChangeListener(new View.OnFocusChangeListener() {
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- checkConfirmPassword(hasFocus);
- // KeyBoard.hideKeyboard();
- }
- });
- confirmPassword.setOnEditorActionListener(new TextView.OnEditorActionListener() {
- @Override
- public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- checkConfirmPassword(false);
- checkConfirmValidity();
- return false;
- }
- });
- confirmPassword.addTextChangedListener(new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
- @Override
- public void afterTextChanged(Editable s) {
- checkConfirmPassword(false);
- checkConfirmValidity();
- }
- });
- gender.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- checkGender(position);
- Log.i(Tags.byEmail, "on item slected");;
- if(position == 0 && !firstTime){
- gender.setBackground(getResources().getDrawable(R.drawable.red_rounded_text_field));
- if(view != null){
- Log.i(Tags.byEmail, "setting the text:" + ((SpinnerItem)gender.getSelectedItem()).getName());
- ((TextView)view).setText(((SpinnerItem)gender.getSelectedItem()).getName());
- }
- }
- else{
- gender.setBackground(getResources().getDrawable(R.drawable.normal_rounded_text_field));
- Log.i(Tags.byEmail, "setting the text2:"+((SpinnerItem)gender.getSelectedItem()).getName());
- if(view != null) {
- ((TextView) view).setText(((SpinnerItem) gender.getSelectedItem()).getName());
- }
- }
- firstTime = false;
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
- });
- confirm.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- firstTime = false;
- confirmPasswordValid = confirmPassword.getText().toString().equals(password.getText().toString());
- if (firstNameV && familyNameV && emailValid && passwordValid && confirmPasswordValid && genderValid) {
- RegisterByEmailActivity.this.login();
- } else {
- Toast.makeText(RegisterByEmailActivity.this, getResources().getString(R.string.validation_err_msg), Toast.LENGTH_LONG).show();
- checkFirstName(false);
- checkFamilyName(false);
- checkEmail(false);
- checkPassword(false);
- checkConfirmPassword(false);
- checkGender(gender.getSelectedItemPosition());
- }
- }
- });
- profilePicture.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- openPhotoDialog();
- }
- });
- registerCallBack = new Callback<Object>() {
- @Override
- public void onResponse(Call<Object> call, Response<Object> response) {
- progressDialog.dismiss();
- Log.i(Tags.byEmail, "code = " + response.code());
- if (response.isSuccessful()) {
- Log.i(Tags.byEmail, "the user has been registered");
- Toast.makeText(RegisterByEmailActivity.this, getResources().getString(R.string.register_msg), Toast.LENGTH_LONG).show();
- goToLogin();
- finish();
- } else if (response.code() == 400) {
- FormRegistrationError errors = ErrorHandler.getErrors(response.errorBody());
- applyErrors(errors);
- }
- }
- @Override
- public void onFailure(Call<Object> call, Throwable t) {
- progressDialog.dismiss();
- }
- };
- }
- void applyErrors(FormRegistrationError errors){
- for(ErrorField error: errors.getData()){
- Log.i(Tags.byEmail, "error = " + error.getErrorMessage());
- switch (error.getFieldName()){
- case "firstName":
- ErrorsShower.setError(this,firstName, errorFirstName, error.getErrorMessage());
- break;
- case "lastName":
- ErrorsShower.setError(this,familyName, errorFamilyName, error.getErrorMessage());
- break;
- case "gender":
- break;
- case "email":
- ErrorsShower.setError(this,email, errorEmail, error.getErrorMessage());
- break;
- case "deviceToken":
- break;
- case "password":
- ErrorsShower.setError(this,password, errorPassword, error.getErrorMessage());
- break;
- case "confirmPassword":
- break;
- case "post_image":
- break;
- default:
- Toast.makeText(this, error.getErrorMessage(), Toast.LENGTH_LONG).show();
- break;
- }
- }
- }
- private void checkConfirmValidity() {
- if(emailValid && passwordValid && confirmPasswordValid && firstNameV && familyNameV){
- confirm.setAlpha(Constants.FULL_ALPHA);
- return;
- }
- confirm.setAlpha(Constants.DISABLED_BUTTON_ALPHA);
- }
- private void checkGender(int position) {
- if(firstTime){
- return;
- }
- if(position == 0){
- Log.i(Tags.byEmail, "position= " + position);
- Log.i(Tags.byEmail, "checkinng the gender");
- gender.setBackground(getResources().getDrawable(R.drawable.red_rounded_text_field));
- errorGender.setText("Gender can not be empty");
- errorGender.setVisibility(View.VISIBLE);
- genderValid = false;
- return;
- }
- gender.setBackground(getResources().getDrawable(R.drawable.normal_rounded_text_field));
- errorGender.setVisibility(View.GONE);
- genderValid = true;
- checkConfirmValidity();
- }
- private void checkConfirmPassword(boolean hasFocus) {
- String err = "";
- Log.i(Tags.byEmail, "inside on focus");
- if (!confirmPassword.getText().toString().equals(password.getText().toString())) {
- err = "The two passwords should be identical";
- confirmPasswordValid = false;
- } else
- confirmPasswordValid = true;
- ErrorsShower.setError(this,confirmPassword, errorConfirmPassword, err);
- checkConfirmValidity();
- }
- private void checkPassword(boolean hasFocus) {
- String err = "";
- if (!hasFocus) {
- if (password.getText().length() < Constants.PASSWORD_MIN_LENGTH) {
- err = "the new password is too short";
- passwordValid = false;
- } else
- passwordValid = true;
- }
- ErrorsShower.setError(this,password, errorPassword, err);
- checkConfirmValidity();
- }
- private void checkEmail(boolean hasFocus) {
- if (!hasFocus) {
- emailValid = android.util.Patterns.EMAIL_ADDRESS.matcher(email.getText()).matches();
- ErrorsShower.setError(this,email, errorEmail, emailValid ? "" : "Email is not valid email addressret");
- }
- checkConfirmValidity();
- }
- private void checkFamilyName(boolean hasFocus) {
- String err = "";
- if (!hasFocus) {
- Log.i(Tags.byEmail, "something could be changed");
- if (familyName.getText().length() < Constants.F_NAME_MIN_LENGTH) {
- err = "Family name is too short";
- familyNameV = false;
- } else if (familyName.getText().length() > Constants.F_NAME_MAX_LENGTH) {
- err = "Family name is too long";
- familyNameV = false;
- } else
- familyNameV = true;
- }
- ErrorsShower.setError(this,familyName, errorFamilyName, err);
- checkConfirmValidity();
- }
- private void goToLogin() {
- Intent intent = new Intent(this, LoginByEmailActivity.class);
- String emailValue = email.getText().toString();
- String passwordValue = password.getText().toString();
- intent.putExtra("email", emailValue);
- intent.putExtra("password", passwordValue );
- startActivity(intent);
- }
- private void login() {
- registerBackground();
- }
- private void registerBackground() {
- new AsyncTask<Void,String,String>() {
- @Override
- protected String doInBackground(Void... params) {
- try {
- return TokenProvider.getToken(RegisterByEmailActivity.this);
- }
- catch (Exception e){
- e.printStackTrace();
- return "";
- }
- }
- @Override
- protected void onPostExecute(String token) {
- sendUserData(token);
- }
- }.execute(null, null, null);
- }
- private void openPhotoDialog(){
- Bundle bundle = new Bundle();
- // bundle.putString("type", "event");
- uri = CameraUntil.getOutputMediaFileUri(CameraUntil.MEDIA_TYPE_IMAGE);
- bundle.putParcelable(Constants.PHOTO_URI, uri);
- ChooseDialogFragment dialog = new ChooseDialogFragment();
- dialog.setArguments(bundle);
- dialog.show(getSupportFragmentManager(), "Choose");
- KeyBoard.hideKeyboard(this);
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if(resultCode == Activity.RESULT_OK){
- if(requestCode == Constants.REQUEST_CAMERA){
- Log.i(Tags.byEmail, "requesting the camera");
- Log.i(Tags.byEmail, "uri = " + uri.getPath());
- Intent intent = new Intent(this, CropActivity.class);
- intent.putExtra(Constants.TYPE, Constants.CAMERA_CAPTURE);
- intent.putExtra(Constants.PHOTO_URI, uri);
- intent.putExtra(Constants.FORM_CROPS, Constants.CIRCLE);
- startActivityForResult(intent,Constants.PIC_CROP);
- } else if(requestCode == Constants.SELECT_PHOTO){
- Intent intent = new Intent(this, CropActivity.class);
- // Uri selectedImage = data.getData();
- String chosenPhotoPath = PhotoUploadManager.getChosenPhoto(data, this);
- if(chosenPhotoPath == null)
- return;
- uri = Uri.parse(chosenPhotoPath);
- Log.i(Tags.byEmail, "uri = " + uri);
- intent.putExtra(Constants.TYPE, Constants.SELECT_PHOTO);
- intent.putExtra(Constants.PHOTO_URI, uri);
- intent.putExtra(Constants.FORM_CROPS, Constants.SQUARE);
- startActivityForResult(intent, Constants.PIC_CROP);
- }else if(requestCode == Constants.PIC_CROP){
- uri = data.getParcelableExtra(Constants.URI_DATA);
- mBitmap =BitmapFactory.decodeFile(uri.getPath());
- profilePicture.setImageBitmap(mBitmap);
- }
- }
- }
- @Override
- public void choose() {
- PhotoUploadManager.openSinglePhoto(this);
- }
- public void sendUserData(String tokenS){
- progressDialog.show();
- RequestBody fName = RquestBodyConvertor.String2RequestBody(firstName.getText().toString());
- RequestBody token = RquestBodyConvertor.String2RequestBody(tokenS);
- RequestBody lName = RquestBodyConvertor.String2RequestBody(familyName.getText().toString());
- RequestBody pass = RquestBodyConvertor.String2RequestBody(password.getText().toString());
- RequestBody gen = RquestBodyConvertor.String2RequestBody(((SpinnerItem)gender.getSelectedItem()).getName().toString().toLowerCase());
- RequestBody mail = RquestBodyConvertor.String2RequestBody(email.getText().toString());
- MultipartBody.Part body = null;
- if(mBitmap != null){
- StreamContent s = new StreamContent(mBitmap);
- final RequestBody requestFile =
- RequestBody.create(MediaType.parse("multipart/form-data"), s.getInputStream());
- body =
- MultipartBody.Part.createFormData("post_image", "test.jpg", requestFile);
- }
- RetrofitAdapter.getInterface().registerUserByEmail(
- fName,
- lName,
- gen,
- mail,
- token,
- pass,
- pass,
- body
- ).enqueue(registerCallBack);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int id = item.getItemId();
- if (id == android.R.id.home) {
- onBackPressed();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- }
- class SpinnerItem {
- public SpinnerItem(String name){
- this.name = name;
- }
- public String getName(){
- return name;
- }
- String name;
- public void setName(String name) {
- this.name = name;
- }
- }
- class SpinnerHintAdapter extends ArrayAdapter<SpinnerItem> {
- LayoutInflater flater;
- List<SpinnerItem> items;
- boolean firstTime = true;
- Spinner gender;
- public SpinnerHintAdapter(Activity context, int resourceId, int textViewId, List<SpinnerItem> list, Spinner parent){
- super(context,resourceId,textViewId, list);
- flater = context.getLayoutInflater();
- this.items = list;
- this.gender = parent;
- }
- @Override
- public int getCount() {
- return items.size();
- }
- @Nullable
- @Override
- public SpinnerItem getItem(int position) {
- return items.get(position);
- }
- @Override
- public long getItemId(int position) {
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- SpinnerItem spinnerItem = getItem(position);
- View rowView = flater.inflate(R.layout.gender_item ,null,true);
- TextView txtTitle = (TextView) rowView.findViewById(R.id.main_text);
- txtTitle.setText(spinnerItem.getName());
- txtTitle.setTextColor(txtTitle.getResources().getColor(R.color.color_white));
- Log.i(Tags.byEmail, "*****"+ spinnerItem.getName());
- gender.setVisibility(View.VISIBLE);
- return rowView;
- }
- @Override
- public View getDropDownView(int position, View convertView, ViewGroup parent) {
- firstTime = false;
- SpinnerItem rowItem = getItem(position);
- View rowView = flater.inflate(R.layout.gender_drop_down_item ,null,true);
- TextView txtTitle = (TextView) rowView.findViewById(R.id.drop_down_text);
- txtTitle.setText(rowItem.getName());
- if(!isEnabled(position)){
- txtTitle.setBackground(txtTitle.getResources().getDrawable(R.drawable.normal_rounded_text_field));
- txtTitle.setTextColor(Color.parseColor("#777777"));
- }
- // TextView selectedItem = (TextView) gender.getSelectedView();
- // selectedItem.setBackground(null);
- // gender.setBackground(null);
- // selectedItem.setText("");
- // Log.i(Tags.byEmail, "====" + rowItem.getName());
- parent.setBackground(parent.getResources().getDrawable(R.drawable.normal_rounded_text_field));
- txtTitle.setEnabled(isEnabled(position));
- gender.setVisibility(View.INVISIBLE);
- return rowView;
- }
- @Override
- public boolean isEnabled(int position) {
- if(position == 0)
- return false;
- return super.isEnabled(position);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement