package com.zhan_dui.dictionary.fragments;
import java.io.IOException;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.umeng.fb.UMFeedbackService;
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.api.FriendshipsAPI;
import com.weibo.sdk.android.keep.AccessTokenKeeper;
import com.weibo.sdk.android.net.RequestListener;
import com.weibo.sdk.android.sso.SsoHandler;
import com.zhan_dui.dictionary.R;
import com.zhan_dui.dictionary.utils.Constants;
public class AboutMeFragment extends SherlockFragment implements
OnClickListener {
private ActionBar mActionBar;
private Weibo mWeibo;
private Boolean mSSOAuth;
private SsoHandler mSsoHandler;
private Oauth2AccessToken mAccessToken;
private static Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mWeibo = Weibo.getInstance(Constants.WEIBO_APP_KEY,
Constants.WEIBO_REDIRECT_URI);
SherlockFragmentActivity sherlockFragmentActivity = (SherlockFragmentActivity) getActivity();
mActionBar = sherlockFragmentActivity.getSupportActionBar();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.about, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mContext = view.getContext();
mActionBar.setTitle(R.string.about);
Button weiboButton = (Button) view.findViewById(R.id.weibo);
Button feedbackButton = (Button) view.findViewById(R.id.feedback);
weiboButton.setOnClickListener(this);
feedbackButton.setOnClickListener(this);
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(mContext);
Boolean followed = sharedPreferences.getBoolean("follow", false);
if (followed) {
weiboButton.setText("感谢您的关注");
weiboButton.setEnabled(false);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.weibo:
try {
Class.forName("com.weibo.sdk.android.sso.SsoHandler");
mSSOAuth = true;
} catch (ClassNotFoundException e) {
mSSOAuth = false;
}
if (mSSOAuth == true) {
mSsoHandler = new SsoHandler(getActivity(), mWeibo);
mSsoHandler.authorize(new AuthDialogListener());
} else {
mWeibo.authorize(getActivity(), new AuthDialogListener());
}
break;
case R.id.feedback:
UMFeedbackService.openUmengFeedbackSDK(getActivity());
break;
default:
break;
}
}
class AuthDialogListener implements WeiboAuthListener {
@Override
public void onCancel() {
}
@Override
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
mAccessToken = new Oauth2AccessToken(token, expires_in);
if (mAccessToken.isSessionValid()) {
AccessTokenKeeper.keepAccessToken(getActivity(), mAccessToken);
FriendshipsAPI friendshipsAPI = new FriendshipsAPI(mAccessToken);
friendshipsAPI.create(Constants.WEIBO_BEAR_ID,
Constants.WEIBO_BEAR_NAME, new FollowListener());
}
}
@Override
public void onError(WeiboDialogError e) {
try {
JSONObject jsonObject = new JSONObject(e.getMessage());
if (jsonObject.has("error_code")
&& jsonObject.getInt("error_code") == 20506) {
Message msg = Message.obtain(FollowHandler, 0);
msg.sendToTarget();
}
} catch (JSONException e1) {
e1.printStackTrace();
Toast.makeText(getActivity(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT)
.show();
}
}
private static Handler FollowHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
Toast.makeText(mContext, "关注成功", Toast.LENGTH_SHORT).show();
Editor editor = PreferenceManager.getDefaultSharedPreferences(
mContext).edit();
editor.putBoolean("follow", true);
editor.commit();
break;
case -1:
Toast.makeText(mContext, "关注失败", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
};
class FollowListener implements RequestListener {
@Override
public void onComplete(String response) {
Message msg = Message.obtain(FollowHandler, 0, response);
msg.sendToTarget();
}
@Override
public void onError(WeiboException e) {
Message msg = Message.obtain(FollowHandler, -1, e);
msg.sendToTarget();
}
@Override
public void onIOException(IOException e) {
Message msg = Message.obtain(FollowHandler, -1, e);
msg.sendToTarget();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
}