feat: save scheme gestures logic.
This commit is contained in:
@@ -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 
|
||||
this.lastModifyTime = DateTime.fromMillisecondsSinceEpoch(8640000000000000);
|
||||
|
||||
save();
|
||||
save(LocalSchemesProvider provider);
|
||||
}
|
||||
|
||||
abstract class LocalSchemesInterface<T extends LocalSchemeEntry> {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user