diff --git a/app/build.gradle b/app/build.gradle
index 3f3710a..15d5bf9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,8 +8,8 @@ android {
applicationId "com.spielpark.steve.bernieapp"
minSdkVersion 14
targetSdkVersion 23
- versionCode 15
- versionName "1.51R"
+ versionCode 18
+ versionName "1.6R"
}
buildTypes {
release {
@@ -23,6 +23,6 @@ dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'se.emilsjolander:StickyScrollViewItems:1.1.0'
- compile 'com.google.android.gms:play-services:7.5.0'
+ compile 'com.google.android.gms:play-services:8.1.0'
compile 'com.squareup.picasso:picasso:2.5.2'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5874307..450480c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -25,6 +25,11 @@
+
+
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/actMainPage.java b/app/src/main/java/com/spielpark/steve/bernieapp/actMainPage.java
index 09e2789..5aa0562 100644
--- a/app/src/main/java/com/spielpark/steve/bernieapp/actMainPage.java
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/actMainPage.java
@@ -1,21 +1,31 @@
package com.spielpark.steve.bernieapp;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
+import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
+import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
+import android.support.v7.widget.ShareActionProvider;
import android.util.Log;
import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
+import com.google.android.gms.appindexing.Action;
+import com.google.android.gms.appindexing.AppIndex;
+import com.google.android.gms.common.api.GoogleApiClient;
import com.spielpark.steve.bernieapp.fragments.BernRateFragment;
import com.spielpark.steve.bernieapp.fragments.ConnectFragment;
+import com.spielpark.steve.bernieapp.fragments.DonateFragment;
import com.spielpark.steve.bernieapp.fragments.FeedbackFragment;
import com.spielpark.steve.bernieapp.fragments.IssuesFragment;
import com.spielpark.steve.bernieapp.fragments.NavigationDrawerFragment;
@@ -36,14 +46,28 @@ public class actMainPage extends ActionBarActivity
private NavigationDrawerFragment mNavigationDrawerFragment;
private static SharedPreferences preferences;
private static Fragment curFrag;
- /**
- * Used to store the last screen title. For use in {@link #restoreActionBar()}.
- */
+
private CharSequence mTitle;
+ private GoogleApiClient client;
+
@Override
protected void onStop() {
super.onStop();
+ Action viewAction = Action.newAction(
+ Action.TYPE_VIEW, // TODO: choose an action type.
+ "actMainPage Page", // TODO: Define a title for the content shown.
+ // TODO: If you have web page content that matches this app activity's content,
+ // make sure this auto-generated web page URL is correct.
+ // Otherwise, set the URL to null.
+ Uri.parse("http://host/path"),
+ // TODO: Make sure this auto-generated app deep link URI is correct.
+ Uri.parse("android-app://com.spielpark.steve.bernieapp/http/host/path")
+ );
+ AppIndex.AppIndexApi.end(client, viewAction);
+ // ATTENTION: This was auto-generated to implement the App Indexing API.
+ // See https://g.co/AppIndexing/AndroidStudio for more information.
+ client.disconnect();
}
@Override
@@ -62,44 +86,50 @@ protected void onCreate(Bundle savedInstanceState) {
mTitle = "News";
preferences = getApplicationContext().getSharedPreferences("bernie_app_prefs", 0);
adjustNavBarText(0);
+ // ATTENTION: This was auto-generated to implement the App Indexing API.
+ // See https://g.co/AppIndexing/AndroidStudio for more information.
+ client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}
@Override
public void onNavigationDrawerItemSelected(int position) {
if (curFrag instanceof ConnectFragment) {
ConnectFragment.cancelTask(); //cancel loading the map.
- Log.d("AMP - ONDIS", "Cancelled loading the map.");
}
// update the main content by replacing fragments
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.popBackStack("base", FragmentManager.POP_BACK_STACK_INCLUSIVE);
Fragment replacement;
- switch(position) {
- case 0 : {
+ switch (position) {
+ case 0: {
replacement = NewsFragment.getInstance();
break;
}
- case 1 : {
+ case 1: {
replacement = IssuesFragment.getInstance();
break;
}
- case 2 : {
+ case 2: {
replacement = OrganizeFragment.getInstance();
break;
}
- case 3 : {
+ case 3: {
replacement = ConnectFragment.getInstance();
break;
}
- case 4 : {
+ case 4: {
replacement = BernRateFragment.getInstance();
break;
}
- case 5 : {
+ case 5: {
+ replacement = DonateFragment.getInstance();
+ break;
+ }
+ case 6: {
replacement = FeedbackFragment.getInstance();
break;
}
- default: {
+ default: {
replacement = NewsFragment.getInstance();
}
}
@@ -132,6 +162,9 @@ public void onSectionAttached(int number) {
case 6:
mTitle = getString(R.string.title_section6);
break;
+ case 7:
+ mTitle = getString(R.string.title_section7);
+ break;
}
}
@@ -142,12 +175,11 @@ public void restoreActionBar() {
actionBar.setTitle(mTitle);
}
-
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!mNavigationDrawerFragment.isDrawerOpen()) {
restoreActionBar();
- return true;
+ //return true;
}
return super.onCreateOptionsMenu(menu);
}
@@ -176,6 +208,7 @@ public void loadEvent(NewsArticle e) {
manager.popBackStack();
}
manager.beginTransaction().addToBackStack("base").replace(R.id.container, f).commit();
+ curFrag = f;
}
public void loadIssue(Issue i) {
@@ -185,6 +218,7 @@ public void loadIssue(Issue i) {
manager.popBackStack();
}
manager.beginTransaction().addToBackStack("base").replace(R.id.container, f).commit();
+ curFrag = f;
}
public SharedPreferences getPrefs() {
@@ -203,7 +237,7 @@ public void loadHeaderArticle(View view) {
}
public void adjustNavBarText(int selected) {
- TextView[] views = new TextView[] {
+ TextView[] views = new TextView[]{
(TextView) findViewById(R.id.newsTxt),
(TextView) findViewById(R.id.issuesTxt),
(TextView) findViewById(R.id.organizeTxt),
@@ -230,4 +264,24 @@ public void switchPage(View view) {
adjustNavBarText(selected);
NavigationDrawerFragment.setSelected(selected);
}
+
+ @Override
+ public void onStart() {
+ super.onStart();
+
+ // ATTENTION: This was auto-generated to implement the App Indexing API.
+ // See https://g.co/AppIndexing/AndroidStudio for more information.
+ client.connect();
+ Action viewAction = Action.newAction(
+ Action.TYPE_VIEW, // TODO: choose an action type.
+ "actMainPage Page", // TODO: Define a title for the content shown.
+ // TODO: If you have web page content that matches this app activity's content,
+ // make sure this auto-generated web page URL is correct.
+ // Otherwise, set the URL to null.
+ Uri.parse("http://host/path"),
+ // TODO: Make sure this auto-generated app deep link URI is correct.
+ Uri.parse("android-app://com.spielpark.steve.bernieapp/http/host/path")
+ );
+ AppIndex.AppIndexApi.start(client, viewAction);
+ }
}
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/BernRateFragment.java b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/BernRateFragment.java
index 5eafcc2..c7bd930 100644
--- a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/BernRateFragment.java
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/BernRateFragment.java
@@ -4,10 +4,13 @@
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
+import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.webkit.WebChromeClient;
+import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
@@ -63,16 +66,18 @@ private String[] generateURLs() {
private void displayWebViews(String[] urls) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
- RelativeLayout.LayoutParams.MATCH_PARENT
+900
);
LinearLayout parent = (LinearLayout) getView().findViewById(R.id.layoutBernRate);
params.setMargins(8, 8, 8, 8);
params.gravity = Gravity.CENTER_HORIZONTAL;
for (String s : urls) {
WebView wv = new WebView(getActivity());
- wv.getSettings().setJavaScriptEnabled(true);
+ WebSettings settings = wv.getSettings();
+ settings.setJavaScriptEnabled(true);
wv.setLayoutParams(params);
- wv.loadData(s, "text/Html", "UTF-8");
+ wv.setWebChromeClient(new WebChromeClient());
+ wv.loadDataWithBaseURL("http://www.bernrate.com", s, "text/html", "UTF-8", null);
parent.addView(wv);
}
}
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/BottomNavFragment.java b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/BottomNavFragment.java
index 3569189..7f442ee 100644
--- a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/BottomNavFragment.java
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/BottomNavFragment.java
@@ -25,11 +25,6 @@ public static BottomNavFragment getInstance() {
}
}
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- }
-
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/ConnectFragment.java b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/ConnectFragment.java
index 02cf42a..56d4df3 100644
--- a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/ConnectFragment.java
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/ConnectFragment.java
@@ -104,6 +104,7 @@ public void onItemClick(AdapterView> adapterView, View view, int i, long l) {
}
});
fetchCountry = true;
+ Toast.makeText(getActivity(), "Only Start Date Listed, Events May End at a Later Date", Toast.LENGTH_LONG).show();
setUpMap();
MapsInitializer.initialize(getActivity().getApplicationContext());
super.onViewCreated(view, savedInstanceState);
@@ -182,7 +183,7 @@ public void onClick(View view) {
((TextView) base.findViewById(R.id.cd_txtDescContent)).setText(Html.fromHtml(e.getDescription()));
((TextView) base.findViewById(R.id.cd_txtDescContent)).setMovementMethod(new ScrollingMovementMethod());
if (e.getVenue_city() != null) ((TextView) base.findViewById(R.id.cd_txtLocation)).setText(e.getVenue_addr() + "\n" + e.getVenue_city() + ", " + e.getState() + " - " + e.getZip());
- if (e.getAttendee_count() != 0) ((TextView) base.findViewById(R.id.cd_txtRSVP)).setText(e.isOfficial() ? "N/A" : Integer.toString(e.getAttendee_count()));
+ ((TextView) base.findViewById(R.id.cd_txtRSVP)).setText(e.isOfficial() ? "N/A" : Integer.toString(e.getAttendee_count()));
Animation fadeIn = AnimationUtils.loadAnimation(getActivity(), alreadyLoaded ? R.anim.view_fade_in_fast : R.anim.view_fade_in);
fadeIn.setAnimationListener(new Animation.AnimationListener() {
@Override
@@ -308,7 +309,7 @@ public void updateViews(ArrayAdapter a) {
if (parent == null) {
return; //We switched out of this view.
}
- ListView list = (ListView) getView().findViewById(R.id.c_listEvents);
+ ListView list = (ListView) parent.findViewById(R.id.c_listEvents);
list.setAdapter(a);
list.setVisibility(View.VISIBLE);
parent.findViewById(R.id.c_mapContainer).setVisibility(View.VISIBLE);
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/DonateFragment.java b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/DonateFragment.java
new file mode 100644
index 0000000..d0e9aa3
--- /dev/null
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/DonateFragment.java
@@ -0,0 +1,50 @@
+package com.spielpark.steve.bernieapp.fragments;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+
+import com.spielpark.steve.bernieapp.R;
+import com.squareup.picasso.Picasso;
+
+/**
+ * Created by Steve on 2/28/2016.
+ */
+public class DonateFragment extends Fragment{
+ private static DonateFragment mInstance;
+
+ public static DonateFragment getInstance() {
+ if (mInstance == null) {
+ mInstance = new DonateFragment();
+ }
+ return mInstance;
+ }
+
+ @Override
+ public void onViewCreated(View view, Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ ImageView thermometer = ((ImageView) view.findViewById(R.id.d_imgThermometer));
+ Picasso.with(getContext()).invalidate("https://secure.actblue.com/x/object/actblue-badges/page/reddit-for-bernie/thermometer/dark.png");
+ Picasso.with(getContext()).load("https://secure.actblue.com/x/object/actblue-badges/page/reddit-for-bernie/thermometer/dark.png").into(thermometer);
+ view.findViewById(R.id.d_btnDonate).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent i = new Intent(Intent.ACTION_VIEW);
+ i.setData(Uri.parse(getResources().getString(R.string.donate_url)));
+ startActivity(i);
+ }
+ });
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.frag_donate, container, false);
+ }
+}
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/NavigationDrawerFragment.java b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/NavigationDrawerFragment.java
index c939f28..4e9a2f3 100644
--- a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/NavigationDrawerFragment.java
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/NavigationDrawerFragment.java
@@ -111,7 +111,8 @@ public void onItemClick(AdapterView> parent, View view, int position, long id)
new NavDrawerItem(R.drawable.ic_people_white_24dp, getString(R.string.title_section3)),
new NavDrawerItem(R.drawable.ic_map_white_24dp, getString(R.string.title_section4)),
new NavDrawerItem(R.drawable.ic_insert_chart_white_24dp, getString(R.string.title_section5)),
- new NavDrawerItem(R.drawable.ic_feedback_white_24dp, getString(R.string.title_section6)),
+ new NavDrawerItem(R.drawable.ic_attach_money_white_24dp, getString(R.string.title_section6)),
+ new NavDrawerItem(R.drawable.ic_feedback_white_24dp, getString(R.string.title_section7)),
};
mDrawerListView.setAdapter(new NavDrawerAdapter(getActivity(), R.layout.list_drawer_item, datas));
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/NewsFragment.java b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/NewsFragment.java
index 761eaaa..d71d0d4 100644
--- a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/NewsFragment.java
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/NewsFragment.java
@@ -39,23 +39,6 @@ public void onViewCreated(final View view, @Nullable Bundle savedInstanceState)
final ListView newsList = (ListView) view.findViewById(R.id.listNews);
((TextView) view.findViewById(R.id.txtSubHeader)).setMovementMethod(new ScrollingMovementMethod());
new NewsTask(getActivity(), newsList, (ProgressBar) view.findViewById(R.id.progressBar), (TextView) view.findViewById(R.id.txtSubHeader), (TextView) view.findViewById(R.id.txtHeader)).execute();
-
- /*if (!(NewsTask.hasData())) {
- new NewsTask(getActivity(), newsList, (ProgressBar) view.findViewById(R.id.progressBar), (TextView) view.findViewById(R.id.txtSubHeader), (TextView) view.findViewById(R.id.txtHeader)).execute();
- } else {
- for (NewsArticle a : NewsTask.getData()) {
- if (a.getUrl().contains("press-release")) {
- ((TextView) view.findViewById(R.id.txtSubHeader)).setText(Html.fromHtml(a.getDesc()));
- String s = a.getTitle();
- s = s.length() > 42 ? s.substring(0, 42) + "..." : s;
- ((TextView) view.findViewById(R.id.txtHeader)).setText(s);
- break;
- }\
- }
- newsList.setVisibility(View.VISIBLE);
- view.findViewById(R.id.progressBar).setVisibility(View.GONE);
- newsList.setAdapter(new ImgTxtAdapter(getActivity(), R.layout.list_news_item, NewsTask.getData()));
- }*/
}
@Override
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/SingleIssueFragment.java b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/SingleIssueFragment.java
index bdf1f67..9138170 100644
--- a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/SingleIssueFragment.java
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/SingleIssueFragment.java
@@ -1,16 +1,21 @@
package com.spielpark.steve.bernieapp.fragments;
-
+import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
-import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v7.widget.ShareActionProvider;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.TextView;
@@ -21,6 +26,7 @@
* A simple {@link Fragment} subclass.
*/
public class SingleIssueFragment extends Fragment {
+ private ShareActionProvider shareActionProvider;
private static Issue mIssue;
public static SingleIssueFragment newInstance(Issue i) {
@@ -40,7 +46,7 @@ public void onCreate(Bundle savedInstanceState) {
}
@Override
- public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
+ public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
if (mIssue == null) {
//User exited the app and returned to it, but android cleared some stuff from memory...
@@ -52,14 +58,43 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
((TextView) root.findViewById(R.id.i_txtDate)).setText("Published " + mIssue.getPubDate());
((TextView) root.findViewById(R.id.i_txtDesc)).setText(Html.fromHtml(mIssue.getDesc()));
((TextView) root.findViewById(R.id.i_txtDesc)).setMovementMethod(new LinkMovementMethod());
- ((WebView) root.findViewById(R.id.i_video)).getSettings().setJavaScriptEnabled(true);
- ((WebView) root.findViewById(R.id.i_video)).loadData(mIssue.getEmbedURL(getActivity()), "text/Html", "UTF-8");
+ WebView wv = ((WebView) root.findViewById(R.id.i_video));
+ wv.setWebChromeClient(new WebChromeClient());
+ wv.getSettings().setJavaScriptEnabled(true);
+ wv.loadDataWithBaseURL(null, mIssue.getEmbedURL(getActivity()), "text/Html", "UTF-8", null);
}
+ @Override
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ inflater.inflate(R.menu.share_menu, menu);
+ MenuItem item = menu.findItem(R.id.menu_item_share);
+ shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
+ shareActionProvider.setShareIntent(getShareIntent());
+ shareActionProvider.setOnShareTargetSelectedListener(new ShareActionProvider.OnShareTargetSelectedListener() {
+ @Override
+ public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) {
+ getActivity().onBackPressed();
+ return false;
+ }
+ });
+ super.onCreateOptionsMenu(menu, inflater);
+ }
+
+ private Intent getShareIntent() {
+ Intent shareIntent = new Intent(Intent.ACTION_SEND);
+ shareIntent.setType("text/plain");
+ StringBuilder text = new StringBuilder("Hey, here's Bernie Sanders' official stance on this issue -- \n");
+ text.append(mIssue.getTitle());
+ text.append("\n\nRead more here: " + mIssue.getUrl());
+ text.append("\n\nSent from Bernie Sanders for President 2016 Android Application");
+ shareIntent.putExtra(Intent.EXTRA_TEXT, text.toString());
+ return shareIntent;
+ }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
+ setHasOptionsMenu(true);
return inflater.inflate(R.layout.frag_single_issue, container, false);
}
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/SingleNewsFragment.java b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/SingleNewsFragment.java
index 3814c80..76099e6 100644
--- a/app/src/main/java/com/spielpark/steve/bernieapp/fragments/SingleNewsFragment.java
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/fragments/SingleNewsFragment.java
@@ -5,9 +5,15 @@
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v7.widget.ShareActionProvider;
import android.text.Html;
import android.text.method.LinkMovementMethod;
+import android.util.Log;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
@@ -20,6 +26,7 @@
public class SingleNewsFragment extends Fragment {
private static NewsArticle mEvent;
private static SingleNewsFragment mInstance;
+ private ShareActionProvider shareActionProvider;
public static SingleNewsFragment getInstance(NewsArticle e) {
mEvent = e;
@@ -40,7 +47,7 @@ public void onViewCreated(View view, Bundle savedInstanceState) {
((TextView) root.findViewById(R.id.e_txtDate)).setText(mEvent.getPubDate());
((TextView) root.findViewById(R.id.e_txtDesc)).setText(Html.fromHtml(mEvent.getDesc()));
((TextView) root.findViewById(R.id.e_txtDesc)).setMovementMethod(new LinkMovementMethod());
- Util.getPicasso(getActivity()).load(mEvent.getImgSrc()).placeholder(R.drawable.logo).into((ImageView)root.findViewById(R.id.e_imgLogo));
+ Util.getPicasso(getActivity()).load(mEvent.getImgSrc()).placeholder(R.drawable.logo).fit().into((ImageView)root.findViewById(R.id.e_imgLogo));
root.findViewById(R.id.e_btnWebsite).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -52,14 +59,36 @@ public void onClick(View v) {
}
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ inflater.inflate(R.menu.share_menu, menu);
+ MenuItem item = menu.findItem(R.id.menu_item_share);
+ shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
+ shareActionProvider.setShareIntent(getShareIntent());
+ shareActionProvider.setOnShareTargetSelectedListener(new ShareActionProvider.OnShareTargetSelectedListener() {
+ @Override
+ public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) {
+ return false;
+ }
+ });
+ super.onCreateOptionsMenu(menu, inflater);
+ }
+
+ private Intent getShareIntent() {
+ Intent shareIntent = new Intent(Intent.ACTION_SEND);
+ shareIntent.setType("text/plain");
+ StringBuilder text = new StringBuilder("Hey, check out this article on Bernie Sanders!\n");
+ text.append(mEvent.getTitle());
+ text.append("\n\nRead more here: " + mEvent.getUrl());
+ text.append("\n\nSent from Bernie Sanders for President 2016 Android Application");
+ shareIntent.putExtra(Intent.EXTRA_TEXT, text.toString());
+ return shareIntent;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
+ setHasOptionsMenu(true);
return inflater.inflate(R.layout.frag_event, container, false);
}
}
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/misc/ImgTxtAdapter.java b/app/src/main/java/com/spielpark/steve/bernieapp/misc/ImgTxtAdapter.java
index 75c0673..fa0a39b 100644
--- a/app/src/main/java/com/spielpark/steve/bernieapp/misc/ImgTxtAdapter.java
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/misc/ImgTxtAdapter.java
@@ -45,7 +45,7 @@ public View getView(int position, View convertView, ViewGroup parent) {
} else {
v = (ViewHolder) convertView.getTag();
}
- Util.getPicasso(ctx).load(item.getImgSrc()).into(v.img);
+ Util.getPicasso(ctx).load(item.getImgSrc()).fit().into(v.img);
v.txt.setTypeface(Typeface.createFromAsset(ctx.getAssets(), "Jubilat.otf"));
v.txt.setText(Html.fromHtml(item.getTxt()));
return convertView;
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/misc/Util.java b/app/src/main/java/com/spielpark/steve/bernieapp/misc/Util.java
index 8e2d4e2..013532a 100644
--- a/app/src/main/java/com/spielpark/steve/bernieapp/misc/Util.java
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/misc/Util.java
@@ -54,8 +54,8 @@ public static int getFullScreenHeight(Activity ctx) {
}
public static AlertDialog getShowAgainDialogue(Context ctx, final SharedPreferences prefs, final Preferences p, String message) {
- LayoutInflater inflator = LayoutInflater.from(ctx);
- final View view = inflator.inflate(R.layout.dialogue_checkbox, null);
+ LayoutInflater inflater = LayoutInflater.from(ctx);
+ final View view = inflater.inflate(R.layout.dialogue_checkbox, null);
AlertDialog.Builder bld = new AlertDialog.Builder(ctx, 4);
bld.setMessage(message)
.setTitle("Welcome!")
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/tasks/ConnectTask.java b/app/src/main/java/com/spielpark/steve/bernieapp/tasks/ConnectTask.java
index edd5e00..e1eb5c2 100644
--- a/app/src/main/java/com/spielpark/steve/bernieapp/tasks/ConnectTask.java
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/tasks/ConnectTask.java
@@ -1,16 +1,25 @@
package com.spielpark.steve.bernieapp.tasks;
+import android.app.Activity;
import android.content.Context;
+import android.graphics.Typeface;
import android.os.AsyncTask;
import android.text.Html;
import android.util.JsonReader;
import android.util.JsonToken;
import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
import com.spielpark.steve.bernieapp.R;
import com.spielpark.steve.bernieapp.fragments.ConnectFragment;
+import com.spielpark.steve.bernieapp.misc.Util;
import com.spielpark.steve.bernieapp.wrappers.Event;
+import com.spielpark.steve.bernieapp.wrappers.ImgTxtItem;
import java.io.BufferedReader;
import java.io.IOException;
@@ -45,7 +54,7 @@ protected Object doInBackground(Object[] params) {
BufferedReader in = null;
try {
URL url = frag.fetchCountry ?
- new URL("https://go.berniesanders.com/page/event/search_results?orderby=date&format=json") :
+ new URL("https://go.berniesanders.com/page/event/search_results?orderby=date&format=json&limit=500") :
new URL("https://go.berniesanders.com/page/event/search_results?orderby=date&format=json&zip_radius=" + frag.mRadius + "&zip=" + frag.mZip);
Log.d("URL", url.toString());
in = new BufferedReader(new InputStreamReader(url.openStream()));
@@ -75,10 +84,12 @@ protected void onPostExecute(Object o) {
Log.d("OPE", "There are " + events.size() + " events.");
Collections.sort(events);
String[] titles = new String[events.size()];
+ String[] dates = new String[events.size()];
for (int i = 0; i < events.size(); i++) {
titles[i] = getHTMLForTitle(events.get(i));
+ dates[i] = getHTMLForDate(events.get(i).getDate());
}
- NewsAdapter adapter = new NewsAdapter(ctx, R.layout.list_news_item, R.id.txtItem, titles);
+ ConnectAdapter adapter = new ConnectAdapter(ctx, R.layout.list_connect_events, dates, titles);
frag.setMarkers();
frag.updateViews(adapter);
frag = null;
@@ -99,11 +110,23 @@ private String getHTMLForTitle(Event e) {
bld.append("").append(e.getName()).append("
");
if (e.getVenue_city() != null) {
bld.append(" ").append(e.getVenue_city()).append(", ").append(e.getState()).append(" - ").append(e.getZip()).append("
");
- bld.append(" # of RSVP: ").append(e.isOfficial() ? "N/A" : Integer.toString(e.getAttendee_count()));
+ bld.append(" Participating: ").append(e.isOfficial() ? "N/A" : Integer.toString(e.getAttendee_count()));
}
return bld.toString();
}
+ private String getHTMLForDate(String s) {
+ String ret = s;
+ SimpleDateFormat ft = new SimpleDateFormat("MMMM d, yyyy");
+ try {
+ Date date = ft.parse(s);
+ ret = new SimpleDateFormat("''d'
'MMM''").format(date);
+ } catch (ParseException e1) {
+ e1.printStackTrace();
+ }
+ return ret;
+ }
+
private void readObjects(JsonReader reader) throws IOException {
Log.d("JsonReader", "Beginning parsing");
Event e = new Event();
@@ -226,16 +249,50 @@ private void readObjects(JsonReader reader) throws IOException {
reader.close();
}
- private class NewsAdapter extends ArrayAdapter {
+ private class ConnectAdapter extends ArrayAdapter {
+ private String[] dates;
+ private String[] titles;
+ private int res;
- private NewsAdapter(Context context, int resource, int textViewResourceId, Object[] objects) {
- super(context, resource, textViewResourceId, objects);
+ public ConnectAdapter(Context context, int resource, String[] dates, String[] titles) {
+ super(context, resource, dates);
+ this.dates = dates;
+ this.titles = titles;
+ this.res = resource;
}
@Override
public Object getItem(int position) {
- return Html.fromHtml( (String) super.getItem(position));
+ return Html.fromHtml( dates[position] + " " + titles[position]);
+ }
+
+ @Override
+ public int getCount() {
+ return dates.length;
}
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ViewHolder v;
+ if (convertView == null) {
+ LayoutInflater inflater = ((Activity) ctx).getLayoutInflater();
+ convertView = inflater.inflate(res, parent, false);
+ v = new ViewHolder();
+ v.date = (TextView) convertView.findViewById(R.id.list_con_txtDate);
+ v.title = (TextView) convertView.findViewById(R.id.list_con_txtDesc);
+ convertView.setTag(v);
+ } else {
+ v = (ViewHolder) convertView.getTag();
+ }
+ v.date.setText(Html.fromHtml(dates[position]));
+ v.date.setTypeface(Typeface.createFromAsset(ctx.getAssets(), "Jubilat.otf"));
+ v.title.setText(Html.fromHtml(titles[position]));
+ return convertView;
+ }
+
+ private class ViewHolder {
+ TextView date;
+ TextView title;
+ }
}
}
diff --git a/app/src/main/java/com/spielpark/steve/bernieapp/tasks/NewsTask.java b/app/src/main/java/com/spielpark/steve/bernieapp/tasks/NewsTask.java
index 62b2ded..5d75109 100644
--- a/app/src/main/java/com/spielpark/steve/bernieapp/tasks/NewsTask.java
+++ b/app/src/main/java/com/spielpark/steve/bernieapp/tasks/NewsTask.java
@@ -119,9 +119,23 @@ private void readObjects(JsonReader reader) throws IOException {
}
case "content" : {
String content = reader.nextString();
+ content = content.replaceAll("\\[.*?\\]",""); //at the risk of removing innocuous []'s
if (content.contains("".length());
}
+ if (content.contains("
)|()", "");
+ }
+ //This shouldn't have to happen but I can't change the text formatting from the source. /me shrugs "it works"
+ try {
+ while (content.contains(("[rwd"))) {
+ String p1 = content.substring(0, content.indexOf(("[rwd")));
+ String p2 = content.substring(content.indexOf(']', p1.length()) + 1);
+ content = p1.concat(p2);
+ }
+ } catch (Exception e) { //can't win'm all.
+ a.setDesc(content); //just roll with it.
+ }
a.setDesc(content);
break;
}
@@ -129,6 +143,9 @@ private void readObjects(JsonReader reader) throws IOException {
if (reader.peek() == JsonToken.NULL) {
a.setImgSrc(NULL_IMAGE);
reader.nextNull();
+ } else if (reader.peek() == JsonToken.BOOLEAN) {
+ a.setImgSrc(NULL_IMAGE);
+ reader.nextBoolean();
} else {
a.setImgSrc(reader.nextString());
}
diff --git a/app/src/main/res/drawable-hdpi/ic_attach_money_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_attach_money_white_24dp.png
new file mode 100644
index 0000000..ee833c6
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_attach_money_white_24dp.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_attach_money_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_attach_money_white_24dp.png
new file mode 100644
index 0000000..707d167
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_attach_money_white_24dp.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_attach_money_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_attach_money_white_24dp.png
new file mode 100644
index 0000000..20efc6c
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_attach_money_white_24dp.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_attach_money_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_attach_money_white_24dp.png
new file mode 100644
index 0000000..d4bde81
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_attach_money_white_24dp.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_attach_money_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_attach_money_white_24dp.png
new file mode 100644
index 0000000..f3c5685
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_attach_money_white_24dp.png differ
diff --git a/app/src/main/res/layout/frag_donate.xml b/app/src/main/res/layout/frag_donate.xml
new file mode 100644
index 0000000..47f9bb8
--- /dev/null
+++ b/app/src/main/res/layout/frag_donate.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/frag_event.xml b/app/src/main/res/layout/frag_event.xml
index 572e0ad..48979df 100644
--- a/app/src/main/res/layout/frag_event.xml
+++ b/app/src/main/res/layout/frag_event.xml
@@ -1,8 +1,10 @@
+
diff --git a/app/src/main/res/layout/frag_single_issue.xml b/app/src/main/res/layout/frag_single_issue.xml
index a7d353f..75b7147 100644
--- a/app/src/main/res/layout/frag_single_issue.xml
+++ b/app/src/main/res/layout/frag_single_issue.xml
@@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context="com.spielpark.steve.bernieapp.fragments.SingleNewsFragment"
+ tools:context="com.spielpark.steve.bernieapp.fragments.SingleIssueFragment"
android:layout_marginBottom="60dp">
-
-
+
-
-
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/global.xml b/app/src/main/res/menu/global.xml
deleted file mode 100644
index 326a6a7..0000000
--- a/app/src/main/res/menu/global.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/app/src/main/res/menu/share_menu.xml b/app/src/main/res/menu/share_menu.xml
new file mode 100644
index 0000000..15eec56
--- /dev/null
+++ b/app/src/main/res/menu/share_menu.xml
@@ -0,0 +1,9 @@
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ad42beb..9523768 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -6,7 +6,8 @@
Organize
Connect
BernRate
- App Feedback
+ Donate
+ App Feedback
Open navigation drawer
Close navigation drawer
@@ -15,6 +16,8 @@
Settings
+ https://secure.actblue.com/contribute/page/reddit-for-bernie
+
Hello blank fragment