package typical_if.android.fragment; import android.app.Activity; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.vk.sdk.VKSdk; import com.vk.sdk.VKUIHelper; import com.vk.sdk.api.model.VKApiPhoto; import org.json.JSONArray; import org.json.JSONObject; import java.util.ArrayList; import de.greenrobot.event.EventBus; import typical_if.android.Constants; import typical_if.android.ExtendedViewPager; import typical_if.android.OfflineMode; import typical_if.android.R; import typical_if.android.TIFApp; import typical_if.android.VKHelper; import typical_if.android.VKRequestListener; import typical_if.android.activity.MainActivity; import typical_if.android.adapter.FullScreenImageAdapter; import typical_if.android.event.EventReturnNeedAdapter; public class FragmentFullScreenViewer extends Fragment implements ExtendedViewPager.OnPageChangeListener { // public static final String LIKED = "LIKED: "; // public static final String LIKE_DELETED = "LIKE DELETED"; private FragmentFullScreenViewer.OnFragmentInteractionListener mListener; public ArrayList<VKApiPhoto> photos; private ExtendedViewPager imagePager; public int currentPosition; public FullScreenImageAdapter adapter; // public static final String ARG_VK_GROUP_ID = "vk_group_id"; // public static final String ARG_VK_ALBUM_ID = "vk_album_id"; public static final String ARG_VK_USER_ID = "user_id"; public static final String TYPE = "photo"; // public static Bundle args; //public View rootView; long user_id; // TextView countLikes; // TextView countComments; // View addLike; // View goToComments; TextView photoHeader; // CheckBox likedOrNotLikedBox; TextView counterOfPhotos; TextView albumSize; Button btnLike; Button btnComment; public int originalSizeOfAlbum; private VKApiPhoto fromPhoto; // public static View panel; // public FragmentFullScreenViewer(ArrayList<VKApiPhoto> photos, int currentposition, int sizeOfAlbum) { // this.photos = photos; // this.currentPosition = currentposition; // this.originalSizeOfAlbum = sizeOfAlbum; // setArguments(new Bundle()); // } public FragmentFullScreenViewer() { } @Override public void onCreate(Bundle savedInstanceState) { // args.putSerializable("finalPhotos", photos); // args.putInt("position", position); // args.putInt("sizeOfAlbum", 0); super.onCreate(savedInstanceState); Constants.isFragmentFullScreenLoaded = true; final Bundle args = getArguments(); if (args != null) { this.fromPhoto = args.getParcelable("fromPhoto"); this.photos = (ArrayList<VKApiPhoto>) args.getSerializable("finalPhotos"); this.currentPosition = args.getInt("position"); this.originalSizeOfAlbum = args.getInt("sizeOfAlbum"); } } @Override public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final Bundle arguments = getArguments(); Constants.isFragmentFullScreenLoaded = true; EventBus.getDefault().register(this); // ((MainActivity) getActivity()).getSupportActionBar().hide(); // FragmentWall.setDisabledMenu(); final View rootView = inflater.inflate(R.layout.fragment_fullscreen_list, container, false); // addLike = rootView.findViewById(R.id.add_like); // goToComments = rootView.findViewById(R.id.go_to_comments); photoHeader = (TextView) rootView.findViewById(R.id.photoHeader); photoHeader.setVisibility(View.GONE); counterOfPhotos = (TextView) rootView.findViewById(R.id.counterOfPhotos); albumSize = (TextView) rootView.findViewById(R.id.amountOfPhotos); // panel = rootView.findViewById(R.id.fullscreen_action_panel); //btnLike = ((CheckBox) rootView.findViewById(R.id.cb_photo_like)); //btnComment= ((CheckBox) rootView.findViewById(R.id.cb_photo_comment)); btnLike = (Button) rootView.findViewById(R.id.add_like); btnComment = (Button) rootView.findViewById(R.id.go_to_comments); FragmentManager manager = getFragmentManager(); imagePager = (ExtendedViewPager) rootView.findViewById(R.id.pager); imagePager.setOnPageChangeListener(this); onPageSelected(0); adapter = new FullScreenImageAdapter(fromPhoto, photos, getLayoutInflater(arguments), arguments, OfflineMode.loadLong(Constants.VK_GROUP_ID), Constants.ALBUM_ID, arguments.getLong(ARG_VK_USER_ID), manager, rootView); adapter.notifyDataSetChanged(); imagePager.setAdapter(adapter); imagePager.setCurrentItem(currentPosition); adapter.notifyDataSetChanged(); VKHelper.getMyselfInfo(new VKRequestListener() { @Override public void onSuccess() { if (hasJson) { JSONArray arr = vkJson.optJSONArray(VKHelper.TIF_VK_SDK_KEY_RESPONSE); JSONObject jsonObject = arr.optJSONObject(0); Constants.USER_ID = jsonObject.optLong("id"); arguments.putLong(ARG_VK_USER_ID, user_id); } } // @Override // public void onError() { // TIFApp.showCommonErrorToast(); // } }); setRetainInstance(true); Constants.queueOfAdapters.add(adapter); return rootView; } @Override public void onResume() { super.onResume(); VKUIHelper.onResume(getActivity()); Constants.isFragmentFullScreenLoaded = true; } @Override public void onDestroy() { super.onDestroy(); VKUIHelper.onDestroy(getActivity()); EventBus.getDefault().unregister(this); Constants.isFragmentFullScreenLoaded = false; } @Override public void onAttach(Activity activity) { super.onAttach(activity); Constants.isFragmentFullScreenLoaded = true; try { mListener = (OnFragmentInteractionListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnFragmentInteractionListener"); } } @Override public void onDetach() { super.onDetach(); mListener = null; Constants.isFragmentFullScreenLoaded = false; } @Override public void onPageScrolled(final int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(final int position) { if (photos.get(position).likes == 0) { btnLike.setText(null); } else btnLike.setText(String.valueOf(photos.get(position).likes)); if (photos.get(position).comments == 0) { btnComment.setText(null); } else btnComment.setText(String.valueOf(photos.get(position).comments)); counterOfPhotos.setText(String.valueOf(position + 1)); // albumSize.setText(String.valueOf(Constants.COUNT_OF_PHOTOS)); if (originalSizeOfAlbum == 0) { albumSize.setText(String.valueOf(photos.size())); } else albumSize.setText(String.valueOf(originalSizeOfAlbum)); VKHelper.isLikedPhoto(photos.get(position).id, new VKRequestListener() { @Override public void onSuccess() { if (hasJson) { JSONObject j = vkJson.optJSONObject(VKHelper.TIF_VK_SDK_KEY_RESPONSE); if (j != null) photos.get(position).user_likes = j.optInt("liked"); } } // @Override // public void onError() { // showErrorToast(); // } }); btnLike.setSelected(photos.get(position).user_likes > 0); // if (photos.get(position).user_likes == 0) { // btnLike.setChecked(false); // } // else{ // btnLike.setChecked(true); // } btnLike.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (VKSdk.isLoggedIn()) { if (photos.get(position).user_likes == 0 && !btnLike.isSelected()) { VKHelper.setLike(TYPE, photos.get(position).owner_id, photos.get(position).id, new VKRequestListener() { @Override public void onSuccess() { btnLike.setSelected(true); final int likesCount = ++photos.get(position).likes; btnLike.setText(likesCount == 0 ? null : String.valueOf(likesCount)); photos.get(position).user_likes = 1; } // @Override // public void onError() { // TIFApp.showCommonErrorToast(); // } }); } else { VKHelper.deleteLike(TYPE, photos.get(position).owner_id, photos.get(position).id, new VKRequestListener() { @Override public void onSuccess() { btnLike.setSelected(false); final int likesCount = --photos.get(position).likes; photos.get(position).user_likes = 0; btnLike.setText(likesCount == 0 ? null : String.valueOf(likesCount)); } // @Override // public void onError() { // TIFApp.showCommonErrorToast(); // } }); } } else if (!VKSdk.isLoggedIn()) { Toast.makeText(TIFApp.getAppContext(), R.string.auth_error, Toast.LENGTH_SHORT).show(); } } }); btnComment.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (VKSdk.isLoggedIn()) { FragmentComments fragment = FragmentComments.newInstanceForPhoto(photos.get(position), Constants.USER_ID); getFragmentManager().beginTransaction().add(R.id.container, fragment).addToBackStack(null).commit(); } else if (!VKSdk.isLoggedIn()) { Toast.makeText(TIFApp.getAppContext(), R.string.auth_error, Toast.LENGTH_SHORT).show(); } } }); } @Override public void onPageScrollStateChanged(int state) { //Log.d("stateOnPageScrollStateChanged^---------------------------------------------------------------->" + " ", state + ""); } public interface OnFragmentInteractionListener { // TODO: Update argument type and name public void onFragmentInteraction(Uri uri); } @SuppressWarnings("unused") // used via EventBus but is Lint undetectable public void onEventMainThread(EventReturnNeedAdapter event) { adapter = event.adapter; adapter.notifyDataSetChanged(); imagePager.setAdapter(adapter); imagePager.setCurrentItem(currentPosition); adapter.notifyDataSetChanged(); } }