package com.pluscubed.plustimer.ui.historysessions;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Spinner;
import android.widget.TextView;
import com.pluscubed.plustimer.R;
import com.pluscubed.plustimer.base.BasePresenterFragment;
import com.pluscubed.plustimer.base.PresenterFactory;
import com.pluscubed.plustimer.model.PuzzleType;
import com.pluscubed.plustimer.ui.SpinnerPuzzleTypeAdapter;
import java.util.List;
/**
* History SessionList Fragment
*/
public class HistorySessionsFragment extends BasePresenterFragment<HistorySessionsPresenter, HistorySessionsView>
implements HistorySessionsView {
private RecyclerView mRecyclerView;
private HistorySessionsAdapter mAdapter;
private TextView mEmptyView;
private SpinnerPuzzleTypeAdapter mPuzzleSpinnerAdapter;
private Spinner mPuzzleSpinner;
private List<PuzzleType> mPuzzleSpinnerList;
private int mPuzzleSpinnerPosition;
@Override
protected PresenterFactory<HistorySessionsPresenter> getPresenterFactory() {
return new HistorySessionsPresenter.Factory();
}
@Override
protected void onPresenterPrepared(HistorySessionsPresenter presenter) {
mAdapter.onPresenterPrepared(presenter);
}
@Override
protected void onPresenterDestroyed() {
mAdapter.onPresenterDestroyed();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_history_sessionlist, container, false);
mRecyclerView = (RecyclerView) v.findViewById(R.id.history_sessions_recycler);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mRecyclerView.setHasFixedSize(true);
mAdapter = new HistorySessionsAdapter(getActivity(), savedInstanceState);
mRecyclerView.setAdapter(mAdapter);
mEmptyView = (TextView) v.findViewById(android.R.id.empty);
return v;
}
@Override
public Activity getContextCompat() {
return getActivity();
}
@Override
public void showList(boolean show) {
mRecyclerView.setVisibility(show ? View.VISIBLE : View.GONE);
mEmptyView.setVisibility(show ? View.GONE : View.VISIBLE);
}
@Override
public HistorySessionsAdapterView getHistorySessionsAdapter() {
return mAdapter;
}
@Override
public void onSaveInstanceState(Bundle outState) {
mAdapter.onSaveInstanceState(outState);
super.onSaveInstanceState(outState);
}
/*
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initSharedPrefs();
*//*getListView().setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE_MODAL);
getListView().setMultiChoiceModeListener(new AbsListView
.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode,
int position, long id,
boolean checked) {
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
getActivity().getMenuInflater().inflate(R.menu
.context_solve_or_session_list, menu);
mActionMode = mode;
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 = getListView().getCount() - 1; i >= 0;
i--) {
if (getListView().isItemChecked(i)) {
//TODO
*//**//*PuzzleType.get(mPuzzleTypeId).deleteSession(
((Session) getListView().getItemAtPosition(i)).getId());*//**//*
}
}
mode.finish();
onSessionListChanged();
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
}
});
}*/
/*public void finishActionMode() {
if (mActionMode != null) {
mActionMode.finish();
}
}*/
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_history_sessionlist, menu);
mPuzzleSpinner = (Spinner) MenuItemCompat.getActionView(
menu.findItem(R.id.menu_activity_history_sessionlist_puzzletype_spinner));
AppCompatActivity activity = (AppCompatActivity) getActivity();
Context themedContext;
if (activity.getSupportActionBar() != null) {
themedContext = activity.getSupportActionBar().getThemedContext();
} else {
themedContext = activity;
}
mPuzzleSpinnerAdapter = new SpinnerPuzzleTypeAdapter(
getActivity().getLayoutInflater(),
themedContext
);
mPuzzleSpinner.setAdapter(mPuzzleSpinnerAdapter);
if (mPuzzleSpinnerList != null) {
mPuzzleSpinnerAdapter.addAll(mPuzzleSpinnerList);
mPuzzleSpinner.setSelection(mPuzzleSpinnerPosition);
}
presenter.onCreateOptionsMenu();
}
@Override
public void initPuzzleSpinner(List<PuzzleType> puzzleTypes, int selectedPosition) {
mPuzzleSpinnerList = puzzleTypes;
mPuzzleSpinnerPosition = selectedPosition;
mPuzzleSpinnerAdapter.clear();
mPuzzleSpinnerAdapter.addAll(puzzleTypes);
mPuzzleSpinnerAdapter.notifyDataSetChanged();
mPuzzleSpinner.setSelection(selectedPosition, true);
mPuzzleSpinner.setOnItemSelectedListener(new AdapterView
.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
presenter.onPuzzleSelected((PuzzleType) parent.getItemAtPosition(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}