From d3a69573c395b0e1b0006f22f1ec506c4b72a76b Mon Sep 17 00:00:00 2001 From: debuggerx Date: Sat, 9 Oct 2021 18:42:12 +0800 Subject: [PATCH] feat: add default scheme to local manager. --- app/lib/models/local_schemes.dart | 11 +++++++++-- app/lib/models/local_schemes_linux.dart | 9 ++++++++- app/lib/models/local_schemes_web.dart | 14 +++++++++++--- app/lib/models/scheme.dart | 7 +++++++ app/lib/pages/local_manager.dart | 8 ++++---- app/resources/langs/en.json | 6 +++++- app/resources/langs/zh-CN.json | 6 +++++- 7 files changed, 49 insertions(+), 12 deletions(-) diff --git a/app/lib/models/local_schemes.dart b/app/lib/models/local_schemes.dart index d092b43..8d841df 100644 --- a/app/lib/models/local_schemes.dart +++ b/app/lib/models/local_schemes.dart @@ -1,7 +1,7 @@ -export 'local_schemes_web.dart' if (dart.library.io) 'local_schemes_linux.dart'; - import 'package:dde_gesture_manager/models/scheme.dart'; +export 'local_schemes_web.dart' if (dart.library.io) 'local_schemes_linux.dart'; + abstract class LocalSchemeEntry { Scheme scheme; DateTime lastModifyTime; @@ -13,6 +13,13 @@ abstract class LocalSchemeEntry { required this.lastModifyTime, }); + LocalSchemeEntry.systemDefault() + : this.path = '', + this.scheme = Scheme.systemDefault(), + + /// 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(); } diff --git a/app/lib/models/local_schemes_linux.dart b/app/lib/models/local_schemes_linux.dart index 9979895..e1fc413 100644 --- a/app/lib/models/local_schemes_linux.dart +++ b/app/lib/models/local_schemes_linux.dart @@ -13,7 +13,7 @@ export 'local_schemes.dart'; @ProviderModel() class LocalSchemes implements LocalSchemesInterface { LocalSchemes() { - schemeEntries.then((value) => schemes = value); + schemeEntries.then((value) => schemes = [LocalSchemeEntryLinux.systemDefault(), ...value]); } @override @@ -60,6 +60,13 @@ class LocalSchemeEntryLinux implements LocalSchemeEntry { required this.lastModifyTime, }); + LocalSchemeEntryLinux.systemDefault() + : this.path = '', + this.scheme = Scheme.systemDefault(), + + /// 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); + @override save() { // TODO: implement save diff --git a/app/lib/models/local_schemes_web.dart b/app/lib/models/local_schemes_web.dart index 51c08e0..c8c1814 100644 --- a/app/lib/models/local_schemes_web.dart +++ b/app/lib/models/local_schemes_web.dart @@ -1,17 +1,18 @@ import 'dart:convert'; +import 'dart:html'; import 'package:dde_gesture_manager/builder/provider_annotation.dart'; -import 'package:dde_gesture_manager/models/scheme.dart'; import 'package:dde_gesture_manager/extensions.dart'; -import 'dart:html'; +import 'package:dde_gesture_manager/models/scheme.dart'; import 'local_schemes.dart'; + export 'local_schemes.dart'; @ProviderModel() class LocalSchemes implements LocalSchemesInterface { LocalSchemes() { - schemeEntries.then((value) => schemes = value); + schemeEntries.then((value) => schemes = [LocalSchemeEntryWeb.systemDefault(), ...value]); } @override @@ -59,6 +60,13 @@ class LocalSchemeEntryWeb implements LocalSchemeEntry { required this.lastModifyTime, }); + LocalSchemeEntryWeb.systemDefault() + : this.path = '', + this.scheme = Scheme.systemDefault(), + + /// 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); + @override save() { // TODO: implement save diff --git a/app/lib/models/scheme.dart b/app/lib/models/scheme.dart index 5248303..2f4608c 100644 --- a/app/lib/models/scheme.dart +++ b/app/lib/models/scheme.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:dde_gesture_manager/builder/provider_annotation.dart'; +import 'package:dde_gesture_manager/extensions.dart'; import 'package:dde_gesture_manager/utils/helper.dart'; @ProviderModel(copyable: true) @@ -21,6 +22,12 @@ class Scheme { description = scheme['desc']; gestures = (scheme['gestures'] as List? ?? []).map((ele) => GestureProp.parse(ele)).toList(); } + + Scheme.systemDefault() { + this.name = LocaleKeys.local_manager_default_scheme_label.tr(); + this.description = LocaleKeys.local_manager_default_scheme_description.tr(); + this.gestures = []; + } } enum Gesture { diff --git a/app/lib/pages/local_manager.dart b/app/lib/pages/local_manager.dart index 51daa65..037a032 100644 --- a/app/lib/pages/local_manager.dart +++ b/app/lib/pages/local_manager.dart @@ -39,7 +39,7 @@ class _LocalManagerState extends State { @override Widget build(BuildContext context) { var isOpen = context.watch().localManagerOpened == true; - var localschemes = context.watch().schemes ?? []; + var localSchemes = context.watch().schemes ?? []; return AnimatedContainer( duration: mediumDuration, curve: Curves.easeInOut, @@ -91,7 +91,7 @@ class _LocalManagerState extends State { controller: _scrollController, itemBuilder: (context, index) => GestureDetector( onDoubleTap: () { - context.read().copyFrom(localschemes[index].scheme); + context.read().copyFrom(localSchemes[index].scheme); setState(() { _selectedIndex = index; }); @@ -115,7 +115,7 @@ class _LocalManagerState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text(localschemes[index].scheme.name ?? ''), + Text(localSchemes[index].scheme.name ?? ''), Text('456'), ], ), @@ -123,7 +123,7 @@ class _LocalManagerState extends State { ), ), ), - itemCount: localschemes.length, + itemCount: localSchemes.length, ), ), Container( diff --git a/app/resources/langs/en.json b/app/resources/langs/en.json index 4538c75..7c1a22a 100644 --- a/app/resources/langs/en.json +++ b/app/resources/langs/en.json @@ -23,7 +23,11 @@ "title": "Scheme market" }, "local_manager": { - "title": "Local scheme management" + "title": "Local scheme management", + "default_scheme": { + "label": "System default scheme", + "description": "System default gesture scheme, cannot be modified. (Secretly telling you that there is no actual content in this scheme, just when applying the scheme, it is achieved by deleting a custom configuration scheme." + } }, "gesture_editor": { "label": "Gesture scheme editing", diff --git a/app/resources/langs/zh-CN.json b/app/resources/langs/zh-CN.json index ff97b4d..12c8ed0 100644 --- a/app/resources/langs/zh-CN.json +++ b/app/resources/langs/zh-CN.json @@ -23,7 +23,11 @@ "title": "方案市场" }, "local_manager": { - "title": "本地方案管理" + "title": "本地方案管理", + "default_scheme": { + "label": "系统默认方案", + "description": "系统默认的手势方案,不可修改。(偷偷告诉你,这个这个方案里没有任何实际内容,应用该方案时不过是通过删除自定义配置方案的方式来实现恢复系统默认方案~)" + } }, "gesture_editor": { "label": "手势方案编辑",