package com.moupress.app.friendshost;
import android.app.Activity;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.Toast;
import com.moupress.app.friendshost.activity.FHDialogActivity;
import com.moupress.app.friendshost.activity.FeedDetailViewActivity;
import com.moupress.app.friendshost.activity.FeedPublishActivity;
import com.moupress.app.friendshost.activity.LstViewFeedAdapter;
import com.moupress.app.friendshost.service.FeedRetrieveServiceConnection;
import com.moupress.app.friendshost.sns.FeedEntry;
import com.moupress.app.friendshost.sns.SnsOrg;
import com.moupress.app.friendshost.sns.Renren.RenrenUtil;
import com.moupress.app.friendshost.sns.facebook.FacebookUtil;
import com.moupress.app.friendshost.ui.MainUIView;
import com.moupress.app.friendshost.ui.listeners.ContentViewListener;
import com.moupress.app.friendshost.ui.listeners.TitleBarListener;
import com.moupress.app.friendshost.util.FeedOrganisor;
import com.moupress.app.friendshost.util.Pref;
public class PubSub {
private final String TAG = "PubSub";
private static Activity zActivity;
private static Context zContext;
//public static FacebookUtil zFacebook;
//public static RenrenUtil zRenrenUtil;
//public static SinaUtil zSinaUtil;
//public static TwitterUtil zTwitterUtil;
public static FeedOrganisor zFeedOrg;
public static SnsOrg zSnsOrg;
//public static UIManager uiMgr;
private MainUIView mainUIView;
//private static String displayedSns;
//private ListView uLstFeed;
//====Service Connection==============
private FeedRetrieveServiceConnection svcConn;
public PubSub(Context context, Activity activity) {
PubSub.zContext = context;
PubSub.zActivity = activity;
}
public PubSub(Activity activity) {
PubSub.zActivity = activity;
PubSub.zContext = activity.getApplicationContext();
//hardcoded here to avoid error
//displayedSns = Const.SNS_RENREN;
//uLstFeed = (ListView) zActivity.findViewById(R.id.uLstVFBFeed);
//fInitUIMgr();
fInitAcc();
LoadUI();
//fInitFeedUIPreview();
//fFBInitUI();
//fInitRenrenUI();
//fInitSinaUI();
//fInitTwitter();
//fInitPubUI();
//fInitSvc();
}
public void LoadUI()
{
fInitMainUI();
fLoadMainUI();
}
// private void fInitUIMgr() {
//
// uiMgr = new UIManager(zActivity);
//
// }
//===================Service Connection Methods =========
public void fBindSvc() {
// TODO Auto-generated method stub
if(svcConn == null)
this.svcConn = new FeedRetrieveServiceConnection(this);
this.svcConn.BindToService();
}
public boolean fCheckSvcRunning()
{
if(svcConn == null)
this.svcConn = new FeedRetrieveServiceConnection(this);
return svcConn.CheckSvcRunning();
}
public void UnBindToService() {
// TODO Auto-generated method stub
if(this.svcConn != null)
this.svcConn.UnBindToService();
}
//=====================Main UI Initialization=================
private void fInitMainUI() {
mainUIView = new MainUIView();
mainUIView.InitTitle(PubSub.zActivity, titleBarListener);
mainUIView.InitContent(PubSub.zActivity, contentViewListener);
}
//=====================Main UI Load =========================
private void fLoadMainUI(){
if(mainUIView != null)
{
Bundle snsFeedBundle = new Bundle();
snsFeedBundle.putCharSequenceArrayList(Const.SNS_SIGN_ON, zSnsOrg.GetSignOnSnsNames());
this.mainUIView.LoadView(snsFeedBundle);
}
}
ContentViewListener contentViewListener = new ContentViewListener()
{
};
TitleBarListener titleBarListener = new TitleBarListener()
{
@Override
public void OnTitleBarButtonClick(String viewName, int btnId, String snsName) {
if(viewName.equals(Const.VIEW_MAIN) && btnId == 1)
{
Intent intent = new Intent(zActivity, FeedPublishActivity.class);
intent.putExtra(Const.SNS, snsName);
zActivity.startActivity(intent);
}
}
};
public PubSub(Service service) {
PubSub.zContext = service.getBaseContext();
}
private LstViewFeedAdapter arrAdapterFeedPreview;
public LstViewFeedAdapter fGetAdapterFeedPreview() {return arrAdapterFeedPreview;}
// public void fInitFeedUIPreview() {
// arrAdapterFeedPreview = new LstViewFeedAdapter(zActivity, R.layout.feed_item_preview);
// uLstFeed.setAdapter(arrAdapterFeedPreview);
// uLstFeed.setItemsCanFocus(true);
// uLstFeed.setOnItemLongClickListener(new OnItemLongClickListener(){
//
// @Override
// public boolean onItemLongClick(AdapterView<?> parent, View view,
// int position, long id) {
// FeedEntry feed = (FeedEntry) arrAdapterFeedPreview.getItem(position);
// //Log.i(TAG, " Name: "+feed.getsName()+" Msg: "+feed.getsMsgBody());
// fFeedResendUI(feed);
// return true;
// }
// });
// uLstFeed.setOnItemClickListener(new OnItemClickListener() {
//
// @Override
// public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// FeedEntry feed = (FeedEntry) arrAdapterFeedPreview.getItem(position);
// fFeedDisplayDetailUI(feed);
// }
// });
// }
// public static void setSNSDisplayed(String snsName) {
// displayedSns = snsName;
// }
//Feed Resend UI
// public void fFeedResendUI(FeedEntry feed, String snsName)
// {
// Intent intent = new Intent(zActivity, FHDialogActivity.class);
// //intent.putExtra(Const.FEED_ITEM, feed);
// intent.putExtra(Const.FID, feed.getsID());
// intent.putExtra(Const.SNS, snsName);
// zActivity.startActivityForResult(intent, Const.FEED_RESEND_REQ_CD);
// }
//Feed Display Detail View UI
public void fFeedDisplayDetailUI(FeedEntry feed, String snsName)
{
Intent intent = new Intent(zActivity,FeedDetailViewActivity.class);
// intent.putExtra(Const.FEED_ITEM, feed);
// if (feed.getzComments() != null && feed.getzComments().size() > 0) {
// intent.putExtra(Const.COMMENTS, feed.getzComments());
// }
// intent.putExtra(Const.FID, feed.getsID());
// intent.putExtra(Const.SNS, snsName);
Pref.setMyStringPref(zContext, Const.SHOWDETAIL_FEEDID, feed.getsID());
Pref.setMyStringPref(zContext, Const.SHOWDETAIL_SNS, snsName);
zActivity.startActivity(intent);
}
//Init Facebook UI
// private void fFBInitUI() {
// ImageButton uBtnFBGetFeed = (ImageButton) zActivity.findViewById(R.id.imgBtn_Facebook);
//
// uBtnFBGetFeed.setOnClickListener(new View.OnClickListener() {
//
// @Override
// public void onClick(View v) {
// displayedSns = Const.SNS_FACEBOOK;
// zFacebook.fDisplayFeed();
// }
// });
// }
//
// private void fInitRenrenUI() {
// ImageButton uBtnRenrenGetFeed = (ImageButton) zActivity.findViewById(R.id.imgBtn_Renren);
//
// uBtnRenrenGetFeed.setOnClickListener(new View.OnClickListener() {
//
// @Override
// public void onClick(View v) {
// displayedSns = Const.SNS_RENREN;
// zRenrenUtil.fDisplayRenrenFeed();
// }
// });
// }
//
// private void fInitSinaUI() {
// ImageButton uBtnSinaGetFeed = (ImageButton) zActivity.findViewById(R.id.imgBtn_Sina);
//
// uBtnSinaGetFeed.setOnClickListener(new View.OnClickListener() {
//
// @Override
// public void onClick(View v) {
// displayedSns = Const.SNS_SINA;
// zSinaUtil.fDisplaySinaFeed();
// }
// });
// }
//
// private void fInitTwitter() {
// ImageButton uBtnTwitterGetFeed = (ImageButton) zActivity.findViewById(R.id.imgBtn_Twitter);
//
// uBtnTwitterGetFeed.setOnClickListener(new View.OnClickListener() {
//
// @Override
// public void onClick(View v) {
// displayedSns = Const.SNS_TWITTER;
// zTwitterUtil.fDisplayTwitterFeed();
// }
// });
// }
//
// private void fInitPubUI() {
// ImageButton uBtnPubFeed = (ImageButton) zActivity.findViewById(R.id.imgBtn_PubFeed);
//
// uBtnPubFeed.setOnClickListener(new View.OnClickListener() {
//
// @Override
// public void onClick(View v) {
// Intent intent = new Intent(zActivity, FeedPublishActivity.class);
// intent.putExtra(Const.SNS, Const.SNS_RENREN);
// zActivity.startActivity(intent);
// }
// });
// }
private void fInitAcc() {
//total 13M
// zFacebook = new FacebookUtil(this); //10M , 17ps
// zRenrenUtil = new RenrenUtil(this); //6.4M, 16ps
// zSinaUtil = new SinaUtil(this); //6.8M, 9ps
// zTwitterUtil = new TwitterUtil(this); // 7.0M, 10ps
zFeedOrg = new FeedOrganisor(this);
zSnsOrg = new SnsOrg(this);
}
// public FacebookUtil fGetFacebookUtil() {return zFacebook; }
// public RenrenUtil fGetRenrenUtil() {return zRenrenUtil; }
// public SinaUtil fGetSinaUtil() {return zSinaUtil;}
public Activity fGetActivity() { return zActivity; }
public Context fGetContext() { return zContext; }
public FeedOrganisor fGetFeedOrganisor() {return zFeedOrg; }
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == Const.FEED_RESEND_REQ_CD)
{
Log.i(TAG, "Feed Resend is called back!" + resultCode);
if(resultCode == Activity.RESULT_OK)
{
String snsName = data.getStringExtra(Const.SNS);
//FeedEntry feed = data.getParcelableExtra(Const.FEED_ITEM);
String feed_id = data.getStringExtra(Const.FID);
//FeedEntry feed = zFeedOrg.fGetFeedByID(displayedSns, feed_id);
FeedEntry feed = zFeedOrg.fGetFeedByID(snsName, feed_id);
// if(sns.equals(Const.SNS_FACEBOOK))
// {
// zFacebook.fResend(feed);
// }
// else if (sns.equals(Const.SNS_RENREN))
// {
// zRenrenUtil.fResend(feed);
// }
// else if (sns.equals(Const.SNS_TWITTER))
// {
// zTwitterUtil.fResend(feed);
// } else if (sns.equals(Const.SNS_SINA)) {
// zSinaUtil.fResend(feed);
// }
zSnsOrg.GetSnsInstance(snsName).fResend(feed);
}
}
else if(requestCode == Const.CD_REQ_DIALOG)
{
if(resultCode == Activity.RESULT_OK)
{
int index = data.getIntExtra(Const.SETTING_BASIC_GROUPS[0]+"_SET", -1);
this.svcConn.SendMessage(Const.SERVICE_UPDATE_FREQ, index, 0);
mainUIView.DialogCallBack(data);
}
}
else
{
// zRenrenUtil.onComplete(requestCode, resultCode, data);
// zFacebook.onComplete(requestCode, resultCode, data);
((RenrenUtil)zSnsOrg.GetSnsInstance(Const.SNS_RENREN)).onComplete(requestCode, resultCode, data);
((FacebookUtil)zSnsOrg.GetSnsInstance(Const.SNS_FACEBOOK)).onComplete(requestCode, resultCode, data);
}
}
public boolean SlidePanelBack()
{
if(mainUIView != null)
return mainUIView.SlidePanelBack();
else
return false;
}
}