From 9a217662911e87c99b068a8db206870b7204c973 Mon Sep 17 00:00:00 2001 From: debuggerx Date: Thu, 9 Dec 2021 17:47:22 +0800 Subject: [PATCH] feat: use 'fromMarket' and 'uploaded' flag instead of 'readOnly'; code cleanup. --- app/lib/extensions/context_extension.dart | 1 - app/lib/main.dart | 3 --- app/lib/models/scheme.dart | 17 ++++++++++++----- app/lib/pages/gesture_editor.dart | 12 ++++++------ app/lib/pages/local_manager.dart | 4 ---- app/lib/utils/init_linux.dart | 2 -- app/lib/widgets/dde_data_table.dart | 13 +++++-------- app/lib/widgets/language_switcher.dart | 3 +-- app/lib/widgets/theme_switcher.dart | 2 -- app/lib/widgets/version_checker.dart | 1 - 10 files changed, 24 insertions(+), 34 deletions(-) diff --git a/app/lib/extensions/context_extension.dart b/app/lib/extensions/context_extension.dart index 5607fb6..d887823 100644 --- a/app/lib/extensions/context_extension.dart +++ b/app/lib/extensions/context_extension.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; extension ContextExtension on BuildContext { ThemeData get t => Theme.of(this); diff --git a/app/lib/main.dart b/app/lib/main.dart index 30302f1..eeca30d 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -3,7 +3,6 @@ import 'package:dde_gesture_manager/constants/sp_keys.dart'; import 'package:dde_gesture_manager/constants/supported_locales.dart'; import 'package:dde_gesture_manager/extensions.dart'; import 'package:dde_gesture_manager/generated/codegen_loader.g.dart'; -import 'package:dde_gesture_manager/generated/locale_keys.g.dart'; import 'package:dde_gesture_manager/models/configs.dart'; import 'package:dde_gesture_manager/models/configs.provider.dart'; import 'package:dde_gesture_manager/models/settings.provider.dart'; @@ -11,9 +10,7 @@ import 'package:dde_gesture_manager/themes/dark.dart'; import 'package:dde_gesture_manager/themes/light.dart'; import 'package:dde_gesture_manager/utils/helper.dart'; import 'package:dde_gesture_manager/utils/init.dart'; -import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'pages/home.dart'; diff --git a/app/lib/models/scheme.dart b/app/lib/models/scheme.dart index 7482b83..b09be41 100644 --- a/app/lib/models/scheme.dart +++ b/app/lib/models/scheme.dart @@ -117,7 +117,10 @@ class Scheme { String? id; @ProviderModelProp() - bool? readOnly; + bool? fromMarket; + + @ProviderModelProp() + bool? uploaded; @ProviderModelProp() String? name; @@ -128,11 +131,14 @@ class Scheme { @ProviderModelProp() List? gestures; + bool get readOnly => uploaded == true || fromMarket == true || id == Uuid.NAMESPACE_NIL; + Scheme.parse(scheme) { if (scheme is String) scheme = json.decode(scheme); assert(scheme is Map); id = scheme['id'] ?? Uuid().v1(); - readOnly = scheme['readOnly'] ?? false; + fromMarket = scheme['fromMarket'] ?? false; + uploaded = scheme['uploaded'] ?? false; name = scheme['name']; description = scheme['desc']; gestures = (scheme['gestures'] as List? ?? []).map((ele) => GestureProp.parse(ele)).toList()..sort(); @@ -140,7 +146,6 @@ 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 = []; @@ -149,7 +154,8 @@ class Scheme { Scheme.create({this.name, this.description, this.gestures}) { this.id = Uuid().v1(); this.gestures = []; - this.readOnly = false; + this.fromMarket = false; + this.uploaded = false; this.name = 'new xxx'; } @@ -165,7 +171,8 @@ class Scheme { Map toJson() => { 'id': id, - 'readOnly': readOnly, + 'fromMarket': fromMarket, + 'uploaded': uploaded, 'name': name, 'desc': description, 'gestures': gestures, diff --git a/app/lib/pages/gesture_editor.dart b/app/lib/pages/gesture_editor.dart index 57a350b..92a9852 100644 --- a/app/lib/pages/gesture_editor.dart +++ b/app/lib/pages/gesture_editor.dart @@ -127,7 +127,7 @@ class GestureEditor extends StatelessWidget { child: ConstrainedBox( constraints: BoxConstraints(minWidth: constraints.maxWidth), child: IgnorePointer( - ignoring: schemeProvider.readOnly ?? false, + ignoring: schemeProvider.readOnly, child: DDataTable( showBottomBorder: true, headingRowHeight: _headingRowHeight, @@ -169,7 +169,7 @@ class GestureEditor extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.end, children: [ DButton.add( - enabled: !(schemeProvider.readOnly ?? false) && + enabled: !schemeProvider.readOnly && !gesturePropProvider.editMode! && !schemeTree.fullFiled, onTap: () { @@ -183,7 +183,7 @@ class GestureEditor extends StatelessWidget { }, ), DButton.delete( - enabled: !(schemeProvider.readOnly ?? false) && + enabled: !schemeProvider.readOnly && gesturePropProvider != GestureProp.empty() && !gesturePropProvider.editMode!, onTap: () { @@ -201,7 +201,7 @@ class GestureEditor extends StatelessWidget { }, ), DButton.duplicate( - enabled: !(schemeProvider.readOnly ?? false) && + enabled: !schemeProvider.readOnly && gesturePropProvider != GestureProp.empty() && !gesturePropProvider.editMode!, onTap: () { @@ -213,7 +213,7 @@ class GestureEditor extends StatelessWidget { }, ), DButton.paste( - enabled: !(schemeProvider.readOnly ?? false) && + enabled: !schemeProvider.readOnly && copiedGesturePropProvider != CopiedGesturePropProvider.empty() && !gesturePropProvider.editMode! && !schemeTree.fullFiled, @@ -273,7 +273,7 @@ class GestureEditor extends StatelessWidget { Expanded( child: DTextField( initText: schemeProvider.name, - readOnly: schemeProvider.readOnly ?? false, + readOnly: schemeProvider.readOnly, onComplete: (val) { val = val.trim(); schemeProvider.setProps(name: val); diff --git a/app/lib/pages/local_manager.dart b/app/lib/pages/local_manager.dart index e8dcb72..aded155 100644 --- a/app/lib/pages/local_manager.dart +++ b/app/lib/pages/local_manager.dart @@ -6,12 +6,8 @@ import 'package:dde_gesture_manager/models/scheme.dart'; import 'package:dde_gesture_manager/models/scheme.provider.dart'; import 'package:dde_gesture_manager/models/settings.provider.dart'; import 'package:dde_gesture_manager/widgets/dde_button.dart'; -import 'package:flutter/animation.dart'; import 'package:flutter/cupertino.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/painting.dart'; -import 'package:uuid/uuid.dart'; class LocalManager extends StatefulWidget { const LocalManager({ diff --git a/app/lib/utils/init_linux.dart b/app/lib/utils/init_linux.dart index 3544dfd..7a553fe 100644 --- a/app/lib/utils/init_linux.dart +++ b/app/lib/utils/init_linux.dart @@ -3,12 +3,10 @@ import 'package:dde_gesture_manager/constants/sp_keys.dart'; import 'package:dde_gesture_manager/constants/supported_locales.dart'; import 'package:dde_gesture_manager/extensions.dart'; import 'package:dde_gesture_manager/generated/codegen_loader.g.dart'; -import 'package:dde_gesture_manager/generated/locale_keys.g.dart'; import 'package:dde_gesture_manager/models/settings.provider.dart'; import 'package:dde_gesture_manager/utils/helper.dart'; import 'package:flutter/material.dart'; import 'package:gsettings/gsettings.dart'; -import 'package:provider/provider.dart'; import 'package:window_manager/window_manager.dart'; Future initEvents(BuildContext context) async { diff --git a/app/lib/widgets/dde_data_table.dart b/app/lib/widgets/dde_data_table.dart index 5a7b90a..b4e6e96 100644 --- a/app/lib/widgets/dde_data_table.dart +++ b/app/lib/widgets/dde_data_table.dart @@ -6,10 +6,8 @@ import 'dart:math' as math; import 'package:flutter/foundation.dart'; -import 'package:flutter/painting.dart'; -import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; import 'package:rect_getter/rect_getter.dart'; /// Signature for [DataColumn.onSort] callback. @@ -885,8 +883,8 @@ class _DDataTableState extends State { final double effectiveColumnSpacing = widget.columnSpacing ?? theme.dataTableTheme.columnSpacing ?? DDataTable._columnSpacing; - final List tableColumns = List.filled( - widget.columns.length, const _NullTableColumnWidth()); + final List tableColumns = + List.filled(widget.columns.length, const _NullTableColumnWidth()); final List tableRows = List.generate( widget.rows.length + 1, // the +1 is for the header row (int index) { @@ -1007,7 +1005,7 @@ class _DDataTableState extends State { colors: [ _headerBackgroundHSLColor .withLightness( - _headerBackgroundHSLColor.lightness - 0.1 < 0 ? 0 : _headerBackgroundHSLColor.lightness - 0.1) + _headerBackgroundHSLColor.lightness - 0.1 < 0 ? 0 : _headerBackgroundHSLColor.lightness - 0.1) .toColor(), widget.headerBackgroundColor, ], @@ -1067,8 +1065,7 @@ class _DDataTableState extends State { _headersRect = _rects; }); } - if (_rects == null || _rects.isEmpty || _rects.first == null) - Future.microtask(() => _buildHeaderStack(tableRows)); + if (_rects == null || _rects.isEmpty || _rects.first == null) Future.microtask(() => _buildHeaderStack(tableRows)); } } diff --git a/app/lib/widgets/language_switcher.dart b/app/lib/widgets/language_switcher.dart index e98317d..d0ccfb5 100644 --- a/app/lib/widgets/language_switcher.dart +++ b/app/lib/widgets/language_switcher.dart @@ -2,13 +2,12 @@ import 'package:dde_gesture_manager/constants/sp_keys.dart'; import 'package:dde_gesture_manager/constants/supported_locales.dart'; import 'package:dde_gesture_manager/extensions.dart'; import 'package:dde_gesture_manager/generated/codegen_loader.g.dart'; -import 'package:dde_gesture_manager/generated/locale_keys.g.dart'; import 'package:dde_gesture_manager/models/local_schemes_provider.dart'; import 'package:dde_gesture_manager/utils/helper.dart'; +import 'package:easy_localization/src/translations.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:window_manager/window_manager.dart'; -import 'package:easy_localization/src/translations.dart'; class LanguageSwitcher extends StatelessWidget { const LanguageSwitcher({Key? key}) : super(key: key); diff --git a/app/lib/widgets/theme_switcher.dart b/app/lib/widgets/theme_switcher.dart index 3ad2537..95b1748 100644 --- a/app/lib/widgets/theme_switcher.dart +++ b/app/lib/widgets/theme_switcher.dart @@ -1,8 +1,6 @@ import 'package:dde_gesture_manager/extensions.dart'; -import 'package:dde_gesture_manager/generated/locale_keys.g.dart'; import 'package:dde_gesture_manager/models/configs.dart'; import 'package:dde_gesture_manager/models/configs.provider.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class ThemeSwitcher extends StatelessWidget { diff --git a/app/lib/widgets/version_checker.dart b/app/lib/widgets/version_checker.dart index 763a021..7aeb7d3 100644 --- a/app/lib/widgets/version_checker.dart +++ b/app/lib/widgets/version_checker.dart @@ -1,7 +1,6 @@ import 'package:dde_gesture_manager/extensions.dart'; import 'package:flutter/material.dart'; import 'package:package_info_plus/package_info_plus.dart'; -import 'package:dde_gesture_manager/generated/locale_keys.g.dart'; class VersionChecker extends StatelessWidget { const VersionChecker({Key? key}) : super(key: key);