package com.ijoomer.src;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.provider.MediaStore;
import android.text.Html;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.TextView.BufferType;
import com.ijoomer.common.classes.IjoomerRegistrationMaster;
import com.ijoomer.common.classes.IjoomerSpannable;
import com.ijoomer.common.classes.IjoomerUtilities;
import com.ijoomer.common.configuration.IjoomerGlobalConfiguration;
import com.ijoomer.customviews.IjoomerButton;
import com.ijoomer.customviews.IjoomerCheckBox;
import com.ijoomer.customviews.IjoomerEditText;
import com.ijoomer.customviews.IjoomerTextView;
import com.ijoomer.oauth.IjoomerRegistration;
import com.ijoomer.oauth.IjoomerUsersDataProvider;
import com.ijoomer.weservice.IjoomerWebService;
import com.ijoomer.weservice.WebCallListener;
import com.smart.framework.CustomAlertNeutral;
/**
* This Class Contains All Method Related To IjoomerRegistrationStep1Activity.
*
* @author tasol
*
*/
public class IjoomerRegistrationStep1Activity_v30 extends IjoomerRegistrationMaster {
private LinearLayout lnrTermsNCondition;
private IjoomerTextView txtGallery;
private IjoomerTextView txtChange;
private IjoomerTextView txtCapture;
private IjoomerTextView txtTermsNCondition;
private IjoomerEditText edtName;
private IjoomerEditText edtUserName;
private IjoomerEditText edtPassword;
private IjoomerEditText edtEmail;
private IjoomerButton btnContinue;
private IjoomerButton btnCancle;
private IjoomerCheckBox chkTermsNCondition;
private ImageView imgUser;
private Spinner spnRegistrationType;
private LinearLayout userphotoLayout;
private String selectedImagePath = "";
final private int PICK_IMAGE = 1;
final private int CAPTURE_IMAGE = 2;
/**
* Overrides methods
*/
@Override
public int setLayoutId() {
return R.layout.ijoomer_registration_step1_v30;
}
@Override
public void initComponents() {
userphotoLayout = (LinearLayout) findViewById(R.id.userphoto);
lnrTermsNCondition = (LinearLayout) findViewById(R.id.lnrTermsNCondition);
txtCapture = (IjoomerTextView) findViewById(R.id.txtCapture);
txtGallery = (IjoomerTextView) findViewById(R.id.txtGallery);
txtTermsNCondition = (IjoomerTextView) findViewById(R.id.txtTermsNCondition);
txtTermsNCondition.setMovementMethod(new LinkMovementMethod());
txtTermsNCondition.setText(addClickablePart(Html.fromHtml(getString(R.string.terms_n_condition_first) + " " + getString(R.string.terms_n_condition_second))),
BufferType.SPANNABLE);
txtChange = (IjoomerTextView) findViewById(R.id.txtChange);
edtName = (IjoomerEditText) findViewById(R.id.edtName);
edtUserName = (IjoomerEditText) findViewById(R.id.edtUserName);
edtPassword = (IjoomerEditText) findViewById(R.id.edtPassword);
edtEmail = (IjoomerEditText) findViewById(R.id.edtEmail);
btnContinue = (IjoomerButton) findViewById(R.id.btnContinue);
btnCancle = (IjoomerButton) findViewById(R.id.btnCancle);
imgUser = (ImageView) findViewById(R.id.imgUser);
chkTermsNCondition = (IjoomerCheckBox) findViewById(R.id.chkTermsNCondition);
spnRegistrationType = (Spinner) findViewById(R.id.spnRegistrationType);
selectedImagePath = IjoomerGlobalConfiguration.getDefaultAvatar();
imgUser.setImageBitmap(decodeFile(selectedImagePath));
getProfileType();
}
@Override
public void prepareViews() {
((IjoomerTextView) getHeaderView().findViewById(R.id.txtHeader)).setText(getString(R.string.header_registration));
if(IjoomerGlobalConfiguration.getRegistrationWith().equalsIgnoreCase("joomla")){
userphotoLayout.setVisibility(View.GONE);
btnContinue.setText(R.string.submit);
}
if (IjoomerGlobalConfiguration.isEnableTerms()) {
lnrTermsNCondition.setVisibility(View.VISIBLE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_CANCELED) {
if (requestCode == PICK_IMAGE) {
selectedImagePath = getAbsolutePath(data.getData());
imgUser.setImageBitmap(decodeFile(selectedImagePath));
} else if (requestCode == CAPTURE_IMAGE) {
selectedImagePath = getImagePath();
imgUser.setImageBitmap(decodeFile(selectedImagePath));
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
}
@Override
public void setActionListeners() {
txtChange.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (selectedImagePath.contains("Female")) {
selectedImagePath = IjoomerGlobalConfiguration.getDefaultAvatar();
imgUser.setImageBitmap(decodeFile(selectedImagePath));
} else {
selectedImagePath = IjoomerGlobalConfiguration.getDefaultAvatarFemale();
imgUser.setImageBitmap(decodeFile(selectedImagePath));
}
}
});
imgUser.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
txtGallery.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, ""), PICK_IMAGE);
}
});
txtCapture.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, setImageUri());
startActivityForResult(intent, CAPTURE_IMAGE);
}
});
btnContinue.setOnClickListener(new OnClickListener() {
@SuppressWarnings("unchecked")
@Override
public void onClick(View paramView) {
hideSoftKeyboard();
boolean validationFlag = true;
if (edtName.getText().toString().trim().length() <= 0) {
edtName.setError(getString(R.string.validation_value_required));
validationFlag = false;
}
if (edtUserName.getText().toString().trim().length() <= 0) {
edtUserName.setError(getString(R.string.validation_value_required));
validationFlag = false;
}
if (edtPassword.getText().toString().trim().length() <= 0) {
edtPassword.setError(getString(R.string.validation_value_required));
validationFlag = false;
}
if (edtEmail.getText().toString().trim().length() <= 0) {
edtEmail.setError(getString(R.string.validation_value_required));
validationFlag = false;
} else {
if (!IjoomerUtilities.emailValidator(edtEmail.getText().toString().trim())) {
validationFlag = false;
edtEmail.setError(getString(R.string.validation_invalid_email));
}
}
if (IjoomerGlobalConfiguration.isEnableTerms() && validationFlag && !chkTermsNCondition.isChecked()) {
IjoomerUtilities.getCustomOkDialog(getString(R.string.registration), getString(R.string.accept_terms_and_condition), getString(R.string.ok),
R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() {
@Override
public void NeutralMethod() {
}
});
validationFlag = false;
}
if (validationFlag) {
final SeekBar proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_register_newuser));
if(IjoomerGlobalConfiguration.getRegistrationWith().equalsIgnoreCase("joomla")){
new IjoomerRegistration(IjoomerRegistrationStep1Activity_v30.this).signUpJoomlaUser(edtName.getText().toString().trim(), edtUserName.getText()
.toString().trim(), edtPassword.getText().toString().trim(), edtEmail.getText().toString(), new WebCallListener() {
@Override
public void onProgressUpdate(int progressCount) {
proSeekBar.setProgress(progressCount);
}
@Override
public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) {
if (responseCode == 200) {
IjoomerUtilities.getCustomOkDialog(getString(R.string.dialog_loading_registration), getString(R.string.registration_successfully), getString(R.string.ok),
R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() {
@Override
public void NeutralMethod() {
Intent intent = new Intent("clearStackActivity");
intent.setType("text/plain");
sendBroadcast(intent);
IjoomerWebService.cookies = null;
loadNew(IjoomerLoginActivity.class, IjoomerRegistrationStep1Activity_v30.this, true);
finish();
}
});
} else {
responseMessageHandler(responseCode, true);
}
}
});
}else{
final String profileType = ((ArrayList<HashMap<String, String>>) spnRegistrationType.getTag()).get(spnRegistrationType.getSelectedItemPosition()).get("id");
new IjoomerRegistration(IjoomerRegistrationStep1Activity_v30.this).signUpNewUser(selectedImagePath, edtName.getText().toString().trim(), edtUserName.getText()
.toString().trim(), edtPassword.getText().toString().trim(), edtEmail.getText().toString(), profileType, new WebCallListener() {
@Override
public void onProgressUpdate(int progressCount) {
proSeekBar.setProgress(progressCount);
}
@Override
public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) {
if (responseCode == 200) {
if((Boolean) data2){
loadNew(IjoomerRegistrationStep2Activity.class, IjoomerRegistrationStep1Activity_v30.this, false);
}else{
IjoomerUtilities.getCustomOkDialog(getString(R.string.dialog_loading_registration), getString(R.string.registration_successfully), getString(R.string.ok),
R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() {
@Override
public void NeutralMethod() {
finish();
}
});
}
} else {
responseMessageHandler(responseCode, true);
}
}
});
}
}
}
});
btnCancle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View paramView) {
finish();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
}
/**
* Class methods
*/
/**
* This method used to get registration profile type.
*/
private void getProfileType() {
new IjoomerRegistration(this).getProfileTypes(new WebCallListener() {
final SeekBar proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_register_user_profile_type));
@Override
public void onProgressUpdate(int progressCount) {
proSeekBar.setProgress(progressCount);
}
@Override
public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) {
if (responseCode == 200) {
if (data1 != null) {
spnRegistrationType.setTag(data1);
ArrayList<String> profileTypes = new ArrayList<String>();
for (HashMap<String, String> hashMap : data1) {
profileTypes.add(hashMap.get("name"));
}
spnRegistrationType.setAdapter(new IjoomerUtilities.MyCustomAdapter(IjoomerRegistrationStep1Activity_v30.this, profileTypes));
if (profileTypes.size() > 1) {
spnRegistrationType.setVisibility(View.VISIBLE);
}
}
} else {
responseMessageHandler(responseCode, true);
}
}
});
}
/**
* This method used to shown response message.
*
* @param responseCode
* represented response code
* @param finishActivityOnConnectionProblem
* represented finish activity on connection problem
*/
private void responseMessageHandler(final int responseCode, final boolean finishActivityOnConnectionProblem) {
IjoomerUtilities.getCustomOkDialog(getString(R.string.registration), getString(getResources().getIdentifier("code" + responseCode, "string", getPackageName())),
getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() {
@Override
public void NeutralMethod() {
if (responseCode == 599 && finishActivityOnConnectionProblem) {
finish();
}
}
});
}
/**
* This method used to add clicable part on spannable string.
*
* @param strSpanned
* represented spannable string
* @return represented {@link SpannableStringBuilder}
*/
public SpannableStringBuilder addClickablePart(Spanned strSpanned) {
String str = strSpanned.toString();
SpannableStringBuilder ssb = new SpannableStringBuilder(strSpanned);
if (str.contains(getString(R.string.terms_n_condition_second))) {
ssb.setSpan(new IjoomerSpannable(Color.parseColor(getString(R.color.blue)), true) {
@Override
public void onClick(View widget) {
final SeekBar proSeekBar = IjoomerUtilities.getLoadingDialog(getString(R.string.dialog_loading_register_user_profile_type));
new IjoomerUsersDataProvider(IjoomerRegistrationStep1Activity_v30.this).getTermsNCondition(IjoomerGlobalConfiguration.getTermsObject(), new WebCallListener() {
@Override
public void onProgressUpdate(int progressCount) {
proSeekBar.setProgress(progressCount);
}
@Override
public void onCallComplete(int responseCode, String errorMessage, ArrayList<HashMap<String, String>> data1, Object data2) {
if (responseCode == 200) {
IjoomerUtilities.getTermsNConditionDialog(getString(R.string.terms_n_condition_second), data1.get(0).get("termsNcondition"));
} else {
responseMessageHandler(responseCode, false);
}
}
});
}
}, str.indexOf(getString(R.string.terms_n_condition_second)), str.indexOf(getString(R.string.terms_n_condition_second))
+ getString(R.string.terms_n_condition_second).length(), 0);
}
return ssb;
}
}