Skip to content
This repository was archived by the owner on May 4, 2023. It is now read-only.

Commit 1ee0aa3

Browse files
Merge pull request #145 from DerGoogler/master
[WIP] UI rework
2 parents 223784e + a116a7b commit 1ee0aa3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+2119
-271
lines changed

LEGALS.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# LEGALS
2+
3+
## Fox's Magisk Module Manager
4+
- Maintained: Yes
5+
- Maintainers
6+
- [Fox2Code](https://github.com/Fox2Code)
7+
- [androidacybot](https://github.com/androidacybot)
8+
- License: [<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-law mr-2"><path fill-rule="evenodd" d="M8.75.75a.75.75 0 00-1.5 0V2h-.984c-.305 0-.604.08-.869.23l-1.288.737A.25.25 0 013.984 3H1.75a.75.75 0 000 1.5h.428L.066 9.192a.75.75 0 00.154.838l.53-.53-.53.53v.001l.002.002.002.002.006.006.016.015.045.04a3.514 3.514 0 00.686.45A4.492 4.492 0 003 11c.88 0 1.556-.22 2.023-.454a3.515 3.515 0 00.686-.45l.045-.04.016-.015.006-.006.002-.002.001-.002L5.25 9.5l.53.53a.75.75 0 00.154-.838L3.822 4.5h.162c.305 0 .604-.08.869-.23l1.289-.737a.25.25 0 01.124-.033h.984V13h-2.5a.75.75 0 000 1.5h6.5a.75.75 0 000-1.5h-2.5V3.5h.984a.25.25 0 01.124.033l1.29.736c.264.152.563.231.868.231h.162l-2.112 4.692a.75.75 0 00.154.838l.53-.53-.53.53v.001l.002.002.002.002.006.006.016.015.045.04a3.517 3.517 0 00.686.45A4.492 4.492 0 0013 11c.88 0 1.556-.22 2.023-.454a3.512 3.512 0 00.686-.45l.045-.04.01-.01.006-.005.006-.006.002-.002.001-.002-.529-.531.53.53a.75.75 0 00.154-.838L13.823 4.5h.427a.75.75 0 000-1.5h-2.234a.25.25 0 01-.124-.033l-1.29-.736A1.75 1.75 0 009.735 2H8.75V.75zM1.695 9.227c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327l-1.305 2.9zm10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327l-1.305 2.9z"></path></svg> LGPL-3.0 license](https://github.com/Fox2Code/FoxMagiskModuleManager/blob/master/LICENCE)
9+
10+
## Rosetta ([Fork](https://github.com/iamjazzar/rosetta))
11+
- Maintained: No
12+
- Maintainers
13+
- [iamjazzar](https://github.com/iamjazzar)
14+
- Others unknown
15+
- License: [<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-law mr-2"><path fill-rule="evenodd" d="M8.75.75a.75.75 0 00-1.5 0V2h-.984c-.305 0-.604.08-.869.23l-1.288.737A.25.25 0 013.984 3H1.75a.75.75 0 000 1.5h.428L.066 9.192a.75.75 0 00.154.838l.53-.53-.53.53v.001l.002.002.002.002.006.006.016.015.045.04a3.514 3.514 0 00.686.45A4.492 4.492 0 003 11c.88 0 1.556-.22 2.023-.454a3.515 3.515 0 00.686-.45l.045-.04.016-.015.006-.006.002-.002.001-.002L5.25 9.5l.53.53a.75.75 0 00.154-.838L3.822 4.5h.162c.305 0 .604-.08.869-.23l1.289-.737a.25.25 0 01.124-.033h.984V13h-2.5a.75.75 0 000 1.5h6.5a.75.75 0 000-1.5h-2.5V3.5h.984a.25.25 0 01.124.033l1.29.736c.264.152.563.231.868.231h.162l-2.112 4.692a.75.75 0 00.154.838l.53-.53-.53.53v.001l.002.002.002.002.006.006.016.015.045.04a3.517 3.517 0 00.686.45A4.492 4.492 0 0013 11c.88 0 1.556-.22 2.023-.454a3.512 3.512 0 00.686-.45l.045-.04.01-.01.006-.005.006-.006.002-.002.001-.002-.529-.531.53.53a.75.75 0 00.154-.838L13.823 4.5h.427a.75.75 0 000-1.5h-2.234a.25.25 0 01-.124-.033l-1.29-.736A1.75 1.75 0 009.735 2H8.75V.75zM1.695 9.227c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327l-1.305 2.9zm10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327l-1.305 2.9z"></path></svg> MIT license](https://github.com/iamjazzar/rosetta/blob/master/LICENSE)

app/build.gradle

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ android {
7171
}
7272

7373
aboutLibraries {
74-
additionalLicenses = ["LGPL_3_0_only"]
74+
additionalLicenses = [
75+
"LGPL_3_0_only",
76+
"rosetta"
77+
]
7578
}
7679

7780
configurations {
@@ -88,7 +91,7 @@ dependencies {
8891
implementation 'androidx.recyclerview:recyclerview:1.2.1'
8992
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
9093
implementation 'androidx.webkit:webkit:1.4.0'
91-
implementation 'com.google.android.material:material:1.5.0'
94+
implementation 'com.google.android.material:material:1.6.0'
9295
implementation "com.mikepenz:aboutlibraries:${latestAboutLibsRelease}"
9396
implementation "dev.rikka.rikkax.layoutinflater:layoutinflater:1.2.0"
9497
implementation "dev.rikka.rikkax.insets:insets:1.2.0"
@@ -98,6 +101,7 @@ dependencies {
98101
implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps:4.9.3'
99102
implementation 'com.squareup.okhttp3:okhttp-brotli:4.9.3'
100103
implementation 'com.github.topjohnwu.libsu:io:5.0.1'
104+
implementation project(":rosetta")
101105

102106
// Markdown
103107
implementation "io.noties.markwon:core:4.6.2"

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@
3232
android:dataExtractionRules="@xml/data_extraction_rules"
3333
android:networkSecurityConfig="@xml/network_security_config"
3434
android:usesCleartextTraffic="false"
35-
tools:targetApi="s">
35+
tools:targetApi="s"
36+
tools:replace="android:supportsRtl">
3637
<receiver android:name="com.fox2code.mmm.manager.ModuleBootReceive"
3738
android:exported="true">
3839
<intent-filter>
@@ -62,7 +63,9 @@
6263
android:name=".installer.InstallerActivity"
6364
android:parentActivityName=".MainActivity"
6465
android:exported="false"
65-
android:launchMode="singleTop">
66+
android:screenOrientation="portrait"
67+
android:launchMode="singleTop"
68+
tools:ignore="LockedOrientationActivity">
6669
<intent-filter>
6770
<action android:name="${applicationId}.intent.action.INSTALL_MODULE_INTERNAL" />
6871
</intent-filter>

app/src/main/java/com/fox2code/mmm/Constants.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ public class Constants {
2323
public static final String EXTRA_MARKDOWN_URL = "extra_markdown_url";
2424
public static final String EXTRA_MARKDOWN_TITLE = "extra_markdown_title";
2525
public static final String EXTRA_MARKDOWN_CONFIG = "extra_markdown_config";
26+
public static final String EXTRA_MARKDOWN_CHANGE_BOOT = "extra_markdown_change_boot";
27+
public static final String EXTRA_MARKDOWN_NEEDS_RAMDISK = "extra_markdown_needs_ramdisk";
28+
public static final String EXTRA_MARKDOWN_MIN_MAGISK = "extra_markdown_min_magisk";
29+
public static final String EXTRA_MARKDOWN_MIN_API= "extra_markdown_min_api";
30+
public static final String EXTRA_MARKDOWN_MAX_API = "extra_markdown_max_api";
2631
public static final String EXTRA_FADE_OUT = "extra_fade_out";
2732
public static final String EXTRA_FROM_MANAGER = "extra_from_manager";
2833
}

app/src/main/java/com/fox2code/mmm/MainActivity.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
import com.fox2code.mmm.settings.SettingsActivity;
3333
import com.fox2code.mmm.utils.Http;
3434
import com.fox2code.mmm.utils.IntentHelper;
35+
import com.google.android.material.appbar.AppBarLayout;
36+
import com.google.android.material.appbar.MaterialToolbar;
3537
import com.google.android.material.progressindicator.LinearProgressIndicator;
3638

3739
import eightbitlab.com.blurview.BlurView;
@@ -68,10 +70,10 @@ public MainActivity() {
6870
protected void onCreate(Bundle savedInstanceState) {
6971
this.initMode = true;
7072
super.onCreate(savedInstanceState);
71-
this.setActionBarExtraMenuButton(R.drawable.ic_baseline_settings_24, v -> {
73+
this.setActionBarExtraMenuButton(R.drawable.ic_baseline_settings_24, v -> {
7274
IntentHelper.startActivity(this, SettingsActivity.class);
73-
return true;
74-
}, R.string.pref_category_settings);
75+
return true;
76+
}, R.string.pref_category_settings);
7577
setContentView(R.layout.activity_main);
7678
this.setTitle(R.string.app_name);
7779
this.getWindow().setFlags(
@@ -106,10 +108,10 @@ protected void onCreate(Bundle savedInstanceState) {
106108
this.actionBarBlur.setBackground(this.actionBarBackground);
107109
this.actionBarBlur.setupWith(this.moduleList).setFrameClearDrawable(
108110
this.getWindow().getDecorView().getBackground())
109-
.setBlurAlgorithm(new RenderScriptBlur(this))
110-
.setBlurRadius(4F).setBlurAutoUpdate(true)
111-
.setHasFixedTransformationMatrix(true);
112-
this.updateBlurState();
111+
.setBlurAlgorithm(new RenderScriptBlur(this))
112+
.setBlurRadius(4F).setBlurAutoUpdate(true)
113+
.setHasFixedTransformationMatrix(true);
114+
this.updateBlurState();
113115
this.moduleList.addOnScrollListener(new RecyclerView.OnScrollListener() {
114116
@Override
115117
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
@@ -255,7 +257,7 @@ private void updateScreenInsets(Configuration configuration) {
255257
bottomInset + this.searchCard.getHeight());
256258
this.searchCard.setRadius(this.searchCard.getHeight() / 2F);
257259
this.moduleViewListBuilder.updateInsets();
258-
this.actionBarBlur.invalidate();
260+
//this.actionBarBlur.invalidate();
259261
this.overScrollInsetTop = combinedBarsHeight;
260262
this.overScrollInsetBottom = bottomInset;
261263
Log.d(TAG, "( " + bottomInset + ", " +

app/src/main/java/com/fox2code/mmm/MainApplication.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.fox2code.mmm.installer.InstallerInitializer;
2424
import com.fox2code.mmm.utils.GMSProviderInstaller;
2525
import com.fox2code.mmm.utils.Http;
26+
import com.google.android.material.color.DynamicColors;
2627
import com.topjohnwu.superuser.Shell;
2728

2829
import java.text.SimpleDateFormat;
@@ -115,11 +116,20 @@ public static boolean isDohEnabled() {
115116
return getSharedPreferences().getBoolean("pref_dns_over_https", true);
116117
}
117118

119+
public static boolean isMonetEnabled() {
120+
return getSharedPreferences().getBoolean("pref_enable_monet", false);
121+
}
122+
118123
public static boolean isBlurEnabled() {
119124
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
120125
getSharedPreferences().getBoolean("pref_enable_blur", false);
121126
}
122127

128+
public static boolean isChipsDisabled() {
129+
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
130+
getSharedPreferences().getBoolean("pref_disable_chips", false);
131+
}
132+
123133
public static boolean isDeveloper() {
124134
return BuildConfig.DEBUG ||
125135
getSharedPreferences().getBoolean("developer", false);
@@ -275,6 +285,11 @@ public boolean isLightTheme() {
275285
@Override
276286
public void onCreate() {
277287
super.onCreate();
288+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
289+
if (MainApplication.isMonetEnabled()) {
290+
DynamicColors.applyToActivitiesIfAvailable(this);
291+
}
292+
}
278293
SharedPreferences sharedPreferences = MainApplication.getSharedPreferences();
279294
// We are only one process so it's ok to do this
280295
SharedPreferences bootPrefs = MainApplication.bootSharedPreferences =

app/src/main/java/com/fox2code/mmm/compat/CompatActivity.java

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.content.Context;
66
import android.content.ContextWrapper;
77
import android.content.Intent;
8+
import android.content.SharedPreferences;
89
import android.content.res.Configuration;
910
import android.content.res.Resources;
1011
import android.graphics.drawable.Drawable;
@@ -36,6 +37,7 @@
3637
import androidx.core.graphics.ColorUtils;
3738
import androidx.core.view.WindowInsetsCompat;
3839
import androidx.fragment.app.Fragment;
40+
import androidx.preference.PreferenceManager;
3941

4042
import com.fox2code.mmm.Constants;
4143
import com.fox2code.mmm.R;
@@ -55,20 +57,21 @@ public class CompatActivity extends AppCompatActivity {
5557
private static final String TAG = "CompatActivity";
5658
public static final CompatActivity.OnBackPressedCallback DISABLE_BACK_BUTTON =
5759
new CompatActivity.OnBackPressedCallback() {
58-
@Override
59-
public boolean onBackPressed(CompatActivity compatActivity) {
60-
compatActivity.setOnBackPressedCallback(this);
61-
return true;
62-
}
63-
};
60+
@Override
61+
public boolean onBackPressed(CompatActivity compatActivity) {
62+
compatActivity.setOnBackPressedCallback(this);
63+
return true;
64+
}
65+
};
6466

6567
final WeakReference<CompatActivity> selfReference;
6668
private final CompatConfigHelper compatConfigHelper = new CompatConfigHelper(this);
6769
private CompatActivity.OnActivityResultCallback onActivityResultCallback;
6870
private CompatActivity.OnBackPressedCallback onBackPressedCallback;
6971
private MenuItem.OnMenuItemClickListener menuClickListener;
7072
private CharSequence menuContentDescription;
71-
@StyleRes private int setThemeDynamic = 0;
73+
@StyleRes
74+
private int setThemeDynamic = 0;
7275
private boolean onCreateCalledOnce = false;
7376
private boolean onCreateCalled = false;
7477
private boolean isRefreshUi = false;
@@ -221,7 +224,8 @@ public View getActionBarView() {
221224
}
222225
}
223226

224-
@Dimension @Px
227+
@Dimension
228+
@Px
225229
public int getActionBarHeight() {
226230
androidx.appcompat.app.ActionBar compatActionBar;
227231
try {
@@ -247,6 +251,15 @@ public int getActionBarHeight() {
247251
}
248252
}
249253

254+
public int getActionBarHeight(Activity activity) {
255+
TypedValue tv = new TypedValue();
256+
int actionBarHeight = 0;
257+
if (activity.getTheme().resolveAttribute(R.attr.actionBarSize, tv, true)) {
258+
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, getResources().getDisplayMetrics());
259+
}
260+
return actionBarHeight;
261+
}
262+
250263
public void setActionBarBackground(Drawable drawable) {
251264
androidx.appcompat.app.ActionBar compatActionBar;
252265
try {
@@ -264,7 +277,8 @@ public void setActionBarBackground(Drawable drawable) {
264277
}
265278
}
266279

267-
@Dimension @Px
280+
@Dimension
281+
@Px
268282
public int getStatusBarHeight() {
269283
int height = WindowInsetsCompat.CONSUMED.getInsets(
270284
WindowInsetsCompat.Type.statusBars()).top;
@@ -476,7 +490,7 @@ void propagateResourcesOverride(boolean forceEnglish, Boolean nightModeOverride)
476490
this.checkResourcesOverrides(forceEnglish, nightModeOverride);
477491
}
478492

479-
private void checkResourcesOverrides(boolean forceEnglish,Boolean nightModeOverride) {
493+
private void checkResourcesOverrides(boolean forceEnglish, Boolean nightModeOverride) {
480494
if (this.isRefreshUi || !this.onCreateCalled) return; // Wait before reload
481495
this.compatConfigHelper.checkResourcesOverrides(forceEnglish, nightModeOverride);
482496
}
@@ -534,6 +548,14 @@ public static CompatActivity getCompatActivity(Context context) {
534548
return (CompatActivity) context;
535549
}
536550

551+
@Override
552+
protected void attachBaseContext(Context newBase) {
553+
SharedPreferences mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(newBase);
554+
Locale locale = new Locale(mSharedPreferences.getString("user_preferred_country", "en"));
555+
Context context = CompatWrapper.setLocale(newBase, locale);
556+
super.attachBaseContext(context);
557+
}
558+
537559
public WeakReference<CompatActivity> asWeakReference() {
538560
return this.selfReference;
539561
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.fox2code.mmm.compat;
2+
3+
import android.content.Context;
4+
import android.content.ContextWrapper;
5+
import android.content.res.Configuration;
6+
import android.content.res.Resources;
7+
import android.os.Build;
8+
import android.os.LocaleList;
9+
10+
import java.util.Locale;
11+
12+
public class CompatWrapper extends android.content.ContextWrapper {
13+
14+
public CompatWrapper(Context base) {
15+
super(base);
16+
}
17+
18+
public static ContextWrapper setLocale(Context context, Locale newLocale) {
19+
20+
Resources res = context.getResources();
21+
Configuration configuration = res.getConfiguration();
22+
23+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
24+
configuration.setLocale(newLocale);
25+
26+
LocaleList localeList = new LocaleList(newLocale);
27+
LocaleList.setDefault(localeList);
28+
configuration.setLocales(localeList);
29+
30+
context = context.createConfigurationContext(configuration);
31+
32+
} else {
33+
configuration.setLocale(newLocale);
34+
context = context.createConfigurationContext(configuration);
35+
36+
}
37+
38+
return new ContextWrapper(context);
39+
}
40+
}

0 commit comments

Comments
 (0)