Match drawer clock preview line breaks

This commit is contained in:
ajp_anton
2026-06-18 13:51:18 +00:00
parent 8d3aa801d1
commit 5395635a62
@@ -125,7 +125,8 @@ public final class ClockFragment extends Fragment {
SbtSettings.KEY_CLOCK_CUSTOM_FORMAT,
customFormatEnabledValue,
customFormatValue,
18f);
18f,
true);
bindCustomFormat(
prefs,
drawerClockCustomFormatEnabled,
@@ -136,7 +137,8 @@ public final class ClockFragment extends Fragment {
SbtSettings.KEY_DRAWER_CLOCK_CUSTOM_FORMAT,
drawerClockCustomFormatEnabledValue,
drawerClockCustomFormatValue,
24f);
24f,
false);
bindCustomFormat(
prefs,
drawerDateCustomFormatEnabled,
@@ -147,7 +149,8 @@ public final class ClockFragment extends Fragment {
SbtSettings.KEY_DRAWER_DATE_CUSTOM_FORMAT,
drawerDateCustomFormatEnabledValue,
drawerDateCustomFormatValue,
16f);
16f,
false);
updateCustomFormatHelpVisibility(customFormatHelpContainer, customFormatHelpToggle, false);
applyBulletText(customFormatHelpCommon);
applyBulletText(customFormatHelpStyling);
@@ -186,7 +189,8 @@ public final class ClockFragment extends Fragment {
String formatKey,
boolean enabled,
String format,
float previewTextSizeSp) {
float previewTextSizeSp,
boolean multilinePreview) {
if (enabledView == null || input == null) {
return;
}
@@ -198,7 +202,7 @@ public final class ClockFragment extends Fragment {
previewTextSizeSp);
}
updateCustomFormatVisibility(container, enabled);
PreviewBinding binding = new PreviewBinding(enabledView, input, preview);
PreviewBinding binding = new PreviewBinding(enabledView, input, preview, multilinePreview);
previewBindings.add(binding);
updatePreview(binding);
enabledView.setOnCheckedChangeListener((buttonView, isChecked) -> {
@@ -247,12 +251,37 @@ public final class ClockFragment extends Fragment {
binding.preview.getContext(),
pattern,
binding.preview.getPreviewTextColor());
if (!binding.multilinePreview) {
result = flattenRows(result);
}
binding.preview.setPreview(result);
binding.preview.setVisibility(result.rows().isEmpty() ? View.GONE : View.VISIBLE);
binding.preview.setContentDescription(result.contentDescription());
return result.containsSeconds();
}
private ClockPatternPreviewRenderer.Result flattenRows(ClockPatternPreviewRenderer.Result result) {
if (result == null || result.rows() == null || result.rows().size() <= 1) {
return result;
}
SpannableStringBuilder text = new SpannableStringBuilder();
StringBuilder description = new StringBuilder();
for (int i = 0; i < result.rows().size(); i++) {
ClockPatternPreviewRenderer.Row row = result.rows().get(i);
if (i > 0) {
text.append(' ');
description.append(' ');
}
if (row != null && row.text() != null) {
text.append(row.text());
description.append(row.text());
}
}
ArrayList<ClockPatternPreviewRenderer.Row> rows = new ArrayList<>();
rows.add(new ClockPatternPreviewRenderer.Row(text, "", "", 0, 0));
return new ClockPatternPreviewRenderer.Result(rows, description.toString(), result.containsSeconds());
}
private void schedulePreviewTickerIfNeeded() {
View view = getView();
if (view == null) {
@@ -446,7 +475,7 @@ public final class ClockFragment extends Fragment {
view.setText(builder);
}
private record PreviewBinding(CheckBox enabled, EditText input, ClockPatternPreviewView preview) {
private record PreviewBinding(CheckBox enabled, EditText input, ClockPatternPreviewView preview, boolean multilinePreview) {
}
private static final class FontFamilyAdapter extends BaseAdapter {