package studio.uphie.one.abs;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.share.Sharer;
import com.facebook.share.model.ShareLinkContent;
import com.facebook.share.widget.ShareDialog;
import com.handmark.pulltorefresh.extras.viewpager.PullToRefreshViewPager;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import java.util.ArrayList;
import butterknife.Bind;
import butterknife.ButterKnife;
import studio.uphie.one.R;
import studio.uphie.one.interfaces.IInit;
import studio.uphie.one.interfaces.IShare;
import studio.uphie.one.interfaces.ShareChannel;
import studio.uphie.one.ui.FragmentAdapter;
import studio.uphie.one.ui.article.Article;
import studio.uphie.one.ui.home.Home;
import studio.uphie.one.ui.question.Question;
import studio.uphie.one.ui.thing.Thing;
import studio.uphie.one.utils.TextToast;
/**
* Created by Uphie on 2015/10/30.
* Email: uphie7@gmail.com
*/
public abstract class AbsModuleFragment extends Fragment implements IInit, ViewPager.OnPageChangeListener, IShare {
@Bind(R.id.pager)
public PullToRefreshViewPager pager;
public ShareDialog shareDialog;
public static FragmentAdapter adapter;
public static AbsModuleFragment instance;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(getLayoutId(), null);
ButterKnife.bind(this, view);
shareDialog = new ShareDialog(this);
CallbackManager callbackManager = CallbackManager.Factory.create();
shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
TextToast.shortShow(getString(R.string.share_fail));
}
});
pager.setOnPageChangeListener(this);
pager.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ViewPager>() {
@Override
public void onRefresh(PullToRefreshBase<ViewPager> refreshView) {
refresh();
}
});
adapter = new FragmentAdapter(getChildFragmentManager(), new ArrayList<AbsBaseFragment>());
pager.setAdapter(adapter);
init();
instance=this;
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
}
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void share(int channel, Object data) {
if (data == null) {
return;
}
switch (channel) {
case ShareChannel.FACEBOOK:
if (data instanceof Home) {
Home home = (Home) data;
ShareLinkContent content = new ShareLinkContent.Builder()
.setImageUrl(Uri.parse(home.strThumbnailUrl))
.setContentDescription(home.strContent)
.setContentTitle("「ONE·一个」 【句子】" + home.strMarketTime)
.setContentUrl(Uri.parse(home.sWebLk)).build();
if (shareDialog.canShow(content, ShareDialog.Mode.AUTOMATIC)) {
shareDialog.show(content, ShareDialog.Mode.AUTOMATIC);
}
} else if (data instanceof Article) {
Article article = (Article) data;
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentDescription(article.strContent.substring(0, 30) + "……")
.setContentTitle("「ONE·一个」 【文章】" + article.strContMarketTime)
.setContentUrl(Uri.parse(article.sWebLk)).build();
if (shareDialog.canShow(content, ShareDialog.Mode.AUTOMATIC)) {
shareDialog.show(content, ShareDialog.Mode.AUTOMATIC);
}
} else if (data instanceof Question) {
Question question = (Question) data;
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentDescription(question.strQuestionTitle)
.setContentTitle("「ONE·一个」 【问题】" + question.strQuestionMarketTime)
.setContentUrl(Uri.parse(question.sWebLk)).build();
if (shareDialog.canShow(content, ShareDialog.Mode.AUTOMATIC)) {
shareDialog.show(content, ShareDialog.Mode.AUTOMATIC);
}
} else {
Thing thing = (Thing) data;
ShareLinkContent content = new ShareLinkContent.Builder()
.setImageUrl(Uri.parse(thing.strBu))
.setContentDescription(thing.strTc)
.setContentTitle("「ONE·一个」 【东西】" + thing.strTm)
.setContentUrl(Uri.parse(thing.strWu)).build();
if (shareDialog.canShow(content, ShareDialog.Mode.AUTOMATIC)) {
shareDialog.show(content, ShareDialog.Mode.AUTOMATIC);
}
}
break;
case ShareChannel.GOOGLE_PLUS:
case ShareChannel.TWITTER:
case ShareChannel.WECHAT:
case ShareChannel.WEIBO:
case ShareChannel.QQ:
case ShareChannel.QZONE:
TextToast.longShow(getString(R.string.not_support_share));
break;
}
}
public static AbsModuleFragment getInstance(){
return instance;
}
public abstract void refresh();
}