package com.classic.car.ui.fragment;
import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.classic.adapter.CommonRecyclerAdapter;
import com.classic.car.R;
import com.classic.car.app.CarApplication;
import com.classic.car.db.dao.ConsumerDao;
import com.classic.car.entity.ConsumerDetail;
import com.classic.car.ui.activity.AddConsumerActivity;
import com.classic.car.ui.activity.MainActivity;
import com.classic.car.ui.adapter.ConsumerDetailAdapter;
import com.classic.car.ui.base.AppBaseFragment;
import com.classic.car.utils.RxUtil;
import com.classic.car.utils.ToastUtil;
import java.util.List;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.OnClick;
import rx.Subscription;
/**
* 应用名称: CarAssistant
* 包 名 称: com.classic.car.ui.fragment
*
* 文件描述:TODO
* 创 建 人:续写经典
* 创建时间:16/5/29 下午2:21
*/
public class MainFragment extends AppBaseFragment
implements CommonRecyclerAdapter.OnItemClickListener, CommonRecyclerAdapter.OnItemLongClickListener {
@BindView(R.id.main_recycler_view) RecyclerView mRecyclerView;
@BindView(R.id.main_fab) FloatingActionButton mFab;
@Inject ConsumerDao mConsumerDao;
private ConsumerDetailAdapter mAdapter;
private int mFabOffset;
public static MainFragment newInstance() {
return new MainFragment();
}
@Override public int getLayoutResId() {
return R.layout.fragment_main;
}
@TargetApi(Build.VERSION_CODES.DONUT) @Override
public void initView(View parentView, Bundle savedInstanceState) {
((CarApplication) mActivity.getApplicationContext()).getAppComponent().inject(this);
super.initView(parentView, savedInstanceState);
mRecyclerView.setLayoutManager(new LinearLayoutManager(mAppContext));
mAdapter = new ConsumerDetailAdapter(mAppContext, R.layout.item_consumer_detail);
mRecyclerView.setAdapter(mAdapter);
mAdapter.setOnItemClickListener(this);
mAdapter.setOnItemLongClickListener(this);
mRecyclerView.addOnScrollListener(new CommonRecyclerAdapter.AbsScrollControl() {
@Override public void onShow() {
mFab.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).start();
((MainActivity)mActivity).onShow();
}
@Override public void onHide() {
if(mFabOffset == 0) {
mFabOffset = mFab.getHeight() + mFab.getBottom();
}
mFab.animate().translationY(mFabOffset).setInterpolator(new AccelerateInterpolator(2));
((MainActivity)mActivity).onHide();
}
});
addSubscription(loadData());
}
//@Override public void onConfigurationChanged(Configuration newConfig) {
// super.onConfigurationChanged(newConfig);
// Logger.d("onConfigurationChanged: " + newConfig.toString());
// addSubscription(loadData());
//}
//
//@Override public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
// super.onMultiWindowModeChanged(isInMultiWindowMode);
// Logger.d("onMultiWindowModeChanged: " + isInMultiWindowMode);
//}
private Subscription loadData(){
return mConsumerDao.queryAll()
.compose(RxUtil.<List<ConsumerDetail>>applySchedulers(RxUtil.IO_ON_UI_TRANSFORMER))
.subscribe(mAdapter, RxUtil.ERROR_ACTION);
}
@OnClick(R.id.main_fab) public void onFabClick() {
AddConsumerActivity.start(mActivity, AddConsumerActivity.TYPE_ADD, null);
}
@Override public void onItemClick(RecyclerView.ViewHolder viewHolder, View view, int position) {
AddConsumerActivity.start(mActivity, AddConsumerActivity.TYPE_MODIFY, mAdapter.getItem(position));
}
@Override public boolean onItemLongClick(RecyclerView.ViewHolder viewHolder, View view, final int position) {
new MaterialDialog.Builder(mActivity).backgroundColorRes(R.color.white)
.content(R.string.delete_dialog_content)
.contentColorRes(R.color.primary_light)
.positiveText(R.string.confirm)
.negativeText(R.string.cancel)
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(MaterialDialog dialog, DialogAction which) {
int rows = mConsumerDao.delete(mAdapter.getItem(position).getId());
ToastUtil.showToast(mAppContext,
rows > 0 ? R.string.delete_success :
R.string.delete_fail);
dialog.dismiss();
}
})
.show();
return true;
}
}