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
+}