From 9df38ac9c4effd757806c1a526324f8b8ab611ce Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Mon, 1 Nov 2021 15:03:52 +0530 Subject: [PATCH] Fix itsaky/AndroidIDE#15 --- .../com/itsaky/androidide/EditorActivity.java | 6 +- .../handlers/BuildServiceHandler.java | 54 ++++++- .../itsaky/androidide/models/ApkMetadata.java | 2 + .../itsaky/androidide/tasks/GradleTask.java | 2 - .../tasks/gradle/build/AssembleDebug.java | 20 +-- .../tasks/gradle/build/AssembleRelease.java | 18 +-- .../androidide/tasks/gradle/build/Build.java | 20 ++- .../androidide/tasks/gradle/build/Bundle.java | 13 +- .../androidide/tasks/gradle/build/Clean.java | 12 +- .../tasks/gradle/build/CleanBuild.java | 13 +- .../androidide/tasks/gradle/lint/Lint.java | 10 -- .../tasks/gradle/lint/LintDebug.java | 10 -- .../tasks/gradle/lint/LintRelease.java | 12 +- .../gradle/plugin/InitializeIDEProject.java | 10 -- .../DatabindingGenBaseClassesDebug.java | 12 +- .../resources/ProcessDebugResources.java | 12 +- .../resources/UpdateResourceClassesTask.java | 12 +- .../main/java/com/itsaky/toaster/Toaster.java | 139 ++++++++---------- app/src/main/res/values/strings.xml | 1 + build.gradle | 2 +- 20 files changed, 154 insertions(+), 226 deletions(-) diff --git a/app/src/main/java/com/itsaky/androidide/EditorActivity.java b/app/src/main/java/com/itsaky/androidide/EditorActivity.java index 823bb5356..1854043e3 100644 --- a/app/src/main/java/com/itsaky/androidide/EditorActivity.java +++ b/app/src/main/java/com/itsaky/androidide/EditorActivity.java @@ -1154,7 +1154,11 @@ public class EditorActivity extends StudioActivity implements FileTreeFragment.F getBuildService().setListener(null); getBuildService().exit(); } - + + // Make sure we close files + // This fill further make sure that file contents are not erased. + closeAll(); + getApp().getPrefManager().setOpenedProject(PreferenceManager.NO_OPENED_PROJECT); LSP.shutdownAll(); diff --git a/app/src/main/java/com/itsaky/androidide/handlers/BuildServiceHandler.java b/app/src/main/java/com/itsaky/androidide/handlers/BuildServiceHandler.java index 65f4b92c2..ad56dba91 100644 --- a/app/src/main/java/com/itsaky/androidide/handlers/BuildServiceHandler.java +++ b/app/src/main/java/com/itsaky/androidide/handlers/BuildServiceHandler.java @@ -8,12 +8,16 @@ import com.itsaky.androidide.models.project.IDEModule; import com.itsaky.androidide.models.project.IDEProject; import com.itsaky.androidide.services.IDEService; import com.itsaky.androidide.tasks.GradleTask; +import com.itsaky.androidide.tasks.gradle.build.ApkGeneratingTask; import com.itsaky.androidide.utils.Environment; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import java.util.Collection; public class BuildServiceHandler extends IDEHandler implements IDEService.BuildListener { @@ -92,14 +96,19 @@ public class BuildServiceHandler extends IDEHandler implements IDEService.BuildL @Override public void onBuildSuccessful(GradleTask task, String msg) { - if(task == null) return; + if(task == null || activity() == null) return; if(task.canOutput()) activity().setStatus(msg); - - if(task.getType() == GradleTask.Type.BUILD) { - if(task.getTaskID() == IDEService.TASK_ASSEMBLE_DEBUG) { - if(task.buildsApk()) { - activity().install(task.getApk(new File(provider.provideAndroidProject().getMainModulePath(), "build").getAbsolutePath(), provider.provideAndroidProject().getMainModule())); + + // If this task generates APK, ask user if he/she wants to install them + if (task instanceof ApkGeneratingTask) { + final IDEProject project = activity().provideIDEProject(); + final Optional app = project.getModuleByPath(":app"); // TODO Handle multiple application modules + if(app.isPresent()) { + final String path = app.get().projectDir; + if(path != null) { + final File buildDir = new File (path, "build"); + installApks (((ApkGeneratingTask) task).getApks(buildDir)); } } } @@ -115,7 +124,7 @@ public class BuildServiceHandler extends IDEHandler implements IDEService.BuildL if(task.canOutput()) { activity().setStatus(msg); } - + activity().getApp().getPrefManager().putBoolean(PreferenceManager.KEY_IS_FIRST_PROJECT_BUILD, false); activity().invalidateOptionsMenu(); activity().getBinding().buildProgressIndicator.setVisibility(View.GONE); @@ -157,4 +166,35 @@ public class BuildServiceHandler extends IDEHandler implements IDEService.BuildL */ && !file.getAbsolutePath().endsWith("/release/R.jar"); } + + private void installApks (final Set apks) { + if (activity () == null || apks == null || apks.isEmpty()) { + return; + } + + if(apks.size() == 1) { + activity().install(apks.iterator().next()); + } else { + final List files = new ArrayList (apks); + final MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(activity(), R.style.AppTheme_MaterialAlertDialog); + builder.setTitle(activity().getString(R.string.title_install_apks)); + builder.setItems(getNames(files), (d, w) -> { + d.dismiss(); + activity().install(files.get(w)); + }); + builder.show(); + } + } + + private CharSequence[] getNames (final Collection apks) { + final String[] names = new String[apks.size()]; + + int i = 0; + for (File apk : apks) { + names[i] = apk.getName(); + ++i; + } + + return names; + } } diff --git a/app/src/main/java/com/itsaky/androidide/models/ApkMetadata.java b/app/src/main/java/com/itsaky/androidide/models/ApkMetadata.java index f272e8a70..d5a0aaf59 100644 --- a/app/src/main/java/com/itsaky/androidide/models/ApkMetadata.java +++ b/app/src/main/java/com/itsaky/androidide/models/ApkMetadata.java @@ -73,6 +73,8 @@ public class ApkMetadata { public static class ArtifactType { + public static String TYPE_APK = "APK"; + @SerializedName("type") private String type; diff --git a/app/src/main/java/com/itsaky/androidide/tasks/GradleTask.java b/app/src/main/java/com/itsaky/androidide/tasks/GradleTask.java index 1e8c93aaa..9ea973c28 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/GradleTask.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/GradleTask.java @@ -12,8 +12,6 @@ public interface GradleTask { public boolean affectsGeneratedSources(); public boolean shouldSaveFiles(); public boolean canOutput(); - public boolean buildsApk(); - public File getApk(String buildFolder, String moduleName); public Type getType(); public static enum Type { diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleDebug.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleDebug.java index b72accba2..4c23a42c7 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleDebug.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleDebug.java @@ -7,8 +7,11 @@ import com.itsaky.androidide.tasks.BaseGradleTask; import java.io.File; import java.util.Arrays; import java.util.List; +import java.util.Set; +import java.util.Collections; +import java.util.HashSet; -public class AssembleDebug extends BaseGradleTask { +public class AssembleDebug extends ApkGeneratingTask { private boolean installApk = true; @@ -22,15 +25,12 @@ public class AssembleDebug extends BaseGradleTask { return StudioApp.getInstance().getString(R.string.build_debug); } - @Override - public boolean buildsApk() { - return installApk; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return new File(buildFolder, "outputs/apk/debug/" + moduleName + "-debug.apk"); - } + @Override + protected Set provideApkDirectories(File buildDir) { + final Set dirs = new HashSet<>(); + dirs.add(new File(buildDir, "outputs/apk/debug")); + return dirs; + } @Override public String getCommands() { diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleRelease.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleRelease.java index 4ec06f17d..d904ad00a 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleRelease.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleRelease.java @@ -3,13 +3,14 @@ package com.itsaky.androidide.tasks.gradle.build; import com.itsaky.androidide.R; import com.itsaky.androidide.app.StudioApp; import com.itsaky.androidide.services.IDEService; -import com.itsaky.androidide.tasks.BaseGradleTask; import com.itsaky.androidide.tasks.GradleTask; import java.io.File; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; -public class AssembleRelease extends BaseGradleTask { +public class AssembleRelease extends ApkGeneratingTask { @Override public String getName() { @@ -17,14 +18,11 @@ public class AssembleRelease extends BaseGradleTask { } @Override - public boolean buildsApk() { - return true; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return new File(buildFolder, "outputs/apk/release/" + moduleName + "-release.apk"); - } + protected Set provideApkDirectories(File buildDir) { + final Set dirs = new HashSet<>(); + dirs.add(new File(buildDir, "outputs/apk/release")); + return dirs; + } @Override diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Build.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Build.java index cf3569e49..84ee2ae1f 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Build.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Build.java @@ -3,13 +3,14 @@ package com.itsaky.androidide.tasks.gradle.build; import com.itsaky.androidide.R; import com.itsaky.androidide.app.StudioApp; import com.itsaky.androidide.services.IDEService; -import com.itsaky.androidide.tasks.BaseGradleTask; import com.itsaky.androidide.tasks.GradleTask; import java.io.File; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; -public class Build extends BaseGradleTask { +public class Build extends ApkGeneratingTask { @Override public String getName() { @@ -17,16 +18,13 @@ public class Build extends BaseGradleTask { } @Override - public boolean buildsApk() { - return true; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return new File(buildFolder, "outputs/apk/debug/" + moduleName + "-debug.apk"); - } + protected Set provideApkDirectories(File buildDir) { + final Set dirs = new HashSet<>(); + dirs.add(new File(buildDir, "outputs/apk/debug")); + dirs.add(new File(buildDir, "outputs/apk/release")); + return dirs; + } - @Override public String getCommands() { return "build"; diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Bundle.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Bundle.java index 31c3c00cf..fc4df35e0 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Bundle.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Bundle.java @@ -15,18 +15,7 @@ public class Bundle extends BaseGradleTask { public String getName() { return StudioApp.getInstance().getString(R.string.create_aab); } - - @Override - public boolean buildsApk() { - return false; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return null; - } - - + @Override public String getCommands() { return "bundle"; diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Clean.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Clean.java index 54c3c79e2..db4b46127 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Clean.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Clean.java @@ -15,17 +15,7 @@ public class Clean extends BaseGradleTask { public String getName() { return StudioApp.getInstance().getString(R.string.clean_project); } - - @Override - public boolean buildsApk() { - return false; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return null; - } - + @Override public String getCommands() { return "clean"; diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/CleanBuild.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/CleanBuild.java index b2e126890..81ab4bf5b 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/CleanBuild.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/CleanBuild.java @@ -15,18 +15,7 @@ public class CleanBuild extends BaseGradleTask { public String getName() { return StudioApp.getInstance().getString(R.string.clean_amp_build); } - - @Override - public boolean buildsApk() { - return false; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return null; - } - - + @Override public String getCommands() { return "clean build"; diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/Lint.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/Lint.java index d59c97104..cab03aaaa 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/Lint.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/Lint.java @@ -35,16 +35,6 @@ public class Lint extends BaseGradleTask { return true; } - @Override - public boolean buildsApk() { - return false; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return null; - } - @Override public Type getType() { return Type.LINT; diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintDebug.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintDebug.java index 59aab55f2..6c9922dd2 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintDebug.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintDebug.java @@ -35,16 +35,6 @@ public class LintDebug extends BaseGradleTask { return true; } - @Override - public boolean buildsApk() { - return false; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return null; - } - @Override public Type getType() { return Type.LINT; diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintRelease.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintRelease.java index 5f6bd1d99..eab32184d 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintRelease.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintRelease.java @@ -34,17 +34,7 @@ public class LintRelease extends BaseGradleTask { public boolean canOutput() { return true; } - - @Override - public boolean buildsApk() { - return false; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return null; - } - + @Override public Type getType() { return Type.LINT; diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/plugin/InitializeIDEProject.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/plugin/InitializeIDEProject.java index f1ddc7216..4cbeb7549 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/plugin/InitializeIDEProject.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/plugin/InitializeIDEProject.java @@ -33,16 +33,6 @@ public class InitializeIDEProject extends BaseGradleTask { return true; } - @Override - public boolean buildsApk() { - return false; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return null; - } - @Override public GradleTask.Type getType() { return Type.ANDROIDIDE_PLUGIN; diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/DatabindingGenBaseClassesDebug.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/DatabindingGenBaseClassesDebug.java index 6c189d224..7eb7e41a6 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/DatabindingGenBaseClassesDebug.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/DatabindingGenBaseClassesDebug.java @@ -36,17 +36,7 @@ public class DatabindingGenBaseClassesDebug extends BaseGradleTask { public boolean canOutput() { return true; } - - @Override - public boolean buildsApk() { - return false; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return null; - } - + @Override public Type getType() { return Type.BUILD; diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/ProcessDebugResources.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/ProcessDebugResources.java index 5233aa435..00e12abd9 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/ProcessDebugResources.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/ProcessDebugResources.java @@ -37,17 +37,7 @@ public class ProcessDebugResources extends BaseGradleTask { public boolean canOutput() { return true; } - - @Override - public boolean buildsApk() { - return false; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return null; - } - + @Override public GradleTask.Type getType() { return Type.BUILD; diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/UpdateResourceClassesTask.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/UpdateResourceClassesTask.java index e2991a228..4d4b79774 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/UpdateResourceClassesTask.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/UpdateResourceClassesTask.java @@ -54,17 +54,7 @@ public class UpdateResourceClassesTask extends BaseGradleTask { public boolean canOutput() { return true; } - - @Override - public boolean buildsApk() { - return false; - } - - @Override - public File getApk(String buildFolder, String moduleName) { - return null; - } - + @Override public GradleTask.Type getType() { return Type.BUILD; diff --git a/app/src/main/java/com/itsaky/toaster/Toaster.java b/app/src/main/java/com/itsaky/toaster/Toaster.java index 56f236ae1..747b59aab 100644 --- a/app/src/main/java/com/itsaky/toaster/Toaster.java +++ b/app/src/main/java/com/itsaky/toaster/Toaster.java @@ -15,169 +15,158 @@ import androidx.core.content.ContextCompat; import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat; import com.itsaky.androidide.R; import com.itsaky.androidide.databinding.LayoutToastBinding; +import android.os.Looper; +import com.blankj.utilcode.util.ThreadUtils; -public class Toaster -{ +public class Toaster { + private LayoutToastBinding binding; - + private Toast mToast; private Context mContext; private Gravity mGravity; private Type mType; private Drawable mDrawable; private AnimatedVectorDrawableCompat mIcon; - + private int mIconColor = Color.DKGRAY; private int mDuration = 0; - + public static final int COLOR_SUCCESS = Color.parseColor("#4CAF50"); public static final int COLOR_ERROR = Color.parseColor("#F44336"); public static final int REVEAL_ANIM_DURATION = 500; public static final int SHORT = 2000; public static final int LONG = 3500; - public Toaster(Context context) - { + public Toaster(Context context) { this.mContext = context; this.mType = Type.INFO; - + this.mDrawable = createBackgroundDrawable(); - + createView(); } - - protected View createView() - { + + protected View createView() { binding = LayoutToastBinding.inflate(LayoutInflater.from(mContext)); binding.toastToastWrapper.setToasterInstance(this); return binding.getRoot(); } - - protected Drawable createBackgroundDrawable() - { + + protected Drawable createBackgroundDrawable() { GradientDrawable drawable = new GradientDrawable(); drawable.setShape(GradientDrawable.RECTANGLE); drawable.setColor(ContextCompat.getColor(mContext, R.color.color_toast_background)); drawable.setCornerRadius(25); return drawable; } - - protected AnimatedVectorDrawableCompat createToastIconAnimation(int tintColor) - { + + protected AnimatedVectorDrawableCompat createToastIconAnimation(int tintColor) { AnimatedVectorDrawableCompat imageDrawable = AnimatedVectorDrawableCompat.create(mContext, mType == Type.SUCCESS ? R.drawable.ic_ok : R.drawable.ic_error); imageDrawable.setTint(tintColor); imageDrawable.setTintMode(PorterDuff.Mode.SRC_ATOP); binding.toastImage.setImageDrawable(imageDrawable); return imageDrawable; } - - public void show() - { + + public void show() { + ThreadUtils.runOnUiThread(() -> { + showInternal(); + }); + } + + protected void showInternal() { int dp16 = toPx(16); mIconColor = mType == Type.SUCCESS ? COLOR_SUCCESS : - mType == Type.ERROR ? COLOR_ERROR : - Color.DKGRAY; - int gravity = mGravity == Gravity.TOP_LEFT ? (android.view.Gravity.TOP|android.view.Gravity.START) : - mGravity == Gravity.TOP_RIGHT ? (android.view.Gravity.TOP|android.view.Gravity.END) : - mGravity == Gravity.BOTTOM_RIGHT ? (android.view.Gravity.BOTTOM|android.view.Gravity.END) : - mGravity == Gravity.BOTTOM_LEFT ? (android.view.Gravity.BOTTOM|android.view.Gravity.START) : - android.view.Gravity.TOP|android.view.Gravity.END; - + mType == Type.ERROR ? COLOR_ERROR : + Color.DKGRAY; + int gravity = mGravity == Gravity.TOP_LEFT ? (android.view.Gravity.TOP | android.view.Gravity.START) : + mGravity == Gravity.TOP_RIGHT ? (android.view.Gravity.TOP | android.view.Gravity.END) : + mGravity == Gravity.BOTTOM_RIGHT ? (android.view.Gravity.BOTTOM | android.view.Gravity.END) : + mGravity == Gravity.BOTTOM_LEFT ? (android.view.Gravity.BOTTOM | android.view.Gravity.START) : + android.view.Gravity.TOP | android.view.Gravity.END; + mIcon = createToastIconAnimation(mIconColor); - + mToast = Toast.makeText(mContext, binding.toastText.getText(), mDuration); mToast.setGravity(gravity, dp16, dp16); mToast.setDuration(mDuration); mToast.setView(binding.getRoot()); mToast.show(); - + binding.toastImage.setImageDrawable(mIcon); mIcon.start(); } - - public Toaster setText(String text) - { - if(binding.toastText == null) + + public Toaster setText(String text) { + if (binding.toastText == null) createView(); - + binding.toastText.setText(text); return this; } - - public Toaster setText(int textResId) - { - if(binding.toastText == null) + + public Toaster setText(int textResId) { + if (binding.toastText == null) createView(); binding.toastText.setText(textResId); return this; } - - public Toaster setDuration(int mDuration) - { + + public Toaster setDuration(int mDuration) { this.mDuration = mDuration + REVEAL_ANIM_DURATION; return this; } - public int getDuration() - { + public int getDuration() { return mDuration; } - - public Toaster setType(Type type) - { + + public Toaster setType(Type type) { this.mType = type; return this; } - - public Type getType() - { + + public Type getType() { return mType; } - public Toaster setGravity(Gravity mGravity) - { + public Toaster setGravity(Gravity mGravity) { this.mGravity = mGravity; return this; } - - private int toPx(int dp) - { + + private int toPx(int dp) { return (int) (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, mContext.getResources().getDisplayMetrics())); } - public Gravity getGravity() - { + public Gravity getGravity() { return mGravity; } - - public AnimatedVectorDrawableCompat getIcon() - { + + public AnimatedVectorDrawableCompat getIcon() { return mIcon; } - - public Drawable getBackroundDrawable() - { + + public Drawable getBackroundDrawable() { return mDrawable; } - - public int getIconColor() - { + + public int getIconColor() { return mIconColor; } - - public enum Type - { + + public enum Type { ERROR, SUCCESS, INFO - } - - public enum Gravity - { + } + + public enum Gravity { TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT - } + } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9df358951..4e5cce5f7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,4 +1,5 @@ + Install APK(s) Clear output Failed to install Gradle Wrapper: %s Gradle Wrapper is not available!\nInstalling default one. Gradle v7.1.1 will be downloaded if necessary. diff --git a/build.gradle b/build.gradle index 57cdaaca9..0f2d56ee2 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ buildscript { javaSourceVersion = JavaVersion.VERSION_1_8 javaTargetVersion = JavaVersion.VERSION_1_8 - stringfogEnabled = true + stringfogEnabled = false } repositories {