Add AC UI on brave rewards onboarding

Update BRE panel behaviour
This commit is contained in:
Deep
2020-12-01 04:35:41 -05:00
parent a498109a9a
commit 3fa83a275b
20 changed files with 430 additions and 52 deletions
+6
View File
@@ -614,6 +614,11 @@ brave_java_resources = [
"java/res/drawable/brave_stats_radio_button_selected.xml",
"java/res/drawable/brave_stats_radio_button_selector.xml",
"java/res/drawable/brave_stats_radio_group_bg.xml",
"java/res/drawable/ac_radio_button_normal.xml",
"java/res/drawable/ac_radio_button_selected.xml",
"java/res/drawable/ac_radio_button_selector.xml",
"java/res/drawable/ac_radio_group_bg.xml",
"java/res/drawable/ac_text_selector.xml",
"java/res/drawable/brave_stats_rounded_bg.xml",
"java/res/drawable/brave_stats_ui_empty_bg.xml",
"java/res/drawable/brave_sync_btn.xml",
@@ -701,6 +706,7 @@ brave_java_resources = [
"java/res/font/poppins_medium.ttf",
"java/res/layout-land/brave_rewards_site_banner.xml",
"java/res/layout-land/verify_wallet_activity.xml",
"java/res/layout/brave_rewards_onboarding_ac_layout.xml",
"java/res/layout/brave_rewards_onboarding_item_layout.xml",
"java/res/layout/brave_rewards_onboarding_layout.xml",
"java/res/layout/brave_rewards_welcome_layout.xml",
@@ -9,6 +9,7 @@ package org.chromium.chrome.browser;
import android.os.Handler;
import androidx.annotation.Nullable;
import org.chromium.base.Log;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.chrome.browser.BraveRewardsBalance;
@@ -122,9 +123,11 @@ public class BraveRewardsNativeWorker {
}
public void OnNotifyFrontTabUrlChanged(int tabId, String url) {
Log.e("NTP", "OnNotifyFrontTabUrlChanged");
boolean chromeUrl = url.startsWith(UrlConstants.CHROME_SCHEME);
boolean newUrl = (frontTabUrl == null || !frontTabUrl.equals(url));
if (rewardsStatus != REWARDS_ENABLED || chromeUrl) {
if (chromeUrl) {
// Don't query 'GetPublisherInfo' and post response now.
mHandler.post(new Runnable() {
@Override
@@ -133,6 +136,7 @@ public class BraveRewardsNativeWorker {
}
});
} else if (newUrl) {
Log.e("NTP", "GetPublisherInfo");
GetPublisherInfo(tabId, url);
}
@@ -414,6 +418,12 @@ public class BraveRewardsNativeWorker {
}
}
public void SetAutoContributionAmount(double amount) {
synchronized(lock) {
nativeSetAutoContributionAmount(mNativeBraveRewardsNativeWorker, amount);
}
}
@CalledByNative
public void OnRefreshPublisher(int status, String publisherKey) {
for (BraveRewardsObserver observer : mObservers) {
@@ -443,6 +453,8 @@ public class BraveRewardsNativeWorker {
@CalledByNative
public void OnPublisherInfo(int tabId) {
Log.e("NTP", "OnPublisherInfo");
@PublisherStatus int pubStatus = GetPublisherStatus(tabId);
boolean verified = (pubStatus == BraveRewardsPublisher.CONNECTED ||
pubStatus == BraveRewardsPublisher.VERIFIED) ? true : false;
@@ -609,4 +621,5 @@ public class BraveRewardsNativeWorker {
private native void nativeRefreshPublisher(long nativeBraveRewardsNativeWorker, String publisherKey);
private native void nativeGetRewardsParameters(long nativeBraveRewardsNativeWorker);
private native void nativeSetAutoContributeEnabled(long nativeBraveRewardsNativeWorker, boolean isSetAutoContributeEnabled);
private native void nativeSetAutoContributionAmount(long nativeBraveRewardsNativeWorker, double amount);
}
@@ -12,15 +12,22 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.appcompat.widget.AppCompatImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveRewardsNativeWorker;
import java.util.Arrays;
import java.util.List;
public class BraveRewardsOnboardingPagerAdapter extends PagerAdapter {
private static final int WITH_7_OPTIONS = 7;
private static final int WITH_8_OPTIONS = 8;
private boolean shouldShowMoreOptions;
private static final List<String> mHeaders = Arrays.asList(
ContextUtils.getApplicationContext().getResources().getString(R.string.welcome_to_brave_rewards),
ContextUtils.getApplicationContext().getResources().getString(R.string.where_do_ads_show_up),
@@ -28,6 +35,7 @@ public class BraveRewardsOnboardingPagerAdapter extends PagerAdapter {
ContextUtils.getApplicationContext().getResources().getString(R.string.giving_back_made_effortless),
ContextUtils.getApplicationContext().getResources().getString(R.string.say_thank_you_with_tips),
ContextUtils.getApplicationContext().getResources().getString(R.string.what_can_you_do_with_tokens),
ContextUtils.getApplicationContext().getResources().getString(R.string.you_are_done),
ContextUtils.getApplicationContext().getResources().getString(R.string.you_are_done)
);
private static final List<String> mTexts = Arrays.asList(
@@ -37,6 +45,7 @@ public class BraveRewardsOnboardingPagerAdapter extends PagerAdapter {
ContextUtils.getApplicationContext().getResources().getString(R.string.giving_back_made_effortless_text),
ContextUtils.getApplicationContext().getResources().getString(R.string.say_thank_you_with_tips_text),
ContextUtils.getApplicationContext().getResources().getString(R.string.what_can_you_do_with_tokens_text),
ContextUtils.getApplicationContext().getResources().getString(R.string.you_are_done_text),
ContextUtils.getApplicationContext().getResources().getString(R.string.you_are_done_text)
);
private static final List<Integer> mImages = Arrays.asList(
@@ -46,18 +55,80 @@ public class BraveRewardsOnboardingPagerAdapter extends PagerAdapter {
R.drawable.ic_onboarding_graphic_auto_contribute,
R.drawable.ic_onboarding_graphic_tipping,
R.drawable.ic_onboarding_graphic_cashback,
R.drawable.ic_onboarding_graphic_completed,
R.drawable.ic_onboarding_graphic_completed
);
public void setOnboardingType(boolean shouldShowMoreOptions) {
this.shouldShowMoreOptions = shouldShowMoreOptions;
}
@Override
public Object instantiateItem(ViewGroup collection, int position) {
View view = LayoutInflater.from(ContextUtils.getApplicationContext()).inflate(R.layout.brave_rewards_onboarding_item_layout, null);
TextView titleView = view.findViewById(R.id.title_view);
titleView.setText(mHeaders.get(position));
TextView textView = view.findViewById(R.id.text_view);
textView.setText(mTexts.get(position));
AppCompatImageView imageView = view.findViewById(R.id.image_view);
imageView.setImageResource(mImages.get(position));
View view;
if (shouldShowMoreOptions
&& position == (WITH_8_OPTIONS-2)) {
view = LayoutInflater.from(ContextUtils.getApplicationContext()).inflate(R.layout.brave_rewards_onboarding_ac_layout, null);
RadioGroup hourRadioGroup = view.findViewById(R.id.hour_radio_group);
int adsPerHour = BraveRewardsNativeWorker.getInstance().GetAdsPerHour();
if (adsPerHour == 1) {
((RadioButton)view.findViewById(R.id.hour_1_radio)).setChecked(true);
} else if (adsPerHour == 2) {
((RadioButton)view.findViewById(R.id.hour_2_radio)).setChecked(true);
} else if (adsPerHour == 3) {
((RadioButton)view.findViewById(R.id.hour_3_radio)).setChecked(true);
} else if (adsPerHour == 4) {
((RadioButton)view.findViewById(R.id.hour_4_radio)).setChecked(true);
} else if (adsPerHour == 5) {
((RadioButton)view.findViewById(R.id.hour_5_radio)).setChecked(true);
}
hourRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
int hour = adsPerHour;
if (checkedId == R.id.hour_1_radio) {
hour = 1;
} else if (checkedId == R.id.hour_2_radio) {
hour = 2;
} else if (checkedId == R.id.hour_3_radio) {
hour = 3;
} else if (checkedId == R.id.hour_4_radio) {
hour = 4;
} else if (checkedId == R.id.hour_5_radio) {
hour = 5;
}
BraveRewardsNativeWorker.getInstance().SetAdsPerHour(hour);
}
});
RadioGroup contributeRadioGroup = view.findViewById(R.id.contribute_radio_group);
BraveRewardsNativeWorker.getInstance().SetAutoContributionAmount(15);
((RadioButton)view.findViewById(R.id.contribute_15_radio)).setChecked(true);
contributeRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
double contribute = 15;
if (checkedId == R.id.contribute_5_radio) {
contribute = 5;
} else if (checkedId == R.id.contribute_15_radio) {
contribute = 15;
} else if (checkedId == R.id.contribute_25_radio) {
contribute = 25;
} else if (checkedId == R.id.contribute_50_radio) {
contribute = 50;
}
BraveRewardsNativeWorker.getInstance().SetAutoContributionAmount(contribute);
}
});
} else {
view = LayoutInflater.from(ContextUtils.getApplicationContext()).inflate(R.layout.brave_rewards_onboarding_item_layout, null);
TextView titleView = view.findViewById(R.id.title_view);
titleView.setText(mHeaders.get(position));
TextView textView = view.findViewById(R.id.text_view);
textView.setText(mTexts.get(position));
AppCompatImageView imageView = view.findViewById(R.id.image_view);
imageView.setImageResource(mImages.get(position));
}
collection.addView(view);
return view;
}
@@ -69,7 +140,7 @@ public class BraveRewardsOnboardingPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return mHeaders.size();
return shouldShowMoreOptions ? WITH_8_OPTIONS : WITH_7_OPTIONS;
}
@Override
@@ -92,7 +92,7 @@ import java.util.Date;
public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveRewardsHelper.LargeIconReadyCallback {
private static final String BRAVE_TERMS_PAGE = "https://basicattentiontoken.org/user-terms-of-service/";
private static final String BRAVE_PRIVACY_PROTECTION = "https://brave.com/privacy/#rewards";
private static final String BRAVE_PRIVACY_POLICY = "https://brave.com/privacy/#rewards";
private static final String TAG = "BraveRewards";
private static final int UPDATE_BALANCE_INTERVAL = 60000; // In milliseconds
private static final int PUBLISHER_INFO_FETCH_RETRY = 3 * 1000; // In milliseconds
@@ -510,7 +510,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
}
}));
String tosText = String.format(mActivity.getResources().getString(R.string.brave_rewards_tos_text), mActivity.getResources().getString(R.string.terms_of_service), mActivity.getResources().getString(R.string.privacy_protection));
String tosText = String.format(mActivity.getResources().getString(R.string.brave_rewards_tos_text), mActivity.getResources().getString(R.string.terms_of_service), mActivity.getResources().getString(R.string.privacy_policy));
int termsOfServiceIndex = tosText.indexOf(mActivity.getResources().getString(R.string.terms_of_service));
Spanned tosTextSpanned = BraveRewardsHelper.spannedFromHtmlString(tosText);
SpannableString tosTextSS = new SpannableString(tosTextSpanned.toString());
@@ -533,7 +533,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
ClickableSpan privacyProtectionClickableSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
CustomTabActivity.showInfoPage(mActivity, BRAVE_PRIVACY_PROTECTION);
CustomTabActivity.showInfoPage(mActivity, BRAVE_PRIVACY_POLICY);
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
@@ -542,9 +542,9 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
}
};
int privacyPolicyIndex = tosText.indexOf(mActivity.getResources().getString(R.string.privacy_protection));
tosTextSS.setSpan(privacyProtectionClickableSpan, privacyPolicyIndex, privacyPolicyIndex + mActivity.getResources().getString(R.string.privacy_protection).length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tosTextSS.setSpan(new ForegroundColorSpan(mActivity.getResources().getColor(R.color.brave_rewards_modal_theme_color)), privacyPolicyIndex, privacyPolicyIndex + mActivity.getResources().getString(R.string.privacy_protection).length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
int privacyPolicyIndex = tosText.indexOf(mActivity.getResources().getString(R.string.privacy_policy));
tosTextSS.setSpan(privacyProtectionClickableSpan, privacyPolicyIndex, privacyPolicyIndex + mActivity.getResources().getString(R.string.privacy_policy).length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tosTextSS.setSpan(new ForegroundColorSpan(mActivity.getResources().getColor(R.color.brave_rewards_modal_theme_color)), privacyPolicyIndex, privacyPolicyIndex + mActivity.getResources().getString(R.string.privacy_policy).length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
TextView tosAndPpText = braveRewardsOptInView.findViewById(R.id.tos_pp_text);
tosAndPpText.setMovementMethod(LinkMovementMethod.getInstance());
@@ -564,7 +564,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
braveRewardsOnboardingModalView = root.findViewById(R.id.brave_rewards_onboarding_modal_id);
braveRewardsOnboardingModalView.setVisibility(View.VISIBLE);
String tosText = String.format(mActivity.getResources().getString(R.string.brave_rewards_tos_text), mActivity.getResources().getString(R.string.terms_of_service), mActivity.getResources().getString(R.string.privacy_protection));
String tosText = String.format(mActivity.getResources().getString(R.string.brave_rewards_tos_text), mActivity.getResources().getString(R.string.terms_of_service), mActivity.getResources().getString(R.string.privacy_policy));
int termsOfServiceIndex = tosText.indexOf(mActivity.getResources().getString(R.string.terms_of_service));
Spanned tosTextSpanned = BraveRewardsHelper.spannedFromHtmlString(tosText);
SpannableString tosTextSS = new SpannableString(tosTextSpanned.toString());
@@ -587,7 +587,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
ClickableSpan privacyProtectionClickableSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
CustomTabActivity.showInfoPage(mActivity, BRAVE_PRIVACY_PROTECTION);
CustomTabActivity.showInfoPage(mActivity, BRAVE_PRIVACY_POLICY);
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
@@ -596,9 +596,9 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
}
};
int privacyPolicyIndex = tosText.indexOf(mActivity.getResources().getString(R.string.privacy_protection));
tosTextSS.setSpan(privacyProtectionClickableSpan, privacyPolicyIndex, privacyPolicyIndex + mActivity.getResources().getString(R.string.privacy_protection).length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tosTextSS.setSpan(new ForegroundColorSpan(mActivity.getResources().getColor(R.color.brave_rewards_modal_theme_color)), privacyPolicyIndex, privacyPolicyIndex + mActivity.getResources().getString(R.string.privacy_protection).length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
int privacyPolicyIndex = tosText.indexOf(mActivity.getResources().getString(R.string.privacy_policy));
tosTextSS.setSpan(privacyProtectionClickableSpan, privacyPolicyIndex, privacyPolicyIndex + mActivity.getResources().getString(R.string.privacy_policy).length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tosTextSS.setSpan(new ForegroundColorSpan(mActivity.getResources().getColor(R.color.brave_rewards_modal_theme_color)), privacyPolicyIndex, privacyPolicyIndex + mActivity.getResources().getString(R.string.privacy_policy).length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
TextView tosAndPpText = braveRewardsOnboardingModalView.findViewById(R.id.tos_pp_text);
tosAndPpText.setMovementMethod(LinkMovementMethod.getInstance());
@@ -619,6 +619,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
braveRewardsOnboardingModalView.setVisibility(View.GONE);
BraveAdsNativeHelper.nativeSetAdsEnabled(Profile.getLastUsedRegularProfile());
BraveRewardsNativeWorker.getInstance().SetAutoContributeEnabled(true);
showBraveRewardsOnboarding(root);
}
}));
AppCompatImageView modalCloseButton = braveRewardsOnboardingModalView.findViewById(R.id.modal_close);
@@ -672,6 +673,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
public void onPageScrollStateChanged(int state) {}
});
braveRewardsOnboardingPagerAdapter = new BraveRewardsOnboardingPagerAdapter();
braveRewardsOnboardingPagerAdapter.setOnboardingType(BraveAdsNativeHelper.nativeIsBraveAdsEnabled(Profile.getLastUsedRegularProfile()));
braveRewardsViewPager.setAdapter(braveRewardsOnboardingPagerAdapter);
TabLayout braveRewardsTabLayout = braveRewardsOnboardingView.findViewById(R.id.brave_rewards_tab_layout);
braveRewardsTabLayout.setupWithViewPager(braveRewardsViewPager, true);
@@ -726,6 +728,9 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
if (braveRewardsOnboardingView != null) {
braveRewardsOnboardingView.setVisibility(View.GONE);
}
if (BraveAdsNativeHelper.nativeIsBraveAdsEnabled(Profile.getLastUsedRegularProfile())) {
showBraveRewardsWelcomeLayout(root);
}
} else {
braveRewardsViewPager.setCurrentItem(braveRewardsViewPager.getCurrentItem() + 1);
}
@@ -815,14 +820,17 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
if (root!= null && PackageUtils.isFirstInstall(mActivity)) {
if (BraveRewardsHelper.shouldShowBraveRewardsOnboarding()) {
showBraveRewardsOnboarding(root);
BraveRewardsHelper.setShowBraveRewardsOnboarding(true);
} else if ((BraveRewardsHelper.getBraveRewardsOpenCount() == 0 || BraveRewardsHelper.getBraveRewardsOpenCount() == 1)
BraveRewardsHelper.setShowBraveRewardsOnboarding(false);
} else if ((BraveRewardsHelper.getBraveRewardsOpenCount() == 0)
&& !BraveAdsNativeHelper.nativeIsBraveAdsEnabled(Profile.getLastUsedRegularProfile())) {
showBraveRewardsOnboardingModal(root);
BraveRewardsHelper.updateBraveRewardsOpenCount();
} else if (BraveRewardsHelper.getBraveRewardsOpenCount() == 1
&& BraveAdsNativeHelper.nativeIsBraveAdsEnabled(Profile.getLastUsedRegularProfile())) {
showBraveRewardsWelcomeLayout(root);
} else if (BraveRewardsHelper.getBraveRewardsOpenCount() == 1) {
if (BraveAdsNativeHelper.nativeIsBraveAdsEnabled(Profile.getLastUsedRegularProfile())) {
showBraveRewardsWelcomeLayout(root);
} else {
showBraveRewardsOptInLayout(root);
}
BraveRewardsHelper.updateBraveRewardsOpenCount();
}
}
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/transparent"/>
</shape>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#A78AFF"/>
<corners android:radius="2dp"/>
</shape>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:drawable="@drawable/ac_radio_button_normal" />
<item android:state_checked="true" android:drawable="@drawable/ac_radio_button_selected" />
</selector>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F1F3F5"/>
<corners android:radius="2dp"/>
</shape>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:color="@color/brave_rewards_modal_text_color"/>
<item android:state_checked="true" android:color="@android:color/white"/>
</selector>
@@ -0,0 +1,218 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2020 The Brave Authors. All rights reserved.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this file,
You can obtain one at http://mozilla.org/MPL/2.0/. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_gravity="center"
android:gravity="center"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginTop="24dp"
android:text="@string/basic_settings"
android:textColor="@color/brave_rewards_modal_title_color"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:layout_marginTop="8dp"
android:layout_marginBottom="16dp"
android:textSize="14sp"
android:text="@string/you_can_change_this_later"
android:textColor="@color/brave_rewards_modal_theme_color"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:textSize="14sp"
android:layout_marginBottom="8dp"
android:text="@string/how_often_do_you_see_ads"
android:textColor="@color/brave_rewards_modal_text_color"/>
<RadioGroup
android:id="@+id/hour_radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/ac_radio_group_bg"
android:padding="2dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/hour_1_radio"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/ac_radio_button_selector"
android:gravity="center"
android:textColor="@drawable/ac_text_selector"
android:button="@null"
android:checked="true"
android:textSize="24sp"
android:textStyle="bold"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="1" />
<RadioButton
android:id="@+id/hour_2_radio"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/ac_radio_button_selector"
android:gravity="center"
android:textColor="@drawable/ac_text_selector"
android:button="@null"
android:textSize="24sp"
android:textStyle="bold"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="2" />
<RadioButton
android:id="@+id/hour_3_radio"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/ac_radio_button_selector"
android:gravity="center"
android:textColor="@drawable/ac_text_selector"
android:button="@null"
android:textSize="24sp"
android:textStyle="bold"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="3" />
<RadioButton
android:id="@+id/hour_4_radio"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/ac_radio_button_selector"
android:gravity="center"
android:textColor="@drawable/ac_text_selector"
android:button="@null"
android:textSize="24sp"
android:textStyle="bold"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="4" />
<RadioButton
android:id="@+id/hour_5_radio"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/ac_radio_button_selector"
android:gravity="center"
android:textColor="@drawable/ac_text_selector"
android:button="@null"
android:textSize="24sp"
android:textStyle="bold"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="5" />
</RadioGroup>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:textSize="14sp"
android:layout_marginBottom="8dp"
android:text="@string/how_much_support"
android:textColor="@color/brave_rewards_modal_text_color"/>
<RadioGroup
android:id="@+id/contribute_radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/ac_radio_group_bg"
android:padding="2dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/contribute_5_radio"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/ac_radio_button_selector"
android:gravity="center"
android:textColor="@drawable/ac_text_selector"
android:button="@null"
android:textSize="14sp"
android:textStyle="bold"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="5 BAT" />
<RadioButton
android:id="@+id/contribute_15_radio"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/ac_radio_button_selector"
android:gravity="center"
android:textColor="@drawable/ac_text_selector"
android:button="@null"
android:checked="true"
android:textSize="14sp"
android:textStyle="bold"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="15 BAT" />
<RadioButton
android:id="@+id/contribute_25_radio"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/ac_radio_button_selector"
android:gravity="center"
android:textColor="@drawable/ac_text_selector"
android:button="@null"
android:textSize="14sp"
android:textStyle="bold"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="25 BAT" />
<RadioButton
android:id="@+id/contribute_50_radio"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/ac_radio_button_selector"
android:gravity="center"
android:textColor="@drawable/ac_text_selector"
android:button="@null"
android:textSize="14sp"
android:textStyle="bold"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="50 BAT" />
</RadioGroup>
</LinearLayout>
@@ -8,19 +8,21 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp">
<TextView
android:id="@+id/title_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginBottom="8dp"
android:layout_gravity="center"
android:gravity="center"
android:layout_marginTop="24dp"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="@android:color/black"/>
android:textColor="@color/brave_rewards_modal_title_color"/>
<TextView
android:id="@+id/text_view"
@@ -31,13 +33,18 @@
android:textSize="14sp"
android:textColor="@color/brave_rewards_modal_text_color"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:padding="16dp"
android:contentDescription="@null"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:gravity="center">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@null"/>
</FrameLayout>
</LinearLayout>
@@ -131,7 +131,7 @@
android:layout_height="wrap_content"
android:contentDescription="@null"
android:layout_gravity="end|top"
android:tint="@color/onboarding_text_color"
android:tint="@color/brave_rewards_modal_close_button_color"
android:src="@drawable/btn_close"/>
</FrameLayout>
@@ -112,7 +112,7 @@
android:layout_height="wrap_content"
android:contentDescription="@null"
android:layout_gravity="end|top"
android:tint="@color/onboarding_text_color"
android:tint="@color/brave_rewards_modal_close_button_color"
android:padding="16dp"
android:src="@drawable/btn_close"/>
@@ -13,8 +13,6 @@
android:gravity="center"
app:cardBackgroundColor="@color/brave_rewards_opt_in_bg_color"
android:visibility="gone"
app:cardElevation="10dp"
app:cardUseCompatPadding="true"
app:cardCornerRadius="8dp">
<FrameLayout
@@ -24,7 +22,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:padding="12dp"
android:orientation="vertical">
<TextView
@@ -43,7 +41,7 @@
android:id="@+id/brave_rewards_opt_in_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginBottom="12dp"
android:layout_gravity="center"
android:gravity="start|center_vertical"
android:text="@string/brave_rewards_opt_in_text"
@@ -64,7 +62,7 @@
android:paddingBottom="8dp"
android:paddingStart="32dp"
android:paddingEnd="32dp"
android:layout_marginBottom="16dp"
android:layout_marginBottom="8dp"
android:textColor="@color/brave_rewards_modal_theme_color"
style="?android:attr/borderlessButtonStyle"/>
@@ -74,7 +72,6 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:layout_marginBottom="16dp"
android:textSize="12sp"
android:textStyle="bold"
android:textColor="@color/brave_rewards_tos_color"/>
@@ -87,7 +84,7 @@
android:layout_height="wrap_content"
android:contentDescription="@null"
android:layout_gravity="end|top"
android:tint="@color/onboarding_text_color"
android:tint="@color/brave_rewards_modal_close_button_color"
android:padding="16dp"
android:src="@drawable/btn_close"/>
@@ -32,13 +32,16 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<include android:id="@+id/brave_rewards_opt_in_layout_id"
layout="@layout/brave_rewards_opt_in_layout"/>
<!-- <include android:id="@+id/brave_rewards_opt_in_layout_id"
layout="@layout/brave_rewards_opt_in_layout"/> -->
<include
android:id="@+id/header_layout"
layout="@layout/brave_rewards_panel_header"/>
<include android:id="@+id/brave_rewards_opt_in_layout_id"
layout="@layout/brave_rewards_opt_in_layout"/>
</FrameLayout>
<!--Layout when we are on a valid webpage-->
@@ -3,16 +3,16 @@
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/header">
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="top|center"
android:background="@drawable/header"
tools:ignore="UselessParent">
<GridLayout
@@ -215,4 +215,4 @@
android:visibility="gone"/>
</RelativeLayout>
</LinearLayout>
</FrameLayout>
+2
View File
@@ -124,8 +124,10 @@
<color name="white_alpha_50">#80FFFFFF</color>
<color name="binance_divider_color">#C0C0C0</color>
<color name="brave_rewards_modal_title_color">#212529</color>
<color name="brave_rewards_modal_text_color">#495057</color>
<color name="brave_rewards_modal_theme_color">#4C54D2</color>
<color name="brave_rewards_modal_close_button_color">#5E5F6C</color>
<color name="brave_rewards_tos_color">#868E96</color>
<color name="brave_rewards_opt_in_bg_color">#E7E9FE</color>
<color name="brave_rewards_opt_in_text_color">#474958</color>
@@ -26,6 +26,7 @@
#include "brave/build/android/jni_headers/BraveRewardsNativeWorker_jni.h"
#define DEFAULT_ADS_PER_HOUR 2
#define DEFAULT_AUTO_CONTRIBUTION_AMOUNT 10
namespace chrome {
namespace android {
@@ -612,6 +613,15 @@ void BraveRewardsNativeWorker::SetAdsPerHour(
ads_service_->SetAdsPerHour(value);
}
void BraveRewardsNativeWorker::SetAutoContributionAmount(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
jdouble value) {
if (brave_rewards_service_) {
brave_rewards_service_->SetAutoContributionAmount(value);
}
}
bool BraveRewardsNativeWorker::IsAnonWallet(JNIEnv* env,
const base::android::JavaParamRef<jobject>& jcaller) {
if (brave_rewards_service_) {
@@ -144,6 +144,10 @@ class BraveRewardsNativeWorker : public brave_rewards::RewardsServiceObserver,
const base::android::JavaParamRef<jobject>& obj,
jint value);
void SetAutoContributionAmount(JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
jdouble value);
void GetExternalWallet(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj);
@@ -1457,11 +1457,14 @@ until they verify, or until 90 days have passed.
Earn Tokens &amp; Give Back
</message>
<message name="IDS_BRAVE_REWARDS_MODAL_TEXT" desc="Brave rewards modal text">
Earn tokens by viewing privacy-respecting ads and support your favorite sites and content creators automatically.
Earn tokens by viewing Brave Private Ads and support content creators automatically.
</message>
<message name="IDS_BRAVE_REWARDS_TOS_TEXT" desc="Brave rewards tos text">
By proceeding, you agree to the <ph name="TERMS_OF_SERVICE">%1$s</ph> and <ph name="PRIVACY_POLICY">%2$s</ph>.
</message>
<message name="IDS_PRIVACY_POLICY" desc="Brave rewards tos text">
Privacy Policy
</message>
<message name="IDS_TAKE_QUICK_TOUR" desc="Brave rewards quick tour text">
Take a quick tour
</message>
@@ -1501,6 +1504,18 @@ until they verify, or until 90 days have passed.
<message name="IDS_WHAT_CAN_YOU_DO_WITH_TOKENS_TEXT" desc="Brave rewards onboarding title">
Tokens can be used beyond supporting creators. You can buy digital goods and giftcards with a cashback bonus.
</message>
<message name="IDS_BASIC_SETTINGS" desc="Brave rewards onboarding title">
Lastly, lets get you set up on the basic settings
</message>
<message name="IDS_YOU_CAN_CHANGE_THIS_LATER" desc="Brave rewards onboarding text">
You can change this later.
</message>
<message name="IDS_HOW_OFTEN_DO_YOU_SEE_ADS" desc="Brave rewards onboarding text">
How often do you want to see ads?\n(Ads per hour)
</message>
<message name="IDS_HOW_MUCH_SUPPORT" desc="Brave rewards onboarding text">
How much support do you want to give to your favorite creators?\n(from your ads earnings)
</message>
<message name="IDS_YOU_ARE_DONE" desc="Brave rewards onboarding title">
WOOOOHOOOOO!\nYoure done.
</message>