package com.anarchy.classifyview.sample.ireader;
import android.content.Context;
import android.databinding.DataBindingUtil;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.PopupWindow;
import com.anarchy.classify.ClassifyView;
import com.anarchy.classifyview.R;
import com.anarchy.classifyview.core.BaseFragment;
import com.anarchy.classifyview.databinding.ExtraIreaderBottomBarBinding;
import com.anarchy.classifyview.databinding.FragmentMockIreaderBinding;
import com.anarchy.classifyview.sample.ireader.model.IReaderMockData;
import java.util.Random;
/**
* User: Anarchy
* Email: rsshinide38@163.com
* Date: 16/12/26 15:01
* Description:
*/
public class IReaderMockFragment extends BaseFragment {
private FragmentMockIreaderBinding mBinding;
private ExtraIreaderBottomBarBinding mBottomBinding;
private IReaderAdapter mAdapter;
private Random mRandom;
private WindowManager mWindowManager;
private WindowManager.LayoutParams mLayoutParams;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
setRetainInstance(true);
mWindowManager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
mLayoutParams = new WindowManager.LayoutParams();
mLayoutParams.format = PixelFormat.TRANSPARENT;
mLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL;
mLayoutParams.token = getActivity().getWindow().getDecorView().getWindowToken();
mLayoutParams.gravity = Gravity.BOTTOM;
mLayoutParams.flags |= WindowManager.LayoutParams.FLAG_SPLIT_TOUCH|WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mLayoutParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
mLayoutParams.width = -1;
mLayoutParams.height = -2;
}
@Nullable
@Override
public View onCreateView(final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_mock_ireader, container, false);
mBottomBinding = DataBindingUtil.inflate(inflater, R.layout.extra_ireader_bottom_bar, null, false);
mRandom = new Random(System.currentTimeMillis());
mAdapter = new IReaderAdapter();
mAdapter.registerObserver(new IReaderAdapter.IReaderObserver() {
int count = 0;
@Override
public void onChecked(boolean isChecked) {
count += isChecked ? 1 : -1;
if (count <= 0) {
count = 0;
mBottomBinding.icDeleteBadge.setVisibility(View.INVISIBLE);
setBottomEnable(false);
} else {
if (mBottomBinding.icDeleteBadge.getVisibility() == View.INVISIBLE) {
mBottomBinding.icDeleteBadge.setVisibility(View.VISIBLE);
}
mBottomBinding.icDeleteBadge.setText(String.valueOf(count));
setBottomEnable(true);
}
}
@Override
public void onEditChanged(boolean inEdit) {
if(inEdit){
showEditMode();
}else {
hideEditMode();
}
}
@Override
public void onRestore() {
count = 0;
mBottomBinding.icDeleteBadge.setVisibility(View.INVISIBLE);
setBottomEnable(false);
}
@Override
public void onHideSubDialog() {
mBinding.classifyView.hideSubContainer();
}
});
mBinding.classifyView.setAdapter(mAdapter);
mBinding.classifyView.setDebugAble(true);
mBinding.textComplete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAdapter.setEditMode(false);
}
});
mBottomBinding.containerDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAdapter.removeAllCheckedBook();
}
});
final float density = getResources().getDisplayMetrics().density;
mBinding.getRoot().post(new Runnable() {
@Override
public void run() {
mBottomBinding.getRoot().setTranslationY(55*density);
mWindowManager.addView(mBottomBinding.getRoot(),mLayoutParams);
}
});
mBinding.toolBar.setTranslationY(-60*density);
return mBinding.getRoot();
}
@Override
public void onResume() {
super.onResume();
}
private void setBottomEnable(boolean enable) {
mBottomBinding.containerDelete.setEnabled(enable);
mBottomBinding.containerMove.setEnabled(enable);
mBottomBinding.containerShare.setEnabled(enable);
mBottomBinding.containerOrder.setEnabled(enable);
mBottomBinding.containerDetail.setEnabled(enable);
}
private void showEditMode() {
mBinding.toolBar.animate().translationY(0).start();
mBottomBinding.getRoot().animate().translationY(0).start();
}
private void hideEditMode() {
mBinding.toolBar.animate().translationY(-mBinding.toolBar.getHeight()).start();
mBottomBinding.getRoot().animate().translationY(mBottomBinding.getRoot().getHeight()).start();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_i_reader, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_add) {
mAdapter.addBook(generateRandomMockData());
return true;
}
return super.onOptionsItemSelected(item);
}
private IReaderMockData generateRandomMockData() {
IReaderMockData mockData = new IReaderMockData();
mockData.setColor(Color.rgb(mRandom.nextInt(256), mRandom.nextInt(256), mRandom.nextInt(256)));
return mockData;
}
@Override
public void onDestroyView() {
mWindowManager.removeViewImmediate(mBottomBinding.getRoot());
super.onDestroyView();
}
@Override
public boolean onBackPressed() {
if (mAdapter.isEditMode()) {
mAdapter.setEditMode(false);
return true;
}
return super.onBackPressed();
}
}