package net.coding.program.login; import android.app.Activity; import android.content.Intent; import android.text.Html; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.widget.TextView; import com.loopj.android.http.RequestParams; import net.coding.program.MainActivity; import net.coding.program.MainActivity_; import net.coding.program.MyApp; import net.coding.program.R; import net.coding.program.common.Global; import net.coding.program.common.SimpleSHA1; import net.coding.program.common.base.MyJsonResponse; import net.coding.program.common.guide.GuideActivity; import net.coding.program.common.network.MyAsyncHttpClient; import net.coding.program.common.ui.BackActivity; import net.coding.program.common.util.ActivityNavigate; import net.coding.program.common.util.SingleToast; import net.coding.program.common.util.ViewStyleUtil; import net.coding.program.common.widget.LoginEditText; import net.coding.program.model.AccountInfo; import net.coding.program.model.UserObject; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ViewById; import org.json.JSONObject; @EActivity(R.layout.activity_email_register) public class EmailRegisterActivity extends BackActivity { public static final int RESULT_REGISTER_EMAIL = 1; @ViewById LoginEditText globalKeyEdit, emailEdit, passwordEdit, captchaEdit; @ViewById View loginButton; @ViewById TextView textClause; @AfterViews void initPhoneVerifyFragment() { View androidContent = findViewById(android.R.id.content); androidContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int height = androidContent.getHeight(); if (height > 0) { View layoutRoot = findViewById(R.id.layoutRoot); ViewGroup.LayoutParams lp = layoutRoot.getLayoutParams(); lp.height = height; layoutRoot.setLayoutParams(lp); androidContent.getViewTreeObserver().removeGlobalOnLayoutListener(this); } } }); ViewStyleUtil.editTextBindButton(loginButton, globalKeyEdit, emailEdit, passwordEdit, captchaEdit); textClause.setText(Html.fromHtml(PhoneRegisterActivity.REGIST_TIP)); needShowCaptch(); } @Override public void onStop() { super.onStop(); } @Click void loginButton() { Global.popSoftkeyboard(this, emailEdit, false); String email = emailEdit.getTextString(); String globalKeyString = globalKeyEdit.getText().toString(); String password = passwordEdit.getText().toString(); String captcha = captchaEdit.getTextString(); if (globalKeyString.length() < 3) { showMiddleToast("用户名(个性后缀)至少为3个字符"); return; } if (password.length() < 6) { SingleToast.showMiddleToast(this, "密码至少为6位"); return; } else if (64 < password.length()) { SingleToast.showMiddleToast(this, "密码不能大于64位"); return; } RequestParams params = new RequestParams(); params.put("email", email); params.put("global_key", globalKeyString); String sha1 = SimpleSHA1.sha1(password); params.put("password", sha1); params.put("confirm", sha1); if (captchaEdit.getVisibility() == View.VISIBLE) { params.put("j_captcha", captcha); } String url = Global.HOST_API + "/v2/account/register?channel=coding-android"; MyAsyncHttpClient.post(this, url, params, new MyJsonResponse(this) { @Override public void onMySuccess(JSONObject respanse) { super.onMySuccess(respanse); MainActivity.setNeedWarnEmailNoValidRegister(); parseRegisterSuccess(EmailRegisterActivity.this, respanse); } @Override public void onMyFailure(JSONObject response) { super.onMyFailure(response); needShowCaptch(); } @Override public void onFinish() { super.onFinish(); showProgressBar(false); } }); showProgressBar(true, ""); } static void parseRegisterSuccess(Activity activity, JSONObject respanse) { UserObject user = new UserObject(respanse.optJSONObject("data")); AccountInfo.saveAccount(activity, user); MyApp.sUserObject = user; AccountInfo.saveReloginInfo(activity, user); Global.syncCookie(activity); AccountInfo.saveLastLoginName(activity, user.name); activity.startActivity(new Intent(activity, MainActivity_.class)); activity.sendBroadcast(new Intent(GuideActivity.BROADCAST_GUIDE_ACTIVITY)); activity.setResult(Activity.RESULT_OK); activity.finish(); } private void needShowCaptch() { if (captchaEdit.getVisibility() == View.VISIBLE) { captchaEdit.requestCaptcha(); return; } String HOST_NEED_CAPTCHA = Global.HOST_API + "/captcha/register"; MyAsyncHttpClient.get(this, HOST_NEED_CAPTCHA, new MyJsonResponse(this) { @Override public void onMySuccess(JSONObject response) { super.onMySuccess(response); if (response.optBoolean("data")) { captchaEdit.setVisibility(View.VISIBLE); captchaEdit.requestCaptcha(); } } }); } @Click void textClause() { ActivityNavigate.startTermActivity(this); } @Click void otherRegister() { onBackPressed(); } @Override public void onBackPressed() { super.onBackPressed(); overridePendingTransition(0, R.anim.left_to_right); } }