Skip to content

Commit 506948a

Browse files
authored
Merge pull request #20223 from brave/30371_rewards_tipping_tablet_ui
Rewards tipping tablet UI
2 parents 0239102 + 8f40543 commit 506948a

27 files changed

+1817
-753
lines changed

android/brave_java_resources.gni

+12
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ brave_java_resources = [
152152
"java/res/drawable-nodpi/fee_icon.png",
153153
"java/res/drawable-nodpi/ic_quick_action_search_and_bookmark_widget_preview.png",
154154
"java/res/drawable-nodpi/loader0_orange.png",
155+
"java/res/drawable-sw600dp/bottomsheet_rewards_tipping_success_background.xml",
155156
"java/res/drawable-xhdpi/brave_ads_launch_graphic.png",
156157
"java/res/drawable-xhdpi/brave_sync_btn_laptop.png",
157158
"java/res/drawable-xhdpi/btn_bat.png",
@@ -348,6 +349,7 @@ brave_java_resources = [
348349
"java/res/drawable/blue_rounded_notification_bg.xml",
349350
"java/res/drawable/bookmark_menu_bg.xml",
350351
"java/res/drawable/bottomsheet_rewards_background.xml",
352+
"java/res/drawable/bottomsheet_rewards_background_tablet.xml",
351353
"java/res/drawable/bottomsheet_rewards_tipping_success_background.xml",
352354
"java/res/drawable/bottomsheet_top_bar.xml",
353355
"java/res/drawable/brave_badge_rewards_background_large.xml",
@@ -710,6 +712,7 @@ brave_java_resources = [
710712
"java/res/drawable/tab_gradient_separator.xml",
711713
"java/res/drawable/tab_selector.xml",
712714
"java/res/drawable/tipping_background_success.xml",
715+
"java/res/drawable/tipping_banner_tablet_ui_background.xml",
713716
"java/res/drawable/tipping_banner_view_background.xml",
714717
"java/res/drawable/tipping_default_background.xml",
715718
"java/res/drawable/tipping_error_alert_message_background.xml",
@@ -723,6 +726,7 @@ brave_java_resources = [
723726
"java/res/drawable/transparent_shadow_background.xml",
724727
"java/res/drawable/unverified_48_rounded_bg.xml",
725728
"java/res/drawable/upload_icon.xml",
729+
"java/res/drawable/verification_tick_mark.xml",
726730
"java/res/drawable/wallet_chip_outline.xml",
727731
"java/res/drawable/wallet_radio_button_normal.xml",
728732
"java/res/drawable/wallet_radio_button_selected.xml",
@@ -738,7 +742,11 @@ brave_java_resources = [
738742
"java/res/layout-land/brave_shields_stats_row.xml",
739743
"java/res/layout-land/verify_wallet_activity.xml",
740744
"java/res/layout-sw600dp-land/brave_shields_stats_row.xml",
745+
"java/res/layout-sw600dp/brave_rewards_tippingpanel_fragment.xml",
746+
"java/res/layout-sw600dp/brave_rewards_tippingpanel_fragment_base.xml",
741747
"java/res/layout-sw600dp/brave_shields_stats_row.xml",
748+
"java/res/layout-sw600dp/rewards_tipping_banner_fragment.xml",
749+
"java/res/layout-sw600dp/rewards_tipping_success_contribution_fragment.xml",
742750
"java/res/layout/activity_account_detail.xml",
743751
"java/res/layout/activity_account_details_with_qr.xml",
744752
"java/res/layout/activity_account_private_key.xml",
@@ -758,6 +766,7 @@ brave_java_resources = [
758766
"java/res/layout/activity_playlist_host.xml",
759767
"java/res/layout/activity_split_tunnel.xml",
760768
"java/res/layout/activity_tipping_banner_mobile.xml",
769+
"java/res/layout/activity_tipping_banner_tablet.xml",
761770
"java/res/layout/activity_welcome_onboarding.xml",
762771
"java/res/layout/application_item_layout.xml",
763772
"java/res/layout/approve_tx_bottom_sheet.xml",
@@ -800,7 +809,9 @@ brave_java_resources = [
800809
"java/res/layout/brave_rewards_panel_tip_layout.xml",
801810
"java/res/layout/brave_rewards_panel_unverified_layout.xml",
802811
"java/res/layout/brave_rewards_reset_tab_content.xml",
812+
"java/res/layout/brave_rewards_tippingpanel_bottomsheet.xml",
803813
"java/res/layout/brave_rewards_tippingpanel_fragment.xml",
814+
"java/res/layout/brave_rewards_tippingpanel_fragment_base.xml",
804815
"java/res/layout/brave_set_default_browser_dialog.xml",
805816
"java/res/layout/brave_shields_main_layout.xml",
806817
"java/res/layout/brave_shields_option_layout.xml",
@@ -934,6 +945,7 @@ brave_java_resources = [
934945
"java/res/layout/rewards_onboarding_location_choose.xml",
935946
"java/res/layout/rewards_panel_vbat_expire_notice.xml",
936947
"java/res/layout/rewards_response_modal.xml",
948+
"java/res/layout/rewards_tipping_banner_fragment.xml",
937949
"java/res/layout/rewards_tipping_success_contribution_fragment.xml",
938950
"java/res/layout/rewards_you_are_not_earning_dialog.xml",
939951
"java/res/layout/search_preference.xml",

android/brave_java_sources.gni

+4-1
Original file line numberDiff line numberDiff line change
@@ -332,9 +332,12 @@ brave_java_sources = [
332332
"../../brave/android/java/org/chromium/chrome/browser/rewards/onboarding/CountrySelectionSpinnerAdapter.java",
333333
"../../brave/android/java/org/chromium/chrome/browser/rewards/onboarding/RewardsOnboarding.java",
334334
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/MonthlyContributionToolTip.java",
335+
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/PopupWindowTippingTabletUI.java",
335336
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingBannerActivity.java",
337+
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingBannerFragment.java",
338+
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingPanelBottomsheet.java",
336339
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingPanelFragment.java",
337-
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingSuccessContributionFragment.java",
340+
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingSuccessContribution.java",
338341
"../../brave/android/java/org/chromium/chrome/browser/rewards/tipping/TippingVerifiedCreatorToolTip.java",
339342
"../../brave/android/java/org/chromium/chrome/browser/safe_browsing/settings/BraveStandardProtectionSettingsFragment.java",
340343
"../../brave/android/java/org/chromium/chrome/browser/safe_browsing/settings/NoGooglePlayServicesDialog.java",

android/java/org/chromium/chrome/browser/rewards/BraveRewardsPanel.java

+29-15
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
import org.chromium.chrome.browser.preferences.BravePref;
7676
import org.chromium.chrome.browser.profiles.Profile;
7777
import org.chromium.chrome.browser.rewards.onboarding.RewardsOnboarding;
78+
import org.chromium.chrome.browser.rewards.tipping.PopupWindowTippingTabletUI;
7879
import org.chromium.chrome.browser.rewards.tipping.RewardsTippingBannerActivity;
7980
import org.chromium.chrome.browser.tab.Tab;
8081
import org.chromium.chrome.browser.util.BraveConstants;
@@ -162,7 +163,7 @@ public enum NotificationClickAction {
162163
TURN_ON_ADS;
163164
}
164165

165-
private boolean shouldShowOnboardingForConnectAccount;
166+
private boolean mShouldShowOnboardingForConnectAccount;
166167

167168
private final View mAnchorView;
168169
private final PopupWindow mPopupWindow;
@@ -203,7 +204,7 @@ public enum NotificationClickAction {
203204
private View mNotificationLayout;
204205
private View mNotificationPermissionLayout;
205206
private boolean mClaimInProcess;
206-
private boolean notificationShown;
207+
private boolean mNotificationShown;
207208

208209
private View mBraveRewardsOnboardingModalView;
209210
private View mRewardsResponseModal;
@@ -219,6 +220,8 @@ public enum NotificationClickAction {
219220
private View mBalanceDataViewGroups;
220221
private View mEstimatedToolTip;
221222
private View mVbatUserdrainToolTip;
223+
private PopupWindowTippingTabletUI mPopupWindowTippingTabletUI;
224+
private boolean mIsTablet;
222225

223226
public BraveRewardsPanel(View anchorView) {
224227
mCurrentNotificationId = "";
@@ -336,9 +339,9 @@ private void setUpViews() {
336339
mPopupView = (ViewGroup) inflater.inflate(R.layout.brave_rewards_panel_layout, null);
337340

338341
int deviceWidth = ConfigurationUtils.getDisplayMetrics(mActivity).get("width");
339-
boolean isTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity);
342+
mIsTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity);
340343

341-
mPopupWindow.setWidth((int) (isTablet ? (deviceWidth * 0.6) : (deviceWidth * 0.95)));
344+
mPopupWindow.setWidth((int) (mIsTablet ? (deviceWidth * 0.6) : (deviceWidth * 0.95)));
342345

343346
mBravePanelShadow = mPopupView.findViewById(R.id.panel_shadow);
344347
mBraveRewardsOnboardingView =
@@ -413,10 +416,17 @@ public void onClick(View v) {
413416

414417
TextView btnSendTip = mPopupView.findViewById(R.id.btn_send_tip);
415418
btnSendTip.setOnClickListener(view -> {
416-
Intent intent = new Intent(
417-
ContextUtils.getApplicationContext(), RewardsTippingBannerActivity.class);
418-
intent.putExtra(RewardsTippingBannerActivity.TAB_ID_EXTRA, mCurrentTabId);
419-
mActivity.startActivityForResult(intent, BraveConstants.SITE_BANNER_REQUEST_CODE);
419+
if (mIsTablet) {
420+
mPopupWindowTippingTabletUI =
421+
PopupWindowTippingTabletUI.newInstance(mAnchorView, mCurrentTabId);
422+
mPopupWindowTippingTabletUI.show(mBraveActivity.getSupportFragmentManager(),
423+
"PopupWindowTippingTabletUITag");
424+
} else {
425+
Intent intent = new Intent(
426+
ContextUtils.getApplicationContext(), RewardsTippingBannerActivity.class);
427+
intent.putExtra(RewardsTippingBannerActivity.TAB_ID_EXTRA, mCurrentTabId);
428+
mActivity.startActivityForResult(intent, BraveConstants.SITE_BANNER_REQUEST_CODE);
429+
}
420430
});
421431

422432
mBtnTip = mPopupView.findViewById(R.id.tip_btn);
@@ -839,7 +849,7 @@ private void showNotification(String id, int type, long timestamp, String[] args
839849
mRewardsMainLayout.setForeground(
840850
new ColorDrawable(ContextCompat.getColor(mActivity, foregroundColor)));
841851
enableControls(false, mRewardsMainLayout);
842-
notificationShown = true;
852+
mNotificationShown = true;
843853
}
844854

845855
setNotificationButtoClickListener(notificationClickAction);
@@ -1197,8 +1207,8 @@ public void onBalance(boolean success) {
11971207

11981208
@Override
11991209
public void OnRewardsParameters() {
1200-
if (shouldShowOnboardingForConnectAccount) {
1201-
shouldShowOnboardingForConnectAccount = false;
1210+
if (mShouldShowOnboardingForConnectAccount) {
1211+
mShouldShowOnboardingForConnectAccount = false;
12021212
showBraveRewardsOnboarding(true);
12031213
} else if (mExternalWallet != null) {
12041214
if (mBraveRewardsNativeWorker.getVbatDeadline() > 0) {
@@ -1240,8 +1250,7 @@ private void showOnBoarding() {
12401250
try {
12411251
BraveActivity activity = BraveActivity.getBraveActivity();
12421252
int deviceWidth = ConfigurationUtils.getDisplayMetrics(activity).get("width");
1243-
boolean isTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(activity);
1244-
deviceWidth = (int) (isTablet ? (deviceWidth * 0.6) : (deviceWidth * 0.95));
1253+
deviceWidth = (int) (mIsTablet ? (deviceWidth * 0.6) : (deviceWidth * 0.95));
12451254
RewardsOnboarding panel = new RewardsOnboarding(mAnchorView, deviceWidth);
12461255
panel.showLikePopDownMenu();
12471256
} catch (BraveActivity.BraveActivityNotFoundException e) {
@@ -1373,7 +1382,7 @@ private void clickOnCloseButtonOfNotificationPermission() {
13731382
View closeButton = mNotificationPermissionLayout.findViewById(R.id.close_text_button);
13741383
closeButton.setOnClickListener((v) -> {
13751384
mNotificationPermissionLayout.setVisibility(View.GONE);
1376-
if (!notificationShown) {
1385+
if (!mNotificationShown) {
13771386
mNotificationLayout.setVisibility(View.GONE);
13781387
}
13791388
});
@@ -1385,7 +1394,7 @@ private void clickOnTurnOnNotificationButton() {
13851394
turnOnNotification.setOnClickListener((v) -> {
13861395
mNotificationPermissionLayout.setVisibility(View.GONE);
13871396
BravePermissionUtils.notificationSettingPage(mAnchorView.getContext());
1388-
if (!notificationShown) {
1397+
if (!mNotificationShown) {
13891398
mNotificationLayout.setVisibility(View.GONE);
13901399
}
13911400
});
@@ -2171,6 +2180,11 @@ public void run() {
21712180

21722181
public void dismiss() {
21732182
mPopupWindow.dismiss();
2183+
if (mPopupWindowTippingTabletUI != null && mPopupWindowTippingTabletUI.getDialog() != null
2184+
&& mPopupWindowTippingTabletUI.getDialog().isShowing()
2185+
&& !mPopupWindowTippingTabletUI.isRemoving()) {
2186+
mPopupWindowTippingTabletUI.getDialog().dismiss();
2187+
}
21742188
}
21752189

21762190
public boolean isShowing() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
/**
2+
* Copyright (c) 2023 The Brave Authors. All rights reserved.
3+
* This Source Code Form is subject to the terms of the Mozilla Public
4+
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
5+
* You can obtain one at https://mozilla.org/MPL/2.0/.
6+
*/
7+
8+
package org.chromium.chrome.browser.rewards.tipping;
9+
10+
import android.content.res.Configuration;
11+
import android.content.res.Resources;
12+
import android.graphics.Color;
13+
import android.graphics.drawable.ColorDrawable;
14+
import android.os.Bundle;
15+
import android.text.SpannableString;
16+
import android.text.method.LinkMovementMethod;
17+
import android.util.DisplayMetrics;
18+
import android.view.Gravity;
19+
import android.view.LayoutInflater;
20+
import android.view.View;
21+
import android.view.ViewGroup;
22+
import android.view.Window;
23+
import android.view.WindowManager;
24+
import android.widget.LinearLayout;
25+
import android.widget.TextView;
26+
27+
import androidx.fragment.app.DialogFragment;
28+
29+
import org.chromium.chrome.R;
30+
import org.chromium.chrome.browser.BraveRewardsHelper;
31+
import org.chromium.chrome.browser.util.ConfigurationUtils;
32+
33+
public class PopupWindowTippingTabletUI extends DialogFragment {
34+
private static final String TAG = "TippingBanner";
35+
private static final String ANCHOR_Y_POSITION = "y_position";
36+
37+
private int mCurrentTabId = -1;
38+
39+
public static PopupWindowTippingTabletUI newInstance(View anchorView, int currentTabId) {
40+
int[] location = new int[2];
41+
anchorView.getLocationOnScreen(location);
42+
int popup_y_position = location[1] + anchorView.getHeight() - 40;
43+
PopupWindowTippingTabletUI fragment = new PopupWindowTippingTabletUI();
44+
Bundle args = new Bundle();
45+
args.putInt(RewardsTippingBannerActivity.TAB_ID_EXTRA, currentTabId);
46+
args.putInt(ANCHOR_Y_POSITION, popup_y_position);
47+
fragment.setArguments(args);
48+
return fragment;
49+
}
50+
51+
@Override
52+
public void onResume() {
53+
super.onResume();
54+
setDialogParams();
55+
}
56+
57+
private void setDialogParams() {
58+
DisplayMetrics displayMetrics = new DisplayMetrics();
59+
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
60+
int mDeviceWidth = displayMetrics.widthPixels;
61+
Window window = getDialog().getWindow();
62+
63+
WindowManager.LayoutParams params = window.getAttributes();
64+
boolean isLandscape = ConfigurationUtils.isLandscape(getActivity());
65+
double widthRatio = isLandscape ? 0.8 : 0.96;
66+
params.width = (int) (widthRatio * mDeviceWidth);
67+
params.height = LinearLayout.LayoutParams.WRAP_CONTENT;
68+
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
69+
if (getArguments() != null) {
70+
params.y = getArguments().getInt(ANCHOR_Y_POSITION);
71+
}
72+
73+
params.gravity = Gravity.TOP;
74+
params.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND;
75+
window.setAttributes(params);
76+
}
77+
78+
@Override
79+
public View onCreateView(
80+
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
81+
View view = inflater.inflate(R.layout.activity_tipping_banner_tablet, container, false);
82+
83+
if (getArguments() != null) {
84+
mCurrentTabId = getArguments().getInt(RewardsTippingBannerActivity.TAB_ID_EXTRA);
85+
}
86+
replace();
87+
updateTermsOfServicePlaceHolder(view);
88+
return view;
89+
}
90+
91+
private void updateTermsOfServicePlaceHolder(View view) {
92+
Resources res = getResources();
93+
TextView proceedTextView = view.findViewById(R.id.proceed_terms_of_service);
94+
proceedTextView.setMovementMethod(LinkMovementMethod.getInstance());
95+
String termsOfServiceText = String.format(res.getString(R.string.brave_rewards_tos_text),
96+
res.getString(R.string.terms_of_service), res.getString(R.string.privacy_policy));
97+
98+
SpannableString spannableString = BraveRewardsHelper.tosSpannableString(
99+
termsOfServiceText, R.color.terms_of_service_text_color);
100+
proceedTextView.setText(spannableString);
101+
}
102+
103+
@Override
104+
public void onConfigurationChanged(Configuration newConfig) {
105+
super.onConfigurationChanged(newConfig);
106+
setDialogParams();
107+
}
108+
109+
public void replace() {
110+
RewardsTippingBannerFragment tippingBannerFragment =
111+
RewardsTippingBannerFragment.newInstance(mCurrentTabId);
112+
getChildFragmentManager()
113+
.beginTransaction()
114+
.replace(R.id.tippingBannerFragment, tippingBannerFragment)
115+
.commit();
116+
RewardsTippingPanelFragment tippingPanelFragment =
117+
RewardsTippingPanelFragment.newInstance(mCurrentTabId);
118+
getChildFragmentManager()
119+
.beginTransaction()
120+
.replace(R.id.tippingPanelFragment2, tippingPanelFragment)
121+
.commit();
122+
}
123+
}

0 commit comments

Comments
 (0)