Commit 2072b1478b20b873519682be72bd21087e8ae398

Authored by geraldo morais
1 parent 540bb41c
Exists in master

iniciando os modulos de projetos e da camara

app/app.iml
1 1 <?xml version="1.0" encoding="UTF-8"?>
2   -<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="MonitoraMunicipio" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
  2 +<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="monitoraLegislativo" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
3 3 <component name="FacetManager">
4 4 <facet type="android-gradle" name="Android-Gradle">
5 5 <configuration>
... ... @@ -70,11 +70,17 @@
70 70 <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
71 71 <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
72 72 <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.2.0/jars" />
  73 + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/cardview-v7/22.2.0/jars" />
73 74 <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/design/22.2.0/jars" />
74 75 <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/21.0.3/jars" />
75 76 <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/22.2.0/jars" />
  77 + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.crashlytics.sdk.android/answers/1.2.2/jars" />
  78 + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.crashlytics.sdk.android/beta/1.1.3/jars" />
  79 + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.crashlytics.sdk.android/crashlytics-core/2.3.3/jars" />
  80 + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.crashlytics.sdk.android/crashlytics/2.4.0/jars" />
76 81 <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.mikepenz/iconics/1.0.2/jars" />
77 82 <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.mikepenz/materialdrawer/3.0.6/jars" />
  83 + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/io.fabric.sdk.android/fabric/1.3.4/jars" />
78 84 <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
79 85 <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
80 86 <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
... ... @@ -93,14 +99,21 @@
93 99 <orderEntry type="jdk" jdkName="Android API 22 Platform" jdkType="Android SDK" />
94 100 <orderEntry type="sourceFolder" forTests="false" />
95 101 <orderEntry type="library" exported="" name="gson-2.3.1" level="project" />
96   - <orderEntry type="library" exported="" name="design-22.2.0" level="project" />
97 102 <orderEntry type="library" exported="" name="iconics-1.0.2" level="project" />
98   - <orderEntry type="library" exported="" name="support-v4-22.2.0" level="project" />
99   - <orderEntry type="library" exported="" name="Parse-1.9.2" level="project" />
  103 + <orderEntry type="library" exported="" name="fabric-1.3.4" level="project" />
  104 + <orderEntry type="library" exported="" name="beta-1.1.3" level="project" />
100 105 <orderEntry type="library" exported="" name="support-annotations-22.2.0" level="project" />
101   - <orderEntry type="library" exported="" name="bolts-android-1.2.0" level="project" />
  106 + <orderEntry type="library" exported="" name="support-v4-22.2.0" level="project" />
  107 + <orderEntry type="library" exported="" name="crashlytics-core-2.3.3" level="project" />
102 108 <orderEntry type="library" exported="" name="materialdrawer-3.0.6" level="project" />
103 109 <orderEntry type="library" exported="" name="appcompat-v7-22.2.0" level="project" />
  110 + <orderEntry type="library" exported="" name="crashlytics-2.4.0" level="project" />
  111 + <orderEntry type="library" exported="" name="Parse-1.9.2" level="project" />
104 112 <orderEntry type="library" exported="" name="recyclerview-v7-21.0.3" level="project" />
  113 + <orderEntry type="library" exported="" name="MPAndroidChart-v2.1.0" level="project" />
  114 + <orderEntry type="library" exported="" name="bolts-android-1.2.0" level="project" />
  115 + <orderEntry type="library" exported="" name="design-22.2.0" level="project" />
  116 + <orderEntry type="library" exported="" name="answers-1.2.2" level="project" />
  117 + <orderEntry type="library" exported="" name="cardview-v7-22.2.0" level="project" />
105 118 </component>
106 119 </module>
107 120 \ No newline at end of file
... ...
app/build.gradle
  1 +buildscript {
  2 + repositories {
  3 + maven { url 'https://maven.fabric.io/public' }
  4 + }
  5 +
  6 + dependencies {
  7 + classpath 'io.fabric.tools:gradle:1.+'
  8 + }
  9 +}
1 10 apply plugin: 'com.android.application'
  11 +apply plugin: 'io.fabric'
  12 +
  13 +repositories {
  14 + maven { url 'https://maven.fabric.io/public' }
  15 +}
  16 +
2 17  
3 18 android {
4 19 compileSdkVersion 22
... ... @@ -8,8 +23,8 @@ android {
8 23 applicationId "com.monitorabrasil.monitoramunicipio"
9 24 minSdkVersion 15
10 25 targetSdkVersion 22
11   - versionCode 1
12   - versionName "1.0"
  26 + versionCode 2
  27 + versionName "0.2"
13 28 }
14 29 buildTypes {
15 30 release {
... ... @@ -23,6 +38,7 @@ dependencies {
23 38 compile fileTree(dir: 'libs', include: ['*.jar'])
24 39 compile 'com.android.support:appcompat-v7:22.2.0'
25 40 compile 'com.android.support:recyclerview-v7:21.0.3'
  41 + compile 'com.android.support:cardview-v7:22.2.0'
26 42 compile 'com.android.support:design:22.2.0'
27 43  
28 44  
... ... @@ -32,4 +48,8 @@ dependencies {
32 48 compile 'com.parse.bolts:bolts-android:1.+'
33 49 compile fileTree(dir: 'libs', include: 'Parse-*.jar')
34 50 compile 'com.google.code.gson:gson:2.3.1'
  51 + compile 'com.github.PhilJay:MPAndroidChart:v2.1.0'
  52 + compile('com.crashlytics.sdk.android:crashlytics:2.4.0@aar') {
  53 + transitive = true;
  54 + }
35 55 }
... ...
app/src/main/AndroidManifest.xml
... ... @@ -7,11 +7,11 @@
7 7 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
8 8  
9 9 <application
  10 + android:name=".application.MyApp"
10 11 android:allowBackup="true"
11 12 android:icon="@mipmap/ic_launcher"
12 13 android:label="@string/app_name"
13   - android:theme="@style/Theme.MyTheme"
14   - android:name=".application.MyApp">
  14 + android:theme="@style/Theme.MyTheme" >
15 15 <activity
16 16 android:name=".MainActivity"
17 17 android:label="@string/app_name" >
... ... @@ -24,6 +24,28 @@
24 24 <activity
25 25 android:name=".PoliticosActivity"
26 26 android:label="@string/title_activity_politicos"
  27 + android:parentActivityName=".MainActivity"
  28 + android:theme="@style/Theme.MyTheme" >
  29 + <meta-data
  30 + android:name="android.support.PARENT_ACTIVITY"
  31 + android:value="com.monitorabrasil.monitoralegislativo.MainActivity" />
  32 + </activity>
  33 +
  34 + <meta-data
  35 + android:name="io.fabric.ApiKey"
  36 + android:value="fb370c047719aaf76293ffecd977d8476584bbee" />
  37 +
  38 + <activity
  39 + android:name=".CamaraActivity"
  40 + android:label="@string/title_activity_camara"
  41 + android:parentActivityName=".MainActivity" >
  42 + <meta-data
  43 + android:name="android.support.PARENT_ACTIVITY"
  44 + android:value="com.monitorabrasil.monitoralegislativo.MainActivity" />
  45 + </activity>
  46 + <activity
  47 + android:name=".ProjetosActivity"
  48 + android:label="@string/title_activity_projetos"
27 49 android:parentActivityName=".MainActivity" >
28 50 <meta-data
29 51 android:name="android.support.PARENT_ACTIVITY"
... ...
app/src/main/java/com/monitorabrasil/monitoralegislativo/MainActivity.java
... ... @@ -132,11 +132,19 @@ public class MainActivity extends AppCompatActivity implements HomeFragment.OnFr
132 132 }
133 133 break;
134 134  
  135 +
135 136 case 2:
136 137 startActivity(new Intent(getApplicationContext(), PoliticosActivity.class));
  138 + break;
137 139  
  140 + case 3:
  141 + startActivity(new Intent(getApplicationContext(),ProjetosActivity.class));
  142 + break;
138 143  
  144 + case 4:
  145 + startActivity(new Intent(getApplicationContext(), CamaraActivity.class));
139 146 break;
  147 +
140 148 }
141 149 navigationDrawerLeft.closeDrawer();
142 150  
... ...
app/src/main/java/com/monitorabrasil/monitoralegislativo/PoliticosActivity.java
... ... @@ -32,6 +32,9 @@ public class PoliticosActivity extends AppCompatActivity {
32 32 // toolbar.setNavigationIcon(R.drawable.ic_good);
33 33 toolbar.setTitle("Vereadores");
34 34 toolbar.setSubtitle("Ouro Branco - MG");
  35 +
  36 + toolbar.setTitleTextColor(getResources().getColor(R.color.md_white_1000));
  37 + toolbar.setSubtitleTextColor(getResources().getColor(R.color.md_white_1000));
35 38 setSupportActionBar(toolbar);
36 39 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
37 40 // toolbar.setLogo(R.drawable.ic_launcher);
... ... @@ -41,7 +44,7 @@ public class PoliticosActivity extends AppCompatActivity {
41 44 @Override
42 45 public boolean onCreateOptionsMenu(Menu menu) {
43 46 // Inflate the menu; this adds items to the action bar if it is present.
44   - getMenuInflater().inflate(R.menu.menu_politicos, menu);
  47 +// getMenuInflater().inflate(R.menu.menu_politicos, menu);
45 48 return true;
46 49 }
47 50  
... ...
app/src/main/java/com/monitorabrasil/monitoralegislativo/ProjetosActivity.java 0 → 100644
... ... @@ -0,0 +1,62 @@
  1 +package com.monitorabrasil.monitoralegislativo;
  2 +
  3 +import android.support.v4.app.FragmentTransaction;
  4 +import android.support.v7.app.ActionBarActivity;
  5 +import android.os.Bundle;
  6 +import android.support.v7.widget.Toolbar;
  7 +import android.view.Menu;
  8 +import android.view.MenuItem;
  9 +
  10 +import com.monitorabrasil.monitoralegislativo.R;
  11 +import com.monitorabrasil.monitoralegislativo.fragments.ListaPoliticoFragment;
  12 +import com.monitorabrasil.monitoralegislativo.fragments.ListaProjetosFragment;
  13 +
  14 +public class ProjetosActivity extends ActionBarActivity {
  15 +
  16 + @Override
  17 + protected void onCreate(Bundle savedInstanceState) {
  18 + super.onCreate(savedInstanceState);
  19 + setContentView(R.layout.activity_projetos);
  20 + ListaProjetosFragment frag = (ListaProjetosFragment) getSupportFragmentManager().findFragmentByTag("listaProjFrag");
  21 + if(frag == null) {
  22 + frag = new ListaProjetosFragment();
  23 + FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
  24 + ft.replace(R.id.rl_fragment_container, frag, "listaProjFrag");
  25 + ft.commit();
  26 + }
  27 +
  28 + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  29 + setSupportActionBar(toolbar);
  30 +
  31 + // toolbar.setNavigationIcon(R.drawable.ic_good);
  32 + toolbar.setTitle("Projetos");
  33 + toolbar.setSubtitle("Ouro Branco - MG");
  34 +
  35 + toolbar.setTitleTextColor(getResources().getColor(R.color.md_white_1000));
  36 + toolbar.setSubtitleTextColor(getResources().getColor(R.color.md_white_1000));
  37 + setSupportActionBar(toolbar);
  38 + getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  39 + }
  40 +
  41 + @Override
  42 + public boolean onCreateOptionsMenu(Menu menu) {
  43 + // Inflate the menu; this adds items to the action bar if it is present.
  44 + getMenuInflater().inflate(R.menu.menu_projetos, menu);
  45 + return true;
  46 + }
  47 +
  48 + @Override
  49 + public boolean onOptionsItemSelected(MenuItem item) {
  50 + // Handle action bar item clicks here. The action bar will
  51 + // automatically handle clicks on the Home/Up button, so long
  52 + // as you specify a parent activity in AndroidManifest.xml.
  53 + int id = item.getItemId();
  54 +
  55 + //noinspection SimplifiableIfStatement
  56 + if (id == R.id.action_settings) {
  57 + return true;
  58 + }
  59 +
  60 + return super.onOptionsItemSelected(item);
  61 + }
  62 +}
... ...
app/src/main/java/com/monitorabrasil/monitoralegislativo/adapters/ProjetoAdapter.java 0 → 100644
... ... @@ -0,0 +1,112 @@
  1 +package com.monitorabrasil.monitoralegislativo.adapters;
  2 +
  3 +import android.support.design.widget.Snackbar;
  4 +import android.support.v7.widget.RecyclerView;
  5 +import android.view.LayoutInflater;
  6 +import android.view.View;
  7 +import android.view.ViewGroup;
  8 +import android.widget.Button;
  9 +import android.widget.TextView;
  10 +
  11 +import com.monitorabrasil.monitoralegislativo.R;
  12 +import com.monitorabrasil.monitoralegislativo.interfaces.RecyclerViewOnClickListenerHack;
  13 +import com.parse.ParseException;
  14 +import com.parse.ParseObject;
  15 +
  16 +import org.w3c.dom.Text;
  17 +
  18 +import java.util.List;
  19 +
  20 +/**
  21 + * Created by geral_000 on 25/06/2015.
  22 + */
  23 +public class ProjetoAdapter extends RecyclerView.Adapter<ProjetoAdapter.ViewHolder> {
  24 +
  25 + private List<ParseObject> mDataset;
  26 + private RecyclerViewOnClickListenerHack mRecyclerViewOnClickListenerHack;
  27 +
  28 + // Provide a reference to the views for each data item
  29 + // Complex data items may need more than one view per item, and
  30 + // you provide access to all the views for a data item in a view holder
  31 + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
  32 + // each data item is just a string in this case
  33 + public TextView classificacao;
  34 + public TextView data;
  35 + public TextView autor;
  36 + public TextView descricao;
  37 + public Button btnConcordo;
  38 + public Button btnDiscordo;
  39 + public ViewHolder(View v) {
  40 + super(v);
  41 + classificacao = (TextView) v.findViewById(R.id.classificacao);
  42 + data = (TextView) v.findViewById(R.id.data);
  43 + autor = (TextView) v.findViewById(R.id.autor);
  44 + descricao = (TextView) v.findViewById(R.id.descricao);
  45 + btnConcordo = (Button) v.findViewById(R.id.btnConcordo);
  46 + btnDiscordo = (Button) v.findViewById(R.id.btnDiscordo);
  47 +
  48 + itemView.setOnClickListener(this);
  49 + }
  50 +
  51 + @Override
  52 + public void onClick(View v) {
  53 + if(mRecyclerViewOnClickListenerHack != null){
  54 + mRecyclerViewOnClickListenerHack.onClickListener(v, getPosition());
  55 + }
  56 + }
  57 + }
  58 +
  59 + public ProjetoAdapter(List<ParseObject> myDataset) {
  60 + mDataset = myDataset;
  61 + }
  62 +
  63 + @Override
  64 + public ProjetoAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
  65 + // create a new view
  66 + View v = LayoutInflater.from(viewGroup.getContext())
  67 + .inflate(R.layout.item_projeto, viewGroup, false);
  68 + // set the view's size, margins, paddings and layout parameter
  69 + ViewHolder vh = new ViewHolder(v);
  70 + return vh;
  71 + }
  72 +
  73 + @Override
  74 + public void onBindViewHolder(final ViewHolder viewHolder, int i) {
  75 + ParseObject projeto = mDataset.get(i);
  76 + viewHolder.classificacao.setText(projeto.get("classificacao").toString());
  77 + viewHolder.data.setText(projeto.get("data").toString());
  78 + viewHolder.descricao.setText(projeto.get("descricao").toString());
  79 + ParseObject autor = (ParseObject) projeto.get("politico");
  80 + try {
  81 + autor.fetchFromLocalDatastore();
  82 + viewHolder.autor.setText(autor.get("nome").toString());
  83 + } catch (ParseException e) {
  84 + e.printStackTrace();
  85 + }
  86 +
  87 + viewHolder.btnConcordo.setOnClickListener(new View.OnClickListener() {
  88 + @Override
  89 + public void onClick(View v) {
  90 + Snackbar.make(v, "Voto registrado para "+viewHolder.classificacao.getText().toString(), Snackbar.LENGTH_LONG)
  91 + .setAction("Action", null).show();
  92 + }
  93 + });
  94 +
  95 + viewHolder.btnDiscordo.setOnClickListener(new View.OnClickListener() {
  96 + @Override
  97 + public void onClick(View v) {
  98 + Snackbar.make(v, "Voto registrado para "+viewHolder.classificacao.getText().toString(), Snackbar.LENGTH_LONG)
  99 + .setAction("Action", null).show();
  100 + }
  101 + });
  102 + }
  103 +
  104 + public void setRecyclerViewOnClickListenerHack(RecyclerViewOnClickListenerHack r){
  105 + mRecyclerViewOnClickListenerHack = r;
  106 + }
  107 +
  108 + @Override
  109 + public int getItemCount() {
  110 + return mDataset.size();
  111 + }
  112 +}
... ...
app/src/main/java/com/monitorabrasil/monitoralegislativo/adapters/VereadorAdapter.java
... ... @@ -63,6 +63,7 @@ public class VereadorAdapter extends RecyclerView.Adapter&lt;VereadorAdapter.ViewHo
63 63 @Override
64 64 public void onBindViewHolder(VereadorAdapter.ViewHolder viewHolder, int i) {
65 65 ParseObject vereador = mDataset.get(i);
  66 + vereador.pinInBackground();
66 67 viewHolder.mTextView.setText(vereador.get("nome").toString());
67 68 viewHolder.txtPartido.setText(vereador.get("partido").toString());
68 69 }
... ...
app/src/main/java/com/monitorabrasil/monitoralegislativo/application/MyApp.java
... ... @@ -4,6 +4,8 @@ import android.app.Application;
4 4 import android.os.Bundle;
5 5  
6 6 import com.parse.Parse;
  7 +import com.crashlytics.android.Crashlytics;
  8 +import io.fabric.sdk.android.Fabric;
7 9  
8 10 /**
9 11 * Created by geraugu on 6/10/15.
... ... @@ -13,9 +15,14 @@ public class MyApp extends Application {
13 15 @Override
14 16 public void onCreate() {
15 17 super.onCreate();
  18 + Fabric.with(this, new Crashlytics());
16 19 // Enable Local Datastore.
17 20  
18 21 Parse.enableLocalDatastore(this);
19 22 Parse.initialize(this, "pcGL19NalihMwcHaKnTuYpLkQU4ndrCH2Yxx9von", "tdWwopcuTXJ2ysxZW7pc9ZcZQCmqPSWwSokzCEzl");
20 23 }
  24 +
  25 + public String getCidade(){
  26 + return "Ouro Branco - MG";
  27 + }
21 28 }
... ...
app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/ListaPoliticoFragment.java
... ... @@ -9,6 +9,7 @@ import android.util.Log;
9 9 import android.view.LayoutInflater;
10 10 import android.view.View;
11 11 import android.view.ViewGroup;
  12 +import android.widget.ProgressBar;
12 13 import android.widget.Toast;
13 14  
14 15 import com.google.gson.Gson;
... ... @@ -29,8 +30,8 @@ public class ListaPoliticoFragment extends Fragment implements RecyclerViewOnCli
29 30  
30 31 private RecyclerView mRecyclerView;
31 32 private VereadorAdapter mAdapter;
32   - private RecyclerView.LayoutManager mLayoutManager;
33 33 private List<ParseObject> ob;
  34 + private ProgressBar pb;
34 35  
35 36 @Override
36 37 public View onCreateView(LayoutInflater inflater,
... ... @@ -38,6 +39,9 @@ public class ListaPoliticoFragment extends Fragment implements RecyclerViewOnCli
38 39 Bundle savedInstanceState) {
39 40 View view = inflater.inflate(R.layout.fragment_list_politico, container, false);
40 41  
  42 + pb = (ProgressBar) view.findViewById(R.id.progressBar);
  43 +
  44 +
41 45 //tableview
42 46 mRecyclerView = (RecyclerView) view.findViewById(R.id.my_recycler_view);
43 47  
... ... @@ -79,6 +83,7 @@ public class ListaPoliticoFragment extends Fragment implements RecyclerViewOnCli
79 83 mAdapter = new VereadorAdapter(list);
80 84 mAdapter.setRecyclerViewOnClickListenerHack(this);
81 85 mRecyclerView.setAdapter(mAdapter);
  86 + pb.setVisibility(View.INVISIBLE);
82 87 }
83 88  
84 89  
... ...
app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/ListaProjetosFragment.java 0 → 100644
... ... @@ -0,0 +1,108 @@
  1 +package com.monitorabrasil.monitoralegislativo.fragments;
  2 +
  3 +
  4 +import android.os.Bundle;
  5 +import android.support.v4.app.Fragment;
  6 +import android.support.v4.app.FragmentTransaction;
  7 +import android.support.v7.widget.LinearLayoutManager;
  8 +import android.support.v7.widget.RecyclerView;
  9 +import android.util.Log;
  10 +import android.view.LayoutInflater;
  11 +import android.view.View;
  12 +import android.view.ViewGroup;
  13 +import android.widget.ProgressBar;
  14 +
  15 +import com.monitorabrasil.monitoralegislativo.R;
  16 +import com.monitorabrasil.monitoralegislativo.adapters.ProjetoAdapter;
  17 +import com.monitorabrasil.monitoralegislativo.adapters.VereadorAdapter;
  18 +import com.monitorabrasil.monitoralegislativo.interfaces.RecyclerViewOnClickListenerHack;
  19 +import com.parse.FindCallback;
  20 +import com.parse.ParseException;
  21 +import com.parse.ParseObject;
  22 +import com.parse.ParseQuery;
  23 +
  24 +import java.util.List;
  25 +
  26 +/**
  27 + * A simple {@link Fragment} subclass.
  28 + */
  29 +public class ListaProjetosFragment extends Fragment implements RecyclerViewOnClickListenerHack {
  30 +
  31 + private RecyclerView mRecyclerView;
  32 + private ProjetoAdapter mAdapter;
  33 + private List<ParseObject> ob;
  34 + private ProgressBar pb;
  35 + public ListaProjetosFragment() {
  36 + // Required empty public constructor
  37 + }
  38 +
  39 +
  40 + @Override
  41 + public View onCreateView(LayoutInflater inflater, ViewGroup container,
  42 + Bundle savedInstanceState) {
  43 + // Inflate the layout for this fragment
  44 + View view = inflater.inflate(R.layout.fragment_lista_projetos, container, false);
  45 +
  46 + pb = (ProgressBar) view.findViewById(R.id.progressBar);
  47 +
  48 +
  49 + //tableview
  50 + mRecyclerView = (RecyclerView) view.findViewById(R.id.my_recycler_view);
  51 +
  52 + // use this setting to improve performance if you know that changes
  53 + // in content do not change the layout size of the RecyclerView
  54 + mRecyclerView.setHasFixedSize(true);
  55 +
  56 + LinearLayoutManager llm = new LinearLayoutManager(getActivity());
  57 + llm.setOrientation(LinearLayoutManager.VERTICAL);
  58 + mRecyclerView.setLayoutManager(llm);
  59 +
  60 + buscaProjetos();
  61 + return view;
  62 + }
  63 +
  64 + public void buscaProjetos(){
  65 + ParseQuery<ParseObject> query = ParseQuery.getQuery("Projeto");
  66 + query.addDescendingOrder("createdAt");
  67 + //query.whereEqualTo("playerName", "Dan Stemkoski");
  68 + query.findInBackground(new FindCallback<ParseObject>() {
  69 + @Override
  70 + public void done(List<ParseObject> list, com.parse.ParseException e) {
  71 + if (e == null) {
  72 + ob = list;
  73 + carregaList(list);
  74 + } else {
  75 + Log.d("score", "Error: " + e.getMessage());
  76 + }
  77 + }
  78 +
  79 +
  80 + });
  81 + }
  82 + public void carregaList(List<ParseObject> list){
  83 + mAdapter = new ProjetoAdapter(list);
  84 + mAdapter.setRecyclerViewOnClickListenerHack(this);
  85 + mRecyclerView.setAdapter(mAdapter);
  86 + pb.setVisibility(View.INVISIBLE);
  87 + }
  88 +
  89 + @Override
  90 + public void onClickListener(View view, int position) {
  91 +
  92 +
  93 + PoliticoFragment frag = new PoliticoFragment();
  94 + Bundle bundle = new Bundle();
  95 + try {
  96 + ob.get(position).pin();
  97 + } catch (ParseException e) {
  98 + e.printStackTrace();
  99 + }
  100 + bundle.putString("politico", ob.get(position).getObjectId());
  101 + frag.setArguments(bundle);
  102 + FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
  103 + ft.replace(R.id.rl_fragment_container, frag, "politicoFrag");
  104 + ft.addToBackStack(null);
  105 + ft.commit();
  106 + }
  107 +
  108 +}
... ...
app/src/main/java/com/monitorabrasil/monitoralegislativo/fragments/PoliticoFragment.java
... ... @@ -2,9 +2,17 @@ package com.monitorabrasil.monitoralegislativo.fragments;
2 2  
3 3 import android.app.ActionBar;
4 4 import android.os.Bundle;
  5 +import android.support.design.widget.FloatingActionButton;
  6 +import android.support.design.widget.Snackbar;
5 7 import android.support.design.widget.TabLayout;
6 8 import android.support.v4.app.Fragment;
  9 +import android.support.v4.app.FragmentManager;
  10 +import android.support.v4.app.FragmentPagerAdapter;
  11 +import android.support.v4.app.FragmentStatePagerAdapter;
7 12 import android.support.v4.app.FragmentTransaction;
  13 +import android.support.v4.view.ViewPager;
  14 +import android.support.v4.widget.DrawerLayout;
  15 +import android.support.v7.widget.Toolbar;
8 16 import android.view.LayoutInflater;
9 17 import android.view.View;
10 18 import android.view.ViewGroup;
... ... @@ -12,45 +20,86 @@ import android.widget.TableLayout;
12 20 import android.widget.TextView;
13 21  
14 22 import com.google.gson.Gson;
  23 +import com.monitorabrasil.monitoralegislativo.PoliticosActivity;
15 24 import com.monitorabrasil.monitoralegislativo.R;
16 25 import com.parse.GetCallback;
17 26 import com.parse.ParseObject;
18 27 import com.parse.ParseQuery;
19 28  
20 29 import java.text.ParseException;
  30 +import java.util.ArrayList;
  31 +import java.util.List;
21 32  
22 33 /**
23 34 * Created by geraugu on 6/10/15.
24 35 */
25 36 public class PoliticoFragment extends Fragment {
26 37  
  38 +
  39 + private DrawerLayout mDrawerLayout;
  40 + private ParseObject politico;
  41 +
27 42 @Override
28 43 public View onCreateView(LayoutInflater inflater,
29 44 ViewGroup container,
30 45 Bundle savedInstanceState) {
31   - View view = inflater.inflate(R.layout.fragment_politico_detalhe, container, false);
  46 + View view = inflater.inflate(R.layout.fragment_politico_tabs, container, false);
32 47  
33 48 //TABS
34 49 final ActionBar actionBar = getActivity().getActionBar();
35 50 // Create a tab listener that is called when the user changes tabs.
36 51  
37   - TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabLayout);
38   - tabLayout.addTab(tabLayout.newTab().setText("Ficha"));
39   - tabLayout.addTab(tabLayout.newTab().setText("Gastos"));
  52 + ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewpager);
  53 + if (viewPager != null) {
  54 + setupViewPager(viewPager);
  55 + }
  56 +
  57 + FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab);
  58 + fab.setOnClickListener(new View.OnClickListener() {
  59 + @Override
  60 + public void onClick(View view) {
  61 + Snackbar.make(view, "Here's a Snackbar", Snackbar.LENGTH_LONG)
  62 + .setAction("Action", null).show();
  63 + }
  64 + });
  65 +
  66 + TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs);
  67 + tabLayout.setupWithViewPager(viewPager);
  68 +
  69 +
  70 + // getActivity() .setSupportActionBar(toolbar);
  71 +
  72 +// TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabLayout);
  73 +// tabLayout.addTab(tabLayout.newTab().setText("Ficha"));
  74 +// tabLayout.addTab(tabLayout.newTab().setText("Gastos"));
40 75  
41 76  
42 77  
43 78 Bundle bundle = getArguments();
44   - ParseObject politico = buscaPolitico(bundle.getString("politico")) ;
  79 + politico = buscaPolitico(bundle.getString("politico")) ;
  80 +
45 81  
46   - TextView txtNome = (TextView) view.findViewById(R.id.txtNome);
47   - txtNome.setText(politico.get("nome").toString());
  82 + // TextView txtNome = (TextView) view.findViewById(R.id.txtNome);
  83 + // txtNome.setText(politico.get("nome").toString());
48 84  
49 85  
50 86  
51 87 return view;
52 88 }
53 89  
  90 + private void setupViewPager(ViewPager viewPager) {
  91 + Adapter adapter = new Adapter(getActivity().getSupportFragmentManager());
  92 + PoliticoFichaFragment ficha = new PoliticoFichaFragment();
  93 + ficha.setArguments(getArguments());
  94 + adapter.addFragment(ficha, "Ficha");
  95 + GastosFragment gastos = new GastosFragment();
  96 + gastos.setArguments(getArguments());
  97 + adapter.addFragment(gastos, "Gastos");
  98 + //adapter.addFragment(new CheeseListFragment(), "Category 3");
  99 + viewPager.setAdapter(adapter);
  100 + viewPager.getAdapter().notifyDataSetChanged();
  101 + }
  102 +
54 103 private ParseObject buscaPolitico(String id) {
55 104  
56 105 ParseQuery<ParseObject> query = ParseQuery.getQuery("Politico");
... ... @@ -63,6 +112,36 @@ public class PoliticoFragment extends Fragment {
63 112 return null;
64 113 }
65 114  
  115 + static class Adapter extends FragmentStatePagerAdapter {
  116 + private final List<Fragment> mFragments = new ArrayList<>();
  117 + private final List<String> mFragmentTitles = new ArrayList<>();
  118 +
  119 + public Adapter(FragmentManager fm) {
  120 + super(fm);
  121 + }
  122 +
  123 + public void addFragment(Fragment fragment, String title) {
  124 + mFragments.add(fragment);
  125 + mFragmentTitles.add(title);
  126 + }
  127 +
  128 + @Override
  129 + public Fragment getItem(int position) {
  130 +
  131 + return mFragments.get(position);
  132 + }
  133 +
  134 +
  135 + @Override
  136 + public int getCount() {
  137 + return mFragments.size();
  138 + }
  139 +
  140 + @Override
  141 + public CharSequence getPageTitle(int position) {
  142 + return mFragmentTitles.get(position);
  143 + }
  144 + }
66 145  
67 146  
68 147  
... ...
app/src/main/res/layout/activity_politicos.xml
... ... @@ -10,12 +10,9 @@
10 10  
11 11 <android.support.v7.widget.Toolbar
12 12 android:id="@+id/toolbar"
13   - android:elevation="0dp"
14 13 android:layout_height="?attr/actionBarSize"
15 14 android:layout_width="match_parent"
16 15 android:minHeight="?attr/actionBarSize"
17   - android:layout_alignParentLeft="true"
18   - android:navigationIcon="@style/DrawerArrowStyle"
19 16 android:background="?attr/colorPrimary"
20 17  
21 18 />
... ...
app/src/main/res/layout/activity_projetos.xml 0 → 100644
... ... @@ -0,0 +1,26 @@
  1 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2 + xmlns:tools="http://schemas.android.com/tools"
  3 + xmlns:app="http://schemas.android.com/apk/res-auto"
  4 + android:layout_width="match_parent"
  5 + android:layout_height="match_parent"
  6 + android:paddingTop="@dimen/activity_horizontal_margin"
  7 + android:background="@color/grey"
  8 + android:orientation="vertical"
  9 + tools:context="com.monitorabrasil.monitoralegislativo.ProjetosActivity">
  10 +
  11 + <android.support.v7.widget.Toolbar
  12 + android:id="@+id/toolbar"
  13 + android:layout_height="?attr/actionBarSize"
  14 + android:layout_width="match_parent"
  15 + android:minHeight="?attr/actionBarSize"
  16 + android:background="?attr/colorPrimary"
  17 +
  18 + />
  19 + <RelativeLayout
  20 + android:id="@+id/rl_fragment_container"
  21 + android:layout_width="match_parent"
  22 + android:layout_height="match_parent">
  23 +
  24 + </RelativeLayout>
  25 +
  26 +</LinearLayout>
... ...
app/src/main/res/layout/fragment_list_politico.xml
... ... @@ -10,4 +10,11 @@
10 10 android:layout_width="match_parent"
11 11 android:layout_height="match_parent"/>
12 12  
  13 + <ProgressBar
  14 + android:layout_width="wrap_content"
  15 + android:layout_height="wrap_content"
  16 + android:id="@+id/progressBar"
  17 + android:layout_gravity="center"
  18 + android:indeterminate="false" />
  19 +
13 20 </FrameLayout>
14 21 \ No newline at end of file
... ...
app/src/main/res/layout/fragment_lista_projetos.xml 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2 + android:layout_width="match_parent"
  3 + android:layout_height="match_parent"
  4 +
  5 + >
  6 +
  7 + <android.support.v7.widget.RecyclerView
  8 + android:id="@+id/my_recycler_view"
  9 + android:scrollbars="vertical"
  10 + android:layout_width="match_parent"
  11 + android:layout_height="match_parent"/>
  12 +
  13 + <ProgressBar
  14 + android:layout_width="wrap_content"
  15 + android:layout_height="wrap_content"
  16 + android:id="@+id/progressBar"
  17 + android:layout_gravity="center"
  18 + android:indeterminate="false" />
  19 +
  20 +</FrameLayout>
0 21 \ No newline at end of file
... ...
app/src/main/res/layout/fragment_politico_detalhe.xml
... ... @@ -4,20 +4,15 @@
4 4 android:layout_height="match_parent"
5 5 android:paddingLeft="@dimen/activity_vertical_margin"
6 6 android:paddingTop="5dp">
7   - <android.support.design.widget.TabLayout
8   - android:layout_width="match_parent"
9   - android:layout_height="30dp"
10   - android:id="@+id/tabLayout"
11   - >
12 7  
13   - </android.support.design.widget.TabLayout>
14 8  
15 9 <ImageView
16 10 android:layout_width="150dp"
17 11 android:layout_height="150dp"
18 12 android:id="@+id/imageView"
19 13 android:layout_gravity="center_horizontal"
20   - android:src="@drawable/person_1" />
  14 + android:src="@drawable/person_1"
  15 + android:layout_marginTop="60dp" />
21 16  
22 17 <TextView
23 18 android:layout_width="wrap_content"
... ... @@ -32,40 +27,40 @@
32 27 android:layout_height="wrap_content"
33 28 android:textAppearance="?android:attr/textAppearanceMedium"
34 29 android:text="Partido"
35   - android:id="@+id/textView2" />
  30 + android:id="@+id/txtPartido" />
36 31  
37 32 <TextView
38 33 android:layout_width="wrap_content"
39 34 android:layout_height="wrap_content"
40 35 android:textAppearance="?android:attr/textAppearanceMedium"
41 36 android:text="Telefone"
42   - android:id="@+id/textView3" />
  37 + android:id="@+id/txtTelefone" />
43 38  
44 39 <TextView
45 40 android:layout_width="wrap_content"
46 41 android:layout_height="wrap_content"
47 42 android:textAppearance="?android:attr/textAppearanceMedium"
48 43 android:text="Email"
49   - android:id="@+id/textView4" />
  44 + android:id="@+id/email" />
50 45  
51 46 <TextView
52 47 android:layout_width="wrap_content"
53 48 android:layout_height="wrap_content"
54 49 android:textAppearance="?android:attr/textAppearanceMedium"
55 50 android:text="Facebook"
56   - android:id="@+id/textView5" />
  51 + android:id="@+id/facebook" />
57 52  
58 53 <TextView
59 54 android:layout_width="wrap_content"
60 55 android:layout_height="wrap_content"
61 56 android:textAppearance="?android:attr/textAppearanceMedium"
62 57 android:text="Gastos na campanha"
63   - android:id="@+id/textView6" />
  58 + android:id="@+id/gastos" />
64 59  
65 60 <TextView
66 61 android:layout_width="wrap_content"
67 62 android:layout_height="wrap_content"
68 63 android:textAppearance="?android:attr/textAppearanceMedium"
69 64 android:text="Bens Declarados"
70   - android:id="@+id/textView7" />
  65 + android:id="@+id/bens" />
71 66 </LinearLayout>
72 67 \ No newline at end of file
... ...
app/src/main/res/layout/item_projeto.xml 0 → 100644
... ... @@ -0,0 +1,77 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:orientation="vertical" android:layout_width="match_parent"
  4 + android:layout_height="match_parent">
  5 +
  6 + <android.support.v7.widget.CardView
  7 + android:layout_width="match_parent"
  8 + android:layout_height="wrap_content"
  9 + android:layout_margin="@dimen/card_margin">
  10 +
  11 + <LinearLayout
  12 + style="@style/Widget.CardContent"
  13 + android:layout_width="match_parent"
  14 + android:layout_height="wrap_content">
  15 +
  16 + <TextView
  17 + android:layout_width="match_parent"
  18 + android:layout_height="wrap_content"
  19 + android:text="Info"
  20 + android:id="@+id/classificacao"
  21 + android:textAppearance="@style/TextAppearance.AppCompat.Title" />
  22 +
  23 + <TextView
  24 + android:layout_width="match_parent"
  25 + android:layout_height="wrap_content"
  26 + android:id="@+id/data"
  27 + android:textAppearance="@style/TextAppearance.AppCompat.Small"
  28 + />
  29 +
  30 + <TextView
  31 + android:layout_width="match_parent"
  32 + android:layout_height="wrap_content"
  33 + android:id="@+id/autor"
  34 + android:textAppearance="@style/TextAppearance.AppCompat.Medium"
  35 + />
  36 +
  37 +
  38 +
  39 + <TextView
  40 + android:layout_width="match_parent"
  41 + android:layout_height="wrap_content"
  42 + android:id="@+id/descricao" />
  43 +
  44 + <LinearLayout
  45 + android:orientation="horizontal"
  46 + android:layout_width="match_parent"
  47 + android:layout_height="match_parent">
  48 +
  49 + <Button
  50 + android:layout_width="match_parent"
  51 + android:layout_height="match_parent"
  52 + android:text="Concordo"
  53 + android:id="@+id/btnConcordo"
  54 +
  55 +
  56 + android:layout_gravity="center_horizontal"
  57 + style="@style/Base.Widget.AppCompat.Button.ButtonBar.AlertDialog"
  58 + android:layout_weight="1" />
  59 +
  60 + <Button
  61 + style="@style/Base.Widget.AppCompat.Button.Borderless.Colored"
  62 + android:layout_width="match_parent"
  63 + android:layout_height="match_parent"
  64 + android:text="Discordo"
  65 + android:id="@+id/btnDiscordo"
  66 + android:layout_gravity="center_horizontal"
  67 + android:layout_weight="1" />
  68 + </LinearLayout>
  69 +
  70 +
  71 + </LinearLayout>
  72 +
  73 + </android.support.v7.widget.CardView>
  74 +
  75 +
  76 +
  77 +</LinearLayout>
0 78 \ No newline at end of file
... ...
app/src/main/res/menu/menu_projetos.xml 0 → 100644
... ... @@ -0,0 +1,7 @@
  1 +<menu xmlns:android="http://schemas.android.com/apk/res/android"
  2 + xmlns:app="http://schemas.android.com/apk/res-auto"
  3 + xmlns:tools="http://schemas.android.com/tools"
  4 + tools:context="com.monitorabrasil.monitoralegislativo.ProjetosActivity">
  5 + <item android:id="@+id/action_settings" android:title="@string/action_settings"
  6 + android:orderInCategory="100" app:showAsAction="never" />
  7 +</menu>
... ...
app/src/main/res/values/dimens.xml
... ... @@ -3,4 +3,8 @@
3 3 <dimen name="activity_horizontal_margin">16dp</dimen>
4 4 <dimen name="activity_vertical_margin">16dp</dimen>
5 5 <dimen name="padding_top_toolbar">0dp</dimen>
  6 + <dimen name="detail_backdrop_height">256dp</dimen>
  7 + <dimen name="card_margin">16dp</dimen>
  8 + <dimen name="fab_margin">16dp</dimen>
  9 + <dimen name="list_item_avatar_size">40dp</dimen>
6 10 </resources>
... ...
app/src/main/res/values/strings.xml
... ... @@ -12,4 +12,6 @@
12 12 <string name="action_transition_activity">Transition</string>
13 13 <string name="title_activity_transition">TransitionActivity</string>
14 14 <string name="title_activity_politicos">PoliticosActivity</string>
  15 + <string name="title_activity_camara">CamaraActivity</string>
  16 + <string name="title_activity_projetos">ProjetosActivity</string>
15 17 </resources>
... ...
app/src/main/res/values/styles.xml
... ... @@ -45,4 +45,12 @@
45 45  
46 46 </style>
47 47  
  48 + <style name="Widget.CardContent" parent="android:Widget">
  49 + <item name="android:paddingLeft">16dp</item>
  50 + <item name="android:paddingRight">16dp</item>
  51 + <item name="android:paddingTop">24dp</item>
  52 + <item name="android:paddingBottom">24dp</item>
  53 + <item name="android:orientation">vertical</item>
  54 + </style>
  55 +
48 56 </resources>
... ...