package com.metis.base.activity; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.metis.base.ActivityDispatcher; import com.metis.base.R; import com.metis.base.framework.NetProperty; import com.metis.base.manager.AccountManager; import com.metis.base.manager.RequestCallback; import com.metis.base.manager.ShareManager; import com.metis.base.module.User; import com.metis.base.utils.Log; import com.metis.base.utils.SystemUtils; import com.metis.msnetworklib.contract.ReturnInfo; import java.util.HashMap; import java.util.Map; import cn.sharesdk.framework.Platform; import cn.sharesdk.framework.PlatformActionListener; import cn.sharesdk.framework.PlatformDb; import cn.sharesdk.framework.ShareSDK; import cn.sharesdk.sina.weibo.SinaWeibo; import cn.sharesdk.tencent.qq.QQ; import cn.sharesdk.wechat.friends.Wechat; public class LoginActivity extends TitleBarActivity implements PlatformActionListener, View.OnClickListener { private static final String TAG = LoginActivity.class.getSimpleName(); private TextView mLoginBtn = null; private EditText mAccountEt = null; private EditText mPwdEt = null; private TextView mPwdFindTv = null; private View mWeChatView, mSinaView, mQqView; private boolean isAlreadyIn = false; /*private RequestCallback<User> mAuthLoginCallback = new RequestCallback<User>() { @Override public void callback(ReturnInfo<User> returnInfo, String callbackId) { if (returnInfo.isSuccess()) { Log.v(TAG, "authLogin.user=" + returnInfo.getData().name); } } };*/ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); isAlreadyIn = getIntent ().getBooleanExtra(com.metis.base.ActivityDispatcher.KEY_STATUS, false); getTitleBar().setOnRightBtnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent it = new Intent(LoginActivity.this, RegisterActivity.class); it.putExtra(ActivityDispatcher.KEY_STATUS, isAlreadyIn); startActivity(it); } }); getTitleBar().setTitleLeft(R.string.text_access_without_login); getTitleBar().setOnLeftBtnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ActivityDispatcher.mainActivity(LoginActivity.this); finish(); } }); /*mNotNowBtn = (Button)findViewById(R.id.login_not_now); mNotNowBtn.setVisibility(NetProperty.TESTING ? View.VISIBLE : View.GONE); mNotNowBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ActivityDispatcher.mainActivity(LoginActivity.this); } });*/ mLoginBtn = (TextView)findViewById(R.id.login_btn); mAccountEt = (EditText)findViewById(R.id.login_account); mPwdEt = (EditText)findViewById(R.id.login_pwd); mPwdFindTv = (TextView)findViewById(R.id.login_find_pwd); mWeChatView = findViewById(R.id.login_auth_we_chat); mSinaView = findViewById(R.id.login_auth_sina); mQqView = findViewById(R.id.login_auth_qq); mLoginBtn.setOnClickListener(this); mPwdFindTv.setOnClickListener(this); mWeChatView.setOnClickListener(this); mSinaView.setOnClickListener(this); mQqView.setOnClickListener(this); } @Override public CharSequence getTitleRight() { return getString(R.string.title_activity_register); } @Override public void onClick (View view) { final int id = view.getId(); if (id == mLoginBtn.getId()) { String account = mAccountEt.getText().toString(); if (TextUtils.isEmpty(account)) { Toast.makeText(this, R.string.toast_login_empty_account, Toast.LENGTH_SHORT).show(); mAccountEt.requestFocus(); SystemUtils.showIME(this, mAccountEt); return; } String pwd = mPwdEt.getText().toString(); if (TextUtils.isEmpty(pwd)) { Toast.makeText(this, R.string.toast_login_empty_pwd, Toast.LENGTH_SHORT).show(); mPwdEt.requestFocus(); SystemUtils.showIME(this, mPwdEt); return; } SystemUtils.hideIME(this, mPwdEt); mLoginBtn.setEnabled(false); AccountManager.getInstance(this).login(account, pwd, new RequestCallback<User>() { @Override public void callback(ReturnInfo<User> returnInfo, String callbackId) { dismissProgressDialog(); if (returnInfo.isSuccess()) { User me = returnInfo.getData(); if (isAlreadyIn) { if (me.userRole == 0) { ActivityDispatcher.userRoleActivity(LoginActivity.this, me, isAlreadyIn); } } else { if (me.userRole == 0) { ActivityDispatcher.userRoleActivity(LoginActivity.this, me, isAlreadyIn); } else { ActivityDispatcher.mainActivity(LoginActivity.this); } } Intent data = new Intent(); setResult(RESULT_OK, data); finish(); /*if (me.userRole == 0) { it = new Intent(LoginActivity.this, RoleChooseActivity.class); } else { it = new Intent(LoginActivity.this, MainActivity.class); }*/ } else { Toast.makeText(LoginActivity.this, getString(R.string.toast_login_failed, returnInfo.getMessage()), Toast.LENGTH_SHORT).show(); mLoginBtn.setEnabled(true); } } }); showProgressDialog(R.string.text_please_wait, false); } else if (id == mPwdFindTv.getId()) { ActivityDispatcher.resetPwdActivity(this); } else if (id == mWeChatView.getId()) { ShareManager.getInstance(this).loginAccess(ShareSDK.getPlatform(this, Wechat.NAME), this); showProgressDialog(R.string.text_please_wait, false); } else if (id == mSinaView.getId()) { /*ActivityDispatcher.mainActivity(this); finish();*/ ShareManager.getInstance(this).loginAccess(ShareSDK.getPlatform(this, SinaWeibo.NAME), this); showProgressDialog(R.string.text_please_wait, false); } else if (id == mQqView.getId()) { ShareManager.getInstance(this).loginAccess(ShareSDK.getPlatform(this, QQ.NAME), this); showProgressDialog(R.string.text_please_wait, false); } } @Override public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) { dismissProgressDialog(); if (platform.isValid()) { PlatformDb db = platform.getDb(); final String userId = db.getUserId(); final String profile = db.getUserIcon(); final String name = db.getUserName(); Log.v(TAG, "loginAccess name=" + name + " userId=" + userId + " profile=" + profile + " platform.name=" + platform.getName()); final String platformName = platform.getName(); RequestCallback<User> authLoginCallback = new RequestCallback<User>() { @Override public void callback(ReturnInfo<User> returnInfo, String callbackId) { if (returnInfo.isSuccess()) { Map<String, String> map = new HashMap<String, String>(); map.put("userNickName", name); map.put("userAvatar", profile); User me = returnInfo.getData(); if (me.userRole == 0) { me.name = name; me.setUserAvatar(profile); AccountManager.getInstance(LoginActivity.this).updateUserInfoPost(map, null); ActivityDispatcher.userRoleActivity(LoginActivity.this, me, isAlreadyIn); } else { if (isAlreadyIn) { Intent data = new Intent(); setResult(RESULT_OK, data); } else { ActivityDispatcher.mainActivity(LoginActivity.this); } } finish(); } } }; if (Wechat.NAME.equals(platformName)) { AccountManager.getInstance(this).authLogin(userId, AccountManager.AUTH_TYPE_WE_CHAT, authLoginCallback); } else if (SinaWeibo.NAME.equals(platformName)) { AccountManager.getInstance(this).authLogin(userId, AccountManager.AUTH_TYPE_SINA, authLoginCallback); } else if (QQ.NAME.equals(platformName)) { AccountManager.getInstance(this).authLogin(userId, AccountManager.AUTH_TYPE_QQ, authLoginCallback); } } } @Override public void onError(Platform platform, int i, Throwable throwable) { dismissProgressDialog(); } @Override public void onCancel(Platform platform, int i) { dismissProgressDialog(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Toast.makeText(this, "onActivityResult " + data, Toast.LENGTH_SHORT).show(); } }