TF-3911 Add Keyboard shortcuts dictionary in Setting
This commit is contained in:
@@ -13,6 +13,7 @@ enum AccountMenuItem {
|
||||
notification,
|
||||
contactSupport,
|
||||
storage,
|
||||
keyboardShortcuts,
|
||||
signOut,
|
||||
none;
|
||||
|
||||
@@ -38,6 +39,8 @@ enum AccountMenuItem {
|
||||
return imagePaths.icHelp;
|
||||
case AccountMenuItem.storage:
|
||||
return imagePaths.icStorage;
|
||||
case AccountMenuItem.keyboardShortcuts:
|
||||
return imagePaths.icKeyboard;
|
||||
case AccountMenuItem.signOut:
|
||||
return imagePaths.icSignOut;
|
||||
case AccountMenuItem.none:
|
||||
@@ -67,6 +70,8 @@ enum AccountMenuItem {
|
||||
return appLocalizations.contactSupport;
|
||||
case AccountMenuItem.storage:
|
||||
return appLocalizations.storageQuotas;
|
||||
case AccountMenuItem.keyboardShortcuts:
|
||||
return appLocalizations.keyboardShortcuts;
|
||||
case AccountMenuItem.signOut:
|
||||
return appLocalizations.sign_out;
|
||||
case AccountMenuItem.none:
|
||||
@@ -90,6 +95,10 @@ enum AccountMenuItem {
|
||||
return appLocalizations.folderVisibilitySubtitle;
|
||||
case AccountMenuItem.storage:
|
||||
return appLocalizations.storageSettingExplanation;
|
||||
case AccountMenuItem.notification:
|
||||
return appLocalizations.allowsTwakeMailToNotifyYouWhenANewMessageArrivesOnYourPhone;
|
||||
case AccountMenuItem.keyboardShortcuts:
|
||||
return appLocalizations.keyboardShortcutsSettingExplanation;
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
@@ -117,6 +126,8 @@ enum AccountMenuItem {
|
||||
return 'contact-support';
|
||||
case AccountMenuItem.storage:
|
||||
return 'storage';
|
||||
case AccountMenuItem.keyboardShortcuts:
|
||||
return 'keyboard-shortcuts';
|
||||
case AccountMenuItem.signOut:
|
||||
return 'sign-out';
|
||||
case AccountMenuItem.none:
|
||||
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
enum ShortcutCategory {
|
||||
navigationAndClosing,
|
||||
readingAndReplying,
|
||||
messageManagementAndSelection,
|
||||
}
|
||||
|
||||
enum ShortcutContext {
|
||||
mailComposer,
|
||||
focusOnSearch,
|
||||
openedModal,
|
||||
mailboxList,
|
||||
mailboxListWithSelectedEmail,
|
||||
openedMailView,
|
||||
}
|
||||
|
||||
class KeyboardShortcut with EquatableMixin {
|
||||
final String label;
|
||||
final ShortcutCategory category;
|
||||
final ShortcutContext context;
|
||||
final List<String> keys;
|
||||
|
||||
const KeyboardShortcut({
|
||||
required this.label,
|
||||
required this.category,
|
||||
required this.context,
|
||||
required this.keys,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
label,
|
||||
category,
|
||||
context,
|
||||
keys,
|
||||
];
|
||||
}
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/keyboard_shortcuts/keyboard_shortcut.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
class KeyboardShortcutsManager {
|
||||
KeyboardShortcutsManager._();
|
||||
|
||||
static List<KeyboardShortcut> generateKeyboardShortcuts(
|
||||
AppLocalizations appLocalizations,
|
||||
) {
|
||||
return [
|
||||
// Navigation & Closing
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.closeMailComposer,
|
||||
category: ShortcutCategory.navigationAndClosing,
|
||||
context: ShortcutContext.mailComposer,
|
||||
keys: ['ESC'],
|
||||
),
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.removeFocusFromSearch,
|
||||
category: ShortcutCategory.navigationAndClosing,
|
||||
context: ShortcutContext.focusOnSearch,
|
||||
keys: ['ESC'],
|
||||
),
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.closeModalWindow,
|
||||
category: ShortcutCategory.navigationAndClosing,
|
||||
context: ShortcutContext.openedModal,
|
||||
keys: ['ESC'],
|
||||
),
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.openNewMessage,
|
||||
category: ShortcutCategory.navigationAndClosing,
|
||||
context: ShortcutContext.mailboxList,
|
||||
keys: ['N'],
|
||||
),
|
||||
|
||||
// Reading & Replying
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.reply,
|
||||
category: ShortcutCategory.readingAndReplying,
|
||||
context: ShortcutContext.openedMailView,
|
||||
keys: ['R'],
|
||||
),
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.replyToAll,
|
||||
category: ShortcutCategory.readingAndReplying,
|
||||
context: ShortcutContext.openedMailView,
|
||||
keys: ['Shift', 'R'],
|
||||
),
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.forward,
|
||||
category: ShortcutCategory.readingAndReplying,
|
||||
context: ShortcutContext.openedMailView,
|
||||
keys: ['F'],
|
||||
),
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.mark_as_read,
|
||||
category: ShortcutCategory.readingAndReplying,
|
||||
context: ShortcutContext.openedMailView,
|
||||
keys: ['Q'],
|
||||
),
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.mark_as_unread,
|
||||
category: ShortcutCategory.readingAndReplying,
|
||||
context: ShortcutContext.openedMailView,
|
||||
keys: ['U'],
|
||||
),
|
||||
|
||||
// Message Management & Selection
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.deleteMessage,
|
||||
category: ShortcutCategory.messageManagementAndSelection,
|
||||
context: ShortcutContext.openedMailView,
|
||||
keys: ['Delete'],
|
||||
),
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.deleteMessage,
|
||||
category: ShortcutCategory.messageManagementAndSelection,
|
||||
context: ShortcutContext.mailboxListWithSelectedEmail,
|
||||
keys: ['Delete'],
|
||||
),
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.mark_as_read,
|
||||
category: ShortcutCategory.messageManagementAndSelection,
|
||||
context: ShortcutContext.mailboxListWithSelectedEmail,
|
||||
keys: ['Q'],
|
||||
),
|
||||
KeyboardShortcut(
|
||||
label: appLocalizations.mark_as_unread,
|
||||
category: ShortcutCategory.messageManagementAndSelection,
|
||||
context: ShortcutContext.mailboxListWithSelectedEmail,
|
||||
keys: ['U'],
|
||||
),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user