package com.monitorabrasil.participacidadao.views; import android.app.Activity; import android.content.DialogInterface; import android.graphics.PorterDuff; import android.graphics.drawable.LayerDrawable; import android.os.Build; import android.os.Bundle; import android.support.design.widget.CollapsingToolbarLayout; import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.RatingBar; 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.views.dialogs.DialogAvaliacao; import com.parse.ParseException; import com.parse.ParseObject; import com.parse.ParseUser; import com.squareup.otto.Bus; import com.squareup.otto.Subscribe; /** * A fragment representing a single Vereador detail screen. * This fragment is either contained in a {@link VereadorListActivity} * in two-pane mode (on tablets) or a {@link VereadorDetailActivity} * on handsets. */ public class VereadorDetailFragment extends Fragment { public static final String ID_POLITICO = "idPolitico"; public static final String NM_POLITICO = "nm_politico"; public static final String ID_IMAGEM = "id_imagem"; private ParseObject politico; private View mView; private RatingBar mRatingBar; private Button btnAvaliar; private String idPolitico; private ImageView foto; private TextView txtNome; private TextView telefone ; private TextView txtPartido ; private TextView email ; private TextView facebook ; private TextView gastos ; private TextView bens; private Dispatcher dispatcher; private ActionsCreator actionsCreator; private PoliticoStore politicoStore; /** * Mandatory empty constructor for the fragment manager to instantiate the * fragment (e.g. upon screen orientation changes). */ public VereadorDetailFragment() { } public static VereadorDetailFragment newInstance( String idPolitico) { VereadorDetailFragment fragment = new VereadorDetailFragment(); Bundle args = new Bundle(); args.putString(ID_POLITICO, idPolitico); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { idPolitico = getArguments().getString(ID_POLITICO); } Activity activity = this.getActivity(); CollapsingToolbarLayout appBarLayout = (CollapsingToolbarLayout) activity.findViewById(R.id.toolbar_layout); // if (appBarLayout != null) { // appBarLayout.setTitle(mItem.content); // } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.vereador_detail, container, false); initDependencies(); setupView(rootView); actionsCreator.getPolitico(idPolitico); return rootView; } private void initDependencies() { dispatcher = Dispatcher.get(new Bus()); actionsCreator = ActionsCreator.get(dispatcher); politicoStore = PoliticoStore.get(dispatcher); } private void setupView(View view) { mView=view; mRatingBar = (RatingBar)view.findViewById(R.id.ratingBar); Bundle bundle = getArguments(); // btnAvaliar = (Button) view.findViewById(R.id.btnAvalie); // foto = (ImageView)view.findViewById(R.id.foto); txtNome = (TextView) view.findViewById(R.id.txtNome); telefone = (TextView) view.findViewById(R.id.txtTelefone); txtPartido = (TextView) view.findViewById(R.id.txtPartido); email = (TextView) view.findViewById(R.id.email); facebook = (TextView) view.findViewById(R.id.facebook); gastos = (TextView) view.findViewById(R.id.gastos); bens = (TextView) view.findViewById(R.id.bens); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ LayerDrawable stars = (LayerDrawable) mRatingBar.getProgressDrawable(); stars.getDrawable(2).setColorFilter(getResources().getColor(R.color.colorAccent), PorterDuff.Mode.SRC_ATOP); stars.getDrawable(1).setColorFilter(getResources().getColor(R.color.colorAccent), PorterDuff.Mode.SRC_ATOP); stars.getDrawable(0).setColorFilter(getResources().getColor(R.color.coloLink), PorterDuff.Mode.SRC_ATOP); } } private void updateUI() { politico = politicoStore.getPolitico(); // Answers.getInstance().logContentView(new ContentViewEvent() .putContentName("PoliticoFichaFragment") .putContentType("Fragment") .putCustomAttribute("vereador",politico.getString("nome"))); mRatingBar.setRating((float) politico.getDouble("avaliacao")); //btnAvaliar btnAvaliar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View v) { if (ParseUser.getCurrentUser() != null) { DialogAvaliacao avaliacao = new DialogAvaliacao(politico, "Avalie"); avaliacao.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { //atualizar a avaliacao try { politico.fetchFromLocalDatastore(); mRatingBar.setRating((float) politico.getDouble("avaliacao")); Snackbar.make(v, "Avaliação salva.", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } catch (ParseException e) { e.printStackTrace(); } } }); avaliacao.show(getActivity().getFragmentManager(), "dialogAvaliar"); } else { Snackbar.make(v, "É necessário logar para avaliar.", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } } }); //foto //MyApp.getInstance().getmImagemLoader().displayImage(MyApp.URL_FOTO + politico.get("cpf") + ".jpg", foto); //nome txtNome.setText(politico.get("nome").toString()); //telefone if(politico.get("telefone") != null) telefone.setText(politico.get("telefone").toString()); else telefone.setText("-"); //telefone txtPartido.setText(politico.get("partido").toString()); //email email.setText(politico.get("email").toString()); //facebook if(politico.get("facebook") != null) facebook.setText(politico.get("facebook").toString()); else facebook.setText("-"); //gastos if(politico.get("gasto_campanha") != null) gastos.setText(politico.get("gasto_campanha").toString().replace(",", "").replace(".", ",")); else gastos.setText("-"); //bens declarados if(politico.get("bens_declarados") != null) bens.setText(politico.get("bens_declarados").toString().replace(",", "").replace(".",",")); else bens.setText("-"); } /** * Atualiza a UI depois de uma action * @param event */ @Subscribe public void onTodoStoreChange(PoliticoStore.PoliticoStoreChangeEvent event) { updateUI(); } @Override public void onResume() { super.onResume(); dispatcher.register(this); dispatcher.register(politicoStore); } @Override public void onPause() { super.onPause(); dispatcher.unregister(this); dispatcher.unregister(politicoStore); } }