/**
*
*/
package com.photoshare.service.news.view;
import java.util.ArrayList;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.photoshare.common.AbstractRequestListener;
import com.photoshare.exception.NetworkError;
import com.photoshare.exception.NetworkException;
import com.photoshare.fragments.BaseFragment;
import com.photoshare.service.news.FollowGetNewsRequestParam;
import com.photoshare.service.news.FollowGetNewsResponseBean;
import com.photoshare.service.news.NewsBean;
import com.photoshare.service.news.NewsType;
import com.photoshare.service.news.UserGetNewsRequestParam;
import com.photoshare.service.news.UserGetNewsResponseBean;
import com.photoshare.service.photos.PhotoBean;
import com.photoshare.service.users.UserInfo;
import com.photoshare.tabHost.R;
/**
* @author Aron
*
*/
public class NewsFragment extends BaseFragment {
private ArrayList<NewsBean> news;
private NewsView mNewsView;
private String leftBtnText = "";
private String rightBtnText = "";
private String titlebarText = "";
public static NewsFragment newInstance(int fragmentViewId) {
NewsFragment news = new NewsFragment();
news.setFragmentViewId(fragmentViewId);
return news;
}
public ArrayList<NewsBean> getNews() {
return news;
}
public void setNews(ArrayList<NewsBean> news) {
this.news = news;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
if (savedInstanceState != null) {
if (savedInstanceState.containsKey(NewsBean.KEY_NEWS)) {
news = savedInstanceState
.getParcelableArrayList(NewsBean.KEY_NEWS);
}
}
super.onActivityCreated(savedInstanceState);
leftBtnText = getMyNewsText();
titlebarText = getNewsText();
rightBtnText = getFollowingNewsText();
initTitleBar(leftBtnText, rightBtnText, titlebarText);
Bundle bundle = getArguments();
if (bundle != null) {
if (bundle.containsKey(NewsBean.KEY_NEWS)) {
news = bundle.getParcelableArrayList(NewsBean.KEY_NEWS);
}
}
try {
if (news != null) {
initViews();
} else {
AsyncGetUserNews(NewsType.MY_NEWS);
AsyncGetFollowerNews();
}
} catch (NetworkException e) {
AsyncSignIn();
}
}
private void initViews() {
Tag = getNewsFragment();
mNewsView = new NewsView(news, getActivity().findViewById(
R.id.newsLayoutId), getActivity(), async);
mNewsView.registerNewsClickListener(onNewsClickListener);
mNewsView.applyView();
setTitleBarDrawable(R.drawable.titlebar_right_button,
R.drawable.titlebar_right_button);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.i("NewsFragment", "createTitleView");
if (!processArguments()) {
container.addView(super.onCreateView(inflater, container,
savedInstanceState));
}
return inflater.inflate(R.layout.news_layout, container, false);
}
@Override
public void onSaveInstanceState(Bundle outState) {
if (outState != null) {
outState.putParcelableArrayList(NewsBean.KEY_NEWS, news);
}
super.onSaveInstanceState(outState);
}
private String getNewsText() {
return getString(R.string.news);
}
private String getMyNewsText() {
return getString(R.string.myNews);
}
private String getFollowingNewsText() {
return getString(R.string.followingNews);
}
@Deprecated
private void AsyncGetFollowerNews() throws NetworkException {
long uid = user.getUserInfo().getUid();
FollowGetNewsRequestParam param = new FollowGetNewsRequestParam(uid);
AbstractRequestListener<FollowGetNewsResponseBean> listener = new AbstractRequestListener<FollowGetNewsResponseBean>() {
@Override
public void onComplete(final FollowGetNewsResponseBean bean) {
if (bean != null) {
news = bean.getNews();
}
getActivity().runOnUiThread(new Runnable() {
public void run() {
initViews();
}
});
}
@Override
public void onNetworkError(final NetworkError networkError) {
mExceptionHandler
.obtainMessage(NetworkError.ERROR_REFRESH_DATA)
.sendToTarget();
getActivity().runOnUiThread(new Runnable() {
public void run() {
}
});
}
@Override
public void onFault(final Throwable fault) {
mExceptionHandler.obtainMessage(NetworkError.ERROR_NETWORK)
.sendToTarget();
getActivity().runOnUiThread(new Runnable() {
public void run() {
}
});
}
};
async.getFollowNews(param, listener);
}
private void AsyncGetUserNews(NewsType type) throws NetworkException {
long uid = user.getUserInfo().getUid();
UserGetNewsRequestParam param = new UserGetNewsRequestParam(uid);
param.setType(type);
AbstractRequestListener<UserGetNewsResponseBean> listener = new AbstractRequestListener<UserGetNewsResponseBean>() {
@Override
public void onComplete(final UserGetNewsResponseBean bean) {
if (bean != null) {
news = bean.getNews();
}
getActivity().runOnUiThread(new Runnable() {
public void run() {
initViews();
}
});
}
@Override
public void onNetworkError(final NetworkError networkError) {
mExceptionHandler
.obtainMessage(NetworkError.ERROR_REFRESH_DATA)
.sendToTarget();
getActivity().runOnUiThread(new Runnable() {
public void run() {
}
});
}
@Override
public void onFault(final Throwable fault) {
mExceptionHandler.obtainMessage(NetworkError.ERROR_NETWORK)
.sendToTarget();
getActivity().runOnUiThread(new Runnable() {
public void run() {
}
});
}
};
async.getUserNews(param, listener);
}
private NewsView.OnNewsClickListener onNewsClickListener = new NewsView.OnNewsClickListener() {
public void OnNewsImageClick(PhotoBean photo) {
Bundle args = new Bundle();
args.putParcelableArrayList(NewsBean.KEY_NEWS, news);
args.putParcelable(PhotoBean.KEY_PHOTO, photo);
forward(getFeedsItemFragment(), args);
}
public void OnNameClick(UserInfo info) {
Bundle args = new Bundle();
args.putParcelableArrayList(NewsBean.KEY_NEWS, news);
args.putParcelable(UserInfo.KEY_USER_INFO, info);
forward(getUserHomeFragment(), args);
}
public void OnUserHeadLoaded(final ImageView image,
final Drawable drawable, String url) {
getActivity().runOnUiThread(new Runnable() {
public void run() {
image.setImageDrawable(drawable);
}
});
}
public void OnImageDefault(final ImageView image) {
getActivity().runOnUiThread(new Runnable() {
public void run() {
image.setImageResource(R.drawable.icon);
}
});
}
};
private String getFeedsItemFragment() {
return getString(R.string.ffeedsItemFragment);
}
private String getUserHomeFragment() {
return getString(R.string.fuserHomeFragment);
}
private String getNewsFragment() {
return getString(R.string.fnewsFragment);
}
/*
* (non-Javadoc)
*
* @see com.photoshare.fragments.BaseFragment#OnRightBtnClicked()
*/
@Override
protected void onRightBtnClicked() {
try {
AsyncGetUserNews(NewsType.MY_NEWS);
} catch (NetworkException e) {
AsyncSignIn();
}
}
/*
* (non-Javadoc)
*
* @see com.photoshare.fragments.BaseFragment#OnLeftBtnClicked()
*/
@Override
protected void onLeftBtnClicked() {
try {
AsyncGetUserNews(NewsType.FOLLOWING_NEWS);
} catch (NetworkException e) {
AsyncSignIn();
}
}
@Override
protected void onLoginSuccess() {
// TODO Auto-generated method stub
}
}