From 196108f1b7ad3ccdc4299599f8a5a6eb449411e3 Mon Sep 17 00:00:00 2001 From: Steve Date: Sat, 7 Nov 2015 03:29:15 -0500 Subject: [PATCH 01/19] updated json parsing to accommodate booleans on image --- app/build.gradle | 4 ++-- .../java/com/spielpark/steve/bernieapp/tasks/NewsTask.java | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3f3710a..b818048 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 16 + versionName "1.52R" } buildTypes { release { 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..98fd0e5 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 @@ -129,6 +129,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()); } From 9b9399ddd1dd6b5a7756183a2e0f4b5f82463a7c Mon Sep 17 00:00:00 2001 From: Steve Date: Fri, 15 Jan 2016 16:03:39 -0500 Subject: [PATCH 02/19] fixes a weird webview loading bug --- .../steve/bernieapp/fragments/BernRateFragment.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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); } } From 067d33f8db4f2c7d28035598808898bff1429618 Mon Sep 17 00:00:00 2001 From: Steve Date: Fri, 15 Jan 2016 16:07:52 -0500 Subject: [PATCH 03/19] new ver --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b818048..0f24eaf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "com.spielpark.steve.bernieapp" minSdkVersion 14 targetSdkVersion 23 - versionCode 16 - versionName "1.52R" + versionCode 17 + versionName "1.32R" } buildTypes { release { From ca5be60222308d7199276eb407831e93c1886450 Mon Sep 17 00:00:00 2001 From: Steve Date: Sun, 28 Feb 2016 17:00:59 -0500 Subject: [PATCH 04/19] removes unnecessary code --- .../steve/bernieapp/fragments/BottomNavFragment.java | 5 ----- 1 file changed, 5 deletions(-) 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) { From ba419c075c0d5edba8a078ab31ba08bd3627000d Mon Sep 17 00:00:00 2001 From: Steve Date: Sun, 28 Feb 2016 17:02:08 -0500 Subject: [PATCH 05/19] Finally! Adds Donate Fragment --- .../steve/bernieapp/actMainPage.java | 84 ++++++++++++++---- .../bernieapp/fragments/DonateFragment.java | 50 +++++++++++ .../ic_attach_money_white_24dp.png | Bin 0 -> 397 bytes .../ic_attach_money_white_24dp.png | Bin 0 -> 256 bytes .../ic_attach_money_white_24dp.png | Bin 0 -> 448 bytes .../ic_attach_money_white_24dp.png | Bin 0 -> 640 bytes .../ic_attach_money_white_24dp.png | Bin 0 -> 819 bytes app/src/main/res/layout/frag_donate.xml | 65 ++++++++++++++ app/src/main/res/values/strings.xml | 5 +- 9 files changed, 188 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/com/spielpark/steve/bernieapp/fragments/DonateFragment.java create mode 100644 app/src/main/res/drawable-hdpi/ic_attach_money_white_24dp.png create mode 100644 app/src/main/res/drawable-mdpi/ic_attach_money_white_24dp.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_attach_money_white_24dp.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_attach_money_white_24dp.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_attach_money_white_24dp.png create mode 100644 app/src/main/res/layout/frag_donate.xml 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/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/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 0000000000000000000000000000000000000000..ee833c667ac49d6204cbc7ee1a5939809d98d341 GIT binary patch literal 397 zcmV;80doF{P)~!wssdc#O3D@w zxL&AM9;%5DAuL-YFb=3!5X8u0q}ZU3O8LbE8NR%dz@bcj(8e+OZkeWBe$dG(FMM}K zll-BQezr)G^GJjIqlOutG4>P;t-NB?%La`&I5;$^04o?hvcV+Af(j7F7?lk=Fz%^R z9+olsWP?(!F?I;)6H(r9WvP=L2FbZ(igscQut*AHP4 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..707d167616765fe8f34d8e637cb2a2a1ba681389 GIT binary patch literal 256 zcmV+b0ssDqP)1)?crW`5VcO3 z7IMJ1scz{azh_gqUL1M+vBGUim#xw1EZ%)WJ}X2kJiav6MJ_(VR4FP~EUIoj=b^Ow z+fRLtb8-TnasC#`HEf&Ad+u}3eUY^nw6!hrKFl$F^(1tsPIQUkF{z7IsX(0?^&Dum`b85=kfHKF6dK{HEPibm;W}aMg z!aH%T&QjH4v-9V!-~DF)|MRx1mGl0e{ruBoqKAr*rie|>zL-OYpPg34V8~9p)RQ}> zDv3+_smzk;Ic=HCqaG%T-#?MwBGx5pbLvIPs&|6H8#EqsUj8^ih_zFDiT8(TdG9Ve z+yCFNRm&phNZIt= z-M+(j)qImcwepB#8rvMtZFX8$Fy)M0!Nj*`LVjc@?`FAcV&wnukwE>))E?_Anm#(u zHGl3&n0x4m+AhyY-jn!}xP(pTESw(`XBeKCY}i|3=#rMdVgk3w#x^rHk8nHs zzmfG+$Z*}HSB)`?nJ;ThE$WtNo?&*{^p>IN$_pCD(l3=hJ(%dTJhY-F@ly5EgPcC< zp%r%yg{+=a(ULiztN-qdUn>H_auhl6Ch;s?DG_#2`cAs=VIDX+pjW zrdZ_}`K?N0ZPmNfd%=Cq@gtS)O(p9;iio5Mq*t*;EKvybQxCrG-rIEC&u(&j6Za7j zKCjFNmY$n_p0ZpeVkWjhK6;Y!nnfOY4-!8=6_PWH*L#T00LSr`|I&|yH{Eth)CHz2 N22WQ%mvv4FO#qM@Am0E0 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f3c568542d1a733c45204f1ed5c6b9bf6a926d2d GIT binary patch literal 819 zcmV-31I+x1P)(jc!6FGXE_?3M6S`p_sHP)J+%&hSjD`6m1NG(g?$nAdMEu zNUZ{6k`f{bQG!CsM0BFtWHQ8=@u~HD&Wx{)&F>7npYL{liw7K>TZ&;AhG7_nv0BK$ zS(uc6vlLc$Ccp%k025#W;#f9SQ3DFy9pIq>A0c8HrHyX>19 zW~g>cz<>0x5)sb1A;62DmAfb%kcFT4G|L8b65Sj_+^75R`tb7&XCX@D0xEGfK`TYd zV^b;TIw9$Ou%JSiyY9n+ry%AXR%fy zz>jKB^YSsOdWnF~s7`2JHlpf~2neJ4U-PmQ)u2Q`1XYFh3%{_kml6R#H2#G2ClD}- z>S=NX+{W%?G6mFOXVH{A0UiQ4dBj%P0R6S&%%YcyWC+M&oan~6K&ecC{z?cE+Xrq@ zOP)Z0<|b*xJi1x?a)38usLP^- zN%RG%kq=OpP7OXRbajv>A7Ebr&G=YAM?dKT0b28LkW0M4BDQXs0R4HXr;i1qYmy7l zUv7-2_;=Pz2Iwz?(*$vHRXRX_MT}t=Bu6?xfBC${?x=i#{&o>T)#>g4bpxpU$raFq zYC6#YgQ$w*`exy0q62QCs@1<{AF5EI15Tm3tAEXLRDnbX>_io!Q2V+M)kxx>#P3o0 zNY%P5!$Q@S_<*z6b!oi5-^e@cY7!sd%WXvRr|0gkcG_UO$t zGK{k`QZMEPi0%_ZJm3z!JjBl|(T$NQ6_Cqo;uU1ONfC(@Ge*n6{IDmJ|3g!R+002ovPDHLkV1fXzd(Z#? literal 0 HcmV?d00001 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..b8967fd --- /dev/null +++ b/app/src/main/res/layout/frag_donate.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + +