Remove unnecessary methods from BaseApplication

This commit is contained in:
Akash Yadav
2022-01-09 13:58:20 +05:30
parent 2babe79e5c
commit 1c11ce7ce0
6 changed files with 51 additions and 104 deletions
@@ -29,6 +29,7 @@ import android.widget.LinearLayout;
import com.blankj.utilcode.util.ClipboardUtils;
import com.blankj.utilcode.util.KeyboardUtils;
import com.blankj.utilcode.util.ResourceUtils;
import com.blankj.utilcode.util.SizeUtils;
import com.itsaky.androidide.app.StudioActivity;
import com.itsaky.androidide.databinding.ActivityTerminalBinding;
@@ -50,6 +51,7 @@ import com.itsaky.terminal.view.TerminalView;
import com.itsaky.terminal.view.TerminalViewClient;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import org.json.JSONException;
@@ -74,25 +76,33 @@ public class TerminalActivity extends StudioActivity {
@Override
protected View bindLayout () {
binding = ActivityTerminalBinding.inflate (getLayoutInflater ());
return binding.getRoot ();
}
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
final var future = CompletableFuture.runAsync (() -> {
final var in = ResourceUtils.
});
terminal = new TerminalView (this, null);
terminal.setTerminalViewClient (client);
terminal.attachSession (createSession (getWorkingDirectory ()));
terminal.setKeepScreenOn (true);
terminal.setTextSize (SizeUtils.dp2px (10));
terminal.setTypeface (TypefaceUtils.jetbrainsMono ());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams (-1, 0);
params.weight = 1f;
binding.getRoot ().addView (terminal, 0, params);
try {
binding.virtualKeyTable.setVirtualKeysViewClient (getKeyListener ());
binding.virtualKeyTable.reload (new VirtualKeysInfo (ConstantsBridge.VIRTUAL_KEYS, "", VirtualKeysConstants.CONTROL_CHARS_ALIASES));
} catch (JSONException e) {
// Won't happen
LOG.error ("Unable to parse terminal virtual keys json data", e);
}
return binding.getRoot ();
}
@NonNull
@@ -83,7 +83,7 @@ public class EditorPreferences extends BasePreferenceFragment implements Prefere
if(p1.getKey().equals(KEY_EDITOR_DRAW_HEX)) {
boolean drawHex = (Boolean) p2;
getPrefManager().putBoolean(KEY_EDITOR_DRAW_HEX, drawHex);
ConstantsBridge.EDITORPREF_DRAW_HEX_CHANGED = true;
ConstantsBridge.EDITOR_PREF_DRAW_HEX_CHANGED = true;
}
return true;
}
@@ -154,7 +154,7 @@ public class EditorPreferences extends BasePreferenceFragment implements Prefere
private void changeTextSize(LayoutTextSizeSliderBinding binding, float size) {
getPrefManager().putFloat(KEY_EDITOR_FONT_SIZE, size);
binding.slider.setValue(size);
ConstantsBridge.EDITORPREF_SIZE_CHANGED = true;
ConstantsBridge.EDITOR_PREF_SIZE_CHANGED = true;
}
private void showPrintableCharsDialog() {
@@ -191,7 +191,7 @@ public class EditorPreferences extends BasePreferenceFragment implements Prefere
getPrefManager().putBoolean(KEY_EDITORFLAG_LINE_BREAK, isChecked);
}
ConstantsBridge.EDITORPREF_FLAGS_CHANGED = true;
ConstantsBridge.EDITOR_PREF_FLAGS_CHANGED = true;
});
builder.setPositiveButton(android.R.string.ok, null);
builder.setCancelable(false);
@@ -19,7 +19,6 @@ package com.itsaky.androidide.views;
import android.annotation.SuppressLint;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.widget.FrameLayout;
@@ -278,9 +277,9 @@ public class CodeEditorView extends FrameLayout {
}
private void configureEditorIfNeeded () {
boolean sizeChanged = isFirstCreate || ConstantsBridge.EDITORPREF_SIZE_CHANGED;
boolean flagsChanged = isFirstCreate || ConstantsBridge.EDITORPREF_FLAGS_CHANGED;
boolean drawHexChanged = isFirstCreate || ConstantsBridge.EDITORPREF_DRAW_HEX_CHANGED;
boolean sizeChanged = isFirstCreate || ConstantsBridge.EDITOR_PREF_SIZE_CHANGED;
boolean flagsChanged = isFirstCreate || ConstantsBridge.EDITOR_PREF_FLAGS_CHANGED;
boolean drawHexChanged = isFirstCreate || ConstantsBridge.EDITOR_PREF_DRAW_HEX_CHANGED;
final PreferenceManager prefs = StudioApp.getInstance ().getPrefManager ();
if (sizeChanged) {
@@ -290,7 +289,7 @@ public class CodeEditorView extends FrameLayout {
}
binding.editor.setTextSize (textSize);
ConstantsBridge.EDITORPREF_SIZE_CHANGED = false;
ConstantsBridge.EDITOR_PREF_SIZE_CHANGED = false;
}
if (flagsChanged) {
@@ -316,12 +315,12 @@ public class CodeEditorView extends FrameLayout {
}
binding.editor.setNonPrintablePaintingFlags (flags);
ConstantsBridge.EDITORPREF_FLAGS_CHANGED = false;
ConstantsBridge.EDITOR_PREF_FLAGS_CHANGED = false;
}
if (drawHexChanged) {
binding.editor.setLineColorsEnabled (prefs.getBoolean (PreferenceManager.KEY_EDITOR_DRAW_HEX, true));
ConstantsBridge.EDITORPREF_DRAW_HEX_CHANGED = false;
ConstantsBridge.EDITOR_PREF_DRAW_HEX_CHANGED = false;
}
isFirstCreate = false;
@@ -28,9 +28,9 @@ import android.os.Build;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationManagerCompat;
import androidx.multidex.MultiDexApplication;
import com.blankj.utilcode.util.EncodeUtils;
import com.blankj.utilcode.util.ResourceUtils;
import com.blankj.utilcode.util.ThrowableUtils;
import com.itsaky.androidide.common.R;
import com.itsaky.androidide.managers.PreferenceManager;
import com.itsaky.androidide.managers.ToolsManager;
import com.itsaky.androidide.shell.ShellServer;
@@ -50,11 +50,7 @@ public abstract class BaseApplication extends MultiDexApplication {
private static BaseApplication instance;
private StudioUtils mUtils;
private PreferenceManager mPrefsManager;
private NotificationManager mNotificationManager;
public static final long BUSYBOX_VERSION = 1;
public static final String TAG = "StudioApp";
public static final String ASSETS_DATA_DIR = "data/";
public static final String NOTIFICATION_ID_UPDATE = "17571";
public static final String NOTIFICATION_ID_DEVS = "17572";
public static final String TELEGRAM_GROUP_URL = "https://t.me/androidide_discussions";
@@ -68,7 +64,6 @@ public abstract class BaseApplication extends MultiDexApplication {
super.onCreate();
mPrefsManager = new PreferenceManager(this);
mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
JavaCharacter.initMap();
ToolsManager.init(this, null);
@@ -94,7 +89,7 @@ public abstract class BaseApplication extends MultiDexApplication {
NotificationManagerCompat.from(this).createNotificationChannel(devsChannels);
}
public String getNotificationChannelNameForId(String id) {
public String getNotificationChannelNameForId(@NonNull String id) {
if(id.equals(NOTIFICATION_ID_UPDATE))
return getUpdateNotificationChannelName();
else if(id.equals(NOTIFICATION_ID_DEVS))
@@ -103,11 +98,11 @@ public abstract class BaseApplication extends MultiDexApplication {
}
private String getUpdateNotificationChannelName() {
return getString(com.itsaky.androidide.common.R.string.cms_channel_id_update);
return getString(R.string.cms_channel_id_update);
}
private String getDevNotificationChannelName() {
return getString(com.itsaky.androidide.common.R.string.cms_channel_id_devs);
return getString(R.string.cms_channel_id_devs);
}
public static BaseApplication getBaseInstance () {
@@ -131,30 +126,11 @@ public abstract class BaseApplication extends MultiDexApplication {
public void writeException(Throwable th) {
FileUtil.writeFile(new File(FileUtil.getExternalStorageDir(), "idelog.txt").getAbsolutePath(), ThrowableUtils.getFullStackTrace(th));
}
public File getIndexedDir() {
return Environment.mkdirIfNotExits(new File(getRootDir(), "indexed"));
}
public File getD8Jar() {
File f = new File(getRootDir(), "d8.jar");
if(f.exists() && f.isFile())
return f;
if(ResourceUtils.copyFileFromAssets(ToolsManager.getCommonAsset("d8.jar"), f.getAbsolutePath())) {
return f;
}
return null;
}
public File getRootDir() {
return new File(getIDEDataDir(), "framework");
}
public File getRootDirOld() {
return new File(getFilesDir(), "framework");
}
@SuppressLint("SdCardPath")
public File getIDEDataDir() {
return Environment.mkdirIfNotExits(new File("/data/data/com.itsaky.androidide/files"));
@@ -165,31 +141,11 @@ public abstract class BaseApplication extends MultiDexApplication {
public final File getLogSenderDir() {
return new File(getRootDir(), "logsender");
}
@NonNull
@Contract(" -> new")
public final File getToolsDownloadDirectory() {
return new File(getRootDir(), "downloads");
}
public final File getTempProjectDir() {
return Environment.mkdirIfNotExits(new File(Environment.TMP_DIR, "tempProject"));
}
public final File getTempClassesDir() {
return Environment.mkdirIfNotExits(new File(FileUtil.getExternalStorageDir() /*getTempProjectDir() */, "classes"));
}
@NonNull
@Contract(" -> new")
public final String getDownloadRequestUrl() {
return new String(EncodeUtils.base64Decode("aHR0cHM6Ly9hbmRyb2lkaWRlLmNvbS9idWlsZC90b29scy9kb3dubG9hZC8="));
}
public boolean isFrameworkDownloaded() {
return getToolsDownloadDirectory().exists() && mPrefsManager.isFrameworkDownloaded();
}
public boolean isFrameworkInstalled() {
return getRootDir().exists() && mPrefsManager.isFrameworkInstalled();
}
@@ -203,27 +159,19 @@ public abstract class BaseApplication extends MultiDexApplication {
}
public File[] listProjects() {
return getProjectsDir().listFiles(p1 -> p1.isDirectory());
return getProjectsDir().listFiles(File::isDirectory);
}
public static boolean is64Bit() {
return isAarch64();
}
public static boolean is32Bit() {
return isArmv7a();
}
public static boolean isAbiSupported () {
return isAarch64() || isArmv7a();
}
public static boolean isAarch64 () {
return Arrays.stream(android.os.Build.SUPPORTED_ABIS).anyMatch("arm64-v8a"::equals);
return Arrays.asList (Build.SUPPORTED_ABIS).contains ("arm64-v8a");
}
public static boolean isArmv7a () {
return Arrays.stream(android.os.Build.SUPPORTED_ABIS).anyMatch("armeabi-v7a"::equals);
return Arrays.asList (Build.SUPPORTED_ABIS).contains ("armeabi-v7a");
}
@NonNull
@@ -235,15 +183,7 @@ public abstract class BaseApplication extends MultiDexApplication {
}
throw new UnsupportedOperationException ("Device not supported");
}
public String getAssetsDataFile() {
return ASSETS_DATA_DIR;
}
public String getAssetsDataFile(String str) {
return new StringBuffer().append(getAssetsDataFile()).append(str).toString();
}
public StudioUtils getUtils() {
return mUtils == null ? mUtils = new StudioUtils(this) : mUtils;
}
@@ -21,9 +21,9 @@ import java.util.List;
public class ConstantsBridge {
public static boolean EDITORPREF_SIZE_CHANGED = false;
public static boolean EDITORPREF_FLAGS_CHANGED = false;
public static boolean EDITORPREF_DRAW_HEX_CHANGED = false;
public static boolean EDITOR_PREF_SIZE_CHANGED = false;
public static boolean EDITOR_PREF_FLAGS_CHANGED = false;
public static boolean EDITOR_PREF_DRAW_HEX_CHANGED = false;
public static boolean CLASS_LOAD_SUCCESS = true;
public static boolean SPLASH_TO_MAIN = false;
@@ -106,21 +106,19 @@ public final class Environment {
SHELL = new File(BIN_DIR, "sh.sh");
BUSYBOX_SH = new File (BIN_DIR, "sh");
if(!JAVA.canExecute()) {
JAVA.setExecutable(true);
}
if(!BUSYBOX.canExecute()) {
BUSYBOX.setExecutable(true);
}
if(!SHELL.canExecute()) {
SHELL.setExecutable(true);
}
setExecutable (JAVA);
setExecutable (BUSYBOX);
setExecutable (SHELL);
System.setProperty("user.home", HOME.getAbsolutePath());
System.setProperty("java.home", JAVA_HOME.getAbsolutePath());
}
public static void setExecutable (@NonNull final File file) {
if (!file.setExecutable (true)) {
LOG.error ("Unable to set executable permissions to file", file);
}
}
@NonNull
private static Map<String, String> readProperties() {
@@ -129,11 +127,11 @@ public final class Environment {
try {
Properties p = new Properties();
p.load(new StringReader(FileIOUtils.readFile2String(IDE_PROPS_FILE)));
for(Map.Entry entry : p.entrySet()) {
for(@SuppressWarnings("rawtypes") Map.Entry entry : p.entrySet()) {
props.put(entry.getKey() + "", entry.getValue() + "");
}
} catch (Throwable th) {
// ignored
LOG.error ("Unable to read properties file", th);
}
return props;
}