Make chips dynamic in markdown view

pull/145/head
DerGoogler 2 years ago
parent a9a329f1bd
commit 55415166da

@ -25,6 +25,9 @@ public class Constants {
public static final String EXTRA_MARKDOWN_CONFIG = "extra_markdown_config";
public static final String EXTRA_MARKDOWN_CHANGE_BOOT = "extra_markdown_change_boot";
public static final String EXTRA_MARKDOWN_NEEDS_RAMDISK = "extra_markdown_needs_ramdisk";
public static final String EXTRA_MARKDOWN_MIN_MAGISK = "extra_markdown_min_magisk";
public static final String EXTRA_MARKDOWN_MIN_API= "extra_markdown_min_api";
public static final String EXTRA_MARKDOWN_MAX_API = "extra_markdown_max_api";
public static final String EXTRA_FADE_OUT = "extra_fade_out";
public static final String EXTRA_FROM_MANAGER = "extra_from_manager";
}

@ -13,6 +13,7 @@ import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.core.graphics.ColorUtils;
import com.fox2code.mmm.Constants;
@ -23,6 +24,7 @@ import com.fox2code.mmm.compat.CompatActivity;
import com.fox2code.mmm.utils.Http;
import com.fox2code.mmm.utils.IntentHelper;
import com.google.android.material.chip.Chip;
import com.google.android.material.chip.ChipGroup;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.internal.UiThreadHandler;
@ -87,6 +89,12 @@ public class MarkdownActivity extends CompatActivity {
.getBoolean(Constants.EXTRA_MARKDOWN_CHANGE_BOOT);
boolean needs_ramdisk = intent.getExtras()
.getBoolean(Constants.EXTRA_MARKDOWN_NEEDS_RAMDISK);
int min_magisk = intent.getExtras()
.getInt(Constants.EXTRA_MARKDOWN_MIN_MAGISK);
int min_api = intent.getExtras()
.getInt(Constants.EXTRA_MARKDOWN_MIN_API);
int max_api = intent.getExtras()
.getInt(Constants.EXTRA_MARKDOWN_MAX_API);
if (title != null && !title.isEmpty()) {
this.setTitle(title);
}
@ -111,10 +119,7 @@ public class MarkdownActivity extends CompatActivity {
setContentView(R.layout.markdown_view);
final ViewGroup markdownBackground = findViewById(R.id.markdownBackground);
final TextView textView = findViewById(R.id.markdownView);
final Chip chip_can_change_boot = findViewById(R.id.chip_change_boot);
final Chip chip_needs_ramdisk = findViewById(R.id.chip_needs_ramdisk);
final HorizontalScrollView chip_holder = findViewById(R.id.chip_holder);
final Chip min_magisk = findViewById(R.id.chip_min_magisk);
final TextView footer = findViewById(R.id.markdownFooter);
UiThreadHandler.handler.postDelayed(() -> // Fix footer height
footer.setMinHeight(this.getNavigationBarHeight()), 1L);
@ -123,38 +128,19 @@ public class MarkdownActivity extends CompatActivity {
if (MainApplication.isChipsDisabled()) {
chip_holder.setVisibility(View.GONE);
} else {
if (change_boot) {
chip_can_change_boot.setVisibility(View.VISIBLE);
chip_can_change_boot.setOnClickListener(_view -> {
MaterialAlertDialogBuilder builder =
new MaterialAlertDialogBuilder(this);
builder
.setTitle(R.string.module_can_change_boot)
.setMessage("This module may change the boot image")
.setCancelable(true)
.setPositiveButton(R.string.ok, (x, y) -> {
x.dismiss();
}).show();
});
}
if (needs_ramdisk) {
chip_needs_ramdisk.setVisibility(View.VISIBLE);
chip_needs_ramdisk.setOnClickListener(_view -> {
MaterialAlertDialogBuilder builder =
new MaterialAlertDialogBuilder(this);
builder
.setTitle(R.string.module_needs_ramdisk)
.setMessage("This module need boot ramdisk to be installed")
.setCancelable(true)
.setPositiveButton(R.string.ok, (x, y) -> {
x.dismiss();
}).show();
});
}
// set "message" to null to disable dialog
this.setChips(change_boot,
getString(R.string.module_can_change_boot),
"This module may change the boot image");
this.setChips(needs_ramdisk,
getString(R.string.module_needs_ramdisk),
"This module need boot ramdisk to be installed");
this.setChips(min_magisk, "Min. Magisk \"" + min_magisk + "\"",
null);
this.setChips(min_api, "Min. Android " + min_api,
null);
this.setChips(max_api, "Max. Android " + max_api,
null);
}
new Thread(() -> {
@ -185,6 +171,56 @@ public class MarkdownActivity extends CompatActivity {
}, "Markdown load thread").start();
}
private void setChips(boolean bool, String title, String message) {
final ChipGroup chip_group_holder = findViewById(R.id.chip_group_holder);
if (bool) {
Chip chip = new Chip(this);
chip.setText(title);
chip.setVisibility(View.VISIBLE);
if (message != null) {
chip.setOnClickListener(_view -> {
MaterialAlertDialogBuilder builder =
new MaterialAlertDialogBuilder(this);
builder
.setTitle(title)
.setMessage(message)
.setCancelable(true)
.setPositiveButton(R.string.ok, (x, y) -> {
x.dismiss();
}).show();
});
}
chip_group_holder.addView(chip);
}
}
private void setChips(int i, String title, String message) {
final ChipGroup chip_group_holder = findViewById(R.id.chip_group_holder);
if (i != 0) {
Chip chip = new Chip(this);
chip.setText(title);
chip.setVisibility(View.VISIBLE);
if (message != null) {
chip.setOnClickListener(_view -> {
MaterialAlertDialogBuilder builder =
new MaterialAlertDialogBuilder(this);
builder
.setTitle(title)
.setMessage(message)
.setCancelable(true)
.setPositiveButton(R.string.ok, (x, y) -> {
x.dismiss();
}).show();
});
}
chip_group_holder.addView(chip);
}
}
@Override
protected void onResume() {
super.onResume();

@ -49,7 +49,11 @@ public enum ActionButtonType {
moduleHolder.repoModule.moduleInfo.name,
moduleHolder.getMainModuleConfig(),
moduleHolder.repoModule.moduleInfo.changeBoot,
moduleHolder.repoModule.moduleInfo.needRamdisk);
moduleHolder.repoModule.moduleInfo.needRamdisk,
moduleHolder.repoModule.moduleInfo.minMagisk,
moduleHolder.repoModule.moduleInfo.minApi,
moduleHolder.repoModule.moduleInfo.maxApi
);
}
}

@ -165,7 +165,7 @@ public class IntentHelper {
}
}
public static void openMarkdown(Context context, String url, String title, String config, Boolean changeBoot, Boolean needsRamdisk) {
public static void openMarkdown(Context context, String url, String title, String config, Boolean changeBoot, Boolean needsRamdisk,int minMagisk, int minApi, int maxApi) {
try {
Intent intent = new Intent(context, MarkdownActivity.class);
MainApplication.addSecret(intent);
@ -173,6 +173,9 @@ public class IntentHelper {
intent.putExtra(Constants.EXTRA_MARKDOWN_TITLE, title);
intent.putExtra(Constants.EXTRA_MARKDOWN_CHANGE_BOOT, changeBoot);
intent.putExtra(Constants.EXTRA_MARKDOWN_NEEDS_RAMDISK, needsRamdisk);
intent.putExtra(Constants.EXTRA_MARKDOWN_MIN_MAGISK, minMagisk);
intent.putExtra(Constants.EXTRA_MARKDOWN_MIN_API, minApi);
intent.putExtra(Constants.EXTRA_MARKDOWN_MAX_API, maxApi);
if (config != null && !config.isEmpty())
intent.putExtra(Constants.EXTRA_MARKDOWN_CONFIG, config);
startActivity(context, intent, true);

@ -41,32 +41,14 @@
android:layout_height="wrap_content">
<com.google.android.material.chip.ChipGroup
android:id="@+id/chip_group_holder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:padding="8dp"
app:singleLine="true">
<com.google.android.material.chip.Chip
android:id="@+id/chip_change_boot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/module_can_change_boot"
android:visibility="gone" />
<com.google.android.material.chip.Chip
android:id="@+id/chip_needs_ramdisk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/module_needs_ramdisk"
android:visibility="gone" />
<!-- Leaving string hard codded -->
<com.google.android.material.chip.Chip
android:id="@+id/chip_min_magisk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Minimum Magisk 24.3+"
android:visibility="gone" />
<!-- Dynamically added -->
</com.google.android.material.chip.ChipGroup>
</HorizontalScrollView>

Loading…
Cancel
Save