Dr0ptp4kt has uploaded a new change for review. https://gerrit.wikimedia.org/r/109844
Change subject: WIP: Add Wikipedia Zero detection and GUI features. ...................................................................... WIP: Add Wikipedia Zero detection and GUI features. * If on Wikipedia Zero participating carrier, toast and update chrome. * When W0 status off, toast and update chrome. * Update search bar as appropriate. * Intercept offsite links, but offer setting to opt out of feature. * This version uses uniform English ON / OFF verbiage. * Future: Align on i18n approach. * Future: iterate on how to show carrier baner TEXT from i18n system. Change-Id: Ibf19061e7a265a12aaeeea6ebe2cfcf41259eed1 --- M wikipedia/res/layout/fragment_search.xml M wikipedia/res/values/preference_keys.xml M wikipedia/res/values/strings.xml M wikipedia/res/xml/preferences.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/WikipediaZeroInterstitialEvent.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/LinkHandler.java M wikipedia/src/main/java/org/wikipedia/page/PageActivity.java M wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java M wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroTask.java 13 files changed, 304 insertions(+), 46 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/44/109844/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/preference_keys.xml b/wikipedia/res/values/preference_keys.xml index 17b8e79..9021a53 100644 --- a/wikipedia/res/values/preference_keys.xml +++ b/wikipedia/res/values/preference_keys.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <resources> <string name="preference_key_language">content_language</string> + <string name="preference_key_zero_interstitial">zero_warn_when_leaving</string> </resources> \ No newline at end of file diff --git a/wikipedia/res/values/strings.xml b/wikipedia/res/values/strings.xml index 51329b1..0a940ee 100644 --- a/wikipedia/res/values/strings.xml +++ b/wikipedia/res/values/strings.xml @@ -58,7 +58,18 @@ </string> <string name="edit_section_captcha_hint">Repeat words from above</string> <string name="edit_section_title_captcha">Enter captcha</string> + <string name="preferences_general_heading">General</string> <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> + <string name="zero_warn_when_leaving">Warn if leaving Wikipedia Zero</string> + <string name="zero_webpage_title">Wikipedia Zero FAQ (wikimediafoundation.org)</string> + <string name="zero_webpage_url">https://wikimediafoundation.org/wiki/Wikipedia_Zero_App_FAQ</string> + <string name="zero_wikipedia_zero_heading">Wikipedia Zero</string> + <string name="zero_interstitial_title">Leaving Wikipedia Zero</string> + <string name="zero_interstitial_leave_app">Continue to external site? Standard data charges may apply.</string> + <string name="zero_interstitial_continue">Continue</string> + <string name="zero_interstitial_cancel">Cancel</string> + <string name="zero_settings">Settings</string> </resources> \ No newline at end of file diff --git a/wikipedia/res/xml/preferences.xml b/wikipedia/res/xml/preferences.xml index 58a14df..116c462 100644 --- a/wikipedia/res/xml/preferences.xml +++ b/wikipedia/res/xml/preferences.xml @@ -1,8 +1,22 @@ <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> - <org.wikipedia.settings.LanguagePreference - android:key="@string/preference_key_language" - android:title="@string/preference_title_language" - /> + <PreferenceCategory android:title="@string/preferences_general_heading"> + <org.wikipedia.settings.LanguagePreference + android:key="@string/preference_key_language" + android:title="@string/preference_title_language" + /> + </PreferenceCategory> + <PreferenceCategory android:title="@string/zero_wikipedia_zero_heading"> + <CheckBoxPreference + android:key="zero_warn_when_leaving" + android:title="@string/zero_warn_when_leaving" + android:defaultValue="true" + /> + <Preference android:title="@string/zero_webpage_title" > + <intent android:action="android.intent.action.VIEW" + android:data="@string/zero_webpage_url" + /> + </Preference> + </PreferenceCategory> </PreferenceScreen> \ 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..c5764c9 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; @@ -44,10 +47,13 @@ public static long MEDIUM_ANIMATION_DURATION; public static String PREFERENCE_CONTENT_LANGUAGE; + public static String PREFERENCE_ZERO_INTERSTITIAL; public static float SCREEN_DENSITY; // Reload in onCreate to override public static String PROTOCOL = "https"; + + private ConnectionChangeReceiver connChangeReceiver; @Override public void onCreate() { @@ -61,6 +67,7 @@ SCREEN_DENSITY = getResources().getDisplayMetrics().density; PREFERENCE_CONTENT_LANGUAGE = getResources().getString(R.string.preference_key_language); + PREFERENCE_ZERO_INTERSTITIAL = getResources().getString(R.string.preference_key_zero_interstitial); PROTOCOL = "https"; // Move this to a preference or something later on @@ -70,6 +77,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 +151,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/WikipediaZeroInterstitialEvent.java b/wikipedia/src/main/java/org/wikipedia/events/WikipediaZeroInterstitialEvent.java new file mode 100644 index 0000000..9d76d89 --- /dev/null +++ b/wikipedia/src/main/java/org/wikipedia/events/WikipediaZeroInterstitialEvent.java @@ -0,0 +1,15 @@ +package org.wikipedia.events; + +import android.net.Uri; + +public class WikipediaZeroInterstitialEvent { + private Uri uri; + + public WikipediaZeroInterstitialEvent(Uri uri) { + this.uri = uri; + } + + public Uri getUri() { + return uri; + } +} \ No newline at end of file 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/LinkHandler.java b/wikipedia/src/main/java/org/wikipedia/page/LinkHandler.java index cc5497b..141395b 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/LinkHandler.java +++ b/wikipedia/src/main/java/org/wikipedia/page/LinkHandler.java @@ -2,7 +2,9 @@ import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.net.Uri; +import android.preference.PreferenceManager; import android.util.Log; import com.squareup.otto.Bus; import org.json.JSONException; @@ -12,6 +14,7 @@ import org.wikipedia.Site; import org.wikipedia.WikipediaApp; import org.wikipedia.events.NewWikiPageNavigationEvent; +import org.wikipedia.events.WikipediaZeroInterstitialEvent; import org.wikipedia.history.HistoryEntry; /** @@ -22,17 +25,32 @@ private final CommunicationBridge bridge; private final Bus bus; private final Site currentSite; + private WikipediaApp app; public LinkHandler(Context context, CommunicationBridge bridge, Site currentSite) { this.context = context; this.bridge = bridge; - this.bus = ((WikipediaApp)context.getApplicationContext()).getBus(); + this.app = (WikipediaApp)context.getApplicationContext(); + this.bus = app.getBus(); this.currentSite = currentSite; this.bridge.addListener("linkClicked", this); } - private void handleExternalLink(Uri uri) { + private void handleExternalLink(final Uri uri) { + if (app.getWikipediaZeroDisposition()) { + SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context); + if (sharedPref.getBoolean(app.PREFERENCE_ZERO_INTERSTITIAL, true)) { + bus.post(new WikipediaZeroInterstitialEvent(uri)); + } else { + visitExternalLink(uri); + } + } else { + visitExternalLink(uri); + } + } + + private void visitExternalLink(Uri uri) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(uri); diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java index 9781116..87be2f3 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java +++ b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java @@ -1,20 +1,26 @@ package org.wikipedia.page; +import android.app.AlertDialog; +import android.app.DialogFragment; +import android.content.DialogInterface; import android.content.Intent; -import android.content.IntentFilter; -import android.net.ConnectivityManager; +import android.net.Uri; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.preference.PreferenceManager; 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; +import org.wikipedia.settings.SettingsActivity; public class PageActivity extends FragmentActivity { public static final String ACTION_PAGE_FOR_TITLE = "org.wikipedia.page_for_title"; @@ -29,16 +35,23 @@ private PageViewFragment curPageFragment; - private ConnectionChangeReceiver connChangeReceiver; + private boolean pausedStateOfZero; + private static final int MESSAGE_START_SCREEN = 1; + private AlertDialog.Builder alert; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + PreferenceManager.setDefaultValues(this, R.xml.preferences, false); setContentView(R.layout.activity_main); app = ((WikipediaApp)getApplicationContext()); searchAriclesFragment = (SearchArticlesFragment) getSupportFragmentManager().findFragmentById(R.id.search_fragment); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); + + if (savedInstanceState != null) { + pausedStateOfZero = savedInstanceState.getBoolean("pausedStateOfZero"); + } bus = app.getBus(); bus.register(this); @@ -57,11 +70,25 @@ 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); + // TODO: setup an actual start screen handler and a response header listener + // for now, during runtime debugging we just set disposition to true here to start with W0 look + 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 +149,54 @@ } } + @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; + } + + @Subscribe + public void onWikipediaZeroInterstitialEvent(final WikipediaZeroInterstitialEvent event) { + alert = new AlertDialog.Builder(this); + alert.setTitle(getString(R.string.zero_interstitial_title)); + alert.setMessage(getString(R.string.zero_interstitial_leave_app)); + alert.setPositiveButton(getString(R.string.zero_interstitial_continue), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + visitExternalLink(event.getUri()); + } + }); + alert.setNegativeButton(getString(R.string.zero_interstitial_cancel), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + dialog.dismiss(); + } + }); + alert.setNeutralButton(getString(R.string.nav_item_preferences), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + visitSettings(); + } + }); + alert.create().show(); + } + + private void visitSettings() { + Intent intent = new Intent(); + intent.setClass(getApplicationContext(), SettingsActivity.class); + startActivity(intent); + } + + private void visitExternalLink(Uri uri) { + Intent intent = new Intent(); + intent.setAction(Intent.ACTION_VIEW); + intent.setData(uri); + startActivity(intent); + } + @Override protected void onStart() { super.onStart(); @@ -132,17 +207,30 @@ } @Override + protected void onResume() { + super.onResume(); + boolean latestWikipediaZeroDispostion = app.getWikipediaZeroDisposition(); + if (pausedStateOfZero && !latestWikipediaZeroDispostion) { + bus.post(new WikipediaZeroStateChangeEvent()); + } + } + + @Override + public void onPause() { + super.onPause(); + pausedStateOfZero = app.getWikipediaZeroDisposition(); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putBoolean("pausedStateOfZero", pausedStateOfZero); + } + + @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..91e4b04 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. @@ -103,15 +115,29 @@ pageImagesCache = savedInstanceState.getParcelable("pageImagesCache"); lastSearchedText = savedInstanceState.getString("lastSearchedText"); isSearchActive = savedInstanceState.getBoolean("isSearchActive"); + pausedStateOfZero = savedInstanceState.getBoolean("pausedStateOfZero"); } + 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); + 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; + } 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); @@ -271,6 +297,7 @@ outState.putParcelable("pageImagesCache", pageImagesCache); outState.putString("lastSearchedText", lastSearchedText); outState.putBoolean("isSearchActive", isSearchActive); + outState.putBoolean("pausedStateOfZero", pausedStateOfZero); } private class SearchResultAdapter extends BaseAdapter { @@ -354,6 +381,53 @@ Utils.ensureTranslationY(getView(), 0); } + @Subscribe + public void onWikipediaZeroStateChangeEvent(WikipediaZeroStateChangeEvent event) { + if (app.getWikipediaZeroDisposition()) { + setWikipediaZeroChrome(); + } else { + setNormalChrome(); + } + } + + private void setWikipediaZeroChrome() { + 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.onPause(); + pausedStateOfZero = app.getWikipediaZeroDisposition(); + } + + @Override + public void onResume() { + super.onResume(); + boolean latestWikipediaZeroDispostion = app.getWikipediaZeroDisposition(); + if (pausedStateOfZero != latestWikipediaZeroDispostion) { + app.getBus().post(new WikipediaZeroStateChangeEvent()); + } else if (latestWikipediaZeroDispostion) { + setWikipediaZeroChrome(); + } + } + @Override public void onStart() { super.onStart(); diff --git a/wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroTask.java b/wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroTask.java index e98b4c6..084eed2 100644 --- a/wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroTask.java +++ b/wikipedia/src/main/java/org/wikipedia/zero/WikipediaZeroTask.java @@ -13,11 +13,13 @@ super(ExecutorService.getSingleton().getExecutor(WikipediaZeroTask.class, 1), api); } + // TODO: change API call once production change in place @Override public RequestBuilder buildRequest(Api api) { return api.action("zeroconfig").param("type", "config"); } + // TODO: change response processing and set banner messaging @Override public Boolean processResult(ApiResult result) throws Throwable { JSONObject results = result.asObject(); -- To view, visit https://gerrit.wikimedia.org/r/109844 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibf19061e7a265a12aaeeea6ebe2cfcf41259eed1 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
