|
@@ -34,6 +34,8 @@ class AppearanceSettingsCubit extends Cubit<AppearanceSettingsState> {
|
|
setting.themeMode,
|
|
setting.themeMode,
|
|
setting.font,
|
|
setting.font,
|
|
setting.monospaceFont,
|
|
setting.monospaceFont,
|
|
|
|
+ setting.layoutDirection,
|
|
|
|
+ setting.textDirection,
|
|
setting.locale,
|
|
setting.locale,
|
|
setting.isMenuCollapsed,
|
|
setting.isMenuCollapsed,
|
|
setting.menuOffset,
|
|
setting.menuOffset,
|
|
@@ -71,6 +73,19 @@ class AppearanceSettingsCubit extends Cubit<AppearanceSettingsState> {
|
|
);
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ void setLayoutDirection(LayoutDirection layoutDirection) {
|
|
|
|
+ _setting.layoutDirection = layoutDirection.toLayoutDirectionPB();
|
|
|
|
+ _saveAppearanceSettings();
|
|
|
|
+ emit(state.copyWith(layoutDirection: layoutDirection));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ void setTextDirection(AppFlowyTextDirection? textDirection) {
|
|
|
|
+ _setting.textDirection =
|
|
|
|
+ textDirection?.toTextDirectionPB() ?? TextDirectionPB.FALLBACK;
|
|
|
|
+ _saveAppearanceSettings();
|
|
|
|
+ emit(state.copyWith(textDirection: textDirection));
|
|
|
|
+ }
|
|
|
|
+
|
|
/// Update selected font in the user's settings and emit an updated state
|
|
/// Update selected font in the user's settings and emit an updated state
|
|
/// with the font name.
|
|
/// with the font name.
|
|
void setFontFamily(String fontFamilyName) {
|
|
void setFontFamily(String fontFamilyName) {
|
|
@@ -192,6 +207,56 @@ ThemeModePB _themeModeToPB(ThemeMode themeMode) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+enum LayoutDirection {
|
|
|
|
+ ltrLayout,
|
|
|
|
+ rtlLayout;
|
|
|
|
+
|
|
|
|
+ static LayoutDirection fromLayoutDirectionPB(
|
|
|
|
+ LayoutDirectionPB layoutDirectionPB,
|
|
|
|
+ ) =>
|
|
|
|
+ layoutDirectionPB == LayoutDirectionPB.RTLLayout
|
|
|
|
+ ? LayoutDirection.rtlLayout
|
|
|
|
+ : LayoutDirection.ltrLayout;
|
|
|
|
+
|
|
|
|
+ LayoutDirectionPB toLayoutDirectionPB() => this == LayoutDirection.rtlLayout
|
|
|
|
+ ? LayoutDirectionPB.RTLLayout
|
|
|
|
+ : LayoutDirectionPB.LTRLayout;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+enum AppFlowyTextDirection {
|
|
|
|
+ ltr,
|
|
|
|
+ rtl,
|
|
|
|
+ auto;
|
|
|
|
+
|
|
|
|
+ static AppFlowyTextDirection? fromTextDirectionPB(
|
|
|
|
+ TextDirectionPB? textDirectionPB,
|
|
|
|
+ ) {
|
|
|
|
+ switch (textDirectionPB) {
|
|
|
|
+ case TextDirectionPB.LTR:
|
|
|
|
+ return AppFlowyTextDirection.ltr;
|
|
|
|
+ case TextDirectionPB.RTL:
|
|
|
|
+ return AppFlowyTextDirection.rtl;
|
|
|
|
+ case TextDirectionPB.AUTO:
|
|
|
|
+ return AppFlowyTextDirection.auto;
|
|
|
|
+ default:
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ TextDirectionPB toTextDirectionPB() {
|
|
|
|
+ switch (this) {
|
|
|
|
+ case AppFlowyTextDirection.ltr:
|
|
|
|
+ return TextDirectionPB.LTR;
|
|
|
|
+ case AppFlowyTextDirection.rtl:
|
|
|
|
+ return TextDirectionPB.RTL;
|
|
|
|
+ case AppFlowyTextDirection.auto:
|
|
|
|
+ return TextDirectionPB.AUTO;
|
|
|
|
+ default:
|
|
|
|
+ return TextDirectionPB.FALLBACK;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
@freezed
|
|
@freezed
|
|
class AppearanceSettingsState with _$AppearanceSettingsState {
|
|
class AppearanceSettingsState with _$AppearanceSettingsState {
|
|
const AppearanceSettingsState._();
|
|
const AppearanceSettingsState._();
|
|
@@ -201,6 +266,8 @@ class AppearanceSettingsState with _$AppearanceSettingsState {
|
|
required ThemeMode themeMode,
|
|
required ThemeMode themeMode,
|
|
required String font,
|
|
required String font,
|
|
required String monospaceFont,
|
|
required String monospaceFont,
|
|
|
|
+ required LayoutDirection layoutDirection,
|
|
|
|
+ required AppFlowyTextDirection? textDirection,
|
|
required Locale locale,
|
|
required Locale locale,
|
|
required bool isMenuCollapsed,
|
|
required bool isMenuCollapsed,
|
|
required double menuOffset,
|
|
required double menuOffset,
|
|
@@ -211,6 +278,8 @@ class AppearanceSettingsState with _$AppearanceSettingsState {
|
|
ThemeModePB themeModePB,
|
|
ThemeModePB themeModePB,
|
|
String font,
|
|
String font,
|
|
String monospaceFont,
|
|
String monospaceFont,
|
|
|
|
+ LayoutDirectionPB layoutDirectionPB,
|
|
|
|
+ TextDirectionPB? textDirectionPB,
|
|
LocaleSettingsPB localePB,
|
|
LocaleSettingsPB localePB,
|
|
bool isMenuCollapsed,
|
|
bool isMenuCollapsed,
|
|
double menuOffset,
|
|
double menuOffset,
|
|
@@ -219,6 +288,8 @@ class AppearanceSettingsState with _$AppearanceSettingsState {
|
|
appTheme: appTheme,
|
|
appTheme: appTheme,
|
|
font: font,
|
|
font: font,
|
|
monospaceFont: monospaceFont,
|
|
monospaceFont: monospaceFont,
|
|
|
|
+ layoutDirection: LayoutDirection.fromLayoutDirectionPB(layoutDirectionPB),
|
|
|
|
+ textDirection: AppFlowyTextDirection.fromTextDirectionPB(textDirectionPB),
|
|
themeMode: _themeModeFromPB(themeModePB),
|
|
themeMode: _themeModeFromPB(themeModePB),
|
|
locale: Locale(localePB.languageCode, localePB.countryCode),
|
|
locale: Locale(localePB.languageCode, localePB.countryCode),
|
|
isMenuCollapsed: isMenuCollapsed,
|
|
isMenuCollapsed: isMenuCollapsed,
|