Skip to content

Commit

Permalink
Merge pull request #6779 from brave/crypto_widget_binance
Browse files Browse the repository at this point in the history
Crypto widget binance
  • Loading branch information
deeppandya committed Oct 17, 2020
2 parents 0459e41 + 5c2a2ab commit 8e3feb0
Show file tree
Hide file tree
Showing 123 changed files with 6,638 additions and 1,251 deletions.
1,277 changes: 671 additions & 606 deletions android/brave_java_resources.gni

Large diffs are not rendered by default.

110 changes: 64 additions & 46 deletions android/brave_java_sources.gni

Large diffs are not rendered by default.

22 changes: 21 additions & 1 deletion android/java/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,27 @@
<activity
android:name="org.chromium.chrome.browser.onboarding.SearchActivity"
android:theme="@style/Theme.Chromium.Activity.Fullscreen"
android:screenOrientation="sensorPortrait"/>
android:screenOrientation="sensorPortrait">

</activity>

<activity
android:name="org.chromium.chrome.browser.ntp.widget.NTPWidgetStackActivity"
android:theme="@style/Theme.Chromium.Activity"
android:screenOrientation="sensorPortrait">

</activity>

<activity
android:name="org.chromium.chrome.browser.widget.crypto.binance.BinanceActivity"
android:theme="@style/Theme.Chromium.Activity.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="com.brave.binance" />
</intent-filter>
</activity>

<service android:name="org.chromium.chrome.browser.onboarding.BraveRewardsService"
android:exported="false">
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
/* 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.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;

import androidx.fragment.app.DialogFragment;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;

import org.chromium.base.Log;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.night_mode.GlobalNightModeStateProviderHolder;

public class QRCodeShareDialogFragment extends DialogFragment implements View.OnClickListener {
private static final String TAG = "SUPER-REFERRAL";

// For QR code generation
private static final int WHITE = 0xFFFFFFFF;
private static final int BLACK = 0xFF000000;
private static final int WIDTH = 300;

private ImageView mQRImage;
private Button mShareButton;

private String qrCodeText;

public QRCodeShareDialogFragment() {
// Empty constructor is required for DialogFragment
// Make sure not to add arguments to the constructor
// Use `newInstance` instead as shown below
}

public void setQRCodeText(String qrCodeText) {
this.qrCodeText = qrCodeText;
}

@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_qr_code_share, container);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mQRImage = view.findViewById(R.id.share_qr_code_image);
mShareButton = view.findViewById(R.id.btn_share);
mShareButton.setOnClickListener(this);

generateQRCode();
}

@Override
public void onClick(View view) {
if (view.getId() == R.id.btn_share) {
openShareIntent();
dismiss();
}
}

private void openShareIntent() {
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, qrCodeText);
getActivity().startActivity(Intent.createChooser(
sharingIntent, getResources().getString(R.string.share_link_chooser_title)));
}

private void generateQRCode() {
final int WHITE = GlobalNightModeStateProviderHolder.getInstance().isInNightMode()
? 0xFFFFFFFF
: 0xFF000000;
final int BLACK = GlobalNightModeStateProviderHolder.getInstance().isInNightMode()
? 0x613C4043
: 0xFFFFFFFF;
new Thread(new Runnable() {
@Override
public void run() {
// Generate QR code
BitMatrix result;
try {
result = new MultiFormatWriter().encode(
qrCodeText, BarcodeFormat.QR_CODE, WIDTH, WIDTH, null);
} catch (WriterException e) {
Log.e(TAG, "QR code unsupported format: " + e);
return;
}
int w = result.getWidth();
int h = result.getHeight();
int[] pixels = new int[w * h];
for (int y = 0; y < h; y++) {
int offset = y * w;
for (int x = 0; x < w; x++) {
pixels[offset + x] = result.get(x, y) ? WHITE : BLACK;
}
}
Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, WIDTH, 0, 0, w, h);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mQRImage.setImageBitmap(bitmap);
mQRImage.invalidate();
}
});
}
}).start();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@
import org.chromium.chrome.browser.local_database.BraveStatsTable;
import org.chromium.chrome.browser.local_database.DatabaseHelper;
import org.chromium.chrome.browser.local_database.SavedBandwidthTable;
import org.chromium.chrome.browser.ntp.BraveNewTabPageLayout;
import org.chromium.chrome.browser.onboarding.OnboardingPrefManager;
import org.chromium.chrome.browser.util.ConfigurationUtils;
import org.chromium.ui.base.DeviceFormFactor;
Expand All @@ -70,7 +69,6 @@ public class BraveStatsBottomSheetDialogFragment extends BottomSheetDialogFragme
private static final int DAYS_30 = -30;
private static final int DAYS_90 = -90;


private TextView adsTrackersCountText;
private TextView adsTrackersText;
private TextView dataSavedCountText;
Expand Down Expand Up @@ -191,10 +189,10 @@ public void onDestroyView() {

private void updateBraveStatsLayoutAsync() {
new AsyncTask<Void>() {
long adsTrackersCount = 0L;
long totalSavedBandwidth = 0L;
long adsTrackersCountToCheckForMonth = 0L;
long adsTrackersCountToCheckFor3Month = 0L;
long adsTrackersCount;
long totalSavedBandwidth;
long adsTrackersCountToCheckForMonth;
long adsTrackersCountToCheckFor3Month;
@Override
protected Void doInBackground() {
adsTrackersCount =
Expand Down Expand Up @@ -251,10 +249,12 @@ protected void onPostExecute(Void result) {
dataSavedPair.second));
}

long timeSavedCount =
adsTrackersCount * BraveNewTabPageLayout.MILLISECONDS_PER_ITEM;
long timeSavedCount = adsTrackersCount * BraveStatsUtil.MILLISECONDS_PER_ITEM;
Pair<String, String> timeSavedPair =
BraveStatsUtil.getBraveStatsStringFromTime(timeSavedCount / 1000);
timeSavedCountText.setText(
BraveStatsUtil.getBraveStatsStringFromTime(timeSavedCount / 1000));
String.format(getResources().getString(R.string.ntp_stat_text),
timeSavedPair.first, timeSavedPair.second));
timeSavedText.setText(mContext.getResources().getString(R.string.time_saved_text));

if (adsTrackersCount > 0) {
Expand Down Expand Up @@ -282,12 +282,12 @@ protected void onPostExecute(Void result) {
}
showWebsitesTrackers();
}
} .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}

private void showWebsitesTrackers() {
new AsyncTask<Void>() {
List<Pair<String, Integer>> websiteTrackers = null;
List<Pair<String, Integer>> websiteTrackers;
@Override
protected Void doInBackground() {
if (selectedType == WEBSITES) {
Expand Down Expand Up @@ -345,6 +345,6 @@ protected void onPostExecute(Void result) {
braveStatsSubSectionText.setVisibility(View.GONE);
}
}
} .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,65 +15,75 @@
import java.util.Date;

public class BraveStatsUtil {
/*
* Gets string view of specific time in seconds for Brave stats
*/
public static String getBraveStatsStringFromTime(long seconds) {
String result = "";
if (seconds > 24 * 60 * 60) {
result = result + (seconds / (24 * 60 * 60)) + "d";
} else if (seconds > 60 * 60) {
result = result + (seconds / (60 * 60)) + "h";
} else if (seconds > 60) {
result = result + (seconds / 60) + "m";
} else {
result = result + seconds + "s";
}
return result;
}
public static final short MILLISECONDS_PER_ITEM = 50;
/*
* Gets string view of specific time in seconds for Brave stats
*/
public static Pair<String, String> getBraveStatsStringFromTime(long seconds) {
String result = "";
String suffix = "";
if (seconds > 24 * 60 * 60) {
result = result + (seconds / (24 * 60 * 60));
suffix = "d";
} else if (seconds > 60 * 60) {
result = result + (seconds / (60 * 60));
suffix = "h";
} else if (seconds > 60) {
result = result + (seconds / 60);
suffix = "m";
} else {
result = result + seconds;
suffix = "s";
}
return new Pair<>(result, suffix);
}

public static Pair<String, String> getBraveStatsStringFormNumberPair(long number, boolean isBytes) {
String result = "";
String suffix = isBytes ? "KB" : "" ;
long base = isBytes ? 1024L : 1000L;
if (number >= base * base * base) {
result = result + (number / (base * base * base));
number = number % (base * base * base);
result = result + "." + (number / (10L * base * base));
suffix = isBytes ? "GB" : "B";
} else if (number >= (10L * base * base) && number < (base * base * base)) {
result = result + (number / (base * base));
suffix = isBytes ? "MB" : "M";
} else if (number >= (base * base) && number < (10L * base * base)) {
result = result + (number / (base * base));
number = number % (base * base);
result = result + "." + (number / (100L * base));
suffix = isBytes ? "MB" : "M";
} else if (number >= (10L * base) && number < (base * base)) {
result = result + (number / base);
suffix = isBytes ? "KB" : "K";
} else if (number >= base && number < (10L * base)) {
result = result + (number / base);
number = number % base;
result = result + "." + (number / 100L);
suffix = isBytes ? "KB" : "K";
} else {
result = result + number;
}
return new Pair<>(result, suffix);
}
public static Pair<String, String> getBraveStatsStringFormNumberPair(
long number, boolean isBytes) {
String result = "";
String suffix = isBytes ? "KB" : "";
long base = isBytes ? 1024L : 1000L;
if (number >= base * base * base) {
result = result + (number / (base * base * base));
number = number % (base * base * base);
result = result + "." + (number / (10L * base * base));
suffix = isBytes ? "GB" : "B";
} else if (number >= (10L * base * base) && number < (base * base * base)) {
result = result + (number / (base * base));
suffix = isBytes ? "MB" : "M";
} else if (number >= (base * base) && number < (10L * base * base)) {
result = result + (number / (base * base));
number = number % (base * base);
result = result + "." + (number / (100L * base));
suffix = isBytes ? "MB" : "M";
} else if (number >= (10L * base) && number < (base * base)) {
result = result + (number / base);
suffix = isBytes ? "KB" : "K";
} else if (number >= base && number < (10L * base)) {
result = result + (number / base);
number = number % base;
result = result + "." + (number / 100L);
suffix = isBytes ? "KB" : "K";
} else {
result = result + number;
}
return new Pair<>(result, suffix);
}

public static void showBraveStats() {
if (BraveActivity.getBraveActivity() != null) {
BraveStatsBottomSheetDialogFragment braveStatsBottomSheetDialogFragment = BraveStatsBottomSheetDialogFragment.newInstance();
braveStatsBottomSheetDialogFragment.show(BraveActivity.getBraveActivity().getSupportFragmentManager(), BraveStatsBottomSheetDialogFragment.TAG_FRAGMENT);
}
}
public static void showBraveStats() {
if (BraveActivity.getBraveActivity() != null) {
BraveStatsBottomSheetDialogFragment braveStatsBottomSheetDialogFragment =
BraveStatsBottomSheetDialogFragment.newInstance();
braveStatsBottomSheetDialogFragment.show(
BraveActivity.getBraveActivity().getSupportFragmentManager(),
"brave_stats_bottom_sheet_dialog_fragment");
}
}

public static String getCalculatedDate(String dateFormat, int days) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat s = new SimpleDateFormat(dateFormat);
cal.add(Calendar.DAY_OF_YEAR, days);
return s.format(new Date(cal.getTimeInMillis()));
}
public static String getCalculatedDate(String dateFormat, int days) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat s = new SimpleDateFormat(dateFormat);
cal.add(Calendar.DAY_OF_YEAR, days);
return s.format(new Date(cal.getTimeInMillis()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/

package org.chromium.chrome.browser.onboarding;
package org.chromium.chrome.browser.custom_layout;

import android.content.Context;
import androidx.viewpager.widget.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.animation.DecelerateInterpolator;
import android.widget.Scroller;

import androidx.viewpager.widget.ViewPager;

import java.lang.reflect.Field;

public class NonSwipeableViewPager extends ViewPager {
Expand Down
Loading

0 comments on commit 8e3feb0

Please sign in to comment.