package com.campus.prime.ui.home;
import static com.campus.prime.constant.AppConstant.SETTING_INFOS;
import static com.campus.prime.constant.AppConstant.TOKEN;
import static com.campus.prime.constant.AppConstant.USERNAME;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBar.OnNavigationListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.campus.prime.R;
import com.campus.prime.app.Auth;
import com.campus.prime.constant.AppConstant;
import com.campus.prime.core.GroupItem;
import com.campus.prime.core.GroupPage;
import com.campus.prime.core.service.GroupService;
import com.campus.prime.ui.AsyncLoader;
import com.campus.prime.ui.BaseSlidingActivity;
import com.campus.prime.ui.slidingmenu.SlidingMenu;
import com.campus.prime.ui.user.UserActivity;
import com.campus.prime.utils.CommonLog;
import com.campus.prime.utils.IntentUtil;
import com.campus.prime.utils.LogFactory;
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.sso.SsoHandler;
import com.weibo.sdk.android.util.AccessTokenKeeper;
/**
* MainActivity
* @author absurd
*
*/
public class HomeActivity extends DrawerActivity
implements LoaderCallbacks<List<GroupItem>>{
/**
* log
*/
private CommonLog mLog = LogFactory.createLog();
/**
* Adapter
*/
private HomeDropdownListAdapter mHomeDropDownListAdapter;
private GroupsDropDownListAdapter mGroupsDownListAdapter;
private SlidingMenu mSlidingMenu;
/**
* UserService
*/
private Button mWeiboButton;
private TextView mAuthInfoTextView;
private Button mLogginButton;
private Button mRegisterButton;
private Button mUserProfileButton;
/**
* current showed Group
* -1 refer to public
*/
private int mCurrentGroup = -1;
/**
* weibo access token
*/
private Oauth2AccessToken mAccessToken;
private SsoHandler mSsoHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
/**
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setProgressBarIndeterminateVisibility(false);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
mHomeFragment= new HomeFragment();
ft.add(R.id.container,mHomeFragment);
ft.commit();
**/
super.onCreate(savedInstanceState);
final ActionBar actionBar = getSupportActionBar();
configureActionBar(actionBar);
//initSlidingMenu();
//initView();
getInfos();
/*
// get accessToken from sharedPreference
mAccessToken = AccessTokenKeeper.readAccessToken(this);
if (mAccessToken.isSessionValid()) {
String date = new java.text.SimpleDateFormat("yyyy/MM/dd hh:mm:ss")
.format(new java.util.Date(mAccessToken.getExpiresTime()));
mAuthInfoTextView.setText("access_token ������Ч����,�����ٴε�¼: \naccess_token:"
+ mAccessToken.getToken() + "\n��Ч�ڣ�" + date);
} else {
mAuthInfoTextView.setText("ʹ��SSO��¼ǰ�������ֻ����Ƿ��Ѿ���װ�������ͻ��ˣ�"
+ "Ŀǰ��3.0.0���������ͻ��˰汾֧��SSO�����δ��װ�����Զ�תΪOauth2.0������֤");
}
*/
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
if(Auth.isAuth()){
getSupportLoaderManager().initLoader(0, null, this);
}
}
private void getInfos(){
if(!Auth.isAuth()){
SharedPreferences infos = getSharedPreferences(SETTING_INFOS, 0);
if(infos == null)
return;
Auth.token = infos.getString(TOKEN,null);
Auth.username = infos.getString(USERNAME,null);
mLog.i("on start app get user infos " + Auth.token);
mLog.i("on start app get user infos " + Auth.username);
}
}
/**
* init control view
*/
/**
private void initView(){
mWeiboButton = (Button)findViewById(R.id.weibo_auth_btn);
mWeiboButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Weibo weibo = Weibo.getInstance(AppConstant.APP_KEY, AppConstant.REDIRECT_URL, AppConstant.SCOPE);
//weibo.anthorize(HomeActivity.this, new AuthDialogListener());
mSsoHandler = new SsoHandler(HomeActivity.this,weibo);
mSsoHandler.authorize(new AuthDialogListener(),null);
Toast.makeText(getApplicationContext(), "weibo_auth", Toast.LENGTH_SHORT).show();
}
});
mLogginButton = (Button)findViewById(R.id.login);
mLogginButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(HomeActivity.this,LoginActivity.class);
startActivity(intent);
}
});
mRegisterButton = (Button)findViewById(R.id.register);
mRegisterButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(HomeActivity.this,RegisterActivity.class);
startActivity(intent);
}
});
mUserProfileButton = (Button)findViewById(R.id.user_profile);
mUserProfileButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
IntentUtil.start_activity(HomeActivity.this, UserActivity.class, (Map<String,Integer>)null);
}
});
mAuthInfoTextView = (TextView)findViewById(R.id.auth_info);
}
**/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.message_list_actions, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId()){
case R.id.action_edit:
break;
case R.id.action_refresh:
mFragment.refresh();
break;
default:
super.onOptionsItemSelected(item);
}
return true;
}
/**
* configure ActionBar
* @param actionBar
*/
private void configureActionBar(ActionBar actionBar){
/**
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
mGroupsDownListAdapter = new GroupsDropDownListAdapter(this);
actionBar.setListNavigationCallbacks(mGroupsDownListAdapter, new OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int arg0, long arg1) {
// TODO Auto-generated method stub
mCurrentGroup = mGroupsDownListAdapter.getGroupId(arg0);
mHomeFragment.setCurrentGroup(mCurrentGroup);
if(mStart&&arg0 != 0)
mStart = false;
if(!mStart)
mHomeFragment.refresh();
return true;
}
});
**/
}
/**
* init sliding menu
*/
/**
private void initSlidingMenu() {
setBehindContentView(R.layout.behind_slidingmenu);
// customize the SlidingMenu
mSlidingMenu = getSlidingMenu();
mSlidingMenu.setShadowWidthRes(R.dimen.shadow_width);
mSlidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// slidingMenu.setFadeDegree(0.35f);
mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
mSlidingMenu.setShadowDrawable(R.drawable.slidingmenu_shadow);
//slidingMenu.setShadowWidth(20);
mSlidingMenu.setBehindScrollScale(0);
}
**/
@Override
public Loader<List<GroupItem>> onCreateLoader(int id, Bundle args) {
// TODO Auto-generated method stub
return new AsyncLoader<List<GroupItem>>(HomeActivity.this) {
@Override
protected List<GroupItem> loadData() {
// TODO Auto-generated method stub
GroupService service = new GroupService();
GroupPage page = null;
page = service.getGroupsByUsername(Auth.username);
if(page == null)
return null;
mLog.i(page.toString());
List<GroupItem> results = page.getResults();
return results;
}
};
}
@Override
public void onLoadFinished(Loader<List<GroupItem>> arg0, List<GroupItem> arg1) {
// TODO Auto-generated method stub
//mGroupsDownListAdapter.setOrgs(arg1);
setGroups(arg1);
}
@Override
public void onLoaderReset(Loader<List<GroupItem>> arg0) {
// TODO Auto-generated method stub
}
@Override
public void finish() {
// TODO Auto-generated method stub
super.finish();
overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);
}
/**
* weibo authentication callback class
* @author absurd
*
*/
class AuthDialogListener implements WeiboAuthListener{
@Override
public void onCancel() {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Auth cancel", Toast.LENGTH_LONG).show();
}
@SuppressLint("SimpleDateFormat")
@Override
public void onComplete(Bundle arg0) {
// TODO Auto-generated method stub
String token = arg0.getString("access_token");
String expires_in = arg0.getString("expires_in");
mAccessToken = new Oauth2AccessToken(token, expires_in);
if(mAccessToken.isSessionValid()){
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
.format(new java.util.Date(mAccessToken.getExpiresTime()));
mAuthInfoTextView.setText("success: \r\naccess_token: " + token +
"\r\nexpire_in" + expires_in + "\r\ndate" + date);
// write accesskey to sharedPreferences
AccessTokenKeeper.keepAccessToken(HomeActivity.this,mAccessToken);
Toast.makeText(HomeActivity.this, "auth successful", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(WeiboDialogError arg0) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
"Auth error : " + arg0.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onWeiboException(WeiboException arg0) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
"Auth exception : " + arg0.getMessage(), Toast.LENGTH_LONG).show();
}
}
}