package com.mailssenger.activity; import android.app.Dialog; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.ActionBar; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.AnimationSet; import android.view.animation.ScaleAnimation; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; import com.mailssenger.CommonApplication; import com.mailssenger.MainServiceCallback; import com.mailssenger.R; import com.mailssenger.Task; import com.mailssenger.mail.MailAccount; import com.mailssenger.model.MsgModel; import com.mailssenger.model.UserModel; import com.mailssenger.push.MyPushMessageReceiver; import com.mailssenger.service.MainService; import com.mailssenger.util.DialogUtil; import com.mailssenger.util.L; import com.mailssenger.util.NetUtil; import com.mailssenger.util.T; import com.mailssenger.util.UIHelper; public class LoginActivity extends BaseActivity implements MainServiceCallback, MyPushMessageReceiver.EventHandler{ private EditText etAccount; private EditText etPW; private EditText etHost; private Button btnLogin; private Button btnsignin; private ImageView jmuImageView; private ImageButton btnclsAccount; private ImageButton btnclsPW; private LinearLayout lyAccount; private LinearLayout lyPW; private LinearLayout lyHelp; private Dialog dialog; boolean hasRetry = false; boolean isHelpShow = false; //对话框,链接服务器 private Dialog mConnectServerDialog; //网络提醒 private View mNetErrorView; private Handler mHandler; /* * (non- Javadoc) * * @see android.app.Activity#onCreate(android.os.Bundle) */ //initial config.setup all the view private void InitConfig() { etAccount = (EditText) findViewById(R.id.et_log_accout ); etPW = (EditText) findViewById(R.id. et_log_psw); btnLogin = (Button) findViewById(R.id.btn_Log_in ); etAccount.setText(CommonApplication.ACCOUNT); btnclsAccount=(ImageButton) findViewById(R.id.btn_clear ); btnclsPW=(ImageButton) findViewById(R.id.btn_clear2 ); btnclsAccount.setVisibility(View.GONE); btnclsPW.setVisibility(View.GONE); lyAccount=(LinearLayout)findViewById(R.id.et_ly_account); lyPW=(LinearLayout)findViewById(R.id.et_ly_pwd); lyHelp=(LinearLayout)findViewById(R.id.login_gap); } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.log_in); //set up the view InitConfig(); ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(false); mHandler = new Handler(); //初始化网络提示 mNetErrorView = findViewById(R.id.net_status_bar_top); mNetErrorView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { startActivity(new Intent( android.provider.Settings.ACTION_WIFI_SETTINGS)); } }); // for easy use // etAccount.setText("hxj393@bham.ac.uk" ); // etPW.setText( "J742515q"); //login listeners etAccount.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View arg0, boolean isFocus) { // TODO Auto-generated method stub if (isFocus) { lyAccount.setBackgroundResource(R.drawable.basic_edittext_bg); }else{ lyAccount.setBackgroundResource(R.drawable.basic_edittext_bg_default); } } }); etPW.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View arg0, boolean isFocus) { // TODO Auto-generated method stub if (isFocus) { lyPW.setBackgroundResource(R.drawable.basic_edittext_bg); }else{ lyPW.setBackgroundResource(R.drawable.basic_edittext_bg_default); } } }); btnLogin.setOnClickListener( new OnClickListener() { @Override public void onClick(View arg0) { hasRetry = false; if (NetUtil.isNetConnected( CommonApplication.getInstance())) {//如果网络可用 btnLogin.setClickable(false); String username = etAccount.getText().toString(); String password = etPW.getText().toString(); if(username.contains("rova-tech")){ mSpUtil.setEmail(username); mSpUtil.setPassword(password); mSpUtil.setNick(username); Toast. makeText(context, "Add Mail Account Succeed!", Toast.LENGTH_LONG).show(); UIHelper.showMainActivity(context,true); } // if(!username.contains("bham.ac.uk")||!username.contains("@")){ // T.showLong(context, "Email addrress is not correct, it should a valid email of Birmingham University"); // btnLogin.setClickable(true); // etAccount.setText("" ); // return; // } // TODO Auto-generated method stub //debug infoss Log. i("tag", "Account:" + etAccount.getText().toString()); Log. i("tag", "Password:" + etPW.getText().toString()); //get username and paswwrod if (username.contains("bham.ac.uk") && username.contains("@")){ //set birmingham mail config CommonApplication. ACCOUNT = username; String mailServerAccount = username.substring(0,username.indexOf("@")); //the account for Birmingham Account should be without postfix CommonApplication. SACCOUNT = mailServerAccount; CommonApplication. PASSWORD = password; CommonApplication. IMAP_HOST="mail.bham.ac.uk" ; CommonApplication. SMTP_HOST="auth-smtp.bham.ac.uk" ; System. out.println("::LoginActivity::OnCreate::" ); System. out.println("username is " + username); System. out.println("password is " + password); } else if(username.endsWith("gmail.com" )){ //set gmail mail config CommonApplication. ACCOUNT = username; CommonApplication. SACCOUNT = username; CommonApplication. PASSWORD = password; CommonApplication. IMAP_HOST="imap.gmail.com" ; CommonApplication. SMTP_HOST="smtp.gmail.com" ; System. out.println("::LoginActivity::OnCreate::" ); System. out.println("username is " + username); System. out.println("password is " + password); } else if(username.endsWith("163.com" )){ //set 163 mail config CommonApplication. ACCOUNT = username; CommonApplication. SACCOUNT = username; CommonApplication. PASSWORD = password; CommonApplication. IMAP_HOST="imap.163.com" ; CommonApplication. SMTP_HOST="smtp.163.com" ; System.out.println("::LoginActivity::OnCreate::" ); System.out.println("username is " + username); System.out.println("password is " + password); } // for authentication,open successful mean login successful Task task = new Task(context ); task.setMethod(MailAccount.class, "authentication" ); MainService.newTask(task); //登录对话框 mConnectServerDialog = DialogUtil.getLoginDialog(context,"Trying to connect to the Birmingham Mail Server."); mConnectServerDialog.show(); mConnectServerDialog.setCancelable(false);// 返回键不能取消 } else { T.showLong( CommonApplication.getInstance(), R.string.net_error_tip); return; } } }); //clear edit text listener btnclsAccount.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub etAccount.setText("" ); } }); btnclsPW.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub etPW.setText("" ); } }); etAccount.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.length() > 0) { btnclsAccount.setVisibility(View.VISIBLE); } else { btnclsAccount.setVisibility(View.GONE); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } }); etPW.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.length() > 0) { btnclsPW.setVisibility(View.VISIBLE); } else { btnclsPW.setVisibility(View.GONE); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu items for use in the action bar MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.login, menu); return super.onCreateOptionsMenu(menu); } public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_help_info: AnimationSet aSet = new AnimationSet(true); AlphaAnimation alp = new AlphaAnimation(0.0f,1.0f); lyHelp.setVisibility(View.VISIBLE); aSet.setFillAfter(true); if(!isHelpShow){ alp.setDuration(500); alp.setFillAfter(true); ScaleAnimation ascl =new ScaleAnimation(0.0f, 1.1f, 0.0f, 1.1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); ascl.setDuration(400); ascl.setFillAfter(true); ScaleAnimation ascl2 =new ScaleAnimation(1.0f, 0.90909f, 1.0f, 0.90909f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); ascl2.setDuration(100); ascl2.setStartOffset(400); ascl2.setFillAfter(true); aSet.addAnimation(alp); aSet.addAnimation(ascl); aSet.addAnimation(ascl2); lyHelp.startAnimation(aSet); }else{ ScaleAnimation ascl =new ScaleAnimation(1.0f, 1.1f, 1.0f, 1.1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); ascl.setDuration(100); ascl.setFillAfter(true); ScaleAnimation ascl2 =new ScaleAnimation(1.0f, 0.9090909f, 1.0f, 0.9090909f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); ascl2.setDuration(100); ascl2.setStartOffset(100); ascl2.setFillAfter(true); aSet.addAnimation(ascl); aSet.addAnimation(ascl2); lyHelp.startAnimation(aSet); } isHelpShow = true; return true; default: return super.onOptionsItemSelected(item); } } @Override public void refresh(Object... args) { btnLogin.setClickable(true); if (args[0].equals("authentication" )) { try { // judge whether login successfull if ((Boolean)args[1]){ // save the mail config MailAccount mail = new MailAccount(); mSpUtil.setLogin(true); mSpUtil.setEmail(CommonApplication.ACCOUNT); mSpUtil.setPassword((CommonApplication.PASSWORD)); mSpUtil.setNick(CommonApplication.ACCOUNT); mSpUtil.setIMAPHost(CommonApplication.IMAP_HOST); mSpUtil.setSMTPHost(CommonApplication.SMTP_HOST); mSpUtil.setMailServerAccount(CommonApplication.SACCOUNT); //如果这时候对话框还在运行,就将其关闭 if (mConnectServerDialog != null && mConnectServerDialog.isShowing()) mConnectServerDialog.dismiss(); Toast. makeText(context, "Add Mail Account Succeed!", Toast.LENGTH_LONG).show(); UIHelper.showMainActivity(context,true); }else{ T.showLong(context, "Email addrress or password is not correct, please try again."); // // for authentication,open successful mean login successful // // if(!hasRetry){ // if(etAccount.getText().toString().contains("bham.ac.uk")){ // String username =etAccount.getText().toString(); // String mailServerAccount = username.substring(0,username.indexOf("@")); // CommonApplication. SACCOUNT = mailServerAccount; // CommonApplication. ACCOUNT = etAccount.getText().toString(); // CommonApplication. PASSWORD= etPW.getText().toString(); // CommonApplication. IMAP_HOST="mail.bham.ac.uk" ; // CommonApplication. SMTP_HOST="auth-smtp.bham.ac.uk" ; // } // // mHandler.postDelayed(reSend, 2000); // hasRetry=true; // }else{ // T.showLong(context, "Email addrress or password is not correct, please try again."); // } } } catch (Exception e) { e.printStackTrace(); Toast. makeText(context, "Network Error", Toast.LENGTH_LONG).show(); } //如果这时候对话框还在运行,就将其关闭 if (mConnectServerDialog != null && mConnectServerDialog.isShowing()) mConnectServerDialog.dismiss(); } } // Runnable reSend = new Runnable() { // // @Override // public void run() { // // TODO Auto-generated method stub // L.i("resend msg..."); // Task task = new Task(context ); // task.setMethod(MailAccount.class, "authentication" ); // MainService.newTask(task); // // //登录对话框 // mConnectServerDialog = DialogUtil.getLoginDialog(context,"Retrying to connect to the Birmingham mail server!"); // mConnectServerDialog.show(); // mConnectServerDialog.setCancelable(false);// 返回键不能取消 // } // }; @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); MyPushMessageReceiver.ehList.add(this); //网络操作显示 if (!NetUtil.isNetConnected(this)) mNetErrorView.setVisibility(View.VISIBLE); else { mNetErrorView.setVisibility(View.GONE); } } @Override public void onPause() { // TODO Auto-generated method stub super.onPause(); MyPushMessageReceiver.ehList.remove(this); } @Override public void onChatMessage(MsgModel chatMessage) { // TODO Auto-generated method stub } @Override public void onBind(String method, int errorCode, String content) { // TODO Auto-generated method stub } @Override public void onNotify(String title, String content) { // TODO Auto-generated method stub } @Override public void onNetChange(boolean isNetConnected) { if (!isNetConnected) { T.showShort(this, R.string.net_error_tip); mNetErrorView.setVisibility(View.VISIBLE); } else { mNetErrorView.setVisibility(View.GONE); } } @Override public void onNewFriend(UserModel u) { // TODO Auto-generated method stub } }