From a0c2d6a2b09235fba5b30f22fb4a629300874c0d Mon Sep 17 00:00:00 2001 From: SyntaxSpin <86142168+SyntaxSpin@users.noreply.github.com> Date: Mon, 16 Feb 2026 13:00:42 +0100 Subject: [PATCH 01/11] feat : editor implemented --- app/src/main/res/layout/fragment_main.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 54c5ca7..f4a019d 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -92,6 +92,12 @@ android:id="@+id/tabLayout" android:layout_width="match_parent" android:layout_height="wrap_content" /> + + + Date: Mon, 16 Feb 2026 15:33:16 +0100 Subject: [PATCH 02/11] feat : editor implemented --- app/src/main/res/layout/fragment_main.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index f4a019d..8065d15 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -98,8 +98,15 @@ android:layout_height="match_parent" android:id="@+id/editor"/> + + + + Date: Mon, 16 Feb 2026 15:36:19 +0100 Subject: [PATCH 03/11] feat : editor implemented --- .../com/sparkleseditor/fragments/MainFragment.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java index 9e48a89..15fb7ec 100644 --- a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java +++ b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java @@ -48,8 +48,17 @@ private void setupToolbar() { binding.toolbar.setOnMenuItemClickListener( item->{ int id = item.getItemId(); - if (id == R.id.undo) return true; - if (id == R.id.redo) return true; + if (id == R.id.undo){ + if (binding.editor.canUndo()){ + binding.editor.undo(); + } + return true ; + } + if (id == R.id.redo) { + if (binding.editor.canRedo()) { + binding.editor.redo(); + } + } if (id == R.id.right_drawer) { binding.drawer.openDrawer(GravityCompat.END); return true; From b1d144b2099d01159f91fea9666fdaa5efdf6892 Mon Sep 17 00:00:00 2001 From: SyntaxSpin <86142168+SyntaxSpin@users.noreply.github.com> Date: Mon, 16 Feb 2026 19:56:11 +0100 Subject: [PATCH 04/11] feat : softinputview implemented --- app/build.gradle.kts | 1 + app/src/main/AndroidManifest.xml | 3 ++- .../fragments/MainFragment.java | 26 +++++++++++++++++++ app/src/main/res/layout/fragment_main.xml | 19 +++++++------- gradle/libs.versions.toml | 1 + 5 files changed, 39 insertions(+), 11 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4b10e71..b1b2363 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -62,6 +62,7 @@ dependencies { implementation(platform(libs.editor.bom)) implementation(libs.editor) implementation(libs.language.textmate) + implementation(libs.language.java) implementation(libs.transition) implementation(libs.fragment) implementation(libs.activity) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 16e6ebb..9cc8bfe 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,7 +16,8 @@ + android:theme="@style/Theme.SparklesEditor" + android:windowSoftInputMode="adjustResize"> diff --git a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java index 15fb7ec..4774d12 100644 --- a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java +++ b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java @@ -15,10 +15,26 @@ import com.sparkleseditor.databinding.FragmentMainBinding; import com.sparkleseditor.navigation.Navigator; +import io.github.rosemoe.sora.widget.SymbolInputView; + public class MainFragment extends BaseFragment { private FragmentMainBinding binding; + public static final String[] SYMBOLS = { + "TAB", "{", "}", "(", ")", + ",", ".", ";", "\"", "?", + "+", "-", "*", "/", "<", + ">", "[", "]", ":" + }; + + public static final String[] SYMBOL_INSERT_TEXT = { + "\t", "{}", "}", "(", ")", + ",", ".", ";", "\"", "?", + "+", "-", "*", "/", "<", + ">", "[", "]", ":" + }; + @Override public View onCreateView( @NonNull LayoutInflater inflater, ViewGroup container, @@ -34,6 +50,16 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); setupToolbar(); setupToolbox(); + setupInputView(); + + + } + + private void setupInputView() { + + SymbolInputView inputView = binding.inputer; + inputView.bindEditor(binding.editor); + inputView.addSymbols(SYMBOLS, SYMBOL_INSERT_TEXT); } diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 8065d15..67ff454 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -23,10 +23,7 @@ android:layout_height="?attr/actionBarSize" app:title="@string/app_name" app:menu="@menu/menu_main" /> - + + android:layout_height="0dp" + android:id="@+id/editor" + android:layout_weight="1"/> - + android:layout_height="wrap_content"/> - + + Date: Mon, 16 Feb 2026 21:11:36 +0100 Subject: [PATCH 05/11] fix : softinputview with FloatingActionButton --- .../sparkleseditor/fragments/MainFragment.java | 7 +++++++ app/src/main/res/layout/fragment_main.xml | 15 +++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java index 4774d12..8aba89d 100644 --- a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java +++ b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java @@ -2,14 +2,19 @@ import android.annotation.SuppressLint; import android.os.Bundle; +import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; +import androidx.core.graphics.Insets; import androidx.core.view.GravityCompat; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; +import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.sparkleseditor.R; import com.sparkleseditor.components.ExpandableLayout; import com.sparkleseditor.databinding.FragmentMainBinding; @@ -55,6 +60,8 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { } + + private void setupInputView() { SymbolInputView inputView = binding.inputer; diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 67ff454..0095365 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -101,16 +101,23 @@ android:layout_width="match_parent" android:layout_height="wrap_content"/> - + + From 07112e75d3d5b6526fbccc8621f2dc6ea583dec6 Mon Sep 17 00:00:00 2001 From: SyntaxSpin <86142168+SyntaxSpin@users.noreply.github.com> Date: Mon, 16 Feb 2026 21:13:02 +0100 Subject: [PATCH 06/11] fix : coloring of softinputview --- app/src/main/res/layout/fragment_main.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 0095365..bcd9d8a 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -99,7 +99,8 @@ + android:layout_height="wrap_content" + android:background="?colorSurface"/> From 15c05fb7ef2b2e301a531f251a29fdc9772d949b Mon Sep 17 00:00:00 2001 From: SyntaxSpin <86142168+SyntaxSpin@users.noreply.github.com> Date: Tue, 17 Feb 2026 00:35:03 +0100 Subject: [PATCH 07/11] feat : minor ui changes --- .../drawable/ic_play_arrow_rounded_filled_24dp.xml | 10 ++++++++++ app/src/main/res/layout/fragment_main.xml | 14 ++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable/ic_play_arrow_rounded_filled_24dp.xml diff --git a/app/src/main/res/drawable/ic_play_arrow_rounded_filled_24dp.xml b/app/src/main/res/drawable/ic_play_arrow_rounded_filled_24dp.xml new file mode 100644 index 0000000..94979f5 --- /dev/null +++ b/app/src/main/res/drawable/ic_play_arrow_rounded_filled_24dp.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index bcd9d8a..fb700ea 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -96,11 +96,17 @@ android:id="@+id/editor" android:layout_weight="1"/> + + android:background="@android:color/transparent"/> + @@ -114,12 +120,12 @@ android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" - app:layout_anchor="@id/inputer" + app:layout_anchor="@id/scroll" app:layout_anchorGravity="top|end" - android:layout_marginBottom="45dp" + android:layout_marginBottom="64dp" android:layout_marginEnd="16dp" android:contentDescription="Play" - app:srcCompat="@android:drawable/ic_dialog_email" /> + app:srcCompat="@drawable/ic_play_arrow_rounded_filled_24dp" /> From 534d75836b3d5649a3410dd6b86668d3f5d89a72 Mon Sep 17 00:00:00 2001 From: SyntaxSpin <86142168+SyntaxSpin@users.noreply.github.com> Date: Tue, 17 Feb 2026 14:32:22 +0100 Subject: [PATCH 08/11] chore : editor symbolinputview improvements --- .../java/com/sparkleseditor/fragments/MainFragment.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java index 8aba89d..c6d19c8 100644 --- a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java +++ b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java @@ -1,6 +1,9 @@ package com.sparkleseditor.fragments; +import static android.R.color.transparent; + import android.annotation.SuppressLint; +import android.graphics.Color; import android.os.Bundle; import android.util.TypedValue; import android.view.LayoutInflater; @@ -27,14 +30,14 @@ public class MainFragment extends BaseFragment { private FragmentMainBinding binding; public static final String[] SYMBOLS = { - "TAB", "{", "}", "(", ")", + "TAB","↵", "{", "}", "(", ")", ",", ".", ";", "\"", "?", "+", "-", "*", "/", "<", ">", "[", "]", ":" }; public static final String[] SYMBOL_INSERT_TEXT = { - "\t", "{}", "}", "(", ")", + "\t","\n", "{}", "}", "(", ")", ",", ".", ";", "\"", "?", "+", "-", "*", "/", "<", ">", "[", "]", ":" @@ -56,6 +59,7 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { setupToolbar(); setupToolbox(); setupInputView(); + binding.fab.setTranslationY(-12); } @@ -67,6 +71,7 @@ private void setupInputView() { SymbolInputView inputView = binding.inputer; inputView.bindEditor(binding.editor); inputView.addSymbols(SYMBOLS, SYMBOL_INSERT_TEXT); + inputView.setBackgroundColor(Color.TRANSPARENT); } From b48ece442988d295d2fe1c2423c13b7c960b50cf Mon Sep 17 00:00:00 2001 From: SyntaxSpin <86142168+SyntaxSpin@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:21:00 +0100 Subject: [PATCH 09/11] chore : editor symbolinputview improvements --- .../java/com/sparkleseditor/fragments/MainFragment.java | 7 ------- app/src/main/res/layout/fragment_main.xml | 6 +++--- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java index c6d19c8..2ba5c32 100644 --- a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java +++ b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java @@ -1,23 +1,16 @@ package com.sparkleseditor.fragments; -import static android.R.color.transparent; - import android.annotation.SuppressLint; import android.graphics.Color; import android.os.Bundle; -import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; -import androidx.core.graphics.Insets; import androidx.core.view.GravityCompat; -import androidx.core.view.ViewCompat; -import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; -import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.sparkleseditor.R; import com.sparkleseditor.components.ExpandableLayout; import com.sparkleseditor.databinding.FragmentMainBinding; diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index fb700ea..066dc68 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -100,12 +100,12 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/scroll" - android:scrollbars="none"> + android:scrollbars="none" + android:background="?colorSurface"> + android:layout_height="wrap_content" /> From 92d1fbd5a286ff9eed3bf95b4a25273d15a13709 Mon Sep 17 00:00:00 2001 From: SyntaxSpin <86142168+SyntaxSpin@users.noreply.github.com> Date: Wed, 18 Feb 2026 07:13:28 +0100 Subject: [PATCH 10/11] feat : test TabLayout --- .../main/java/com/sparkleseditor/fragments/MainFragment.java | 5 +++++ app/src/main/res/layout/fragment_main.xml | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java index 2ba5c32..6105af2 100644 --- a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java +++ b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java @@ -52,11 +52,16 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { setupToolbar(); setupToolbox(); setupInputView(); + setupTabLayoutTemp(); binding.fab.setTranslationY(-12); } + private void setupTabLayoutTemp() { + binding.tabLayout.addTab(binding.tabLayout.newTab().setText("My Tab Title")); + + } private void setupInputView() { diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 066dc68..eb5d0f6 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -88,7 +88,9 @@ + android:layout_height="wrap_content" + app:tabGravity="start" + app:tabMode="scrollable"/> Date: Wed, 18 Feb 2026 12:25:36 +0100 Subject: [PATCH 11/11] feat : SlideX Drawers --- .../fragments/MainFragment.java | 79 +++++++++++++++++-- .../drawable/ic_menu_rounded_filled_24dp.xml | 10 +++ app/src/main/res/layout/fragment_main.xml | 14 ++-- app/src/main/res/menu/menu_main.xml | 5 -- 4 files changed, 90 insertions(+), 18 deletions(-) create mode 100644 app/src/main/res/drawable/ic_menu_rounded_filled_24dp.xml diff --git a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java index 6105af2..dfe2faa 100644 --- a/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java +++ b/app/src/main/java/com/sparkleseditor/fragments/MainFragment.java @@ -8,7 +8,10 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.core.view.GravityCompat; +import androidx.core.view.ViewCompat; +import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; import com.sparkleseditor.R; @@ -53,11 +56,70 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { setupToolbox(); setupInputView(); setupTabLayoutTemp(); + slideXDrawer(); binding.fab.setTranslationY(-12); } + private void slideXDrawer() { + /*int statusBarHeight = + getResources() + .getDimensionPixelSize( + getResources().getIdentifier("status_bar_height", "dimen", "android"));*/ + int navigationBarHeight = + getResources() + .getDimensionPixelSize( + getResources().getIdentifier("navigation_bar_height", "dimen", "android")); + ViewGroup.LayoutParams layoutParams = binding.leftDrawerMenu.getLayoutParams(); + if (layoutParams instanceof ViewGroup.MarginLayoutParams) { + ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) layoutParams; + binding.leftDrawerMenu.setLayoutParams(marginLayoutParams); + } + + binding.drawer.setScrimColor(Color.TRANSPARENT); + binding.drawer.setDrawerElevation(0f); + binding.drawer.addDrawerListener(new DrawerLayout.SimpleDrawerListener() { + + float slideX; + @Override + public void onDrawerSlide(@NonNull View drawerView, float slideOffset) { + int gravity = ((DrawerLayout.LayoutParams) drawerView.getLayoutParams()).gravity; + if (gravity == GravityCompat.START) { + binding.coordinator.setTranslationX(slideOffset * drawerView.getWidth()); + binding.drawer.bringChildToFront(drawerView); + binding.drawer.requestLayout(); + } else if (gravity == GravityCompat.END) { + binding.coordinator.setTranslationX(-slideOffset * drawerView.getWidth()); + binding.drawer.bringChildToFront(drawerView); + binding.drawer.requestLayout(); + } + } + + @Override + public void onDrawerClosed(@NonNull View drawerView) { + binding.coordinator.setTranslationX(0f); + } + + @Override + public void onDrawerStateChanged(int newState) { + if (newState == DrawerLayout.STATE_IDLE) { + if (!binding.drawer.isDrawerOpen(GravityCompat.START) && + !binding.drawer.isDrawerOpen(GravityCompat.END)) { + binding.coordinator.setTranslationX(0f); + } + } + + } + + + }); + + binding.toolbar.setNavigationOnClickListener(v ->{ + binding.drawer.openDrawer(GravityCompat.START); + }); + } + private void setupTabLayoutTemp() { binding.tabLayout.addTab(binding.tabLayout.newTab().setText("My Tab Title")); @@ -77,6 +139,14 @@ private void setupToolbox() { binding.options.setExpansion(false); binding.options.setDuration(200); binding.options.setOrientatin(ExpandableLayout.VERTICAL); + binding.settings.setOnClickListener(v->{ + Fragment frgSettings = new SettingsFragment(); + Navigator.pushTo( + getParentFragmentManager(), + R.id.nav_host, + frgSettings + ); + }); } @SuppressLint("NonConstantResourceId") @@ -99,14 +169,7 @@ private void setupToolbar() { binding.drawer.openDrawer(GravityCompat.END); return true; } - if (id == R.id.action_settings){ - Fragment frgSettings = new SettingsFragment(); - Navigator.pushTo( - getParentFragmentManager(), - R.id.nav_host, - frgSettings - ); - } + if (id == R.id.toolbar){ if (!binding.options.isExpanded()) { binding.options.expand(); diff --git a/app/src/main/res/drawable/ic_menu_rounded_filled_24dp.xml b/app/src/main/res/drawable/ic_menu_rounded_filled_24dp.xml new file mode 100644 index 0000000..254386b --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_rounded_filled_24dp.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index eb5d0f6..aa44cb8 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -6,11 +6,13 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:background="?colorSurface"> + android:layout_height="match_parent" + android:id="@+id/coordinator"> + app:title="Sparkles" + app:menu="@menu/menu_main" + app:navigationIcon="@drawable/ic_menu_rounded_filled_24dp"/> @@ -136,7 +139,8 @@ + android:layout_gravity="start" + android:id="@+id/left_drawer_menu"/> - \ No newline at end of file