Added option for space between messages

master
M66B 5 months ago
parent 8c99d4ecbe
commit 6907869688

@ -355,6 +355,7 @@ public class FragmentMessages extends FragmentBase
private boolean date_bold;
private boolean threading;
private boolean swipenav;
private int spacing;
private boolean seekbar;
private boolean move_thread_all;
private boolean move_thread_sent;
@ -518,6 +519,7 @@ public class FragmentMessages extends FragmentBase
threading = (prefs.getBoolean("threading", true) ||
args.getBoolean("force_threading"));
swipenav = prefs.getBoolean("swipenav", true);
spacing = prefs.getInt("spacing", 0);
seekbar = prefs.getBoolean("seekbar", false);
move_thread_all = prefs.getBoolean("move_thread_all", false);
move_thread_sent = (move_thread_all || prefs.getBoolean("move_thread_sent", false));
@ -989,6 +991,15 @@ public class FragmentMessages extends FragmentBase
if (date_bold)
tvFixedDate.setTypeface(Typeface.DEFAULT_BOLD);
DividerItemDecoration spacingDecorator = new DividerItemDecoration(getContext(), llm.getOrientation()) {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
int pos = parent.getChildAdapterPosition(view);
outRect.top = (pos == 0 ? 0 : Helper.dp2pixels(view.getContext(), spacing * 12));
}
};
rvMessage.addItemDecoration(spacingDecorator);
DividerItemDecoration dateDecorator = new DividerItemDecoration(getContext(), llm.getOrientation()) {
@Override
public void onDraw(@NonNull Canvas canvas, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {

@ -147,7 +147,7 @@ public class FragmentOptions extends FragmentBase {
"portrait2", "portrait2c", "portrait_min_size", "landscape", "landscape_min_size",
"column_width",
"hide_toolbar", "edge_to_edge", "nav_categories", "nav_last_sync", "nav_count", "nav_unseen_drafts", "nav_count_pinned", "show_unexposed",
"indentation", "date", "date_week", "date_fixed", "date_bold", "date_time", "threading", "threading_unread",
"spacing", "indentation", "date", "date_week", "date_fixed", "date_bold", "date_time", "threading", "threading_unread",
"show_filtered",
"highlight_unread", "highlight_color", "account_color", "account_color_size",
"avatars", "bimi", "gravatars", "libravatars", "favicons", "favicons_partial", "favicons_manifest", "generated_icons", "identicons",

@ -104,6 +104,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
private SwitchCompat swThreading;
private SwitchCompat swThreadingUnread;
private SwitchCompat swIndentation;
private Spinner spSpacing;
private SwitchCompat swSeekbar;
private SwitchCompat swActionbar;
private SwitchCompat swActionbarSwap;
@ -221,7 +222,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
"cards", "beige", "tabular_card_bg", "shadow_unread", "shadow_border", "shadow_highlight", "dividers", "tabular_unread_bg",
"portrait2", "portrait2c", "landscape", "close_pane", "column_width",
"hide_toolbar", "edge_to_edge", "nav_options", "nav_categories", "nav_last_sync", "nav_count", "nav_unseen_drafts", "nav_count_pinned", "show_unexposed",
"threading", "threading_unread", "indentation", "seekbar", "actionbar", "actionbar_swap", "actionbar_color",
"threading", "threading_unread", "indentation", "spacing", "seekbar", "actionbar", "actionbar_swap", "actionbar_color",
"highlight_unread", "highlight_color", "account_color", "account_color_size",
"avatars", "bimi", "bimi_vmc", "gravatars", "libravatars", "favicons", "favicons_partial", "favicons_manifest", "ddg_icons", "favicons_dmarc", "generated_icons", "identicons",
"circular", "saturation", "brightness", "threshold",
@ -289,6 +290,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
swThreading = view.findViewById(R.id.swThreading);
swThreadingUnread = view.findViewById(R.id.swThreadingUnread);
swIndentation = view.findViewById(R.id.swIndentation);
spSpacing = view.findViewById(R.id.spSpacing);
swSeekbar = view.findViewById(R.id.swSeekbar);
swActionbar = view.findViewById(R.id.swActionbar);
swActionbarSwap = view.findViewById(R.id.swActionbarSwap);
@ -728,6 +730,18 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
}
});
spSpacing.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
prefs.edit().putInt("spacing", position).apply();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
prefs.edit().remove("spacing").apply();
}
});
swSeekbar.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -1642,6 +1656,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
swThreadingUnread.setEnabled(swThreading.isChecked());
swIndentation.setChecked(prefs.getBoolean("indentation", false));
swIndentation.setEnabled(swCards.isChecked() && swThreading.isChecked());
spSpacing.setSelection(prefs.getInt("spacing", 0));
swSeekbar.setChecked(prefs.getBoolean("seekbar", false));
swActionbar.setChecked(prefs.getBoolean("actionbar", true));
swActionbarSwap.setChecked(prefs.getBoolean("actionbar_swap", false));

@ -767,6 +767,28 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swIndentation" />
<TextView
android:id="@+id/tvSpacing"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_marginEnd="48dp"
android:text="@string/title_advanced_spacing"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="?android:attr/textColorPrimary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvIndentationHint" />
<eu.faircode.email.SpinnerEx
android:id="@+id/spSpacing"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:entries="@array/spacingNames"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvSpacing" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/swSeekbar"
android:layout_width="0dp"
@ -775,7 +797,7 @@
android:text="@string/title_advanced_seekbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvIndentationHint"
app:layout_constraintTop_toBottomOf="@id/spSpacing"
app:switchPadding="12dp" />
<androidx.appcompat.widget.SwitchCompat

@ -702,6 +702,7 @@
<string name="title_advanced_image_placeholders">Show image placeholders</string>
<string name="title_advanced_images_inline">Automatically show inline images</string>
<string name="title_advanced_button_extra">Show extra buttons at the bottom of a message</string>
<string name="title_advanced_spacing">Space between messages and conversations</string>
<string name="title_advanced_seekbar">Show relative conversation position with a dot</string>
<string name="title_advanced_actionbar">Show conversation action bar</string>
<string name="title_advanced_actionbar_swap">Swap trash and archive button</string>
@ -2841,6 +2842,12 @@
<item>Large</item>
</string-array>
<string-array name="spacingNames">
<item>Compact</item>
<item>Medium</item>
<item>Roomy</item>
</string-array>
<string name="title_size_tiny">Tiny</string>
<string-array name="receiptNames">

Loading…
Cancel
Save