From 8071edb3bd024589708c0d1dc4c3712ceb8f253a Mon Sep 17 00:00:00 2001 From: geraugu Date: Thu, 20 Aug 2015 16:13:49 -0300 Subject: [PATCH] Refactoring de polĂ­ticos e projetos --- app/src/main/java/com/monitorabrasil/participacidadao/actions/ActionsCreator.java | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- app/src/main/java/com/monitorabrasil/participacidadao/actions/PoliticoActions.java | 18 ++++++++++++++++++ app/src/main/java/com/monitorabrasil/participacidadao/actions/ProjetoActions.java | 14 ++++++++++++++ app/src/main/java/com/monitorabrasil/participacidadao/stores/PoliticoStore.java | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ app/src/main/java/com/monitorabrasil/participacidadao/stores/ProjetoStore.java | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ app/src/main/java/com/monitorabrasil/participacidadao/stores/UserStore.java | 18 ++++++------------ app/src/main/java/com/monitorabrasil/participacidadao/view/LoginActivity.java | 8 ++++---- app/src/main/java/com/monitorabrasil/participacidadao/view/PoliticosActivity.java | 8 ++++---- app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/PoliticoAdapter.java | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/ProjetoAdapter.java | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------- app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/VereadorAdapter.java | 85 ------------------------------------------------------------------------------------- app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/HomeFragment.java | 6 +++--- app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/ListaPoliticoFragment.java | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------- app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/ListaProjetosFragment.java | 86 ++++++++++++++++++++++++++++++++++++++++++-------------------------------------------- app/src/main/res/layout/activity_login.xml | 2 +- 15 files changed, 548 insertions(+), 238 deletions(-) create mode 100644 app/src/main/java/com/monitorabrasil/participacidadao/actions/PoliticoActions.java create mode 100644 app/src/main/java/com/monitorabrasil/participacidadao/actions/ProjetoActions.java create mode 100644 app/src/main/java/com/monitorabrasil/participacidadao/stores/PoliticoStore.java create mode 100644 app/src/main/java/com/monitorabrasil/participacidadao/stores/ProjetoStore.java create mode 100644 app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/PoliticoAdapter.java delete mode 100644 app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/VereadorAdapter.java diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/actions/ActionsCreator.java b/app/src/main/java/com/monitorabrasil/participacidadao/actions/ActionsCreator.java index b80a79d..74ded9e 100644 --- a/app/src/main/java/com/monitorabrasil/participacidadao/actions/ActionsCreator.java +++ b/app/src/main/java/com/monitorabrasil/participacidadao/actions/ActionsCreator.java @@ -1,13 +1,20 @@ package com.monitorabrasil.participacidadao.actions; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.ContentViewEvent; import com.monitorabrasil.participacidadao.dispatcher.Dispatcher; +import com.parse.FindCallback; import com.parse.LogInCallback; import com.parse.LogOutCallback; import com.parse.ParseFile; +import com.parse.ParseObject; +import com.parse.ParseQuery; import com.parse.ParseUser; import com.parse.ProgressCallback; import com.parse.SignUpCallback; +import java.util.List; + /** * Created by 89741803168 on 13/08/2015. */ @@ -26,15 +33,82 @@ public class ActionsCreator { return instance; } + /***** + * + */ + + public void getAllProjetos(String idPolitico, String tipoProjeto) { + ParseQuery query = ParseQuery.getQuery("Projeto"); + query.addDescendingOrder("createdAt"); + + if(idPolitico!= null){ + query.whereEqualTo("politico", idPolitico); + } + + if(tipoProjeto != null){ + query.whereEqualTo("classificacao", tipoProjeto); + Answers.getInstance().logContentView(new ContentViewEvent() + .putContentName("ListaProjetosFragment") + .putContentType("Fragment") + .putCustomAttribute("tipoProjeto", tipoProjeto)); + } + query.findInBackground(new FindCallback() { + @Override + public void done(List list, com.parse.ParseException e) { + if (e == null) { + dispatcher.dispatch( + ProjetoActions.PROJETO_GET_ALL, + ProjetoActions.KEY_TEXT, list + ); + } else { + dispatcher.dispatch( + ProjetoActions.PROJETO_GET_ALL, + ProjetoActions.KEY_TEXT, "erro" + ); + } + } + + + }); + } + + /* + # ACTIONS DE POLITICOS + **/ + + public void getAllPoliticos(){ + ParseQuery query = ParseQuery.getQuery("Politico"); + query.addAscendingOrder("nome"); + query.findInBackground(new FindCallback() { + @Override + public void done(List list, com.parse.ParseException e) { + if (e == null) { + dispatcher.dispatch( + PoliticoActions.POLITICO_GET_ALL, + PoliticoActions.KEY_TEXT, list + ); + } else { + dispatcher.dispatch( + PoliticoActions.POLITICO_GET_ALL, + PoliticoActions.KEY_TEXT, "erro" + ); + } + } + + + }); + } + + /* + # ACTIONS DE USUARIOS + **/ + /** * Actions do usuario - logar * @param inputUsuario * @param inputSenha */ - public void logar(String inputUsuario, String inputSenha){ - - ParseUser.logInInBackground(inputUsuario, inputSenha, new LogInCallback() { @Override @@ -72,7 +146,13 @@ public class ActionsCreator { }); } - + /** + * Actions do usuario - cadastrar + * @param nome + * @param password + * @param email + * @param mParseFile + */ public void cadastrar(final String nome, final String password, final String email, final ParseFile mParseFile) { mParseFile.saveInBackground(new ProgressCallback() { @Override @@ -107,4 +187,6 @@ public class ActionsCreator { } + + } diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/actions/PoliticoActions.java b/app/src/main/java/com/monitorabrasil/participacidadao/actions/PoliticoActions.java new file mode 100644 index 0000000..35376f7 --- /dev/null +++ b/app/src/main/java/com/monitorabrasil/participacidadao/actions/PoliticoActions.java @@ -0,0 +1,18 @@ +package com.monitorabrasil.participacidadao.actions; + +/** + * Created by Geraldo on 13/08/2015. + */ +public interface PoliticoActions { + String POLITICO_AVALIAR = "politico_avaliar"; + String POLITICO_COMENTAR = "politico_comentar"; + String POLITICO_GET_INFOS = "politico_get_infos"; + String POLITICO_GET_GAST0S = "politico_get_gastos"; + String POLITICO_GET_PROJETOS = "politico_get_projetos"; + String POLITICO_GET_ALL = "politico_get_all"; + + String KEY_TEXT = "key-text"; + String KEY_ID = "key-id"; + + +} diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/actions/ProjetoActions.java b/app/src/main/java/com/monitorabrasil/participacidadao/actions/ProjetoActions.java new file mode 100644 index 0000000..ff80a8a --- /dev/null +++ b/app/src/main/java/com/monitorabrasil/participacidadao/actions/ProjetoActions.java @@ -0,0 +1,14 @@ +package com.monitorabrasil.participacidadao.actions; + +/** + * Created by Geraldo on 13/08/2015. + */ +public interface ProjetoActions { + String PROJETO_COMENTAR = "projeto_comentar"; + String PROJETO_GET_ALL = "projeto_get_all"; + + String KEY_TEXT = "key-text"; + String KEY_ID = "key-id"; + + +} diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/stores/PoliticoStore.java b/app/src/main/java/com/monitorabrasil/participacidadao/stores/PoliticoStore.java new file mode 100644 index 0000000..9b6ad0a --- /dev/null +++ b/app/src/main/java/com/monitorabrasil/participacidadao/stores/PoliticoStore.java @@ -0,0 +1,75 @@ +package com.monitorabrasil.participacidadao.stores; + +import com.monitorabrasil.participacidadao.actions.Action; +import com.monitorabrasil.participacidadao.actions.PoliticoActions; +import com.monitorabrasil.participacidadao.dispatcher.Dispatcher; +import com.parse.ParseObject; +import com.squareup.otto.Subscribe; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Geraldo on 13/08/2015. + */ +public class PoliticoStore extends Store{ + + private static PoliticoStore instance; + private String status; + private String evento; + private List politicos; + + protected PoliticoStore(Dispatcher dispatcher) { + super(dispatcher); + politicos = new ArrayList<>(); + } + + public static PoliticoStore get(Dispatcher dispatcher) { + if (instance == null) { + instance = new PoliticoStore(dispatcher); + } + return instance; + } + + public List getPoliticos(){ + return politicos; + } + + + @Override + @Subscribe + public void onAction(Action action) { + status = "erro"; + this.evento = action.getType(); + + switch (action.getType()) { + case PoliticoActions.POLITICO_GET_ALL: + politicos = ((List) action.getData().get(PoliticoActions.KEY_TEXT)); + emitStoreChange(); + break; + + } + } + + @Override + StoreChangeEvent changeEvent() { + UserStoreChangeEvent mUserStoreChangeEvent = new UserStoreChangeEvent(); + mUserStoreChangeEvent.status = this.status; + mUserStoreChangeEvent.evento = this.evento; + return mUserStoreChangeEvent; + } + + + public class UserStoreChangeEvent implements StoreChangeEvent { + private String status; + private String evento; + + public String getEvento() { + return evento; + } + + public String getStatus() { + return status; + } + } +} diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/stores/ProjetoStore.java b/app/src/main/java/com/monitorabrasil/participacidadao/stores/ProjetoStore.java new file mode 100644 index 0000000..6116e7d --- /dev/null +++ b/app/src/main/java/com/monitorabrasil/participacidadao/stores/ProjetoStore.java @@ -0,0 +1,75 @@ +package com.monitorabrasil.participacidadao.stores; + +import com.monitorabrasil.participacidadao.actions.Action; +import com.monitorabrasil.participacidadao.actions.PoliticoActions; +import com.monitorabrasil.participacidadao.dispatcher.Dispatcher; +import com.parse.ParseObject; +import com.squareup.otto.Subscribe; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Geraldo on 13/08/2015. + */ +public class ProjetoStore extends Store{ + + private static ProjetoStore instance; + private String status; + private String evento; + private List projetos; + + protected ProjetoStore(Dispatcher dispatcher) { + super(dispatcher); + projetos = new ArrayList<>(); + } + + public static ProjetoStore get(Dispatcher dispatcher) { + if (instance == null) { + instance = new ProjetoStore(dispatcher); + } + return instance; + } + + public List getProjetos(){ + return projetos; + } + + + @Override + @Subscribe + public void onAction(Action action) { + status = "erro"; + this.evento = action.getType(); + + switch (action.getType()) { + case PoliticoActions.POLITICO_GET_ALL: + projetos = ((List) action.getData().get(PoliticoActions.KEY_TEXT)); + emitStoreChange(); + break; + + } + } + + @Override + StoreChangeEvent changeEvent() { + UserStoreChangeEvent mUserStoreChangeEvent = new UserStoreChangeEvent(); + mUserStoreChangeEvent.status = this.status; + mUserStoreChangeEvent.evento = this.evento; + return mUserStoreChangeEvent; + } + + + public class UserStoreChangeEvent implements StoreChangeEvent { + private String status; + private String evento; + + public String getEvento() { + return evento; + } + + public String getStatus() { + return status; + } + } +} diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/stores/UserStore.java b/app/src/main/java/com/monitorabrasil/participacidadao/stores/UserStore.java index b056f78..b6a4b16 100644 --- a/app/src/main/java/com/monitorabrasil/participacidadao/stores/UserStore.java +++ b/app/src/main/java/com/monitorabrasil/participacidadao/stores/UserStore.java @@ -14,8 +14,13 @@ public class UserStore extends Store{ private String status; private String evento; + public String getStatus(){ + return status; + } - + public String getEvento(){ + return evento; + } protected UserStore(Dispatcher dispatcher) { @@ -53,21 +58,10 @@ public class UserStore extends Store{ @Override StoreChangeEvent changeEvent() { UserStoreChangeEvent mUserStoreChangeEvent = new UserStoreChangeEvent(); - mUserStoreChangeEvent.status = this.status; - mUserStoreChangeEvent.evento = this.evento; return mUserStoreChangeEvent; } public class UserStoreChangeEvent implements StoreChangeEvent { - private String status; - private String evento; - public String getEvento() { - return evento; - } - - public String getStatus() { - return status; - } } } diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/view/LoginActivity.java b/app/src/main/java/com/monitorabrasil/participacidadao/view/LoginActivity.java index 7ccc9f5..5796eec 100644 --- a/app/src/main/java/com/monitorabrasil/participacidadao/view/LoginActivity.java +++ b/app/src/main/java/com/monitorabrasil/participacidadao/view/LoginActivity.java @@ -358,16 +358,16 @@ public class LoginActivity extends AppCompatActivity { */ @Subscribe public void onTodoStoreChange(UserStore.UserStoreChangeEvent event) { - switch (event.getEvento()) { + switch (userStore.getEvento()) { case UserActions.USER_CADASTRO: - if(event.getStatus().equals("erro")){ + if(userStore.getStatus().equals("erro")){ showProgress(false); - Snackbar.make(form, "Houve um erro ao fazer seu cadastro ", Snackbar.LENGTH_LONG) + Snackbar.make(form, "Houve um erro ao fazer seu cadastro", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } break; case UserActions.USER_LOGAR: - if(event.getStatus().equals("erro")){ + if(userStore.getStatus().equals("erro")){ showProgress(false); Snackbar.make(form, "Houve um erro ao fazer o login", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/view/PoliticosActivity.java b/app/src/main/java/com/monitorabrasil/participacidadao/view/PoliticosActivity.java index 4d8d4d1..4231509 100644 --- a/app/src/main/java/com/monitorabrasil/participacidadao/view/PoliticosActivity.java +++ b/app/src/main/java/com/monitorabrasil/participacidadao/view/PoliticosActivity.java @@ -23,9 +23,9 @@ public class PoliticosActivity extends AppCompatActivity { .putContentName("PoliticosActivity") .putContentType("Activity")); - ListaPoliticoFragment frag = (ListaPoliticoFragment) getSupportFragmentManager().findFragmentByTag("listaPoliticoFrag"); + ListaPoliticoFragment frag = (ListaPoliticoFragment) getSupportFragmentManager().findFragmentByTag("listaPoliticoFrag"); if(frag == null) { - frag = new ListaPoliticoFragment(); + frag = ListaPoliticoFragment.newInstance(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.rl_fragment_container, frag, "listaPoliticoFrag"); ft.commit(); @@ -34,7 +34,7 @@ public class PoliticosActivity extends AppCompatActivity { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); - // toolbar.setNavigationIcon(R.drawable.ic_good); + // toolbar.setNavigationIcon(R.drawable.ic_good); toolbar.setTitle("Vereadores"); toolbar.setSubtitle("Ouro Branco - MG"); @@ -42,7 +42,7 @@ public class PoliticosActivity extends AppCompatActivity { toolbar.setSubtitleTextColor(getResources().getColor(R.color.md_white_1000)); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); - // toolbar.setLogo(R.drawable.ic_launcher); + // toolbar.setLogo(R.drawable.ic_launcher); } diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/PoliticoAdapter.java b/app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/PoliticoAdapter.java new file mode 100644 index 0000000..c0f81de --- /dev/null +++ b/app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/PoliticoAdapter.java @@ -0,0 +1,94 @@ +package com.monitorabrasil.participacidadao.view.adapters; + +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.RatingBar; +import android.widget.TextView; + +import com.monitorabrasil.participacidadao.R; +import com.monitorabrasil.participacidadao.actions.ActionsCreator; +import com.monitorabrasil.participacidadao.application.MyApp; +import com.monitorabrasil.participacidadao.view.interfaces.RecyclerViewOnClickListenerHack; +import com.parse.ParseObject; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by geraugu on 6/7/15. + */ +public class PoliticoAdapter extends RecyclerView.Adapter { + + private static ActionsCreator actionsCreator; + private List politicos; + private RecyclerViewOnClickListenerHack mRecyclerViewOnClickListenerHack; + + public PoliticoAdapter(ActionsCreator actionsCreator) { + politicos = new ArrayList<>(); + PoliticoAdapter.actionsCreator = actionsCreator; + } + + @Override + public PoliticoAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { + // create a new view + View v = LayoutInflater.from(viewGroup.getContext()) + .inflate(R.layout.item_politico, viewGroup, false); + // set the view's size, margins, paddings and layout parameter + ViewHolder vh = new ViewHolder(v); + return vh; + } + public void setRecyclerViewOnClickListenerHack(RecyclerViewOnClickListenerHack r){ + mRecyclerViewOnClickListenerHack = r; + } + + @Override + public void onBindViewHolder(PoliticoAdapter.ViewHolder viewHolder, int i) { + ParseObject vereador = politicos.get(i); + vereador.pinInBackground(); + viewHolder.mTextView.setText(vereador.get("nome").toString()); + viewHolder.txtPartido.setText(vereador.get("partido").toString()); + viewHolder.rb.setRating((float)vereador.getDouble("avaliacao")); + MyApp.getInstance().getmImagemLoader().displayImage(MyApp.URL_FOTO + vereador.get("cpf") + ".jpg", viewHolder.foto); + + } + + @Override + public int getItemCount() { + return politicos.size(); + } + + public void setItems(List politicos) { + this.politicos = politicos; + notifyDataSetChanged(); + } + + // Provide a reference to the views for each data item + // Complex data items may need more than one view per item, and + // you provide access to all the views for a data item in a view holder + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ + // each data item is just a string in this case + public TextView mTextView; + public TextView txtPartido; + public ImageView foto; + public RatingBar rb; + public ViewHolder(View v) { + super(v); + mTextView = (TextView) v.findViewById(R.id.txtNome); + txtPartido = (TextView) v.findViewById(R.id.txtPartido); + foto = (ImageView)v.findViewById(R.id.foto); + rb = (RatingBar)v.findViewById(R.id.ratingBar); + + itemView.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + if(mRecyclerViewOnClickListenerHack != null){ + mRecyclerViewOnClickListenerHack.onClickListener(v, getPosition()); + } + } + } +} diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/ProjetoAdapter.java b/app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/ProjetoAdapter.java index 0de79af..5e6c1fb 100644 --- a/app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/ProjetoAdapter.java +++ b/app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/ProjetoAdapter.java @@ -16,6 +16,7 @@ import android.widget.Button; import android.widget.TextView; import com.google.gson.Gson; +import com.monitorabrasil.participacidadao.actions.ActionsCreator; import com.monitorabrasil.participacidadao.view.ComentarioActivity; import com.monitorabrasil.participacidadao.R; import com.monitorabrasil.participacidadao.application.MyApp; @@ -27,6 +28,7 @@ import com.parse.ParseQuery; import com.parse.ParseUser; import com.parse.SaveCallback; +import java.util.ArrayList; import java.util.List; /** @@ -34,52 +36,20 @@ import java.util.List; */ public class ProjetoAdapter extends RecyclerView.Adapter { - private List mDataset; + private static ActionsCreator actionsCreator; + private List projetos; private RecyclerViewOnClickListenerHack mRecyclerViewOnClickListenerHack; private FragmentActivity mActivity; - public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ - // each data item is just a string in this case - public ParseObject projetoVotado; - public TextView classificacao; - public TextView data; - public TextView autor; - public TextView descricao; - public TextView numApoio; - public TextView numNaoApoio; - public TextView numero; - public Button btnConcordo; - public Button btnDiscordo; - public Button btnComentar; - public String voto; - public ParseObject projeto; - - public ViewHolder(View v) { - super(v); - classificacao = (TextView) v.findViewById(R.id.classificacao); - data = (TextView) v.findViewById(R.id.data); - autor = (TextView) v.findViewById(R.id.autor); - numApoio = (TextView) v.findViewById(R.id.txtNumApoio); - numNaoApoio = (TextView) v.findViewById(R.id.txtNumNaoApoio); - descricao = (TextView) v.findViewById(R.id.descricao); - btnConcordo = (Button) v.findViewById(R.id.btnConcordo); - btnDiscordo = (Button) v.findViewById(R.id.btnDiscordo); - btnComentar = (Button) v.findViewById(R.id.btnComentar); - numero = (TextView) v.findViewById(R.id.numero); + public ProjetoAdapter(ActionsCreator actionsCreator) { + projetos = new ArrayList<>(); + ProjetoAdapter.actionsCreator = actionsCreator; + } - itemView.setOnClickListener(this); - } - @Override - public void onClick(View v) { - if(mRecyclerViewOnClickListenerHack != null){ - mRecyclerViewOnClickListenerHack.onClickListener(v, getPosition()); - } - } - } public ProjetoAdapter(List myDataset, FragmentActivity activity) { - mDataset = myDataset; + projetos = myDataset; mActivity = activity; } @@ -106,7 +76,7 @@ public class ProjetoAdapter extends RecyclerView.Adapter query = ParseQuery.getQuery("Voto"); @@ -286,6 +256,51 @@ public class ProjetoAdapter extends RecyclerView.Adapter projetos) { + this.projetos = projetos; + notifyDataSetChanged(); + } + + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ + // each data item is just a string in this case + public ParseObject projetoVotado; + public TextView classificacao; + public TextView data; + public TextView autor; + public TextView descricao; + public TextView numApoio; + public TextView numNaoApoio; + public TextView numero; + public Button btnConcordo; + public Button btnDiscordo; + public Button btnComentar; + public String voto; + public ParseObject projeto; + + public ViewHolder(View v) { + super(v); + classificacao = (TextView) v.findViewById(R.id.classificacao); + data = (TextView) v.findViewById(R.id.data); + autor = (TextView) v.findViewById(R.id.autor); + numApoio = (TextView) v.findViewById(R.id.txtNumApoio); + numNaoApoio = (TextView) v.findViewById(R.id.txtNumNaoApoio); + descricao = (TextView) v.findViewById(R.id.descricao); + btnConcordo = (Button) v.findViewById(R.id.btnConcordo); + btnDiscordo = (Button) v.findViewById(R.id.btnDiscordo); + btnComentar = (Button) v.findViewById(R.id.btnComentar); + numero = (TextView) v.findViewById(R.id.numero); + + itemView.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + if(mRecyclerViewOnClickListenerHack != null){ + mRecyclerViewOnClickListenerHack.onClickListener(v, getPosition()); + } + } } } diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/VereadorAdapter.java b/app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/VereadorAdapter.java deleted file mode 100644 index 93f2546..0000000 --- a/app/src/main/java/com/monitorabrasil/participacidadao/view/adapters/VereadorAdapter.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.monitorabrasil.participacidadao.view.adapters; - -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.RatingBar; -import android.widget.TextView; - -import com.monitorabrasil.participacidadao.R; -import com.monitorabrasil.participacidadao.application.MyApp; -import com.monitorabrasil.participacidadao.view.interfaces.RecyclerViewOnClickListenerHack; -import com.parse.ParseObject; - -import java.util.List; - -/** - * Created by geraugu on 6/7/15. - */ -public class VereadorAdapter extends RecyclerView.Adapter { - - private List mDataset; - private RecyclerViewOnClickListenerHack mRecyclerViewOnClickListenerHack; - - // Provide a reference to the views for each data item - // Complex data items may need more than one view per item, and - // you provide access to all the views for a data item in a view holder - public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ - // each data item is just a string in this case - public TextView mTextView; - public TextView txtPartido; - public ImageView foto; - public RatingBar rb; - public ViewHolder(View v) { - super(v); - mTextView = (TextView) v.findViewById(R.id.txtNome); - txtPartido = (TextView) v.findViewById(R.id.txtPartido); - foto = (ImageView)v.findViewById(R.id.foto); - rb = (RatingBar)v.findViewById(R.id.ratingBar); - - itemView.setOnClickListener(this); - } - - @Override - public void onClick(View v) { - if(mRecyclerViewOnClickListenerHack != null){ - mRecyclerViewOnClickListenerHack.onClickListener(v, getPosition()); - } - } - } - - public VereadorAdapter(List myDataset) { - mDataset = myDataset; - } - - @Override - public VereadorAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { - // create a new view - View v = LayoutInflater.from(viewGroup.getContext()) - .inflate(R.layout.item_politico, viewGroup, false); - // set the view's size, margins, paddings and layout parameter - ViewHolder vh = new ViewHolder(v); - return vh; - } - public void setRecyclerViewOnClickListenerHack(RecyclerViewOnClickListenerHack r){ - mRecyclerViewOnClickListenerHack = r; - } - - @Override - public void onBindViewHolder(VereadorAdapter.ViewHolder viewHolder, int i) { - ParseObject vereador = mDataset.get(i); - vereador.pinInBackground(); - viewHolder.mTextView.setText(vereador.get("nome").toString()); - viewHolder.txtPartido.setText(vereador.get("partido").toString()); - viewHolder.rb.setRating((float)vereador.getDouble("avaliacao")); - MyApp.getInstance().getmImagemLoader().displayImage(MyApp.URL_FOTO + vereador.get("cpf") + ".jpg", viewHolder.foto); - - } - - @Override - public int getItemCount() { - return mDataset.size(); - } -} diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/HomeFragment.java b/app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/HomeFragment.java index d9d094b..9a210f9 100644 --- a/app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/HomeFragment.java +++ b/app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/HomeFragment.java @@ -25,7 +25,7 @@ import com.github.mikephil.charting.data.BarEntry; import com.github.mikephil.charting.utils.ValueFormatter; import com.monitorabrasil.participacidadao.view.PoliticoFichaActivity; import com.monitorabrasil.participacidadao.R; -import com.monitorabrasil.participacidadao.view.adapters.VereadorAdapter; +import com.monitorabrasil.participacidadao.view.adapters.PoliticoAdapter; import com.monitorabrasil.participacidadao.application.MyApp; import com.monitorabrasil.participacidadao.model.Grafico; import com.monitorabrasil.participacidadao.view.interfaces.RecyclerViewOnClickListenerHack; @@ -53,7 +53,7 @@ public class HomeFragment extends Fragment implements RecyclerViewOnClickListene private OnFragmentInteractionListener mListener; private RecyclerView mRecyclerView; - private VereadorAdapter mAdapter; + private PoliticoAdapter mAdapter; private List ob; private HashMap valorTotal = new HashMap(); ArrayList xVals = new ArrayList(); @@ -310,7 +310,7 @@ public class HomeFragment extends Fragment implements RecyclerViewOnClickListene } public void carregaList(List list){ - mAdapter = new VereadorAdapter(list); + mAdapter = new PoliticoAdapter(list); mAdapter.setRecyclerViewOnClickListenerHack(this); mRecyclerView.setAdapter(mAdapter); //pb.setVisibility(View.INVISIBLE); diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/ListaPoliticoFragment.java b/app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/ListaPoliticoFragment.java index f4d7902..5cdf5a2 100644 --- a/app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/ListaPoliticoFragment.java +++ b/app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/ListaPoliticoFragment.java @@ -5,21 +5,21 @@ import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; -import com.monitorabrasil.participacidadao.view.PoliticoFichaActivity; import com.monitorabrasil.participacidadao.R; -import com.monitorabrasil.participacidadao.view.adapters.VereadorAdapter; +import com.monitorabrasil.participacidadao.actions.ActionsCreator; +import com.monitorabrasil.participacidadao.actions.PoliticoActions; +import com.monitorabrasil.participacidadao.dispatcher.Dispatcher; +import com.monitorabrasil.participacidadao.stores.PoliticoStore; +import com.monitorabrasil.participacidadao.view.PoliticoFichaActivity; +import com.monitorabrasil.participacidadao.view.adapters.PoliticoAdapter; import com.monitorabrasil.participacidadao.view.interfaces.RecyclerViewOnClickListenerHack; -import com.parse.FindCallback; -import com.parse.ParseObject; -import com.parse.ParseQuery; - -import java.util.List; +import com.squareup.otto.Bus; +import com.squareup.otto.Subscribe; /** * Created by geraugu on 6/10/15. @@ -27,23 +27,47 @@ import java.util.List; public class ListaPoliticoFragment extends Fragment implements RecyclerViewOnClickListenerHack { private RecyclerView mRecyclerView; - private VereadorAdapter mAdapter; - private List ob; + private PoliticoAdapter mAdapter; private ProgressBar pb; + private Dispatcher dispatcher; + private ActionsCreator actionsCreator; + private PoliticoStore politicoStore; + + public static ListaPoliticoFragment newInstance() { + ListaPoliticoFragment fragment = new ListaPoliticoFragment(); + return fragment; + } + + public ListaPoliticoFragment(){} + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_list_politico, container, false); + initDependencies(); + setupView(view); + pb.setVisibility(View.VISIBLE); + actionsCreator.getAllPoliticos(); + return view; - pb = (ProgressBar) view.findViewById(R.id.progressBar); + } + + private void initDependencies() { + dispatcher = Dispatcher.get(new Bus()); + actionsCreator = ActionsCreator.get(dispatcher); + politicoStore = PoliticoStore.get(dispatcher); + } + private void setupView(View view) { + + pb = (ProgressBar) view.findViewById(R.id.progressBar); + //tableview mRecyclerView = (RecyclerView) view.findViewById(R.id.my_recycler_view); - // 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); @@ -51,41 +75,33 @@ public class ListaPoliticoFragment extends Fragment implements RecyclerViewOnCli LinearLayoutManager llm = new LinearLayoutManager(getActivity()); llm.setOrientation(LinearLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(llm); - - buscaVereadores(); - - return view; + mAdapter = new PoliticoAdapter(actionsCreator); + mRecyclerView.setAdapter(mAdapter); + mAdapter.setRecyclerViewOnClickListenerHack(this); } - //busca objetos - public void buscaVereadores(){ - ParseQuery query = ParseQuery.getQuery("Politico"); - query.addAscendingOrder("nome"); - //query.whereEqualTo("playerName", "Dan Stemkoski"); - query.findInBackground(new FindCallback() { - @Override - public void done(List list, com.parse.ParseException e) { - if (e == null) { - ob = list; - carregaList(list); - } else { - Log.d("score", "Error: " + e.getMessage()); - } - } - - }); - } - - public void carregaList(List list){ - mAdapter = new VereadorAdapter(list); - mAdapter.setRecyclerViewOnClickListenerHack(this); - mRecyclerView.setAdapter(mAdapter); + private void updateUI() { + mAdapter.setItems(politicoStore.getPoliticos()); pb.setVisibility(View.INVISIBLE); } + /** + * Atualiza a UI depois de uma action + * @param event + */ + @Subscribe + public void onTodoStoreChange(PoliticoStore.UserStoreChangeEvent event) { + switch (event.getEvento()) { + case PoliticoActions.POLITICO_GET_ALL: + if(event.getStatus().equals("erro")){ + } + break; + } + updateUI(); + } @Override public void onClickListener(View view, int position) { @@ -105,7 +121,21 @@ public class ListaPoliticoFragment extends Fragment implements RecyclerViewOnCli // ft.addToBackStack(null); // ft.commit(); Intent intent = new Intent(getActivity(),PoliticoFichaActivity.class); - intent.putExtra("politico", ob.get(position).getObjectId()); + intent.putExtra("politico", politicoStore.getPoliticos().get(position).getObjectId()); startActivity(intent); } + + @Override + public void onResume() { + super.onResume(); + dispatcher.register(this); + dispatcher.register(politicoStore); + } + + @Override + public void onPause() { + super.onPause(); + dispatcher.unregister(this); + dispatcher.unregister(politicoStore); + } } diff --git a/app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/ListaProjetosFragment.java b/app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/ListaProjetosFragment.java index d5feeb7..32785ca 100644 --- a/app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/ListaProjetosFragment.java +++ b/app/src/main/java/com/monitorabrasil/participacidadao/view/fragments/ListaProjetosFragment.java @@ -5,20 +5,22 @@ import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; -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.monitorabrasil.participacidadao.view.adapters.ProjetoAdapter; import com.monitorabrasil.participacidadao.view.interfaces.RecyclerViewOnClickListenerHack; -import com.parse.FindCallback; import com.parse.ParseObject; import com.parse.ParseQuery; +import com.squareup.otto.Bus; +import com.squareup.otto.Subscribe; import java.util.List; @@ -36,6 +38,10 @@ public class ListaProjetosFragment extends Fragment implements RecyclerViewOnCli private String tipoProjeto; private String idPolitico; + private Dispatcher dispatcher; + private ActionsCreator actionsCreator; + private ProjetoStore projetoStore; + public static ListaProjetosFragment newInstance(String tipoProjeto, String idPolitico) { ListaProjetosFragment fragment = new ListaProjetosFragment(); @@ -66,6 +72,25 @@ public class ListaProjetosFragment extends Fragment implements RecyclerViewOnCli View view = inflater.inflate(R.layout.fragment_lista_projetos, container, false); // View view = inflater.inflate(R.layout.fragment_escolha_tipo_projeto, container, false); + initDependencies(); + setupView(view); + + actionsCreator.getAllProjetos(idPolitico, tipoProjeto); + + return view; + } + + private void initDependencies() { + dispatcher = Dispatcher.get(new Bus()); + actionsCreator = ActionsCreator.get(dispatcher); + projetoStore = ProjetoStore.get(dispatcher); + } + + + private void setupView(View view) { + pb.setVisibility(View.VISIBLE); + + pb = (ProgressBar) view.findViewById(R.id.progressBar); @@ -79,43 +104,14 @@ public class ListaProjetosFragment extends Fragment implements RecyclerViewOnCli LinearLayoutManager llm = new LinearLayoutManager(getActivity()); llm.setOrientation(LinearLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(llm); - - buscaProjetos(); - return view; + mAdapter = new ProjetoAdapter(actionsCreator); + mRecyclerView.setAdapter(mAdapter); + mAdapter.setRecyclerViewOnClickListenerHack(this); } - public void buscaProjetos(){ - ParseQuery query = ParseQuery.getQuery("Projeto"); - query.addDescendingOrder("createdAt"); - - if(idPolitico!= null){ - - query.whereEqualTo("politico", buscaPolitico(idPolitico)); - - } - - if(tipoProjeto != null){ - query.whereEqualTo("classificacao", tipoProjeto); - Answers.getInstance().logContentView(new ContentViewEvent() - .putContentName("ListaProjetosFragment") - .putContentType("Fragment") - .putCustomAttribute("tipoProjeto", tipoProjeto)); - } - - - query.findInBackground(new FindCallback() { - @Override - public void done(List list, com.parse.ParseException e) { - if (e == null) { - ob = list; - carregaList(list); - } else { - Log.d("score", "Error: " + e.getMessage()); - } - } - - - }); + private void updateUI() { + mAdapter.setItems(projetoStore.getProjetos()); + pb.setVisibility(View.INVISIBLE); } private ParseObject buscaPolitico(String id) { @@ -130,11 +126,13 @@ public class ListaProjetosFragment extends Fragment implements RecyclerViewOnCli return null; } - public void carregaList(List list){ - mAdapter = new ProjetoAdapter(list,getActivity()); - mAdapter.setRecyclerViewOnClickListenerHack(this); - mRecyclerView.setAdapter(mAdapter); - pb.setVisibility(View.INVISIBLE); + /** + * Atualiza a UI depois de uma action + * @param event + */ + @Subscribe + public void onTodoStoreChange(PoliticoStore.UserStoreChangeEvent event) { + updateUI(); } @Override diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 83afdd7..0a382c8 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -6,7 +6,7 @@ android:background="@color/grey" android:orientation="vertical" tools:context="com.monitorabrasil.participacidadao.view.LoginActivity" - android:paddingTop="8dp"> + android:paddingTop="0dp">