feat: save scheme gestures logic.

This commit is contained in:
2021-11-23 19:00:37 +08:00
parent aa367cf3ba
commit 7977116d75
8 changed files with 85 additions and 95 deletions
+3 -1
View File
@@ -1,5 +1,7 @@
import 'package:dde_gesture_manager/models/scheme.dart';
import 'local_schemes_provider.dart';
export 'local_schemes_web.dart' if (dart.library.io) 'local_schemes_linux.dart';
abstract class LocalSchemeEntry implements Comparable {
@@ -20,7 +22,7 @@ abstract class LocalSchemeEntry implements Comparable {
/// max value of DateTime ![Time Values and Time Range](https://262.ecma-international.org/11.0/#sec-time-values-and-time-range)
this.lastModifyTime = DateTime.fromMillisecondsSinceEpoch(8640000000000000);
save();
save(LocalSchemesProvider provider);
}
abstract class LocalSchemesInterface<T extends LocalSchemeEntry> {
+5 -2
View File
@@ -8,6 +8,7 @@ import 'package:path/path.dart' show join;
import 'package:path_provider/path_provider.dart';
import 'local_schemes.dart';
import 'local_schemes_provider.dart';
export 'local_schemes.dart';
@@ -68,9 +69,11 @@ class LocalSchemeEntryLinux implements LocalSchemeEntry {
this.lastModifyTime = DateTime.fromMillisecondsSinceEpoch(8640000000000000);
@override
save() {
save(LocalSchemesProvider provider) {
var file = File(path);
file.writeAsStringSync(json.encode(scheme));
file.writeAsStringSync(JsonEncoder.withIndent(' ' * 4).convert(scheme));
provider.schemes!.firstWhere((ele) => ele.scheme.id == scheme.id).lastModifyTime = DateTime.now();
provider.setProps(schemes: [...provider.schemes!]..sort());
}
@override
+2 -1
View File
@@ -3,6 +3,7 @@ import 'dart:html';
import 'package:dde_gesture_manager/builder/provider_annotation.dart';
import 'package:dde_gesture_manager/extensions.dart';
import 'package:dde_gesture_manager/models/local_schemes_provider.dart';
import 'package:dde_gesture_manager/models/scheme.dart';
import 'local_schemes.dart';
@@ -68,7 +69,7 @@ class LocalSchemeEntryWeb implements LocalSchemeEntry {
this.lastModifyTime = DateTime.fromMillisecondsSinceEpoch(8640000000000000);
@override
save() {
save(LocalSchemesProvider provider) {
// TODO: implement save
throw UnimplementedError();
}
+6
View File
@@ -116,6 +116,9 @@ class Scheme {
@ProviderModelProp()
String? id;
@ProviderModelProp()
bool? readOnly;
@ProviderModelProp()
String? name;
@@ -129,6 +132,7 @@ class Scheme {
if (scheme is String) scheme = json.decode(scheme);
assert(scheme is Map);
id = scheme['id'] ?? Uuid().v1();
readOnly = scheme['readOnly'] ?? false;
name = scheme['name'];
description = scheme['desc'];
gestures = (scheme['gestures'] as List? ?? []).map<GestureProp>((ele) => GestureProp.parse(ele)).toList()..sort();
@@ -136,6 +140,7 @@ class Scheme {
Scheme.systemDefault() {
this.id = Uuid.NAMESPACE_NIL;
this.readOnly = true;
this.name = LocaleKeys.local_manager_default_scheme_label.tr();
this.description = LocaleKeys.local_manager_default_scheme_description.tr();
this.gestures = [];
@@ -157,6 +162,7 @@ class Scheme {
Map toJson() => {
'id': id,
'readOnly': readOnly,
'name': name,
'desc': description,
'gestures': gestures,