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