package com.pluscubed.plustimer.ui.solvelist;
import android.app.Activity;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.afollestad.materialdialogs.MaterialDialog;
import com.pluscubed.plustimer.R;
import com.pluscubed.plustimer.base.BasePresenterFragment;
import com.pluscubed.plustimer.base.PresenterFactory;
/**
* Session tab
*/
public class SolveListFragment extends BasePresenterFragment<SolveListPresenter, SolveListView> implements SolveListView {
public static final String TAG = "SOLVE_LIST_FRAGMENT";
private RecyclerView mRecyclerView;
private SolveListAdapterView mSolveListAdapter;
private TextView mEmptyView;
//private ActionMode mActionMode;
private LinearLayout mResetSubmitLinearLayout;
public SolveListAdapterView getSolveListAdapter() {
return mSolveListAdapter;
}
@Override
public void onResume() {
super.onResume();
//TODO
//When Settings change
//onPuzzleTypeChanged();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
public SolveListPresenter getPresenter() {
return presenter;
}
@Override
public void onSaveInstanceState(Bundle outState) {
mSolveListAdapter.onSaveInstanceState(outState);
super.onSaveInstanceState(outState);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_solvelist_share_menuitem:
presenter.onSharePressed();
return true;
case R.id.menu_history_solvelist_delete_menuitem:
presenter.onDeletePressed();
return true;
case R.id.menu_solvelist_add_menuitem:
presenter.onAddSolvePressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void finishActionMode() {
/*if (mActionMode != null) {
mActionMode.finish();
}*/
}
@Override
public Activity getContextCompat() {
return getActivity();
}
@Override
public void setInitialized() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_solvelist, container, false);
mResetSubmitLinearLayout = (LinearLayout)
v.findViewById(R.id.fragment_solvelist_submit_reset_linearlayout);
Button reset = (Button) v.findViewById(R.id.fragment_solvelist_reset_button);
reset.setOnClickListener(view -> getPresenter().onResetButtonClicked());
Button submit = (Button) v.findViewById(R.id.fragment_solvelist_submit_button);
submit.setOnClickListener(view -> {
MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity());
builder.content(getString(R.string.submit_warning_message))
.positiveText(R.string.submit)
.negativeText(android.R.string.cancel)
.onPositive((dialog, which) -> getPresenter().onSubmitClicked());
builder.show();
});
mRecyclerView = (RecyclerView) v.findViewById(R.id.fragment_solvelist_recyclerview);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mEmptyView = (TextView) v.findViewById(android.R.id.empty);
mSolveListAdapter = new SolveListAdapter(getActivity(), savedInstanceState);
mRecyclerView.setAdapter((RecyclerView.Adapter) mSolveListAdapter);
/*mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
mListView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode,
int position, long id,
boolean checked) {
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mActionMode = mode;
getActivity().getMenuInflater().inflate(R.menu
.context_solve_or_session_list, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.context_solvelist_delete_menuitem:
for (int i = mListView.getCount() - 1; i >= 0; i--) {
if (mListView.isItemChecked(i)) {
//TODO
*//*mSession.deleteSolve((Solve) mListView
.getItemAtPosition(i), PuzzleType.get(mPuzzleTypeId));*//*
}
}
mode.finish();
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
}
});*/
//TODO
//onPuzzleTypeChanged();
return v;
}
@Override
public void showSessionSubmittedSnackbar() {
Snackbar.make(getView(),
getResources().getText(R.string.session_submitted),
Snackbar.LENGTH_SHORT
).show();
}
//TODO: Use Snackbar with "Undo" action instead
@Override
public void showResetWarningDialog() {
MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity());
builder.content(getString(R.string.reset_warning_message))
.title(getString(R.string.reset_warning))
.positiveText(R.string.reset)
.negativeText(android.R.string.cancel)
.onPositive((dialog, which) -> {
getPresenter().onResetDialogConfirmed();
showSessionResetSnackbar();
});
builder.show();
}
@Override
public void showSessionResetSnackbar() {
Snackbar.make(getView(),
getResources().getText(R.string.session_reset),
Snackbar.LENGTH_SHORT).show();
}
public void enableResetSubmitButtons(boolean enable) {
mResetSubmitLinearLayout.setVisibility(enable ? View.VISIBLE : View.GONE);
}
@Override
protected PresenterFactory<SolveListPresenter> getPresenterFactory() {
return new SolveListPresenter.Factory(getArguments());
}
@Override
protected void onPresenterPrepared(SolveListPresenter presenter) {
getSolveListAdapter().onPresenterPrepared(presenter);
}
@Override
protected void onPresenterDestroyed() {
getSolveListAdapter().onPresenterDestroyed();
}
public void showList(boolean show) {
mRecyclerView.setVisibility(show ? View.VISIBLE : View.GONE);
mEmptyView.setVisibility(show ? View.GONE : View.VISIBLE);
}
public void scrollRecyclerView(int position) {
mRecyclerView.scrollToPosition(position);
}
}