Dr0ptp4kt has uploaded a new change for review.

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


Change subject: Color toggle Wikipedia icon and search bar when on W0 network.
......................................................................

Color toggle Wikipedia icon and search bar when on W0 network.

Change-Id: I1f634667eea0b8c3b72389d0532a2bad8c4cd1a2
---
M wikipedia/res/layout/fragment_search.xml
M wikipedia/res/values/strings.xml
M wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
A wikipedia/src/main/java/org/wikipedia/events/StartScreenLoadedEvent.java
A 
wikipedia/src/main/java/org/wikipedia/events/WikipediaZeroStateChangeEvent.java
M wikipedia/src/main/java/org/wikipedia/networking/ConnectionChangeReceiver.java
M wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
M wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
8 files changed, 179 insertions(+), 40 deletions(-)


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

diff --git a/wikipedia/res/layout/fragment_search.xml 
b/wikipedia/res/layout/fragment_search.xml
index a9562d7..7b3b102 100644
--- a/wikipedia/res/layout/fragment_search.xml
+++ b/wikipedia/res/layout/fragment_search.xml
@@ -1,12 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
+              android:id="@+id/search_bar_container"
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="48dp"
               android:background="@android:color/background_light"
         >
     <LinearLayout
+            android:id="@+id/navbar"
             android:orientation="horizontal"
             android:layout_height="match_parent"
             android:layout_width="match_parent"
@@ -26,6 +28,7 @@
                         android:src="@drawable/ic_drawer"
                         />
                 <ImageView
+                        android:id="@+id/wikipedia_icon"
                         android:layout_height="32dp"
                         android:layout_width="32dp"
                         android:layout_marginRight="0dp"
@@ -54,6 +57,7 @@
                     android:selectAllOnFocus="true"
                     android:singleLine="true"
                     android:imeOptions="actionDone"
+                    android:textCursorDrawable="@null"
                     />
             <ProgressBar
                     android:id="@+id/search_progress"
diff --git a/wikipedia/res/values/strings.xml b/wikipedia/res/values/strings.xml
index 9f87acb..f289903 100644
--- a/wikipedia/res/values/strings.xml
+++ b/wikipedia/res/values/strings.xml
@@ -56,4 +56,5 @@
 
     <string name="zero_free_verbiage">Wikipedia Zero On (No Data 
Charges)</string>
     <string name="zero_charged_verbiage">Wikipedia Zero OFF (STANDARD DATA 
CHARGES MAY APPLY)</string>
+    <string name="zero_search_hint">Search Wikipedia Zero</string>
 </resources>
\ No newline at end of file
diff --git a/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java 
b/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
index 6c7b4a1..4c62fe5 100644
--- a/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
+++ b/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
@@ -2,7 +2,9 @@
 
 import android.app.Application;
 import android.content.Context;
+import android.content.IntentFilter;
 import android.content.SharedPreferences;
+import android.net.ConnectivityManager;
 import android.os.Build;
 import android.preference.PreferenceManager;
 import android.webkit.WebView;
@@ -18,6 +20,7 @@
 import org.wikipedia.data.DBOpenHelper;
 import org.wikipedia.history.HistoryEntry;
 import org.wikipedia.history.HistoryEntryPersister;
+import org.wikipedia.networking.ConnectionChangeReceiver;
 import org.wikipedia.pageimages.PageImage;
 import org.wikipedia.pageimages.PageImagePersister;
 import org.wikipedia.savedpages.SavedPage;
@@ -49,6 +52,8 @@
     // Reload in onCreate to override
     public static String PROTOCOL = "https";
 
+    private ConnectionChangeReceiver connChangeReceiver;
+
     @Override
     public void onCreate() {
         super.onCreate();
@@ -70,6 +75,10 @@
         }
 
         Api.setConnectionFactory(new OkHttpConnectionFactory(this));
+
+        IntentFilter connFilter = new 
IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
+        connChangeReceiver = new ConnectionChangeReceiver();
+        this.registerReceiver(connChangeReceiver, connFilter);
     }
 
     public Bus getBus() {
@@ -140,4 +149,13 @@
         }
         return persisters.get(cls.getCanonicalName());
     }
+
+    private boolean wikipediaZeroDisposition = false;
+    public void setWikipediaZeroDisposition(boolean b) {
+        wikipediaZeroDisposition = b;
+    }
+
+    public boolean getWikipediaZeroDisposition() {
+        return wikipediaZeroDisposition;
+    }
 }
diff --git 
a/wikipedia/src/main/java/org/wikipedia/events/StartScreenLoadedEvent.java 
b/wikipedia/src/main/java/org/wikipedia/events/StartScreenLoadedEvent.java
new file mode 100644
index 0000000..bf12f64
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/events/StartScreenLoadedEvent.java
@@ -0,0 +1,4 @@
+package org.wikipedia.events;
+
+public class StartScreenLoadedEvent {
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/events/WikipediaZeroStateChangeEvent.java
 
b/wikipedia/src/main/java/org/wikipedia/events/WikipediaZeroStateChangeEvent.java
new file mode 100644
index 0000000..22c5e7d
--- /dev/null
+++ 
b/wikipedia/src/main/java/org/wikipedia/events/WikipediaZeroStateChangeEvent.java
@@ -0,0 +1,4 @@
+package org.wikipedia.events;
+
+public class WikipediaZeroStateChangeEvent {
+}
\ No newline at end of file
diff --git 
a/wikipedia/src/main/java/org/wikipedia/networking/ConnectionChangeReceiver.java
 
b/wikipedia/src/main/java/org/wikipedia/networking/ConnectionChangeReceiver.java
index d2c5b3c..0752cbe 100644
--- 
a/wikipedia/src/main/java/org/wikipedia/networking/ConnectionChangeReceiver.java
+++ 
b/wikipedia/src/main/java/org/wikipedia/networking/ConnectionChangeReceiver.java
@@ -8,20 +8,22 @@
 import android.os.Handler;
 import android.os.Message;
 import android.util.Log;
-import android.widget.Toast;
+import com.squareup.otto.Bus;
 import org.wikipedia.WikipediaApp;
+import org.wikipedia.events.WikipediaZeroStateChangeEvent;
 import org.wikipedia.zero.WikipediaZeroTask;
 import org.wikipedia.R;
 
 
+
 public class ConnectionChangeReceiver extends BroadcastReceiver {
-    private static boolean previousZeroState = false;
     private WikipediaApp app;
     private WikipediaZeroTask curZeroTask;
     private static final int MESSAGE_ZERO = 1;
+    private static Bus bus;
 
     public void onReceive(final Context context, Intent intent) {
-        app = (WikipediaApp)context.getApplicationContext();
+        app = (WikipediaApp)context;
         ConnectivityManager conn = (ConnectivityManager) 
context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo networkInfo = conn.getActiveNetworkInfo();
 
@@ -29,30 +31,31 @@
         if (networkInfo != null) {
             NetworkInfo.State currentState = networkInfo.getState();
 
-            // we care both if a new network connection was made or when one 
of 2 or more connections is closed
-            if (currentState == NetworkInfo.State.CONNECTED || currentState == 
NetworkInfo.State.DISCONNECTED) {
+            /*
+            We care both if a new network connection was made or when one of 2 
or more connections is closed.
+            NetworkInfo.State.CONNECTED => isConnected(), but let's call 
isConnected as documentation suggests.
+            We don't need to check against the zeroconfig API unless the 
(latest) W0 state is *on* (true).
+             */
+            if (app.getWikipediaZeroDisposition() &&
+                    (currentState == NetworkInfo.State.CONNECTED || 
currentState == NetworkInfo.State.DISCONNECTED) &&
+                    networkInfo.isConnected()
+               ) {
 
-                // OK, now check if we're eligible for zero-rating
+                // OK, now check if we're still eligible for zero-rating
                 Handler wikipediaZeroHandler = new Handler(new 
Handler.Callback(){
                     @Override
                     public boolean handleMessage(Message msg) {
                         WikipediaZeroTask zeroTask = new 
WikipediaZeroTask(app.getAPIForSite(app.getPrimarySite())) {
                             @Override
-                            public void onFinish(Boolean result) {
-                                Log.d("Wikipedia", "Wikipedia Zero Eligibility 
Status: " + result);
+                            public void onFinish(Boolean 
isWikipediaZeroEligible) {
+                                Log.d("Wikipedia", "Wikipedia Zero Eligibility 
Status: " + isWikipediaZeroEligible);
 
-                                String toastVerbiage;
-                                if (!previousZeroState && result) {
-                                    toastVerbiage = 
context.getString(R.string.zero_free_verbiage);
-                                } else if (previousZeroState && !result) {
-                                    toastVerbiage = 
context.getString(R.string.zero_charged_verbiage);
-                                } else {
-                                    return;
+                                if (!isWikipediaZeroEligible) {
+                                    
app.setWikipediaZeroDisposition(isWikipediaZeroEligible);
+                                    bus = app.getBus();
+                                    bus.post(new 
WikipediaZeroStateChangeEvent());
+                                    curZeroTask = null;
                                 }
-                                previousZeroState = result;
-                                Toast.makeText(context, toastVerbiage, 
Toast.LENGTH_LONG).show();
-
-                                curZeroTask = null;
                             }
 
                             @Override
diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
index 9781116..4a706d1 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
@@ -1,18 +1,18 @@
 package org.wikipedia.page;
 
 import android.content.Intent;
-import android.content.IntentFilter;
-import android.net.ConnectivityManager;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
 import android.support.v4.app.FragmentActivity;
 import android.support.v4.widget.DrawerLayout;
+import android.widget.Toast;
 import com.squareup.otto.Bus;
 import com.squareup.otto.Subscribe;
 import org.wikipedia.*;
 import org.wikipedia.events.*;
 import org.wikipedia.history.HistoryEntry;
 import org.wikipedia.interlanguage.LangLinksActivity;
-import org.wikipedia.networking.ConnectionChangeReceiver;
 import org.wikipedia.recurring.RecurringTasksExecutor;
 import org.wikipedia.search.SearchArticlesFragment;
 
@@ -29,7 +29,8 @@
 
     private PageViewFragment curPageFragment;
 
-    private ConnectionChangeReceiver connChangeReceiver;
+    private boolean pausedStateOfZero;
+    private static final int MESSAGE_START_SCREEN = 1;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -57,11 +58,23 @@
 
         searchAriclesFragment.setDrawerLayout(drawerLayout);
 
-        IntentFilter connFilter = new 
IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
-        connChangeReceiver = new ConnectionChangeReceiver();
-        this.registerReceiver(connChangeReceiver, connFilter);
-        // Kickstart network ops. currently, just to initiate Wikipedia Zero 
check
-        connChangeReceiver.onReceive(app, intent);
+        Handler startScreenHandler = new Handler(new Handler.Callback(){
+            @Override
+            public boolean handleMessage(Message msg) {
+                boolean disposition = false;
+                if (!app.getWikipediaZeroDisposition() && disposition) {
+                    app.setWikipediaZeroDisposition(disposition);
+                    bus.post(new WikipediaZeroStateChangeEvent());
+                }
+                return true;
+            }
+        });
+
+        startScreenHandler.removeMessages(MESSAGE_START_SCREEN);
+        Message startScreenMessage = Message.obtain();
+        startScreenMessage.what = MESSAGE_START_SCREEN;
+        startScreenMessage.obj = "start_screen_fire";
+        startScreenHandler.sendMessage(startScreenMessage);
 
         // Conditionally execute all recurring tasks
         new RecurringTasksExecutor(this).run();
@@ -122,6 +135,19 @@
         }
     }
 
+    @Subscribe
+    public void onWikipediaZeroStateChangeEvent(WikipediaZeroStateChangeEvent 
event) {
+        boolean latestWikipediaZeroDisposition = 
app.getWikipediaZeroDisposition();
+
+        if (pausedStateOfZero && !latestWikipediaZeroDisposition) {
+            Toast.makeText(app, getString(R.string.zero_charged_verbiage), 
Toast.LENGTH_LONG).show();
+        } else if (!pausedStateOfZero && latestWikipediaZeroDisposition) {
+            Toast.makeText(app, getString(R.string.zero_free_verbiage), 
Toast.LENGTH_LONG).show();
+        }
+
+        pausedStateOfZero = latestWikipediaZeroDisposition;
+    }
+
     @Override
     protected void onStart() {
         super.onStart();
@@ -132,17 +158,24 @@
     }
 
     @Override
+    protected void onResume() {
+        super.onStart();
+        boolean latestWikipediaZeroDispostion = 
app.getWikipediaZeroDisposition();
+        if (pausedStateOfZero && !latestWikipediaZeroDispostion) {
+            bus.post(new WikipediaZeroStateChangeEvent());
+        }
+    }
+
+    @Override
+    public void onPause() {
+        super.onResume();
+        pausedStateOfZero = app.getWikipediaZeroDisposition();
+    }
+
+    @Override
     protected void onStop() {
         super.onStop();
         bus.unregister(this);
         bus = null;
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        if (connChangeReceiver != null) {
-            this.unregisterReceiver(connChangeReceiver);
-        }
     }
 }
diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java 
b/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
index a204749..4f25ade 100644
--- a/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
@@ -1,6 +1,8 @@
 package org.wikipedia.search;
 
 import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -15,6 +17,7 @@
 import com.squareup.picasso.Picasso;
 import org.wikipedia.*;
 import org.wikipedia.events.NewWikiPageNavigationEvent;
+import org.wikipedia.events.WikipediaZeroStateChangeEvent;
 import org.wikipedia.history.HistoryEntry;
 import org.wikipedia.page.PageActionsHandler;
 import org.wikipedia.pageimages.PageImagesTask;
@@ -29,14 +32,21 @@
 
     private WikipediaApp app;
 
+    private LinearLayout searchBarContainer;
+    private LinearLayout navbar;
     private View searchBarIcon;
     private EditText searchTermText;
     private ListView searchResultsList;
     private ProgressBar searchProgress;
     private View searchNetworkError;
     private View searchNoResults;
-    private View searchBarMenuButton;
-    private View drawerIndicator;
+    private ImageView searchBarMenuButton;
+    private ImageView drawerIndicator;
+    private ImageView wikipediaIcon;
+
+    private int navbarColor;
+    private int searchTermTextColor;
+    private int searchTermHintTextColor;
 
     private SearchResultAdapter adapter;
 
@@ -51,6 +61,8 @@
     private DrawerLayout drawerLayout;
 
     private SearchArticlesTask curSearchTask;
+
+    private boolean pausedStateOfZero;
 
     /**
      * Displays results passed to it as search suggestions.
@@ -105,13 +117,17 @@
             isSearchActive = savedInstanceState.getBoolean("isSearchActive");
         }
 
+        searchBarContainer = (LinearLayout) 
parentLayout.findViewById(R.id.search_bar_container);
+        navbar = (LinearLayout) parentLayout.findViewById(R.id.navbar);
         searchTermText = (EditText) 
parentLayout.findViewById(R.id.search_term_text);
+        searchTermTextColor = searchTermText.getCurrentTextColor();
         searchResultsList = (ListView) 
parentLayout.findViewById(R.id.search_results_list);
         searchProgress = (ProgressBar) 
parentLayout.findViewById(R.id.search_progress);
         searchBarIcon = parentLayout.findViewById(R.id.search_bar_icon);
         searchNetworkError = 
parentLayout.findViewById(R.id.search_network_error);
-        searchBarMenuButton = 
parentLayout.findViewById(R.id.search_bar_show_menu);
-        drawerIndicator = 
parentLayout.findViewById(R.id.search_drawer_indicator);
+        searchBarMenuButton = 
(ImageView)parentLayout.findViewById(R.id.search_bar_show_menu);
+        drawerIndicator = 
(ImageView)parentLayout.findViewById(R.id.search_drawer_indicator);
+        wikipediaIcon = 
(ImageView)parentLayout.findViewById(R.id.wikipedia_icon);
         searchNoResults = parentLayout.findViewById(R.id.search_results_empty);
 
         PopupMenu pageActionsMenu = new PopupMenu(getActivity(), 
searchBarMenuButton);
@@ -354,6 +370,62 @@
         Utils.ensureTranslationY(getView(), 0);
     }
 
+    @Subscribe
+    public void onWikipediaZeroStateChangeEvent(WikipediaZeroStateChangeEvent 
event) {
+        if (app.getWikipediaZeroDisposition()) {
+            setWikipediaZeroChrome();
+        } else {
+            setNormalChrome();
+        }
+    }
+
+    private void setWikipediaZeroChrome() {
+        try {
+            navbarColor = 
((ColorDrawable)(searchBarContainer.getBackground())).getColor();
+            searchTermTextColor = searchTermText.getCurrentTextColor();
+            searchTermHintTextColor = searchTermText.getCurrentHintTextColor();
+        } catch (Exception e) {
+            // just in case something in the layout changes out from 
underneath this code
+            navbarColor = Color.WHITE;
+            searchTermTextColor = Color.BLACK;
+            searchTermHintTextColor = Color.GRAY;
+        }
+
+        navbar.setBackgroundColor(Color.BLACK);
+        drawerIndicator.setColorFilter(Color.WHITE);
+        wikipediaIcon.setColorFilter(Color.WHITE);
+        searchTermText.setTextColor(Color.WHITE);
+        searchTermText.setHint(R.string.zero_search_hint);
+        searchBarMenuButton.setColorFilter(Color.WHITE);
+        Utils.ensureTranslationY(getView(), 0);
+    }
+
+    private void setNormalChrome() {
+        navbar.setBackgroundColor(navbarColor);
+        drawerIndicator.clearColorFilter();
+        wikipediaIcon.clearColorFilter();
+        searchTermText.setTextColor(searchTermTextColor);
+        searchTermText.setHintTextColor(searchTermHintTextColor);
+        searchTermText.setHint(R.string.search_hint);
+        searchBarMenuButton.clearColorFilter();
+        Utils.ensureTranslationY(getView(), 0);
+    }
+
+    @Override
+    public void onPause() {
+        super.onResume();
+        pausedStateOfZero = app.getWikipediaZeroDisposition();
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        boolean latestWikipediaZeroDispostion = 
app.getWikipediaZeroDisposition();
+        if (pausedStateOfZero != latestWikipediaZeroDispostion) {
+            app.getBus().post(new WikipediaZeroStateChangeEvent());
+        }
+    }
+
     @Override
     public void onStart() {
         super.onStart();

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1f634667eea0b8c3b72389d0532a2bad8c4cd1a2
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