From a4e277fa417bc36aa57014feec4aa7e9589df904 Mon Sep 17 00:00:00 2001 From: lp-hub <112799826+lp-hub@users.noreply.github.com> Date: Fri, 6 Feb 2026 14:58:54 +0200 Subject: [PATCH 1/6] Refactor: Static Helper for Marquee --- .vscode/settings.json | 3 +++ .../adapters/CompressedExplorerAdapter.java | 3 +-- .../filemanager/adapters/RecyclerAdapter.java | 3 +-- .../amaze/filemanager/utils/AnimUtilsTest.java | 15 +++++++++++++++ 4 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000..e0f15db2eb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git a/app/src/main/java/com/amaze/filemanager/adapters/CompressedExplorerAdapter.java b/app/src/main/java/com/amaze/filemanager/adapters/CompressedExplorerAdapter.java index eab01ab74e..f41c5be99e 100644 --- a/app/src/main/java/com/amaze/filemanager/adapters/CompressedExplorerAdapter.java +++ b/app/src/main/java/com/amaze/filemanager/adapters/CompressedExplorerAdapter.java @@ -220,8 +220,7 @@ public void onBindViewHolder(final CompressedItemViewHolder holder, int position boolean enableMarquee = sharedPrefs.getBoolean(PreferencesConstants.PREFERENCE_ENABLE_MARQUEE_FILENAME, true); - holder.txtTitle.setEllipsize( - enableMarquee ? TextUtils.TruncateAt.MARQUEE : TextUtils.TruncateAt.MIDDLE); + AnimUtils.configureTitleMarquee(holder.firstLine, enableMarquee); final CompressedObjectParcelable rowItem = items.get(position); GradientDrawable gradientDrawable = (GradientDrawable) holder.genericIcon.getBackground(); diff --git a/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java b/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java index 1200776f12..ee97f57f34 100644 --- a/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java +++ b/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java @@ -765,8 +765,7 @@ public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder vholder, int mainFragment.adjustListViewForTv(holder, mainFragment.getMainActivity()); } }); - holder.txtTitle.setEllipsize( - enableMarquee ? TextUtils.TruncateAt.MARQUEE : TextUtils.TruncateAt.MIDDLE); + AnimUtils.configureTitleMarquee(holder.txtTitle, enableMarquee); final boolean isBackButton = getItemsDigested().get(position).specialType == TYPE_BACK; if (isBackButton) { diff --git a/app/src/test/java/com/amaze/filemanager/utils/AnimUtilsTest.java b/app/src/test/java/com/amaze/filemanager/utils/AnimUtilsTest.java index 92b65fdc29..77013503d5 100644 --- a/app/src/test/java/com/amaze/filemanager/utils/AnimUtilsTest.java +++ b/app/src/test/java/com/amaze/filemanager/utils/AnimUtilsTest.java @@ -71,4 +71,19 @@ public void testMarqueeAfterDelay() { ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); assertTrue(mock.isSelected()); } + + @Test + public static void configureTitleMarquee(TextView textView, boolean enableMarquee) { + if (enableMarquee) { + textView.setSingleLine(true); + textView.setEllipsize(TextUtils.TruncateAt.MARQUEE); + textView.setSelected(true); // Required for Marquee to move + } else { + // New custom behavior: Double line wrap! + textView.setSingleLine(false); + textView.setMaxLines(2); + textView.setEllipsize(TextUtils.TruncateAt.END); + textView.setSelected(false); + } } +} \ No newline at end of file From c13166576453eacd63b7f0c8b5b80d8500c78917 Mon Sep 17 00:00:00 2001 From: lp-hub <112799826+lp-hub@users.noreply.github.com> Date: Fri, 6 Feb 2026 15:00:56 +0200 Subject: [PATCH 2/6] Use the variable already stored in 'this.enableMarquee' instead of sharedPrefs again! --- .../amaze/filemanager/adapters/RecyclerAdapter.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java b/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java index ee97f57f34..5cf18a3fe8 100644 --- a/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java +++ b/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java @@ -527,13 +527,11 @@ public void onViewDetachedFromWindow(@NonNull RecyclerView.ViewHolder holder) { @Override public void onViewAttachedToWindow(@NonNull RecyclerView.ViewHolder holder) { - super.onViewAttachedToWindow(holder); - boolean enableMarqueeFilename = - sharedPrefs.getBoolean(PreferencesConstants.PREFERENCE_ENABLE_MARQUEE_FILENAME, true); - if (enableMarqueeFilename && holder instanceof ItemViewHolder) { - AnimUtils.marqueeAfterDelay(2000, ((ItemViewHolder) holder).txtTitle); - } - super.onViewAttachedToWindow(holder); + super.onViewAttachedToWindow(holder); + // Use the variable already stored in 'this.enableMarquee' instead of sharedPrefs again! + if (this.enableMarquee && holder instanceof ItemViewHolder) { + AnimUtils.marqueeAfterDelay(2000, ((ItemViewHolder) holder).txtTitle); + } } @Override From de632fb2c5e1d46b1701d657a6363959905c3a78 Mon Sep 17 00:00:00 2001 From: lp-hub <112799826+lp-hub@users.noreply.github.com> Date: Fri, 6 Feb 2026 15:05:20 +0200 Subject: [PATCH 3/6] Utils.java Static Helper for Marquee --- .../adapters/CompressedExplorerAdapter.java | 3 ++- .../filemanager/adapters/RecyclerAdapter.java | 2 +- .../com/amaze/filemanager/utils/Utils.java | 24 +++++++++++++++++++ .../filemanager/utils/AnimUtilsTest.java | 15 ------------ 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/amaze/filemanager/adapters/CompressedExplorerAdapter.java b/app/src/main/java/com/amaze/filemanager/adapters/CompressedExplorerAdapter.java index f41c5be99e..eab01ab74e 100644 --- a/app/src/main/java/com/amaze/filemanager/adapters/CompressedExplorerAdapter.java +++ b/app/src/main/java/com/amaze/filemanager/adapters/CompressedExplorerAdapter.java @@ -220,7 +220,8 @@ public void onBindViewHolder(final CompressedItemViewHolder holder, int position boolean enableMarquee = sharedPrefs.getBoolean(PreferencesConstants.PREFERENCE_ENABLE_MARQUEE_FILENAME, true); - AnimUtils.configureTitleMarquee(holder.firstLine, enableMarquee); + holder.txtTitle.setEllipsize( + enableMarquee ? TextUtils.TruncateAt.MARQUEE : TextUtils.TruncateAt.MIDDLE); final CompressedObjectParcelable rowItem = items.get(position); GradientDrawable gradientDrawable = (GradientDrawable) holder.genericIcon.getBackground(); diff --git a/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java b/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java index 5cf18a3fe8..3be15d03dc 100644 --- a/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java +++ b/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java @@ -763,7 +763,7 @@ public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder vholder, int mainFragment.adjustListViewForTv(holder, mainFragment.getMainActivity()); } }); - AnimUtils.configureTitleMarquee(holder.txtTitle, enableMarquee); + Utils.configureTitleMarquee(holder.txtTitle, enableMarquee); final boolean isBackButton = getItemsDigested().get(position).specialType == TYPE_BACK; if (isBackButton) { diff --git a/app/src/main/java/com/amaze/filemanager/utils/Utils.java b/app/src/main/java/com/amaze/filemanager/utils/Utils.java index 437360edef..6f5cd818bc 100644 --- a/app/src/main/java/com/amaze/filemanager/utils/Utils.java +++ b/app/src/main/java/com/amaze/filemanager/utils/Utils.java @@ -55,11 +55,13 @@ import android.os.Handler; import android.os.storage.StorageVolume; import android.text.format.DateUtils; +import android.text.TextUtils; import android.util.DisplayMetrics; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.Toast; +import android.widget.TextView; import androidx.annotation.ColorRes; import androidx.annotation.NonNull; @@ -495,4 +497,26 @@ public static void hideKeyboard(MainActivity mainActivity) { ((InputMethodManager) mainActivity.getSystemService(Context.INPUT_METHOD_SERVICE)) .hideSoftInputFromWindow(view.getWindowToken(), 0); } + + public static void configureTitleMarquee(TextView textView, boolean enableMarquee) { + if (enableMarquee) { + textView.setSingleLine(true); + textView.setEllipsize(TextUtils.TruncateAt.MARQUEE); + textView.setSelected(true); + } else { + textView.setSingleLine(false); + textView.setMaxLines(2); + textView.setEllipsize(TextUtils.TruncateAt.END); + textView.setSelected(false); + } + } } + + + + + + + + + diff --git a/app/src/test/java/com/amaze/filemanager/utils/AnimUtilsTest.java b/app/src/test/java/com/amaze/filemanager/utils/AnimUtilsTest.java index 77013503d5..f299fb3be7 100644 --- a/app/src/test/java/com/amaze/filemanager/utils/AnimUtilsTest.java +++ b/app/src/test/java/com/amaze/filemanager/utils/AnimUtilsTest.java @@ -71,19 +71,4 @@ public void testMarqueeAfterDelay() { ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); assertTrue(mock.isSelected()); } - - @Test - public static void configureTitleMarquee(TextView textView, boolean enableMarquee) { - if (enableMarquee) { - textView.setSingleLine(true); - textView.setEllipsize(TextUtils.TruncateAt.MARQUEE); - textView.setSelected(true); // Required for Marquee to move - } else { - // New custom behavior: Double line wrap! - textView.setSingleLine(false); - textView.setMaxLines(2); - textView.setEllipsize(TextUtils.TruncateAt.END); - textView.setSelected(false); - } -} } \ No newline at end of file From 275704cdfa52a5f870f5e15a1e0b559ea9410818 Mon Sep 17 00:00:00 2001 From: lp-hub <112799826+lp-hub@users.noreply.github.com> Date: Fri, 6 Feb 2026 15:09:20 +0200 Subject: [PATCH 4/6] date appearance size and color change --- app/src/main/res/layout/griditem.xml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/layout/griditem.xml b/app/src/main/res/layout/griditem.xml index 7ac37b168c..a3d1841799 100644 --- a/app/src/main/res/layout/griditem.xml +++ b/app/src/main/res/layout/griditem.xml @@ -152,16 +152,15 @@ android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" - android:layout_gravity="start" - android:layout_toStartOf="@+id/secondLine" - android:layout_toLeftOf="@id/secondLine" android:ellipsize="end" android:paddingStart="5dp" android:paddingLeft="5dp" - android:paddingEnd="5dp" + android:paddingTop="2dp" android:singleLine="true" + android:letterSpacing="0.02" + android:textColor="#f7f7f7" android:textAlignment="viewStart" - android:textSize="12sp" /> + android:textSize="10sp" /> From 928c290ac5b82c867314a20e6b777483c9aaa384 Mon Sep 17 00:00:00 2001 From: lp-hub <112799826+lp-hub@users.noreply.github.com> Date: Fri, 6 Feb 2026 15:10:57 +0200 Subject: [PATCH 5/6] position AppCompatImageButton to right top corner --- app/src/main/res/layout/griditem.xml | 29 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/layout/griditem.xml b/app/src/main/res/layout/griditem.xml index a3d1841799..1ed01d5883 100644 --- a/app/src/main/res/layout/griditem.xml +++ b/app/src/main/res/layout/griditem.xml @@ -40,6 +40,20 @@ android:contentDescription="@null" android:scaleType="centerCrop" /> + + + - - Date: Fri, 6 Feb 2026 16:11:45 +0200 Subject: [PATCH 6/6] ./gradlew spotlessApply --- .../filemanager/adapters/RecyclerAdapter.java | 11 ++++--- .../com/amaze/filemanager/utils/Utils.java | 29 +++++++------------ .../filemanager/utils/AnimUtilsTest.java | 2 +- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java b/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java index 3be15d03dc..cf2731262f 100644 --- a/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java +++ b/app/src/main/java/com/amaze/filemanager/adapters/RecyclerAdapter.java @@ -99,7 +99,6 @@ import android.graphics.drawable.GradientDrawable; import android.os.Build; import android.os.Handler; -import android.text.TextUtils; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; @@ -527,11 +526,11 @@ public void onViewDetachedFromWindow(@NonNull RecyclerView.ViewHolder holder) { @Override public void onViewAttachedToWindow(@NonNull RecyclerView.ViewHolder holder) { - super.onViewAttachedToWindow(holder); - // Use the variable already stored in 'this.enableMarquee' instead of sharedPrefs again! - if (this.enableMarquee && holder instanceof ItemViewHolder) { - AnimUtils.marqueeAfterDelay(2000, ((ItemViewHolder) holder).txtTitle); - } + super.onViewAttachedToWindow(holder); + // Use the variable already stored in 'this.enableMarquee' instead of sharedPrefs again! + if (this.enableMarquee && holder instanceof ItemViewHolder) { + AnimUtils.marqueeAfterDelay(2000, ((ItemViewHolder) holder).txtTitle); + } } @Override diff --git a/app/src/main/java/com/amaze/filemanager/utils/Utils.java b/app/src/main/java/com/amaze/filemanager/utils/Utils.java index 6f5cd818bc..3db8193e44 100644 --- a/app/src/main/java/com/amaze/filemanager/utils/Utils.java +++ b/app/src/main/java/com/amaze/filemanager/utils/Utils.java @@ -54,14 +54,14 @@ import android.os.Build; import android.os.Handler; import android.os.storage.StorageVolume; -import android.text.format.DateUtils; import android.text.TextUtils; +import android.text.format.DateUtils; import android.util.DisplayMetrics; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.Button; -import android.widget.Toast; import android.widget.TextView; +import android.widget.Toast; import androidx.annotation.ColorRes; import androidx.annotation.NonNull; @@ -497,26 +497,17 @@ public static void hideKeyboard(MainActivity mainActivity) { ((InputMethodManager) mainActivity.getSystemService(Context.INPUT_METHOD_SERVICE)) .hideSoftInputFromWindow(view.getWindowToken(), 0); } - + public static void configureTitleMarquee(TextView textView, boolean enableMarquee) { if (enableMarquee) { - textView.setSingleLine(true); - textView.setEllipsize(TextUtils.TruncateAt.MARQUEE); - textView.setSelected(true); + textView.setSingleLine(true); + textView.setEllipsize(TextUtils.TruncateAt.MARQUEE); + textView.setSelected(true); } else { - textView.setSingleLine(false); - textView.setMaxLines(2); - textView.setEllipsize(TextUtils.TruncateAt.END); - textView.setSelected(false); + textView.setSingleLine(false); + textView.setMaxLines(2); + textView.setEllipsize(TextUtils.TruncateAt.END); + textView.setSelected(false); } } } - - - - - - - - - diff --git a/app/src/test/java/com/amaze/filemanager/utils/AnimUtilsTest.java b/app/src/test/java/com/amaze/filemanager/utils/AnimUtilsTest.java index f299fb3be7..92b65fdc29 100644 --- a/app/src/test/java/com/amaze/filemanager/utils/AnimUtilsTest.java +++ b/app/src/test/java/com/amaze/filemanager/utils/AnimUtilsTest.java @@ -71,4 +71,4 @@ public void testMarqueeAfterDelay() { ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); assertTrue(mock.isSelected()); } -} \ No newline at end of file +}