package org.wordpress.android.ui.reader; import android.app.Activity; import android.app.Fragment; import android.graphics.Point; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import org.wordpress.android.R; import org.wordpress.android.ui.reader.views.ReaderPhotoView; import org.wordpress.android.ui.reader.views.ReaderPhotoView.PhotoViewListener; import org.wordpress.android.util.AppLog; import org.wordpress.android.util.DisplayUtils; public class ReaderPhotoViewerFragment extends Fragment { private String mImageUrl; private boolean mIsPrivate; private ReaderPhotoView mPhotoView; private PhotoViewListener mPhotoViewListener; /** * @param imageUrl the url of the image to load * @param isPrivate whether image is from a private blog */ static ReaderPhotoViewerFragment newInstance(String imageUrl, boolean isPrivate) { AppLog.d(AppLog.T.READER, "reader photo fragment > newInstance"); Bundle args = new Bundle(); args.putString(ReaderConstants.ARG_IMAGE_URL, imageUrl); args.putBoolean(ReaderConstants.ARG_IS_PRIVATE, isPrivate); ReaderPhotoViewerFragment fragment = new ReaderPhotoViewerFragment(); fragment.setArguments(args); return fragment; } @Override public void setArguments(Bundle args) { super.setArguments(args); if (args != null) { mImageUrl = args.getString(ReaderConstants.ARG_IMAGE_URL); mIsPrivate = args.getBoolean(ReaderConstants.ARG_IS_PRIVATE); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.reader_fragment_photo_viewer, container, false); mPhotoView = (ReaderPhotoView) view.findViewById(R.id.photo_view); if (savedInstanceState != null) { mImageUrl = savedInstanceState.getString(ReaderConstants.ARG_IMAGE_URL); mIsPrivate = savedInstanceState.getBoolean(ReaderConstants.ARG_IS_PRIVATE); } return view; } @SuppressWarnings("deprecation") @Override public void onAttach(Activity activity) { super.onAttach(activity); if (activity instanceof PhotoViewListener) { mPhotoViewListener = (PhotoViewListener) activity; } } @Override public void onResume() { super.onResume(); showImage(); } @Override public void onSaveInstanceState(Bundle outState) { outState.putString(ReaderConstants.ARG_IMAGE_URL, mImageUrl); outState.putBoolean(ReaderConstants.ARG_IS_PRIVATE, mIsPrivate); super.onSaveInstanceState(outState); } private void showImage() { if (isAdded() && !TextUtils.isEmpty(mImageUrl)) { // use max of width/height so image is cached the same regardless of orientation Point pt = DisplayUtils.getDisplayPixelSize(getActivity()); int hiResWidth = Math.max(pt.x, pt.y); mPhotoView.setImageUrl(mImageUrl, hiResWidth, mIsPrivate, mPhotoViewListener); } } }