From afc457534f68bf938b572d92159ea00e0636e53d Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 12 May 2022 18:50:36 +0300 Subject: [PATCH] Add option to hide tooltips --- lib/ui/app/actions_menu_button.dart | 4 ++ lib/ui/app/app_bottom_bar.dart | 50 +++++++++++++++++-------- lib/ui/app/list_scaffold.dart | 7 +++- lib/ui/app/tables/entity_datatable.dart | 5 ++- lib/ui/dashboard/dashboard_screen.dart | 4 +- lib/ui/reports/reports_screen.dart | 4 +- 6 files changed, 55 insertions(+), 19 deletions(-) diff --git a/lib/ui/app/actions_menu_button.dart b/lib/ui/app/actions_menu_button.dart index a556c032f..9d57cf485 100644 --- a/lib/ui/app/actions_menu_button.dart +++ b/lib/ui/app/actions_menu_button.dart @@ -1,8 +1,10 @@ // Flutter imports: import 'package:flutter/material.dart'; +import 'package:flutter_redux/flutter_redux.dart'; // Project imports: import 'package:invoiceninja_flutter/data/models/models.dart'; +import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/utils/icons.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; @@ -28,6 +30,7 @@ class ActionMenuButton extends StatelessWidget { @override Widget build(BuildContext context) { final List> actions = []; + final store = StoreProvider.of(context); if (isSaving) { return IconButton( @@ -75,6 +78,7 @@ class ActionMenuButton extends StatelessWidget { onSelected(context, action); }, enabled: actions.isNotEmpty, + tooltip: store.state.prefState.enableTooltips ? null : '', ); } } diff --git a/lib/ui/app/app_bottom_bar.dart b/lib/ui/app/app_bottom_bar.dart index f3bf12ac1..bd56951ab 100644 --- a/lib/ui/app/app_bottom_bar.dart +++ b/lib/ui/app/app_bottom_bar.dart @@ -137,6 +137,7 @@ class _AppBottomBarState extends State { @override Widget build(BuildContext context) { final state = StoreProvider.of(context).state; + final prefState = state.prefState; final _showFilterStateSheet = () { if (closeBottomSheet() == kFilterStatePanel) { @@ -410,7 +411,9 @@ class _AppBottomBarState extends State { if (!widget.hideListOptions) ...[ if (isMobile(context)) IconButton( - tooltip: localization.multiselect, + tooltip: prefState.enableTooltips + ? localization.multiselect + : null, icon: Icon(Icons.check_box), onPressed: () => widget.onCheckboxPressed(), ), @@ -429,7 +432,8 @@ class _AppBottomBarState extends State { ), if (widget.statuses.isNotEmpty && isMobile(context)) IconButton( - tooltip: localization.status, + tooltip: + prefState.enableTooltips ? localization.status : null, icon: Icon(Icons.filter), onPressed: _showFilterStatusSheet, color: store.state @@ -440,8 +444,10 @@ class _AppBottomBarState extends State { ), if (widget.customValues1.isNotEmpty) IconButton( - tooltip: localization.filteredBy.replaceFirst( - ':value', widget.customValues1.join(', ')), + tooltip: prefState.enableTooltips + ? localization.filteredBy.replaceFirst( + ':value', widget.customValues1.join(', ')) + : null, icon: Icon(Icons.looks_one), onPressed: _showFilterCustom1Sheet, color: store.state @@ -452,8 +458,10 @@ class _AppBottomBarState extends State { ), if (widget.customValues2.isNotEmpty) IconButton( - tooltip: localization.filteredBy.replaceFirst( - ':value', widget.customValues2.join(', ')), + tooltip: prefState.enableTooltips + ? localization.filteredBy.replaceFirst( + ':value', widget.customValues2.join(', ')) + : null, icon: Icon(Icons.looks_two), onPressed: _showFilterCustom2Sheet, color: store.state @@ -464,8 +472,10 @@ class _AppBottomBarState extends State { ), if (widget.customValues3.isNotEmpty) IconButton( - tooltip: localization.filteredBy.replaceFirst( - ':value', widget.customValues3.join(', ')), + tooltip: prefState.enableTooltips + ? localization.filteredBy.replaceFirst( + ':value', widget.customValues3.join(', ')) + : '', icon: Icon(Icons.looks_3), onPressed: _showFilterCustom3Sheet, color: store.state @@ -476,8 +486,10 @@ class _AppBottomBarState extends State { ), if (widget.customValues4.isNotEmpty) IconButton( - tooltip: localization.filteredBy.replaceFirst( - ':value', widget.customValues4.join(', ')), + tooltip: prefState.enableTooltips + ? localization.filteredBy.replaceFirst( + ':value', widget.customValues4.join(', ')) + : '', icon: Icon(Icons.looks_4), onPressed: _showFilterCustom4Sheet, color: store.state @@ -488,8 +500,11 @@ class _AppBottomBarState extends State { ), if (!widget.entityType.isSetting) IconButton( - tooltip: - isList ? localization.showTable : localization.showList, + tooltip: prefState.enableTooltips + ? (isList + ? localization.showTable + : localization.showList) + : null, icon: Icon(isList ? Icons.table_chart : Icons.view_list), onPressed: () { store.dispatch(SwitchListTableLayout()); @@ -498,7 +513,8 @@ class _AppBottomBarState extends State { if (!widget.hideListOptions) ...[ if (isList && widget.sortFields.isNotEmpty) IconButton( - tooltip: localization.sort, + tooltip: + prefState.enableTooltips ? localization.sort : null, icon: Icon(Icons.sort_by_alpha), onPressed: _showSortSheet, ), @@ -515,14 +531,18 @@ class _AppBottomBarState extends State { else IconButton( icon: Icon(Icons.view_week), - tooltip: localization.columns, + tooltip: prefState.enableTooltips + ? localization.columns + : null, onPressed: _onColumnsPressed, ), if (state.prefState.isDesktop) AppBorder( isLeft: true, child: Tooltip( - message: localization.refreshData, + message: prefState.enableTooltips + ? localization.refreshData + : '', child: InkWell( onTap: () => store.dispatch(RefreshData()), child: Padding( diff --git a/lib/ui/app/list_scaffold.dart b/lib/ui/app/list_scaffold.dart index f06cfd80a..294a0972c 100644 --- a/lib/ui/app/list_scaffold.dart +++ b/lib/ui/app/list_scaffold.dart @@ -48,6 +48,7 @@ class ListScaffold extends StatelessWidget { Widget build(BuildContext context) { final store = StoreProvider.of(context); final state = store.state; + final prefState = state.prefState; final localization = AppLocalization.of(context); final isSettings = entityType.isSetting; @@ -80,6 +81,7 @@ class ListScaffold extends StatelessWidget { } else if (entityType != null && entityType != EntityType.settings) { leading = IconButton( icon: Icon(Icons.add), + tooltip: prefState.enableTooltips ? localization.createNew : null, onPressed: () { createEntityByType(entityType: entityType, context: context); }, @@ -93,6 +95,7 @@ class ListScaffold extends StatelessWidget { Expanded( child: IconButton( icon: Icon(Icons.check_box), + tooltip: prefState.enableTooltips ? localization.multiselect : null, onPressed: state.prefState.showKanban && state.uiState.mainRoute == '${EntityType.task}' ? null @@ -144,7 +147,9 @@ class ListScaffold extends StatelessWidget { Builder( builder: (context) => IconButton( padding: const EdgeInsets.only(left: 4, right: 20), - tooltip: localization.history, + tooltip: prefState.enableTooltips + ? localization.history + : null, icon: Icon(Icons.history), onPressed: () { if (isMobile(context) || diff --git a/lib/ui/app/tables/entity_datatable.dart b/lib/ui/app/tables/entity_datatable.dart index cf6421bf9..8213bf49c 100644 --- a/lib/ui/app/tables/entity_datatable.dart +++ b/lib/ui/app/tables/entity_datatable.dart @@ -53,6 +53,7 @@ class EntityDataTableSource extends AppDataTableSource { @override DataRow getRow(int index) { final state = StoreProvider.of(context).state; + final prefState = state.prefState; final entity = entityMap[entityList[index]]; entityPresenter.initialize(entity, context); @@ -113,7 +114,9 @@ class EntityDataTableSource extends AppDataTableSource { Row( children: [ IconButton( - tooltip: AppLocalization.of(context).editRecord, + tooltip: prefState.enableTooltips + ? AppLocalization.of(context).editRecord + : null, onPressed: () => editEntity(context: context, entity: entity), icon: GestureDetector( child: Icon(MdiIcons.circleEditOutline), diff --git a/lib/ui/dashboard/dashboard_screen.dart b/lib/ui/dashboard/dashboard_screen.dart index 0eb0e3da5..566bd1d09 100644 --- a/lib/ui/dashboard/dashboard_screen.dart +++ b/lib/ui/dashboard/dashboard_screen.dart @@ -224,7 +224,9 @@ class _DashboardScreenState extends State Builder( builder: (context) => IconButton( padding: const EdgeInsets.only(left: 4, right: 20), - tooltip: localization.history, + tooltip: state.prefState.enableTooltips + ? localization.history + : null, icon: Icon(Icons.history), onPressed: () { if (isMobile(context) || state.prefState.isHistoryFloated) { diff --git a/lib/ui/reports/reports_screen.dart b/lib/ui/reports/reports_screen.dart index 7935bc2f4..7dd05438a 100644 --- a/lib/ui/reports/reports_screen.dart +++ b/lib/ui/reports/reports_screen.dart @@ -386,7 +386,9 @@ class ReportsScreen extends StatelessWidget { builder: (context) => IconButton( icon: Icon(Icons.history), padding: const EdgeInsets.only(left: 4, right: 20), - tooltip: localization.history, + tooltip: state.prefState.enableTooltips + ? localization.history + : null, onPressed: () { if (isMobile(context) || state.prefState.isHistoryFloated) {