package com.monitorabrasil.participacidadao.views; import android.app.Activity; import android.os.Bundle; import android.support.design.widget.CollapsingToolbarLayout; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.crashlytics.android.answers.Answers; import com.crashlytics.android.answers.ContentViewEvent; import com.monitorabrasil.participacidadao.R; import com.monitorabrasil.participacidadao.actions.ActionsCreator; import com.monitorabrasil.participacidadao.dispatcher.Dispatcher; import com.monitorabrasil.participacidadao.stores.PoliticoStore; import com.monitorabrasil.participacidadao.stores.ProjetoStore; import com.parse.ParseObject; import com.squareup.otto.Bus; import com.squareup.otto.Subscribe; /** * A fragment representing a single Proposições detail screen. * This fragment is either contained in a {@link ProposicoesListActivity} * in two-pane mode (on tablets) or a {@link ProposicoesDetailActivity} * on handsets. */ public class ProposicoesDetailFragment extends Fragment { /** * The fragment argument representing the item ID that this fragment * represents. */ public static final String ID_PROPOSICAO = "id_proposicao"; public static final String NM_PROPOSICAO = "nm_proposicao"; private String idProposicao ; private Dispatcher dispatcher; private ActionsCreator actionsCreator; private ProjetoStore projetoStore; private ParseObject projeto; private TextView txtTipoProjeto; private TextView txtEmenta; private TextView txtAutor; private TextView txtLocal; private TextView txtSituacao; private TextView txtNormaGerada; private TextView txtPublicacoes; private TextView txtLink; /** * Mandatory empty constructor for the fragment manager to instantiate the * fragment (e.g. upon screen orientation changes). */ public ProposicoesDetailFragment() { } public static ProposicoesDetailFragment newInstance( String idProp,String nomeProp) { ProposicoesDetailFragment fragment = new ProposicoesDetailFragment(); Bundle args = new Bundle(); args.putString(ID_PROPOSICAO, idProp); args.putString(NM_PROPOSICAO, nomeProp); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments().containsKey(ID_PROPOSICAO)) { idProposicao = getArguments().getString(ID_PROPOSICAO); Activity activity = this.getActivity(); CollapsingToolbarLayout appBarLayout = (CollapsingToolbarLayout) activity.findViewById(R.id.toolbar_layout); if (appBarLayout != null) { appBarLayout.setTitle(getArguments().getString(NM_PROPOSICAO)); } } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.proposicoes_detail, container, false); initDependencies(); setupView(rootView); actionsCreator.getProjeto(idProposicao); return rootView; } private void initDependencies() { dispatcher = Dispatcher.get(new Bus()); actionsCreator = ActionsCreator.get(dispatcher); projetoStore = ProjetoStore.get(dispatcher); } private void setupView(View view) { txtTipoProjeto = (TextView)view.findViewById(R.id.txtTipoProjeto); txtEmenta= (TextView)view.findViewById(R.id.txtEmenta); txtAutor= (TextView)view.findViewById(R.id.txtAutor); txtLocal= (TextView)view.findViewById(R.id.txtLocal); txtSituacao= (TextView)view.findViewById(R.id.txtSituacao); txtNormaGerada= (TextView)view.findViewById(R.id.txtNormaGerada); txtPublicacoes= (TextView)view.findViewById(R.id.txtPublicacoes); txtLink= (TextView)view.findViewById(R.id.txtLink); } private void updateUI() { projeto = projetoStore.getProjeto(); Answers.getInstance().logContentView(new ContentViewEvent() .putContentName(projeto.getString("numero")) .putContentType("Projeto")); txtTipoProjeto.setText(projeto.getString("tipo")); txtEmenta.setText(projeto.getString("descricao")); ParseObject autor = projeto.getParseObject("politico"); txtAutor.setText("Autor: "+autor.getString("nome")); if(projeto.getString("localizacao") != null){ txtLocal.setText("Localização:"+ projeto.getString("localizacao")); txtLocal.setVisibility(View.VISIBLE); } if(projeto.getString("situacao") != null){ txtSituacao.setText("Situação:"+ projeto.getString("situacao")); txtSituacao.setVisibility(View.VISIBLE); } if(projeto.getString("norma_gerada") != null){ txtNormaGerada.setText("Norma gerada:"+ projeto.getString("norma_gerada")); txtNormaGerada.setVisibility(View.VISIBLE); } if(projeto.getString("publicacoes") != null){ txtPublicacoes.setText("Publicações:"+ projeto.getString("publicacoes")); txtPublicacoes.setVisibility(View.VISIBLE); } if(projeto.getString("link") != null){ txtLink.setText("http://legislacao.cl.df.gov.br" +projeto.getString("link")); txtLink.setVisibility(View.VISIBLE); } } /** * Atualiza a UI depois de uma action * @param event */ @Subscribe public void onTodoStoreChange(ProjetoStore.ProjetoStoreChangeEvent event) { updateUI(); } @Override public void onResume() { super.onResume(); dispatcher.register(this); dispatcher.register(projetoStore); } @Override public void onPause() { super.onPause(); dispatcher.unregister(this); dispatcher.unregister(projetoStore); } }