You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
6.3 KiB
Java
161 lines
6.3 KiB
Java
package com.fox2code.mmm;
|
|
|
|
import android.app.AlertDialog;
|
|
import android.content.Context;
|
|
import android.util.Log;
|
|
import android.widget.ImageButton;
|
|
import android.widget.Toast;
|
|
|
|
import androidx.annotation.DrawableRes;
|
|
|
|
import com.fox2code.mmm.compat.CompatActivity;
|
|
import com.fox2code.mmm.manager.ModuleInfo;
|
|
import com.fox2code.mmm.manager.ModuleManager;
|
|
import com.fox2code.mmm.repo.RepoModule;
|
|
import com.fox2code.mmm.utils.IntentHelper;
|
|
|
|
public enum ActionButtonType {
|
|
INFO(R.drawable.ic_baseline_info_24) {
|
|
@Override
|
|
public void doAction(ImageButton button, ModuleHolder moduleHolder) {
|
|
IntentHelper.openMarkdown(button.getContext(),
|
|
moduleHolder.repoModule.notesUrl,
|
|
moduleHolder.repoModule.moduleInfo.name,
|
|
moduleHolder.getMainModuleConfig());
|
|
}
|
|
|
|
@Override
|
|
public boolean doActionLong(ImageButton button, ModuleHolder moduleHolder) {
|
|
Context context = button.getContext();
|
|
Toast.makeText(context, context.getString(R.string.module_id_prefix) +
|
|
moduleHolder.moduleId, Toast.LENGTH_SHORT).show();
|
|
return true;
|
|
}
|
|
},
|
|
UPDATE_INSTALL() {
|
|
@Override
|
|
public void update(ImageButton button, ModuleHolder moduleHolder) {
|
|
int icon = moduleHolder.hasUpdate() ?
|
|
R.drawable.ic_baseline_update_24 : R.drawable.ic_baseline_download_24;
|
|
button.setImageResource(icon);
|
|
}
|
|
|
|
@Override
|
|
public void doAction(ImageButton button, ModuleHolder moduleHolder) {
|
|
RepoModule repoModule = moduleHolder.repoModule;
|
|
if (repoModule == null) return;
|
|
IntentHelper.openInstaller(button.getContext(), repoModule.zipUrl,
|
|
repoModule.moduleInfo.name, repoModule.moduleInfo.config);
|
|
}
|
|
},
|
|
UNINSTALL() {
|
|
@Override
|
|
public void update(ImageButton button, ModuleHolder moduleHolder) {
|
|
int icon = moduleHolder.hasFlag(ModuleInfo.FLAG_MODULE_UNINSTALLING) ?
|
|
R.drawable.ic_baseline_delete_outline_24 :
|
|
moduleHolder.hasFlag(ModuleInfo.FLAG_MODULE_ACTIVE) ?
|
|
R.drawable.ic_baseline_delete_24 :
|
|
R.drawable.ic_baseline_delete_forever_24;
|
|
button.setImageResource(icon);
|
|
}
|
|
|
|
@Override
|
|
public void doAction(ImageButton button, ModuleHolder moduleHolder) {
|
|
if (!ModuleManager.getINSTANCE().setUninstallState(moduleHolder.moduleInfo,
|
|
!moduleHolder.moduleInfo.hasFlag(ModuleInfo.FLAG_MODULE_UNINSTALLING))) {
|
|
Log.e("ActionButtonType", "Failed to switch uninstalled state!");
|
|
}
|
|
update(button, moduleHolder);
|
|
}
|
|
|
|
@Override
|
|
public boolean doActionLong(ImageButton button, ModuleHolder moduleHolder) {
|
|
if (moduleHolder.moduleInfo.hasFlag(ModuleInfo.FLAG_MODULE_ACTIVE)) return false;
|
|
new AlertDialog.Builder(button.getContext()).setTitle(R.string.master_delete)
|
|
.setPositiveButton(R.string.master_delete_yes, (v, i) -> {
|
|
if (!ModuleManager.getINSTANCE().masterClear(moduleHolder.moduleInfo)) {
|
|
Toast.makeText(button.getContext(), R.string.master_delete_fail,
|
|
Toast.LENGTH_SHORT).show();
|
|
} else {
|
|
moduleHolder.moduleInfo = null;
|
|
CompatActivity.getCompatActivity(button).refreshUI();
|
|
}
|
|
}).setNegativeButton(R.string.master_delete_no, (v, i) -> {}).create().show();
|
|
return true;
|
|
}
|
|
},
|
|
CONFIG(R.drawable.ic_baseline_app_settings_alt_24) {
|
|
@Override
|
|
public void doAction(ImageButton button, ModuleHolder moduleHolder) {
|
|
IntentHelper.openConfig(button.getContext(), moduleHolder.getMainModuleConfig());
|
|
}
|
|
},
|
|
SUPPORT() {
|
|
@Override
|
|
public void update(ImageButton button, ModuleHolder moduleHolder) {
|
|
ModuleInfo moduleInfo = moduleHolder.getMainModuleInfo();
|
|
button.setImageResource(supportIconForUrl(moduleInfo.support));
|
|
}
|
|
|
|
@Override
|
|
public void doAction(ImageButton button, ModuleHolder moduleHolder) {
|
|
IntentHelper.openUrl(button.getContext(), moduleHolder.getMainModuleInfo().support);
|
|
}
|
|
},
|
|
DONATE() {
|
|
@Override
|
|
public void update(ImageButton button, ModuleHolder moduleHolder) {
|
|
ModuleInfo moduleInfo = moduleHolder.getMainModuleInfo();
|
|
int icon = R.drawable.ic_baseline_monetization_on_24;
|
|
if (moduleInfo.donate.startsWith("https://www.paypal.me/")) {
|
|
icon = R.drawable.ic_baseline_paypal_24;
|
|
} else if (moduleInfo.donate.startsWith("https://www.patreon.com/")) {
|
|
icon = R.drawable.ic_patreon;
|
|
}
|
|
button.setImageResource(icon);
|
|
}
|
|
|
|
@Override
|
|
public void doAction(ImageButton button, ModuleHolder moduleHolder) {
|
|
IntentHelper.openUrl(button.getContext(), moduleHolder.getMainModuleInfo().donate);
|
|
}
|
|
};
|
|
|
|
@DrawableRes
|
|
public static int supportIconForUrl(String url) {
|
|
int icon = R.drawable.ic_baseline_support_24;
|
|
if (url.startsWith("https://t.me/")) {
|
|
icon = R.drawable.ic_baseline_telegram_24;
|
|
} else if (url.startsWith("https://discord.gg/") ||
|
|
url.startsWith("https://discord.com/invite/")) {
|
|
icon = R.drawable.ic_baseline_discord_24;
|
|
} else if (url.startsWith("https://github.com/")) {
|
|
icon = R.drawable.ic_github;
|
|
} else if (url.startsWith("https://forum.xda-developers.com/")) {
|
|
icon = R.drawable.ic_xda;
|
|
}
|
|
return icon;
|
|
}
|
|
|
|
@DrawableRes
|
|
private final int iconId;
|
|
|
|
ActionButtonType() {
|
|
this.iconId = 0;
|
|
}
|
|
|
|
ActionButtonType(int iconId) {
|
|
this.iconId = iconId;
|
|
}
|
|
|
|
public void update(ImageButton button, ModuleHolder moduleHolder) {
|
|
button.setImageResource(this.iconId);
|
|
}
|
|
|
|
public abstract void doAction(ImageButton button, ModuleHolder moduleHolder);
|
|
|
|
public boolean doActionLong(ImageButton button, ModuleHolder moduleHolder) {
|
|
return false;
|
|
}
|
|
}
|