diff --git a/app/lib/models/local_schemes.dart b/app/lib/models/local_schemes.dart new file mode 100644 index 0000000..d092b43 --- /dev/null +++ b/app/lib/models/local_schemes.dart @@ -0,0 +1,21 @@ +export 'local_schemes_web.dart' if (dart.library.io) 'local_schemes_linux.dart'; + +import 'package:dde_gesture_manager/models/scheme.dart'; + +abstract class LocalSchemeEntry { + Scheme scheme; + DateTime lastModifyTime; + String path; + + LocalSchemeEntry({ + required this.path, + required this.scheme, + required this.lastModifyTime, + }); + + save(); +} + +abstract class LocalSchemesInterface { + Future> get schemeEntries; +} \ No newline at end of file diff --git a/app/lib/models/local_solutions_linux.dart b/app/lib/models/local_schemes_linux.dart similarity index 51% rename from app/lib/models/local_solutions_linux.dart rename to app/lib/models/local_schemes_linux.dart index 80cc63e..9979895 100644 --- a/app/lib/models/local_solutions_linux.dart +++ b/app/lib/models/local_schemes_linux.dart @@ -2,61 +2,61 @@ import 'dart:io'; import 'package:dde_gesture_manager/builder/provider_annotation.dart'; import 'package:dde_gesture_manager/extensions.dart'; -import 'package:dde_gesture_manager/models/solution.dart'; +import 'package:dde_gesture_manager/models/scheme.dart'; import 'package:path/path.dart' show join; import 'package:path_provider/path_provider.dart'; -import 'local_solutions.dart'; +import 'local_schemes.dart'; -export 'local_solutions.dart'; +export 'local_schemes.dart'; @ProviderModel() -class LocalSolutions implements LocalSolutionsInterface { - LocalSolutions() { - solutionEntries.then((value) => solutions = value); +class LocalSchemes implements LocalSchemesInterface { + LocalSchemes() { + schemeEntries.then((value) => schemes = value); } @override - Future> get solutionEntries async { + Future> get schemeEntries async { var _supportDirectory = await getApplicationSupportDirectory(); - var directory = Directory(join(_supportDirectory.path, 'solutions')); + var directory = Directory(join(_supportDirectory.path, 'schemes')); if (!directory.existsSync()) directory.createSync(); directory.path.sout(); return directory .list() - .map((f) { - LocalSolutionEntryLinux? entry; + .map((f) { + LocalSchemeEntryLinux? entry; try { var content = File(f.path).readAsStringSync(); - entry = LocalSolutionEntryLinux( - path: f.path, solution: Solution.parse(content), lastModifyTime: f.statSync().modified); + entry = LocalSchemeEntryLinux( + path: f.path, scheme: Scheme.parse(content), lastModifyTime: f.statSync().modified); } catch (e) { e.sout(); } return entry; }) .where((e) => e != null) - .cast() + .cast() .toList(); } @ProviderModelProp() - List? solutions; + List? schemes; } -class LocalSolutionEntryLinux implements LocalSolutionEntry { +class LocalSchemeEntryLinux implements LocalSchemeEntry { @override String path; @override - Solution solution; + Scheme scheme; @override DateTime lastModifyTime; - LocalSolutionEntryLinux({ + LocalSchemeEntryLinux({ required this.path, - required this.solution, + required this.scheme, required this.lastModifyTime, }); diff --git a/app/lib/models/local_schemes_provider.dart b/app/lib/models/local_schemes_provider.dart new file mode 100644 index 0000000..3e23c89 --- /dev/null +++ b/app/lib/models/local_schemes_provider.dart @@ -0,0 +1 @@ +export 'local_schemes_web.provider.dart' if (dart.library.io) 'local_schemes_linux.provider.dart'; \ No newline at end of file diff --git a/app/lib/models/local_schemes_web.dart b/app/lib/models/local_schemes_web.dart new file mode 100644 index 0000000..51c08e0 --- /dev/null +++ b/app/lib/models/local_schemes_web.dart @@ -0,0 +1,67 @@ +import 'dart:convert'; + +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 'local_schemes.dart'; +export 'local_schemes.dart'; + +@ProviderModel() +class LocalSchemes implements LocalSchemesInterface { + LocalSchemes() { + schemeEntries.then((value) => schemes = value); + } + + @override + Future> get schemeEntries async { + return window.localStorage.keys + .map((key) { + if (key.startsWith('schemes.')) { + LocalSchemeEntryWeb? entry; + try { + var content = window.localStorage[key] ?? ''; + var schemeJson = json.decode(content); + entry = LocalSchemeEntryWeb( + path: key, + scheme: Scheme.parse(schemeJson), + lastModifyTime: DateTime.parse(schemeJson['modified_at']), + ); + } catch (e) { + e.sout(); + } + return entry; + } + }) + .where((e) => e != null) + .cast() + .toList(); + } + + @ProviderModelProp() + List? schemes; +} + +class LocalSchemeEntryWeb implements LocalSchemeEntry { + @override + String path; + + @override + Scheme scheme; + + @override + DateTime lastModifyTime; + + LocalSchemeEntryWeb({ + required this.path, + required this.scheme, + required this.lastModifyTime, + }); + + @override + save() { + // TODO: implement save + throw UnimplementedError(); + } +} diff --git a/app/lib/models/local_solutions.dart b/app/lib/models/local_solutions.dart deleted file mode 100644 index e2249ed..0000000 --- a/app/lib/models/local_solutions.dart +++ /dev/null @@ -1,21 +0,0 @@ -export 'local_solutions_web.dart' if (dart.library.io) 'local_solutions_linux.dart'; - -import 'package:dde_gesture_manager/models/solution.dart'; - -abstract class LocalSolutionEntry { - Solution solution; - DateTime lastModifyTime; - String path; - - LocalSolutionEntry({ - required this.path, - required this.solution, - required this.lastModifyTime, - }); - - save(); -} - -abstract class LocalSolutionsInterface { - Future> get solutionEntries; -} \ No newline at end of file diff --git a/app/lib/models/local_solutions_provider.dart b/app/lib/models/local_solutions_provider.dart deleted file mode 100644 index 6a10556..0000000 --- a/app/lib/models/local_solutions_provider.dart +++ /dev/null @@ -1 +0,0 @@ -export 'local_solutions_web.provider.dart' if (dart.library.io) 'local_solutions_linux.provider.dart'; \ No newline at end of file diff --git a/app/lib/models/local_solutions_web.dart b/app/lib/models/local_solutions_web.dart deleted file mode 100644 index 81faed7..0000000 --- a/app/lib/models/local_solutions_web.dart +++ /dev/null @@ -1,67 +0,0 @@ -import 'dart:convert'; - -import 'package:dde_gesture_manager/builder/provider_annotation.dart'; -import 'package:dde_gesture_manager/models/solution.dart'; -import 'package:dde_gesture_manager/extensions.dart'; -import 'dart:html'; - -import 'local_solutions.dart'; -export 'local_solutions.dart'; - -@ProviderModel() -class LocalSolutions implements LocalSolutionsInterface { - LocalSolutions() { - solutionEntries.then((value) => solutions = value); - } - - @override - Future> get solutionEntries async { - return window.localStorage.keys - .map((key) { - if (key.startsWith('solutions.')) { - LocalSolutionEntryWeb? entry; - try { - var content = window.localStorage[key] ?? ''; - var solutionJson = json.decode(content); - entry = LocalSolutionEntryWeb( - path: key, - solution: Solution.parse(solutionJson), - lastModifyTime: DateTime.parse(solutionJson['modified_at']), - ); - } catch (e) { - e.sout(); - } - return entry; - } - }) - .where((e) => e != null) - .cast() - .toList(); - } - - @ProviderModelProp() - List? solutions; -} - -class LocalSolutionEntryWeb implements LocalSolutionEntry { - @override - String path; - - @override - Solution solution; - - @override - DateTime lastModifyTime; - - LocalSolutionEntryWeb({ - required this.path, - required this.solution, - required this.lastModifyTime, - }); - - @override - save() { - // TODO: implement save - throw UnimplementedError(); - } -} diff --git a/app/lib/models/solution.dart b/app/lib/models/scheme.dart similarity index 83% rename from app/lib/models/solution.dart rename to app/lib/models/scheme.dart index 14583ed..5248303 100644 --- a/app/lib/models/solution.dart +++ b/app/lib/models/scheme.dart @@ -4,7 +4,7 @@ import 'package:dde_gesture_manager/builder/provider_annotation.dart'; import 'package:dde_gesture_manager/utils/helper.dart'; @ProviderModel(copyable: true) -class Solution { +class Scheme { @ProviderModelProp() String? name; @@ -14,12 +14,12 @@ class Solution { @ProviderModelProp() List? gestures; - Solution.parse(solution) { - if (solution is String) solution = json.decode(solution); - assert(solution is Map); - name = solution['name']; - description = solution['desc']; - gestures = (solution['gestures'] as List? ?? []).map((ele) => GestureProp.parse(ele)).toList(); + Scheme.parse(scheme) { + if (scheme is String) scheme = json.decode(scheme); + assert(scheme is Map); + name = scheme['name']; + description = scheme['desc']; + gestures = (scheme['gestures'] as List? ?? []).map((ele) => GestureProp.parse(ele)).toList(); } } diff --git a/app/lib/pages/gesture_editor.dart b/app/lib/pages/gesture_editor.dart index 566ffe5..c94826d 100644 --- a/app/lib/pages/gesture_editor.dart +++ b/app/lib/pages/gesture_editor.dart @@ -1,8 +1,8 @@ import 'package:dde_gesture_manager/constants/constants.dart'; import 'package:dde_gesture_manager/extensions.dart'; import 'package:dde_gesture_manager/models/content_layout.provider.dart'; -import 'package:dde_gesture_manager/models/solution.dart'; -import 'package:dde_gesture_manager/models/solution.provider.dart'; +import 'package:dde_gesture_manager/models/scheme.dart'; +import 'package:dde_gesture_manager/models/scheme.provider.dart'; import 'package:dde_gesture_manager/utils/helper.dart'; import 'package:dde_gesture_manager/widgets/dde_button.dart'; import 'package:dde_gesture_manager/widgets/dde_data_table.dart'; @@ -50,7 +50,7 @@ class GestureEditor extends StatelessWidget { @override Widget build(BuildContext context) { var layoutProvider = context.watch(); - var solutionProvider = context.watch(); + var schemeProvider = context.watch(); return Flexible( child: Padding( padding: const EdgeInsets.all(10), @@ -140,7 +140,7 @@ class GestureEditor extends StatelessWidget { DDataColumn(label: Text(LocaleKeys.gesture_editor_command.tr())), DDataColumn(label: Text(LocaleKeys.gesture_editor_remark.tr())), ], - rows: _buildDataRow(solutionProvider.gestures, context), + rows: _buildDataRow(schemeProvider.gestures, context), ), ), ), diff --git a/app/lib/pages/home.dart b/app/lib/pages/home.dart index 26341bc..50d1f8c 100644 --- a/app/lib/pages/home.dart +++ b/app/lib/pages/home.dart @@ -1,6 +1,6 @@ import 'package:dde_gesture_manager/extensions.dart'; -import 'package:dde_gesture_manager/models/local_solutions_provider.dart'; -import 'package:dde_gesture_manager/models/solution.provider.dart'; +import 'package:dde_gesture_manager/models/local_schemes_provider.dart'; +import 'package:dde_gesture_manager/models/scheme.provider.dart'; import 'package:dde_gesture_manager/pages/content.dart'; import 'package:dde_gesture_manager/pages/footer.dart'; import 'package:flutter/material.dart'; @@ -18,7 +18,7 @@ class _HomePageState extends State { return Scaffold( body: MultiProvider( providers: [ - ChangeNotifierProvider(create: (context) => SolutionProvider.parse(''' + ChangeNotifierProvider(create: (context) => SchemeProvider.parse(''' { "name": "test", "desc": "some desc", @@ -66,7 +66,7 @@ class _HomePageState extends State { } ''')), ChangeNotifierProvider(create: (context) => GesturePropProvider.empty()), - ChangeNotifierProvider(create: (context) => LocalSolutionsProvider(),lazy: false), + ChangeNotifierProvider(create: (context) => LocalSchemesProvider(),lazy: false), ], child: Column( mainAxisSize: MainAxisSize.max, diff --git a/app/lib/pages/local_manager.dart b/app/lib/pages/local_manager.dart index 7fcab24..51daa65 100644 --- a/app/lib/pages/local_manager.dart +++ b/app/lib/pages/local_manager.dart @@ -1,8 +1,8 @@ import 'package:dde_gesture_manager/constants/constants.dart'; import 'package:dde_gesture_manager/extensions.dart'; import 'package:dde_gesture_manager/models/content_layout.provider.dart'; -import 'package:dde_gesture_manager/models/local_solutions_provider.dart'; -import 'package:dde_gesture_manager/models/solution.provider.dart'; +import 'package:dde_gesture_manager/models/local_schemes_provider.dart'; +import 'package:dde_gesture_manager/models/scheme.provider.dart'; import 'package:dde_gesture_manager/widgets/dde_button.dart'; import 'package:flutter/animation.dart'; import 'package:flutter/cupertino.dart'; @@ -39,7 +39,7 @@ class _LocalManagerState extends State { @override Widget build(BuildContext context) { var isOpen = context.watch().localManagerOpened == true; - var localSolutions = context.watch().solutions ?? []; + 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(localSolutions[index].solution); + context.read().copyFrom(localschemes[index].scheme); setState(() { _selectedIndex = index; }); @@ -115,7 +115,7 @@ class _LocalManagerState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text(localSolutions[index].solution.name ?? ''), + Text(localschemes[index].scheme.name ?? ''), Text('456'), ], ), @@ -123,7 +123,7 @@ class _LocalManagerState extends State { ), ), ), - itemCount: localSolutions.length, + itemCount: localschemes.length, ), ), Container( diff --git a/app/lib/utils/helper.dart b/app/lib/utils/helper.dart index c510eac..c71ba0c 100644 --- a/app/lib/utils/helper.dart +++ b/app/lib/utils/helper.dart @@ -1,5 +1,5 @@ import 'package:dde_gesture_manager/models/content_layout.provider.dart'; -import 'package:dde_gesture_manager/models/solution.dart'; +import 'package:dde_gesture_manager/models/scheme.dart'; import 'package:flutter/cupertino.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:dde_gesture_manager/constants/constants.dart'; diff --git a/app/resources/langs/en.json b/app/resources/langs/en.json index f687fa5..4538c75 100644 --- a/app/resources/langs/en.json +++ b/app/resources/langs/en.json @@ -20,13 +20,13 @@ "tip": "Display help documentation" }, "market": { - "title": "Solution market" + "title": "Scheme market" }, "local_manager": { - "title": "Local solution management" + "title": "Local scheme management" }, "gesture_editor": { - "label": "Gesture program editing", + "label": "Gesture scheme editing", "gesture": "gesture", "direction": "direction", "fingers": "fingers",