Add option to hide tooltips
This commit is contained in:
parent
cfb0d8ded7
commit
ffe2a300e4
|
|
@ -150,6 +150,7 @@ class UpdateUserPreferences implements PersistPrefs {
|
|||
this.showPdfPreview,
|
||||
this.editAfterSaving,
|
||||
this.enableTouchEvents,
|
||||
this.enableTooltips,
|
||||
});
|
||||
|
||||
final AppLayout appLayout;
|
||||
|
|
@ -175,6 +176,7 @@ class UpdateUserPreferences implements PersistPrefs {
|
|||
final BuiltMap<String, String> customColors;
|
||||
final bool editAfterSaving;
|
||||
final bool enableTouchEvents;
|
||||
final bool enableTooltips;
|
||||
}
|
||||
|
||||
class LoadAccountSuccess implements StopLoading {
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ PrefState prefReducer(
|
|||
..isHistoryVisible = historyVisibleReducer(state.isHistoryVisible, action)
|
||||
..enableDarkMode = darkModeReducer(state.enableDarkMode, action)
|
||||
..enableJSPDF = enableJspdfReducer(state.enableJSPDF, action)
|
||||
..enableTooltips = enableTooltipsReducer(state.enableTooltips, action)
|
||||
..persistData = persistDataReducer(state.persistData, action)
|
||||
..persistUI = persistUIReducer(state.persistUI, action)
|
||||
..showKanban = showKanbanReducer(state.showKanban, action)
|
||||
|
|
@ -282,6 +283,12 @@ Reducer<bool> enableJspdfReducer = combineReducers([
|
|||
}),
|
||||
]);
|
||||
|
||||
Reducer<bool> enableTooltipsReducer = combineReducers([
|
||||
TypedReducer<bool, UpdateUserPreferences>((enableTooltips, action) {
|
||||
return action.enableTooltips ?? enableTooltips;
|
||||
}),
|
||||
]);
|
||||
|
||||
Reducer<bool> persistDataReducer = combineReducers([
|
||||
TypedReducer<bool, UpdateUserPreferences>((persistData, action) {
|
||||
return action.persistData ?? persistData;
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ abstract class PrefState implements Built<PrefState, PrefStateBuilder> {
|
|||
requireAuthentication: false,
|
||||
colorTheme: kColorThemeLight,
|
||||
enableTouchEvents: true,
|
||||
enableTooltips: true,
|
||||
enableJSPDF: false,
|
||||
isFilterVisible: false,
|
||||
textScaleFactor: 1,
|
||||
|
|
@ -132,6 +133,8 @@ abstract class PrefState implements Built<PrefState, PrefStateBuilder> {
|
|||
|
||||
int get rowsPerPage;
|
||||
|
||||
bool get enableTooltips;
|
||||
|
||||
String get colorTheme;
|
||||
|
||||
bool get hideDesktopWarning;
|
||||
|
|
@ -210,6 +213,7 @@ abstract class PrefState implements Built<PrefState, PrefStateBuilder> {
|
|||
..showPdfPreview = true
|
||||
..enableTouchEvents = true
|
||||
..enableJSPDF = false
|
||||
..enableTooltips = true
|
||||
..textScaleFactor = 1
|
||||
..colorTheme =
|
||||
builder.enableDarkMode == true ? kColorThemeLight : kColorThemeLight;
|
||||
|
|
|
|||
|
|
@ -178,6 +178,9 @@ class _$PrefStateSerializer implements StructuredSerializer<PrefState> {
|
|||
'rowsPerPage',
|
||||
serializers.serialize(object.rowsPerPage,
|
||||
specifiedType: const FullType(int)),
|
||||
'enableTooltips',
|
||||
serializers.serialize(object.enableTooltips,
|
||||
specifiedType: const FullType(bool)),
|
||||
'colorTheme',
|
||||
serializers.serialize(object.colorTheme,
|
||||
specifiedType: const FullType(String)),
|
||||
|
|
@ -304,6 +307,10 @@ class _$PrefStateSerializer implements StructuredSerializer<PrefState> {
|
|||
result.rowsPerPage = serializers.deserialize(value,
|
||||
specifiedType: const FullType(int)) as int;
|
||||
break;
|
||||
case 'enableTooltips':
|
||||
result.enableTooltips = serializers.deserialize(value,
|
||||
specifiedType: const FullType(bool)) as bool;
|
||||
break;
|
||||
case 'colorTheme':
|
||||
result.colorTheme = serializers.deserialize(value,
|
||||
specifiedType: const FullType(String)) as String;
|
||||
|
|
@ -607,6 +614,8 @@ class _$PrefState extends PrefState {
|
|||
@override
|
||||
final int rowsPerPage;
|
||||
@override
|
||||
final bool enableTooltips;
|
||||
@override
|
||||
final String colorTheme;
|
||||
@override
|
||||
final bool hideDesktopWarning;
|
||||
|
|
@ -644,6 +653,7 @@ class _$PrefState extends PrefState {
|
|||
this.tapSelectedToEdit,
|
||||
this.enableJSPDF,
|
||||
this.rowsPerPage,
|
||||
this.enableTooltips,
|
||||
this.colorTheme,
|
||||
this.hideDesktopWarning,
|
||||
this.editAfterSaving,
|
||||
|
|
@ -691,6 +701,8 @@ class _$PrefState extends PrefState {
|
|||
enableJSPDF, 'PrefState', 'enableJSPDF');
|
||||
BuiltValueNullFieldError.checkNotNull(
|
||||
rowsPerPage, 'PrefState', 'rowsPerPage');
|
||||
BuiltValueNullFieldError.checkNotNull(
|
||||
enableTooltips, 'PrefState', 'enableTooltips');
|
||||
BuiltValueNullFieldError.checkNotNull(
|
||||
colorTheme, 'PrefState', 'colorTheme');
|
||||
BuiltValueNullFieldError.checkNotNull(
|
||||
|
|
@ -737,6 +749,7 @@ class _$PrefState extends PrefState {
|
|||
tapSelectedToEdit == other.tapSelectedToEdit &&
|
||||
enableJSPDF == other.enableJSPDF &&
|
||||
rowsPerPage == other.rowsPerPage &&
|
||||
enableTooltips == other.enableTooltips &&
|
||||
colorTheme == other.colorTheme &&
|
||||
hideDesktopWarning == other.hideDesktopWarning &&
|
||||
editAfterSaving == other.editAfterSaving &&
|
||||
|
|
@ -766,20 +779,20 @@ class _$PrefState extends PrefState {
|
|||
$jc(
|
||||
$jc(
|
||||
$jc(
|
||||
$jc($jc($jc($jc($jc($jc($jc($jc($jc(0, appLayout.hashCode), moduleLayout.hashCode), menuSidebarMode.hashCode), historySidebarMode.hashCode), useSidebarEditor.hashCode), customColors.hashCode), isPreviewVisible.hashCode), isMenuVisible.hashCode),
|
||||
showKanban.hashCode),
|
||||
showPdfPreview.hashCode),
|
||||
enableTouchEvents.hashCode),
|
||||
isHistoryVisible.hashCode),
|
||||
enableDarkMode.hashCode),
|
||||
isFilterVisible.hashCode),
|
||||
persistData.hashCode),
|
||||
persistUI.hashCode),
|
||||
longPressSelectionIsDefault.hashCode),
|
||||
requireAuthentication.hashCode),
|
||||
tapSelectedToEdit.hashCode),
|
||||
enableJSPDF.hashCode),
|
||||
rowsPerPage.hashCode),
|
||||
$jc($jc($jc($jc($jc($jc($jc($jc($jc($jc(0, appLayout.hashCode), moduleLayout.hashCode), menuSidebarMode.hashCode), historySidebarMode.hashCode), useSidebarEditor.hashCode), customColors.hashCode), isPreviewVisible.hashCode), isMenuVisible.hashCode), showKanban.hashCode),
|
||||
showPdfPreview.hashCode),
|
||||
enableTouchEvents.hashCode),
|
||||
isHistoryVisible.hashCode),
|
||||
enableDarkMode.hashCode),
|
||||
isFilterVisible.hashCode),
|
||||
persistData.hashCode),
|
||||
persistUI.hashCode),
|
||||
longPressSelectionIsDefault.hashCode),
|
||||
requireAuthentication.hashCode),
|
||||
tapSelectedToEdit.hashCode),
|
||||
enableJSPDF.hashCode),
|
||||
rowsPerPage.hashCode),
|
||||
enableTooltips.hashCode),
|
||||
colorTheme.hashCode),
|
||||
hideDesktopWarning.hashCode),
|
||||
editAfterSaving.hashCode),
|
||||
|
|
@ -812,6 +825,7 @@ class _$PrefState extends PrefState {
|
|||
..add('tapSelectedToEdit', tapSelectedToEdit)
|
||||
..add('enableJSPDF', enableJSPDF)
|
||||
..add('rowsPerPage', rowsPerPage)
|
||||
..add('enableTooltips', enableTooltips)
|
||||
..add('colorTheme', colorTheme)
|
||||
..add('hideDesktopWarning', hideDesktopWarning)
|
||||
..add('editAfterSaving', editAfterSaving)
|
||||
|
|
@ -926,6 +940,11 @@ class PrefStateBuilder implements Builder<PrefState, PrefStateBuilder> {
|
|||
int get rowsPerPage => _$this._rowsPerPage;
|
||||
set rowsPerPage(int rowsPerPage) => _$this._rowsPerPage = rowsPerPage;
|
||||
|
||||
bool _enableTooltips;
|
||||
bool get enableTooltips => _$this._enableTooltips;
|
||||
set enableTooltips(bool enableTooltips) =>
|
||||
_$this._enableTooltips = enableTooltips;
|
||||
|
||||
String _colorTheme;
|
||||
String get colorTheme => _$this._colorTheme;
|
||||
set colorTheme(String colorTheme) => _$this._colorTheme = colorTheme;
|
||||
|
|
@ -985,6 +1004,7 @@ class PrefStateBuilder implements Builder<PrefState, PrefStateBuilder> {
|
|||
_tapSelectedToEdit = $v.tapSelectedToEdit;
|
||||
_enableJSPDF = $v.enableJSPDF;
|
||||
_rowsPerPage = $v.rowsPerPage;
|
||||
_enableTooltips = $v.enableTooltips;
|
||||
_colorTheme = $v.colorTheme;
|
||||
_hideDesktopWarning = $v.hideDesktopWarning;
|
||||
_editAfterSaving = $v.editAfterSaving;
|
||||
|
|
@ -1042,6 +1062,7 @@ class PrefStateBuilder implements Builder<PrefState, PrefStateBuilder> {
|
|||
tapSelectedToEdit: BuiltValueNullFieldError.checkNotNull(tapSelectedToEdit, 'PrefState', 'tapSelectedToEdit'),
|
||||
enableJSPDF: BuiltValueNullFieldError.checkNotNull(enableJSPDF, 'PrefState', 'enableJSPDF'),
|
||||
rowsPerPage: BuiltValueNullFieldError.checkNotNull(rowsPerPage, 'PrefState', 'rowsPerPage'),
|
||||
enableTooltips: BuiltValueNullFieldError.checkNotNull(enableTooltips, 'PrefState', 'enableTooltips'),
|
||||
colorTheme: BuiltValueNullFieldError.checkNotNull(colorTheme, 'PrefState', 'colorTheme'),
|
||||
hideDesktopWarning: BuiltValueNullFieldError.checkNotNull(hideDesktopWarning, 'PrefState', 'hideDesktopWarning'),
|
||||
editAfterSaving: BuiltValueNullFieldError.checkNotNull(editAfterSaving, 'PrefState', 'editAfterSaving'),
|
||||
|
|
|
|||
|
|
@ -663,7 +663,7 @@ class _DrawerTileState extends State<DrawerTile> {
|
|||
);
|
||||
} else if (userCompany.canCreate(widget.entityType)) {
|
||||
trailingWidget = IconButton(
|
||||
tooltip: widget.iconTooltip,
|
||||
tooltip: prefState.enableTooltips ? widget.iconTooltip : null,
|
||||
icon: Icon(
|
||||
Icons.add_circle_outline,
|
||||
color: textColor,
|
||||
|
|
@ -769,6 +769,7 @@ class SidebarFooter extends StatelessWidget {
|
|||
Widget build(BuildContext context) {
|
||||
final store = StoreProvider.of<AppState>(context);
|
||||
final state = store.state;
|
||||
final prefState = state.prefState;
|
||||
final localization = AppLocalization.of(context);
|
||||
final account = state.userCompany.account;
|
||||
|
||||
|
|
@ -784,7 +785,7 @@ class SidebarFooter extends StatelessWidget {
|
|||
if (!Config.DEMO_MODE && !state.isDemo)
|
||||
if (state.isSelfHosted && !account.isSchedulerRunning)
|
||||
IconButton(
|
||||
tooltip: localization.error,
|
||||
tooltip: prefState.enableTooltips ? localization.error : '',
|
||||
icon: Icon(
|
||||
Icons.warning,
|
||||
color: Colors.red,
|
||||
|
|
@ -811,7 +812,7 @@ class SidebarFooter extends StatelessWidget {
|
|||
)
|
||||
else if (state.credentials.token.isEmpty)
|
||||
IconButton(
|
||||
tooltip: localization.error,
|
||||
tooltip: prefState.enableTooltips ? localization.error : '',
|
||||
icon: Icon(
|
||||
Icons.warning,
|
||||
color: Colors.red,
|
||||
|
|
@ -823,7 +824,9 @@ class SidebarFooter extends StatelessWidget {
|
|||
)
|
||||
else if (state.isSelfHosted && state.isUpdateAvailable)
|
||||
IconButton(
|
||||
tooltip: localization.updateAvailable,
|
||||
tooltip: prefState.enableTooltips
|
||||
? localization.updateAvailable
|
||||
: '',
|
||||
icon: Icon(
|
||||
Icons.warning,
|
||||
color: Theme.of(context).colorScheme.secondary,
|
||||
|
|
@ -881,12 +884,13 @@ class SidebarFooter extends StatelessWidget {
|
|||
IconButton(
|
||||
icon: Icon(Icons.mail),
|
||||
onPressed: () => _showContactUs(context),
|
||||
tooltip: localization.contactUs,
|
||||
tooltip: prefState.enableTooltips ? localization.contactUs : '',
|
||||
),
|
||||
IconButton(
|
||||
icon: Icon(Icons.forum),
|
||||
onPressed: () => launch(kForumUrl),
|
||||
tooltip: localization.supportForum,
|
||||
tooltip:
|
||||
prefState.enableTooltips ? localization.supportForum : '',
|
||||
),
|
||||
IconButton(
|
||||
icon: Icon(Icons.help_outline),
|
||||
|
|
@ -912,13 +916,13 @@ class SidebarFooter extends StatelessWidget {
|
|||
|
||||
launch(url);
|
||||
},
|
||||
tooltip: localization.userGuide,
|
||||
tooltip: prefState.enableTooltips ? localization.userGuide : '',
|
||||
),
|
||||
IconButton(
|
||||
icon: Icon(Icons.info_outline),
|
||||
// prevent the modal from being stuck over the pdf
|
||||
onPressed: () => _showAbout(context),
|
||||
tooltip: localization.about,
|
||||
tooltip: prefState.enableTooltips ? localization.about : '',
|
||||
),
|
||||
/*
|
||||
if (kDebugMode)
|
||||
|
|
@ -937,7 +941,7 @@ class SidebarFooter extends StatelessWidget {
|
|||
Icons.warning,
|
||||
color: Colors.red,
|
||||
),
|
||||
tooltip: localization.error,
|
||||
tooltip: prefState.enableTooltips ? localization.error : '',
|
||||
onPressed: () => showDialog<ErrorDialog>(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
|
|
@ -953,7 +957,8 @@ class SidebarFooter extends StatelessWidget {
|
|||
AppBorder(
|
||||
isLeft: true,
|
||||
child: Tooltip(
|
||||
message: localization.hideMenu,
|
||||
message:
|
||||
prefState.enableTooltips ? localization.hideMenu : '',
|
||||
child: InkWell(
|
||||
onTap: () => store.dispatch(
|
||||
UpdateUserPreferences(sidebar: AppSidebar.menu)),
|
||||
|
|
@ -1047,7 +1052,8 @@ class SidebarFooterCollapsed extends StatelessWidget {
|
|||
Icons.chevron_right,
|
||||
color: state.isUpdateAvailable ? state.accentColor : null,
|
||||
),
|
||||
tooltip: localization.showMenu,
|
||||
tooltip:
|
||||
state.prefState.enableTooltips ? localization.showMenu : null,
|
||||
onPressed: () {
|
||||
store.dispatch(UpdateUserPreferences(sidebar: AppSidebar.menu));
|
||||
},
|
||||
|
|
|
|||
|
|
@ -233,6 +233,15 @@ class _DeviceSettingsState extends State<DeviceSettings>
|
|||
},
|
||||
),
|
||||
if (isDesktop(context)) ...[
|
||||
SwitchListTile(
|
||||
title: Text(localization.enableTooltips),
|
||||
subtitle: Text(localization.enableTooltipsHelp),
|
||||
value: prefState.enableTooltips,
|
||||
onChanged: (value) =>
|
||||
viewModel.onEnableTooltipsChanged(context, value),
|
||||
activeColor: Theme.of(context).colorScheme.secondary,
|
||||
secondary: Icon(MdiIcons.tooltip),
|
||||
),
|
||||
SwitchListTile(
|
||||
title: Text(localization.enableTouchEvents),
|
||||
subtitle: Text(localization.enableTouchEventsHelp),
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ class DeviceSettingsVM {
|
|||
@required this.onTextScaleFactorChanged,
|
||||
@required this.onEditAfterSavingChanged,
|
||||
@required this.onEnableTouchEventsChanged,
|
||||
@required this.onEnableTooltipsChanged,
|
||||
});
|
||||
|
||||
static DeviceSettingsVM fromStore(Store<AppState> store) {
|
||||
|
|
@ -116,6 +117,9 @@ class DeviceSettingsVM {
|
|||
onTextScaleFactorChanged: (context, value) {
|
||||
store.dispatch(UpdateUserPreferences(textScaleFactor: value));
|
||||
},
|
||||
onEnableTooltipsChanged: (context, value) {
|
||||
store.dispatch(UpdateUserPreferences(enableTooltips: value));
|
||||
},
|
||||
onColorThemeChanged: (context, value) async {
|
||||
if (store.state.prefState.colorTheme != value) {
|
||||
store.dispatch(UpdateUserPreferences(colorTheme: value));
|
||||
|
|
@ -207,6 +211,7 @@ class DeviceSettingsVM {
|
|||
final Function(BuildContext, bool) onShowPdfChanged;
|
||||
final Function(BuildContext, bool) onEnableJSPDFChanged;
|
||||
final Function(BuildContext, bool) onEnableTouchEventsChanged;
|
||||
final Function(BuildContext, bool) onEnableTooltipsChanged;
|
||||
final Function(BuildContext, double) onTextScaleFactorChanged;
|
||||
final Future<bool> authenticationSupported;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
|||
static final Map<String, Map<String, String>> _localizedValues = {
|
||||
'en': {
|
||||
// STARTER: lang key - do not remove comment
|
||||
'enable_tooltips': 'Enable Tooltips',
|
||||
'enable_tooltips_help': 'Show tooltips when hovering the mouse',
|
||||
'multiple_client_error': 'Error: records belong to more than one client',
|
||||
'register_label': 'Create your account in seconds',
|
||||
'login_label': 'Login to an existing account',
|
||||
|
|
@ -69670,11 +69672,18 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
|||
_localizedValues[localeCode]['login_label'] ??
|
||||
_localizedValues[localeCode]['login_label'];
|
||||
|
||||
|
||||
String get multipleClientError =>
|
||||
_localizedValues[localeCode]['multiple_client_error'] ??
|
||||
_localizedValues[localeCode]['multiple_client_error'];
|
||||
|
||||
String get enableTooltips =>
|
||||
_localizedValues[localeCode]['enable_tooltips'] ??
|
||||
_localizedValues[localeCode]['enable_tooltips'];
|
||||
|
||||
String get enableTooltipsHelp =>
|
||||
_localizedValues[localeCode]['enable_tooltips_help'] ??
|
||||
_localizedValues[localeCode]['enable_tooltips_help'];
|
||||
|
||||
// STARTER: lang field - do not remove comment
|
||||
|
||||
String lookup(String key) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue