feat: use 'fromMarket' and 'uploaded' flag instead of 'readOnly'; code cleanup.

pull/5/head
DebuggerX 3 years ago
parent 6dfec40c3f
commit 9a21766291

@ -1,5 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
extension ContextExtension on BuildContext { extension ContextExtension on BuildContext {
ThemeData get t => Theme.of(this); ThemeData get t => Theme.of(this);

@ -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/constants/supported_locales.dart';
import 'package:dde_gesture_manager/extensions.dart'; import 'package:dde_gesture_manager/extensions.dart';
import 'package:dde_gesture_manager/generated/codegen_loader.g.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.dart';
import 'package:dde_gesture_manager/models/configs.provider.dart'; import 'package:dde_gesture_manager/models/configs.provider.dart';
import 'package:dde_gesture_manager/models/settings.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/themes/light.dart';
import 'package:dde_gesture_manager/utils/helper.dart'; import 'package:dde_gesture_manager/utils/helper.dart';
import 'package:dde_gesture_manager/utils/init.dart'; import 'package:dde_gesture_manager/utils/init.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'pages/home.dart'; import 'pages/home.dart';

@ -117,7 +117,10 @@ class Scheme {
String? id; String? id;
@ProviderModelProp() @ProviderModelProp()
bool? readOnly; bool? fromMarket;
@ProviderModelProp()
bool? uploaded;
@ProviderModelProp() @ProviderModelProp()
String? name; String? name;
@ -128,11 +131,14 @@ class Scheme {
@ProviderModelProp() @ProviderModelProp()
List<GestureProp>? gestures; List<GestureProp>? gestures;
bool get readOnly => uploaded == true || fromMarket == true || id == Uuid.NAMESPACE_NIL;
Scheme.parse(scheme) { Scheme.parse(scheme) {
if (scheme is String) scheme = json.decode(scheme); if (scheme is String) scheme = json.decode(scheme);
assert(scheme is Map); assert(scheme is Map);
id = scheme['id'] ?? Uuid().v1(); id = scheme['id'] ?? Uuid().v1();
readOnly = scheme['readOnly'] ?? false; fromMarket = scheme['fromMarket'] ?? false;
uploaded = scheme['uploaded'] ?? false;
name = scheme['name']; name = scheme['name'];
description = scheme['desc']; description = scheme['desc'];
gestures = (scheme['gestures'] as List? ?? []).map<GestureProp>((ele) => GestureProp.parse(ele)).toList()..sort(); gestures = (scheme['gestures'] as List? ?? []).map<GestureProp>((ele) => GestureProp.parse(ele)).toList()..sort();
@ -140,7 +146,6 @@ class Scheme {
Scheme.systemDefault() { Scheme.systemDefault() {
this.id = Uuid.NAMESPACE_NIL; this.id = Uuid.NAMESPACE_NIL;
this.readOnly = true;
this.name = LocaleKeys.local_manager_default_scheme_label.tr(); this.name = LocaleKeys.local_manager_default_scheme_label.tr();
this.description = LocaleKeys.local_manager_default_scheme_description.tr(); this.description = LocaleKeys.local_manager_default_scheme_description.tr();
this.gestures = []; this.gestures = [];
@ -149,7 +154,8 @@ class Scheme {
Scheme.create({this.name, this.description, this.gestures}) { Scheme.create({this.name, this.description, this.gestures}) {
this.id = Uuid().v1(); this.id = Uuid().v1();
this.gestures = []; this.gestures = [];
this.readOnly = false; this.fromMarket = false;
this.uploaded = false;
this.name = 'new xxx'; this.name = 'new xxx';
} }
@ -165,7 +171,8 @@ class Scheme {
Map toJson() => { Map toJson() => {
'id': id, 'id': id,
'readOnly': readOnly, 'fromMarket': fromMarket,
'uploaded': uploaded,
'name': name, 'name': name,
'desc': description, 'desc': description,
'gestures': gestures, 'gestures': gestures,

@ -127,7 +127,7 @@ class GestureEditor extends StatelessWidget {
child: ConstrainedBox( child: ConstrainedBox(
constraints: BoxConstraints(minWidth: constraints.maxWidth), constraints: BoxConstraints(minWidth: constraints.maxWidth),
child: IgnorePointer( child: IgnorePointer(
ignoring: schemeProvider.readOnly ?? false, ignoring: schemeProvider.readOnly,
child: DDataTable( child: DDataTable(
showBottomBorder: true, showBottomBorder: true,
headingRowHeight: _headingRowHeight, headingRowHeight: _headingRowHeight,
@ -169,7 +169,7 @@ class GestureEditor extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: [ children: [
DButton.add( DButton.add(
enabled: !(schemeProvider.readOnly ?? false) && enabled: !schemeProvider.readOnly &&
!gesturePropProvider.editMode! && !gesturePropProvider.editMode! &&
!schemeTree.fullFiled, !schemeTree.fullFiled,
onTap: () { onTap: () {
@ -183,7 +183,7 @@ class GestureEditor extends StatelessWidget {
}, },
), ),
DButton.delete( DButton.delete(
enabled: !(schemeProvider.readOnly ?? false) && enabled: !schemeProvider.readOnly &&
gesturePropProvider != GestureProp.empty() && gesturePropProvider != GestureProp.empty() &&
!gesturePropProvider.editMode!, !gesturePropProvider.editMode!,
onTap: () { onTap: () {
@ -201,7 +201,7 @@ class GestureEditor extends StatelessWidget {
}, },
), ),
DButton.duplicate( DButton.duplicate(
enabled: !(schemeProvider.readOnly ?? false) && enabled: !schemeProvider.readOnly &&
gesturePropProvider != GestureProp.empty() && gesturePropProvider != GestureProp.empty() &&
!gesturePropProvider.editMode!, !gesturePropProvider.editMode!,
onTap: () { onTap: () {
@ -213,7 +213,7 @@ class GestureEditor extends StatelessWidget {
}, },
), ),
DButton.paste( DButton.paste(
enabled: !(schemeProvider.readOnly ?? false) && enabled: !schemeProvider.readOnly &&
copiedGesturePropProvider != CopiedGesturePropProvider.empty() && copiedGesturePropProvider != CopiedGesturePropProvider.empty() &&
!gesturePropProvider.editMode! && !gesturePropProvider.editMode! &&
!schemeTree.fullFiled, !schemeTree.fullFiled,
@ -273,7 +273,7 @@ class GestureEditor extends StatelessWidget {
Expanded( Expanded(
child: DTextField( child: DTextField(
initText: schemeProvider.name, initText: schemeProvider.name,
readOnly: schemeProvider.readOnly ?? false, readOnly: schemeProvider.readOnly,
onComplete: (val) { onComplete: (val) {
val = val.trim(); val = val.trim();
schemeProvider.setProps(name: val); schemeProvider.setProps(name: val);

@ -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/scheme.provider.dart';
import 'package:dde_gesture_manager/models/settings.provider.dart'; import 'package:dde_gesture_manager/models/settings.provider.dart';
import 'package:dde_gesture_manager/widgets/dde_button.dart'; import 'package:dde_gesture_manager/widgets/dde_button.dart';
import 'package:flutter/animation.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/painting.dart';
import 'package:uuid/uuid.dart';
class LocalManager extends StatefulWidget { class LocalManager extends StatefulWidget {
const LocalManager({ const LocalManager({

@ -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/constants/supported_locales.dart';
import 'package:dde_gesture_manager/extensions.dart'; import 'package:dde_gesture_manager/extensions.dart';
import 'package:dde_gesture_manager/generated/codegen_loader.g.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/models/settings.provider.dart';
import 'package:dde_gesture_manager/utils/helper.dart'; import 'package:dde_gesture_manager/utils/helper.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gsettings/gsettings.dart'; import 'package:gsettings/gsettings.dart';
import 'package:provider/provider.dart';
import 'package:window_manager/window_manager.dart'; import 'package:window_manager/window_manager.dart';
Future<void> initEvents(BuildContext context) async { Future<void> initEvents(BuildContext context) async {

@ -6,10 +6,8 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:flutter/foundation.dart'; 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/material.dart';
import 'package:flutter/rendering.dart';
import 'package:rect_getter/rect_getter.dart'; import 'package:rect_getter/rect_getter.dart';
/// Signature for [DataColumn.onSort] callback. /// Signature for [DataColumn.onSort] callback.
@ -885,8 +883,8 @@ class _DDataTableState extends State<DDataTable> {
final double effectiveColumnSpacing = final double effectiveColumnSpacing =
widget.columnSpacing ?? theme.dataTableTheme.columnSpacing ?? DDataTable._columnSpacing; widget.columnSpacing ?? theme.dataTableTheme.columnSpacing ?? DDataTable._columnSpacing;
final List<TableColumnWidth> tableColumns = List<TableColumnWidth>.filled( final List<TableColumnWidth> tableColumns =
widget.columns.length, const _NullTableColumnWidth()); List<TableColumnWidth>.filled(widget.columns.length, const _NullTableColumnWidth());
final List<TableRow> tableRows = List<TableRow>.generate( final List<TableRow> tableRows = List<TableRow>.generate(
widget.rows.length + 1, // the +1 is for the header row widget.rows.length + 1, // the +1 is for the header row
(int index) { (int index) {
@ -1007,7 +1005,7 @@ class _DDataTableState extends State<DDataTable> {
colors: [ colors: [
_headerBackgroundHSLColor _headerBackgroundHSLColor
.withLightness( .withLightness(
_headerBackgroundHSLColor.lightness - 0.1 < 0 ? 0 : _headerBackgroundHSLColor.lightness - 0.1) _headerBackgroundHSLColor.lightness - 0.1 < 0 ? 0 : _headerBackgroundHSLColor.lightness - 0.1)
.toColor(), .toColor(),
widget.headerBackgroundColor, widget.headerBackgroundColor,
], ],
@ -1067,8 +1065,7 @@ class _DDataTableState extends State<DDataTable> {
_headersRect = _rects; _headersRect = _rects;
}); });
} }
if (_rects == null || _rects.isEmpty || _rects.first == null) if (_rects == null || _rects.isEmpty || _rects.first == null) Future.microtask(() => _buildHeaderStack(tableRows));
Future.microtask(() => _buildHeaderStack(tableRows));
} }
} }

@ -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/constants/supported_locales.dart';
import 'package:dde_gesture_manager/extensions.dart'; import 'package:dde_gesture_manager/extensions.dart';
import 'package:dde_gesture_manager/generated/codegen_loader.g.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/models/local_schemes_provider.dart';
import 'package:dde_gesture_manager/utils/helper.dart'; import 'package:dde_gesture_manager/utils/helper.dart';
import 'package:easy_localization/src/translations.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:window_manager/window_manager.dart'; import 'package:window_manager/window_manager.dart';
import 'package:easy_localization/src/translations.dart';
class LanguageSwitcher extends StatelessWidget { class LanguageSwitcher extends StatelessWidget {
const LanguageSwitcher({Key? key}) : super(key: key); const LanguageSwitcher({Key? key}) : super(key: key);

@ -1,8 +1,6 @@
import 'package:dde_gesture_manager/extensions.dart'; 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.dart';
import 'package:dde_gesture_manager/models/configs.provider.dart'; import 'package:dde_gesture_manager/models/configs.provider.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class ThemeSwitcher extends StatelessWidget { class ThemeSwitcher extends StatelessWidget {

@ -1,7 +1,6 @@
import 'package:dde_gesture_manager/extensions.dart'; import 'package:dde_gesture_manager/extensions.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:package_info_plus/package_info_plus.dart'; import 'package:package_info_plus/package_info_plus.dart';
import 'package:dde_gesture_manager/generated/locale_keys.g.dart';
class VersionChecker extends StatelessWidget { class VersionChecker extends StatelessWidget {
const VersionChecker({Key? key}) : super(key: key); const VersionChecker({Key? key}) : super(key: key);

Loading…
Cancel
Save