From 61df0b1cf36ec42e892e65fc78b04816df4af2e2 Mon Sep 17 00:00:00 2001
From: "Aaron M. Wilson" <39023212+kabirnayeem99@users.noreply.github.com>
Date: Fri, 1 Apr 2022 22:44:15 +0600
Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=93=A6=20feat=20[theming]:=20add=20ma?=
=?UTF-8?q?terial=20you=20to=20the=20app?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 29 ++--
.../com/cylonid/nativealpha/MainActivity.java | 15 +-
.../main/res/layout/add_website_dialogue.xml | 16 +-
app/src/main/res/layout/global_settings.xml | 16 +-
app/src/main/res/layout/shortcut_dialog.xml | 149 ++++++++++--------
app/src/main/res/layout/webapp_settings.xml | 95 +++++------
app/src/main/res/values/styles.xml | 5 +-
build.gradle | 2 +-
8 files changed, 173 insertions(+), 154 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index bc03733f..9bc3fce6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,13 +12,13 @@ android {
delete fileTree('src/main') {
include '**/AndroidManifest.xml'
}
- ant.move(file: 'src/main/AndroidManifest_original.xml', tofile:'src/main/AndroidManifest.xml')
+ ant.move(file: 'src/main/AndroidManifest_original.xml', tofile: 'src/main/AndroidManifest.xml')
}
}
- compileSdkVersion 31
- buildToolsVersion "31.0.0"
+ compileSdkVersion 32
+ buildToolsVersion "32.1.0-rc1"
splits {
abi {
enable true
@@ -46,7 +46,7 @@ android {
defaultConfig {
applicationId "com.cylonid.nativealpha"
minSdkVersion 26
- targetSdkVersion 31
+ targetSdkVersion 32
versionCode 1200
versionName "1.2.0"
@@ -113,19 +113,20 @@ repositories {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation 'com.mikhaellopez:circularprogressbar:3.0.3'
- implementation 'org.jsoup:jsoup:1.14.1'
+ implementation 'com.mikhaellopez:circularprogressbar:3.1.0'
+ implementation 'org.jsoup:jsoup:1.14.3'
implementation 'org.adblockplus:adblock-android-webview:5.0.0'
implementation 'com.github.ihimanshurawat:Hasher:1.2'
+ implementation "com.google.android.material:material:1.5.0"
implementation 'androidx.navigation:navigation-fragment:2.4.1'
implementation 'androidx.navigation:navigation-ui:2.4.1'
- implementation 'com.google.code.gson:gson:2.8.7'
+ implementation 'com.google.code.gson:gson:2.9.0'
implementation 'io.github.medyo:android-about-page:2.0.0'
implementation 'androidx.webkit:webkit:1.4.0'
implementation 'com.jakewharton:process-phoenix:2.1.2'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.robolectric:robolectric:4.3.1'
- testImplementation 'org.json:json:20210307'
+ testImplementation 'org.json:json:20220320'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.4.0'
androidTestImplementation 'androidx.test.espresso:espresso-web:3.4.0'
androidTestImplementation 'androidx.test:rules:1.4.0'
@@ -133,16 +134,16 @@ dependencies {
androidTestUtil 'androidx.test:orchestrator:1.4.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
- implementation "com.mikepenz:aboutlibraries:10.0.0"
- implementation "com.mikepenz:aboutlibraries-core:10.0.0"
+ implementation "com.mikepenz:aboutlibraries:10.0.1"
+ implementation "com.mikepenz:aboutlibraries-core:10.0.1"
implementation 'pub.devrel:easypermissions:3.0.0'
}
int NUM_OF_CONTAINERS = 8
String placeholder = ""
-0.upto(NUM_OF_CONTAINERS-1) { int i ->
- def trTask = tasks.register( "createWebViewclass${i}", Copy ) {
+0.upto(NUM_OF_CONTAINERS - 1) { int i ->
+ def trTask = tasks.register("createWebViewclass${i}", Copy) {
from 'src/main/java/com/cylonid/nativealpha/WebViewActivity.java'
into 'src/main/java/com/cylonid/nativealpha'
filter {
@@ -156,12 +157,12 @@ String placeholder = ""
}
def renameManifest = tasks.register("renameManifest") {
- ant.move(file: 'src/main/AndroidManifest.xml', tofile:'src/main/AndroidManifest_original.xml')
+ ant.move(file: 'src/main/AndroidManifest.xml', tofile: 'src/main/AndroidManifest_original.xml')
}
preBuild.dependsOn renameManifest
-def generateWebViewActivities = tasks.register( "extendAndroidManifest", Copy ) {
+def generateWebViewActivities = tasks.register("extendAndroidManifest", Copy) {
from 'src/main/AndroidManifest_original.xml'
into 'src/main'
diff --git a/app/src/main/java/com/cylonid/nativealpha/MainActivity.java b/app/src/main/java/com/cylonid/nativealpha/MainActivity.java
index abccba2a..f1a97e26 100644
--- a/app/src/main/java/com/cylonid/nativealpha/MainActivity.java
+++ b/app/src/main/java/com/cylonid/nativealpha/MainActivity.java
@@ -1,7 +1,8 @@
package com.cylonid.nativealpha;
+import static android.widget.LinearLayout.HORIZONTAL;
+
import android.content.Intent;
-import android.os.Build;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
@@ -12,7 +13,6 @@
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
-import android.widget.Switch;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
@@ -23,11 +23,10 @@
import com.cylonid.nativealpha.util.Const;
import com.cylonid.nativealpha.util.Utility;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
+import com.google.android.material.switchmaterial.SwitchMaterial;
import java.util.ArrayList;
-import static android.widget.LinearLayout.HORIZONTAL;
-
public class MainActivity extends AppCompatActivity {
private LinearLayout mainScreen;
@@ -76,7 +75,7 @@ protected void onNewIntent(Intent intent) {
private void buildImportSuccessDialog() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
- String message = getString(R.string.import_success_dialog_txt2) + "\n\n" + getString(R.string.import_success_dialog_txt3);
+ String message = getString(R.string.import_success_dialog_txt2) + "\n\n" + getString(R.string.import_success_dialog_txt3);
builder.setMessage(message);
builder.setCancelable(false);
@@ -104,7 +103,8 @@ private void buildImportSuccessDialog() {
}
});
- builder.setNegativeButton(getString(android.R.string.no), (dialog, id) -> { });
+ builder.setNegativeButton(getString(android.R.string.no), (dialog, id) -> {
+ });
builder.create().show();
}
@@ -157,6 +157,7 @@ private ImageButton generateImageButton(String name, int resourceID, int webappI
return btn;
}
+
private void addRow(final WebApp webapp) {
int row_height = (int) getResources().getDimension(R.dimen.line_height);
int transparent_color = ResourcesCompat.getColor(getResources(), R.color.transparent, null);
@@ -196,7 +197,7 @@ private void addRow(final WebApp webapp) {
private void buildAddWebsiteDialog(String title) {
final View inflated_view = getLayoutInflater().inflate(R.layout.add_website_dialogue, null);
final EditText url = (EditText) inflated_view.findViewById(R.id.websiteUrl);
- final Switch create_shortcut = (Switch) inflated_view.findViewById(R.id.switchCreateShortcut);
+ final SwitchMaterial create_shortcut = (SwitchMaterial) inflated_view.findViewById(R.id.switchCreateShortcut);
final AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
.setView(inflated_view)
diff --git a/app/src/main/res/layout/add_website_dialogue.xml b/app/src/main/res/layout/add_website_dialogue.xml
index 1fd380d6..5051838b 100644
--- a/app/src/main/res/layout/add_website_dialogue.xml
+++ b/app/src/main/res/layout/add_website_dialogue.xml
@@ -1,26 +1,26 @@
+ android:layout_height="wrap_content"
+ android:layout_margin="@dimen/margin_dialog"
+ android:orientation="vertical">
+ android:hint="@string/url"
+ android:inputType="textUri" />
-
+
@@ -19,8 +20,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/margin_activity"
- android:weightSum="100"
- android:orientation="vertical">
+ android:orientation="vertical"
+ android:weightSum="100">
-
-
-
-
-
-
-
+ app:cardCornerRadius="12dp">
-
-
-
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="@dimen/margin_dialog"
+ android:orientation="vertical">
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ android:orientation="vertical">
+
-
-
+
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/webapp_settings.xml b/app/src/main/res/layout/webapp_settings.xml
index 1c8fc314..33f93947 100644
--- a/app/src/main/res/layout/webapp_settings.xml
+++ b/app/src/main/res/layout/webapp_settings.xml
@@ -1,9 +1,9 @@
+
@@ -77,30 +77,33 @@
android:fontFamily="sans-serif"
android:inputType="text"
android:text="@={webapp.title}" />
-
-
-
+ android:layout_marginBottom="@dimen/settings_bottom"
+ android:divider="@drawable/empty_10dp_vertical"
+ android:orientation="vertical"
+ android:showDividers="middle">
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
diff --git a/build.gradle b/build.gradle
index cb464749..b8c03be2 100644
--- a/build.gradle
+++ b/build.gradle
@@ -11,7 +11,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:7.1.2'
- classpath "com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin:10.0.0"
+ classpath "com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin:10.0.1"
// NOTE: Do not place your application dependencies here; they belong
From bfcea1d4a6d9931fe6cfbebde8993b3d99139fd8 Mon Sep 17 00:00:00 2001
From: "Aaron M. Wilson" <39023212+kabirnayeem99@users.noreply.github.com>
Date: Fri, 1 Apr 2022 22:53:09 +0600
Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=93=A6=20feat=20[theming]:=20add=20ma?=
=?UTF-8?q?terial=20you=20to=20the=20app?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 98 ++++++++++++++++++-
.../cylonid/nativealpha/AboutActivity.java | 3 +-
.../com/cylonid/nativealpha/MainActivity.java | 9 +-
.../nativealpha/ShortcutDialogFragment.java | 41 ++++----
.../cylonid/nativealpha/WebViewActivity.java | 27 ++---
.../com/cylonid/nativealpha/util/Utility.java | 31 +++---
6 files changed, 153 insertions(+), 56 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b8f877eb..b54a0e38 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -47,7 +47,103 @@
android:documentLaunchMode="intoExisting"
/>
-
+
+
+
+
+
+
+
+
+
{
ShortcutDialogFragment frag = ShortcutDialogFragment.newInstance(webapp);
@@ -199,7 +200,7 @@ private void buildAddWebsiteDialog(String title) {
final EditText url = (EditText) inflated_view.findViewById(R.id.websiteUrl);
final SwitchMaterial create_shortcut = (SwitchMaterial) inflated_view.findViewById(R.id.switchCreateShortcut);
- final AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
+ final AlertDialog dialog = new MaterialAlertDialogBuilder(MainActivity.this)
.setView(inflated_view)
.setTitle(title)
.setPositiveButton(android.R.string.ok, null) //Set to null. We override the onclick
@@ -233,7 +234,7 @@ private void buildAddWebsiteDialog(String title) {
private void buildDeleteItemDialog(final int ID) {
- AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
+ MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(MainActivity.this);
builder.setMessage(getString(R.string.delete_question));
builder.setPositiveButton(getString(android.R.string.yes), (dialog, id) -> {
WebApp webapp = DataManager.getInstance().getWebApp(ID);
diff --git a/app/src/main/java/com/cylonid/nativealpha/ShortcutDialogFragment.java b/app/src/main/java/com/cylonid/nativealpha/ShortcutDialogFragment.java
index 557a7f74..1795c6bf 100644
--- a/app/src/main/java/com/cylonid/nativealpha/ShortcutDialogFragment.java
+++ b/app/src/main/java/com/cylonid/nativealpha/ShortcutDialogFragment.java
@@ -1,5 +1,8 @@
package com.cylonid.nativealpha;
+import static androidx.appcompat.app.AppCompatActivity.RESULT_OK;
+import static com.cylonid.nativealpha.util.Const.CODE_OPEN_FILE;
+
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Bitmap;
@@ -28,6 +31,7 @@
import com.cylonid.nativealpha.model.WebApp;
import com.cylonid.nativealpha.util.Const;
import com.cylonid.nativealpha.util.Utility;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.snackbar.Snackbar;
import com.mikhaellopez.circularprogressbar.CircularProgressBar;
@@ -48,11 +52,8 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import static androidx.appcompat.app.AppCompatActivity.RESULT_OK;
-import static com.cylonid.nativealpha.util.Const.CODE_OPEN_FILE;
-
-public class ShortcutDialogFragment extends DialogFragment {
+public class ShortcutDialogFragment extends DialogFragment {
private WebApp webapp;
private String base_url;
@@ -62,7 +63,8 @@ public class ShortcutDialogFragment extends DialogFragment {
private EditText uiTitle;
private Thread faviconFetcherThread;
- public ShortcutDialogFragment() {}
+ public ShortcutDialogFragment() {
+ }
public static ShortcutDialogFragment newInstance(WebApp webapp) {
ShortcutDialogFragment frag = new ShortcutDialogFragment();
@@ -93,8 +95,7 @@ public void onActivityResult(int requestCode, int resultCode, @Nullable Intent d
if (bitmap != null)
applyNewBitmapToDialog();
- }
- catch(IOException e) {
+ } catch (IOException e) {
Toast toast = Toast.makeText(getActivity(), getString(R.string.icon_not_found), Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP, 0, 100);
toast.show();
@@ -109,7 +110,7 @@ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
final View view = getLayoutInflater().inflate(R.layout.shortcut_dialog, null);
- final AlertDialog dialog = new AlertDialog.Builder(getActivity())
+ final MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity())
.setView(view)
.setCancelable(false)
.setPositiveButton(android.R.string.ok, (dialog1, which) -> {
@@ -117,10 +118,11 @@ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
dismiss();
})
- .setNegativeButton(android.R.string.cancel, (dialog1, which) -> {
+ .setNegativeButton(android.R.string.cancel, (dialog1, which) -> {
dismiss();
- })
- .create();
+ });
+
+ final AlertDialog dialog = builder.create();
uiTitle = (EditText) view.findViewById(R.id.websiteTitle);
uiFavicon = (ImageView) view.findViewById(R.id.favicon);
@@ -148,11 +150,11 @@ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
return dialog;
}
- private Bitmap loadBitmap(String strUrl) {
+ private Bitmap loadBitmap(String strUrl) {
Bitmap bitmap;
try {
URL url = new URL(strUrl);
- HttpURLConnection con = (HttpURLConnection)url.openConnection();
+ HttpURLConnection con = (HttpURLConnection) url.openConnection();
InputStream is = con.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
if (bitmap == null || bitmap.getWidth() < Const.FAVICON_MIN_WIDTH)
@@ -164,6 +166,7 @@ private Bitmap loadBitmap(String strUrl) {
}
return bitmap;
}
+
private TreeMap buildIconMap() {
TreeMap found_icons = new TreeMap<>();
String host_part = base_url.replace("http://", "").replace("https://", "").replace("www.", "");
@@ -220,7 +223,7 @@ private TreeMap buildIconMap() {
}
public String[] fetchWebappData() {
- String[] result = new String[] {null, null, null};
+ String[] result = new String[]{null, null, null};
TreeMap found_icons = buildIconMap();
try {
@@ -320,7 +323,7 @@ private void startFaviconFetching() {
faviconFetcherThread = new Thread(() -> {
String[] webappdata = fetchWebappData();
bitmap = loadBitmap(webappdata[Const.RESULT_IDX_FAVICON]);
- requireActivity().runOnUiThread(()-> {
+ requireActivity().runOnUiThread(() -> {
applyNewBitmapToDialog();
setShortcutTitle(webappdata[Const.RESULT_IDX_TITLE]);
@@ -332,7 +335,9 @@ private void startFaviconFetching() {
new CountDownTimer(5000, 5000) {
@Override
- public void onTick(long millisUntilFinished) { }
+ public void onTick(long millisUntilFinished) {
+ }
+
public void onFinish() {
faviconFetcherThread.interrupt();
}
@@ -378,6 +383,7 @@ private void prepareFailedUI() {
uiProgressBar.setVisibility(View.GONE);
uiFavicon.setVisibility(View.VISIBLE);
}
+
private void showFailedMessage() {
Toast toast = Toast.makeText(getActivity(), getString(R.string.icon_fetch_failed_line1, webapp.getTitle()) + getString(R.string.icon_fetch_failed_line2) + getString(R.string.icon_fetch_failed_line3), Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP, 0, 100);
@@ -390,8 +396,7 @@ private void setShortcutTitle(String shortcut_title) {
if (!shortcut_title.equals(""))
uiTitle.setText(shortcut_title);
- }
- else {
+ } else {
uiTitle.setText(webapp.getTitle());
}
uiTitle.requestFocus();
diff --git a/app/src/main/java/com/cylonid/nativealpha/WebViewActivity.java b/app/src/main/java/com/cylonid/nativealpha/WebViewActivity.java
index 5309fc07..3e9201a8 100644
--- a/app/src/main/java/com/cylonid/nativealpha/WebViewActivity.java
+++ b/app/src/main/java/com/cylonid/nativealpha/WebViewActivity.java
@@ -1,5 +1,7 @@
package com.cylonid.nativealpha;
+import static com.cylonid.nativealpha.util.Const.CODE_OPEN_FILE;
+
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Application;
@@ -48,6 +50,7 @@
import com.cylonid.nativealpha.model.WebApp;
import com.cylonid.nativealpha.util.Const;
import com.cylonid.nativealpha.util.Utility;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.snackbar.Snackbar;
import com.jakewharton.processphoenix.ProcessPhoenix;
@@ -61,7 +64,6 @@
import java.util.Map;
import pub.devrel.easypermissions.EasyPermissions;
-import static com.cylonid.nativealpha.util.Const.CODE_OPEN_FILE;
public class WebViewActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks {
@@ -106,11 +108,11 @@ protected void onCreate(Bundle savedInstanceState) {
String packageName = this.getPackageName();
// Sandboxed Web App is openend in main process using an old shortcut
- if(packageName.equals(processName) && webapp.isUseContainer()) {
+ if (packageName.equals(processName) && webapp.isUseContainer()) {
ProcessPhoenix.triggerRebirth(this, Utility.createWebViewIntent(webapp, this));
}
- if (!packageName.equals(processName) & SandboxManager.getInstance() != null) {
+ if (!packageName.equals(processName) & SandboxManager.getInstance() != null) {
if (SandboxManager.getInstance().isSandboxUsedByAnotherApp(webapp)) {
SandboxManager.getInstance().unregisterWebAppFromSandbox(webapp.getContainerId());
ProcessPhoenix.triggerRebirth(this, Utility.createWebViewIntent(webapp, this));
@@ -127,7 +129,7 @@ protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.full_webview);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
- if(webapp.isKeepAwake()) {
+ if (webapp.isKeepAwake()) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
@@ -395,7 +397,7 @@ private Map initCustomHeaders(boolean save_data) {
private void loadURL(final WebView view, final String url) {
final WebApp webApp = DataManager.getInstance().getWebApp(webappID);
if (url.contains("http://") && !webApp.isAllowHttp()) {
- final AlertDialog.Builder builder = new AlertDialog.Builder(WebViewActivity.this);
+ final MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(WebViewActivity.this);
builder.setTitle(getString(R.string.no_https_dialog_title));
builder.setMessage(getString(R.string.no_https_dialog_msg));
@@ -411,16 +413,16 @@ private void loadURL(final WebView view, final String url) {
view.loadUrl(url, CUSTOM_HEADERS);
}
+
private void hideSystemBars() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
getWindow().setDecorFitsSystemWindows(false);
WindowInsetsController controller = getWindow().getInsetsController();
- if(controller != null) {
+ if (controller != null) {
controller.hide(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
controller.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
}
- }
- else {
+ } else {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
@@ -438,6 +440,7 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
// Forward results to EasyPermissions
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
+
@FunctionalInterface
interface PermissionGrantedCallback {
public void execute();
@@ -524,7 +527,7 @@ private void handlePermissionRequest(String resId,
return;
}
- new AlertDialog.Builder(WebViewActivity.this).setTitle(getPermissionRequestStringResource("dialog_permission_", resId, "_title"))
+ new MaterialAlertDialogBuilder(WebViewActivity.this).setTitle(getPermissionRequestStringResource("dialog_permission_", resId, "_title"))
.setMessage(getPermissionRequestStringResource("dialog_permission_", resId, "_txt"))
.setPositiveButton(android.R.string.yes, (dialog, id) -> {
enablePermissionBoolOnWebApp(successCallback);
@@ -638,9 +641,9 @@ private class CustomBrowser extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
- if(url.equals("about:blank")) {
+ if (url.equals("about:blank")) {
String langExtension;
- switch(Locale.getDefault().getLanguage()) {
+ switch (Locale.getDefault().getLanguage()) {
case "de":
langExtension = "de";
break;
@@ -675,7 +678,7 @@ public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslE
return;
}
- final AlertDialog.Builder builder = new AlertDialog.Builder(WebViewActivity.this);
+ final MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(WebViewActivity.this);
String message = getString(R.string.ssl_error_msg_line1) + " ";
switch (error.getPrimaryError()) {
diff --git a/app/src/main/java/com/cylonid/nativealpha/util/Utility.java b/app/src/main/java/com/cylonid/nativealpha/util/Utility.java
index 444b3313..ad2777ab 100644
--- a/app/src/main/java/com/cylonid/nativealpha/util/Utility.java
+++ b/app/src/main/java/com/cylonid/nativealpha/util/Utility.java
@@ -2,17 +2,13 @@
import android.annotation.SuppressLint;
import android.app.ActivityManager;
-import android.app.AlarmManager;
-import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
-import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
-import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
@@ -31,7 +27,6 @@
import com.cylonid.nativealpha.BuildConfig;
import com.cylonid.nativealpha.R;
-import com.cylonid.nativealpha.WebViewActivity;
import com.cylonid.nativealpha.model.DataManager;
import com.cylonid.nativealpha.model.WebApp;
import com.google.android.material.snackbar.Snackbar;
@@ -69,8 +64,7 @@ public static Intent createWebViewIntent(WebApp webapp, Context c) {
if (webapp.getContainerId() != Const.NO_CONTAINER) {
webview_class = Class.forName(apk_id + ".__WebViewActivity_" + webapp.getContainerId());
- }
- else {
+ } else {
webview_class = Class.forName(apk_id + ".WebViewActivity");
}
} catch (ClassNotFoundException e) {
@@ -83,6 +77,7 @@ public static Intent createWebViewIntent(WebApp webapp, Context c) {
return intent;
}
+
public static void deleteShortcuts(List removableWebAppIds) {
ShortcutManager manager = App.getAppContext().getSystemService(ShortcutManager.class);
for (ShortcutInfo info : manager.getPinnedShortcuts()) {
@@ -98,8 +93,7 @@ public static void setViewAndChildrenEnabled(View view, boolean enabled) {
view.setClickable(enabled);
if (enabled) {
view.setAlpha(1.0f);
- }
- else {
+ } else {
view.setAlpha(0.75f);
}
@@ -112,8 +106,7 @@ public static void setViewAndChildrenEnabled(View view, boolean enabled) {
}
}
- public static Long getTimeInSeconds()
- {
+ public static Long getTimeInSeconds() {
return System.currentTimeMillis() / 1000;
}
@@ -121,13 +114,13 @@ public static Long getTimeInSeconds()
public static SimpleDateFormat getHourMinFormat() {
return new SimpleDateFormat("HH:mm");
}
+
@SuppressLint("SimpleDateFormat")
public static SimpleDateFormat getDayHourMinuteSecondsFormat() {
- return new SimpleDateFormat( "EEE, d MMM yyyy HH:mm:ss Z");
+ return new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
}
-
public static Calendar convertStringToCalendar(String str) {
Calendar c = Calendar.getInstance();
try {
@@ -163,14 +156,13 @@ public static boolean isInInterval(Calendar low, Calendar time, Calendar high) {
// System.out.println("Is after low: " + (middle.after(low)));
-
public static void Assert(boolean condition, String message) {
if (!condition) {
throw new AssertionError(message);
}
}
- public static void personalizeToolbar(AppCompatActivity a) {
+ public static void personalizeToolbar(AppCompatActivity a) {
Toolbar toolbar = a.findViewById(R.id.toolbar);
toolbar.setLogo(R.mipmap.native_alpha_white);
@StringRes int appName = !BuildConfig.FLAVOR.equals("extended") ? R.string.app_name : R.string.app_name_plus;
@@ -208,7 +200,7 @@ public static void applyUITheme() {
}
}
- public static void writeFileOnInternalStorage(Context mcoContext, String sFileName, String sBody){
+ public static void writeFileOnInternalStorage(Context mcoContext, String sFileName, String sBody) {
try {
File gpxfile = new File(mcoContext.getExternalFilesDir(null), sFileName);
@@ -216,7 +208,7 @@ public static void writeFileOnInternalStorage(Context mcoContext, String sFileNa
writer.append(sBody);
writer.flush();
writer.close();
- } catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
}
@@ -274,10 +266,9 @@ public static String getFileNameFromDownload(String url, String content_disposit
(
@NonNull final Context context,
@AttrRes final int attributeColor
- )
- {
+ ) {
final TypedValue value = new TypedValue();
- context.getTheme ().resolveAttribute (attributeColor, value, true);
+ context.getTheme().resolveAttribute(attributeColor, value, true);
return value.data;
}
From fd70a857e210658777dfd27d106e9954eeb8ecb1 Mon Sep 17 00:00:00 2001
From: "Aaron M. Wilson" <39023212+kabirnayeem99@users.noreply.github.com>
Date: Fri, 1 Apr 2022 22:59:04 +0600
Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=93=A6=20feat=20[theming]:=20add=20ma?=
=?UTF-8?q?terial=20you=20to=20the=20app?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../model/WebAppInstanceCreator.java | 6 +-
.../main/res/layout/add_website_dialogue.xml | 1 +
app/src/main/res/layout/content_main.xml | 76 +++++++++----------
app/src/main/res/layout/global_settings.xml | 2 +
app/src/main/res/layout/webapp_settings.xml | 9 ++-
5 files changed, 48 insertions(+), 46 deletions(-)
diff --git a/app/src/main/java/com/cylonid/nativealpha/model/WebAppInstanceCreator.java b/app/src/main/java/com/cylonid/nativealpha/model/WebAppInstanceCreator.java
index 0d434016..0490a132 100644
--- a/app/src/main/java/com/cylonid/nativealpha/model/WebAppInstanceCreator.java
+++ b/app/src/main/java/com/cylonid/nativealpha/model/WebAppInstanceCreator.java
@@ -4,11 +4,9 @@
import java.lang.reflect.Type;
-public class WebAppInstanceCreator implements InstanceCreator
-{
+public class WebAppInstanceCreator implements InstanceCreator {
@Override
- public WebApp createInstance(Type type)
- {
+ public WebApp createInstance(Type type) {
return new WebApp("", Integer.MAX_VALUE);
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/add_website_dialogue.xml b/app/src/main/res/layout/add_website_dialogue.xml
index 5051838b..c637c989 100644
--- a/app/src/main/res/layout/add_website_dialogue.xml
+++ b/app/src/main/res/layout/add_website_dialogue.xml
@@ -12,6 +12,7 @@
android:layout_marginTop="16dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="4dp"
+ android:autofillHints="@string/url"
android:hint="@string/url"
android:inputType="textUri" />
diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml
index e1c84812..e0f5754f 100644
--- a/app/src/main/res/layout/content_main.xml
+++ b/app/src/main/res/layout/content_main.xml
@@ -17,44 +17,42 @@
android:id="@+id/mainScreen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical"
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:orientation="vertical" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/global_settings.xml b/app/src/main/res/layout/global_settings.xml
index f551de8d..0c2043f4 100644
--- a/app/src/main/res/layout/global_settings.xml
+++ b/app/src/main/res/layout/global_settings.xml
@@ -183,8 +183,10 @@
-
-
@@ -635,7 +636,7 @@
android:textAppearance="@style/TextAppearance.AppCompat.Small" />
-