diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java index ab73f1a02..8ebb24a17 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java @@ -537,18 +537,46 @@ public class ComposeAdapter extends RecyclerView.Adapter max_car) { - proceedToSplit[0] = true; - ArrayList splitText = ComposeHelper.splitToots(s.toString(), max_car); - int statusListSize = statusList.size(); - int i = 0; - for(String message: splitText) { - if(i==0) { + SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); + String defaultFormat = sharedpreferences.getString(context.getString(R.string.SET_THREAD_MESSAGE), context.getString(R.string.DEFAULT_THREAD_VALUE)); + //User asked to be prompted for threading long messages + if(defaultFormat.compareToIgnoreCase("ASK") == 0) { + AlertDialog.Builder threadConfirm = new MaterialAlertDialogBuilder(context); + threadConfirm.setTitle(context.getString(R.string.thread_long_message)); + threadConfirm.setMessage(context.getString(R.string.thread_long_message_message)); + threadConfirm.setNegativeButton(R.string.thread_long_message_no, (dialog, which) -> dialog.dismiss()); + threadConfirm.setPositiveButton(R.string.thread_long_message_yes, (dialog, which) -> { + String currentContent = holder.binding.content.getText().toString(); + ArrayList splitText = ComposeHelper.splitToots(currentContent, max_car); + holder.binding.content.setText(splitText.get(0)); + int statusListSize = statusList.size(); + int i = 0; + for(String message: splitText) { + if(i==0) { + i++; + continue; + } + manageDrafts.onItemDraftAdded(statusListSize+(i-1), message); + buttonVisibility(holder); + i++; + } + dialog.dismiss(); + }); + threadConfirm.show(); + } else if(defaultFormat.compareToIgnoreCase("ENABLE") == 0) { //User wants to automatically thread long messages + proceedToSplit[0] = true; + ArrayList splitText = ComposeHelper.splitToots(s.toString(), max_car); + int statusListSize = statusList.size(); + int i = 0; + for(String message: splitText) { + if(i==0) { + i++; + continue; + } + manageDrafts.onItemDraftAdded(statusListSize+(i-1), message); + buttonVisibility(holder); i++; - continue; } - manageDrafts.onItemDraftAdded(statusListSize+(i-1), message); - buttonVisibility(holder); - i++; } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 41ccd0b8a..bd57b03a8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -706,6 +706,19 @@ No accounts found for this list! Scheduled + + + Ask + Disable + Enable + + + + ASK + DISABLE + ENABLE + + Light Dark @@ -1065,6 +1078,7 @@ SET_CAPITALIZE SET_MENTIONS_AT_TOP + SET_THREAD_MESSAGE SET_THEME_BASE SET_DYNAMICCOLOR SET_CUSTOM_ACCENT @@ -1193,6 +1207,7 @@ SET_NOTIFICATIONS_PER_CALL INSTANCE_INFO SET_INVIDIOUS + ASK SET_INVIDIOUS_HOST invidious.snopyta.org SET_FILTER_UTM @@ -1857,6 +1872,11 @@ Create domain block Are you sure to mute the tag %1$s? Pickup a mode for the theme + Divide long messages in replies + Don\'t divide it + Divide the message + The message will be divided in several replies to follow your instance max characters. + Customize colors Allow to set your custom colors for themes. Dynamic Color diff --git a/app/src/main/res/xml/pref_compose.xml b/app/src/main/res/xml/pref_compose.xml index 6054966a1..8d5711e39 100644 --- a/app/src/main/res/xml/pref_compose.xml +++ b/app/src/main/res/xml/pref_compose.xml @@ -14,6 +14,17 @@ app:summary="@string/set_capitalize_indication" app:title="@string/set_capitalize" /> + + +