wip: add notificator util.

This commit is contained in:
2021-12-14 17:54:07 +08:00
parent 1f542cb585
commit cbaf61f70b
23 changed files with 1830 additions and 73 deletions
+36 -40
View File
@@ -9,6 +9,7 @@ import 'package:dde_gesture_manager/models/settings.provider.dart';
import 'package:dde_gesture_manager/pages/content.dart';
import 'package:dde_gesture_manager/utils/helper.dart';
import 'package:dde_gesture_manager/utils/keyboard_mapper.dart';
import 'package:dde_gesture_manager/utils/notificator.dart';
import 'package:dde_gesture_manager/widgets/dde_button.dart';
import 'package:dde_gesture_manager/widgets/dde_data_table.dart';
import 'package:dde_gesture_manager/widgets/dde_text_field.dart';
@@ -126,32 +127,27 @@ class GestureEditor extends StatelessWidget {
controller: horizontalCtrl,
child: ConstrainedBox(
constraints: BoxConstraints(minWidth: constraints.maxWidth),
child: IgnorePointer(
ignoring: schemeProvider.readOnly,
child: DDataTable(
showBottomBorder: true,
headingRowHeight: _headingRowHeight,
showCheckboxColumn: true,
headerBackgroundColor: context.t.dialogBackgroundColor,
verticalScrollController: verticalCtrl,
dataRowColor:
MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.hovered))
return context.t.dialogBackgroundColor;
if (states.contains(MaterialState.selected))
return context.read<SettingsProvider>().currentActiveColor;
return null;
}),
columns: [
DDataColumn(label: Text(LocaleKeys.gesture_editor_fingers.tr()), center: true),
DDataColumn(label: Text(LocaleKeys.gesture_editor_gesture.tr()), center: true),
DDataColumn(label: Text(LocaleKeys.gesture_editor_direction.tr()), center: true),
DDataColumn(label: Text(LocaleKeys.gesture_editor_type.tr()), center: true),
DDataColumn(label: Text(LocaleKeys.gesture_editor_command.tr())),
DDataColumn(label: Text(LocaleKeys.gesture_editor_remark.tr())),
],
rows: _buildDataRows(schemeProvider.gestures, context),
),
child: DDataTable(
showBottomBorder: true,
headingRowHeight: _headingRowHeight,
showCheckboxColumn: true,
headerBackgroundColor: context.t.dialogBackgroundColor,
verticalScrollController: verticalCtrl,
dataRowColor: MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.hovered)) return context.t.dialogBackgroundColor;
if (states.contains(MaterialState.selected))
return context.read<SettingsProvider>().currentActiveColor;
return null;
}),
columns: [
DDataColumn(label: Text(LocaleKeys.gesture_editor_fingers.tr()), center: true),
DDataColumn(label: Text(LocaleKeys.gesture_editor_gesture.tr()), center: true),
DDataColumn(label: Text(LocaleKeys.gesture_editor_direction.tr()), center: true),
DDataColumn(label: Text(LocaleKeys.gesture_editor_type.tr()), center: true),
DDataColumn(label: Text(LocaleKeys.gesture_editor_command.tr())),
DDataColumn(label: Text(LocaleKeys.gesture_editor_remark.tr())),
],
rows: _buildDataRows(context, schemeProvider.gestures, schemeProvider.readOnly),
),
),
),
@@ -169,9 +165,7 @@ class GestureEditor extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.end,
children: [
DButton.add(
enabled: !schemeProvider.readOnly &&
!gesturePropProvider.editMode! &&
!schemeTree.fullFiled,
enabled: !schemeProvider.readOnly && !gesturePropProvider.editMode! && !schemeTree.fullFiled,
onTap: () {
var schemeProvider = context.read<SchemeProvider>();
var newGestures = [
@@ -201,15 +195,16 @@ class GestureEditor extends StatelessWidget {
},
),
DButton.duplicate(
enabled: !schemeProvider.readOnly &&
gesturePropProvider != GestureProp.empty() &&
!gesturePropProvider.editMode!,
enabled: gesturePropProvider != GestureProp.empty() && !gesturePropProvider.editMode!,
onTap: () {
var schemeProvider = context.read<SchemeProvider>();
context.read<CopiedGesturePropProvider>().copyFrom(
schemeProvider.gestures!.firstWhere((element) => element.id == gesturePropProvider.id));
/// todo: give some info to UI.
Notificator.success(
context,
title: LocaleKeys.info_gesture_prop_duplicated_title.tr(),
description: LocaleKeys.info_gesture_prop_duplicated_description.tr(),
);
},
),
DButton.paste(
@@ -306,7 +301,8 @@ class GestureEditor extends StatelessWidget {
}
}
List<DDataRow> _buildDataRows(List<GestureProp>? gestures, BuildContext context) => (gestures ?? []).map((gesture) {
List<DDataRow> _buildDataRows(BuildContext context, List<GestureProp>? gestures, bool readOnly) =>
(gestures ?? []).map((gesture) {
var gesturePropProvider = context.watch<GesturePropProvider>();
bool editing = gesturePropProvider == gesture && gesturePropProvider.editMode == true;
bool selected = gesturePropProvider == gesture && !editing;
@@ -320,7 +316,7 @@ List<DDataRow> _buildDataRows(List<GestureProp>? gestures, BuildContext context)
Future.microtask(() => provider.setProps(
id: gesture.id,
));
} else if (selected == false) {
} else if (selected == false && !readOnly) {
provider.onEditEnd = (prop) {
var schemeProvider = context.read<SchemeProvider>();
var newGestures = List<GestureProp>.of(schemeProvider.gestures!);
@@ -408,7 +404,7 @@ List<DDataCell> _buildRowCellsEditing(BuildContext context) {
.map(
(e) => DropdownMenuItem<Gesture>(
child: Text(
'${LocaleKeys.gesture_editor_gestures}.${H.getGestureName(e)}',
'${LocaleKeys.gesture_editor_gestures}.${e.name}',
textScaleFactor: .8,
).tr(),
value: e,
@@ -456,7 +452,7 @@ List<DDataCell> _buildRowCellsEditing(BuildContext context) {
.map(
(e) => DropdownMenuItem<GestureType>(
child: Text(
'${LocaleKeys.gesture_editor_types}.${H.getGestureTypeName(e)}',
'${LocaleKeys.gesture_editor_types}.${e.name}',
textScaleFactor: .8,
).tr(),
value: e,
@@ -545,7 +541,7 @@ List<DDataCell> _buildRowCellsNormal(BuildContext context, bool selected, Gestur
),
Center(
child: Text(
'${LocaleKeys.gesture_editor_gestures}.${H.getGestureName(gesture.gesture)}',
'${LocaleKeys.gesture_editor_gestures}.${gesture.gesture?.name}',
).tr(),
),
Center(
@@ -554,7 +550,7 @@ List<DDataCell> _buildRowCellsNormal(BuildContext context, bool selected, Gestur
).tr()),
Center(
child: Text(
'${LocaleKeys.gesture_editor_types}.${H.getGestureTypeName(gesture.type)}',
'${LocaleKeys.gesture_editor_types}.${gesture.type?.name}',
).tr()),
gesture.type == GestureType.shortcut
? Row(
+2 -2
View File
@@ -51,7 +51,7 @@ class _LocalManagerState extends State<LocalManager> {
Color _getItemBackgroundColor(int index, String itemPath) {
Color _color = index % 2 == 0 ? context.t.scaffoldBackgroundColor : context.t.backgroundColor;
if (itemPath == _hoveringItem) _color = context.t.scaffoldBackgroundColor;
if (itemPath == _hoveringItem) _color = context.t.dialogBackgroundColor;
if (itemPath == _selectedItemPath) _color = context.read<SettingsProvider>().currentActiveColor;
return _color;
}
@@ -145,7 +145,7 @@ class _LocalManagerState extends State<LocalManager> {
cursor: SystemMouseCursors.click,
onEnter: (_) {
setState(() {
_hoveringItem = localSchemes[index].scheme.id!;
_hoveringItem = localSchemes[index].path;
});
},
child: Container(