diff --git a/app/src/main/java/net/gsantner/markor/activity/DocumentEditAndViewFragment.java b/app/src/main/java/net/gsantner/markor/activity/DocumentEditAndViewFragment.java index 9493fc35b5..a95bfc61ea 100644 --- a/app/src/main/java/net/gsantner/markor/activity/DocumentEditAndViewFragment.java +++ b/app/src/main/java/net/gsantner/markor/activity/DocumentEditAndViewFragment.java @@ -718,6 +718,15 @@ public void onFsViewerConfig(GsFileBrowserOptions.Options dopt) { updateMenuToggleStates(0); return true; } + case R.id.action_enable_rtl: { + final boolean newState = !_appSettings.getDocumentRtlEnabled(_document.path); + _appSettings.setDocumentRtlEnabled(_document.path, newState); + if (_isPreviewVisible) { + updateViewModeText(); + } + updateMenuToggleStates(0); + return true; + } case R.id.action_info: { if (saveDocument(false)) { // In order to have the correct info displayed FileInfoDialog.show(_document.file, getParentFragmentManager()); @@ -1010,6 +1019,9 @@ private void updateMenuToggleStates(final int selectedFormatActionId) { if ((mi = _fragmentMenu.findItem(R.id.action_enable_auto_format)) != null) { mi.setChecked(_hlEditor.getAutoFormatEnabled()); } + if ((mi = _fragmentMenu.findItem(R.id.action_enable_rtl)) != null) { + mi.setChecked(_appSettings.getDocumentRtlEnabled(_document.path)); + } final SubMenu su; if (selectedFormatActionId != 0 && (mi = _fragmentMenu.findItem(R.id.submenu_format_selection)) != null && (su = mi.getSubMenu()) != null) { diff --git a/app/src/main/java/net/gsantner/markor/format/TextConverterBase.java b/app/src/main/java/net/gsantner/markor/format/TextConverterBase.java index 50cac26d6a..c5648e5885 100644 --- a/app/src/main/java/net/gsantner/markor/format/TextConverterBase.java +++ b/app/src/main/java/net/gsantner/markor/format/TextConverterBase.java @@ -147,7 +147,8 @@ protected String putContentIntoTemplate(Context context, String content, boolean html = html.replace("html,body{color:#303030;}", "html,body{color: black !important; background-color: white !important;}"); } html += HTML004_HEAD_META_VIEWPORT_MOBILE + CSS_TABLE_STYLE + CSS_CLASS_FLOAT + CSS_BUTTON_STYLE_MATERIAL + CSS_BUTTON_STYLE_EMOJIBTN + CSS_CLASS_STICKY; - if (as.isRenderRtl()) { + final boolean isRtl = as.getDocumentRtlEnabled(file != null ? GsFileUtils.getPath(file) : null); + if (isRtl) { html += HTML003_RIGHT_TO_LEFT; } @@ -185,7 +186,7 @@ protected String putContentIntoTemplate(Context context, String content, boolean .replace(TOKEN_COLOR_GREY_OF_THEME, darkTheme ? "#393939" : GsTextUtils.colorToHexString(ContextCompat.getColor(context, R.color.lighter_grey))) .replace(TOKEN_LINK_COLOR, as.getViewModeLinkColor()) .replace(TOKEN_ACCENT_COLOR, GsTextUtils.colorToHexString(ContextCompat.getColor(context, R.color.accent))) - .replace(TOKEN_TEXT_DIRECTION, as.isRenderRtl() ? "right" : "left") + .replace(TOKEN_TEXT_DIRECTION, isRtl ? "right" : "left") .replace(TOKEN_FONT, font) .replace(TOKEN_TEXT_CONVERTER_CSS_CLASS, "format-" + getClass().getSimpleName().toLowerCase().replace("textconverter", "").replace("converter", "") + (file == null ? "" : " fileext-" + GsFileUtils.getFilenameExtension(file).replace(".", ""))) .replace(TOKEN_POST_TODAY_DATE, DateFormat.getDateFormat(context).format(new Date())) diff --git a/app/src/main/java/net/gsantner/markor/model/AppSettings.java b/app/src/main/java/net/gsantner/markor/model/AppSettings.java index 80aed82124..819766fa2c 100644 --- a/app/src/main/java/net/gsantner/markor/model/AppSettings.java +++ b/app/src/main/java/net/gsantner/markor/model/AppSettings.java @@ -438,6 +438,7 @@ public void toggleFavouriteFile(final File file) { private static final String PREF_PREFIX_TODO_DONE_NAME = "PREF_PREFIX_TODO_DONE_NAME"; private static final String PREF_PREFIX_LINE_NUM_STATE = "PREF_PREFIX_LINE_NUM_STATE"; private static final String PREF_PREFIX_VIEW_FONT_SIZE = "PREF_PREFIX_VIEW_FONT_SIZE"; + private static final String PREF_PREFIX_RTL_STATE = "PREF_PREFIX_RTL_STATE"; public void setLastTodoDoneName(final String path, final String name) { if (fexists(path)) { @@ -589,6 +590,21 @@ public boolean getDocumentAutoFormatEnabled(final String path) { } } + public void setDocumentRtlEnabled(final String path, final boolean enabled) { + if (fexists(path)) { + setBool(PREF_PREFIX_RTL_STATE + path, enabled); + } + } + + public boolean getDocumentRtlEnabled(final String path) { + final boolean _default = isRenderRtl(); + if (!fexists(path)) { + return _default; + } else { + return getBool(PREF_PREFIX_RTL_STATE + path, _default); + } + } + public void setDocumentFontSize(final String path, final int size) { if (fexists(path)) { setInt(PREF_PREFIX_FONT_SIZE + path, size); diff --git a/app/src/main/res/menu/document__edit__menu.xml b/app/src/main/res/menu/document__edit__menu.xml index 8a44925ebb..9c41af9bed 100644 --- a/app/src/main/res/menu/document__edit__menu.xml +++ b/app/src/main/res/menu/document__edit__menu.xml @@ -96,6 +96,13 @@ android:title="@string/auto_format" app:showAsAction="never" /> + +