wip: apply scheme logic.
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
class SPKeys {
|
class SPKeys {
|
||||||
static final String brightnessMode = 'BRIGHTNESS_MODE';
|
static final String brightnessMode = 'BRIGHTNESS_MODE';
|
||||||
|
static final String appliedSchemeId = 'APPLIED_SCHEME_ID';
|
||||||
static final String userLanguage = 'USER_LANGUAGE';
|
static final String userLanguage = 'USER_LANGUAGE';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,8 +13,12 @@ class Configs {
|
|||||||
@ProviderModelProp()
|
@ProviderModelProp()
|
||||||
BrightnessMode? brightnessMode;
|
BrightnessMode? brightnessMode;
|
||||||
|
|
||||||
|
@ProviderModelProp()
|
||||||
|
String? appliedSchemeId;
|
||||||
|
|
||||||
Configs() {
|
Configs() {
|
||||||
this.brightnessMode =
|
this.brightnessMode =
|
||||||
BrightnessMode.values[H().sp.getInt(SPKeys.brightnessMode)?.clamp(0, BrightnessMode.values.length - 1) ?? 0];
|
BrightnessMode.values[H().sp.getInt(SPKeys.brightnessMode)?.clamp(0, BrightnessMode.values.length - 1) ?? 0];
|
||||||
|
this.appliedSchemeId = H().sp.getString(SPKeys.appliedSchemeId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,19 @@
|
|||||||
|
import 'package:collection/collection.dart';
|
||||||
import 'package:dde_gesture_manager/constants/constants.dart';
|
import 'package:dde_gesture_manager/constants/constants.dart';
|
||||||
|
import 'package:dde_gesture_manager/constants/sp_keys.dart';
|
||||||
import 'package:dde_gesture_manager/extensions.dart';
|
import 'package:dde_gesture_manager/extensions.dart';
|
||||||
|
import 'package:dde_gesture_manager/models/configs.provider.dart';
|
||||||
import 'package:dde_gesture_manager/models/content_layout.provider.dart';
|
import 'package:dde_gesture_manager/models/content_layout.provider.dart';
|
||||||
|
import 'package:dde_gesture_manager/models/local_schemes.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/models/scheme.dart';
|
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/utils/helper.dart';
|
||||||
import 'package:dde_gesture_manager/widgets/dde_button.dart';
|
import 'package:dde_gesture_manager/widgets/dde_button.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
class LocalManager extends StatefulWidget {
|
class LocalManager extends StatefulWidget {
|
||||||
const LocalManager({
|
const LocalManager({
|
||||||
@@ -27,9 +33,20 @@ class _LocalManagerState extends State<LocalManager> {
|
|||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
|
||||||
/// todo: load from sp
|
|
||||||
_selectedItemPath = '';
|
_selectedItemPath = '';
|
||||||
_scrollController = ScrollController();
|
_scrollController = ScrollController();
|
||||||
|
|
||||||
|
context.read<LocalSchemesProvider>().schemeEntries.then((_) {
|
||||||
|
var localSchemes = context.read<LocalSchemesProvider>().schemes ?? [];
|
||||||
|
var appliedSchemeId = context.read<ConfigsProvider>().appliedSchemeId;
|
||||||
|
var appliedScheme = localSchemes.firstWhereOrNull((ele) => ele.scheme.id == appliedSchemeId);
|
||||||
|
if (appliedScheme != null) {
|
||||||
|
setState(() {
|
||||||
|
_selectedItemPath = appliedScheme.path;
|
||||||
|
});
|
||||||
|
_handleItemClick(context, appliedScheme);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Color _getItemBackgroundColor(int index, String itemPath) {
|
Color _getItemBackgroundColor(int index, String itemPath) {
|
||||||
@@ -39,6 +56,22 @@ class _LocalManagerState extends State<LocalManager> {
|
|||||||
return _color;
|
return _color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Icon _getItemIcon(Scheme scheme, String? appliedId) {
|
||||||
|
if (scheme.id == appliedId) return Icon(Icons.done_rounded, size: 22);
|
||||||
|
if (scheme.id == Uuid.NAMESPACE_NIL) return Icon(Icons.restore_rounded, size: 22);
|
||||||
|
if (scheme.fromMarket == true) return Icon(Icons.local_grocery_store_rounded, size: 20);
|
||||||
|
if (scheme.uploaded == true) return Icon(Icons.cloud_done_rounded, size: 18);
|
||||||
|
return Icon(Icons.person_rounded, size: 22);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _handleItemClick(BuildContext context, LocalSchemeEntry localScheme) {
|
||||||
|
context.read<SchemeProvider>().copyFrom(localScheme.scheme);
|
||||||
|
setState(() {
|
||||||
|
_selectedItemPath = localScheme.path;
|
||||||
|
});
|
||||||
|
context.read<GesturePropProvider>().copyFrom(GestureProp.empty());
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var isOpen = context.watch<ContentLayoutProvider>().localManagerOpened == true;
|
var isOpen = context.watch<ContentLayoutProvider>().localManagerOpened == true;
|
||||||
@@ -106,11 +139,7 @@ class _LocalManagerState extends State<LocalManager> {
|
|||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
itemBuilder: (context, index) => GestureDetector(
|
itemBuilder: (context, index) => GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
context.read<SchemeProvider>().copyFrom(localSchemes[index].scheme);
|
_handleItemClick(context, localSchemes[index]);
|
||||||
setState(() {
|
|
||||||
_selectedItemPath = localSchemes[index].path;
|
|
||||||
});
|
|
||||||
context.read<GesturePropProvider>().copyFrom(GestureProp.empty());
|
|
||||||
},
|
},
|
||||||
child: MouseRegion(
|
child: MouseRegion(
|
||||||
cursor: SystemMouseCursors.click,
|
cursor: SystemMouseCursors.click,
|
||||||
@@ -131,7 +160,8 @@ class _LocalManagerState extends State<LocalManager> {
|
|||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(localSchemes[index].scheme.name ?? ''),
|
Text(localSchemes[index].scheme.name ?? ''),
|
||||||
Text('456'),
|
_getItemIcon(localSchemes[index].scheme,
|
||||||
|
context.watch<ConfigsProvider>().appliedSchemeId),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -173,7 +203,16 @@ class _LocalManagerState extends State<LocalManager> {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
DButton.duplicate(enabled: _selectedItemPath.notNull),
|
DButton.duplicate(enabled: _selectedItemPath.notNull),
|
||||||
DButton.apply(enabled: _selectedItemPath.notNull),
|
DButton.apply(
|
||||||
|
enabled: _selectedItemPath.notNull,
|
||||||
|
onTap: () {
|
||||||
|
var appliedId =
|
||||||
|
localSchemes.firstWhere((ele) => ele.path == _selectedItemPath).scheme.id!;
|
||||||
|
appliedId.sout();
|
||||||
|
H().sp.updateString(SPKeys.appliedSchemeId, appliedId);
|
||||||
|
context.read<ConfigsProvider>().setProps(appliedSchemeId: appliedId);
|
||||||
|
},
|
||||||
|
),
|
||||||
]
|
]
|
||||||
.map((e) => Padding(
|
.map((e) => Padding(
|
||||||
padding: const EdgeInsets.only(right: 4),
|
padding: const EdgeInsets.only(right: 4),
|
||||||
|
|||||||
Reference in New Issue
Block a user