diff --git a/actions/src/main/java/com/itsaky/androidide/actions/internal/DefaultActionsRegistry.kt b/actions/src/main/java/com/itsaky/androidide/actions/internal/DefaultActionsRegistry.kt index 72c204861..c9c3ed075 100644 --- a/actions/src/main/java/com/itsaky/androidide/actions/internal/DefaultActionsRegistry.kt +++ b/actions/src/main/java/com/itsaky/androidide/actions/internal/DefaultActionsRegistry.kt @@ -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> = mutableMapOf() private val listeners = mutableSetOf() - + 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 { diff --git a/app/src/main/java/com/itsaky/androidide/EditorActivity.java b/app/src/main/java/com/itsaky/androidide/EditorActivity.java index 8a73368c0..10df42e1e 100755 --- a/app/src/main/java/com/itsaky/androidide/EditorActivity.java +++ b/app/src/main/java/com/itsaky/androidide/EditorActivity.java @@ -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) -> { diff --git a/app/src/main/java/com/itsaky/androidide/adapters/CompletionListAdapter.kt b/app/src/main/java/com/itsaky/androidide/adapters/CompletionListAdapter.kt index 62c37c071..0b9d6c14e 100755 --- a/app/src/main/java/com/itsaky/androidide/adapters/CompletionListAdapter.kt +++ b/app/src/main/java/com/itsaky/androidide/adapters/CompletionListAdapter.kt @@ -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 ) diff --git a/app/src/main/java/com/itsaky/androidide/adapters/DiagnosticsAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/DiagnosticsAdapter.java index 31b91f897..6afd66abf 100755 --- a/app/src/main/java/com/itsaky/androidide/adapters/DiagnosticsAdapter.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/DiagnosticsAdapter.java @@ -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?>, @@ -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 } diff --git a/app/src/main/java/com/itsaky/androidide/adapters/SymbolInputAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/SymbolInputAdapter.java index ad6bd8cd6..6cba51860 100755 --- a/app/src/main/java/com/itsaky/androidide/adapters/SymbolInputAdapter.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/SymbolInputAdapter.java @@ -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 insertSymbol(symbol.getCommit(), symbol.getOffset())); } diff --git a/app/src/main/java/com/itsaky/androidide/adapters/viewholders/FileTreeViewHolder.java b/app/src/main/java/com/itsaky/androidide/adapters/viewholders/FileTreeViewHolder.java index ef25a0259..e5f66c610 100755 --- a/app/src/main/java/com/itsaky/androidide/adapters/viewholders/FileTreeViewHolder.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/viewholders/FileTreeViewHolder.java @@ -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 { 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 { TransitionManager.beginDelayedTransition(binding.getRoot(), new ChangeImageTransform()); binding.filetreeChevron.setImageResource(chevronIcon); - binding - .filetreeChevron - .getDrawable() - .setColorFilter(getColor(context, R.color.secondaryLightColor), SRC_ATOP); } protected LinearLayout applyPadding( diff --git a/app/src/main/java/com/itsaky/androidide/fragments/BasePreferenceFragment.kt b/app/src/main/java/com/itsaky/androidide/fragments/BasePreferenceFragment.kt index 5c5cf16f7..ceeb71a01 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/BasePreferenceFragment.kt +++ b/app/src/main/java/com/itsaky/androidide/fragments/BasePreferenceFragment.kt @@ -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)) - } - } } diff --git a/app/src/main/java/com/itsaky/androidide/fragments/LogViewFragment.kt b/app/src/main/java/com/itsaky/androidide/fragments/LogViewFragment.kt index 04de5e4bd..582019f8b 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/LogViewFragment.kt +++ b/app/src/main/java/com/itsaky/androidide/fragments/LogViewFragment.kt @@ -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()) } diff --git a/app/src/main/java/com/itsaky/androidide/fragments/NonEditableEditorFragment.java b/app/src/main/java/com/itsaky/androidide/fragments/NonEditableEditorFragment.java index 24cceb72b..8a7c93491 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/NonEditableEditorFragment.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/NonEditableEditorFragment.java @@ -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 diff --git a/app/src/main/java/com/itsaky/androidide/fragments/sheets/ProgressSheet.java b/app/src/main/java/com/itsaky/androidide/fragments/sheets/ProgressSheet.java index 917b4f017..57e577535 100755 --- a/app/src/main/java/com/itsaky/androidide/fragments/sheets/ProgressSheet.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/sheets/ProgressSheet.java @@ -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) { diff --git a/app/src/main/java/com/itsaky/androidide/lsp/IDELanguageClientImpl.java b/app/src/main/java/com/itsaky/androidide/lsp/IDELanguageClientImpl.java index a2ff979ad..2a9fd3dd1 100755 --- a/app/src/main/java/com/itsaky/androidide/lsp/IDELanguageClientImpl.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/IDELanguageClientImpl.java @@ -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"); diff --git a/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/DynamicColorScheme.kt b/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/DynamicColorScheme.kt new file mode 100644 index 000000000..71d21b60e --- /dev/null +++ b/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/DynamicColorScheme.kt @@ -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 . + */ + +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()) + } +} diff --git a/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/SchemeAndroidIDE.java b/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/SchemeAndroidIDE.java old mode 100755 new mode 100644 index 5c26ba387..a6ea606d6 --- a/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/SchemeAndroidIDE.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/SchemeAndroidIDE.java @@ -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); diff --git a/app/src/main/java/com/itsaky/androidide/syntax/highlighters/Highlighter.java b/app/src/main/java/com/itsaky/androidide/syntax/highlighters/Highlighter.java index 6aae2b4a0..9a5506892 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/highlighters/Highlighter.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/highlighters/Highlighter.java @@ -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; } diff --git a/app/src/main/java/com/itsaky/androidide/syntax/highlighters/JavaHighlighter.java b/app/src/main/java/com/itsaky/androidide/syntax/highlighters/JavaHighlighter.java index bd86cf9f3..463b49a94 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/highlighters/JavaHighlighter.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/highlighters/JavaHighlighter.java @@ -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; diff --git a/app/src/main/java/com/itsaky/androidide/utils/TransformUtils.java b/app/src/main/java/com/itsaky/androidide/utils/TransformUtils.java deleted file mode 100755 index 95727fbe3..000000000 --- a/app/src/main/java/com/itsaky/androidide/utils/TransformUtils.java +++ /dev/null @@ -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 . - * - */ -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; - } -} diff --git a/app/src/main/java/com/itsaky/androidide/views/EmptyView.java b/app/src/main/java/com/itsaky/androidide/views/EmptyView.java index 7321fae27..17628350b 100755 --- a/app/src/main/java/com/itsaky/androidide/views/EmptyView.java +++ b/app/src/main/java/com/itsaky/androidide/views/EmptyView.java @@ -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); diff --git a/app/src/main/java/com/itsaky/androidide/views/SymbolInputView.java b/app/src/main/java/com/itsaky/androidide/views/SymbolInputView.java index 4d09ba283..30911da7f 100755 --- a/app/src/main/java/com/itsaky/androidide/views/SymbolInputView.java +++ b/app/src/main/java/com/itsaky/androidide/views/SymbolInputView.java @@ -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; } diff --git a/app/src/main/java/com/itsaky/androidide/views/editor/BaseEditorWindow.java b/app/src/main/java/com/itsaky/androidide/views/editor/BaseEditorWindow.java index 0febde70e..de58700b9 100644 --- a/app/src/main/java/com/itsaky/androidide/views/editor/BaseEditorWindow.java +++ b/app/src/main/java/com/itsaky/androidide/views/editor/BaseEditorWindow.java @@ -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; } diff --git a/app/src/main/java/com/itsaky/androidide/views/editor/CodeEditorView.java b/app/src/main/java/com/itsaky/androidide/views/editor/CodeEditorView.java index 7d3011451..70a1e5ce1 100644 --- a/app/src/main/java/com/itsaky/androidide/views/editor/CodeEditorView.java +++ b/app/src/main/java/com/itsaky/androidide/views/editor/CodeEditorView.java @@ -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); diff --git a/app/src/main/java/com/itsaky/androidide/views/editor/EditorActionsMenu.kt b/app/src/main/java/com/itsaky/androidide/views/editor/EditorActionsMenu.kt index 2d01cfc2a..eb83d3cbc 100644 --- a/app/src/main/java/com/itsaky/androidide/views/editor/EditorActionsMenu.kt +++ b/app/src/main/java/com/itsaky/androidide/views/editor/EditorActionsMenu.kt @@ -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 diff --git a/app/src/main/java/com/itsaky/androidide/views/editor/IDEEditor.java b/app/src/main/java/com/itsaky/androidide/views/editor/IDEEditor.java index 6ac96c2a6..8a67dbd9d 100644 --- a/app/src/main/java/com/itsaky/androidide/views/editor/IDEEditor.java +++ b/app/src/main/java/com/itsaky/androidide/views/editor/IDEEditor.java @@ -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() { diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index 7dadc10e1..23f35f69d 100755 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -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" /> diff --git a/app/src/main/res/layout/activity_editor.xml b/app/src/main/res/layout/activity_editor.xml index f9991e1e0..2eec47af7 100755 --- a/app/src/main/res/layout/activity_editor.xml +++ b/app/src/main/res/layout/activity_editor.xml @@ -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"> @@ -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" /> @@ -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"> @@ -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" /> @@ -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" /> diff --git a/app/src/main/res/layout/activity_preferences.xml b/app/src/main/res/layout/activity_preferences.xml index cf9b9f4e0..8474e1380 100755 --- a/app/src/main/res/layout/activity_preferences.xml +++ b/app/src/main/res/layout/activity_preferences.xml @@ -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"> diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 012be1342..d2d7b2c04 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -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" /> diff --git a/app/src/main/res/layout/layout_about_items.xml b/app/src/main/res/layout/layout_about_items.xml index 8515b491f..119842384 100755 --- a/app/src/main/res/layout/layout_about_items.xml +++ b/app/src/main/res/layout/layout_about_items.xml @@ -32,6 +32,7 @@ android:clickable="true" android:focusable="true" android:scaleType="fitCenter" + app:tint="?attr/colorOnBackground" app:srcCompat="@drawable/ic_github" /> + android:textAppearance="@style/TextAppearance.Material3.TitleLarge" /> + tools:text="Hindi - Akash Yadav" + android:layout_marginBottom="16dp"/> + android:textAppearance="@style/TextAppearance.Material3.BodySmall" + android:textColor="?attr/colorOnBackground" + tools:text="AndroidIDE v2.1.3-beta for arm64-v8a" /> diff --git a/app/src/main/res/layout/layout_banner.xml b/app/src/main/res/layout/layout_banner.xml index 7bd015a80..b3c02f8ec 100755 --- a/app/src/main/res/layout/layout_banner.xml +++ b/app/src/main/res/layout/layout_banner.xml @@ -1,63 +1,59 @@ + + + android:layout_marginStart="16dp" + android:visibility="gone" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@id/contentTextView" /> - + - + - - - + diff --git a/app/src/main/res/layout/layout_bottom_action.xml b/app/src/main/res/layout/layout_bottom_action.xml index e0e6e31ab..e600a7f3e 100644 --- a/app/src/main/res/layout/layout_bottom_action.xml +++ b/app/src/main/res/layout/layout_bottom_action.xml @@ -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" diff --git a/app/src/main/res/layout/layout_code_editor.xml b/app/src/main/res/layout/layout_code_editor.xml index a333fcab8..b3b67f66a 100644 --- a/app/src/main/res/layout/layout_code_editor.xml +++ b/app/src/main/res/layout/layout_code_editor.xml @@ -1,35 +1,33 @@ + + + android:layout_height="0dp" + android:layout_weight="1.0" /> - + - + - - - + diff --git a/app/src/main/res/layout/layout_completion_item.xml b/app/src/main/res/layout/layout_completion_item.xml index 7633aea20..824088194 100755 --- a/app/src/main/res/layout/layout_completion_item.xml +++ b/app/src/main/res/layout/layout_completion_item.xml @@ -1,88 +1,96 @@ + + + android:singleLine="true" + android:textColor="?attr/colorSecondaryVariant" + android:textSize="11sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:text="Class" /> - + - - - + - + - + diff --git a/app/src/main/res/layout/layout_crash_report.xml b/app/src/main/res/layout/layout_crash_report.xml index a84e8350c..73e72a1d0 100644 --- a/app/src/main/res/layout/layout_crash_report.xml +++ b/app/src/main/res/layout/layout_crash_report.xml @@ -15,98 +15,95 @@ ~ along with AndroidIDE. If not, see . --> + 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"> - + - + + + + + + + + + android:layout_height="match_parent" + android:textAppearance="@style/TextAppearance.Material3.BodyMedium" + tools:text="This is an error message." /> - + - + - + - - - - - - - - -