/**
*
*/
package com.photoshare.service.photos.views;
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.photos.PhotoBean;
import com.photoshare.service.photos.PhotoType;
import com.photoshare.service.photos.PhotosGetInfoRequestParam;
import com.photoshare.service.photos.PhotosGetInfoResponseBean;
import com.photoshare.service.users.UserInfo;
import com.photoshare.tabHost.R;
import com.photoshare.utils.Utils;
/**
* @author Aron
*
*/
public class PopularPhotosFragment extends BaseFragment {
private PopularPhotosView popularView;
private UserInfo userInfo;
private ArrayList<PhotoBean> photos;
private PhotoType type;
private int leftBtnVisibility = View.INVISIBLE;
private int rightBtnVisibility = View.INVISIBLE;
private String titleBarText;
private int demandPage;
private int currentPage;
public static PopularPhotosFragment newInstance(int fragmentViewId) {
PopularPhotosFragment pp = new PopularPhotosFragment();
pp.setFragmentViewId(fragmentViewId);
return pp;
}
public UserInfo getUserInfo() {
return userInfo;
}
public PhotoType getType() {
return type;
}
public ArrayList<PhotoBean> getPhotos() {
return photos;
}
public void setUserInfo(UserInfo userInfo) {
this.userInfo = userInfo;
}
public void setType(PhotoType type) {
this.type = type;
}
public void setPhotos(ArrayList<PhotoBean> photos) {
this.photos = photos;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
if (savedInstanceState != null) {
if (savedInstanceState.containsKey(PhotoBean.KEY_PHOTOS)) {
photos = savedInstanceState
.getParcelableArrayList(PhotoBean.KEY_PHOTOS);
}
if (savedInstanceState.containsKey(PhotoBean.KEY_PHOTO_TYPE)) {
type = PhotoType.SWITCH(savedInstanceState
.getString(PhotoBean.KEY_PHOTO_TYPE));
}
if (savedInstanceState.containsKey(UserInfo.KEY_USER_INFO)) {
userInfo = savedInstanceState
.getParcelable(UserInfo.KEY_USER_INFO);
}
}
super.onActivityCreated(savedInstanceState);
Bundle bundle = getArguments();
if (bundle != null) {
if (bundle.containsKey(UserInfo.KEY_USER_INFO)) {
userInfo = bundle.getParcelable(UserInfo.KEY_USER_INFO);
}
if (bundle.containsKey(PhotoBean.KEY_PHOTO_TYPE)) {
type = PhotoType.SWITCH(bundle
.getString(PhotoBean.KEY_PHOTO_TYPE));
}
if (bundle.containsKey(PhotoBean.KEY_PHOTOS)) {
photos = bundle.getParcelableArrayList(PhotoBean.KEY_PHOTOS);
}
}
try {
AsyncGetPhotos();
} catch (NetworkException e) {
AsyncSignIn();
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
if (outState != null) {
outState.putParcelableArrayList(PhotoBean.KEY_PHOTOS, photos);
if (photos == null) {
Utils.logger("Photos is Null");
}
outState.putString(PhotoBean.KEY_PHOTO_TYPE, type.toString());
outState.putParcelable(UserInfo.KEY_USER_INFO, userInfo);
}
super.onSaveInstanceState(outState);
}
@Override
public void onResume() {
super.onResume();
Bundle bundle = getArguments();
if (bundle != null) {
if (bundle.containsKey(UserInfo.KEY_USER_INFO)) {
userInfo = bundle.getParcelable(UserInfo.KEY_USER_INFO);
}
if (bundle.containsKey(PhotoBean.KEY_PHOTO_TYPE)) {
type = PhotoType.SWITCH(bundle
.getString(PhotoBean.KEY_PHOTO_TYPE));
}
if (bundle.containsKey(PhotoBean.KEY_PHOTOS)) {
photos = bundle.getParcelableArrayList(PhotoBean.KEY_PHOTOS);
}
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (!processArguments()) {
container.addView(super.onCreateView(inflater, container,
savedInstanceState));
titleBarText = getPopularText();
initTitleBar("", "", titleBarText, leftBtnVisibility,
rightBtnVisibility);
}
return inflater.inflate(R.layout.popular_layout, container, false);
}
/**
*
*/
private void initView() {
Tag = getPopularFragment();
popularView = new PopularPhotosView(getActivity().findViewById(
R.id.popularId), photos, async, getActivity());
popularView.registerCallback(mCallback);
popularView.apply();
}
private void AsyncGetPhotos() throws NetworkException {
PhotosGetInfoRequestParam param = new PhotosGetInfoRequestParam.PhotoRequestBuilder()
.Field(PhotosGetInfoRequestParam.FIELD_DEFAULT).Method(type)
.CurrentPage(currentPage).UserId(userInfo.getUid())
.DemandPage(demandPage).build();
AbstractRequestListener<PhotosGetInfoResponseBean> listener = new AbstractRequestListener<PhotosGetInfoResponseBean>() {
@Override
public void onComplete(final PhotosGetInfoResponseBean bean) {
if (bean != null) {
photos = bean.getPhotos();
}
getActivity().runOnUiThread(new Runnable() {
public void run() {
Log.i("receivePopularPhotos", "getPhotos");
initView();
}
});
}
@Override
public void onFault(final Throwable fault) {
mExceptionHandler.obtainMessage(NetworkError.ERROR_NETWORK)
.sendToTarget();
getActivity().runOnUiThread(new Runnable() {
public void run() {
}
});
}
@Override
public void onNetworkError(final NetworkError networkError) {
mExceptionHandler
.obtainMessage(NetworkError.ERROR_REFRESH_DATA)
.sendToTarget();
getActivity().runOnUiThread(new Runnable() {
public void run() {
}
});
}
};
async.getPhotosInfo(param, listener);
}
private PopularPhotosView.ICallback mCallback = new PopularPhotosView.ICallback() {
public void OnImageClick(PhotoBean photo) {
forward(getFeedsItemFragment(), photo.params());
}
public void OnImageLoaded(final ImageView image,
final Drawable drawable, final String url) {
getActivity().runOnUiThread(new Runnable() {
public void run() {
Log.i("displayImage", url);
image.setImageDrawable(drawable);
}
});
}
public void OnImageDefaule(final ImageView image) {
getActivity().runOnUiThread(new Runnable() {
public void run() {
Log.i("displayImage", "default");
image.setImageResource(R.drawable.icon);
}
});
}
};
private String getFeedsItemFragment() {
return getString(R.string.ffeedsItemFragment);
}
private String getPopularFragment() {
return getString(R.string.fpopularPhotosFragment);
}
private String getPopularText() {
return getString(R.string.popular);
}
/*
* (non-Javadoc)
*
* @see com.photoshare.fragments.BaseFragment#OnRightBtnClicked()
*/
@Override
protected void onRightBtnClicked() {
}
/*
* (non-Javadoc)
*
* @see com.photoshare.fragments.BaseFragment#OnLeftBtnClicked()
*/
@Override
protected void onLeftBtnClicked() {
}
@Override
protected void onLoginSuccess() {
// TODO Auto-generated method stub
}
}