Add cross promo dialog
Update code for dialog
This commit is contained in:
@@ -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;
|
||||
@@ -219,6 +220,8 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
|
||||
if (RateUtils.getInstance(this).shouldShowRateDialog())
|
||||
showBraveRateDialog();
|
||||
|
||||
showCrossPromotionalDialog();
|
||||
|
||||
if (PackageUtils.isFirstInstall(this)
|
||||
&& SharedPreferencesManager.getInstance().readInt(BravePreferenceKeys.BRAVE_APP_OPEN_COUNT) == 1) {
|
||||
Calendar calender = Calendar.getInstance();
|
||||
@@ -396,6 +399,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,109 @@
|
||||
/**
|
||||
* 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 {
|
||||
|
||||
@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(getResources().getString(R.string.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 + getResources().getString(R.string.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);
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="32dp"
|
||||
android:padding="32dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
@@ -18,7 +18,7 @@
|
||||
android:text="@string/brave_works_everywhere"
|
||||
android:textSize="20sp"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:textColor="@color/default_icon_color_tint_list"
|
||||
android:textColor="@color/shield_text_color"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ImageView
|
||||
@@ -34,8 +34,9 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:textSize="16sp"
|
||||
android:text="@string/download_brave"
|
||||
android:layout_marginBottom="32dp"
|
||||
android:textColor="@color/default_icon_color_tint_list"/>
|
||||
android:textColor="@color/shield_text_color"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_done"
|
||||
|
||||
@@ -1172,6 +1172,9 @@ until they verify, or until 90 days have passed.
|
||||
<message name="IDS_DOWNLOAD_BRAVE" desc="Cross promotional modal text">
|
||||
Download Brave at brave.com on your laptop ot tablet for a faster and more private web
|
||||
</message>
|
||||
<message name="IDS_BRAVE_URL" desc="Brave url">
|
||||
brave.com
|
||||
</message>
|
||||
</messages>
|
||||
</release>
|
||||
</grit>
|
||||
|
||||
Reference in New Issue
Block a user