package com.monitorabrasil.participacidadao.views.fragments;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.monitorabrasil.participacidadao.R;
import com.monitorabrasil.participacidadao.actions.ActionsCreator;
import com.monitorabrasil.participacidadao.actions.DialogaActions;
import com.monitorabrasil.participacidadao.dispatcher.Dispatcher;
import com.monitorabrasil.participacidadao.model.Tema;
import com.monitorabrasil.participacidadao.stores.DialogaStore;
import com.monitorabrasil.participacidadao.views.adapters.TemaAdapter;
import com.monitorabrasil.participacidadao.views.interfaces.RecyclerViewOnClickListenerHack;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.squareup.otto.Bus;
import com.squareup.otto.Subscribe;
/**
* A placeholder fragment containing a simple view.
*/
public class DialogaActivityFragment extends Fragment implements RecyclerViewOnClickListenerHack {
private RecyclerView mRecyclerView;
private TemaAdapter mAdapter;
private Dispatcher dispatcher;
private ActionsCreator actionsCreator;
private DialogaStore dialogaStore;
public DialogaActivityFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dialoga, container, false);
initDependencies();
setupView(view);
actionsCreator.getAllTemas();
//verificar se tem um id de pergunta
if(getArguments() != null){
String perguntaId = getArguments().getString("perguntaId");
if(null != perguntaId){
String temaId = getArguments().getString("temaId");
ParseObject tema = Tema.getTema(temaId);
DialogaVotoFragment frag = DialogaVotoFragment.newInstance(
tema,perguntaId);
getArguments().clear();
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment, frag, "dialogaVoto");
ft.addToBackStack("tag");
ft.commit();
}
}
return view;
}
private void initDependencies() {
dispatcher = Dispatcher.get(new Bus());
actionsCreator = ActionsCreator.get(dispatcher);
dialogaStore = DialogaStore.get(dispatcher);
}
private void setupView(View view) {
//tableview
mRecyclerView = (RecyclerView) view.findViewById(R.id.rv_temas);
// use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView
mRecyclerView.setHasFixedSize(true);
LinearLayoutManager llm = new GridLayoutManager(getActivity(),2,GridLayoutManager.VERTICAL, false);
llm.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(llm);
mAdapter = new TemaAdapter();
mRecyclerView.setAdapter(mAdapter);
mAdapter.setRecyclerViewOnClickListenerHack(this);
}
private void updateUI() {
mAdapter.setItems(dialogaStore.getTemas());
// pb.setVisibility(View.INVISIBLE);
}
/**
* Atualiza a UI depois de uma action
* @param event
*/
@Subscribe
public void onTodoStoreChange(DialogaStore.DialogaStoreChangeEvent event) {
String evento = dialogaStore.getEvento();
switch (evento){
case DialogaActions.DIALOGA_GET_TEMAS:
updateUI();
break;
case DialogaActions.DIALOGA_ENVIAR_PERGUNTA:
Snackbar.make(getView(), "Pergunta inserida!", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
break;
}
}
@Override
public void onClickListener(View view, int position) {
ParseObject tema = dialogaStore.getTemas().get(position);
try {
tema.pin();
DialogaListaPerguntasFragment frag = DialogaListaPerguntasFragment.newInstance(
tema.getString("Nome"),tema.getString("imagem"),
Tema.buscaCor(tema.getString("imagem")),tema.getObjectId());
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment, frag, "dialogaListaPerguntas");
ft.addToBackStack("tag");
ft.commit();
} catch (ParseException e) {
e.printStackTrace();
}
}
@Override
public void onResume() {
super.onResume();
dispatcher.register(this);
dispatcher.register(dialogaStore);
}
@Override
public void onPause() {
super.onPause();
dispatcher.unregister(this);
dispatcher.unregister(dialogaStore);
}
}