feat: dynamic colors support

This commit is contained in:
Akash Yadav
2022-12-04 17:51:23 +05:30
parent 31ee94ed4f
commit 7c467ddc3f
93 changed files with 1229 additions and 1254 deletions
@@ -16,6 +16,9 @@
*/
package com.itsaky.androidide.actions.internal
import android.content.Context
import android.graphics.PorterDuff.Mode.SRC_ATOP
import android.graphics.PorterDuffColorFilter
import android.view.Menu
import android.view.MenuItem
import com.blankj.utilcode.util.ThreadUtils
@@ -23,9 +26,11 @@ import com.itsaky.androidide.actions.ActionData
import com.itsaky.androidide.actions.ActionItem
import com.itsaky.androidide.actions.ActionMenu
import com.itsaky.androidide.actions.ActionsRegistry
import com.itsaky.androidide.actions.R
import com.itsaky.androidide.actions.locations.CodeActionsMenu
import com.itsaky.androidide.utils.ILogger
import java.util.concurrent.*
import com.itsaky.androidide.utils.resolveAttr
import java.util.concurrent.CompletableFuture
/**
* Default implementation for the [ActionsRegistry]
@@ -37,7 +42,7 @@ class DefaultActionsRegistry : ActionsRegistry() {
private val log = ILogger.newInstance("DefaultActionsRegistry")
private val actions: MutableMap<String, MutableMap<String, ActionItem>> = mutableMapOf()
private val listeners = mutableSetOf<ActionExecListener>()
init {
registerAction(CodeActionsMenu)
}
@@ -104,6 +109,7 @@ class DefaultActionsRegistry : ActionsRegistry() {
}
private fun addActionToMenu(menu: Menu, action: ActionItem, data: ActionData) {
val context = data[Context::class.java]
val item: MenuItem =
if (action is ActionMenu) {
val sub = menu.addSubMenu(action.label)
@@ -127,7 +133,10 @@ class DefaultActionsRegistry : ActionsRegistry() {
}
item.isEnabled = action.enabled
item.icon = action.icon
item.icon =
action.icon?.apply {
colorFilter = PorterDuffColorFilter(context!!.resolveAttr(R.attr.colorOnSurface), SRC_ATOP)
}
if (item.icon != null) {
item.icon!!.alpha = if (action.enabled) 255 else 76
@@ -139,10 +148,8 @@ class DefaultActionsRegistry : ActionsRegistry() {
if (action.getShowAsActionFlags(data) != -1) {
item.setShowAsAction(action.getShowAsActionFlags(data))
}
action.createActionView(data)?.let {
item.actionView = it
}
action.createActionView(data)?.let { item.actionView = it }
if (action !is ActionMenu) {
item.setOnMenuItemClickListener {
@@ -61,7 +61,6 @@ import androidx.annotation.StringRes;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.view.menu.MenuBuilder;
import androidx.core.content.ContextCompat;
import androidx.core.view.GravityCompat;
import androidx.lifecycle.ViewModelProvider;
@@ -118,6 +117,7 @@ import com.itsaky.androidide.utils.InstallationResultHandler;
import com.itsaky.androidide.utils.IntentUtils;
import com.itsaky.androidide.utils.LSPUtils;
import com.itsaky.androidide.utils.RecursiveFileSearcher;
import com.itsaky.androidide.utils.ResourceUtilsKt;
import com.itsaky.androidide.utils.SingleSessionCallback;
import com.itsaky.androidide.viewmodel.EditorViewModel;
import com.itsaky.androidide.views.EditorBottomSheet;
@@ -605,7 +605,6 @@ public class EditorActivity extends IDEActivity
}
mSearchingProgress = new ProgressSheet();
mSearchingProgress.setCancelable(false);
mSearchingProgress.setWelcomeTextEnabled(false);
mSearchingProgress.setMessage(getString(msg));
mSearchingProgress.setSubMessageEnabled(false);
return mSearchingProgress;
@@ -825,9 +824,10 @@ public class EditorActivity extends IDEActivity
public MaterialBanner getSyncBanner() {
return mBinding
.syncBanner
.setContentTextColor(ContextCompat.getColor(this, color.primaryTextColor))
.setBannerBackgroundColor(ContextCompat.getColor(this, color.primaryLightColor))
.setButtonTextColor(ContextCompat.getColor(this, color.secondaryColor))
.setContentTextColor(ResourceUtilsKt.resolveAttr(this, R.attr.colorOnPrimaryContainer))
.setBannerBackgroundColor(
ResourceUtilsKt.resolveAttr(this, R.attr.colorPrimaryContainer))
.setButtonTextColor(ResourceUtilsKt.resolveAttr(this, R.attr.colorOnPrimaryContainer))
.setIcon(drawable.ic_sync)
.setContentText(string.msg_sync_needed);
}
@@ -1491,8 +1491,8 @@ public class EditorActivity extends IDEActivity
new ActionItem(ACTION_ID_ALL, getString(string.action_closeAll), drawable.ic_close_all);
mTabCloseAction = new QuickAction(this, QuickAction.HORIZONTAL);
mTabCloseAction.addActionItem(closeThis, closeOthers, closeAll);
mTabCloseAction.setColorRes(color.tabAction_background);
mTabCloseAction.setTextColorRes(color.tabAction_text);
mTabCloseAction.setColor(ResourceUtilsKt.resolveAttr(this, color.tabAction_background));
mTabCloseAction.setTextColor(ResourceUtilsKt.resolveAttr(this, color.tabAction_text));
mTabCloseAction.setOnActionItemClickListener(
(item) -> {
@@ -25,32 +25,32 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.core.content.ContextCompat
import com.itsaky.androidide.databinding.LayoutCompletionItemBinding
import com.itsaky.androidide.lookup.Lookup
import com.itsaky.androidide.lsp.models.ClassCompletionData
import com.itsaky.androidide.lsp.models.CompletionItem as LspCompletionItem
import com.itsaky.androidide.lsp.models.CompletionItemKind.CLASS
import com.itsaky.androidide.lsp.models.CompletionItemKind.CONSTRUCTOR
import com.itsaky.androidide.lsp.models.CompletionItemKind.ENUM
import com.itsaky.androidide.lsp.models.CompletionItemKind.FIELD
import com.itsaky.androidide.lsp.models.CompletionItemKind.INTERFACE
import com.itsaky.androidide.lsp.models.CompletionItemKind.METHOD
import com.itsaky.androidide.preferences.internal.useCustomFont
import com.itsaky.androidide.utils.customOrJBMono
import com.itsaky.androidide.lsp.models.MemberCompletionData
import com.itsaky.androidide.lsp.models.MethodCompletionData
import com.itsaky.androidide.preferences.internal.useCustomFont
import com.itsaky.androidide.resources.R.color
import com.itsaky.androidide.resources.R.string.msg_api_info_deprecated
import com.itsaky.androidide.resources.R.string.msg_api_info_removed
import com.itsaky.androidide.resources.R.string.msg_api_info_since
import com.itsaky.androidide.tasks.executeAsync
import com.itsaky.androidide.utils.ILogger
import com.itsaky.androidide.utils.customOrJBMono
import com.itsaky.androidide.utils.resolveAttr
import com.itsaky.androidide.xml.versions.ApiVersions
import com.itsaky.androidide.xml.versions.Info
import io.github.rosemoe.sora.lang.completion.CompletionItem
import io.github.rosemoe.sora.widget.component.EditorAutoCompletion
import io.github.rosemoe.sora.widget.component.EditorCompletionAdapter
import com.itsaky.androidide.lsp.models.CompletionItem as LspCompletionItem
class CompletionListAdapter : EditorCompletionAdapter() {
@@ -95,8 +95,7 @@ class CompletionListAdapter : EditorCompletionAdapter() {
binding.completionDetail.visibility = View.GONE
}
binding.root.setBackgroundColor(
ContextCompat.getColor(
context,
context.resolveAttr(
if (isCurrentCursorPosition) color.completionList_backgroundSelected
else color.completionList_background
)
@@ -18,16 +18,13 @@
package com.itsaky.androidide.adapters;
import android.graphics.PorterDuff;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.itsaky.androidide.resources.R;
import com.itsaky.androidide.databinding.LayoutDiagnosticGroupBinding;
import com.itsaky.androidide.interfaces.DiagnosticClickListener;
import com.itsaky.androidide.models.DiagnosticGroup;
@@ -57,12 +54,8 @@ public class DiagnosticsAdapter extends RecyclerView.Adapter<DiagnosticsAdapter.
final DiagnosticGroup group = diagnostics.get(p2);
final LayoutDiagnosticGroupBinding binding = p1.binding;
final int color =
ContextCompat.getColor(binding.info.icon.getContext(), R.color.secondaryColor);
binding.info.icon.setImageResource(group.icon);
binding.info.icon.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
binding.info.title.setText(group.text);
binding.info.title.setTextColor(color);
binding.diagnostics.setLayoutManager(new LinearLayoutManager(binding.diagnostics.getContext()));
binding.diagnostics.setAdapter(
new DiagnosticItemAdapter(group.diagnostics, group.file, listener));
@@ -17,21 +17,21 @@ package com.itsaky.androidide.adapters
import android.graphics.PorterDuff.Mode.SRC_ATOP
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView.Adapter
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.blankj.utilcode.util.ThreadUtils
import com.itsaky.androidide.resources.R.color
import com.itsaky.androidide.resources.R.drawable
import com.itsaky.androidide.R
import com.itsaky.androidide.adapters.SearchListAdapter.VH
import com.itsaky.androidide.databinding.LayoutSearchResultGroupBinding
import com.itsaky.androidide.databinding.LayoutSearchResultItemBinding
import com.itsaky.androidide.models.FileExtension
import com.itsaky.androidide.models.SearchResult
import com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE
import com.itsaky.androidide.syntax.highlighters.JavaHighlighter
import com.itsaky.androidide.utils.resolveAttr
import java.io.File
import java.util.concurrent.*
import java.util.concurrent.CompletableFuture
class SearchListAdapter(
private val results: Map<File, List<SearchResult>?>,
@@ -54,7 +54,7 @@ class SearchListAdapter(
val binding = p1.binding
val file = keys[p2]
val matches = results[file] ?: listOf()
val color = ContextCompat.getColor(binding.icon.context, color.secondaryColor)
val color = binding.icon.context.resolveAttr(R.attr.colorPrimary)
binding.title.text = file.name
binding.icon.setImageResource(FileExtension.Factory.forFile(file).icon)
binding.icon.setColorFilter(color, SRC_ATOP)
@@ -78,7 +78,8 @@ class SearchListAdapter(
val binding = p1.binding
CompletableFuture.runAsync {
try {
val sb = JavaHighlighter().highlight(match.line, match.match)
val scheme = SchemeAndroidIDE.newInstance(binding.text.context)
val sb = JavaHighlighter().highlight(scheme, match.line, match.match)
ThreadUtils.runOnUiThread { binding.text.text = sb }
} catch (e: Exception) {
ThreadUtils.runOnUiThread { binding.text.text = match.match }
@@ -17,6 +17,8 @@
*/
package com.itsaky.androidide.adapters;
import static com.itsaky.androidide.utils.ResourceUtilsKt.resolveAttr;
import android.annotation.SuppressLint;
import android.view.LayoutInflater;
import android.view.ViewGroup;
@@ -24,7 +26,9 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.itsaky.androidide.R;
import com.itsaky.androidide.databinding.LayoutSymbolItemBinding;
import com.itsaky.androidide.utils.ResourceUtilsKt;
import com.itsaky.androidide.views.SymbolInputView.Symbol;
import com.itsaky.androidide.views.editor.IDEEditor;
@@ -77,6 +81,7 @@ public class SymbolInputAdapter extends RecyclerView.Adapter<SymbolInputAdapter.
if (symbols == null || symbols[position] == null) return;
final Symbol symbol = symbols[position];
holder.binding.symbol.setText(symbol.getLabel());
holder.binding.symbol.setTextColor(resolveAttr(holder.binding.symbol.getContext(), R.attr.colorOnPrimaryContainer));
holder.binding.symbol.setOnClickListener(__ -> insertSymbol(symbol.getCommit(), symbol.getOffset()));
}
@@ -20,9 +20,6 @@
package com.itsaky.androidide.adapters.viewholders;
import static android.graphics.PorterDuff.Mode.SRC_ATOP;
import static androidx.core.content.ContextCompat.getColor;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
@@ -33,9 +30,9 @@ import androidx.transition.TransitionManager;
import com.blankj.utilcode.util.ImageUtils;
import com.blankj.utilcode.util.SizeUtils;
import com.itsaky.androidide.resources.R;
import com.itsaky.androidide.databinding.LayoutFiletreeItemBinding;
import com.itsaky.androidide.models.FileExtension;
import com.itsaky.androidide.resources.R;
import com.unnamed.b.atv.model.TreeNode;
import java.io.File;
@@ -63,11 +60,6 @@ public class FileTreeViewHolder extends TreeNode.BaseNodeViewHolder<File> {
updateChevronIcon(node.isExpanded());
binding
.filetreeIcon
.getDrawable()
.setColorFilter(getColor(context, R.color.secondaryLightColor), SRC_ATOP);
return root;
}
@@ -81,10 +73,6 @@ public class FileTreeViewHolder extends TreeNode.BaseNodeViewHolder<File> {
TransitionManager.beginDelayedTransition(binding.getRoot(), new ChangeImageTransform());
binding.filetreeChevron.setImageResource(chevronIcon);
binding
.filetreeChevron
.getDrawable()
.setColorFilter(getColor(context, R.color.secondaryLightColor), SRC_ATOP);
}
protected LinearLayout applyPadding(
@@ -18,28 +18,12 @@
package com.itsaky.androidide.fragments
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat.getColor
import androidx.preference.PreferenceFragmentCompat
import com.itsaky.androidide.resources.R.color
import com.itsaky.androidide.R.xml
import com.itsaky.androidide.app.IDEApplication.getInstance
abstract class BasePreferenceFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(xml.ide_prefs, rootKey)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?,
): View {
return super.onCreateView(inflater, container, savedInstanceState).apply {
setBackgroundColor(getColor(getInstance(), color.content_background))
}
}
}
@@ -39,10 +39,12 @@ abstract class LogViewFragment : Fragment(), ShareableOutputFragment {
var binding: FragmentLogBinding? = null
fun appendLog(line: LogLine) {
val binding = this.binding ?: run {
System.err.println("Cannot append log line. Binding is null.")
return
}
val binding =
this.binding
?: run {
System.err.println("Cannot append log line. Binding is null.")
return
}
var lineString =
if (isSimpleFormattingEnabled()) {
@@ -85,7 +87,7 @@ abstract class LogViewFragment : Fragment(), ShareableOutputFragment {
editor.typefaceLineNumber = jetbrainsMono()
editor.setTextSize(12f)
editor.typefaceText = jetbrainsMono()
editor.colorScheme = SchemeAndroidIDE()
editor.colorScheme = SchemeAndroidIDE.newInstance(requireContext())
editor.setEditorLanguage(LogLanguage())
}
@@ -61,7 +61,7 @@ public abstract class NonEditableEditorFragment extends Fragment
editor.setTypefaceLineNumber(TypefaceUtilsKt.jetbrainsMono());
editor.setTypefaceText(TypefaceUtilsKt.jetbrainsMono());
editor.setTextSize(12);
editor.setColorScheme(new SchemeAndroidIDE());
editor.setColorScheme(SchemeAndroidIDE.newInstance(requireContext()));
}
@Override
@@ -39,7 +39,6 @@ public class ProgressSheet extends BaseBottomSheetFragment {
private String message = "";
private String subMessage = "";
private boolean subMessageEnabled = false;
private boolean welcomeTextEnabled = false;
@Override
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
@@ -68,10 +67,6 @@ public class ProgressSheet extends BaseBottomSheetFragment {
}
binding.message.setLayoutParams(p);
}
if (!welcomeTextEnabled) {
binding.welcomeText.setVisibility(View.GONE);
}
}
@Override
@@ -85,22 +80,15 @@ public class ProgressSheet extends BaseBottomSheetFragment {
container.addView(binding.getRoot());
}
public ProgressSheet setWelcomeTextEnabled(boolean enabled) {
this.welcomeTextEnabled = enabled;
return this;
}
public ProgressSheet setSubMessageEnabled(boolean enabled) {
public void setSubMessageEnabled(boolean enabled) {
this.subMessageEnabled = enabled;
return this;
}
public ProgressSheet setSubMessage(String msg) {
public void setSubMessage(String msg) {
this.subMessage = msg;
if (isShowing()) {
binding.subMessage.setText(msg);
}
return this;
}
public ProgressSheet setMessage(String message) {
@@ -190,7 +190,6 @@ public class IDELanguageClientImpl implements ILanguageClient {
final ProgressSheet progress = new ProgressSheet();
progress.setSubMessageEnabled(false);
progress.setWelcomeTextEnabled(false);
progress.setCancelable(false);
progress.setMessage(activity().getString(string.msg_performing_actions));
progress.show(activity().getSupportFragmentManager(), "quick_fix_progress");
@@ -0,0 +1,81 @@
/*
* This file is part of AndroidIDE.
*
* AndroidIDE is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* AndroidIDE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
*/
package com.itsaky.androidide.syntax.colorschemes
import android.content.Context
import com.itsaky.androidide.R.attr
import com.itsaky.androidide.utils.isSystemInDarkMode
import com.itsaky.androidide.utils.resolveAttr
/**
* [SchemeAndroidIDE] implementation that uses dynamic colors.
*
* @author Akash Yadav
*/
class DynamicColorScheme : SchemeAndroidIDE() {
fun apply(context: Context) {
val isInDarkMode = context.isSystemInDarkMode()
val suface = context.resolveAttr(attr.colorSurface)
val surfaceVariant = context.resolveAttr(attr.colorSurfaceVariant)
val onSurface = context.resolveAttr(attr.colorOnSurface)
val onSurfaceVariant = context.resolveAttr(attr.colorOnSurfaceVariant)
val outline = context.resolveAttr(attr.colorOutline)
setColor(WHOLE_BACKGROUND, suface)
setColor(LINE_NUMBER_BACKGROUND, suface)
setColor(LINE_NUMBER, onSurface)
setColor(LINE_NUMBER_PANEL, surfaceVariant)
setColor(LINE_NUMBER_PANEL_TEXT, onSurfaceVariant)
setColor(CURRENT_LINE, surfaceVariant)
setColor(TEXT_NORMAL, onSurface)
setColor(COMPLETION_WND_BACKGROUND, context.resolveAttr(attr.colorPrimaryContainer))
setColor(COMPLETION_WND_CORNER, outline)
setColor(BLOCK_LINE, surfaceVariant)
setColor(BLOCK_LINE_CURRENT, outline)
setColor(UNDERLINE, outline)
if (!isInDarkMode) {
applyLightColors()
}
}
private fun applyLightColors() {
setColor(KEYWORD, 0xffd32f2f)
setColor(OPERATOR, 0xff1976d2)
setColor(LITERAL, 0xff558b2f)
setColor(TYPE_NAME, 0xff1976d2)
setColor(ANNOTATION, 0xff1976d2)
setColor(FIELD, 0xffff6f00)
setColor(XML_TAG, 0xffe64a19)
setColor(LOG_TEXT_ERROR, 0xfff44336)
setColor(LOG_TEXT_WARNING, 0xffffab00)
setColor(LOG_TEXT_INFO, 0xff4CAF50)
setColor(LOG_TEXT_DEBUG, 0xff212121)
setColor(LOG_TEXT_VERBOSE, 0xff0288d1)
setColor(TODO_COMMENT, 0xffff6d00)
setColor(FIXME_COMMENT, 0xffff6d00)
setColor(COMMENT, 0xff9e9e9e)
}
private fun setColor(key: Int, value: Long) {
setColor(key, value.toInt())
}
}
@@ -17,6 +17,7 @@
*/
package com.itsaky.androidide.syntax.colorschemes;
import android.content.Context;
import android.graphics.Color;
import io.github.rosemoe.sora.lang.styling.TextStyle;
@@ -30,6 +31,8 @@ import io.github.rosemoe.sora.widget.schemes.EditorColorScheme;
*/
public class SchemeAndroidIDE extends EditorColorScheme {
protected SchemeAndroidIDE() {}
private static int current = EditorColorScheme.END_COLOR_ID;
public static final int LOG_TEXT_INFO = ++current;
public static final int LOG_TEXT_DEBUG = ++current;
@@ -101,6 +104,12 @@ public class SchemeAndroidIDE extends EditorColorScheme {
return TextStyle.makeStyle(id, true);
}
public static SchemeAndroidIDE newInstance(Context context) {
final var scheme = new DynamicColorScheme();
scheme.apply(context);
return scheme;
}
@Override
public void applyDefault() {
// Apply default colors
@@ -129,14 +138,14 @@ public class SchemeAndroidIDE extends EditorColorScheme {
setColor(COMPLETION_WND_BACKGROUND, 0xff757575);
setColor(COMPLETION_WND_CORNER, 0xff9e9e9e);
setColor(NON_PRINTABLE_CHAR, 0xffdddddd);
setColor(KEYWORD, 0xffff6060);
setColor(OPERATOR, 0xff4fc3f7);
setColor(LITERAL, 0xff8bc34a);
setColor(TYPE_NAME, 0xff4fc3f7);
setColor(ANNOTATION, 0xff4fc3f7);
setColor(FIELD, 0xfff0be4b);
setColor(XML_TAG, 0xffff6060);
setColor(LOG_TEXT_ERROR, 0xfff44336);
@@ -21,6 +21,8 @@ package com.itsaky.androidide.syntax.highlighters;
import android.text.SpannableStringBuilder;
import com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE;
/**
* A highlighter is used to highlight a small piece of code
*
@@ -28,5 +30,5 @@ import android.text.SpannableStringBuilder;
* an EditorLanguage instead
*/
public interface Highlighter {
SpannableStringBuilder highlight(String code, String match) throws Exception;
SpannableStringBuilder highlight(SchemeAndroidIDE scheme, String code, String match) throws Exception;
}
@@ -35,10 +35,9 @@ import io.github.rosemoe.sora.widget.schemes.EditorColorScheme;
public class JavaHighlighter implements Highlighter {
@Override
public SpannableStringBuilder highlight(String code, String match) throws Exception {
public SpannableStringBuilder highlight(SchemeAndroidIDE scheme, String code, String match) throws Exception {
final JavaLexer lexer = new JavaLexer(CharStreams.fromReader(new StringReader(code)));
final SpannableStringBuilder sb = new SpannableStringBuilder();
final EditorColorScheme scheme = new SchemeAndroidIDE();
Token token;
while ((token = lexer.nextToken()) != null) {
if (token.getType() == JavaLexer.EOF) break;
@@ -1,45 +0,0 @@
/*
* This file is part of AndroidIDE.
*
* AndroidIDE is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* AndroidIDE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
*
*/
package com.itsaky.androidide.utils;
import android.graphics.Color;
import android.view.View;
import androidx.core.content.ContextCompat;
import com.google.android.material.transition.MaterialArcMotion;
import com.google.android.material.transition.MaterialContainerTransform;
public class TransformUtils {
public static MaterialContainerTransform createContainerTransformFor(
View start, View end, View drawingView) {
MaterialContainerTransform transform = new MaterialContainerTransform();
transform.setStartView(start);
transform.setEndView(end);
transform.addTarget(end);
transform.setDrawingViewId(drawingView.getId());
transform.setAllContainerColors(
ContextCompat.getColor(
drawingView.getContext(), com.itsaky.androidide.resources.R.color.primaryDarkColor));
transform.setElevationShadowEnabled(true);
transform.setPathMotion(new MaterialArcMotion());
transform.setScrimColor(Color.TRANSPARENT);
return transform;
}
}
@@ -26,7 +26,8 @@ import android.util.TypedValue;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import com.itsaky.androidide.R;
import com.itsaky.androidide.utils.ResourceUtilsKt;
public class EmptyView extends RelativeLayout {
@@ -54,9 +55,7 @@ public class EmptyView extends RelativeLayout {
TextView text = new TextView(getContext());
text.setText(com.itsaky.androidide.resources.R.string.msg_empty_view);
text.setTextColor(
ContextCompat.getColor(
getContext(), com.itsaky.androidide.resources.R.color.secondaryTextColor_light));
text.setTextColor(ResourceUtilsKt.resolveAttr(getContext(), R.attr.colorSecondaryVariant));
text.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
LayoutParams params = new LayoutParams(-2, -2);
@@ -17,12 +17,15 @@
*/
package com.itsaky.androidide.views;
import static com.itsaky.androidide.utils.ResourceUtilsKt.resolveAttr;
import android.content.Context;
import android.util.AttributeSet;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.itsaky.androidide.R;
import com.itsaky.androidide.adapters.SymbolInputAdapter;
import com.itsaky.androidide.views.editor.IDEEditor;
@@ -47,6 +50,7 @@ public class SymbolInputView extends RecyclerView {
adapter = new SymbolInputAdapter(editor);
setAdapter(adapter);
setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
setBackgroundColor(resolveAttr(editor.getContext(), R.attr.colorPrimaryContainer));
}
public void setSymbols(Symbol... symbols) {
@@ -77,15 +81,15 @@ public class SymbolInputView extends RecyclerView {
public Symbol(String label, String commit) {
this(label, commit, 1);
}
public String getLabel() {
return label;
}
public String getCommit() {
return commit;
}
public int getOffset() {
return offset;
}
@@ -19,6 +19,7 @@ package com.itsaky.androidide.views.editor;
import static android.view.View.MeasureSpec.AT_MOST;
import static android.view.View.MeasureSpec.makeMeasureSpec;
import static com.itsaky.androidide.utils.ResourceUtilsKt.resolveAttr;
import android.content.Context;
import android.graphics.drawable.Drawable;
@@ -29,10 +30,10 @@ import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import com.blankj.utilcode.util.SizeUtils;
import com.itsaky.androidide.resources.R;
import com.itsaky.androidide.utils.ResourceUtilsKt;
import io.github.rosemoe.sora.widget.base.EditorPopupWindow;
@@ -74,8 +75,8 @@ public abstract class BaseEditorWindow extends AbstractPopupWindow {
final var dp8 = dp4 * 2;
final var text = new TextView(context);
text.setBackground(createBackground());
text.setTextColor(ContextCompat.getColor(context, R.color.primaryTextColor));
text.setBackground(createBackground(context));
text.setTextColor(ResourceUtilsKt.resolveAttr(context, R.attr.colorOnPrimaryContainer));
text.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
text.setClickable(false);
text.setFocusable(false);
@@ -86,11 +87,11 @@ public abstract class BaseEditorWindow extends AbstractPopupWindow {
return text;
}
protected Drawable createBackground() {
protected Drawable createBackground(final Context context) {
GradientDrawable background = new GradientDrawable();
background.setShape(GradientDrawable.RECTANGLE);
background.setColor(0xff212121);
background.setStroke(1, 0xffffffff);
background.setColor(ResourceUtilsKt.resolveAttr(context, R.attr.colorPrimaryContainer));
background.setStroke(1, ResourceUtilsKt.resolveAttr(context, R.attr.colorOutline));
background.setCornerRadius(8);
return background;
}
@@ -107,7 +107,7 @@ public class CodeEditorView extends LinearLayout {
this.binding.editor.setHighlightCurrentBlock(true);
this.binding.editor.getProps().autoCompletionOnComposing = true;
this.binding.editor.setDividerWidth(SizeUtils.dp2px(1));
this.binding.editor.setColorScheme(new SchemeAndroidIDE());
this.binding.editor.setColorScheme(SchemeAndroidIDE.newInstance(context));
this.binding.editor.setLineSeparator(LineSeparator.LF);
this.searchLayout = new EditorSearchLayout(context, this.binding.editor);
@@ -30,7 +30,6 @@ import android.view.ViewGroup
import androidx.appcompat.view.menu.MenuBuilder
import androidx.appcompat.view.menu.MenuItemImpl
import androidx.appcompat.view.menu.SubMenuBuilder
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder
@@ -38,18 +37,18 @@ import androidx.transition.ChangeBounds
import androidx.transition.TransitionManager
import com.blankj.utilcode.util.SizeUtils
import com.google.android.material.button.MaterialButton
import com.itsaky.androidide.resources.R
import com.itsaky.androidide.actions.ActionData
import com.itsaky.androidide.actions.ActionItem
import com.itsaky.androidide.actions.ActionsRegistry
import com.itsaky.androidide.actions.ActionsRegistry.Companion.getInstance
import com.itsaky.androidide.actions.EditorActionItem
import com.itsaky.androidide.actions.editor.SelectAllAction
import com.itsaky.androidide.databinding.LayoutPopupMenuItemBinding
import com.itsaky.androidide.lsp.api.ILanguageServerRegistry
import com.itsaky.androidide.lsp.java.JavaLanguageServer
import com.itsaky.androidide.lsp.models.DiagnosticItem
import com.itsaky.androidide.lsp.xml.XMLLanguageServer
import com.itsaky.androidide.resources.R
import com.itsaky.androidide.utils.resolveAttr
import io.github.rosemoe.sora.event.HandleStateChangeEvent
import io.github.rosemoe.sora.event.ScrollEvent
import io.github.rosemoe.sora.event.SelectionChangeEvent
@@ -57,7 +56,6 @@ import io.github.rosemoe.sora.event.SubscriptionReceipt
import io.github.rosemoe.sora.text.Cursor
import io.github.rosemoe.sora.widget.CodeEditor
import io.github.rosemoe.sora.widget.EditorTouchEventHandler
import io.github.rosemoe.sora.widget.base.EditorPopupWindow
import java.io.File
import kotlin.math.max
import kotlin.math.min
@@ -185,12 +183,8 @@ open class EditorActionsMenu constructor(val editor: IDEEditor) :
val drawable = GradientDrawable()
drawable.shape = GradientDrawable.RECTANGLE
drawable.cornerRadius = SizeUtils.dp2px(28f).toFloat() // Recommeneded size is 28dp
drawable.color =
ColorStateList.valueOf(ContextCompat.getColor(editor.context, R.color.content_background))
drawable.setStroke(
SizeUtils.dp2px(1f),
ContextCompat.getColor(editor.context, R.color.primaryLightColor)
)
drawable.color = ColorStateList.valueOf(editor.context.resolveAttr(R.attr.colorSurface))
drawable.setStroke(SizeUtils.dp2px(1f), editor.context.resolveAttr(R.attr.colorOutline))
list.background = drawable
}
@@ -355,8 +349,8 @@ open class EditorActionsMenu constructor(val editor: IDEEditor) :
private fun findWidestItem(): Int {
var widest = 0
val text =
LayoutInflater.from(editor.context).inflate(com.itsaky.androidide.R.layout.layout_popup_menu_item, null)
as MaterialButton
LayoutInflater.from(editor.context)
.inflate(com.itsaky.androidide.R.layout.layout_popup_menu_item, null) as MaterialButton
val dp30 = SizeUtils.dp2px(30f)
val paddingHorizontal = text.paddingStart + text.paddingEnd
val drawablePadding = text.iconPadding
@@ -16,8 +16,8 @@
*/
package com.itsaky.androidide.views.editor;
import static com.itsaky.androidide.resources.R.string;
import static com.itsaky.androidide.preferences.internal.EditorPreferencesKt.getVisiblePasswordFlag;
import static com.itsaky.androidide.resources.R.string;
import static com.itsaky.toaster.ToastUtilsKt.toast;
import android.app.Dialog;
@@ -107,7 +107,7 @@ public class IDEEditor extends CodeEditor implements com.itsaky.androidide.edito
window.setAdapter(new CompletionListAdapter());
replaceComponent(EditorAutoCompletion.class, window);
setColorScheme(new SchemeAndroidIDE());
setColorScheme(SchemeAndroidIDE.newInstance(context));
setSearcher(new IDEEditorSearcher(this));
getComponent(EditorTextActionWindow.class).setEnabled(false);
subscribeEvent(SelectionChangeEvent.class, this::handleSelectionChange);
@@ -381,7 +381,7 @@ public class IDEEditor extends CodeEditor implements com.itsaky.androidide.edito
public boolean isValidLine(int line) {
return line >= 0 && line < getText().getLineCount();
}
/**
* Checks if the given column is valid for this editor's text.
*
@@ -872,7 +872,8 @@ public class IDEEditor extends CodeEditor implements com.itsaky.androidide.edito
@Override
public void beginSearchMode() {
throw new UnsupportedOperationException("Search ActionMode is not supported. Use CodeEditorView.beginSearch() instead.");
throw new UnsupportedOperationException(
"Search ActionMode is not supported. Use CodeEditorView.beginSearch() instead.");
}
protected void dispatchDocumentSaveEvent() {
+3 -4
View File
@@ -10,7 +10,7 @@
android:id="@+id/icon_anchor"
android:layout_width="0dp"
android:layout_height="200dp"
android:background="@color/primaryDarkColor"
android:background="?attr/background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -23,7 +23,6 @@
android:layout_marginTop="-28dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
app:cardBackgroundColor="@color/primaryLightColor"
app:cardCornerRadius="56dp"
app:cardElevation="8dp"
app:layout_constraintEnd_toEndOf="parent"
@@ -46,7 +45,7 @@
android:layout_marginBottom="4dp"
android:gravity="center"
android:text="@string/app_name"
android:textColor="@color/primaryTextColor"
android:textColor="?attr/colorOnPrimaryContainer"
android:textSize="30sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
@@ -60,7 +59,7 @@
android:gravity="center"
android:text="@string/about_subtitle"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/secondaryTextColor"
android:textColor="?attr/colorOnSecondaryContainer"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title" />
+6 -10
View File
@@ -17,7 +17,7 @@
android:id="@+id/editor_appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/primaryDarkColor"
android:background="?attr/colorSurface"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$Behavior">
<com.google.android.material.appbar.MaterialToolbar
@@ -28,7 +28,6 @@
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/build_progress_indicator"
style="@style/AppTheme.ProgressIndicator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true" />
@@ -44,7 +43,6 @@
style="@style/AppTheme.TabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primaryDarkColor"
app:tabGravity="start" />
</com.google.android.material.appbar.AppBarLayout>
@@ -54,7 +52,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="16dp"
android:background="@color/content_background"
android:background="?attr/colorSurface"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
<!--Views in this flipper are dynamically added and must be instances of CodeEditorView-->
@@ -63,7 +61,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/editor_sheet_peek_height"
android:background="@color/content_background" />
android:background="?attr/colorSurface" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
@@ -74,8 +72,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textColor="@color/secondaryTextColor"
android:textSize="30sp"
android:textAppearance="@style/TextAppearance.Material3.TitleLarge"
android:textColor="?attr/colorOnSurface"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -89,7 +87,7 @@
android:layout_marginTop="8dp"
android:gravity="center"
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
android:textColor="@color/secondaryTextColor_light"
android:textColor="?attr/colorSecondaryVariant"
android:textSize="13sp"
app:layout_constraintEnd_toEndOf="@id/no_editor_title"
app:layout_constraintStart_toStartOf="@id/no_editor_title"
@@ -120,8 +118,6 @@
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/layout_nav_header"
app:itemIconTint="@color/primaryIconColor"
app:itemTextColor="@color/primaryTextColor"
app:menu="@menu/menu_editor_nav" />
<com.google.android.material.navigation.NavigationView
+1 -4
View File
@@ -12,7 +12,6 @@
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimaryDark"
android:gravity="center"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$Behavior">
@@ -29,9 +28,7 @@
android:focusable="false"
android:gravity="center"
android:text="@string/app_name"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/primaryTextColor"
android:textSize="24sp"
android:textAppearance="@style/TextAppearance.Material3.TitleLarge"
android:textStyle="bold" />
</RelativeLayout>
@@ -10,7 +10,6 @@
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primaryDarkColor"
android:elevation="8dp"
app:elevation="8dp"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$Behavior">
+2 -4
View File
@@ -30,8 +30,7 @@
android:layout_marginEnd="4dp"
android:layout_marginBottom="4dp"
android:text="@string/get_started"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/primaryTextColor"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -43,8 +42,7 @@
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:text="@string/msg_create_new_project_greeting"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/primaryTextColorLight"
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/getStarted" />
+12 -5
View File
@@ -32,6 +32,7 @@
android:clickable="true"
android:focusable="true"
android:scaleType="fitCenter"
app:tint="?attr/colorOnBackground"
app:srcCompat="@drawable/ic_github" />
<ImageView
@@ -46,6 +47,7 @@
android:clickable="true"
android:focusable="true"
android:scaleType="fitCenter"
app:tint="?attr/colorOnBackground"
app:srcCompat="@drawable/ic_telegram" />
<ImageView
@@ -60,12 +62,14 @@
android:clickable="true"
android:focusable="true"
android:scaleType="fitCenter"
app:tint="?attr/colorOnBackground"
app:srcCompat="@drawable/ic_email" />
<ImageView
android:id="@+id/website"
android:layout_width="30dp"
android:layout_height="30dp"
app:tint="?attr/colorOnBackground"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
@@ -78,6 +82,7 @@
<ImageView
android:id="@+id/licenses"
app:tint="?attr/colorOnBackground"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginStart="16dp"
@@ -101,8 +106,7 @@
android:layout_marginEnd="16dp"
android:layout_marginBottom="4dp"
android:text="@string/title_translations"
android:textSize="18sp"
android:textStyle="bold" />
android:textAppearance="@style/TextAppearance.Material3.TitleLarge" />
<View
android:layout_width="match_parent"
@@ -117,9 +121,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:textSize="15sp" />
tools:text="Hindi - Akash Yadav"
android:layout_marginBottom="16dp"/>
<TextView
android:id="@+id/footer_text"
@@ -127,7 +132,9 @@
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:gravity="center"
android:textColor="@color/secondaryTextColor" />
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
android:textColor="?attr/colorOnBackground"
tools:text="AndroidIDE v2.1.3-beta for arm64-v8a" />
</LinearLayout>
+51 -55
View File
@@ -1,63 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/contentIconView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical">
android:layout_marginStart="16dp"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/contentTextView" />
<ImageView
android:id="@+id/contentIconView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/contentTextView" />
<TextView
android:id="@+id/contentTextView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
android:alpha="0.8"
android:letterSpacing="0.02"
android:lineSpacingExtra="7sp"
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
app:layout_constraintBottom_toTopOf="@+id/rightButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/contentIconView"
app:layout_constraintTop_toTopOf="parent"
tools:text="Sync the project." />
<TextView
android:id="@+id/contentTextView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
android:alpha="0.8"
android:letterSpacing="0.02"
android:lineSpacingExtra="7sp"
android:textColor="@color/primaryTextColor"
android:textSize="14sp"
android:textStyle="normal"
app:layout_constraintBottom_toTopOf="@+id/rightButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/contentIconView"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/leftButton"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
app:layout_constraintBottom_toBottomOf="@+id/rightButton"
app:layout_constraintEnd_toStartOf="@+id/rightButton"
app:layout_constraintTop_toTopOf="@+id/rightButton"
tools:text="Cancel" />
<com.google.android.material.button.MaterialButton
android:id="@+id/leftButton"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:textColor="@color/primaryTextColor"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@+id/rightButton"
app:layout_constraintEnd_toStartOf="@+id/rightButton"
app:layout_constraintTop_toTopOf="@+id/rightButton"
app:rippleColor="@color/primaryDarkColor" />
<com.google.android.material.button.MaterialButton
android:id="@+id/rightButton"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginBottom="9dp"
android:textColor="@color/primaryTextColor"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:rippleColor="@color/primaryDarkColor" />
<com.google.android.material.button.MaterialButton
android:id="@+id/rightButton"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginBottom="9dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:text="Sync" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -28,7 +28,6 @@
android:layout_height="wrap_content"
android:indeterminate="false"
android:max="100"
app:indicatorColor="@color/secondaryColor"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
+25 -27
View File
@@ -1,35 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.itsaky.androidide.views.editor.IDEEditor
android:id="@+id/editor"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="0dp"
android:layout_weight="1.0" />
<com.itsaky.androidide.views.editor.IDEEditor
android:id="@+id/editor"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0" />
<HorizontalScrollView
android:id="@+id/diagnostic_text_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
<HorizontalScrollView
android:id="@+id/diagnostic_text_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/content_background"
android:fillViewport="true">
<TextView
android:id="@+id/diagnostic_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:ellipsize="end"
android:focusable="true"
android:padding="8dp"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.Material3.BodyMedium" />
<TextView
android:id="@+id/diagnostic_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_ripple"
android:clickable="true"
android:ellipsize="end"
android:focusable="true"
android:padding="8dp"
android:singleLine="true"
android:textColor="@color/primaryTextColor"
android:textSize="12sp" />
</HorizontalScrollView>
</HorizontalScrollView>
</LinearLayout>
@@ -1,88 +1,96 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/relativeLayout2"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/relativeLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimaryContainer"
android:gravity="center_vertical"
tools:ignore="SmallSp">
<TextView
android:id="@+id/completion_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/primaryLightColor"
android:layout_marginTop="2dp"
android:layout_marginEnd="4dp"
android:ellipsize="start"
android:gravity="center_vertical"
tools:ignore="SmallSp">
android:singleLine="true"
android:textColor="?attr/colorSecondaryVariant"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Class" />
<TextView
android:id="@+id/completion_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:layout_marginEnd="4dp"
android:ellipsize="start"
android:gravity="center_vertical"
android:singleLine="true"
android:textColor="@color/primaryTextColorLight"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/completion_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="2dp"
android:layout_marginEnd="4dp"
android:ellipsize="end"
android:gravity="center_vertical"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
android:textColor="?attr/colorOnPrimaryContainer"
android:textSize="13sp"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@id/completion_type"
app:layout_constraintStart_toEndOf="@id/completion_iconText"
app:layout_constraintTop_toTopOf="parent"
tools:text="MainActivity" />
<TextView
android:id="@+id/completion_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="2dp"
android:layout_marginEnd="4dp"
android:ellipsize="end"
android:gravity="center_vertical"
android:singleLine="true"
android:textColor="@color/primaryTextColor"
android:textSize="13sp"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@id/completion_type"
app:layout_constraintStart_toEndOf="@id/completion_iconText"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/completion_detail"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:ellipsize="end"
android:gravity="center_vertical"
android:singleLine="true"
android:textColor="@color/primaryTextColorLight"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/completion_iconText"
app:layout_constraintTop_toBottomOf="@id/completion_label" />
<TextView
android:id="@+id/completion_detail"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:ellipsize="end"
android:gravity="center_vertical"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
android:textColor="?attr/colorSecondaryVariant"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/completion_iconText"
app:layout_constraintTop_toBottomOf="@id/completion_label"
tools:text="com.itsaky.androidide.MainActivity" />
<TextView
android:id="@+id/completion_api_info"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginEnd="4dp"
android:layout_marginBottom="2dp"
android:ellipsize="end"
android:gravity="center_vertical"
android:singleLine="true"
android:textColor="@color/primaryTextColor"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/completion_iconText"
app:layout_constraintTop_toBottomOf="@id/completion_detail" />
<TextView
android:id="@+id/completion_api_info"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginEnd="4dp"
android:layout_marginBottom="2dp"
android:ellipsize="end"
android:gravity="center_vertical"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
android:textColor="?attr/colorSecondaryVariant"
android:textSize="11sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/completion_iconText"
app:layout_constraintTop_toBottomOf="@id/completion_detail"
tools:text="Added in API 1" />
<TextView
android:id="@+id/completion_iconText"
android:layout_width="30dp"
android:layout_height="0dp"
android:layout_marginEnd="8dp"
android:background="@color/secondaryColor"
android:gravity="center"
android:textColor="@color/primaryTextColor"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/completion_iconText"
android:layout_width="30dp"
android:layout_height="0dp"
android:layout_marginEnd="8dp"
android:backgroundTint="?attr/colorPrimaryContainer"
android:gravity="center"
android:textAppearance="@style/TextAppearance.Material3.TitleLarge"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="F" />
</androidx.constraintlayout.widget.ConstraintLayout>
+83 -86
View File
@@ -15,98 +15,95 @@
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CrashHandlerActivity">
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CrashHandlerActivity">
<ImageButton
android:id="@+id/close_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_margin="16dp"
android:background="@drawable/bg_ripple"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_close" />
<ImageButton
android:id="@+id/close_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_margin="16dp"
android:background="?attr/selectableItemBackgroundBorderless"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_close"
app:tint="?attr/colorOnPrimaryContainer" />
<TextView
android:id="@+id/crash_title"
<TextView
android:id="@+id/crash_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="@string/msg_ide_crashed"
android:textAppearance="@style/TextAppearance.Material3.TitleLarge"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/crash_subtitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="16dp"
android:text="@string/msg_report_crash"
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
app:layout_constraintEnd_toStartOf="@+id/close_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/crash_title" />
<androidx.core.widget.NestedScrollView
android:id="@+id/log_text_container"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="16dp"
android:fillViewport="true"
app:layout_constraintBottom_toTopOf="@+id/textView4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/crash_subtitle">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<TextView
android:id="@+id/log_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="@string/msg_ide_crashed"
android:textColor="@color/primaryTextColor"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:layout_height="match_parent"
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
tools:text="This is an error message." />
<TextView
android:id="@+id/crash_subtitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="16dp"
android:text="@string/msg_report_crash"
android:textColor="@color/secondaryTextColor_light"
android:textSize="14sp"
app:layout_constraintEnd_toStartOf="@+id/close_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/crash_title" />
</HorizontalScrollView>
<androidx.core.widget.NestedScrollView
android:id="@+id/log_text_container"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="16dp"
android:fillViewport="true"
app:layout_constraintBottom_toTopOf="@+id/textView4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/crash_subtitle">
</androidx.core.widget.NestedScrollView>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<TextView
android:id="@+id/textView4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="@string/msg_crash_report_hint"
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
android:textColor="?attr/colorOnBackground"
app:layout_constraintBottom_toTopOf="@+id/report_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/log_text"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textColor="@color/secondaryColor"
tools:text="This is an error message." />
</HorizontalScrollView>
</androidx.core.widget.NestedScrollView>
<TextView
android:id="@+id/textView4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="@string/msg_crash_report_hint"
android:textColor="@color/secondaryTextColor"
app:layout_constraintBottom_toTopOf="@+id/report_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/report_button"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:backgroundTint="@color/secondaryColor"
android:text="@string/msg_copy_report_action"
android:textColor="@color/primaryTextColor"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/report_button"
style="@style/Widget.Material3.Button.ElevatedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="@string/msg_copy_report_action"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -33,7 +33,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/classtype_class"
android:theme="@style/AppTheme.MaterialToggleButton"
app:icon="@drawable/ic_language_java" />
<com.google.android.material.button.MaterialButton
@@ -42,7 +41,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/classtype_activity"
android:theme="@style/AppTheme.MaterialToggleButton"
app:icon="@drawable/ic_filetype_activity" />
<com.google.android.material.button.MaterialButton
@@ -51,7 +49,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/classtype_interface"
android:theme="@style/AppTheme.MaterialToggleButton"
app:icon="@drawable/ic_filetype_interface" />
<com.google.android.material.button.MaterialButton
@@ -60,7 +57,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/classtype_enum"
android:theme="@style/AppTheme.MaterialToggleButton"
app:icon="@drawable/ic_filetype_enum" />
</com.google.android.material.button.MaterialButtonToggleGroup>
@@ -75,11 +71,9 @@
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:hint="@string/file_name"
android:theme="@style/AppTheme.TextInputLayout"
app:counterEnabled="true"
app:counterMaxLength="40"
app:startIconDrawable="@drawable/ic_file_rename"
app:startIconTint="@color/primaryIconColor">
app:startIconDrawable="@drawable/ic_file_rename">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
@@ -1,22 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorSurface"
android:orientation="vertical"
tools:ignore="Overdraw">
<include
android:id="@+id/info"
layout="@layout/layout_diagnostic_item" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/diagnostics"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/content_background"
android:orientation="vertical"
tools:ignore="Overdraw">
<include
android:id="@+id/info"
layout="@layout/layout_diagnostic_item" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/diagnostics"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="16dp"
android:paddingEnd="16dp" />
android:paddingStart="16dp"
android:paddingEnd="16dp"
tools:listitem="@layout/layout_diagnostic_item" />
</LinearLayout>
@@ -1,9 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:textColor="@color/primaryTextColor"
android:textIsSelectable="true"
android:textSize="11sp" />
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:textColor="?attr/colorOnPrimaryContainer"
android:textIsSelectable="true"
android:textSize="11sp"
tools:background="?attr/colorPrimaryContainer"
tools:text="';' expected" />
@@ -1,34 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:gravity="top|start"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp"
tools:ignore="UnusedAttribute">
<ImageView
android:id="@+id/icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="16dp"
android:scaleType="center"
app:tint="?attr/colorPrimary"
tools:src="@drawable/ic_error" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/content_background"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:gravity="top|start"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp"
tools:ignore="UnusedAttribute">
<ImageView
android:id="@+id/icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="16dp"
android:scaleType="center" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/primaryTextColor"
android:textSize="15sp" />
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
tools:text="Diagnostic message" />
</LinearLayout>
@@ -27,7 +27,6 @@
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progress"
style="@style/AppTheme.ProgressIndicator"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
@@ -15,7 +15,6 @@
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
@@ -23,12 +22,12 @@
<ViewFlipper
android:id="@+id/header_container"
android:layout_width="match_parent"
android:layout_height="@dimen/editor_sheet_collapsed_height"
android:background="@color/primaryDarkColor">
android:layout_height="@dimen/editor_sheet_collapsed_height">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="?attr/colorPrimaryContainer"
android:orientation="vertical"
tools:ignore="UselessParent">
@@ -40,8 +39,8 @@
android:maxLines="1"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:textColor="@color/primaryTextColor"
android:textSize="14sp" />
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
tools:text="Configure project :app" />
<TextView
android:id="@+id/swipe_hint"
@@ -50,7 +49,8 @@
android:gravity="center"
android:maxLines="1"
android:text="@string/msg_swipe_up"
android:textColor="@color/secondaryTextColor"
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
android:textColor="?attr/colorOnBackground"
android:textSize="11sp" />
</LinearLayout>
@@ -62,8 +62,7 @@
style="@style/AppTheme.TabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/header_container"
android:backgroundTint="@color/primaryDarkColor" />
android:layout_below="@id/header_container" />
<androidx.legacy.widget.Space
android:id="@+id/space_bottom"
@@ -78,7 +77,7 @@
android:layout_height="match_parent"
android:layout_above="@id/space_bottom"
android:layout_below="@id/tabs"
android:background="@color/content_background" />
android:background="?attr/colorPrimaryContainer" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/clear_fab"
@@ -87,8 +86,7 @@
android:layout_above="@id/space_bottom"
android:layout_alignParentEnd="true"
android:layout_margin="16dp"
android:src="@drawable/ic_close"
app:backgroundTint="@color/secondaryColor" />
android:src="@drawable/ic_close" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/share_output_fab"
@@ -100,8 +98,7 @@
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:src="@drawable/ic_share"
app:backgroundTint="@color/secondaryColor" />
android:src="@drawable/ic_share" />
</RelativeLayout>
@@ -27,12 +27,10 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/msg_replacement"
android:theme="@style/AppTheme.TextInputLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:startIconDrawable="@drawable/ic_search_replace"
app:startIconTint="@color/primaryIconColor">
app:startIconDrawable="@drawable/ic_search_replace">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
@@ -1,43 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="8dp">
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="8dp">
<ViewFlipper
android:id="@+id/chevronLoadingSwitcher"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginEnd="8dp">
<ImageView
android:id="@+id/filetree_chevron"
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/ic_chevron_right" />
<ProgressBar
android:id="@+id/loading_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true" />
</ViewFlipper>
<ViewFlipper
android:id="@+id/chevronLoadingSwitcher"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginEnd="8dp">
<ImageView
android:id="@+id/filetree_icon"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginEnd="8dp" />
android:id="@+id/filetree_chevron"
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/ic_chevron_right"
app:tint="?attr/colorPrimary" />
<TextView
android:id="@+id/filetree_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/primaryTextColor" />
<ProgressBar
android:id="@+id/loading_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true" />
</ViewFlipper>
<ImageView
android:id="@+id/filetree_icon"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginEnd="8dp"
app:tint="?attr/colorPrimary"
tools:src="@drawable/ic_language_java" />
<TextView
android:id="@+id/filetree_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
android:textColor="?attr/colorOnSurface"
tools:text="@string/app_name" />
</LinearLayout>
@@ -17,9 +17,10 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primaryDarkColor">
android:background="?attr/colorPrimaryContainer">
<EditText
android:id="@+id/search_input"
@@ -35,7 +36,8 @@
android:maxLines="1"
app:layout_constraintEnd_toStartOf="@id/more_options"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
tools:text="AndroidIDE" />
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/more_options"
@@ -44,7 +46,7 @@
android:layout_marginEnd="8dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_more_vert_black_20dp"
android:tint="@color/primaryIconColor"
android:tint="?attr/colorPrimary"
app:layout_constraintBottom_toBottomOf="@id/search_input"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/search_input"
@@ -58,13 +60,10 @@
android:layout_height="40dp"
android:text="@string/previous"
android:textAllCaps="true"
android:textColor="@color/primaryTextColor"
app:layout_constraintEnd_toStartOf="@+id/next"
app:layout_constraintHorizontal_weight="0.25"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/search_input"
app:rippleColor="@color/secondaryColor" />
app:layout_constraintTop_toBottomOf="@+id/search_input" />
<com.google.android.material.button.MaterialButton
@@ -74,13 +73,11 @@
android:layout_height="40dp"
android:text="@string/next"
android:textAllCaps="true"
android:textColor="@color/primaryTextColor"
app:layout_constraintEnd_toStartOf="@+id/replace"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_weight="0.25"
app:layout_constraintStart_toEndOf="@+id/prev"
app:layout_constraintTop_toBottomOf="@+id/search_input"
app:rippleColor="@color/secondaryColor" />
app:layout_constraintTop_toBottomOf="@+id/search_input" />
<com.google.android.material.button.MaterialButton
android:id="@+id/replace"
@@ -89,13 +86,11 @@
android:layout_height="40dp"
android:text="@string/replace"
android:textAllCaps="true"
android:textColor="@color/primaryTextColor"
app:layout_constraintEnd_toStartOf="@+id/close"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_weight="0.25"
app:layout_constraintStart_toEndOf="@+id/next"
app:layout_constraintTop_toBottomOf="@+id/search_input"
app:rippleColor="@color/secondaryColor" />
app:layout_constraintTop_toBottomOf="@+id/search_input" />
<com.google.android.material.button.MaterialButton
android:id="@+id/close"
@@ -104,12 +99,10 @@
android:layout_height="40dp"
android:text="@string/btn_close"
android:textAllCaps="true"
android:textColor="@color/primaryTextColor"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_weight="0.25"
app:layout_constraintStart_toEndOf="@+id/replace"
app:layout_constraintTop_toBottomOf="@+id/search_input"
app:rippleColor="@color/secondaryColor" />
app:layout_constraintTop_toBottomOf="@+id/search_input" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -27,10 +27,9 @@
android:ellipsize="end"
android:singleLine="true"
android:textAlignment="textStart"
android:textColor="@color/primaryTextColor"
android:textSize="14sp"
android:textColor="?attr/colorOnBackground"
android:textStyle="bold"
app:iconPadding="8dp"
app:iconTint="@color/primaryTextColor"
app:iconTint="?attr/colorOnBackground"
tools:icon="@drawable/ic_add"
tools:text="@string/msg_create_new_project" />
@@ -1,33 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="vertical"
android:paddingTop="16dp"
android:paddingBottom="16dp">
<ImageView
android:id="@+id/icon"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_centerVertical="true"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:scaleType="fitCenter"
app:tint="?attr/colorOnSurface"
tools:src="@drawable/ic_new_file" />
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_ripple"
android:clickable="true"
android:focusable="true"
android:orientation="vertical"
android:paddingTop="16dp"
android:paddingBottom="16dp">
<ImageView
android:id="@+id/icon"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_centerVertical="true"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:scaleType="fitCenter" />
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_toEndOf="@id/icon"
android:textColor="@color/primaryTextColor"
android:textSize="16sp" />
android:layout_centerVertical="true"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_toEndOf="@id/icon"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
tools:text="New file" />
</RelativeLayout>
@@ -20,10 +20,9 @@
style="@style/Widget.Material3.Button.TextButton.Icon"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@drawable/bg_ripple"
android:clickable="true"
android:drawablePadding="16dp"
android:drawableTint="@color/secondaryColor"
android:drawableTint="?attr/colorPrimary"
android:focusable="true"
android:gravity="start|center_vertical"
android:paddingStart="16dp"
@@ -31,7 +30,6 @@
android:paddingEnd="0dp"
android:paddingBottom="4dp"
android:textAllCaps="false"
android:textColor="@color/primaryTextColor"
app:iconPadding="0dp"
app:iconTint="@color/secondaryColor"
app:iconTint="?attr/colorPrimary"
tools:icon="@drawable/ic_code" />
@@ -1,50 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start|center_vertical"
android:paddingTop="16dp">
<com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/progress"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginEnd="16dp"
android:padding="10dp"
tools:progress="60" />
<TextView
android:id="@+id/message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start|center_vertical"
android:paddingTop="16dp">
android:layout_marginEnd="8dp"
android:layout_toEndOf="@id/progress"
android:ellipsize="end"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
tools:text="A long running task" />
<ProgressBar
android:id="@+id/progress"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginEnd="16dp"
android:padding="10dp" />
<TextView
android:id="@+id/message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_toEndOf="@id/progress"
android:ellipsize="end"
android:singleLine="true"
android:textSize="15sp" />
<TextView
android:id="@+id/subMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/message"
android:layout_marginEnd="8dp"
android:layout_toEndOf="@id/progress"
android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="2"
android:textSize="12sp" />
<TextView
android:id="@+id/welcomeText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/progress"
android:layout_centerHorizontal="true"
android:layout_marginTop="24dp"
android:text="@string/get_ready_for_something_awesome"
android:textColor="@color/secondaryTextColor_light"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/subMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/message"
android:layout_marginEnd="8dp"
android:layout_toEndOf="@id/progress"
android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="2"
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
android:textColor="?attr/colorOnBackground"
tools:text="@string/please_wait" />
</RelativeLayout>
+1 -3
View File
@@ -28,9 +28,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:hint="@string/hint_search_tasks"
android:theme="@style/AppTheme.TextInputLayout"
app:boxBackgroundColor="@color/content_background">
android:hint="@string/hint_search_tasks">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
@@ -52,7 +52,7 @@
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@id/exec"
android:background="@color/primaryLightColor" />
android:background="?attr/colorPrimaryContainer" />
<ViewFlipper
android:id="@+id/flipper"
@@ -50,15 +50,11 @@
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="@android:string/cancel"
android:textColor="@color/secondaryColor"
app:cornerRadius="8dp"
app:icon="@drawable/ic_close"
app:iconTint="@color/secondaryColor"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/msg"
app:rippleColor="@color/primaryLightColor"
app:strokeColor="@color/secondaryColor"
app:strokeWidth="2dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -36,9 +36,7 @@
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:hint="@string/text_to_search"
android:theme="@style/AppTheme.TextInputLayout"
app:startIconDrawable="@drawable/ic_search"
app:startIconTint="@color/primaryIconColor">
app:startIconDrawable="@drawable/ic_search">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
@@ -54,11 +52,9 @@
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:hint="@string/hint_find_project_filter"
android:theme="@style/AppTheme.TextInputLayout"
app:helperText="@string/msg_find_project_filter"
app:helperTextEnabled="true"
app:startIconDrawable="@drawable/ic_filter"
app:startIconTint="@color/primaryIconColor">
app:startIconDrawable="@drawable/ic_filter">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
@@ -1,63 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="Overdraw">
<LinearLayout
android:id="@+id/item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/content_background"
tools:ignore="Overdraw">
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp"
tools:ignore="UnusedAttribute">
<LinearLayout
android:id="@+id/item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/content_background"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp"
tools:ignore="UnusedAttribute">
<ImageView
android:id="@+id/icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="16dp"
android:scaleType="center" />
<ImageView
android:id="@+id/icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="16dp"
android:scaleType="center" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
tools:text="Filename" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/primaryTextColor"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/item"
android:clipChildren="false"
android:clipToPadding="false"
android:fillViewport="true"
android:paddingStart="16dp"
tools:ignore="RtlSymmetry">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/item"
android:clipChildren="false"
android:clipToPadding="false"
android:fillViewport="true"
android:paddingStart="16dp"
tools:ignore="RtlSymmetry">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/items"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="8dp"
android:paddingEnd="8dp"
tools:ignore="ScrollViewSize" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/items"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="8dp"
android:paddingEnd="8dp"
tools:ignore="ScrollViewSize" />
</HorizontalScrollView>
</HorizontalScrollView>
</RelativeLayout>
@@ -1,25 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusable="true"
android:gravity="top|start"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp"
tools:ignore="UnusedAttribute">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/content_background"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:gravity="top|start"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp"
tools:ignore="UnusedAttribute">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/primaryTextColor"
android:textSize="16sp" />
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
android:textSize="16sp"
tools:text="@string/app_name" />
</RelativeLayout>
+35 -39
View File
@@ -1,45 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/title"
style="@style/Widget.Material3.Button.Icon"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="?attr/colorPrimaryContainer"
android:elevation="0dp"
android:ellipsize="end"
android:gravity="center_vertical"
android:singleLine="true"
android:text="@string/build_output"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
app:icon="@drawable/ic_chevron_down"
app:iconPadding="8dp" />
<LinearLayout
android:id="@+id/shadow"
android:layout_width="match_parent"
android:layout_height="10dp"
android:background="@drawable/bg_shadow"
android:orientation="horizontal" />
<LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/title"
style="@style/Widget.Material3.Button.Icon"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@color/primaryDarkColor"
android:elevation="0dp"
android:ellipsize="end"
android:gravity="center_vertical"
android:singleLine="true"
android:text="@string/build_output"
android:textColor="@color/primaryTextColor"
android:textSize="18sp"
android:textStyle="bold"
app:icon="@drawable/ic_chevron_down"
app:iconPadding="8dp"
app:iconTint="@color/primaryTextColor"
app:rippleColor="@color/rippleHighlightColor" />
<LinearLayout
android:id="@+id/shadow"
android:layout_width="match_parent"
android:layout_height="10dp"
android:background="@drawable/bg_shadow"
android:orientation="horizontal" />
<LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="-6dp"
android:orientation="vertical"
android:paddingStart="16dp"
android:paddingTop="-2dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp" />
android:layout_marginTop="-6dp"
android:orientation="vertical"
android:paddingStart="16dp"
android:paddingTop="-2dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp" />
</LinearLayout>
@@ -15,38 +15,40 @@
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusable="true"
android:minHeight="35dp"
android:orientation="horizontal"
android:paddingStart="4dp"
android:paddingTop="4dp"
android:paddingEnd="4dp"
android:paddingBottom="4dp">
<ImageView
android:id="@+id/icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:layout_marginEnd="8dp"
android:padding="4dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_android"
app:tint="?attr/colorPrimary" />
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_ripple"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:focusable="true"
android:minHeight="35dp"
android:orientation="horizontal"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingStart="4dp"
android:paddingTop="4dp"
android:paddingEnd="4dp"
android:paddingBottom="4dp">
<ImageView
android:id="@+id/icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:layout_marginEnd="8dp"
android:padding="4dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_android" />
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingStart="4dp"
android:paddingEnd="4dp"
android:textColor="@color/primaryTextColor"
tools:text="Button" />
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
tools:text="Button" />
</LinearLayout>
@@ -7,5 +7,4 @@
android:layout_height="40dp"
android:gravity="center"
android:singleLine="true"
android:textColor="@color/symbolInput_text"
tools:text="↹" />
@@ -1,26 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp">
<com.google.android.material.slider.Slider
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp">
<com.google.android.material.slider.Slider
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stepSize="1.0"
android:value="14.0"
android:valueFrom="6.0"
android:valueTo="32.0"
app:haloColor="@color/secondaryLightColor"
app:thumbColor="@color/secondaryColor"
app:thumbElevation="4dp"
app:trackColorActive="@color/secondaryColor" />
android:stepSize="1.0"
android:value="14.0"
android:valueFrom="6.0"
android:valueTo="32.0"
app:thumbElevation="4dp" />
</LinearLayout>
+30 -32
View File
@@ -1,38 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/footer"
android:layout_width="match_parent"
android:id="@+id/footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:minHeight="72dp"
android:orientation="horizontal"
android:paddingStart="8dp"
android:paddingTop="8dp"
android:paddingEnd="8dp"
android:paddingBottom="8dp">
<com.google.android.material.button.MaterialButton
android:id="@+id/exit_button"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clipChildren="false"
android:minHeight="72dp"
android:orientation="horizontal"
android:paddingStart="8dp"
android:paddingTop="8dp"
android:paddingEnd="8dp"
android:paddingBottom="8dp">
android:elevation="0dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:text="@string/exit" />
<Button
android:id="@+id/exit_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:elevation="0dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:text="@string/exit"
android:textColor="?attr/colorOnSurface" />
<Space
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<Space
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<Button
android:id="@+id/next_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:text="@string/next"
android:textColor="@color/primaryTextColor" />
<com.google.android.material.button.MaterialButton
android:id="@+id/next_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:text="@string/next" />
</LinearLayout>
+8 -19
View File
@@ -11,15 +11,13 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/project_app_name"
android:theme="@style/AppTheme.TextInputLayout"
app:counterEnabled="true"
app:counterMaxLength="20"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:placeholderText="My Application"
app:startIconDrawable="@drawable/ic_android"
app:startIconTint="@color/primaryIconColor">
app:startIconDrawable="@drawable/ic_android">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_app_name"
@@ -37,15 +35,13 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/package_name"
android:theme="@style/AppTheme.TextInputLayout"
app:counterEnabled="true"
app:counterMaxLength="40"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/til_app_name"
app:placeholderText="com.example.myapplication"
app:startIconDrawable="@drawable/ic_package"
app:startIconTint="@color/primaryIconColor">
app:startIconDrawable="@drawable/ic_package">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_package_name"
@@ -63,7 +59,6 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/wizard_save_location"
android:theme="@style/AppTheme.TextInputLayout"
app:endIconDrawable="@drawable/ic_folder"
app:endIconMode="custom"
app:layout_constraintEnd_toEndOf="parent"
@@ -89,12 +84,11 @@
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:hint="@string/wizard_language"
android:theme="@style/AppTheme.TextInputLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/til_save_location">
<AutoCompleteTextView
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/et_language"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -111,13 +105,12 @@
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:hint="@string/wizard_toolchain"
android:theme="@style/AppTheme.TextInputLayout"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/til_language">
<AutoCompleteTextView
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/et_toolchain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -134,14 +127,12 @@
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:hint="@string/minimum_sdk"
android:theme="@style/AppTheme.TextInputLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/til_toolchain"
app:startIconDrawable="@drawable/ic_min_sdk"
app:startIconTint="@color/primaryIconColor">
app:startIconDrawable="@drawable/ic_min_sdk">
<AutoCompleteTextView
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/et_min_sdk"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -158,14 +149,12 @@
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:hint="@string/target_sdk"
android:theme="@style/AppTheme.TextInputLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/til_min_sdk"
app:startIconDrawable="@drawable/ic_target_sdk"
app:startIconTint="@color/primaryIconColor">
app:startIconDrawable="@drawable/ic_target_sdk">
<AutoCompleteTextView
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/et_target_sdk"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -31,6 +31,7 @@ import androidx.multidex.BuildConfig;
import androidx.multidex.MultiDexApplication;
import com.blankj.utilcode.util.ThrowableUtils;
import com.google.android.material.color.DynamicColors;
import com.itsaky.androidide.resources.R;
import com.itsaky.androidide.managers.PreferenceManager;
import com.itsaky.androidide.managers.ToolsManager;
@@ -101,7 +102,9 @@ public abstract class BaseApplication extends MultiDexApplication {
mPrefsManager = new PreferenceManager(this);
JavaCharacter.initMap();
ToolsManager.init(this, null);
DynamicColors.applyToActivitiesIfAvailable(this);
createNotificationChannels();
}
@@ -18,12 +18,21 @@
package com.itsaky.androidide.utils
import android.content.Context
import android.content.res.Configuration
import android.content.res.Resources.Theme
import android.util.TypedValue
fun Context.isSystemInDarkMode(): Boolean {
return this.resources.configuration.isSystemInDarkMode()
}
fun Configuration.isSystemInDarkMode(): Boolean {
return (uiMode and Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES
}
@JvmOverloads
fun Context.resolveAttr(id: Int, resolveRefs: Boolean = true): Int {
return theme.resolveAttr(id)
return theme.resolveAttr(id, resolveRefs)
}
@JvmOverloads
@@ -25,7 +25,7 @@
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:background="@color/primaryLightColor"
android:background="?attr/colorOutline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
@@ -1,33 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="200dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/primaryColor"
tools:ignore="Overdraw">
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="?attr/colorPrimaryContainer"
tools:ignore="Overdraw">
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/icon"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerVertical="true"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
app:shapeAppearance="@style/AppTheme.ShapeAppearance.MainFragment.Logo"
android:src="@drawable/ic_launcher_main" />
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/icon"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerVertical="true"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:src="@drawable/ic_launcher_main"
app:shapeAppearance="@style/AppTheme.ShapeAppearance.MainFragment.Logo" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toEndOf="@id/icon"
android:elevation="8dp"
android:text="@string/app_name"
android:textColor="@color/primaryTextColor"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toEndOf="@id/icon"
android:elevation="8dp"
android:text="@string/app_name"
android:textColor="?attr/colorOnPrimaryContainer"
android:textSize="20sp"
android:textStyle="bold" />
</RelativeLayout>
@@ -18,8 +18,11 @@
package com.itsaky.androidide.preferences
import android.content.Context
import android.graphics.PorterDuff.Mode.SRC_ATOP
import android.graphics.PorterDuffColorFilter
import androidx.core.content.ContextCompat
import androidx.preference.Preference
import com.itsaky.androidide.utils.resolveAttr
/**
* Base class for preferences.
@@ -35,10 +38,16 @@ abstract class BasePreference : IPreference() {
pref.key = this.key
pref.title = context.getString(this.title)
this.summary?.let { pref.summary = context.getString(it) }
pref.isIconSpaceReserved = this.icon != null
this.icon?.let { pref.icon = ContextCompat.getDrawable(context, it) }
this.icon?.let {
pref.icon =
ContextCompat.getDrawable(context, it)?.apply {
colorFilter =
PorterDuffColorFilter(context.resolveAttr(R.attr.colorOnPrimaryContainer), SRC_ATOP)
}
}
pref.setOnPreferenceClickListener { onPreferenceClick(pref) }
pref.setOnPreferenceChangeListener(this::onPreferenceChanged)
return pref
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<?xml version="1.0" encoding="utf-8"?><!--
~ This file is part of AndroidIDE.
~
~ AndroidIDE is free software: you can redistribute it and/or modify
@@ -17,7 +16,7 @@
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
@@ -29,7 +28,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:theme="@style/AppTheme.TextInputLayout">
tools:hint="Type something">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ This file is part of AndroidIDE.
~
~ AndroidIDE is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ AndroidIDE is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/primaryLightColor" android:state_enabled="false"/>
<item android:color="@color/secondaryLightColor" android:state_focused="true"/>
<item android:color="@color/secondaryColor"/>
</selector>
@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ This file is part of AndroidIDE.
~
~ AndroidIDE is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ AndroidIDE is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/secondaryLightColor_transparent" android:state_checked="true" android:state_selected="true" />
<item android:color="@color/content_background" />
</selector>
@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ This file is part of AndroidIDE.
~
~ AndroidIDE is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ AndroidIDE is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="@dimen/m3_comp_switch_disabled_track_opacity"
android:color="?attr/colorSurfaceVariant"
android:state_enabled="false" android:state_checked="false"/>
<item android:alpha="@dimen/m3_comp_switch_disabled_track_opacity"
android:color="?attr/colorOnSurface"
android:state_enabled="false" android:state_checked="true"/>
<item android:color="@color/secondaryLightColor" android:state_checked="true"/>
<item android:color="?attr/colorSurfaceVariant"/>
</selector>
@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ This file is part of AndroidIDE.
~
~ AndroidIDE is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ AndroidIDE is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/secondaryColor" android:state_activated="true" android:state_focused="true" />
<item android:color="@color/primaryLightColor" />
</selector>
@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ This file is part of AndroidIDE.
~
~ AndroidIDE is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ AndroidIDE is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Disabled -->
<item android:alpha="@dimen/material_emphasis_disabled" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
<!-- Focused -->
<item android:color="?attr/colorAccent" android:state_focused="true"/>
<!-- Normal -->
<item android:color="?attr/colorOnSurfaceVariant"/>
</selector>
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ This file is part of AndroidIDE.
~
~ AndroidIDE is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ AndroidIDE is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Disabled -->
<item android:alpha="@dimen/material_emphasis_disabled" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
<!-- Focused -->
<item android:color="?attr/colorAccent" android:state_focused="true"/>
<!-- Hovered -->
<item android:color="?attr/colorOnSurface" android:state_hovered="true"/>
<!-- Normal -->
<item android:color="?attr/colorOutline"/>
</selector>
@@ -17,20 +17,20 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<!-- Pressed -->
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<stroke android:width="1dp" android:color="@android:color/white" android:dashWidth="0dp" android:dashGap="0dp" />
</shape>
</item>
<!-- Pressed -->
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<stroke android:width="1dp" android:color="?attr/colorPrimary" android:dashWidth="0dp" android:dashGap="0dp" />
</shape>
</item>
<!-- Normal -->
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<stroke android:width="1dp" android:color="@color/primaryLightColor" android:dashWidth="5dp" android:dashGap="5dp" />
</shape>
</item>
<!-- Normal -->
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<stroke android:width="1dp" android:color="?attr/colorOutline" android:dashWidth="5dp" android:dashGap="5dp" />
</shape>
</item>
</selector>
@@ -20,7 +20,7 @@
<solid android:color="@android:color/transparent"/>
<stroke
android:width="1dp"
android:color="@color/secondaryColor"
android:color="?attr/colorPrimary"
android:dashWidth="5dp"
android:dashGap="5dp" />
</shape>
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<gradient
android:angle="270"
android:endColor="@android:color/transparent"
android:startColor="@color/primaryDarkColor"
android:type="linear" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<gradient
android:angle="270"
android:endColor="@android:color/transparent"
android:startColor="?attr/colorPrimaryDark"
android:type="linear" />
</shape>
</item>
</layer-list>
@@ -18,7 +18,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/primaryLightColor" />
<solid android:color="?attr/colorSecondaryContainer" />
<corners android:radius="5dp" />
</shape>
@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ This file is part of AndroidIDE.
~
~ AndroidIDE is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ AndroidIDE is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/bg_widget_selected" />
<corners
android:bottomLeftRadius="10dp"
android:bottomRightRadius="0dp"
android:topLeftRadius="10dp"
android:topRightRadius="0dp" />
</shape>
@@ -21,7 +21,7 @@
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#ffffff"
android:fillColor="@color/primaryIconColor"
android:pathData="M12,2A10,10 0,0 0,2 12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0,0 0,12 2Z" />
</vector>
@@ -35,7 +35,7 @@
android:pivotY="12">
<path
android:name="android_path"
android:fillColor="#FFFFFF"
android:fillColor="@color/md_theme_light_onBackground"
android:pathData="M 16.622 12.991 C 16.694 13.132 16.768 13.266 16.832 13.405 C 16.886 13.521 16.93 13.641 16.976 13.76 C 17.01 13.849 17.044 13.939 17.07 14.03 C 17.119 14.202 17.176 14.373 17.2 14.552 C 17.215 14.664 17.244 14.774 17.261 14.886 C 17.275 14.978 17.282 15.071 17.293 15.163 C 17.243 15.178 6.875 15.184 6.758 15.169 C 6.836 14.305 7.097 13.505 7.566 12.773 C 8.038 12.037 8.661 11.46 9.428 11.03 C 9.395 10.971 9.366 10.915 9.334 10.86 C 9.22 10.662 9.106 10.464 8.991 10.266 C 8.859 10.038 8.725 9.811 8.595 9.582 C 8.567 9.533 8.544 9.482 8.546 9.421 C 8.549 9.315 8.618 9.261 8.689 9.242 C 8.778 9.218 8.858 9.259 8.903 9.336 C 8.965 9.445 9.031 9.553 9.094 9.661 C 9.267 9.957 9.439 10.254 9.612 10.55 C 9.669 10.649 9.726 10.748 9.787 10.853 C 9.857 10.824 9.926 10.795 9.995 10.767 C 10.25 10.663 10.513 10.58 10.782 10.521 C 10.943 10.486 11.107 10.457 11.271 10.434 C 11.485 10.403 11.699 10.388 11.915 10.39 C 12.106 10.392 12.298 10.391 12.489 10.396 C 12.552 10.398 12.615 10.413 12.678 10.421 C 12.746 10.429 12.814 10.435 12.882 10.446 C 12.967 10.459 13.052 10.473 13.136 10.493 C 13.303 10.532 13.471 10.573 13.637 10.618 C 13.708 10.636 13.776 10.663 13.844 10.688 C 13.985 10.742 14.124 10.797 14.269 10.853 C 14.278 10.843 14.289 10.832 14.297 10.819 C 14.422 10.606 14.546 10.392 14.671 10.179 C 14.773 10.005 14.878 9.833 14.981 9.659 C 15.043 9.552 15.105 9.445 15.166 9.338 C 15.219 9.247 15.317 9.216 15.407 9.261 C 15.498 9.306 15.545 9.416 15.503 9.504 C 15.461 9.593 15.412 9.678 15.363 9.763 C 15.275 9.916 15.186 10.068 15.097 10.22 C 14.988 10.405 14.878 10.59 14.77 10.776 C 14.722 10.859 14.677 10.943 14.628 11.033 C 14.66 11.053 14.691 11.075 14.725 11.093 C 14.909 11.195 15.083 11.313 15.251 11.44 C 15.359 11.521 15.463 11.609 15.563 11.7 C 15.673 11.798 15.778 11.901 15.883 12.005 C 16.022 12.142 16.143 12.295 16.262 12.449 C 16.394 12.62 16.509 12.802 16.622 12.991 Z M 14.434 13.661 C 14.589 13.659 14.714 13.597 14.801 13.471 C 14.845 13.407 14.877 13.335 14.88 13.255 C 14.884 13.138 14.837 13.041 14.761 12.958 C 14.654 12.84 14.516 12.795 14.362 12.824 C 14.255 12.844 14.16 12.904 14.098 12.997 C 14.034 13.09 13.996 13.194 14.025 13.312 C 14.043 13.385 14.073 13.451 14.124 13.509 C 14.204 13.6 14.304 13.647 14.434 13.661 Z M 9.199 13.133 C 9.174 13.19 9.174 13.253 9.189 13.308 C 9.235 13.487 9.337 13.612 9.553 13.654 C 9.773 13.696 10.013 13.522 10.034 13.275 C 10.047 13.115 9.986 12.985 9.851 12.893 C 9.661 12.762 9.416 12.805 9.276 12.985 C 9.245 13.025 9.226 13.076 9.199 13.133 Z"
android:strokeColor="#00000000" />
</group>
@@ -45,7 +45,7 @@
android:pivotY="12">
<path
android:name="lbrace_path"
android:fillColor="#FFFFFF"
android:fillColor="@color/md_theme_light_onBackground"
android:pathData="M 5.915 10.326 C 5.921 10.528 5.936 10.724 5.931 10.92 C 5.922 11.313 5.817 11.678 5.58 11.998 C 5.331 12.332 4.995 12.531 4.593 12.625 C 4.571 12.63 4.549 12.635 4.526 12.641 C 4.631 12.674 4.737 12.699 4.836 12.738 C 5.37 12.95 5.705 13.341 5.86 13.89 C 5.936 14.158 5.943 14.431 5.929 14.706 C 5.921 14.88 5.911 15.054 5.9 15.229 C 5.89 15.401 5.876 15.572 5.864 15.744 C 5.857 15.854 5.852 15.964 5.845 16.075 C 5.838 16.215 5.83 16.355 5.822 16.494 C 5.811 16.68 5.806 16.867 5.788 17.052 C 5.774 17.196 5.787 17.336 5.815 17.476 C 5.885 17.823 6.093 18.055 6.413 18.192 C 6.618 18.28 6.835 18.318 7.058 18.321 C 7.305 18.324 7.552 18.327 7.798 18.331 C 7.805 18.331 7.812 18.332 7.823 18.334 C 7.823 18.719 7.823 19.103 7.823 19.494 C 7.803 19.496 7.784 19.499 7.764 19.499 C 7.549 19.499 7.335 19.501 7.12 19.498 C 6.748 19.494 6.382 19.453 6.025 19.343 C 5.707 19.245 5.412 19.1 5.161 18.88 C 4.803 18.568 4.584 18.175 4.5 17.706 C 4.463 17.496 4.458 17.285 4.465 17.074 C 4.474 16.847 4.492 16.62 4.506 16.393 C 4.515 16.241 4.524 16.09 4.534 15.939 C 4.547 15.737 4.562 15.535 4.574 15.334 C 4.585 15.159 4.589 14.984 4.604 14.81 C 4.619 14.628 4.622 14.447 4.611 14.265 C 4.599 14.083 4.563 13.905 4.484 13.739 C 4.393 13.547 4.242 13.424 4.044 13.354 C 3.858 13.289 3.667 13.255 3.471 13.245 C 2.86 13.216 2.248 13.238 1.637 13.231 C 1.612 13.231 1.587 13.231 1.558 13.231 C 1.558 12.843 1.558 12.46 1.558 12.07 C 1.581 12.069 1.605 12.067 1.629 12.067 C 2.155 12.067 2.682 12.07 3.208 12.065 C 3.445 12.063 3.682 12.048 3.912 11.985 C 3.976 11.968 4.039 11.946 4.101 11.921 C 4.311 11.838 4.445 11.683 4.521 11.472 C 4.583 11.299 4.612 11.121 4.616 10.938 C 4.619 10.814 4.617 10.689 4.611 10.564 C 4.601 10.363 4.585 10.161 4.573 9.959 C 4.562 9.785 4.554 9.611 4.542 9.436 C 4.531 9.262 4.518 9.088 4.506 8.914 C 4.499 8.799 4.493 8.684 4.487 8.57 C 4.479 8.4 4.468 8.23 4.465 8.06 C 4.455 7.534 4.59 7.054 4.934 6.645 C 5.147 6.392 5.41 6.206 5.712 6.073 C 6.011 5.942 6.324 5.865 6.649 5.83 C 6.821 5.812 6.992 5.803 7.165 5.804 C 7.361 5.804 7.558 5.804 7.754 5.804 C 7.776 5.804 7.799 5.804 7.824 5.804 C 7.824 6.195 7.824 6.58 7.824 6.969 C 7.802 6.97 7.782 6.972 7.762 6.972 C 7.542 6.972 7.323 6.969 7.104 6.973 C 6.903 6.977 6.705 7.001 6.514 7.068 C 6.319 7.135 6.145 7.235 6.012 7.397 C 5.869 7.57 5.811 7.774 5.788 7.995 C 5.774 8.133 5.79 8.27 5.796 8.408 C 5.804 8.612 5.822 8.815 5.835 9.019 C 5.846 9.194 5.853 9.368 5.864 9.543 C 5.876 9.744 5.89 9.946 5.903 10.148 C 5.907 10.205 5.911 10.262 5.915 10.326 Z"
android:strokeColor="#00000000" />
</group>
@@ -55,7 +55,7 @@
android:pivotY="12">
<path
android:name="rbrace_path"
android:fillColor="#FFFFFF"
android:fillColor="@color/md_theme_light_onBackground"
android:pathData="M 16.31 5.804 C 16.529 5.804 16.742 5.802 16.954 5.804 C 17.375 5.808 17.788 5.866 18.186 6.009 C 18.464 6.108 18.723 6.244 18.945 6.439 C 19.294 6.745 19.517 7.125 19.597 7.586 C 19.635 7.803 19.643 8.021 19.632 8.24 C 19.625 8.386 19.614 8.533 19.605 8.68 C 19.591 8.902 19.577 9.125 19.563 9.347 C 19.554 9.492 19.545 9.636 19.536 9.781 C 19.522 10.003 19.508 10.225 19.494 10.448 C 19.487 10.555 19.472 10.663 19.473 10.771 C 19.474 11.031 19.492 11.29 19.601 11.533 C 19.689 11.733 19.839 11.861 20.042 11.935 C 20.203 11.994 20.369 12.026 20.539 12.043 C 20.759 12.065 20.98 12.068 21.201 12.067 C 21.654 12.066 22.106 12.067 22.559 12.067 C 22.58 12.067 22.6 12.067 22.626 12.067 C 22.626 12.453 22.626 12.838 22.626 13.231 C 22.603 13.231 22.578 13.231 22.554 13.231 C 22.136 13.231 21.718 13.231 21.3 13.231 C 21.122 13.231 20.944 13.229 20.767 13.237 C 20.509 13.249 20.254 13.279 20.011 13.375 C 19.79 13.463 19.649 13.623 19.57 13.842 C 19.511 14.003 19.49 14.171 19.478 14.341 C 19.467 14.487 19.481 14.631 19.486 14.775 C 19.492 14.943 19.51 15.11 19.521 15.277 C 19.529 15.392 19.534 15.506 19.541 15.621 C 19.549 15.759 19.557 15.896 19.566 16.034 C 19.576 16.204 19.585 16.374 19.596 16.543 C 19.607 16.713 19.623 16.882 19.632 17.052 C 19.655 17.452 19.611 17.843 19.438 18.21 C 19.353 18.39 19.241 18.554 19.105 18.7 C 18.837 18.989 18.509 19.18 18.138 19.306 C 17.887 19.391 17.629 19.443 17.365 19.472 C 17.166 19.493 16.966 19.498 16.765 19.499 C 16.592 19.499 16.419 19.499 16.246 19.499 C 16.223 19.499 16.201 19.499 16.176 19.499 C 16.176 19.107 16.176 18.722 16.176 18.333 C 16.201 18.332 16.223 18.33 16.246 18.33 C 16.375 18.33 16.504 18.333 16.633 18.33 C 16.815 18.324 16.997 18.324 17.178 18.304 C 17.456 18.274 17.717 18.191 17.937 18.005 C 18.108 17.861 18.204 17.674 18.248 17.458 C 18.279 17.304 18.282 17.148 18.267 16.991 C 18.256 16.882 18.253 16.771 18.247 16.661 C 18.239 16.526 18.231 16.39 18.223 16.255 C 18.213 16.078 18.203 15.901 18.191 15.725 C 18.18 15.56 18.166 15.395 18.155 15.23 C 18.147 15.102 18.141 14.973 18.136 14.844 C 18.131 14.695 18.12 14.545 18.124 14.396 C 18.134 13.965 18.256 13.571 18.539 13.237 C 18.754 12.982 19.022 12.806 19.34 12.707 C 19.414 12.684 19.49 12.666 19.572 12.643 C 19.501 12.624 19.435 12.607 19.369 12.589 C 19.13 12.522 18.915 12.411 18.726 12.251 C 18.426 11.995 18.247 11.667 18.165 11.284 C 18.117 11.061 18.117 10.835 18.124 10.61 C 18.13 10.435 18.143 10.261 18.155 10.087 C 18.166 9.919 18.18 9.752 18.191 9.585 C 18.199 9.47 18.203 9.355 18.21 9.241 C 18.222 9.062 18.235 8.883 18.247 8.705 C 18.254 8.588 18.26 8.47 18.265 8.353 C 18.27 8.252 18.277 8.151 18.274 8.05 C 18.267 7.866 18.226 7.69 18.135 7.528 C 18.035 7.351 17.885 7.228 17.705 7.141 C 17.493 7.039 17.267 6.987 17.032 6.982 C 16.769 6.977 16.506 6.975 16.244 6.972 C 16.223 6.972 16.202 6.972 16.177 6.972 C 16.177 6.584 16.177 6.2 16.177 5.806 C 16.218 5.805 16.26 5.805 16.31 5.804 Z"
android:strokeColor="#00000000" />
</group>
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ This file is part of AndroidIDE.
~
~ AndroidIDE is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ AndroidIDE is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="vector"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group
android:scaleX="0.7"
android:scaleY="0.7"
android:pivotX="12"
android:pivotY="12">
<group
android:name="android"
android:pivotX="12"
android:pivotY="12">
<path
android:name="android_path"
android:fillColor="@color/md_theme_dark_onBackground"
android:pathData="M 16.622 12.991 C 16.694 13.132 16.768 13.266 16.832 13.405 C 16.886 13.521 16.93 13.641 16.976 13.76 C 17.01 13.849 17.044 13.939 17.07 14.03 C 17.119 14.202 17.176 14.373 17.2 14.552 C 17.215 14.664 17.244 14.774 17.261 14.886 C 17.275 14.978 17.282 15.071 17.293 15.163 C 17.243 15.178 6.875 15.184 6.758 15.169 C 6.836 14.305 7.097 13.505 7.566 12.773 C 8.038 12.037 8.661 11.46 9.428 11.03 C 9.395 10.971 9.366 10.915 9.334 10.86 C 9.22 10.662 9.106 10.464 8.991 10.266 C 8.859 10.038 8.725 9.811 8.595 9.582 C 8.567 9.533 8.544 9.482 8.546 9.421 C 8.549 9.315 8.618 9.261 8.689 9.242 C 8.778 9.218 8.858 9.259 8.903 9.336 C 8.965 9.445 9.031 9.553 9.094 9.661 C 9.267 9.957 9.439 10.254 9.612 10.55 C 9.669 10.649 9.726 10.748 9.787 10.853 C 9.857 10.824 9.926 10.795 9.995 10.767 C 10.25 10.663 10.513 10.58 10.782 10.521 C 10.943 10.486 11.107 10.457 11.271 10.434 C 11.485 10.403 11.699 10.388 11.915 10.39 C 12.106 10.392 12.298 10.391 12.489 10.396 C 12.552 10.398 12.615 10.413 12.678 10.421 C 12.746 10.429 12.814 10.435 12.882 10.446 C 12.967 10.459 13.052 10.473 13.136 10.493 C 13.303 10.532 13.471 10.573 13.637 10.618 C 13.708 10.636 13.776 10.663 13.844 10.688 C 13.985 10.742 14.124 10.797 14.269 10.853 C 14.278 10.843 14.289 10.832 14.297 10.819 C 14.422 10.606 14.546 10.392 14.671 10.179 C 14.773 10.005 14.878 9.833 14.981 9.659 C 15.043 9.552 15.105 9.445 15.166 9.338 C 15.219 9.247 15.317 9.216 15.407 9.261 C 15.498 9.306 15.545 9.416 15.503 9.504 C 15.461 9.593 15.412 9.678 15.363 9.763 C 15.275 9.916 15.186 10.068 15.097 10.22 C 14.988 10.405 14.878 10.59 14.77 10.776 C 14.722 10.859 14.677 10.943 14.628 11.033 C 14.66 11.053 14.691 11.075 14.725 11.093 C 14.909 11.195 15.083 11.313 15.251 11.44 C 15.359 11.521 15.463 11.609 15.563 11.7 C 15.673 11.798 15.778 11.901 15.883 12.005 C 16.022 12.142 16.143 12.295 16.262 12.449 C 16.394 12.62 16.509 12.802 16.622 12.991 Z M 14.434 13.661 C 14.589 13.659 14.714 13.597 14.801 13.471 C 14.845 13.407 14.877 13.335 14.88 13.255 C 14.884 13.138 14.837 13.041 14.761 12.958 C 14.654 12.84 14.516 12.795 14.362 12.824 C 14.255 12.844 14.16 12.904 14.098 12.997 C 14.034 13.09 13.996 13.194 14.025 13.312 C 14.043 13.385 14.073 13.451 14.124 13.509 C 14.204 13.6 14.304 13.647 14.434 13.661 Z M 9.199 13.133 C 9.174 13.19 9.174 13.253 9.189 13.308 C 9.235 13.487 9.337 13.612 9.553 13.654 C 9.773 13.696 10.013 13.522 10.034 13.275 C 10.047 13.115 9.986 12.985 9.851 12.893 C 9.661 12.762 9.416 12.805 9.276 12.985 C 9.245 13.025 9.226 13.076 9.199 13.133 Z"
android:strokeColor="#00000000" />
</group>
<group
android:name="lbrace"
android:pivotX="12"
android:pivotY="12">
<path
android:name="lbrace_path"
android:fillColor="@color/md_theme_dark_onBackground"
android:pathData="M 5.915 10.326 C 5.921 10.528 5.936 10.724 5.931 10.92 C 5.922 11.313 5.817 11.678 5.58 11.998 C 5.331 12.332 4.995 12.531 4.593 12.625 C 4.571 12.63 4.549 12.635 4.526 12.641 C 4.631 12.674 4.737 12.699 4.836 12.738 C 5.37 12.95 5.705 13.341 5.86 13.89 C 5.936 14.158 5.943 14.431 5.929 14.706 C 5.921 14.88 5.911 15.054 5.9 15.229 C 5.89 15.401 5.876 15.572 5.864 15.744 C 5.857 15.854 5.852 15.964 5.845 16.075 C 5.838 16.215 5.83 16.355 5.822 16.494 C 5.811 16.68 5.806 16.867 5.788 17.052 C 5.774 17.196 5.787 17.336 5.815 17.476 C 5.885 17.823 6.093 18.055 6.413 18.192 C 6.618 18.28 6.835 18.318 7.058 18.321 C 7.305 18.324 7.552 18.327 7.798 18.331 C 7.805 18.331 7.812 18.332 7.823 18.334 C 7.823 18.719 7.823 19.103 7.823 19.494 C 7.803 19.496 7.784 19.499 7.764 19.499 C 7.549 19.499 7.335 19.501 7.12 19.498 C 6.748 19.494 6.382 19.453 6.025 19.343 C 5.707 19.245 5.412 19.1 5.161 18.88 C 4.803 18.568 4.584 18.175 4.5 17.706 C 4.463 17.496 4.458 17.285 4.465 17.074 C 4.474 16.847 4.492 16.62 4.506 16.393 C 4.515 16.241 4.524 16.09 4.534 15.939 C 4.547 15.737 4.562 15.535 4.574 15.334 C 4.585 15.159 4.589 14.984 4.604 14.81 C 4.619 14.628 4.622 14.447 4.611 14.265 C 4.599 14.083 4.563 13.905 4.484 13.739 C 4.393 13.547 4.242 13.424 4.044 13.354 C 3.858 13.289 3.667 13.255 3.471 13.245 C 2.86 13.216 2.248 13.238 1.637 13.231 C 1.612 13.231 1.587 13.231 1.558 13.231 C 1.558 12.843 1.558 12.46 1.558 12.07 C 1.581 12.069 1.605 12.067 1.629 12.067 C 2.155 12.067 2.682 12.07 3.208 12.065 C 3.445 12.063 3.682 12.048 3.912 11.985 C 3.976 11.968 4.039 11.946 4.101 11.921 C 4.311 11.838 4.445 11.683 4.521 11.472 C 4.583 11.299 4.612 11.121 4.616 10.938 C 4.619 10.814 4.617 10.689 4.611 10.564 C 4.601 10.363 4.585 10.161 4.573 9.959 C 4.562 9.785 4.554 9.611 4.542 9.436 C 4.531 9.262 4.518 9.088 4.506 8.914 C 4.499 8.799 4.493 8.684 4.487 8.57 C 4.479 8.4 4.468 8.23 4.465 8.06 C 4.455 7.534 4.59 7.054 4.934 6.645 C 5.147 6.392 5.41 6.206 5.712 6.073 C 6.011 5.942 6.324 5.865 6.649 5.83 C 6.821 5.812 6.992 5.803 7.165 5.804 C 7.361 5.804 7.558 5.804 7.754 5.804 C 7.776 5.804 7.799 5.804 7.824 5.804 C 7.824 6.195 7.824 6.58 7.824 6.969 C 7.802 6.97 7.782 6.972 7.762 6.972 C 7.542 6.972 7.323 6.969 7.104 6.973 C 6.903 6.977 6.705 7.001 6.514 7.068 C 6.319 7.135 6.145 7.235 6.012 7.397 C 5.869 7.57 5.811 7.774 5.788 7.995 C 5.774 8.133 5.79 8.27 5.796 8.408 C 5.804 8.612 5.822 8.815 5.835 9.019 C 5.846 9.194 5.853 9.368 5.864 9.543 C 5.876 9.744 5.89 9.946 5.903 10.148 C 5.907 10.205 5.911 10.262 5.915 10.326 Z"
android:strokeColor="#00000000" />
</group>
<group
android:name="rbrace"
android:pivotX="12"
android:pivotY="12">
<path
android:name="rbrace_path"
android:fillColor="@color/md_theme_dark_onBackground"
android:pathData="M 16.31 5.804 C 16.529 5.804 16.742 5.802 16.954 5.804 C 17.375 5.808 17.788 5.866 18.186 6.009 C 18.464 6.108 18.723 6.244 18.945 6.439 C 19.294 6.745 19.517 7.125 19.597 7.586 C 19.635 7.803 19.643 8.021 19.632 8.24 C 19.625 8.386 19.614 8.533 19.605 8.68 C 19.591 8.902 19.577 9.125 19.563 9.347 C 19.554 9.492 19.545 9.636 19.536 9.781 C 19.522 10.003 19.508 10.225 19.494 10.448 C 19.487 10.555 19.472 10.663 19.473 10.771 C 19.474 11.031 19.492 11.29 19.601 11.533 C 19.689 11.733 19.839 11.861 20.042 11.935 C 20.203 11.994 20.369 12.026 20.539 12.043 C 20.759 12.065 20.98 12.068 21.201 12.067 C 21.654 12.066 22.106 12.067 22.559 12.067 C 22.58 12.067 22.6 12.067 22.626 12.067 C 22.626 12.453 22.626 12.838 22.626 13.231 C 22.603 13.231 22.578 13.231 22.554 13.231 C 22.136 13.231 21.718 13.231 21.3 13.231 C 21.122 13.231 20.944 13.229 20.767 13.237 C 20.509 13.249 20.254 13.279 20.011 13.375 C 19.79 13.463 19.649 13.623 19.57 13.842 C 19.511 14.003 19.49 14.171 19.478 14.341 C 19.467 14.487 19.481 14.631 19.486 14.775 C 19.492 14.943 19.51 15.11 19.521 15.277 C 19.529 15.392 19.534 15.506 19.541 15.621 C 19.549 15.759 19.557 15.896 19.566 16.034 C 19.576 16.204 19.585 16.374 19.596 16.543 C 19.607 16.713 19.623 16.882 19.632 17.052 C 19.655 17.452 19.611 17.843 19.438 18.21 C 19.353 18.39 19.241 18.554 19.105 18.7 C 18.837 18.989 18.509 19.18 18.138 19.306 C 17.887 19.391 17.629 19.443 17.365 19.472 C 17.166 19.493 16.966 19.498 16.765 19.499 C 16.592 19.499 16.419 19.499 16.246 19.499 C 16.223 19.499 16.201 19.499 16.176 19.499 C 16.176 19.107 16.176 18.722 16.176 18.333 C 16.201 18.332 16.223 18.33 16.246 18.33 C 16.375 18.33 16.504 18.333 16.633 18.33 C 16.815 18.324 16.997 18.324 17.178 18.304 C 17.456 18.274 17.717 18.191 17.937 18.005 C 18.108 17.861 18.204 17.674 18.248 17.458 C 18.279 17.304 18.282 17.148 18.267 16.991 C 18.256 16.882 18.253 16.771 18.247 16.661 C 18.239 16.526 18.231 16.39 18.223 16.255 C 18.213 16.078 18.203 15.901 18.191 15.725 C 18.18 15.56 18.166 15.395 18.155 15.23 C 18.147 15.102 18.141 14.973 18.136 14.844 C 18.131 14.695 18.12 14.545 18.124 14.396 C 18.134 13.965 18.256 13.571 18.539 13.237 C 18.754 12.982 19.022 12.806 19.34 12.707 C 19.414 12.684 19.49 12.666 19.572 12.643 C 19.501 12.624 19.435 12.607 19.369 12.589 C 19.13 12.522 18.915 12.411 18.726 12.251 C 18.426 11.995 18.247 11.667 18.165 11.284 C 18.117 11.061 18.117 10.835 18.124 10.61 C 18.13 10.435 18.143 10.261 18.155 10.087 C 18.166 9.919 18.18 9.752 18.191 9.585 C 18.199 9.47 18.203 9.355 18.21 9.241 C 18.222 9.062 18.235 8.883 18.247 8.705 C 18.254 8.588 18.26 8.47 18.265 8.353 C 18.27 8.252 18.277 8.151 18.274 8.05 C 18.267 7.866 18.226 7.69 18.135 7.528 C 18.035 7.351 17.885 7.228 17.705 7.141 C 17.493 7.039 17.267 6.987 17.032 6.982 C 16.769 6.977 16.506 6.975 16.244 6.972 C 16.223 6.972 16.202 6.972 16.177 6.972 C 16.177 6.584 16.177 6.2 16.177 5.806 C 16.218 5.805 16.26 5.805 16.31 5.804 Z"
android:strokeColor="#00000000" />
</group>
</group>
</vector>
</aapt:attr>
<target android:name="android">
<aapt:attr name="android:animation">
<set>
<objectAnimator
android:duration="400"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="scaleX"
android:startOffset="100"
android:valueFrom="0"
android:valueTo="0.7"
android:valueType="floatType" />
<objectAnimator
android:duration="352"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="scaleY"
android:startOffset="148"
android:valueFrom="0"
android:valueTo="0.7"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
<target android:name="lbrace">
<aapt:attr name="android:animation">
<set>
<objectAnimator
android:duration="454"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="scaleY"
android:startOffset="46"
android:valueFrom="0"
android:valueTo="0.7"
android:valueType="floatType" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="scaleX"
android:valueFrom="0"
android:valueTo="0.7"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
<target android:name="rbrace">
<aapt:attr name="android:animation">
<set>
<objectAnimator
android:duration="454"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="scaleY"
android:startOffset="46"
android:valueFrom="0"
android:valueTo="0.7"
android:valueType="floatType" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/fast_out_slow_in"
android:propertyName="scaleX"
android:valueFrom="0"
android:valueTo="0.7"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
</animated-vector>
+1 -1
View File
@@ -5,7 +5,7 @@
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#ffffff"
android:fillColor="@color/primaryIconColor"
android:pathData="M18,16.08C17.24,16.08 16.56,16.38 16.04,16.85L8.91,12.7C8.96,12.47 9,12.24 9,12S8.96,11.53 8.91,11.3L15.96,7.19C16.5,7.69 17.21,8 18,8C19.66,8 21,6.66 21,5S19.66,2 18,2 15,3.34 15,5C15,5.24 15.04,5.47 15.09,5.7L8.04,9.81C7.5,9.31 6.79,9 6,9C4.34,9 3,10.34 3,12S4.34,15 6,15C6.79,15 7.5,14.69 8.04,14.19L15.16,18.34C15.11,18.55 15.08,18.77 15.08,19C15.08,20.61 16.39,21.91 18,21.91S20.92,20.61 20.92,19C20.92,17.39 19.61,16.08 18,16.08M18,4C18.55,4 19,4.45 19,5S18.55,6 18,6 17,5.55 17,5 17.45,4 18,4M6,13C5.45,13 5,12.55 5,12S5.45,11 6,11 7,11.45 7,12 6.55,13 6,13M18,20C17.45,20 17,19.55 17,19S17.45,18 18,18 19,18.45 19,19 18.55,20 18,20Z" />
</vector>
@@ -17,5 +17,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android:width="1.5dp" />
<solid android:color="?attr/colorAccent" />
<solid android:color="?attr/colorPrimary" />
</shape>
@@ -20,5 +20,4 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false"
android:focusable="false"
app:trackTint="@color/material_switch_track_tint" />
android:focusable="false"/>
+59
View File
@@ -0,0 +1,59 @@
<resources><!--
~ This file is part of AndroidIDE.
~
~ AndroidIDE is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ AndroidIDE is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<style name="Theme.AndroidIDE.Material" parent="Theme.Material3.Dark.NoActionBar">
<item name="colorPrimary">@color/md_theme_dark_primary</item>
<item name="colorPrimaryDark">@color/md_theme_dark_background</item>
<item name="colorOnPrimary">@color/md_theme_dark_onPrimary</item>
<item name="colorPrimaryContainer">@color/md_theme_dark_primaryContainer</item>
<item name="colorOnPrimaryContainer">@color/md_theme_dark_onPrimaryContainer</item>
<item name="colorSecondary">@color/md_theme_dark_secondary</item>
<item name="colorOnSecondary">@color/md_theme_dark_onSecondary</item>
<item name="colorSecondaryContainer">@color/md_theme_dark_secondaryContainer</item>
<item name="colorOnSecondaryContainer">@color/md_theme_dark_onSecondaryContainer</item>
<item name="colorTertiary">@color/md_theme_dark_tertiary</item>
<item name="colorOnTertiary">@color/md_theme_dark_onTertiary</item>
<item name="colorTertiaryContainer">@color/md_theme_dark_tertiaryContainer</item>
<item name="colorOnTertiaryContainer">@color/md_theme_dark_onTertiaryContainer</item>
<item name="colorError">@color/md_theme_dark_error</item>
<item name="colorErrorContainer">@color/md_theme_dark_errorContainer</item>
<item name="colorOnError">@color/md_theme_dark_onError</item>
<item name="colorOnErrorContainer">@color/md_theme_dark_onErrorContainer</item>
<item name="android:colorBackground">@color/md_theme_dark_background</item>
<item name="colorOnBackground">@color/md_theme_dark_onBackground</item>
<item name="colorSurface">@color/md_theme_dark_surface</item>
<item name="colorOnSurface">@color/md_theme_dark_onSurface</item>
<item name="colorSurfaceVariant">@color/md_theme_dark_surfaceVariant</item>
<item name="colorOnSurfaceVariant">@color/md_theme_dark_onSurfaceVariant</item>
<item name="colorOutline">@color/md_theme_dark_outline</item>
<item name="colorOnSurfaceInverse">@color/md_theme_dark_inverseOnSurface</item>
<item name="colorSurfaceInverse">@color/md_theme_dark_inverseSurface</item>
<item name="colorPrimaryInverse">@color/md_theme_dark_inversePrimary</item>
</style>
<style name="Theme.AndroidIDE" parent="Theme.AndroidIDE.Styled">
<item name="android:navigationBarColor">?attr/colorPrimaryContainer</item>
<item name="android:windowLightStatusBar">false</item>
</style>
<style name="AppTheme.Splash" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/md_theme_dark_background</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_launcher_animated_dark</item>
<item name="windowSplashScreenAnimationDuration">200</item>
<item name="postSplashScreenTheme">@style/Theme.AndroidIDE</item>
</style>
</resources>
+85 -31
View File
@@ -1,35 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primaryColor">#121212</color>
<color name="primaryColor_translucent">#90121212</color>
<color name="primaryLightColor">#373737</color>
<color name="primaryDarkColor">#010101</color>
<color name="secondaryColor">#ff5252</color>
<color name="secondaryLightColor">#ff867f</color>
<color name="secondaryLightColor_transparent">#1FFF867F</color>
<color name="secondaryIconColor">@color/secondaryColor</color>
<color name="secondaryDarkColor">#c50e29</color>
<color name="primaryTextColor">#ffffff</color>
<color name="primaryTextColorLight">#bdbdbd</color>
<color name="secondaryTextColor">#70ffffff</color>
<color name="secondaryTextColor_light">#50ffffff</color>
<color name="primaryIconColor">#ffffff</color>
<color name="surfaceColor">#323232</color>
<color name="completionList_background">#373737</color>
<color name="completionList_backgroundSelected">#505050</color>
<color name="symbolInput_background">#000000</color>
<color name="symbolInput_text">@color/primaryTextColor</color>
<color name="tabAction_background">#ffffff</color>
<color name="tabAction_text">@color/primaryLightColor</color>
<color name="tabAction_icon">#000000</color>
<color name="rippleHighlightColor">#85121212</color>
<color name="log_warning">#FF7043</color>
<color name="diagnostic_error">@color/secondaryDarkColor</color>
<color name="diagnostic_warning">@color/log_warning</color>
<color name="content_background">#212121</color>
<color name="bg_widget_selected">#212121</color>
<color name="green_500">#4caf50</color>
<color name="color_toast_background">#90424242</color>
<color name="color_picker_default_color">#f44336</color>
<color name="seed">#ff5252</color>
<color name="md_theme_light_primary">#B81D27</color>
<color name="md_theme_light_onPrimary">#FFFFFF</color>
<color name="md_theme_light_primaryContainer">#FFDAD7</color>
<color name="md_theme_light_onPrimaryContainer">#410004</color>
<color name="md_theme_light_secondary">#775654</color>
<color name="md_theme_light_onSecondary">#FFFFFF</color>
<color name="md_theme_light_secondaryContainer">#FFDAD7</color>
<color name="md_theme_light_onSecondaryContainer">#2C1514</color>
<color name="md_theme_light_tertiary">#735B2E</color>
<color name="md_theme_light_onTertiary">#FFFFFF</color>
<color name="md_theme_light_tertiaryContainer">#FFDEA7</color>
<color name="md_theme_light_onTertiaryContainer">#271900</color>
<color name="md_theme_light_error">#BA1A1A</color>
<color name="md_theme_light_errorContainer">#FFDAD6</color>
<color name="md_theme_light_onError">#FFFFFF</color>
<color name="md_theme_light_onErrorContainer">#410002</color>
<color name="md_theme_light_background">#FFFBFF</color>
<color name="md_theme_light_onBackground">#201A1A</color>
<color name="md_theme_light_surface">#FFFBFF</color>
<color name="md_theme_light_onSurface">#201A1A</color>
<color name="md_theme_light_surfaceVariant">#F5DDDB</color>
<color name="md_theme_light_onSurfaceVariant">#534342</color>
<color name="md_theme_light_outline">#857371</color>
<color name="md_theme_light_inverseOnSurface">#FBEEEC</color>
<color name="md_theme_light_inverseSurface">#362F2E</color>
<color name="md_theme_light_inversePrimary">#FFB3AE</color>
<color name="md_theme_light_shadow">#000000</color>
<color name="md_theme_light_surfaceTint">#B81D27</color>
<color name="md_theme_light_outlineVariant">#D8C2C0</color>
<color name="md_theme_light_scrim">#000000</color>
<color name="md_theme_dark_primary">#FFB3AE</color>
<color name="md_theme_dark_onPrimary">#68000C</color>
<color name="md_theme_dark_primaryContainer">#930015</color>
<color name="md_theme_dark_onPrimaryContainer">#FFDAD7</color>
<color name="md_theme_dark_secondary">#E7BDB9</color>
<color name="md_theme_dark_onSecondary">#442928</color>
<color name="md_theme_dark_secondaryContainer">#5D3F3D</color>
<color name="md_theme_dark_onSecondaryContainer">#FFDAD7</color>
<color name="md_theme_dark_tertiary">#E2C28C</color>
<color name="md_theme_dark_onTertiary">#402D04</color>
<color name="md_theme_dark_tertiaryContainer">#594319</color>
<color name="md_theme_dark_onTertiaryContainer">#FFDEA7</color>
<color name="md_theme_dark_error">#FFB4AB</color>
<color name="md_theme_dark_errorContainer">#93000A</color>
<color name="md_theme_dark_onError">#690005</color>
<color name="md_theme_dark_onErrorContainer">#FFDAD6</color>
<color name="md_theme_dark_background">#201A1A</color>
<color name="md_theme_dark_onBackground">#EDE0DE</color>
<color name="md_theme_dark_surface">#201A1A</color>
<color name="md_theme_dark_onSurface">#EDE0DE</color>
<color name="md_theme_dark_surfaceVariant">#534342</color>
<color name="md_theme_dark_onSurfaceVariant">#D8C2C0</color>
<color name="md_theme_dark_outline">#A08C8B</color>
<color name="md_theme_dark_inverseOnSurface">#201A1A</color>
<color name="md_theme_dark_inverseSurface">#EDE0DE</color>
<color name="md_theme_dark_inversePrimary">#B81D27</color>
<color name="md_theme_dark_shadow">#000000</color>
<color name="md_theme_dark_surfaceTint">#FFB3AE</color>
<color name="md_theme_dark_outlineVariant">#534342</color>
<color name="md_theme_dark_scrim">#000000</color>
<color name="primaryColor">#121212</color>
<color name="primaryTextColor">#ffffff</color>
<color name="primaryIconColor">#ffffff</color>
<color name="completionList_background">?attr/colorPrimaryContainer</color>
<color name="completionList_backgroundSelected">?attr/colorPrimaryVariant</color>
<color name="rippleHighlightColor">#85121212</color>
<color name="log_warning">#FF7043</color>
<color name="diagnostic_error">#f44336</color>
<color name="diagnostic_warning">@color/log_warning</color>
<color name="content_background">#212121</color>
<color name="green_500">#4caf50</color>
<color name="tabAction_background">?attr/colorPrimaryContainer</color>
<color name="tabAction_text">?attr/colorOnPrimaryContainer</color>
<color name="tabAction_icon">?attr/colorPrimary</color>
<color name="color_toast_background">#90424242</color>
<color name="color_picker_default_color">#f44336</color>
</resources>
+41 -107
View File
@@ -15,97 +15,77 @@
~ along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
-->
<style name="Theme.AndroidIDE.Base" parent="Theme.Material3.Dark.NoActionBar">
<style name="Theme.AndroidIDE.Material" parent="Theme.Material3.Light.NoActionBar">
<item name="colorPrimary">@color/md_theme_light_primary</item>
<item name="colorPrimaryDark">@color/md_theme_light_background</item>
<item name="colorOnPrimary">@color/md_theme_light_onPrimary</item>
<item name="colorPrimaryContainer">@color/md_theme_light_primaryContainer</item>
<item name="colorOnPrimaryContainer">@color/md_theme_light_onPrimaryContainer</item>
<item name="colorSecondary">@color/md_theme_light_secondary</item>
<item name="colorOnSecondary">@color/md_theme_light_onSecondary</item>
<item name="colorSecondaryContainer">@color/md_theme_light_secondaryContainer</item>
<item name="colorOnSecondaryContainer">@color/md_theme_light_onSecondaryContainer</item>
<item name="colorTertiary">@color/md_theme_light_tertiary</item>
<item name="colorOnTertiary">@color/md_theme_light_onTertiary</item>
<item name="colorTertiaryContainer">@color/md_theme_light_tertiaryContainer</item>
<item name="colorOnTertiaryContainer">@color/md_theme_light_onTertiaryContainer</item>
<item name="colorError">@color/md_theme_light_error</item>
<item name="colorErrorContainer">@color/md_theme_light_errorContainer</item>
<item name="colorOnError">@color/md_theme_light_onError</item>
<item name="colorOnErrorContainer">@color/md_theme_light_onErrorContainer</item>
<item name="android:colorBackground">@color/md_theme_light_background</item>
<item name="colorOnBackground">@color/md_theme_light_onBackground</item>
<item name="colorSurface">@color/md_theme_light_surface</item>
<item name="colorOnSurface">@color/md_theme_light_onSurface</item>
<item name="colorSurfaceVariant">@color/md_theme_light_surfaceVariant</item>
<item name="colorOnSurfaceVariant">@color/md_theme_light_onSurfaceVariant</item>
<item name="colorOutline">@color/md_theme_light_outline</item>
<item name="colorOnSurfaceInverse">@color/md_theme_light_inverseOnSurface</item>
<item name="colorSurfaceInverse">@color/md_theme_light_inverseSurface</item>
<item name="colorPrimaryInverse">@color/md_theme_light_inversePrimary</item>
</style>
<style name="Theme.AndroidIDE.Base" parent="Theme.AndroidIDE.Material">
<!-- Colors -->
<item name="colorPrimary">@color/primaryColor</item>
<item name="colorPrimaryDark">@color/primaryDarkColor</item>
<item name="colorOnPrimary">@color/secondaryDarkColor</item>
<item name="colorPrimaryContainer">@color/secondaryColor</item>
<item name="colorAccent">@color/secondaryColor</item>
<item name="colorSurface">@color/surfaceColor</item>
<item name="colorButtonNormal">@color/secondaryColor</item>
<item name="colorControlNormal">@color/secondaryColor</item>
<item name="colorControlHighlight">@color/rippleHighlightColor</item>
<item name="hintTextColor">@color/secondaryColor</item>
<item name="android:textColorLink">@color/secondaryColor</item>
<item name="android:colorButtonNormal">@color/secondaryColor</item>
<item name="android:textColorSecondary">@color/secondaryTextColor</item>
<item name="android:textCursorDrawable">@drawable/textfield_cursor</item>
<!-- Font -->
<item name="fontFamily">@font/josefin_sans</item>
<item name="android:fontFamily">@font/josefin_sans</item>
<!-- Window configuration -->
<item name="android:windowBackground">@color/content_background</item>
<item name="windowActionModeOverlay">true</item>
<item name="windowActionBarOverlay">true</item>
</style>
<style name="Theme.AndroidIDE.Styled" parent="Theme.AndroidIDE.Base">
<item name="checkboxStyle">@style/AppTheme.CheckBox</item>
<item name="actionOverflowButtonStyle">@style/AppTheme.Toolbar.OverflowButton</item>
<item name="chipStyle">@style/AppTheme.UIDesigner.WidgetGroupChip</item>
<item name="switchPreferenceStyle">@style/AppTheme.SwitchPreference</item>
<item name="shapeAppearanceLargeComponent">@style/AppTheme.ShapeOverlay.Large</item>
<item name="textAppearanceBodySmall">@style/TextAppearance.AndroidIDE.BodySmall</item>
</style>
<style name="Theme.AndroidIDE" parent="Theme.AndroidIDE.Styled" />
<style name="Theme.AndroidIDE" parent="Theme.AndroidIDE.Styled">
<item name="android:navigationBarColor">?attr/colorPrimaryContainer</item>
<item name="android:windowLightStatusBar">true</item>
</style>
<style name="TextAppearance.AndroidIDE.BodySmall" parent="TextAppearance.Material3.BodySmall">
<item name="android:textColor">@color/material_on_background_disabled</item>
</style>
<style name="AppTheme.Splash" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/primaryColor</item>
<item name="windowSplashScreenBackground">@color/md_theme_light_background</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_launcher_animated</item>
<item name="windowSplashScreenAnimationDuration">200</item>
<item name="postSplashScreenTheme">@style/Theme.AndroidIDE</item>
<item name="android:statusBarColor">@color/primaryColor</item>
<item name="android:navigationBarColor">@color/primaryColor</item>
<item name="android:windowLightStatusBar">false</item>
</style>
<style name="AppTheme.SwitchPreference" parent="Preference.SwitchPreference.Material">
<item name="android:widgetLayout">@layout/preference_widget_materialswitch</item>
</style>
<style name="AppTheme.CheckBox" parent="Widget.Material3.CompoundButton.CheckBox">
<item name="buttonTint">@color/secondaryColor</item>
</style>
<style name="AppTheme.Button" parent="Widget.Material3.Button">
<item name="backgroundTint">@color/bg_button</item>
<item name="rippleColor">@color/secondaryLightColor_transparent</item>
<item name="android:textAppearance">@style/TextAppearance.MaterialComponents.Button</item>
<item name="android:textColor">@color/primaryTextColor</item>
</style>
<style name="AppTheme.ProgressIndicator" parent="Widget.Material3.LinearProgressIndicator">
<item name="indicatorColor">@color/secondaryColor</item>
</style>
<style name="AppTheme.UIDesigner.WidgetGroupChip" parent="Widget.Material3.Chip.Filter">
<item name="chipIconTint">@color/primaryIconColor</item>
<item name="chipBackgroundColor">@color/primaryColor</item>
<item name="chipStrokeColor">@color/secondaryColor</item>
<item name="chipStrokeWidth">1dp</item>
</style>
<style name="AppTheme.Toolbar.OverflowButton" parent="@style/Widget.AppCompat.ActionButton.Overflow">
<item name="android:tint">@color/secondaryColor</item>
</style>
<style name="AppTheme.MaterialToggleButton" parent="">
<item name="colorPrimary">@color/secondaryColor</item>
</style>
<style name="AppTheme.TabLayout" parent="Widget.Material3.TabLayout">
<item name="tabIndicatorAnimationMode">elastic</item>
<item name="tabIndicatorColor">@color/secondaryColor</item>
<item name="tabIndicatorFullWidth">false</item>
<item name="tabIndicatorGravity">bottom</item>
<item name="tabIndicatorHeight">3dp</item>
<item name="tabMode">scrollable</item>
<item name="tabSelectedTextColor">@color/secondaryColor</item>
<item name="tabTextAppearance">@style/AppTheme.TabLayout.Title</item>
<item name="tabTextColor">@color/secondaryTextColor_light</item>
</style>
<style name="AppTheme.TabLayout.Title" parent="TextAppearance.Design.Tab">
@@ -113,13 +93,6 @@
<item name="android:textAllCaps">false</item>
</style>
<style name="AppTheme.TextInputLayout" parent="">
<item name="colorPrimary">@color/secondaryColor</item>
<item name="boxStrokeColor">@color/textfield_stroke_color</item>
<item name="android:textColorHint">@color/textfield_label_color</item>
<item name="hintTextColor">@color/textfield_label_color</item>
</style>
<style name="AppTheme.ShapeOverlay.Large" parent="">
<item name="cornerFamily">rounded</item>
<item name="cornerSizeTopRight">16dp</item>
@@ -133,19 +106,9 @@
<item name="cornerSize">25dp</item>
</style>
<style name="AppTheme.BottomSheetDialog" parent="Theme.Material3.Dark.BottomSheetDialog">
<item name="android:windowIsFloating">false</item>
<item name="android:windowLightStatusBar">false</item>
</style>
<!-- Alert Dialog -->
<style name="AppTheme.MaterialAlertDialog" parent="@style/ThemeOverlay.Material3.MaterialAlertDialog">
<item name="shapeAppearanceOverlay">@style/MaterialDialog.ShapeAppearance</item>
<item name="materialAlertDialogTitleTextStyle">@style/MaterialDialog.Title.Text</item>
<item name="materialAlertDialogBodyTextStyle">@style/MaterialDialog.Body.Text</item>
<item name="buttonBarPositiveButtonStyle">@style/MaterialAlertDialog.PositiveButtonStyle</item>
<item name="buttonBarNegativeButtonStyle">@style/MaterialAlertDialog.NegativeButtonStyle</item>
<item name="buttonBarNeutralButtonStyle">@style/MaterialAlertDialog.NeutralButtonStyle</item>
<item name="android:windowEnterAnimation">@animator/dialog_in</item>
<item name="android:windowExitAnimation">@animator/dialog_out</item>
</style>
@@ -154,35 +117,6 @@
<item name="cornerSize">28dp</item>
</style>
<style name="MaterialDialog.Title.Text" parent="@style/MaterialAlertDialog.Material3.Title.Text">
<item name="android:textColor">@color/primaryTextColor</item>
<item name="android:textStyle">bold</item>
<item name="fontFamily">@font/josefin_sans</item>
</style>
<style name="MaterialDialog.Body.Text" parent="@style/MaterialAlertDialog.Material3.Body.Text">
<item name="android:textColor">@color/primaryTextColor</item>
<item name="fontFamily">@font/josefin_sans</item>
</style>
<style name="MaterialAlertDialog.PositiveButtonStyle" parent="@style/Widget.Material3.Button.TextButton.Dialog">
<item name="android:textColor">@color/secondaryColor</item>
<item name="backgroundTint">@android:color/transparent</item>
<item name="fontFamily">@font/josefin_sans</item>
</style>
<style name="MaterialAlertDialog.NegativeButtonStyle" parent="@style/Widget.Material3.Button.TextButton.Dialog">
<item name="android:textColor">@color/secondaryColor</item>
<item name="backgroundTint">@android:color/transparent</item>
<item name="fontFamily">@font/josefin_sans</item>
</style>
<style name="MaterialAlertDialog.NeutralButtonStyle" parent="@style/Widget.Material3.Button.TextButton.Dialog">
<item name="android:textColor">@color/secondaryColor</item>
<item name="backgroundTint">@android:color/transparent</item>
<item name="fontFamily">@font/josefin_sans</item>
</style>
<style name="PopupAnimation">
<item name="android:windowEnterAnimation">@anim/popup_in</item>
<item name="android:windowExitAnimation">@anim/popup_out</item>
Binary file not shown.
@@ -21,10 +21,10 @@ import android.content.Context
import android.graphics.PorterDuff.Mode.SRC_ATOP
import android.graphics.PorterDuffColorFilter
import android.graphics.drawable.Drawable
import androidx.core.content.ContextCompat.getColor
import androidx.core.content.ContextCompat.getDrawable
import com.itsaky.androidide.uidesigner.R
import com.itsaky.androidide.uidesigner.drawable.UiViewLayeredForeground
import com.itsaky.androidide.utils.resolveAttr
fun layeredForeground(context: Context, drawable: Drawable): Drawable {
return UiViewLayeredForeground(context, drawable)
@@ -33,7 +33,7 @@ fun layeredForeground(context: Context, drawable: Drawable): Drawable {
@JvmOverloads
fun bgDesignerView(
context: Context,
color: Int = getColor(context, R.color.primaryLightColor)
color: Int = context.resolveAttr(R.attr.colorOutline)
): Drawable? {
return getDrawable(context, R.drawable.bg_designer_view)?.apply {
colorFilter = PorterDuffColorFilter(color, SRC_ATOP)
@@ -32,7 +32,6 @@
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/primaryDarkColor"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$Behavior">
<com.google.android.material.appbar.MaterialToolbar
@@ -58,9 +57,7 @@
android:id="@+id/nav"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:itemIconTint="@color/primaryIconColor"
app:itemTextColor="@color/primaryTextColor">
android:layout_gravity="start">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/widgets_fragment"
@@ -38,8 +38,7 @@
android:id="@+id/workspace"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_designer_view"
android:backgroundTint="@color/primaryLightColor"
android:background="?attr/background"
android:backgroundTintMode="src_atop"
android:orientation="vertical" />
@@ -20,7 +20,6 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/content_background"
android:paddingTop="16dp"
android:paddingBottom="16dp">
@@ -35,7 +34,6 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:tooltipText="@string/title_viewaction_delete"
app:icon="@drawable/ic_delete"
app:iconTint="@color/secondaryIconColor"
app:layout_constraintBottom_toBottomOf="@id/desc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/name" />
@@ -48,7 +46,6 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:tooltipText="@string/msg_viewaction_add_attr"
app:icon="@drawable/ic_add"
app:iconTint="@color/secondaryIconColor"
app:layout_constraintBottom_toBottomOf="@id/btn_delete"
app:layout_constraintEnd_toStartOf="@id/btn_delete"
app:layout_constraintTop_toTopOf="@id/btn_delete" />
@@ -37,6 +37,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
android:textColor="?attr/colorOnSurface"
app:layout_constraintStart_toStartOf="@id/name"
app:layout_constraintTop_toBottomOf="@id/name"
tools:text="android.widget.TextView" />
@@ -45,6 +45,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
android:textColor="?attr/colorOnSurface"
app:layout_constraintEnd_toEndOf="@id/attr_name"
app:layout_constraintStart_toStartOf="@id/attr_name"
app:layout_constraintTop_toBottomOf="@id/attr_name"
@@ -22,10 +22,8 @@ import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.view.View
import android.widget.TextView
import androidx.core.content.ContextCompat
import com.android.aaptcompiler.XmlResource
import com.itsaky.androidide.inflater.R
import java.io.File
import com.itsaky.androidide.utils.resolveAttr
/**
* View used to show views that cannot be inflated.
@@ -43,7 +41,7 @@ private fun createErrView(context: Context, message: String): View {
return TextView(context).apply {
text = message
background = ColorDrawable(Color.WHITE)
setTextColor(ContextCompat.getColor(context, R.color.secondaryColor))
setTextColor(context.resolveAttr(R.attr.colorError))
setTextIsSelectable(true)
}
}