Merge pull request #6171 from brave/cross_promotional_modal_dp

Cross promotional modal dp
This commit is contained in:
Deep Pandya
2020-07-24 14:39:04 -04:00
committed by GitHub
12 changed files with 228 additions and 1 deletions
+6
View File
@@ -171,6 +171,7 @@ brave_java_resources = [
"java/res/drawable-hdpi/bat_unverified.png",
"java/res/drawable-hdpi/share_icon.png",
"java/res/drawable-hdpi/omnibox_https_valid.png",
"java/res/drawable-hdpi/ic_cross_modal.png",
"java/res/drawable-mdpi/check.png",
"java/res/drawable-mdpi/btn_bookmark.png",
"java/res/drawable-mdpi/arrow_forward.png",
@@ -276,6 +277,7 @@ brave_java_resources = [
"java/res/drawable-mdpi/bat_unverified.png",
"java/res/drawable-mdpi/share_icon.png",
"java/res/drawable-mdpi/omnibox_https_valid.png",
"java/res/drawable-mdpi/ic_cross_modal.png",
"java/res/drawable-nodpi/will_christiansen_glacier_peak.jpg",
"java/res/drawable-nodpi/loader16.png",
"java/res/drawable-nodpi/loader11.png",
@@ -426,6 +428,7 @@ brave_java_resources = [
"java/res/drawable-xhdpi/bat_unverified.png",
"java/res/drawable-xhdpi/share_icon.png",
"java/res/drawable-xhdpi/omnibox_https_valid.png",
"java/res/drawable-xhdpi/ic_cross_modal.png",
"java/res/drawable-xxhdpi/check.png",
"java/res/drawable-xxhdpi/btn_bookmark.png",
"java/res/drawable-xxhdpi/arrow_forward.png",
@@ -532,6 +535,7 @@ brave_java_resources = [
"java/res/drawable-xxhdpi/bat_unverified.png",
"java/res/drawable-xxhdpi/share_icon.png",
"java/res/drawable-xxhdpi/omnibox_https_valid.png",
"java/res/drawable-xxhdpi/ic_cross_modal.png",
"java/res/drawable-xxxhdpi/check.png",
"java/res/drawable-xxxhdpi/btn_bookmark.png",
"java/res/drawable-xxxhdpi/arrow_forward.png",
@@ -624,6 +628,7 @@ brave_java_resources = [
"java/res/drawable-xxxhdpi/bat_unverified.png",
"java/res/drawable-xxxhdpi/share_icon.png",
"java/res/drawable-xxxhdpi/omnibox_https_valid.png",
"java/res/drawable-xxxhdpi/ic_cross_modal.png",
"java/res/layout/brave_shields_ads_tracking_switcher.xml",
"java/res/layout/web_notification_icon_frame_brave.xml",
"java/res/layout/brave_sync_layout.xml",
@@ -684,6 +689,7 @@ brave_java_resources = [
"java/res/layout/menu_separator.xml",
"java/res/layout/brave_rewards_panel_grant.xml",
"java/res/layout/brave_sync_add_laptop.xml",
"java/res/layout/fragment_cross_promotional_modal_dialog.xml",
"java/res/layout-land/brave_rewards_site_banner.xml",
"java/res/layout-land/verify_wallet_activity.xml",
"java/res/menu/new_tab_menu.xml",
+2 -1
View File
@@ -141,7 +141,8 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/rate/RateFeedbackUtils.java",
"../../brave/android/java/org/chromium/chrome/browser/shields/BraveShieldsMenuObserver.java",
"../../brave/android/java/org/chromium/chrome/browser/shields/BraveShieldsHandler.java",
"../../brave/android/java/org/chromium/chrome/browser/shields/BraveShieldsUtils.java"
"../../brave/android/java/org/chromium/chrome/browser/shields/BraveShieldsUtils.java",
"../../brave/android/java/org/chromium/chrome/browser/CrossPromotionalModalDialogFragment.java"
]
if (brave_rewards_enabled || enable_brave_referrals) {
@@ -66,6 +66,7 @@ import org.chromium.ui.widget.Toast;
import org.chromium.chrome.browser.util.PackageUtils;
import org.chromium.chrome.browser.onboarding.OnboardingPrefManager;
import org.chromium.chrome.browser.onboarding.OnboardingActivity;
import org.chromium.chrome.browser.CrossPromotionalModalDialogFragment;
import java.util.Calendar;
import java.util.Date;
@@ -88,6 +89,7 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
public static final String OPEN_URL = "open_url";
private static final int DAYS_4 = 4;
private static final int DAYS_12 = 12;
/**
* Settings for sending local notification reminders.
@@ -240,6 +242,20 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
OnboardingPrefManager.getInstance().showOnboarding(this);
OnboardingPrefManager.getInstance().setOnboardingShownForSkip(true);
}
if (PackageUtils.isFirstInstall(this)
&& SharedPreferencesManager.getInstance().readInt(BravePreferenceKeys.BRAVE_APP_OPEN_COUNT) == 1) {
Calendar calender = Calendar.getInstance();
calender.setTime(new Date());
calender.add(Calendar.DATE, DAYS_12);
OnboardingPrefManager.getInstance().setNextCrossPromoModalDate(
calender.getTimeInMillis());
}
if (OnboardingPrefManager.getInstance().showCrossPromoModal()) {
showCrossPromotionalDialog();
OnboardingPrefManager.getInstance().setCrossPromoModalShown(true);
}
}
private void createNotificationChannel() {
@@ -396,6 +412,12 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
mRateDialogFragment.show(getSupportFragmentManager(), "RateDialogFragment");
}
private void showCrossPromotionalDialog() {
CrossPromotionalModalDialogFragment mCrossPromotionalModalDialogFragment = new CrossPromotionalModalDialogFragment();
mCrossPromotionalModalDialogFragment.setCancelable(false);
mCrossPromotionalModalDialogFragment.show(getSupportFragmentManager(), "CrossPromotionalModalDialogFragment");
}
private native void nativeRestartStatsUpdater();
static public ChromeTabbedActivity getChromeTabbedActivity() {
@@ -0,0 +1,110 @@
/**
* 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/.
*/
package org.chromium.chrome.browser;
import android.content.DialogInterface;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import android.widget.LinearLayout;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import androidx.fragment.app.DialogFragment;
import org.chromium.chrome.R;
import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.chrome.browser.util.ConfigurationUtils;
import org.chromium.chrome.browser.BraveRewardsHelper;
public class CrossPromotionalModalDialogFragment extends DialogFragment implements View.OnClickListener {
private static final String BRAVE_URL = "brave.com";
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setDialogParams();
}
@Override
public void onResume() {
super.onResume();
getDialog().setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(android.content.DialogInterface dialog,
int keyCode, android.view.KeyEvent event) {
if ((keyCode == android.view.KeyEvent.KEYCODE_BACK)) {
dismiss();
return true;
} else return false;
}
});
setDialogParams();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_cross_promotional_modal_dialog, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
Button mDoneButton = view.findViewById(R.id.btn_done);
mDoneButton.setOnClickListener(this);
String mPromoText = getResources().getString(R.string.download_brave);
int indexOfSpan = mPromoText.indexOf(BRAVE_URL);
TextView mCrossPromoText = view.findViewById(R.id.cross_modal_text);
Spanned textToSpan = BraveRewardsHelper.spannedFromHtmlString(mPromoText);
SpannableString ss = new SpannableString(textToSpan.toString());
ForegroundColorSpan foregroundSpan =
new ForegroundColorSpan(getResources().getColor(R.color.shield_back_button_tint));
ss.setSpan(foregroundSpan, indexOfSpan,
(indexOfSpan + BRAVE_URL.length()), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mCrossPromoText.setText(ss);
}
@Override
public void onClick(View view) {
dismiss();
}
private void setDialogParams() {
DisplayMetrics displayMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int mDeviceHeight = displayMetrics.heightPixels;
int mDeviceWidth = displayMetrics.widthPixels;
WindowManager.LayoutParams params = getDialog().getWindow().getAttributes();
boolean isTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(getActivity());
boolean isLandscape = ConfigurationUtils.isLandscape(getActivity());
if (isTablet) {
params.width = (int) (0.5 * mDeviceWidth);
} else {
if (isLandscape) {
params.width = (int) (0.5 * mDeviceWidth);
} else {
params.width = (int) (0.9 * mDeviceWidth);
}
}
params.height = LinearLayout.LayoutParams.WRAP_CONTENT;
getDialog().getWindow().setAttributes(params);
}
}
@@ -30,7 +30,9 @@ import java.util.Map;
*/
public class OnboardingPrefManager {
private static final String PREF_ONBOARDING = "onboarding";
private static final String PREF_CROSS_PROMO_MODAL = "cross_promo_modal";
private static final String PREF_NEXT_ONBOARDING_DATE = "next_onboarding_date";
private static final String PREF_NEXT_CROSS_PROMO_MODAL_DATE = "next_cross_promo_modal_date";
private static final String PREF_ONBOARDING_FOR_SKIP = "onboarding_for_skip";
private static final String PREF_ONBOARDING_SKIP_COUNT = "onboarding_skip_count";
private static final String PREF_SEARCH_ENGINE_ONBOARDING = "search_engine_onboarding";
@@ -159,6 +161,33 @@ public class OnboardingPrefManager {
}
}
private long getNextCrossPromoModalDate() {
return mSharedPreferences.getLong(PREF_NEXT_CROSS_PROMO_MODAL_DATE, 0);
}
public void setNextCrossPromoModalDate(long nextDate) {
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
sharedPreferencesEditor.putLong(PREF_NEXT_CROSS_PROMO_MODAL_DATE, nextDate);
sharedPreferencesEditor.apply();
}
public void setCrossPromoModalShown(boolean isShown) {
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
sharedPreferencesEditor.putBoolean(PREF_CROSS_PROMO_MODAL, isShown);
sharedPreferencesEditor.apply();
}
private boolean hasCrossPromoModalShown() {
return mSharedPreferences.getBoolean(PREF_CROSS_PROMO_MODAL, false);
}
public boolean showCrossPromoModal() {
boolean shouldShow = !hasCrossPromoModalShown()
&& (getNextCrossPromoModalDate() > 0
&& System.currentTimeMillis() > getNextCrossPromoModalDate());
return shouldShow;
}
public static Map<String, SearchEngineEnum> searchEngineMap =
new HashMap<String, SearchEngineEnum>() {
{
Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 KiB

@@ -0,0 +1,53 @@
<?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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="32dp"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/brave_works_everywhere"
android:textSize="20sp"
android:layout_marginBottom="24dp"
android:textColor="@color/shield_text_color"
android:textStyle="bold" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:src="@drawable/ic_cross_modal"
android:contentDescription="@null"/>
<TextView
android:id="@+id/cross_modal_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="16sp"
android:text="@string/download_brave"
android:layout_marginBottom="32dp"
android:textColor="@color/shield_text_color"/>
<Button
android:id="@+id/btn_done"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/orange_rounded_button"
android:text="@string/brave_sync_btn_done"
android:textAllCaps="false"
android:textColor="@android:color/white"
android:textSize="16sp"
style="?android:attr/borderlessButtonStyle"/>
</LinearLayout>
@@ -1166,6 +1166,12 @@ until they verify, or until 90 days have passed.
<message name="IDS_NICE" desc="Shields tootltip title">
Nice!
</message>
<message name="IDS_BRAVE_WORKS_EVERYWHERE" desc="Cross promotional modal title text">
Brave works everywhere
</message>
<message name="IDS_DOWNLOAD_BRAVE" desc="Cross promotional modal text">
Download Brave at brave.com on your laptop or tablet for a faster and more private web
</message>
</messages>
</release>
</grit>