package net.basilwang;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import net.basilwang.dao.Preferences;
import net.basilwang.entity.ValidateResult;
import net.basilwang.utils.NetworkUtils;
import net.basilwang.utils.PreferenceUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import com.actionbarsherlock.view.SubMenu;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
public class LoginActivity extends Activity implements OnClickListener {
EditText name, psw;
Button login, register, forget;
SubMenu subMenuForNetwork;
ProgressBar progressBar;
public static LoginActivity instance = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.login_activity);
init();
checkNet();
instance=this;
}
public void init() {
name = (EditText) findViewById(R.id.log_name);
psw = (EditText) findViewById(R.id.log_psw);
login = (Button) findViewById(R.id.login);
login.setOnClickListener(this);
register = (Button) findViewById(R.id.log_register);
register.setOnClickListener(this);
forget = (Button) findViewById(R.id.log_forget);
forget.setOnClickListener(this);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setVisibility(View.INVISIBLE);
}
public void checkNet() {
if (!isNetAvailable())
Toast.makeText(this, "好像没有联网哦", Toast.LENGTH_LONG).show();
}
private boolean isNetAvailable() {
return NetworkUtils.isConnect(this) ? true : false;
}
@Override
public void onClick(View v) {
Intent intent = null;
switch (v.getId()) {
case R.id.login:
checkLogin();
break;
case R.id.log_register:
intent = new Intent(this, RegisterActivity.class);
break;
case R.id.log_forget:
intent = new Intent(this, ForgetPswActivity.class);
break;
}
if (intent != null) {
// this.finish();
startActivity(intent);
}
}
public void checkLogin() {
String lname = name.getText().toString().trim();
String lpsw = psw.getText().toString().trim();
if (lname.equals("") || lpsw.equals("")) {
Toast.makeText(this, "用户名或密码不能为空!", Toast.LENGTH_LONG).show();
} else if (isNetAvailable()) {
Login login = new Login();
login.execute(name.getText().toString().trim(), psw.getText()
.toString().trim());
} else {
Toast.makeText(this, "请链接网络", Toast.LENGTH_SHORT).show();
}
}
class Login extends AsyncTask<Object, Object, ValidateResult> {
@Override
protected void onProgressUpdate(Object... values) {
super.onProgressUpdate(values);
progressBar.setVisibility(View.VISIBLE);
}
private String name, psw;
@Override
protected void onPostExecute(ValidateResult result) {
progressBar.setVisibility(View.INVISIBLE);
if (result.getSuccess().equals("true")) {
LoginActivity.this.finish();
PreferenceUtils.modifyStringValueInPreferences(
LoginActivity.this,
net.basilwang.dao.Preferences.TOKEN, result.getToken());
PreferenceUtils.modifyStringValueInPreferences(
LoginActivity.this, Preferences.USER_NAME, name);
Intent intent = new Intent(LoginActivity.this,
StaticAttachmentActivity.class);
startActivity(intent);
} else {
String toast = result.getMessage().replace("<br/>", "\n");
Toast.makeText(LoginActivity.this, toast, Toast.LENGTH_LONG)
.show();
}
super.onPostExecute(result);
}
@Override
protected ValidateResult doInBackground(Object... params) {
name = (String) params[0];
psw = (String) params[1];
publishProgress();
ValidateResult v_result = new ValidateResult();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(
"http://www.ruguozhai.me/api/users/Login");
List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("loginName", name));
postParameters.add(new BasicNameValuePair("password", psw));
try {
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(
postParameters, HTTP.UTF_8);
post.setEntity(formEntity);
HttpResponse response = client.execute(post);
Log.v("result", "code="
+ response.getStatusLine().getStatusCode());
if (response.getStatusLine().getStatusCode() == 200) {
String result = filter(EntityUtils.toString(response
.getEntity()));
Log.v("result", "result=" + result);
v_result = jsonData(result);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return v_result;
}
public String filter(String s) {
String s1 = s.replace("\\r", "");
String s2 = s1.replace("\\n", "");
String s3 = s2.substring(1, s2.length() - 1);
String s4 = s3.replace(" ", "");
String result = s4.replace("\\", "");
return result;
}
public ValidateResult jsonData(String str) {
ValidateResult result = JSON.parseObject(str,
new TypeReference<ValidateResult>() {
});
return result;
}
}
}