/** * Entrance of program * The login activity * */ package tk.djcrazy.MyCC98; import android.animation.LayoutTransition; import android.annotation.TargetApi; import android.app.ProgressDialog; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.Window; import android.view.animation.AccelerateDecelerateInterpolator; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import com.google.inject.Inject; import roboguice.inject.InjectExtra; import roboguice.inject.InjectView; import tk.djcrazy.MyCC98.dialog.AuthDialogFragment; import tk.djcrazy.MyCC98.security.Md5; import tk.djcrazy.MyCC98.util.Intents; import tk.djcrazy.MyCC98.util.ToastUtils; import tk.djcrazy.libCC98.CachedCC98Service; import tk.djcrazy.libCC98.NewCC98Service; import tk.djcrazy.libCC98.data.LoginType; import tk.djcrazy.libCC98.util.RequestResultListener; import static com.nineoldandroids.view.ViewPropertyAnimator.animate; public class LoginActivity extends BaseFragmentActivity implements OnClickListener { public static final String USERNAME = "USERNAME"; public static final String PASSWORD = "PASSWORD"; public static final String REMEMBERPWD = "REMEMBERPWD"; private static final String AUTHINFO = "AUTHINFO"; @InjectView(R.id.username) private EditText mUsernameEdit; @InjectView(R.id.password) private EditText mPasswordEdit; @InjectView(R.id.login) private Button mSignInButton; @InjectView(R.id.proxy_setting) private Button mProxyButton; @InjectExtra(value = Intents.EXTRA_NEED_LOGIN, optional = true) private boolean mNeedLogin = false; private String mUsername = ""; private String mPassword = ""; private String authUserName = ""; private String authPassword = ""; private String authHost = ""; private LoginType mLoginType = LoginType.NORMAL; private Boolean authRememberPwd = false; @Inject private CachedCC98Service service; @Inject private NewCC98Service mNewCC98Service; private void forwardToNextActivity() { Intent intent = new Intent(LoginActivity.this, HomeActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(intent); finish(); } private void showLoginField() { final View layout = findViewById(R.id.login_field); layout.setVisibility(View.VISIBLE); } @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); mSignInButton.setOnClickListener(this); mProxyButton.setOnClickListener(this); if (!mNeedLogin && service.getusersInfo().users.size() > 0) { forwardToNextActivity(); } else { mProxyButton.postDelayed(new Runnable() { @Override public void run() { showLoginField(); } }, 500); } } @Override protected void onStop() { mNewCC98Service.cancelRequest(this.getClass()); super.onStop(); } public void onOkClick(String userName, String password, String host, LoginType type) { authUserName = userName; authPassword = password; authHost = host; mLoginType = LoginType.USER_DEFINED; } public void onCancelClick() { mLoginType = LoginType.NORMAL; showLoginField(); } private void initAuthInfo() { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog"); if (prev != null) { ft.remove(prev); } ft.addToBackStack(null); DialogFragment newFragment = new AuthDialogFragment(); newFragment.show(ft, "dialog"); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.login: doLogin(); break; case R.id.proxy_setting: initAuthInfo(); break; } } private void doLogin() { mUsername = mUsernameEdit.getText().toString().trim(); mPassword = mPasswordEdit.getText().toString().trim(); if (mUsername.equals("")) { ToastUtils.alert(this, "用户名不能为空"); return; } else if (mPassword.length() <= 0) { ToastUtils.alert(this, "密码不能为空"); return; } final ProgressDialog dialog = new ProgressDialog(this); dialog.setMessage("正在登录,请稍后......"); dialog.show(); mNewCC98Service.login(this.getClass(), mUsername, Md5.MyMD5(mPassword, Md5.T32), Md5.MyMD5(mPassword, Md5.T16), authUserName, authPassword, authHost, mLoginType, new RequestResultListener<Boolean>() { @Override public void onRequestComplete(Boolean result) { dialog.dismiss(); forwardToNextActivity(); } @Override public void onRequestError(String msg) { dialog.dismiss(); ToastUtils.alert(LoginActivity.this, msg); } }); } }