feat: save scheme name logic.
This commit is contained in:
@@ -2,7 +2,7 @@ import 'package:dde_gesture_manager/models/scheme.dart';
|
||||
|
||||
export 'local_schemes_web.dart' if (dart.library.io) 'local_schemes_linux.dart';
|
||||
|
||||
abstract class LocalSchemeEntry {
|
||||
abstract class LocalSchemeEntry implements Comparable {
|
||||
Scheme scheme;
|
||||
DateTime lastModifyTime;
|
||||
String path;
|
||||
@@ -25,4 +25,4 @@ abstract class LocalSchemeEntry {
|
||||
|
||||
abstract class LocalSchemesInterface<T extends LocalSchemeEntry> {
|
||||
Future<List<T>> get schemeEntries;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:dde_gesture_manager/builder/provider_annotation.dart';
|
||||
@@ -13,7 +14,7 @@ export 'local_schemes.dart';
|
||||
@ProviderModel()
|
||||
class LocalSchemes implements LocalSchemesInterface<LocalSchemeEntryLinux> {
|
||||
LocalSchemes() {
|
||||
schemeEntries.then((value) => schemes = [LocalSchemeEntryLinux.systemDefault(), ...value]);
|
||||
schemeEntries.then((value) => schemes = [LocalSchemeEntryLinux.systemDefault(), ...value..sort()]);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -68,7 +69,13 @@ class LocalSchemeEntryLinux implements LocalSchemeEntry {
|
||||
|
||||
@override
|
||||
save() {
|
||||
// TODO: implement save
|
||||
throw UnimplementedError();
|
||||
var file = File(path);
|
||||
file.writeAsStringSync(json.encode(scheme));
|
||||
}
|
||||
|
||||
@override
|
||||
int compareTo(other) {
|
||||
assert(other is LocalSchemeEntry);
|
||||
return lastModifyTime.isAfter(other.lastModifyTime) ? -1 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ export 'local_schemes.dart';
|
||||
@ProviderModel()
|
||||
class LocalSchemes implements LocalSchemesInterface<LocalSchemeEntryWeb> {
|
||||
LocalSchemes() {
|
||||
schemeEntries.then((value) => schemes = [LocalSchemeEntryWeb.systemDefault(), ...value]);
|
||||
schemeEntries.then((value) => schemes = [LocalSchemeEntryWeb.systemDefault(), ...value..sort()]);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -72,4 +72,10 @@ class LocalSchemeEntryWeb implements LocalSchemeEntry {
|
||||
// TODO: implement save
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
int compareTo(other) {
|
||||
assert(other is LocalSchemeEntry);
|
||||
return lastModifyTime.isAfter(other.lastModifyTime) ? -1 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ class Scheme {
|
||||
Scheme.parse(scheme) {
|
||||
if (scheme is String) scheme = json.decode(scheme);
|
||||
assert(scheme is Map);
|
||||
id = scheme['id'];
|
||||
id = scheme['id'] ?? Uuid().v1();
|
||||
name = scheme['name'];
|
||||
description = scheme['desc'];
|
||||
gestures = (scheme['gestures'] as List? ?? []).map<GestureProp>((ele) => GestureProp.parse(ele)).toList()..sort();
|
||||
@@ -154,6 +154,13 @@ class Scheme {
|
||||
});
|
||||
return schemeTree;
|
||||
}
|
||||
|
||||
Map toJson() => {
|
||||
'id': id,
|
||||
'name': name,
|
||||
'desc': description,
|
||||
'gestures': gestures,
|
||||
};
|
||||
}
|
||||
|
||||
enum Gesture {
|
||||
@@ -221,6 +228,16 @@ class GestureProp implements Comparable {
|
||||
return 'GestureProp{gesture: $gesture, direction: $direction, fingers: $fingers, type: $type, command: $command, remark: $remark}';
|
||||
}
|
||||
|
||||
Map toJson() => {
|
||||
'id': id,
|
||||
'gesture': H.getGestureName(gesture),
|
||||
'direction': H.getGestureDirectionName(direction),
|
||||
'fingers': fingers,
|
||||
'type': H.getGestureTypeName(type),
|
||||
'command': command,
|
||||
'remark': remark,
|
||||
};
|
||||
|
||||
GestureProp.empty() : this.id = Uuid.NAMESPACE_NIL;
|
||||
|
||||
GestureProp.parse(props) {
|
||||
|
||||
Reference in New Issue
Block a user