package coolbuy360.searchhealth;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.weibo.sdk.android.Oauth2AccessToken;
import com.weibo.sdk.android.Weibo;
import com.weibo.sdk.android.WeiboAuthListener;
import com.weibo.sdk.android.WeiboDialogError;
import com.weibo.sdk.android.WeiboException;
import com.weibo.sdk.android.WeiboParameters;
import com.weibo.sdk.android.api.UsersAPI;
import com.weibo.sdk.android.keep.AccessTokenKeeper;
import com.weibo.sdk.android.net.RequestListener;
import com.weibo.sdk.android.sso.SsoHandler;
import com.weibo.sdk.android.util.Utility;
import coolbuy360.adapter.MoreWeiboDoctorAdater;
import coolbuy360.logic.WeiboDoctor;
import coolbuy360.searchhealth.MemberLogin.loginbtnOnClick;
import coolbuy360.service.JsonUtril;
import coolbuy360.service.searchApp;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MoreWeiboDoctor extends Activity {
private UsersAPI mUserapi;
private Weibo mWeibo;
public static Oauth2AccessToken accessToken;
public static final String TAG = "sinasdk";
SsoHandler mSsoHandler;
private ListView doctorListView;
private Handler handler;
List<Map<String, Object>> DoctorInfoList;
private Dialog pBarcheck;
Button btnlogout;
searchApp app = searchApp.getInstance();
LinearLayout async_error;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.moreweibodoctor);
// Ϊ�˳�����
searchApp.getInstance().addActivity(this);
// mWeibo = Weibo.getInstance(CONSUMER_KEY, REDIRECT_URL);
handler = new Handler();
async_error = (LinearLayout) findViewById(R.id.async_error);
// initAuth();
initToken();
}
/**
* ��ȡ�̶���AccessToken����ȡ��ص����ݣ���Ҫapp.CONSUMER_KEY, app.REDIRECT_URL
* ,ACCESS_TOKEN������ز����� mWeibo = Weibo.getInstance(app.CONSUMER_KEY,
* app.REDIRECT_URL)//�ṩapp.CONSUMER_KEY, app.REDIRECT_URL Oauth2AccessToken
* accesstoken= new
* Oauth2AccessToken(app.ACCESS_TOKEN,"10000000");//�ṩaccesstoken
*/
private void initToken() {
ImageButton actionbar_pre_btn = (ImageButton) findViewById(R.id.actionbar_pre_btn);
actionbar_pre_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MoreWeiboDoctor.this.finish();
}
});
/*
* Oauth2AccessToken aa= new Oauth2AccessToken();
* aa.setToken(app.ACCESS_TOKEN);
*/
mWeibo = Weibo.getInstance(app.CONSUMER_KEY, app.REDIRECT_URL);
// MoreWeiboDoctor.accessToken =
// AccessTokenKeeper.readAccessToken(this);
// mWeibo .setupConsumerConfig(app.CONSUMER_KEY, app.REDIRECT_URL);
Oauth2AccessToken accesstoken = new Oauth2AccessToken(app.ACCESS_TOKEN,
"1");
// MoreWeiboDoctor.accessToken = mWeibo.accessToken;
Log.i("chenlinwei", accesstoken + ":accessToken" + "app.CONSUMER_KEY:"
+ app.CONSUMER_KEY);
mUserapi = new UsersAPI(accesstoken);
new asynLoadDoctor().execute();
}
/**
* ��ʼ��֤�Լ����ݼ��أ���ʱ�ò�����
*/
private void initAuth() {
mWeibo = Weibo.getInstance(app.CONSUMER_KEY, app.REDIRECT_URL);
MoreWeiboDoctor.accessToken = AccessTokenKeeper.readAccessToken(this);
ImageButton actionbar_pre_btn = (ImageButton) findViewById(R.id.actionbar_pre_btn);
actionbar_pre_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MoreWeiboDoctor.this.finish();
}
});
btnlogout = (Button) findViewById(R.id.more_weibo_btnTitle_change);
// ȡ����֤��Ϣ
btnlogout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Dialog dialog = new AlertDialog.Builder(MoreWeiboDoctor.this)
.setIcon(android.R.drawable.alert_dark_frame)
.setTitle("ȷ���л��ʺţ�")
.setMessage("�л��ʺŵ���Ҫ������֤�˻���Ϣ")
.setPositiveButton("ȷ��",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
MoreWeiboDoctor.accessToken = null;
AccessTokenKeeper
.clear(MoreWeiboDoctor.this);
MoreWeiboDoctor.this.finish();
}
})
.setNegativeButton("ȡ��",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
}
}).create();
dialog.show();
}
});
btnlogout.setVisibility(View.GONE);
if (MoreWeiboDoctor.accessToken.isSessionValid()) {
btnlogout.setVisibility(View.VISIBLE);
Weibo.isWifi = Utility.isWifi(this);
String date = new java.text.SimpleDateFormat("yyyy/MM/dd hh:mm:ss")
.format(new java.util.Date(MoreWeiboDoctor.accessToken
.getExpiresTime()));
mUserapi = new UsersAPI(accessToken);
// �첽������ҽ���б�
new asynLoadDoctor().execute();
} else {
// mText.setText("ʹ��SSO��¼ǰ�������ֻ����Ƿ��Ѿ���װ�������ͻ��ˣ�Ŀǰ��3.0.0���������ͻ��˰汾֧��SSO�����δ��װ�����Զ�תΪOauth2.0������֤");
mSsoHandler = new SsoHandler(MoreWeiboDoctor.this, mWeibo);
mSsoHandler.authorize(new AuthDialogListener());
}
}
/**
* �첽������ҽ���б�
*
* @author chenlw
*
*/
private class asynLoadDoctor extends AsyncTask<String, Void, Integer> {
List<Map<String, String>> innerDoctorList ;
List<Map<String, Object>> innerDoctorInfoList = new ArrayList<Map<String, Object>>();
long[] uids;
String[] unames;
Map<String, String> map;
int i = 0;
// int j=0;
StringBuilder userStr = new StringBuilder();
// 0����ɹ� 1��������Ϊ�� 2����������������
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
pBarcheck = new Dialog(MoreWeiboDoctor.this,R.style.dialog);
pBarcheck.setContentView(R.layout.custom_progress);
// dialog.setTitle("Indeterminate");
/*pBarcheck.setMessage("���ڻ�ȡҽ����Ϣ");
pBarcheck.setIndeterminate(true);*/
pBarcheck.setCancelable(true);
pBarcheck.show();
super.onPreExecute();
}
@Override
protected Integer doInBackground(String... params) {
try {
innerDoctorList = WeiboDoctor.getList(0, 0);
if (innerDoctorList != null) {
if (innerDoctorList.size() > 0) {
Log.i("chenlinwei", "����list���ݼ�����ֵ:0");
return 0;
} else {
Log.i("chenlinwei", "����list���ݼ�����ֵ:1");
return 1;
}
} else {
return 2;
}
} catch (Exception e) {
Log.i("chenlinwei", "����list���ݼ�����ֵ:2");
return 2;
}
}
@Override
protected void onPostExecute(Integer result) {
// TODO Auto-generated method stub
if (result == 0) {
// uids = new long[innerDoctorList.size()];//��long[]��ʼ����С
unames = new String[innerDoctorList.size()];// ��string[]��ʼ����С��long[]�ij�ʼ����ʽһ��
Log.i("chenlinwei", "ҽ��������" + innerDoctorList.size());
while (i < innerDoctorList.size()) {
map = innerDoctorList.get(i);
// uids[i]= Long.parseLong(map.get("doctorname"));
unames[i] = map.get("wbusername");
mUserapi.show(Long.parseLong(unames[i]),
new RequestListener() {
@Override
public void onIOException(IOException arg0) {
// Log.i("chenlinwei", "IOException������Ϣ��" +
// arg0.getMessage());
handler.post(mErrorResults);// ���̸߳���ҳ��
}
@Override
public void onError(WeiboException arg0) {
handler.post(mErrorResults);// ���̸߳���ҳ��
// Log.i("chenlinwei", "WeiboException������Ϣ��"
// + arg0.getMessage());
}
@Override
public void onComplete(String content) {
// j++;
Log.i("chenlinwei",
content + "121212");
if(!content.equals(""))
{
//userStr.append(content);
innerDoctorInfoList.add(JsonUtril
.getMap(content));
if (innerDoctorInfoList.size() == innerDoctorList
.size()) {
Log.i("chenlinwei",
innerDoctorInfoList.size()
+ "������ɵ����ݼ��ϸ���");
DoctorInfoList = innerDoctorInfoList;
// initListData(innerDoctorInfoList);
handler.post(mUpdateResults);// ���̸߳���ҳ��
/*
* ���̵߳���ز��� Message msg=new Message();
* msg.what=1; handler.sendMessage(msg);
*/
}
}
else
{
Toast.makeText(MoreWeiboDoctor.this, "��ȡû�����ҽ����Ϣ", Toast.LENGTH_SHORT).show();
}
}
});
i++;
}
} else if (result == 1) {
pBarcheck.cancel();
TextView async_error_txt = (TextView) async_error
.findViewById(R.id.async_error_txt);
Button async_error_reflesh = (Button) async_error
.findViewById(R.id.async_error_reflesh);
async_error_reflesh.setVisibility(View.GONE);
async_error_txt.setText("û���ҵ���ص�ҽ��");
async_error.setVisibility(View.VISIBLE);
} else if (result == 2) {
pBarcheck.cancel();
async_error.setVisibility(View.VISIBLE);
TextView async_error_txt = (TextView) async_error
.findViewById(R.id.async_error_txt);
async_error_txt.setText(R.string.error_nonetwork);
Button async_error_reflesh = (Button) async_error
.findViewById(R.id.async_error_reflesh);
async_error_reflesh.setVisibility(View.VISIBLE);
async_error_reflesh.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
async_error.setVisibility(View.GONE);
new asynLoadDoctor().execute();
}
});
}
}
}
/**
* ���̸߳���UI��ز���
*/
Runnable mUpdateResults = new Runnable() {
public void run() {
initListData(DoctorInfoList);
}
};
/**
*
*/
Runnable mErrorResults = new Runnable() {
public void run() {
// initListData(DoctorInfoList);
pBarcheck.cancel();
Toast.makeText(MoreWeiboDoctor.this, "���ֲ���ԭ�����", 1).show();
}
};
/**
* ����UI�ķ���
*
* @param weibolist
*/
private void initListData(final List<Map<String, Object>> weibolist) {
doctorListView = (ListView) MoreWeiboDoctor.this
.findViewById(R.id.more_weibo_listview);
doctorListView.setAdapter(new MoreWeiboDoctorAdater(
MoreWeiboDoctor.this, weibolist));
doctorListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int posion,
long arg3) {
// TODO Auto-generated method stub
String url = "http://www.weibo.com/"
+ weibolist.get(posion).get("profile_url");
//Toast.makeText(MoreWeiboDoctor.this, url + "", 1).show();
Intent intent = new Intent().setClass(MoreWeiboDoctor.this,
MoreWeiboUrl.class);
Bundle bundle = new Bundle();
bundle.putString("weibo_url", url);
intent.putExtras(bundle);
startActivity(intent);
}
});
pBarcheck.cancel();
}
/**
* �첽�������˻�������Ϣ����˿�� ����ע��������������ʱ�ò�����
*
* @author chenlw
*
*/
private class asynLoadDoctorCount extends AsyncTask<long[], Void, Integer> {
@Override
protected Integer doInBackground(long[]... params) {
// TODO Auto-generated method stub
if (params.length > 0) {
Log.i("chenlinwei", "params.length��" + params.length);
mUserapi.counts(params[0], new RequestListener() {
@Override
public void onIOException(IOException arg0) {
}
@Override
public void onError(WeiboException arg0) {
}
@Override
public void onComplete(String content) {
Log.i("chenlinwei", "sina���صģ�" + content);
// Log.i("chenlinwei", content);
}
});
}
return null;
}
@Override
protected void onPostExecute(Integer result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
}
/**
* ������֤�����ļ����¼�(�����ʱ�ò�������sso��֤��auth��֤��ȡAccessToken��ʱ��Ż��õ����������ǹ̶�AccessToken)
*
* @author chenlw
*
*/
class AuthDialogListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
MoreWeiboDoctor.accessToken = new Oauth2AccessToken(token,
expires_in);
if (MoreWeiboDoctor.accessToken.isSessionValid()) {
btnlogout.setVisibility(View.VISIBLE);
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
.format(new java.util.Date(MoreWeiboDoctor.accessToken
.getExpiresTime()));
/*
* mText.setText("��֤�ɹ�: \r\n access_token: " + token + "\r\n" +
* "expires_in: " + expires_in + "\r\n��Ч�ڣ�" + date);
*/
try {
Class sso = Class
.forName("com.weibo.sdk.android.api.WeiboAPI");// ���֧��weiboapi�Ļ�����ʾapi������ʾ��ڰ�ť
// apiBtn.setVisibility(View.VISIBLE);
} catch (ClassNotFoundException e) {
// e.printStackTrace();
Log.i(TAG, "com.weibo.sdk.android.api.WeiboAPI not found");
}
// cancelBtn.setVisibility(View.VISIBLE);
AccessTokenKeeper.keepAccessToken(MoreWeiboDoctor.this,
accessToken);
Toast.makeText(MoreWeiboDoctor.this, "��֤�ɹ�", Toast.LENGTH_SHORT)
.show();
// �״���֤�ɹ�
mUserapi = new UsersAPI(accessToken);
new asynLoadDoctor().execute();
}
}
@Override
public void onError(WeiboDialogError e) {
Toast.makeText(getApplicationContext(),
"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "Auth cancel",
Toast.LENGTH_LONG).show();
}
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(getApplicationContext(),
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
/**
* �����ʱ�ò�������sso��֤��auth��֤��ȡAccessToken��ʱ��Ż��õ����������ǹ̶�AccessToken��
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i(TAG, " " + resultCode);
/**
* ���������룬����sdk֧��ssoʱ��Ч��
*/
if (mSsoHandler != null) {
Log.i(TAG, " " + resultCode);
try {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
} catch (Exception e) {
// TODO: handle exception
Toast.makeText(MoreWeiboDoctor.this, "����ֵ�д���",
Toast.LENGTH_SHORT);
}
}
}
}