Dr0ptp4kt has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/167987

Change subject: Support colorized zero-rating croutons
......................................................................

Support colorized zero-rating croutons

Prior to this patch, zero-rating croutons always had a green
background with black text. Now, the zero-rating croutons will
have background and foreground colors established through
configuration by the partners team and, eventually, by self
service operators.

Change-Id: I3e2361210673bca757dd8de29d446bdca4529a1c
---
M wikipedia/src/main/java/org/wikipedia/NavDrawerFragment.java
M wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
M wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroHandler.java
M wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroTask.java
A wikipedia/src/main/java/org/wikipedia/zero/ZeroMessage.java
5 files changed, 115 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/87/167987/1

diff --git a/wikipedia/src/main/java/org/wikipedia/NavDrawerFragment.java 
b/wikipedia/src/main/java/org/wikipedia/NavDrawerFragment.java
index 97857c9..873bde1 100644
--- a/wikipedia/src/main/java/org/wikipedia/NavDrawerFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/NavDrawerFragment.java
@@ -106,7 +106,7 @@
 
         // Show Wikipedia Zero if ON, otherwise hide it
         if (app.getWikipediaZeroHandler().isZeroEnabled()) {
-            
wikipediaZeroText.setText(app.getWikipediaZeroHandler().getCarrierMessage());
+            
wikipediaZeroText.setText(app.getWikipediaZeroHandler().getCarrierMessage().getMsg());
             wikipediaZeroText.setVisibility(View.VISIBLE);
         } else {
             wikipediaZeroText.setVisibility(View.GONE);
diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
index 54a739a..aaaa100 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
@@ -28,6 +28,8 @@
 import org.wikipedia.settings.PrefKeys;
 import org.wikipedia.staticdata.MainPageNameData;
 import org.wikipedia.theme.ThemeChooserDialog;
+import org.wikipedia.zero.ZeroMessage;
+
 import com.squareup.otto.Bus;
 import com.squareup.otto.Subscribe;
 import de.keyboardsurfer.android.widget.crouton.Crouton;
@@ -103,7 +105,7 @@
     }
 
     private boolean pausedStateOfZero;
-    private String pausedXcsOfZero;
+    private ZeroMessage pausedMessageOfZero;
 
     private AlertDialog.Builder alert;
 
@@ -122,11 +124,11 @@
 
         if (savedInstanceState != null) {
             pausedStateOfZero = 
savedInstanceState.getBoolean("pausedStateOfZero");
-            pausedXcsOfZero = savedInstanceState.getString("pausedXcsOfZero");
+            pausedMessageOfZero = 
savedInstanceState.getParcelable("pausedMessageOfZero");
         } else if (getIntent().hasExtra("changeTheme")) {
             // we've changed themes!
             pausedStateOfZero = 
getIntent().getExtras().getBoolean("pausedStateOfZero");
-            pausedXcsOfZero = 
getIntent().getExtras().getString("pausedXcsOfZero");
+            pausedMessageOfZero = 
getIntent().getExtras().getParcelable("pausedMessageOfZero");
             if (getIntent().getExtras().containsKey("themeChooserShowing")) {
                 if (getIntent().getExtras().getBoolean("themeChooserShowing")) 
{
                     bus.post(new ShowThemeChooserEvent());
@@ -538,35 +540,39 @@
     @Subscribe
     public void onWikipediaZeroStateChangeEvent(WikipediaZeroStateChangeEvent 
event) {
         boolean latestWikipediaZeroDisposition = 
app.getWikipediaZeroHandler().isZeroEnabled();
-        String latestCarrierMessage = 
app.getWikipediaZeroHandler().getCarrierMessage();
+        ZeroMessage latestCarrierMessage = 
app.getWikipediaZeroHandler().getCarrierMessage();
 
         if (pausedStateOfZero && !latestWikipediaZeroDisposition) {
             String title = getString(R.string.zero_charged_verbiage);
             String verbiage = 
getString(R.string.zero_charged_verbiage_extended);
-            makeWikipediaZeroCrouton(R.color.holo_red_dark, 
android.R.color.white, title);
+            
makeWikipediaZeroCrouton(getResources().getColor(R.color.holo_red_dark),
+                    getResources().getColor(android.R.color.white),
+                    title);
             fragmentNavdrawer.setupDynamicItems();
             showDialogAboutZero(null, title, verbiage);
-        } else if ((!pausedStateOfZero || 
!pausedXcsOfZero.equals(latestCarrierMessage)) && 
latestWikipediaZeroDisposition) {
-            String title = latestCarrierMessage;
+        } else if ((!pausedStateOfZero || 
!pausedMessageOfZero.equals(latestCarrierMessage)) && 
latestWikipediaZeroDisposition) {
+            String title = latestCarrierMessage.getMsg();
+            int fg = latestCarrierMessage.getFg();
+            int bg = latestCarrierMessage.getBg();
             String verbiage = getString(R.string.zero_learn_more);
-            makeWikipediaZeroCrouton(R.color.holo_green_light, 
android.R.color.black, title);
+            makeWikipediaZeroCrouton(bg, fg, title);
             fragmentNavdrawer.setupDynamicItems();
             showDialogAboutZero(ZERO_ON_NOTICE_PRESENTED, title, verbiage);
         }
         pausedStateOfZero = latestWikipediaZeroDisposition;
-        pausedXcsOfZero = latestCarrierMessage;
+        pausedMessageOfZero = latestCarrierMessage;
     }
 
     private void makeWikipediaZeroCrouton(int bgcolor, int fgcolor, String 
verbiage) {
         final int zeroTextSize = 20;
         final float croutonHeight = 192.0f;
         Style style = new Style.Builder()
-                .setBackgroundColor(bgcolor)
+                .setBackgroundColorValue(bgcolor)
                 .setGravity(Gravity.CENTER)
                 // .setTextAppearance-driven font size is not being honored, 
so we'll do it manually
                 // Text size in library is in sp
                 .setTextSize(zeroTextSize)
-                .setTextColor(fgcolor)
+                .setTextColorValue(fgcolor)
                 // Height size in library is in px
                 .setHeight((int) Math.floor(croutonHeight * 
WikipediaApp.getInstance().getScreenDensity()))
                 .build();
@@ -642,7 +648,7 @@
     public void onPause() {
         super.onPause();
         pausedStateOfZero = app.getWikipediaZeroHandler().isZeroEnabled();
-        pausedXcsOfZero = app.getWikipediaZeroHandler().getCarrierMessage();
+        pausedMessageOfZero = 
app.getWikipediaZeroHandler().getCarrierMessage();
     }
 
     @Override
@@ -653,7 +659,7 @@
 
     private void saveState(Bundle outState) {
         outState.putBoolean("pausedStateOfZero", pausedStateOfZero);
-        outState.putString("pausedXcsOfZero", pausedXcsOfZero);
+        outState.putParcelable("pausedMessageOfZero", pausedMessageOfZero);
     }
 
     @Override
diff --git 
a/wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroHandler.java 
b/wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroHandler.java
index e577e16..97e38aa 100644
--- a/wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroHandler.java
+++ b/wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroHandler.java
@@ -36,8 +36,8 @@
     }
 
     private volatile boolean acquiringCarrierMessage = false;
-    private String carrierMessage = "";
-    public String getCarrierMessage() {
+    private ZeroMessage carrierMessage;
+    public ZeroMessage getCarrierMessage() {
         return carrierMessage;
     }
 
@@ -63,7 +63,7 @@
                     }
                 } else if (zeroEnabled) {
                     carrierString = "";
-                    carrierMessage = "";
+                    carrierMessage = null;
                     zeroEnabled = false;
                     app.getBus().post(new WikipediaZeroStateChangeEvent());
                 }
@@ -130,7 +130,7 @@
             public boolean handleMessage(Message msg) {
                 WikipediaZeroTask zeroTask = new 
WikipediaZeroTask(app.getAPIForSite(app.getPrimarySite()), app) {
                     @Override
-                    public void onFinish(String message) {
+                    public void onFinish(ZeroMessage message) {
                         Log.d("Wikipedia", "Wikipedia Zero message: " + 
message);
 
                         if (message != null) {
diff --git a/wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroTask.java 
b/wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroTask.java
index ec51de2..0695c46 100644
--- a/wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroTask.java
@@ -1,6 +1,7 @@
 package org.wikipedia.zero;
 
 import android.content.Context;
+
 import org.json.JSONObject;
 import org.mediawiki.api.json.Api;
 import org.mediawiki.api.json.ApiResult;
@@ -8,7 +9,7 @@
 import org.wikipedia.ApiTask;
 import org.wikipedia.WikipediaApp;
 
-public class WikipediaZeroTask extends ApiTask<String> {
+public class WikipediaZeroTask extends ApiTask<ZeroMessage> {
 
     private Context ctx;
 
@@ -25,13 +26,18 @@
     }
 
     @Override
-    public String processResult(ApiResult result) throws Throwable {
+    public ZeroMessage processResult(ApiResult result) throws Throwable {
+
         try {
             JSONObject results = result.asObject();
-            String message = results.getString("message");
-            return message;
+            String msg = results.getString("message");
+            String fg = results.getString("foreground");
+            String bg = results.getString("background");
+            return new ZeroMessage(msg, fg, bg);
         } catch (Exception e) {
             return null;
         }
     }
+
+
 }
\ No newline at end of file
diff --git a/wikipedia/src/main/java/org/wikipedia/zero/ZeroMessage.java 
b/wikipedia/src/main/java/org/wikipedia/zero/ZeroMessage.java
new file mode 100644
index 0000000..3e05f13
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/zero/ZeroMessage.java
@@ -0,0 +1,81 @@
+package org.wikipedia.zero;
+
+import android.graphics.Color;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class ZeroMessage implements Parcelable {
+    private String msg;
+    private int fg;
+    private int bg;
+
+    public ZeroMessage(String msg, String fg, String bg) {
+        this(msg, Color.parseColor(fg.toUpperCase()), 
Color.parseColor(bg.toUpperCase()));
+    }
+
+    public ZeroMessage(String msg, int fg, int bg) {
+        this.msg = msg;
+        this.fg = fg;
+        this.bg = bg;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public int getFg() {
+        return fg;
+    }
+
+    public int getBg() {
+        return bg;
+    }
+
+    @Override
+    public int hashCode() {
+        return toString().hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        try {
+            return obj instanceof ZeroMessage && (obj == this || 
obj.hashCode() == this.hashCode());
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    @Override
+    public String toString() {
+        return this.msg + ":" + this.fg + ":" + this.bg;
+    }
+
+    // Parcelable stuff
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel out, int flags) {
+        out.writeString(this.msg);
+        out.writeInt(this.fg);
+        out.writeInt(this.bg);
+    }
+
+    public static final Parcelable.Creator<ZeroMessage> CREATOR
+            = new Parcelable.Creator<ZeroMessage>() {
+        public ZeroMessage createFromParcel(Parcel in) {
+            return new ZeroMessage(in);
+        }
+
+        public ZeroMessage[] newArray(int size) {
+            return new ZeroMessage[size];
+        }
+    };
+
+
+    public ZeroMessage(Parcel in) {
+        this(in.readString(), in.readInt(), in.readInt());
+    }
+}
\ No newline at end of file

-- 
To view, visit https://gerrit.wikimedia.org/r/167987
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3e2361210673bca757dd8de29d446bdca4529a1c
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dr0ptp4kt <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to