Commit 8071edb3bd024589708c0d1dc4c3712ceb8f253a

Authored by geraldo morais
Committed by geraldo morais
1 parent eb442e62
Exists in master

Refactoring de políticos e projetos

app/src/main/java/com/monitorabrasil/participacidadao/actions/ActionsCreator.java
1 1 package com.monitorabrasil.participacidadao.actions;
2 2  
  3 +import com.crashlytics.android.answers.Answers;
  4 +import com.crashlytics.android.answers.ContentViewEvent;
3 5 import com.monitorabrasil.participacidadao.dispatcher.Dispatcher;
  6 +import com.parse.FindCallback;
4 7 import com.parse.LogInCallback;
5 8 import com.parse.LogOutCallback;
6 9 import com.parse.ParseFile;
  10 +import com.parse.ParseObject;
  11 +import com.parse.ParseQuery;
7 12 import com.parse.ParseUser;
8 13 import com.parse.ProgressCallback;
9 14 import com.parse.SignUpCallback;
10 15  
  16 +import java.util.List;
  17 +
11 18 /**
12 19 * Created by 89741803168 on 13/08/2015.
13 20 */
... ... @@ -26,15 +33,82 @@ public class ActionsCreator {
26 33 return instance;
27 34 }
28 35  
  36 + /*****
  37 + *
  38 + */
  39 +
  40 + public void getAllProjetos(String idPolitico, String tipoProjeto) {
  41 + ParseQuery<ParseObject> query = ParseQuery.getQuery("Projeto");
  42 + query.addDescendingOrder("createdAt");
  43 +
  44 + if(idPolitico!= null){
  45 + query.whereEqualTo("politico", idPolitico);
  46 + }
  47 +
  48 + if(tipoProjeto != null){
  49 + query.whereEqualTo("classificacao", tipoProjeto);
  50 + Answers.getInstance().logContentView(new ContentViewEvent()
  51 + .putContentName("ListaProjetosFragment")
  52 + .putContentType("Fragment")
  53 + .putCustomAttribute("tipoProjeto", tipoProjeto));
  54 + }
  55 + query.findInBackground(new FindCallback<ParseObject>() {
  56 + @Override
  57 + public void done(List<ParseObject> list, com.parse.ParseException e) {
  58 + if (e == null) {
  59 + dispatcher.dispatch(
  60 + ProjetoActions.PROJETO_GET_ALL,
  61 + ProjetoActions.KEY_TEXT, list
  62 + );
  63 + } else {
  64 + dispatcher.dispatch(
  65 + ProjetoActions.PROJETO_GET_ALL,
  66 + ProjetoActions.KEY_TEXT, "erro"
  67 + );
  68 + }
  69 + }
  70 +
  71 +
  72 + });
  73 + }
  74 +
  75 + /*
  76 + # ACTIONS DE POLITICOS
  77 + **/
  78 +
  79 + public void getAllPoliticos(){
  80 + ParseQuery<ParseObject> query = ParseQuery.getQuery("Politico");
  81 + query.addAscendingOrder("nome");
  82 + query.findInBackground(new FindCallback<ParseObject>() {
  83 + @Override
  84 + public void done(List<ParseObject> list, com.parse.ParseException e) {
  85 + if (e == null) {
  86 + dispatcher.dispatch(
  87 + PoliticoActions.POLITICO_GET_ALL,
  88 + PoliticoActions.KEY_TEXT, list
  89 + );
  90 + } else {
  91 + dispatcher.dispatch(
  92 + PoliticoActions.POLITICO_GET_ALL,
  93 + PoliticoActions.KEY_TEXT, "erro"
  94 + );
  95 + }
  96 + }
  97 +
  98 +
  99 + });
  100 + }
  101 +
  102 + /*
  103 + # ACTIONS DE USUARIOS
  104 + **/
  105 +
29 106 /**
30 107 * Actions do usuario - logar
31 108 * @param inputUsuario
32 109 * @param inputSenha
33 110 */
34   -
35 111 public void logar(String inputUsuario, String inputSenha){
36   -
37   -
38 112 ParseUser.logInInBackground(inputUsuario, inputSenha, new LogInCallback() {
39 113  
40 114 @Override
... ... @@ -72,7 +146,13 @@ public class ActionsCreator {
72 146 });
73 147 }
74 148  
75   -
  149 + /**
  150 + * Actions do usuario - cadastrar
  151 + * @param nome
  152 + * @param password
  153 + * @param email
  154 + * @param mParseFile
  155 + */
76 156 public void cadastrar(final String nome, final String password, final String email, final ParseFile mParseFile) {
77 157 mParseFile.saveInBackground(new ProgressCallback() {
78 158 @Override
... ... @@ -107,4 +187,6 @@ public class ActionsCreator {
107 187  
108 188  
109 189 }
  190 +
  191 +
110 192 }
... ...
app/src/main/java/com/monitorabrasil/participacidadao/actions/PoliticoActions.java 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +package com.monitorabrasil.participacidadao.actions;
  2 +
  3 +/**
  4 + * Created by Geraldo on 13/08/2015.
  5 + */
  6 +public interface PoliticoActions {
  7 + String POLITICO_AVALIAR = "politico_avaliar";
  8 + String POLITICO_COMENTAR = "politico_comentar";
  9 + String POLITICO_GET_INFOS = "politico_get_infos";
  10 + String POLITICO_GET_GAST0S = "politico_get_gastos";
  11 + String POLITICO_GET_PROJETOS = "politico_get_projetos";
  12 + String POLITICO_GET_ALL = "politico_get_all";
  13 +
  14 + String KEY_TEXT = "key-text";
  15 + String KEY_ID = "key-id";
  16 +
  17 +
  18 +}
... ...
app/src/main/java/com/monitorabrasil/participacidadao/actions/ProjetoActions.java 0 → 100644
... ... @@ -0,0 +1,14 @@
  1 +package com.monitorabrasil.participacidadao.actions;
  2 +
  3 +/**
  4 + * Created by Geraldo on 13/08/2015.
  5 + */
  6 +public interface ProjetoActions {
  7 + String PROJETO_COMENTAR = "projeto_comentar";
  8 + String PROJETO_GET_ALL = "projeto_get_all";
  9 +
  10 + String KEY_TEXT = "key-text";
  11 + String KEY_ID = "key-id";
  12 +
  13 +
  14 +}
... ...
app/src/main/java/com/monitorabrasil/participacidadao/stores/PoliticoStore.java 0 → 100644
... ... @@ -0,0 +1,75 @@
  1 +package com.monitorabrasil.participacidadao.stores;
  2 +
  3 +import com.monitorabrasil.participacidadao.actions.Action;
  4 +import com.monitorabrasil.participacidadao.actions.PoliticoActions;
  5 +import com.monitorabrasil.participacidadao.dispatcher.Dispatcher;
  6 +import com.parse.ParseObject;
  7 +import com.squareup.otto.Subscribe;
  8 +
  9 +import java.util.ArrayList;
  10 +import java.util.List;
  11 +
  12 +/**
  13 + * Created by Geraldo on 13/08/2015.
  14 + */
  15 +public class PoliticoStore extends Store{
  16 +
  17 + private static PoliticoStore instance;
  18 + private String status;
  19 + private String evento;
  20 + private List<ParseObject> politicos;
  21 +
  22 + protected PoliticoStore(Dispatcher dispatcher) {
  23 + super(dispatcher);
  24 + politicos = new ArrayList<>();
  25 + }
  26 +
  27 + public static PoliticoStore get(Dispatcher dispatcher) {
  28 + if (instance == null) {
  29 + instance = new PoliticoStore(dispatcher);
  30 + }
  31 + return instance;
  32 + }
  33 +
  34 + public List<ParseObject> getPoliticos(){
  35 + return politicos;
  36 + }
  37 +
  38 +
  39 + @Override
  40 + @Subscribe
  41 + public void onAction(Action action) {
  42 + status = "erro";
  43 + this.evento = action.getType();
  44 +
  45 + switch (action.getType()) {
  46 + case PoliticoActions.POLITICO_GET_ALL:
  47 + politicos = ((List<ParseObject>) action.getData().get(PoliticoActions.KEY_TEXT));
  48 + emitStoreChange();
  49 + break;
  50 +
  51 + }
  52 + }
  53 +
  54 + @Override
  55 + StoreChangeEvent changeEvent() {
  56 + UserStoreChangeEvent mUserStoreChangeEvent = new UserStoreChangeEvent();
  57 + mUserStoreChangeEvent.status = this.status;
  58 + mUserStoreChangeEvent.evento = this.evento;
  59 + return mUserStoreChangeEvent;
  60 + }
  61 +
  62 +
  63 + public class UserStoreChangeEvent implements StoreChangeEvent {
  64 + private String status;
  65 + private String evento;
  66 +
  67 + public String getEvento() {
  68 + return evento;
  69 + }
  70 +
  71 + public String getStatus() {
  72 + return status;
  73 + }
  74 + }
  75 +}
... ...
app/src/main/java/com/monitorabrasil/participacidadao/stores/ProjetoStore.java 0 → 100644
... ... @@ -0,0 +1,75 @@
  1 +package com.monitorabrasil.participacidadao.stores;
  2 +
  3 +import com.monitorabrasil.participacidadao.actions.Action;
  4 +import com.monitorabrasil.participacidadao.actions.PoliticoActions;
  5 +import com.monitorabrasil.participacidadao.dispatcher.Dispatcher;
  6 +import com.parse.ParseObject;
  7 +import com.squareup.otto.Subscribe;
  8 +
  9 +import java.util.ArrayList;
  10 +import java.util.List;
  11 +
  12 +/**
  13 + * Created by Geraldo on 13/08/2015.
  14 + */
  15 +public class ProjetoStore extends Store{
  16 +
  17 + private static ProjetoStore instance;
  18 + private String status;
  19 + private String evento;
  20 + private List<ParseObject> projetos;
  21 +
  22 + protected ProjetoStore(Dispatcher dispatcher) {
  23 + super(dispatcher);
  24 + projetos = new ArrayList<>();
  25 + }
  26 +
  27 + public static ProjetoStore get(Dispatcher dispatcher) {
  28 + if (instance == null) {
  29 + instance = new ProjetoStore(dispatcher);
  30 + }
  31 + return instance;
  32 + }
  33 +
  34 + public List<ParseObject> getProjetos(){
  35 + return projetos;
  36 + }
  37 +
  38 +
  39 + @Override
  40 + @Subscribe
  41 + public void onAction(Action action) {
  42 + status = "erro";
  43 + this.evento = action.getType();
  44 +
  45 + switch (action.getType()) {
  46 + case PoliticoActions.POLITICO_GET_ALL:
  47 + projetos = ((List<ParseObject>) action.getData().get(PoliticoActions.KEY_TEXT));
  48 + emitStoreChange();
  49 + break;
  50 +
  51 + }
  52 + }
  53 +
  54 + @Override
  55 + StoreChangeEvent changeEvent() {
  56 + UserStoreChangeEvent mUserStoreChangeEvent = new UserStoreChangeEvent();
  57 + mUserStoreChangeEvent.status = this.status;
  58 + mUserStoreChangeEvent.evento = this.evento;
  59 + return mUserStoreChangeEvent;
  60 + }
  61 +
  62 +
  63 + public class UserStoreChangeEvent implements StoreChangeEvent {
  64 + private String status;
  65 + private String evento;
  66 +
  67 + public String getEvento() {
  68 + return evento;
  69 + }
  70 +
  71 + public String getStatus() {
  72 + return status;
  73 + }
  74 + }
  75 +}
... ...
app/src/main/java/com/monitorabrasil/participacidadao/stores/UserStore.java
... ... @@ -14,8 +14,13 @@ public class UserStore extends Store{
14 14 private String status;
15 15 private String evento;
16 16  
  17 + public String getStatus(){
  18 + return status;
  19 + }
17 20  
18   -
  21 + public String getEvento(){
  22 + return evento;
  23 + }
19 24  
20 25  
21 26 protected UserStore(Dispatcher dispatcher) {
... ... @@ -53,21 +58,10 @@ public class UserStore extends Store{
53 58 @Override
54 59 StoreChangeEvent changeEvent() {
55 60 UserStoreChangeEvent mUserStoreChangeEvent = new UserStoreChangeEvent();
56   - mUserStoreChangeEvent.status = this.status;
57   - mUserStoreChangeEvent.evento = this.evento;
58 61 return mUserStoreChangeEvent;
59 62 }
60 63  
61 64 public class UserStoreChangeEvent implements StoreChangeEvent {
62   - private String status;
63   - private String evento;
64 65  
65   - public String getEvento() {
66   - return evento;
67   - }
68   -
69   - public String getStatus() {
70   - return status;
71   - }
72 66 }
73 67 }
... ...
app/src/main/java/com/monitorabrasil/participacidadao/view/LoginActivity.java
... ... @@ -358,16 +358,16 @@ public class LoginActivity extends AppCompatActivity {
358 358 */
359 359 @Subscribe
360 360 public void onTodoStoreChange(UserStore.UserStoreChangeEvent event) {
361   - switch (event.getEvento()) {
  361 + switch (userStore.getEvento()) {
362 362 case UserActions.USER_CADASTRO:
363   - if(event.getStatus().equals("erro")){
  363 + if(userStore.getStatus().equals("erro")){
364 364 showProgress(false);
365   - Snackbar.make(form, "Houve um erro ao fazer seu cadastro ", Snackbar.LENGTH_LONG)
  365 + Snackbar.make(form, "Houve um erro ao fazer seu cadastro", Snackbar.LENGTH_LONG)
366 366 .setAction("Action", null).show();
367 367 }
368 368 break;
369 369 case UserActions.USER_LOGAR:
370   - if(event.getStatus().equals("erro")){
  370 + if(userStore.getStatus().equals("erro")){
371 371 showProgress(false);
372 372 Snackbar.make(form, "Houve um erro ao fazer o login", Snackbar.LENGTH_LONG)
373 373 .setAction("Action", null).show();
... ...
app/src/main/java/com/monitorabrasil/participacidadao/view/PoliticosActivity.java
... ... @@ -23,9 +23,9 @@ public class PoliticosActivity extends AppCompatActivity {
23 23 .putContentName("PoliticosActivity")
24 24 .putContentType("Activity"));
25 25  
26   - ListaPoliticoFragment frag = (ListaPoliticoFragment) getSupportFragmentManager().findFragmentByTag("listaPoliticoFrag");
  26 + ListaPoliticoFragment frag = (ListaPoliticoFragment) getSupportFragmentManager().findFragmentByTag("listaPoliticoFrag");
27 27 if(frag == null) {
28   - frag = new ListaPoliticoFragment();
  28 + frag = ListaPoliticoFragment.newInstance();
29 29 FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
30 30 ft.replace(R.id.rl_fragment_container, frag, "listaPoliticoFrag");
31 31 ft.commit();
... ... @@ -34,7 +34,7 @@ public class PoliticosActivity extends AppCompatActivity {
34 34 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
35 35 setSupportActionBar(toolbar);
36 36  
37   - // toolbar.setNavigationIcon(R.drawable.ic_good);
  37 + // toolbar.setNavigationIcon(R.drawable.ic_good);
38 38 toolbar.setTitle("Vereadores");
39 39 toolbar.setSubtitle("Ouro Branco - MG");
40 40  
... ... @@ -42,7 +42,7 @@ public class PoliticosActivity extends AppCompatActivity {
42 42 toolbar.setSubtitleTextColor(getResources().getColor(R.color.md_white_1000));
43 43 setSupportActionBar(toolbar);
44 44 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
45   - // toolbar.setLogo(R.drawable.ic_launcher);
  45 + // toolbar.setLogo(R.drawable.ic_launcher);
46 46 }
47 47  
48 48  
... ...
app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/PoliticoAdapter.java 0 → 100644
... ... @@ -0,0 +1,94 @@
  1 +package com.monitorabrasil.participacidadao.view.adapters;
  2 +
  3 +import android.support.v7.widget.RecyclerView;
  4 +import android.view.LayoutInflater;
  5 +import android.view.View;
  6 +import android.view.ViewGroup;
  7 +import android.widget.ImageView;
  8 +import android.widget.RatingBar;
  9 +import android.widget.TextView;
  10 +
  11 +import com.monitorabrasil.participacidadao.R;
  12 +import com.monitorabrasil.participacidadao.actions.ActionsCreator;
  13 +import com.monitorabrasil.participacidadao.application.MyApp;
  14 +import com.monitorabrasil.participacidadao.view.interfaces.RecyclerViewOnClickListenerHack;
  15 +import com.parse.ParseObject;
  16 +
  17 +import java.util.ArrayList;
  18 +import java.util.List;
  19 +
  20 +/**
  21 + * Created by geraugu on 6/7/15.
  22 + */
  23 +public class PoliticoAdapter extends RecyclerView.Adapter<PoliticoAdapter.ViewHolder> {
  24 +
  25 + private static ActionsCreator actionsCreator;
  26 + private List<ParseObject> politicos;
  27 + private RecyclerViewOnClickListenerHack mRecyclerViewOnClickListenerHack;
  28 +
  29 + public PoliticoAdapter(ActionsCreator actionsCreator) {
  30 + politicos = new ArrayList<>();
  31 + PoliticoAdapter.actionsCreator = actionsCreator;
  32 + }
  33 +
  34 + @Override
  35 + public PoliticoAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
  36 + // create a new view
  37 + View v = LayoutInflater.from(viewGroup.getContext())
  38 + .inflate(R.layout.item_politico, viewGroup, false);
  39 + // set the view's size, margins, paddings and layout parameter
  40 + ViewHolder vh = new ViewHolder(v);
  41 + return vh;
  42 + }
  43 + public void setRecyclerViewOnClickListenerHack(RecyclerViewOnClickListenerHack r){
  44 + mRecyclerViewOnClickListenerHack = r;
  45 + }
  46 +
  47 + @Override
  48 + public void onBindViewHolder(PoliticoAdapter.ViewHolder viewHolder, int i) {
  49 + ParseObject vereador = politicos.get(i);
  50 + vereador.pinInBackground();
  51 + viewHolder.mTextView.setText(vereador.get("nome").toString());
  52 + viewHolder.txtPartido.setText(vereador.get("partido").toString());
  53 + viewHolder.rb.setRating((float)vereador.getDouble("avaliacao"));
  54 + MyApp.getInstance().getmImagemLoader().displayImage(MyApp.URL_FOTO + vereador.get("cpf") + ".jpg", viewHolder.foto);
  55 +
  56 + }
  57 +
  58 + @Override
  59 + public int getItemCount() {
  60 + return politicos.size();
  61 + }
  62 +
  63 + public void setItems(List<ParseObject> politicos) {
  64 + this.politicos = politicos;
  65 + notifyDataSetChanged();
  66 + }
  67 +
  68 + // Provide a reference to the views for each data item
  69 + // Complex data items may need more than one view per item, and
  70 + // you provide access to all the views for a data item in a view holder
  71 + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
  72 + // each data item is just a string in this case
  73 + public TextView mTextView;
  74 + public TextView txtPartido;
  75 + public ImageView foto;
  76 + public RatingBar rb;
  77 + public ViewHolder(View v) {
  78 + super(v);
  79 + mTextView = (TextView) v.findViewById(R.id.txtNome);
  80 + txtPartido = (TextView) v.findViewById(R.id.txtPartido);
  81 + foto = (ImageView)v.findViewById(R.id.foto);
  82 + rb = (RatingBar)v.findViewById(R.id.ratingBar);
  83 +
  84 + itemView.setOnClickListener(this);
  85 + }
  86 +
  87 + @Override
  88 + public void onClick(View v) {
  89 + if(mRecyclerViewOnClickListenerHack != null){
  90 + mRecyclerViewOnClickListenerHack.onClickListener(v, getPosition());
  91 + }
  92 + }
  93 + }
  94 +}
... ...
app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/ProjetoAdapter.java
... ... @@ -16,6 +16,7 @@ import android.widget.Button;
16 16 import android.widget.TextView;
17 17  
18 18 import com.google.gson.Gson;
  19 +import com.monitorabrasil.participacidadao.actions.ActionsCreator;
19 20 import com.monitorabrasil.participacidadao.view.ComentarioActivity;
20 21 import com.monitorabrasil.participacidadao.R;
21 22 import com.monitorabrasil.participacidadao.application.MyApp;
... ... @@ -27,6 +28,7 @@ import com.parse.ParseQuery;
27 28 import com.parse.ParseUser;
28 29 import com.parse.SaveCallback;
29 30  
  31 +import java.util.ArrayList;
30 32 import java.util.List;
31 33  
32 34 /**
... ... @@ -34,52 +36,20 @@ import java.util.List;
34 36 */
35 37 public class ProjetoAdapter extends RecyclerView.Adapter<ProjetoAdapter.ViewHolder> {
36 38  
37   - private List<ParseObject> mDataset;
  39 + private static ActionsCreator actionsCreator;
  40 + private List<ParseObject> projetos;
38 41 private RecyclerViewOnClickListenerHack mRecyclerViewOnClickListenerHack;
39 42 private FragmentActivity mActivity;
40 43  
41   - public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
42   - // each data item is just a string in this case
43   - public ParseObject projetoVotado;
44   - public TextView classificacao;
45   - public TextView data;
46   - public TextView autor;
47   - public TextView descricao;
48   - public TextView numApoio;
49   - public TextView numNaoApoio;
50   - public TextView numero;
51   - public Button btnConcordo;
52   - public Button btnDiscordo;
53   - public Button btnComentar;
54   - public String voto;
55   - public ParseObject projeto;
56   -
57   - public ViewHolder(View v) {
58   - super(v);
59   - classificacao = (TextView) v.findViewById(R.id.classificacao);
60   - data = (TextView) v.findViewById(R.id.data);
61   - autor = (TextView) v.findViewById(R.id.autor);
62   - numApoio = (TextView) v.findViewById(R.id.txtNumApoio);
63   - numNaoApoio = (TextView) v.findViewById(R.id.txtNumNaoApoio);
64   - descricao = (TextView) v.findViewById(R.id.descricao);
65   - btnConcordo = (Button) v.findViewById(R.id.btnConcordo);
66   - btnDiscordo = (Button) v.findViewById(R.id.btnDiscordo);
67   - btnComentar = (Button) v.findViewById(R.id.btnComentar);
68   - numero = (TextView) v.findViewById(R.id.numero);
  44 + public ProjetoAdapter(ActionsCreator actionsCreator) {
  45 + projetos = new ArrayList<>();
  46 + ProjetoAdapter.actionsCreator = actionsCreator;
  47 + }
69 48  
70   - itemView.setOnClickListener(this);
71   - }
72 49  
73   - @Override
74   - public void onClick(View v) {
75   - if(mRecyclerViewOnClickListenerHack != null){
76   - mRecyclerViewOnClickListenerHack.onClickListener(v, getPosition());
77   - }
78   - }
79   - }
80 50  
81 51 public ProjetoAdapter(List<ParseObject> myDataset, FragmentActivity activity) {
82   - mDataset = myDataset;
  52 + projetos = myDataset;
83 53 mActivity = activity;
84 54 }
85 55  
... ... @@ -106,7 +76,7 @@ public class ProjetoAdapter extends RecyclerView.Adapter&lt;ProjetoAdapter.ViewHold
106 76 viewHolder.btnDiscordo.setEnabled(true);
107 77 viewHolder.btnConcordo.setEnabled(true);
108 78 viewHolder.voto = "sem_voto";
109   - final ParseObject projeto = mDataset.get(i);
  79 + final ParseObject projeto = projetos.get(i);
110 80 viewHolder.projeto = projeto;
111 81 //verifica se ja votou
112 82 ParseQuery<ParseObject> query = ParseQuery.getQuery("Voto");
... ... @@ -286,6 +256,51 @@ public class ProjetoAdapter extends RecyclerView.Adapter&lt;ProjetoAdapter.ViewHold
286 256  
287 257 @Override
288 258 public int getItemCount() {
289   - return mDataset.size();
  259 + return projetos.size();
  260 + }
  261 +
  262 + public void setItems(List<ParseObject> projetos) {
  263 + this.projetos = projetos;
  264 + notifyDataSetChanged();
  265 + }
  266 +
  267 + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
  268 + // each data item is just a string in this case
  269 + public ParseObject projetoVotado;
  270 + public TextView classificacao;
  271 + public TextView data;
  272 + public TextView autor;
  273 + public TextView descricao;
  274 + public TextView numApoio;
  275 + public TextView numNaoApoio;
  276 + public TextView numero;
  277 + public Button btnConcordo;
  278 + public Button btnDiscordo;
  279 + public Button btnComentar;
  280 + public String voto;
  281 + public ParseObject projeto;
  282 +
  283 + public ViewHolder(View v) {
  284 + super(v);
  285 + classificacao = (TextView) v.findViewById(R.id.classificacao);
  286 + data = (TextView) v.findViewById(R.id.data);
  287 + autor = (TextView) v.findViewById(R.id.autor);
  288 + numApoio = (TextView) v.findViewById(R.id.txtNumApoio);
  289 + numNaoApoio = (TextView) v.findViewById(R.id.txtNumNaoApoio);
  290 + descricao = (TextView) v.findViewById(R.id.descricao);
  291 + btnConcordo = (Button) v.findViewById(R.id.btnConcordo);
  292 + btnDiscordo = (Button) v.findViewById(R.id.btnDiscordo);
  293 + btnComentar = (Button) v.findViewById(R.id.btnComentar);
  294 + numero = (TextView) v.findViewById(R.id.numero);
  295 +
  296 + itemView.setOnClickListener(this);
  297 + }
  298 +
  299 + @Override
  300 + public void onClick(View v) {
  301 + if(mRecyclerViewOnClickListenerHack != null){
  302 + mRecyclerViewOnClickListenerHack.onClickListener(v, getPosition());
  303 + }
  304 + }
290 305 }
291 306 }
... ...
app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/VereadorAdapter.java
... ... @@ -1,85 +0,0 @@
1   -package com.monitorabrasil.participacidadao.view.adapters;
2   -
3   -import android.support.v7.widget.RecyclerView;
4   -import android.view.LayoutInflater;
5   -import android.view.View;
6   -import android.view.ViewGroup;
7   -import android.widget.ImageView;
8   -import android.widget.RatingBar;
9   -import android.widget.TextView;
10   -
11   -import com.monitorabrasil.participacidadao.R;
12   -import com.monitorabrasil.participacidadao.application.MyApp;
13   -import com.monitorabrasil.participacidadao.view.interfaces.RecyclerViewOnClickListenerHack;
14   -import com.parse.ParseObject;
15   -
16   -import java.util.List;
17   -
18   -/**
19   - * Created by geraugu on 6/7/15.
20   - */
21   -public class VereadorAdapter extends RecyclerView.Adapter<VereadorAdapter.ViewHolder> {
22   -
23   - private List<ParseObject> mDataset;
24   - private RecyclerViewOnClickListenerHack mRecyclerViewOnClickListenerHack;
25   -
26   - // Provide a reference to the views for each data item
27   - // Complex data items may need more than one view per item, and
28   - // you provide access to all the views for a data item in a view holder
29   - public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
30   - // each data item is just a string in this case
31   - public TextView mTextView;
32   - public TextView txtPartido;
33   - public ImageView foto;
34   - public RatingBar rb;
35   - public ViewHolder(View v) {
36   - super(v);
37   - mTextView = (TextView) v.findViewById(R.id.txtNome);
38   - txtPartido = (TextView) v.findViewById(R.id.txtPartido);
39   - foto = (ImageView)v.findViewById(R.id.foto);
40   - rb = (RatingBar)v.findViewById(R.id.ratingBar);
41   -
42   - itemView.setOnClickListener(this);
43   - }
44   -
45   - @Override
46   - public void onClick(View v) {
47   - if(mRecyclerViewOnClickListenerHack != null){
48   - mRecyclerViewOnClickListenerHack.onClickListener(v, getPosition());
49   - }
50   - }
51   - }
52   -
53   - public VereadorAdapter(List<ParseObject> myDataset) {
54   - mDataset = myDataset;
55   - }
56   -
57   - @Override
58   - public VereadorAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
59   - // create a new view
60   - View v = LayoutInflater.from(viewGroup.getContext())
61   - .inflate(R.layout.item_politico, viewGroup, false);
62   - // set the view's size, margins, paddings and layout parameter
63   - ViewHolder vh = new ViewHolder(v);
64   - return vh;
65   - }
66   - public void setRecyclerViewOnClickListenerHack(RecyclerViewOnClickListenerHack r){
67   - mRecyclerViewOnClickListenerHack = r;
68   - }
69   -
70   - @Override
71   - public void onBindViewHolder(VereadorAdapter.ViewHolder viewHolder, int i) {
72   - ParseObject vereador = mDataset.get(i);
73   - vereador.pinInBackground();
74   - viewHolder.mTextView.setText(vereador.get("nome").toString());
75   - viewHolder.txtPartido.setText(vereador.get("partido").toString());
76   - viewHolder.rb.setRating((float)vereador.getDouble("avaliacao"));
77   - MyApp.getInstance().getmImagemLoader().displayImage(MyApp.URL_FOTO + vereador.get("cpf") + ".jpg", viewHolder.foto);
78   -
79   - }
80   -
81   - @Override
82   - public int getItemCount() {
83   - return mDataset.size();
84   - }
85   -}
app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/HomeFragment.java
... ... @@ -25,7 +25,7 @@ import com.github.mikephil.charting.data.BarEntry;
25 25 import com.github.mikephil.charting.utils.ValueFormatter;
26 26 import com.monitorabrasil.participacidadao.view.PoliticoFichaActivity;
27 27 import com.monitorabrasil.participacidadao.R;
28   -import com.monitorabrasil.participacidadao.view.adapters.VereadorAdapter;
  28 +import com.monitorabrasil.participacidadao.view.adapters.PoliticoAdapter;
29 29 import com.monitorabrasil.participacidadao.application.MyApp;
30 30 import com.monitorabrasil.participacidadao.model.Grafico;
31 31 import com.monitorabrasil.participacidadao.view.interfaces.RecyclerViewOnClickListenerHack;
... ... @@ -53,7 +53,7 @@ public class HomeFragment extends Fragment implements RecyclerViewOnClickListene
53 53  
54 54 private OnFragmentInteractionListener mListener;
55 55 private RecyclerView mRecyclerView;
56   - private VereadorAdapter mAdapter;
  56 + private PoliticoAdapter mAdapter;
57 57 private List<ParseObject> ob;
58 58 private HashMap<String,Float> valorTotal = new HashMap<String,Float>();
59 59 ArrayList<String> xVals = new ArrayList<String>();
... ... @@ -310,7 +310,7 @@ public class HomeFragment extends Fragment implements RecyclerViewOnClickListene
310 310 }
311 311  
312 312 public void carregaList(List<ParseObject> list){
313   - mAdapter = new VereadorAdapter(list);
  313 + mAdapter = new PoliticoAdapter(list);
314 314 mAdapter.setRecyclerViewOnClickListenerHack(this);
315 315 mRecyclerView.setAdapter(mAdapter);
316 316 //pb.setVisibility(View.INVISIBLE);
... ...
app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/ListaPoliticoFragment.java
... ... @@ -5,21 +5,21 @@ import android.os.Bundle;
5 5 import android.support.v4.app.Fragment;
6 6 import android.support.v7.widget.LinearLayoutManager;
7 7 import android.support.v7.widget.RecyclerView;
8   -import android.util.Log;
9 8 import android.view.LayoutInflater;
10 9 import android.view.View;
11 10 import android.view.ViewGroup;
12 11 import android.widget.ProgressBar;
13 12  
14   -import com.monitorabrasil.participacidadao.view.PoliticoFichaActivity;
15 13 import com.monitorabrasil.participacidadao.R;
16   -import com.monitorabrasil.participacidadao.view.adapters.VereadorAdapter;
  14 +import com.monitorabrasil.participacidadao.actions.ActionsCreator;
  15 +import com.monitorabrasil.participacidadao.actions.PoliticoActions;
  16 +import com.monitorabrasil.participacidadao.dispatcher.Dispatcher;
  17 +import com.monitorabrasil.participacidadao.stores.PoliticoStore;
  18 +import com.monitorabrasil.participacidadao.view.PoliticoFichaActivity;
  19 +import com.monitorabrasil.participacidadao.view.adapters.PoliticoAdapter;
17 20 import com.monitorabrasil.participacidadao.view.interfaces.RecyclerViewOnClickListenerHack;
18   -import com.parse.FindCallback;
19   -import com.parse.ParseObject;
20   -import com.parse.ParseQuery;
21   -
22   -import java.util.List;
  21 +import com.squareup.otto.Bus;
  22 +import com.squareup.otto.Subscribe;
23 23  
24 24 /**
25 25 * Created by geraugu on 6/10/15.
... ... @@ -27,23 +27,47 @@ import java.util.List;
27 27 public class ListaPoliticoFragment extends Fragment implements RecyclerViewOnClickListenerHack {
28 28  
29 29 private RecyclerView mRecyclerView;
30   - private VereadorAdapter mAdapter;
31   - private List<ParseObject> ob;
  30 + private PoliticoAdapter mAdapter;
32 31 private ProgressBar pb;
33 32  
  33 + private Dispatcher dispatcher;
  34 + private ActionsCreator actionsCreator;
  35 + private PoliticoStore politicoStore;
  36 +
  37 + public static ListaPoliticoFragment newInstance() {
  38 + ListaPoliticoFragment fragment = new ListaPoliticoFragment();
  39 + return fragment;
  40 + }
  41 +
  42 + public ListaPoliticoFragment(){}
  43 +
34 44 @Override
35 45 public View onCreateView(LayoutInflater inflater,
36 46 ViewGroup container,
37 47 Bundle savedInstanceState) {
38 48 View view = inflater.inflate(R.layout.fragment_list_politico, container, false);
  49 + initDependencies();
  50 + setupView(view);
  51 + pb.setVisibility(View.VISIBLE);
  52 + actionsCreator.getAllPoliticos();
  53 + return view;
39 54  
40   - pb = (ProgressBar) view.findViewById(R.id.progressBar);
  55 + }
  56 +
  57 + private void initDependencies() {
  58 + dispatcher = Dispatcher.get(new Bus());
  59 + actionsCreator = ActionsCreator.get(dispatcher);
  60 + politicoStore = PoliticoStore.get(dispatcher);
  61 + }
41 62  
42 63  
  64 + private void setupView(View view) {
  65 +
  66 + pb = (ProgressBar) view.findViewById(R.id.progressBar);
  67 +
43 68 //tableview
44 69 mRecyclerView = (RecyclerView) view.findViewById(R.id.my_recycler_view);
45 70  
46   -
47 71 // use this setting to improve performance if you know that changes
48 72 // in content do not change the layout size of the RecyclerView
49 73 mRecyclerView.setHasFixedSize(true);
... ... @@ -51,41 +75,33 @@ public class ListaPoliticoFragment extends Fragment implements RecyclerViewOnCli
51 75 LinearLayoutManager llm = new LinearLayoutManager(getActivity());
52 76 llm.setOrientation(LinearLayoutManager.VERTICAL);
53 77 mRecyclerView.setLayoutManager(llm);
54   -
55   - buscaVereadores();
56   -
57   - return view;
  78 + mAdapter = new PoliticoAdapter(actionsCreator);
  79 + mRecyclerView.setAdapter(mAdapter);
  80 + mAdapter.setRecyclerViewOnClickListenerHack(this);
58 81  
59 82 }
60 83  
61   - //busca objetos
62   - public void buscaVereadores(){
63   - ParseQuery<ParseObject> query = ParseQuery.getQuery("Politico");
64   - query.addAscendingOrder("nome");
65   - //query.whereEqualTo("playerName", "Dan Stemkoski");
66   - query.findInBackground(new FindCallback<ParseObject>() {
67   - @Override
68   - public void done(List<ParseObject> list, com.parse.ParseException e) {
69   - if (e == null) {
70   - ob = list;
71   - carregaList(list);
72   - } else {
73   - Log.d("score", "Error: " + e.getMessage());
74   - }
75   - }
76   -
77 84  
78   - });
79   - }
80   -
81   - public void carregaList(List<ParseObject> list){
82   - mAdapter = new VereadorAdapter(list);
83   - mAdapter.setRecyclerViewOnClickListenerHack(this);
84   - mRecyclerView.setAdapter(mAdapter);
  85 + private void updateUI() {
  86 + mAdapter.setItems(politicoStore.getPoliticos());
85 87 pb.setVisibility(View.INVISIBLE);
86 88 }
87 89  
  90 + /**
  91 + * Atualiza a UI depois de uma action
  92 + * @param event
  93 + */
  94 + @Subscribe
  95 + public void onTodoStoreChange(PoliticoStore.UserStoreChangeEvent event) {
  96 + switch (event.getEvento()) {
  97 + case PoliticoActions.POLITICO_GET_ALL:
  98 + if(event.getStatus().equals("erro")){
88 99  
  100 + }
  101 + break;
  102 + }
  103 + updateUI();
  104 + }
89 105  
90 106 @Override
91 107 public void onClickListener(View view, int position) {
... ... @@ -105,7 +121,21 @@ public class ListaPoliticoFragment extends Fragment implements RecyclerViewOnCli
105 121 // ft.addToBackStack(null);
106 122 // ft.commit();
107 123 Intent intent = new Intent(getActivity(),PoliticoFichaActivity.class);
108   - intent.putExtra("politico", ob.get(position).getObjectId());
  124 + intent.putExtra("politico", politicoStore.getPoliticos().get(position).getObjectId());
109 125 startActivity(intent);
110 126 }
  127 +
  128 + @Override
  129 + public void onResume() {
  130 + super.onResume();
  131 + dispatcher.register(this);
  132 + dispatcher.register(politicoStore);
  133 + }
  134 +
  135 + @Override
  136 + public void onPause() {
  137 + super.onPause();
  138 + dispatcher.unregister(this);
  139 + dispatcher.unregister(politicoStore);
  140 + }
111 141 }
... ...
app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/ListaProjetosFragment.java
... ... @@ -5,20 +5,22 @@ import android.os.Bundle;
5 5 import android.support.v4.app.Fragment;
6 6 import android.support.v7.widget.LinearLayoutManager;
7 7 import android.support.v7.widget.RecyclerView;
8   -import android.util.Log;
9 8 import android.view.LayoutInflater;
10 9 import android.view.View;
11 10 import android.view.ViewGroup;
12 11 import android.widget.ProgressBar;
13 12  
14   -import com.crashlytics.android.answers.Answers;
15   -import com.crashlytics.android.answers.ContentViewEvent;
16 13 import com.monitorabrasil.participacidadao.R;
  14 +import com.monitorabrasil.participacidadao.actions.ActionsCreator;
  15 +import com.monitorabrasil.participacidadao.dispatcher.Dispatcher;
  16 +import com.monitorabrasil.participacidadao.stores.PoliticoStore;
  17 +import com.monitorabrasil.participacidadao.stores.ProjetoStore;
17 18 import com.monitorabrasil.participacidadao.view.adapters.ProjetoAdapter;
18 19 import com.monitorabrasil.participacidadao.view.interfaces.RecyclerViewOnClickListenerHack;
19   -import com.parse.FindCallback;
20 20 import com.parse.ParseObject;
21 21 import com.parse.ParseQuery;
  22 +import com.squareup.otto.Bus;
  23 +import com.squareup.otto.Subscribe;
22 24  
23 25 import java.util.List;
24 26  
... ... @@ -36,6 +38,10 @@ public class ListaProjetosFragment extends Fragment implements RecyclerViewOnCli
36 38 private String tipoProjeto;
37 39 private String idPolitico;
38 40  
  41 + private Dispatcher dispatcher;
  42 + private ActionsCreator actionsCreator;
  43 + private ProjetoStore projetoStore;
  44 +
39 45  
40 46 public static ListaProjetosFragment newInstance(String tipoProjeto, String idPolitico) {
41 47 ListaProjetosFragment fragment = new ListaProjetosFragment();
... ... @@ -66,6 +72,25 @@ public class ListaProjetosFragment extends Fragment implements RecyclerViewOnCli
66 72 View view = inflater.inflate(R.layout.fragment_lista_projetos, container, false);
67 73 // View view = inflater.inflate(R.layout.fragment_escolha_tipo_projeto, container, false);
68 74  
  75 + initDependencies();
  76 + setupView(view);
  77 +
  78 + actionsCreator.getAllProjetos(idPolitico, tipoProjeto);
  79 +
  80 + return view;
  81 + }
  82 +
  83 + private void initDependencies() {
  84 + dispatcher = Dispatcher.get(new Bus());
  85 + actionsCreator = ActionsCreator.get(dispatcher);
  86 + projetoStore = ProjetoStore.get(dispatcher);
  87 + }
  88 +
  89 +
  90 + private void setupView(View view) {
  91 + pb.setVisibility(View.VISIBLE);
  92 +
  93 +
69 94 pb = (ProgressBar) view.findViewById(R.id.progressBar);
70 95  
71 96  
... ... @@ -79,43 +104,14 @@ public class ListaProjetosFragment extends Fragment implements RecyclerViewOnCli
79 104 LinearLayoutManager llm = new LinearLayoutManager(getActivity());
80 105 llm.setOrientation(LinearLayoutManager.VERTICAL);
81 106 mRecyclerView.setLayoutManager(llm);
82   -
83   - buscaProjetos();
84   - return view;
  107 + mAdapter = new ProjetoAdapter(actionsCreator);
  108 + mRecyclerView.setAdapter(mAdapter);
  109 + mAdapter.setRecyclerViewOnClickListenerHack(this);
85 110 }
86 111  
87   - public void buscaProjetos(){
88   - ParseQuery<ParseObject> query = ParseQuery.getQuery("Projeto");
89   - query.addDescendingOrder("createdAt");
90   -
91   - if(idPolitico!= null){
92   -
93   - query.whereEqualTo("politico", buscaPolitico(idPolitico));
94   -
95   - }
96   -
97   - if(tipoProjeto != null){
98   - query.whereEqualTo("classificacao", tipoProjeto);
99   - Answers.getInstance().logContentView(new ContentViewEvent()
100   - .putContentName("ListaProjetosFragment")
101   - .putContentType("Fragment")
102   - .putCustomAttribute("tipoProjeto", tipoProjeto));
103   - }
104   -
105   -
106   - query.findInBackground(new FindCallback<ParseObject>() {
107   - @Override
108   - public void done(List<ParseObject> list, com.parse.ParseException e) {
109   - if (e == null) {
110   - ob = list;
111   - carregaList(list);
112   - } else {
113   - Log.d("score", "Error: " + e.getMessage());
114   - }
115   - }
116   -
117   -
118   - });
  112 + private void updateUI() {
  113 + mAdapter.setItems(projetoStore.getProjetos());
  114 + pb.setVisibility(View.INVISIBLE);
119 115 }
120 116  
121 117 private ParseObject buscaPolitico(String id) {
... ... @@ -130,11 +126,13 @@ public class ListaProjetosFragment extends Fragment implements RecyclerViewOnCli
130 126 return null;
131 127 }
132 128  
133   - public void carregaList(List<ParseObject> list){
134   - mAdapter = new ProjetoAdapter(list,getActivity());
135   - mAdapter.setRecyclerViewOnClickListenerHack(this);
136   - mRecyclerView.setAdapter(mAdapter);
137   - pb.setVisibility(View.INVISIBLE);
  129 + /**
  130 + * Atualiza a UI depois de uma action
  131 + * @param event
  132 + */
  133 + @Subscribe
  134 + public void onTodoStoreChange(PoliticoStore.UserStoreChangeEvent event) {
  135 + updateUI();
138 136 }
139 137  
140 138 @Override
... ...
app/src/main/res/layout/activity_login.xml
... ... @@ -6,7 +6,7 @@
6 6 android:background="@color/grey"
7 7 android:orientation="vertical"
8 8 tools:context="com.monitorabrasil.participacidadao.view.LoginActivity"
9   - android:paddingTop="8dp">
  9 + android:paddingTop="0dp">
10 10  
11 11 <android.support.v7.widget.Toolbar
12 12 android:id="@+id/toolbar"
... ...