package com.yydcdut.note.views.gallery.impl;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
import com.yydcdut.note.R;
import com.yydcdut.note.adapter.recycler.MediaPhotoAdapter;
import com.yydcdut.note.adapter.recycler.vh.MediaPhotoViewHolder;
import com.yydcdut.note.entity.gallery.MediaFolder;
import com.yydcdut.note.model.gallery.SelectPhotoModel;
import com.yydcdut.note.presenters.gallery.impl.MediaPhotoPresenterImpl;
import com.yydcdut.note.views.BaseActivity;
import com.yydcdut.note.views.BaseFragment;
import com.yydcdut.note.views.gallery.IMediaPhotoView;
import java.util.List;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by yuyidong on 16/4/2.
*/
public class MediaPhotoFragment extends BaseFragment implements IMediaPhotoView,
ActionBar.OnNavigationListener, MediaPhotoViewHolder.OnItemClickListener,
MediaPhotoViewHolder.OnItemSelectListener {
private GalleryActivity mGalleryActivity;
@BindView(R.id.rv_gallery)
RecyclerView mRecyclerView;
private ArrayAdapter<String> mFolderAdapter;
private MediaPhotoAdapter mMediaPhotoAdapter;
private ActionBar mActionBar;
@Inject
MediaPhotoPresenterImpl mMediaPhotoPresenter;
public static MediaPhotoFragment newInstance() {
return new MediaPhotoFragment();
}
@Override
public void getBundle(Bundle bundle) {
}
@Override
public View inflateView(LayoutInflater inflater) {
return inflater.inflate(R.layout.frag_media_photo, null);
}
@Override
public void initInjector() {
mFragmentComponent.inject(this);
}
@Override
public void initUI(View view) {
ButterKnife.bind(this, view);
mGalleryActivity = (GalleryActivity) getActivity();
GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 3);
mRecyclerView.setLayoutManager(gridLayoutManager);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mMediaPhotoPresenter.attachView(this);
}
@Override
public void setListNavigationAdapter(List<String> folderNameList) {
mFolderAdapter = new ArrayAdapter<>(getContext(), R.layout.item_spinner, folderNameList);
mActionBar = mGalleryActivity.getSupportActionBar();
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
mActionBar.setListNavigationCallbacks(mFolderAdapter, this);
}
@Override
public void setMediaAdapter(MediaFolder mediaFolder, SelectPhotoModel selectPhotoModel) {
int size = getResources().getDisplayMetrics().widthPixels / 3;
mMediaPhotoAdapter = new MediaPhotoAdapter(getContext(), size, mediaFolder, selectPhotoModel, this, this);
mRecyclerView.setAdapter(mMediaPhotoAdapter);
}
@Override
public void initData() {
}
@Override
public void initListener(View view) {
}
@Override
public void onItemClick(View v, int layoutPosition, int adapterPosition) {
mMediaPhotoPresenter.jump2DetailPhoto(adapterPosition, false);
}
@Override
public void jump2PhotoDetail(int position, String folderName, boolean isPreviewSelected) {
Intent intent = new Intent(getActivity(), PhotoDetailActivity.class);
intent.putExtra(BaseActivity.INTENT_PAGE, position);
intent.putExtra(BaseActivity.INTENT_FOLDER, folderName);
intent.putExtra(BaseActivity.INTENT_PREVIEW_SELECTED, isPreviewSelected);
startActivityForResult(intent, BaseActivity.REQUEST_CODE);
}
@Override
public void updateMediaFolder(MediaFolder mediaFolder) {
mMediaPhotoAdapter.updateMediaFolder(mediaFolder);
}
@Override
public void setMenuTitle(String content) {
mGalleryActivity.getPreviewMenu().setTitle(content);
}
@Override
public void notifyDataChanged() {
mMediaPhotoAdapter.notifyDataSetChanged();
}
@Override
public void onItemSelectClick(View v, int layoutPosition, int adapterPosition, boolean isSelected) {
mMediaPhotoPresenter.onSelected(adapterPosition, isSelected);
}
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
mMediaPhotoPresenter.updateListNavigation(itemPosition);
return true;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (!mMediaPhotoPresenter.onReturnData(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}
public void notifyAdapterDataChanged() {
mMediaPhotoAdapter.notifyDataSetChanged();
}
}