feat: copy and paste gesture prop logic.
This commit is contained in:
@@ -14,6 +14,7 @@ import 'package:dde_gesture_manager/widgets/table_cell_shortcut_listener.dart';
|
|||||||
import 'package:dde_gesture_manager/widgets/table_cell_text_field.dart';
|
import 'package:dde_gesture_manager/widgets/table_cell_text_field.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
const double _headingRowHeight = 56;
|
const double _headingRowHeight = 56;
|
||||||
const double _scrollBarWidth = 14;
|
const double _scrollBarWidth = 14;
|
||||||
@@ -186,10 +187,41 @@ class GestureEditor extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
DButton.duplicate(
|
DButton.duplicate(
|
||||||
enabled: 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.
|
||||||
|
},
|
||||||
),
|
),
|
||||||
DButton.paste(
|
DButton.paste(
|
||||||
enabled: copiedGesturePropProvider != CopiedGesturePropProvider.empty() &&
|
enabled: copiedGesturePropProvider != CopiedGesturePropProvider.empty() &&
|
||||||
!gesturePropProvider.editMode!,
|
!gesturePropProvider.editMode! &&
|
||||||
|
!schemeTree.fullFiled,
|
||||||
|
onTap: () {
|
||||||
|
var schemeTree = context.read<SchemeProvider>().buildSchemeTree();
|
||||||
|
late GestureProp newGestureProp;
|
||||||
|
if (schemeTree.nodes
|
||||||
|
.firstWhere((e) => e.fingers == copiedGesturePropProvider.fingers)
|
||||||
|
.nodes
|
||||||
|
.firstWhere((e) => e.type == copiedGesturePropProvider.gesture)
|
||||||
|
.nodes
|
||||||
|
.firstWhere((e) => e.direction == copiedGesturePropProvider.direction)
|
||||||
|
.available) {
|
||||||
|
newGestureProp = GestureProp.empty()..copyFrom(copiedGesturePropProvider);
|
||||||
|
} else {
|
||||||
|
newGestureProp = H.getNextAvailableGestureProp(schemeProvider.buildSchemeTree())!;
|
||||||
|
newGestureProp.type = copiedGesturePropProvider.type;
|
||||||
|
newGestureProp.command = copiedGesturePropProvider.command;
|
||||||
|
newGestureProp.remark = copiedGesturePropProvider.remark;
|
||||||
|
}
|
||||||
|
newGestureProp.id = Uuid().v1();
|
||||||
|
context.read<SchemeProvider>().setProps(gestures: [
|
||||||
|
...?schemeProvider.gestures,
|
||||||
|
newGestureProp,
|
||||||
|
]);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
.map((e) => Padding(
|
.map((e) => Padding(
|
||||||
|
|||||||
Reference in New Issue
Block a user