From 2072b1478b20b873519682be72bd21087e8ae398 Mon Sep 17 00:00:00 2001 From: geraugu Date: Fri, 26 Jun 2015 00:05:02 -0300 Subject: [PATCH] iniciando os modulos de projetos e da camara --- app/app.iml | 23 ++++++++++++++++++----- app/build.gradle | 24 ++++++++++++++++++++++-- app/src/main/AndroidManifest.xml | 26 ++++++++++++++++++++++++-- app/src/main/java/com/monitorabrasil/monitoralegislativo/MainActivity.java | 8 ++++++++ app/src/main/java/com/monitorabrasil/monitoralegislativo/PoliticosActivity.java | 5 ++++- app/src/main/java/com/monitorabrasil/monitoralegislativo/ProjetosActivity.java | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ app/src/main/java/com/monitorabrasil/monitoralegislativo/adapters/ProjetoAdapter.java | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ app/src/main/java/com/monitorabrasil/monitoralegislativo/adapters/VereadorAdapter.java | 1 + app/src/main/java/com/monitorabrasil/monitoralegislativo/application/MyApp.java | 7 +++++++ app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/ListaPoliticoFragment.java | 7 ++++++- app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/ListaProjetosFragment.java | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/PoliticoFragment.java | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- app/src/main/res/layout/activity_politicos.xml | 3 --- app/src/main/res/layout/activity_projetos.xml | 26 ++++++++++++++++++++++++++ app/src/main/res/layout/fragment_list_politico.xml | 7 +++++++ app/src/main/res/layout/fragment_lista_projetos.xml | 20 ++++++++++++++++++++ app/src/main/res/layout/fragment_politico_detalhe.xml | 21 ++++++++------------- app/src/main/res/layout/item_projeto.xml | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ app/src/main/res/menu/menu_projetos.xml | 7 +++++++ app/src/main/res/values/dimens.xml | 4 ++++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/values/styles.xml | 8 ++++++++ 22 files changed, 617 insertions(+), 34 deletions(-) create mode 100644 app/src/main/java/com/monitorabrasil/monitoralegislativo/ProjetosActivity.java create mode 100644 app/src/main/java/com/monitorabrasil/monitoralegislativo/adapters/ProjetoAdapter.java create mode 100644 app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/ListaProjetosFragment.java create mode 100644 app/src/main/res/layout/activity_projetos.xml create mode 100644 app/src/main/res/layout/fragment_lista_projetos.xml create mode 100644 app/src/main/res/layout/item_projeto.xml create mode 100644 app/src/main/res/menu/menu_projetos.xml diff --git a/app/app.iml b/app/app.iml index c2705ee..283266b 100644 --- a/app/app.iml +++ b/app/app.iml @@ -1,5 +1,5 @@ - + @@ -70,11 +70,17 @@ + + + + + + @@ -93,14 +99,21 @@ - - - + + - + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 208ea7e..eae867a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,4 +1,19 @@ +buildscript { + repositories { + maven { url 'https://maven.fabric.io/public' } + } + + dependencies { + classpath 'io.fabric.tools:gradle:1.+' + } +} apply plugin: 'com.android.application' +apply plugin: 'io.fabric' + +repositories { + maven { url 'https://maven.fabric.io/public' } +} + android { compileSdkVersion 22 @@ -8,8 +23,8 @@ android { applicationId "com.monitorabrasil.monitoramunicipio" minSdkVersion 15 targetSdkVersion 22 - versionCode 1 - versionName "1.0" + versionCode 2 + versionName "0.2" } buildTypes { release { @@ -23,6 +38,7 @@ dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.android.support:recyclerview-v7:21.0.3' + compile 'com.android.support:cardview-v7:22.2.0' compile 'com.android.support:design:22.2.0' @@ -32,4 +48,8 @@ dependencies { compile 'com.parse.bolts:bolts-android:1.+' compile fileTree(dir: 'libs', include: 'Parse-*.jar') compile 'com.google.code.gson:gson:2.3.1' + compile 'com.github.PhilJay:MPAndroidChart:v2.1.0' + compile('com.crashlytics.sdk.android:crashlytics:2.4.0@aar') { + transitive = true; + } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dbc5c4b..d3a1ad2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,11 +7,11 @@ + android:theme="@style/Theme.MyTheme" > @@ -24,6 +24,28 @@ + + + + + + + + + { + + 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 classificacao; + public TextView data; + public TextView autor; + public TextView descricao; + public Button btnConcordo; + public Button btnDiscordo; + 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); + descricao = (TextView) v.findViewById(R.id.descricao); + btnConcordo = (Button) v.findViewById(R.id.btnConcordo); + btnDiscordo = (Button) v.findViewById(R.id.btnDiscordo); + + itemView.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + if(mRecyclerViewOnClickListenerHack != null){ + mRecyclerViewOnClickListenerHack.onClickListener(v, getPosition()); + } + } + } + + public ProjetoAdapter(List myDataset) { + mDataset = myDataset; + } + + @Override + public ProjetoAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { + // create a new view + View v = LayoutInflater.from(viewGroup.getContext()) + .inflate(R.layout.item_projeto, viewGroup, false); + // set the view's size, margins, paddings and layout parameter + ViewHolder vh = new ViewHolder(v); + return vh; + } + + @Override + public void onBindViewHolder(final ViewHolder viewHolder, int i) { + ParseObject projeto = mDataset.get(i); + viewHolder.classificacao.setText(projeto.get("classificacao").toString()); + viewHolder.data.setText(projeto.get("data").toString()); + viewHolder.descricao.setText(projeto.get("descricao").toString()); + ParseObject autor = (ParseObject) projeto.get("politico"); + try { + autor.fetchFromLocalDatastore(); + viewHolder.autor.setText(autor.get("nome").toString()); + } catch (ParseException e) { + e.printStackTrace(); + } + + viewHolder.btnConcordo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Snackbar.make(v, "Voto registrado para "+viewHolder.classificacao.getText().toString(), Snackbar.LENGTH_LONG) + .setAction("Action", null).show(); + } + }); + + viewHolder.btnDiscordo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Snackbar.make(v, "Voto registrado para "+viewHolder.classificacao.getText().toString(), Snackbar.LENGTH_LONG) + .setAction("Action", null).show(); + } + }); + } + + public void setRecyclerViewOnClickListenerHack(RecyclerViewOnClickListenerHack r){ + mRecyclerViewOnClickListenerHack = r; + } + + @Override + public int getItemCount() { + return mDataset.size(); + } +} diff --git a/app/src/main/java/com/monitorabrasil/monitoralegislativo/adapters/VereadorAdapter.java b/app/src/main/java/com/monitorabrasil/monitoralegislativo/adapters/VereadorAdapter.java index ef2b4c4..831d645 100644 --- a/app/src/main/java/com/monitorabrasil/monitoralegislativo/adapters/VereadorAdapter.java +++ b/app/src/main/java/com/monitorabrasil/monitoralegislativo/adapters/VereadorAdapter.java @@ -63,6 +63,7 @@ public class VereadorAdapter extends RecyclerView.Adapter ob; + private ProgressBar pb; @Override public View onCreateView(LayoutInflater inflater, @@ -38,6 +39,9 @@ public class ListaPoliticoFragment extends Fragment implements RecyclerViewOnCli Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_list_politico, container, false); + pb = (ProgressBar) view.findViewById(R.id.progressBar); + + //tableview mRecyclerView = (RecyclerView) view.findViewById(R.id.my_recycler_view); @@ -79,6 +83,7 @@ public class ListaPoliticoFragment extends Fragment implements RecyclerViewOnCli mAdapter = new VereadorAdapter(list); mAdapter.setRecyclerViewOnClickListenerHack(this); mRecyclerView.setAdapter(mAdapter); + pb.setVisibility(View.INVISIBLE); } diff --git a/app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/ListaProjetosFragment.java b/app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/ListaProjetosFragment.java new file mode 100644 index 0000000..54abc8a --- /dev/null +++ b/app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/ListaProjetosFragment.java @@ -0,0 +1,108 @@ +package com.monitorabrasil.monitoralegislativo.fragments; + + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; +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.monitoralegislativo.R; +import com.monitorabrasil.monitoralegislativo.adapters.ProjetoAdapter; +import com.monitorabrasil.monitoralegislativo.adapters.VereadorAdapter; +import com.monitorabrasil.monitoralegislativo.interfaces.RecyclerViewOnClickListenerHack; +import com.parse.FindCallback; +import com.parse.ParseException; +import com.parse.ParseObject; +import com.parse.ParseQuery; + +import java.util.List; + +/** + * A simple {@link Fragment} subclass. + */ +public class ListaProjetosFragment extends Fragment implements RecyclerViewOnClickListenerHack { + + private RecyclerView mRecyclerView; + private ProjetoAdapter mAdapter; + private List ob; + private ProgressBar pb; + public ListaProjetosFragment() { + // Required empty public constructor + } + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + View view = inflater.inflate(R.layout.fragment_lista_projetos, container, false); + + 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); + + LinearLayoutManager llm = new LinearLayoutManager(getActivity()); + llm.setOrientation(LinearLayoutManager.VERTICAL); + mRecyclerView.setLayoutManager(llm); + + buscaProjetos(); + return view; + } + + public void buscaProjetos(){ + ParseQuery query = ParseQuery.getQuery("Projeto"); + query.addDescendingOrder("createdAt"); + //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 ProjetoAdapter(list); + mAdapter.setRecyclerViewOnClickListenerHack(this); + mRecyclerView.setAdapter(mAdapter); + pb.setVisibility(View.INVISIBLE); + } + + @Override + public void onClickListener(View view, int position) { + + + PoliticoFragment frag = new PoliticoFragment(); + Bundle bundle = new Bundle(); + try { + ob.get(position).pin(); + } catch (ParseException e) { + e.printStackTrace(); + } + bundle.putString("politico", ob.get(position).getObjectId()); + frag.setArguments(bundle); + FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); + ft.replace(R.id.rl_fragment_container, frag, "politicoFrag"); + ft.addToBackStack(null); + ft.commit(); + } + +} diff --git a/app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/PoliticoFragment.java b/app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/PoliticoFragment.java index ee944cd..5e27489 100644 --- a/app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/PoliticoFragment.java +++ b/app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/PoliticoFragment.java @@ -2,9 +2,17 @@ package com.monitorabrasil.monitoralegislativo.fragments; import android.app.ActionBar; import android.os.Bundle; +import android.support.design.widget.FloatingActionButton; +import android.support.design.widget.Snackbar; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.app.FragmentTransaction; +import android.support.v4.view.ViewPager; +import android.support.v4.widget.DrawerLayout; +import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,45 +20,86 @@ import android.widget.TableLayout; import android.widget.TextView; import com.google.gson.Gson; +import com.monitorabrasil.monitoralegislativo.PoliticosActivity; import com.monitorabrasil.monitoralegislativo.R; import com.parse.GetCallback; import com.parse.ParseObject; import com.parse.ParseQuery; import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; /** * Created by geraugu on 6/10/15. */ public class PoliticoFragment extends Fragment { + + private DrawerLayout mDrawerLayout; + private ParseObject politico; + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_politico_detalhe, container, false); + View view = inflater.inflate(R.layout.fragment_politico_tabs, container, false); //TABS final ActionBar actionBar = getActivity().getActionBar(); // Create a tab listener that is called when the user changes tabs. - TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabLayout); - tabLayout.addTab(tabLayout.newTab().setText("Ficha")); - tabLayout.addTab(tabLayout.newTab().setText("Gastos")); + ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewpager); + if (viewPager != null) { + setupViewPager(viewPager); + } + + FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab); + fab.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Snackbar.make(view, "Here's a Snackbar", Snackbar.LENGTH_LONG) + .setAction("Action", null).show(); + } + }); + + TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs); + tabLayout.setupWithViewPager(viewPager); + + + // getActivity() .setSupportActionBar(toolbar); + +// TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabLayout); +// tabLayout.addTab(tabLayout.newTab().setText("Ficha")); +// tabLayout.addTab(tabLayout.newTab().setText("Gastos")); Bundle bundle = getArguments(); - ParseObject politico = buscaPolitico(bundle.getString("politico")) ; + politico = buscaPolitico(bundle.getString("politico")) ; + - TextView txtNome = (TextView) view.findViewById(R.id.txtNome); - txtNome.setText(politico.get("nome").toString()); + // TextView txtNome = (TextView) view.findViewById(R.id.txtNome); + // txtNome.setText(politico.get("nome").toString()); return view; } + private void setupViewPager(ViewPager viewPager) { + Adapter adapter = new Adapter(getActivity().getSupportFragmentManager()); + PoliticoFichaFragment ficha = new PoliticoFichaFragment(); + ficha.setArguments(getArguments()); + adapter.addFragment(ficha, "Ficha"); + GastosFragment gastos = new GastosFragment(); + gastos.setArguments(getArguments()); + adapter.addFragment(gastos, "Gastos"); + //adapter.addFragment(new CheeseListFragment(), "Category 3"); + viewPager.setAdapter(adapter); + viewPager.getAdapter().notifyDataSetChanged(); + } + private ParseObject buscaPolitico(String id) { ParseQuery query = ParseQuery.getQuery("Politico"); @@ -63,6 +112,36 @@ public class PoliticoFragment extends Fragment { return null; } + static class Adapter extends FragmentStatePagerAdapter { + private final List mFragments = new ArrayList<>(); + private final List mFragmentTitles = new ArrayList<>(); + + public Adapter(FragmentManager fm) { + super(fm); + } + + public void addFragment(Fragment fragment, String title) { + mFragments.add(fragment); + mFragmentTitles.add(title); + } + + @Override + public Fragment getItem(int position) { + + return mFragments.get(position); + } + + + @Override + public int getCount() { + return mFragments.size(); + } + + @Override + public CharSequence getPageTitle(int position) { + return mFragmentTitles.get(position); + } + } diff --git a/app/src/main/res/layout/activity_politicos.xml b/app/src/main/res/layout/activity_politicos.xml index 516da88..b17ecd0 100644 --- a/app/src/main/res/layout/activity_politicos.xml +++ b/app/src/main/res/layout/activity_politicos.xml @@ -10,12 +10,9 @@ diff --git a/app/src/main/res/layout/activity_projetos.xml b/app/src/main/res/layout/activity_projetos.xml new file mode 100644 index 0000000..59270da --- /dev/null +++ b/app/src/main/res/layout/activity_projetos.xml @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/app/src/main/res/layout/fragment_list_politico.xml b/app/src/main/res/layout/fragment_list_politico.xml index 2fc77b0..9d8e094 100644 --- a/app/src/main/res/layout/fragment_list_politico.xml +++ b/app/src/main/res/layout/fragment_list_politico.xml @@ -10,4 +10,11 @@ android:layout_width="match_parent" android:layout_height="match_parent"/> + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_lista_projetos.xml b/app/src/main/res/layout/fragment_lista_projetos.xml new file mode 100644 index 0000000..9d8e094 --- /dev/null +++ b/app/src/main/res/layout/fragment_lista_projetos.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_politico_detalhe.xml b/app/src/main/res/layout/fragment_politico_detalhe.xml index b6790d9..3d017b9 100644 --- a/app/src/main/res/layout/fragment_politico_detalhe.xml +++ b/app/src/main/res/layout/fragment_politico_detalhe.xml @@ -4,20 +4,15 @@ android:layout_height="match_parent" android:paddingLeft="@dimen/activity_vertical_margin" android:paddingTop="5dp"> - - + android:src="@drawable/person_1" + android:layout_marginTop="60dp" /> + android:id="@+id/txtPartido" /> + android:id="@+id/txtTelefone" /> + android:id="@+id/email" /> + android:id="@+id/facebook" /> + android:id="@+id/gastos" /> + android:id="@+id/bens" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_projeto.xml b/app/src/main/res/layout/item_projeto.xml new file mode 100644 index 0000000..f6cd87a --- /dev/null +++ b/app/src/main/res/layout/item_projeto.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + +