From acc67d70ca7fb66b66c64dcf4098b5ddefa3c76e Mon Sep 17 00:00:00 2001 From: Deep Date: Wed, 25 Nov 2020 20:48:20 -0500 Subject: [PATCH] Add layout for fall back UI for top tiles --- .../browser/brave_stats/BraveStatsUtil.java | 42 ++++++++++ .../browser/ntp/BraveNewTabPageLayout.java | 79 ++++++++++++++++++- .../browser/ntp/widget/NTPWidgetAdapter.java | 38 +-------- .../suggestions/tile/BraveTileView.java | 7 +- .../java/res/layout/brave_stats_layout.xml | 1 + .../suggestions_site_tile_grid_modern.xml | 1 - 6 files changed, 125 insertions(+), 43 deletions(-) diff --git a/android/java/org/chromium/chrome/browser/brave_stats/BraveStatsUtil.java b/android/java/org/chromium/chrome/browser/brave_stats/BraveStatsUtil.java index e8ed055fc95..7c509de1e0d 100644 --- a/android/java/org/chromium/chrome/browser/brave_stats/BraveStatsUtil.java +++ b/android/java/org/chromium/chrome/browser/brave_stats/BraveStatsUtil.java @@ -6,9 +6,15 @@ package org.chromium.chrome.browser.brave_stats; import android.util.Pair; +import android.view.View; +import android.widget.TextView; +import org.chromium.chrome.R; import org.chromium.chrome.browser.app.BraveActivity; import org.chromium.chrome.browser.brave_stats.BraveStatsBottomSheetDialogFragment; +import org.chromium.chrome.browser.preferences.BravePref; +import org.chromium.chrome.browser.preferences.BravePrefServiceBridge; +import org.chromium.chrome.browser.profiles.Profile; import java.text.SimpleDateFormat; import java.util.Calendar; @@ -86,4 +92,40 @@ public class BraveStatsUtil { cal.add(Calendar.DAY_OF_YEAR, days); return s.format(new Date(cal.getTimeInMillis())); } + + public static void updateBraveStatsLayout(View view) { + Profile mProfile = Profile.getLastUsedRegularProfile(); + TextView mAdsBlockedCountTextView = + (TextView) view.findViewById(R.id.brave_stats_text_ads_count); + TextView mDataSavedValueTextView = + (TextView) view.findViewById(R.id.brave_stats_data_saved_value); + TextView mEstTimeSavedCountTextView = + (TextView) view.findViewById(R.id.brave_stats_text_time_count); + TextView mAdsBlockedCountTextTextView = + (TextView) view.findViewById(R.id.brave_stats_text_ads_count_text); + TextView mDataSavedValueTextTextView = + (TextView) view.findViewById(R.id.brave_stats_data_saved_value_text); + TextView mEstTimeSavedCountTextTextView = + (TextView) view.findViewById(R.id.brave_stats_text_time_count_text); + + long trackersBlockedCount = + BravePrefServiceBridge.getInstance().getTrackersBlockedCount(mProfile); + long adsBlockedCount = BravePrefServiceBridge.getInstance().getAdsBlockedCount(mProfile); + long dataSaved = BravePrefServiceBridge.getInstance().getDataSaved(mProfile); + long estimatedMillisecondsSaved = + (trackersBlockedCount + adsBlockedCount) * MILLISECONDS_PER_ITEM; + + Pair adsTrackersPair = + getBraveStatsStringFormNumberPair(adsBlockedCount, false); + Pair dataSavedPair = getBraveStatsStringFormNumberPair(dataSaved, true); + Pair timeSavedPair = + getBraveStatsStringFromTime(estimatedMillisecondsSaved / 1000); + + mAdsBlockedCountTextView.setText(adsTrackersPair.first); + mDataSavedValueTextView.setText(dataSavedPair.first); + mEstTimeSavedCountTextView.setText(timeSavedPair.first); + mAdsBlockedCountTextTextView.setText(adsTrackersPair.second); + mDataSavedValueTextTextView.setText(dataSavedPair.second); + mEstTimeSavedCountTextTextView.setText(timeSavedPair.second); + } } \ No newline at end of file diff --git a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java index 84f5b139fd7..88175f26da5 100644 --- a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java +++ b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java @@ -122,6 +122,8 @@ public class BraveNewTabPageLayout extends NewTabPageLayout { private static final String BRAVE_BINANCE = "https://brave.com/binance/"; private static final String BRAVE_REF_URL = "https://brave.com/r/"; + private View mBraveStatsViewFallBackLayout; + private ImageView bgImageView; private Profile mProfile; @@ -169,6 +171,9 @@ public class BraveNewTabPageLayout extends NewTabPageLayout { protected void onFinishInflate() { super.onFinishInflate(); + // mBraveStatsViewFallBackLayout = (ViewGroup) + // findViewById(R.id.brave_stats_fallback_layout); + ntpWidgetLayout = findViewById(R.id.ntp_widget_layout); indicatorLayout = findViewById(R.id.indicator_layout); ntpWidgetViewPager = findViewById(R.id.ntp_widget_view_pager); @@ -197,11 +202,65 @@ public class BraveNewTabPageLayout extends NewTabPageLayout { showWidgetBasedOnOrder(); } + private void showFallBackNTPLayout() { + if (mBraveStatsViewFallBackLayout != null + && mBraveStatsViewFallBackLayout.getParent() != null) { + ((ViewGroup) mBraveStatsViewFallBackLayout.getParent()) + .removeView(mBraveStatsViewFallBackLayout); + } + LayoutInflater inflater = + (LayoutInflater) mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + mBraveStatsViewFallBackLayout = inflater.inflate(R.layout.brave_stats_layout, null); + + if (mBraveStatsViewFallBackLayout.getLayoutParams() + instanceof ViewGroup.MarginLayoutParams) { + ViewGroup.MarginLayoutParams layoutParams = + (ViewGroup.MarginLayoutParams) mBraveStatsViewFallBackLayout.getLayoutParams(); + layoutParams.setMargins(0, dpToPx(mActivity, 16), 0, dpToPx(mActivity, 16)); + mBraveStatsViewFallBackLayout.requestLayout(); + } + + mBraveStatsViewFallBackLayout.findViewById(R.id.brave_stats_title_layout) + .setVisibility(View.GONE); + ((TextView) mBraveStatsViewFallBackLayout.findViewById(R.id.brave_stats_text_ads)) + .setTextColor(mActivity.getResources().getColor(R.color.shield_text_color)); + ((TextView) mBraveStatsViewFallBackLayout.findViewById(R.id.brave_stats_data_saved_text)) + .setTextColor(mActivity.getResources().getColor(R.color.shield_text_color)); + ((TextView) mBraveStatsViewFallBackLayout.findViewById(R.id.brave_stats_text_time)) + .setTextColor(mActivity.getResources().getColor(R.color.shield_text_color)); + ((TextView) mBraveStatsViewFallBackLayout.findViewById(R.id.brave_stats_text_time_count)) + .setTextColor(mActivity.getResources().getColor(R.color.shield_text_color)); + ((TextView) mBraveStatsViewFallBackLayout.findViewById( + R.id.brave_stats_text_time_count_text)) + .setTextColor(mActivity.getResources().getColor(R.color.shield_text_color)); + mBraveStatsViewFallBackLayout.setBackgroundColor( + mActivity.getResources().getColor(android.R.color.transparent)); + mBraveStatsViewFallBackLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + checkForBraveStats(); + } + }); + BraveStatsUtil.updateBraveStatsLayout(mBraveStatsViewFallBackLayout); + if (mSiteSectionView.getParent() != null) { + ((ViewGroup) mSiteSectionView.getParent()).removeView(mSiteSectionView); + } + mainLayout.addView(mBraveStatsViewFallBackLayout, 0); + int insertionPoint = mainLayout.indexOfChild(findViewById(R.id.ntp_middle_spacer)) + 1; + if (!mNTPBackgroundImagesBridge.isSuperReferral() + || !NTPBackgroundImagesBridge.enableSponsoredImages() + || Build.VERSION.SDK_INT < Build.VERSION_CODES.M) + mainLayout.addView(mSiteSectionView, insertionPoint); + } + private List setWidgetList() { NTPWidgetManager ntpWidgetManager = NTPWidgetManager.getInstance(); LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); Map ntpWidgetMap = new TreeMap<>(); + if (mSiteSectionView != null && mSiteSectionView.getParent() != null) { + ((ViewGroup) mSiteSectionView.getParent()).removeView(mSiteSectionView); + } for (String widget : ntpWidgetManager.getUsedWidgets()) { NTPWidgetItem ntpWidgetItem = NTPWidgetManager.mWidgetsMap.get(widget); @@ -237,9 +296,6 @@ public class BraveNewTabPageLayout extends NewTabPageLayout { getTileGroup().hasReceivedData() && getTileGroup().isEmpty(); if (mSiteSectionView != null && !showPlaceholder) { mTopsiteErrorMessage.setVisibility(View.GONE); - if (mSiteSectionView.getParent() != null) { - ((ViewGroup) mSiteSectionView.getParent()).removeView(mSiteSectionView); - } if (mSiteSectionView.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { mSiteSectionView.setPadding(0, dpToPx(mActivity, 8), 0, 0); @@ -321,8 +377,17 @@ public class BraveNewTabPageLayout extends NewTabPageLayout { List tempList = setWidgetList(); if (tempList.size() > 0) { ntpWidgetLayout.setVisibility(View.VISIBLE); + if (mBraveStatsViewFallBackLayout != null + && mBraveStatsViewFallBackLayout.getParent() != null) { + ((ViewGroup) mBraveStatsViewFallBackLayout.getParent()) + .removeView(mBraveStatsViewFallBackLayout); + } } else { ntpWidgetLayout.setVisibility(View.GONE); + if (!UserPrefs.get(Profile.getLastUsedRegularProfile()) + .getBoolean(BravePref.NEW_TAB_PAGE_SHOW_BACKGROUND_IMAGE)) { + showFallBackNTPLayout(); + } } if (ntpWidgetAdapter != null) { @@ -357,7 +422,13 @@ public class BraveNewTabPageLayout extends NewTabPageLayout { } protected int getMaxRowsForMostVisitedTiles() { - return 1; + if (NTPWidgetManager.getInstance().getUsedWidgets().size() <= 0 + && !UserPrefs.get(Profile.getLastUsedRegularProfile()) + .getBoolean(BravePref.NEW_TAB_PAGE_SHOW_BACKGROUND_IMAGE)) { + return 2; + } else { + return 1; + } } @Override diff --git a/android/java/org/chromium/chrome/browser/ntp/widget/NTPWidgetAdapter.java b/android/java/org/chromium/chrome/browser/ntp/widget/NTPWidgetAdapter.java index 09580410c8b..60fba93b625 100644 --- a/android/java/org/chromium/chrome/browser/ntp/widget/NTPWidgetAdapter.java +++ b/android/java/org/chromium/chrome/browser/ntp/widget/NTPWidgetAdapter.java @@ -81,7 +81,7 @@ public class NTPWidgetAdapter extends PagerAdapter { }); } if (ntpWidgetItem.getWidgetType().equals(NTPWidgetManager.PREF_PRIVATE_STATS)) { - updateBraveStats(mainView); + BraveStatsUtil.updateBraveStatsLayout(mainView); } else if (ntpWidgetItem.getWidgetType().equals(NTPWidgetManager.PREF_BINANCE)) { Button connectButton = mainView.findViewById(R.id.btn_connect); LinearLayout bianceDisconnectLayout = @@ -143,42 +143,6 @@ public class NTPWidgetAdapter extends PagerAdapter { notifyDataSetChanged(); } - private void updateBraveStats(View view) { - TextView mAdsBlockedCountTextView = - (TextView) view.findViewById(R.id.brave_stats_text_ads_count); - TextView mDataSavedValueTextView = - (TextView) view.findViewById(R.id.brave_stats_data_saved_value); - TextView mEstTimeSavedCountTextView = - (TextView) view.findViewById(R.id.brave_stats_text_time_count); - TextView mAdsBlockedCountTextTextView = - (TextView) view.findViewById(R.id.brave_stats_text_ads_count_text); - TextView mDataSavedValueTextTextView = - (TextView) view.findViewById(R.id.brave_stats_data_saved_value_text); - TextView mEstTimeSavedCountTextTextView = - (TextView) view.findViewById(R.id.brave_stats_text_time_count_text); - - long trackersBlockedCount = - BravePrefServiceBridge.getInstance().getTrackersBlockedCount(mProfile); - long adsBlockedCount = BravePrefServiceBridge.getInstance().getAdsBlockedCount(mProfile); - long dataSaved = BravePrefServiceBridge.getInstance().getDataSaved(mProfile); - long estimatedMillisecondsSaved = - (trackersBlockedCount + adsBlockedCount) * BraveStatsUtil.MILLISECONDS_PER_ITEM; - - Pair adsTrackersPair = - BraveStatsUtil.getBraveStatsStringFormNumberPair(adsBlockedCount, false); - Pair dataSavedPair = - BraveStatsUtil.getBraveStatsStringFormNumberPair(dataSaved, true); - Pair timeSavedPair = - BraveStatsUtil.getBraveStatsStringFromTime(estimatedMillisecondsSaved / 1000); - - mAdsBlockedCountTextView.setText(adsTrackersPair.first); - mDataSavedValueTextView.setText(dataSavedPair.first); - mEstTimeSavedCountTextView.setText(timeSavedPair.first); - mAdsBlockedCountTextTextView.setText(adsTrackersPair.second); - mDataSavedValueTextTextView.setText(dataSavedPair.second); - mEstTimeSavedCountTextTextView.setText(timeSavedPair.second); - } - private void showPopupMenu(Context context, View view, final int position) { PopupMenu popup = new PopupMenu(context, view); popup.getMenuInflater().inflate(R.menu.ntp_widget_menu, popup.getMenu()); diff --git a/android/java/org/chromium/chrome/browser/suggestions/tile/BraveTileView.java b/android/java/org/chromium/chrome/browser/suggestions/tile/BraveTileView.java index 79959d7e8aa..5f5c9c8b4eb 100644 --- a/android/java/org/chromium/chrome/browser/suggestions/tile/BraveTileView.java +++ b/android/java/org/chromium/chrome/browser/suggestions/tile/BraveTileView.java @@ -13,6 +13,7 @@ import android.widget.TextView; import org.chromium.chrome.R; import org.chromium.chrome.browser.BraveRewardsHelper; import org.chromium.chrome.browser.ChromeTabbedActivity; +import org.chromium.chrome.browser.ntp.widget.NTPWidgetManager; import org.chromium.chrome.browser.ntp_background_images.util.NTPUtil; import org.chromium.chrome.browser.ntp_background_images.util.SponsoredImageUtil; import org.chromium.chrome.browser.preferences.BravePref; @@ -30,6 +31,10 @@ public class BraveTileView extends TileView { public void setTitle(String title, int titleLines) { super.setTitle(title, titleLines); TextView mTitleView = findViewById(R.id.tile_view_title); - mTitleView.setTextColor(getResources().getColor(android.R.color.black)); + if (NTPWidgetManager.getInstance().getUsedWidgets().size() > 0 + || UserPrefs.get(Profile.getLastUsedRegularProfile()) + .getBoolean(BravePref.NEW_TAB_PAGE_SHOW_BACKGROUND_IMAGE)) { + mTitleView.setTextColor(getResources().getColor(android.R.color.black)); + } } } diff --git a/android/java/res/layout/brave_stats_layout.xml b/android/java/res/layout/brave_stats_layout.xml index 5d632ea6ce4..46ea6edbc03 100644 --- a/android/java/res/layout/brave_stats_layout.xml +++ b/android/java/res/layout/brave_stats_layout.xml @@ -13,6 +13,7 @@ android:orientation="vertical"> \ No newline at end of file