/** * */ package com.photoshare.service.photos.views; 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.LikeHelper; import com.photoshare.service.likes.PhotoLikeRequestParam; import com.photoshare.service.likes.PhotoLikeResponseBean; import com.photoshare.service.photos.PhotoBean; import com.photoshare.service.photos.PhotoGetInfoRequestParam; import com.photoshare.service.photos.PhotoGetInfoResponseBean; import com.photoshare.service.users.UserInfo; import com.photoshare.tabHost.R; import com.photoshare.utils.Utils; import com.photoshare.view.AppTitleBarView; import com.photoshare.view.NotificationDisplayer; /** * @author Aron * */ public class FeedsItemFragment extends BaseFragment { private FeedItemView itemView; private PhotoBean photo; private String leftBtnText = ""; private String rightBtnText = ""; private String titlebarText = ""; private int leftBtnVisibility = View.VISIBLE; private int rightBtnVisibility = View.GONE; private NotificationDisplayer mNotificationDisplayer; public static FeedsItemFragment newInstance(int fragmentViewId) { FeedsItemFragment fif = new FeedsItemFragment(); fif.setFragmentViewId(fragmentViewId); return fif; } public PhotoBean getPhoto() { return photo; } private void initViews() { Tag = getFeedItemFragment(); itemView = new FeedItemView(getActivity().findViewById( R.id.feedsItemLayoutId), async, photo); itemView.registerCallback(mCallback); itemView.applyView(); mNotificationDisplayer = new NotificationDisplayer.NotificationBuilder() .Context(getActivity()).Tag(getLikeTag()) .Ticker(getLikeTicker()).build(); } @Override public void onActivityCreated(Bundle savedInstanceState) { if (savedInstanceState != null) { if (savedInstanceState.containsKey(PhotoBean.KEY_PHOTO)) { photo = savedInstanceState.getParcelable(PhotoBean.KEY_PHOTO); } if (savedInstanceState.containsKey(AppTitleBarView.LEFT_BTN_TEXT)) { leftBtnText = savedInstanceState .getString(AppTitleBarView.LEFT_BTN_TEXT); } } super.onActivityCreated(savedInstanceState); Bundle bundle = getArguments(); if (bundle != null) { if (bundle.containsKey(PhotoBean.KEY_PHOTO)) { photo = bundle.getParcelable(PhotoBean.KEY_PHOTO); } if (bundle.containsKey(AppTitleBarView.LEFT_BTN_TEXT)) { leftBtnText = bundle.getString(AppTitleBarView.LEFT_BTN_TEXT); } } leftBtnText = getBackText(); titlebarText = getPhotoText(); initTitleBar(leftBtnText, rightBtnText, titlebarText, leftBtnVisibility, rightBtnVisibility); try { AsyncGetPhotoInfo(); } catch (NetworkException e) { e.printStackTrace(); AsyncSignIn(); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.simple_list_item_feeds, container, false); } @Override public void onSaveInstanceState(Bundle outState) { if (outState != null) { outState.putParcelable(PhotoBean.KEY_PHOTO, photo); outState.putString(AppTitleBarView.LEFT_BTN_TEXT, leftBtnText); } super.onSaveInstanceState(outState); } private String getLikeTag() { return getString(R.string.nLikeTag); } private String getLikeTicker() { return getString(R.string.nLikeTicker); } private String getPhotoText() { return getString(R.string.photos); } private String getFeedItemFragment() { return getString(R.string.ffeedsItemFragment); } private void AsyncLikePhoto(PhotoBean photo) throws NetworkException { PhotoLikeRequestParam param = new PhotoLikeRequestParam.LikeBuilder() .UserId(user.getUserInfo().getUid()).PhotoId(photo.getPid()) .isLike(photo.isLike()).build(); mNotificationDisplayer.setTag(getLikeTag()); mNotificationDisplayer.setTicker(getLikeTicker()); mNotificationDisplayer.displayNotification(); LikeHelper.ICallback mCallback = new LikeHelper.ICallback() { public void OnNetworkError(NetworkError error) { getActivity().runOnUiThread(new Runnable() { public void run() { } }); } public void OnFault(Throwable fault) { getActivity().runOnUiThread(new Runnable() { public void run() { } }); } public void OnComplete(PhotoLikeResponseBean bean) { mNotificationDisplayer.setTag(getSuccessTag()); mNotificationDisplayer.setTicker(getSuccessTicker()); getActivity().runOnUiThread(new Runnable() { public void run() { mNotificationDisplayer.displayNotification(); mNotificationDisplayer.cancleNotification(); } }); } }; async.publishLikePhoto(param, mCallback); mNotificationDisplayer.cancleNotification(); } private void AsyncGetPhotoInfo() throws NetworkException { PhotoGetInfoRequestParam param = new PhotoGetInfoRequestParam( photo.getPid()); Log.i("getPhotoInfo", photo.getPid() + ""); AbstractRequestListener<PhotoGetInfoResponseBean> listener = new AbstractRequestListener<PhotoGetInfoResponseBean>() { @Override public void onNetworkError(NetworkError networkError) { mExceptionHandler .obtainMessage(NetworkError.ERROR_REFRESH_DATA) .sendToTarget(); getActivity().runOnUiThread(new Runnable() { public void run() { } }); } @Override public void onFault(Throwable fault) { mExceptionHandler.obtainMessage(NetworkError.ERROR_NETWORK) .sendToTarget(); getActivity().runOnUiThread(new Runnable() { public void run() { } }); } @Override public void onComplete(PhotoGetInfoResponseBean bean) { if (bean != null) { photo = bean.getPhoto(); Utils.logger(photo.toString()); } getActivity().runOnUiThread(new Runnable() { public void run() { initViews(); } }); } }; async.getPhotoInfo(param, listener); } private String getUserHomeFragment() { return getString(R.string.fuserHomeFragment); } private String getLikeFragment() { return getString(R.string.flikeFragment); } private String getCommentFragment() { return getString(R.string.fcommentsFragment); } private String getBackText() { return getString(R.string.back); } private FeedItemView.ICallback mCallback = new FeedItemView.ICallback() { public void OnNameClick(UserInfo info) { Bundle args = new Bundle(); args.putParcelable(PhotoBean.KEY_PHOTO, photo); args.putParcelable(UserInfo.KEY_USER_INFO, info); forward(getUserHomeFragment(), args); } public void OnLikeListClick(PhotoBean like) { Bundle args = new Bundle(); args.putParcelable(PhotoBean.KEY_PHOTO, like); forward(getLikeFragment(), args); } public void OnCommentListClick(PhotoBean photo) { Bundle args = new Bundle(); args.putParcelable(PhotoBean.KEY_PHOTO, photo); forward(getCommentFragment(), args); } public void OnLikeClick(PhotoBean photo) { try { AsyncLikePhoto(photo); } catch (NetworkException e) { AsyncSignIn(); } } public void OnUserHeadLoaded(final ImageView image, final Drawable drawable, String url) { getActivity().runOnUiThread(new Runnable() { public void run() { image.setImageDrawable(drawable); } }); } public void OnFeedPhotoLoaded(final ImageView image, final Drawable drawable, String url) { getActivity().runOnUiThread(new Runnable() { public void run() { image.setImageDrawable(drawable); } }); } public void OnUserHeadDefault(final ImageView image) { getActivity().runOnUiThread(new Runnable() { public void run() { image.setImageResource(R.drawable.icon); } }); } public void OnFeedPhotoDefault(final ImageView image) { getActivity().runOnUiThread(new Runnable() { public void run() { image.setImageResource(R.drawable.icon); } }); } }; /* * (non-Javadoc) * * @see com.photoshare.fragments.BaseFragment#OnRightBtnClicked() */ @Override protected void onRightBtnClicked() { } /* * (non-Javadoc) * * @see com.photoshare.fragments.BaseFragment#OnLeftBtnClicked() */ @Override protected void onLeftBtnClicked() { backward(null); } @Override protected void onLoginSuccess() { // TODO Auto-generated method stub } }