feat: add active color to settings provider.

pull/3/head
DebuggerX 4 years ago
parent f58e76ba25
commit bf652afe6c

@ -1,7 +1,15 @@
import 'package:dde_gesture_manager/builder/provider_annotation.dart'; import 'package:dde_gesture_manager/builder/provider_annotation.dart';
import 'package:flutter/material.dart';
export 'package:flutter/material.dart' show Color;
@ProviderModel() @ProviderModel()
class Settings { class Settings {
@ProviderModelProp() @ProviderModelProp()
bool? isDarkMode; bool? isDarkMode;
@ProviderModelProp()
Color? activeColor;
Color get currentActiveColor => activeColor ?? const Color(0xff0069cc);
} }

@ -3,6 +3,7 @@ import 'package:dde_gesture_manager/extensions.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/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/utils/helper.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:dde_gesture_manager/widgets/dde_data_table.dart'; import 'package:dde_gesture_manager/widgets/dde_data_table.dart';
@ -12,40 +13,71 @@ import 'package:flutter/material.dart';
class GestureEditor extends StatelessWidget { class GestureEditor extends StatelessWidget {
const GestureEditor({Key? key}) : super(key: key); const GestureEditor({Key? key}) : super(key: key);
List<DDataRow> _buildDataRow(List<GestureProp>? gestures, BuildContext context) => (gestures ?? []) List<DDataRow> _buildDataRow(List<GestureProp>? gestures, BuildContext context) => (gestures ?? []).map((gesture) {
.map((gesture) => DDataRow( bool selected = context.watch<GesturePropProvider>() == gesture;
onSelectChanged: (selected) { return DDataRow(
if (selected == true) onSelectChanged: (selected) {
context.read<GesturePropProvider>().setProps( if (selected == true)
gesture: gesture.gesture, context.read<GesturePropProvider>().setProps(
direction: gesture.direction, gesture: gesture.gesture,
fingers: gesture.fingers, direction: gesture.direction,
type: gesture.type, fingers: gesture.fingers,
command: gesture.command, type: gesture.type,
remark: gesture.remark, command: gesture.command,
); remark: gesture.remark,
}, );
selected: context.watch<GesturePropProvider>() == gesture, },
cells: [ selected: selected,
Center( cells: [
child: Text('${LocaleKeys.gesture_editor_gestures}.${H.getGestureName(gesture.gesture)}').tr(), Center(
child: Text(
'${LocaleKeys.gesture_editor_gestures}.${H.getGestureName(gesture.gesture)}',
style: TextStyle(
color: selected ? Colors.white : null,
),
).tr(),
),
Center(
child: Text(
'${LocaleKeys.gesture_editor_directions}.${H.getGestureDirectionName(gesture.direction)}',
style: TextStyle(
color: selected ? Colors.white : null,
), ),
Center( ).tr()),
child: Text('${LocaleKeys.gesture_editor_directions}.${H.getGestureDirectionName(gesture.direction)}') Center(
.tr()), child: Text(
Center( '${gesture.fingers}',
child: Text('${gesture.fingers}'), style: TextStyle(
color: selected ? Colors.white : null,
),
),
),
Center(
child: Text(
'${LocaleKeys.gesture_editor_types}.${H.getGestureTypeName(gesture.type)}',
style: TextStyle(
color: selected ? Colors.white : null,
), ),
Center(child: Text('${LocaleKeys.gesture_editor_types}.${H.getGestureTypeName(gesture.type)}').tr()), ).tr()),
Text(gesture.command ?? ''), Text(
Text(gesture.remark ?? ''), gesture.command ?? '',
] style: TextStyle(
.map( color: selected ? Colors.white : null,
(ele) => DDataCell(ele), ),
) ),
.toList(), Text(
)) gesture.remark ?? '',
.toList(); style: TextStyle(
color: selected ? Colors.white : null,
),
),
]
.map(
(ele) => DDataCell(ele),
)
.toList(),
);
}).toList();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -129,7 +161,8 @@ class GestureEditor extends StatelessWidget {
), ),
dataRowColor: MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) { dataRowColor: MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.hovered)) return context.t.dialogBackgroundColor; if (states.contains(MaterialState.hovered)) return context.t.dialogBackgroundColor;
if (states.contains(MaterialState.selected)) return Colors.blueAccent; if (states.contains(MaterialState.selected))
return context.read<SettingsProvider>().currentActiveColor;
return null; return null;
}), }),
columns: [ columns: [

@ -3,6 +3,7 @@ import 'package:dde_gesture_manager/extensions.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_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/models/scheme.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/animation.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
@ -32,7 +33,7 @@ class _LocalManagerState extends State<LocalManager> {
Color _getItemBackgroundColor(int index) { Color _getItemBackgroundColor(int index) {
Color _color = index % 2 == 0 ? context.t.scaffoldBackgroundColor : context.t.backgroundColor; Color _color = index % 2 == 0 ? context.t.scaffoldBackgroundColor : context.t.backgroundColor;
if (index == _hoveringIndex) _color = context.t.scaffoldBackgroundColor; if (index == _hoveringIndex) _color = context.t.scaffoldBackgroundColor;
if (index == _selectedIndex) _color = Colors.blueAccent; if (index == _selectedIndex) _color = context.read<SettingsProvider>().currentActiveColor;
return _color; return _color;
} }
@ -115,8 +116,18 @@ class _LocalManagerState extends State<LocalManager> {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text(localSchemes[index].scheme.name ?? ''), Text(
Text('456'), localSchemes[index].scheme.name ?? '',
style: TextStyle(
color: index == _selectedIndex ? Colors.white : null,
),
),
Text(
'456',
style: TextStyle(
color: index == _selectedIndex ? Colors.white : null,
),
),
], ],
), ),
), ),

@ -96,7 +96,16 @@ class H {
'shortcut': GestureType.shortcut, 'shortcut': GestureType.shortcut,
'commandline': GestureType.commandline, 'commandline': GestureType.commandline,
}[typeName] ?? }[typeName] ??
GestureType.built_in; GestureType.built_in;
static Color? parseQtActiveColor(String? inp) {
if (inp == null) return null;
var list = inp.split(',');
if (list.length != 4) return null;
var rgba = list.map<int>((e) => int.parse(e) ~/ 257).toList();
rgba.sout();
return Color.fromARGB(rgba[3], rgba[0], rgba[1], rgba[2]);
}
} }
class PreferredPanelsStatus { class PreferredPanelsStatus {

@ -18,8 +18,11 @@ Future<void> initEvents(BuildContext context) async {
} else { } else {
var xsettings = GSettings('com.deepin.xsettings'); var xsettings = GSettings('com.deepin.xsettings');
String? themeName; String? themeName;
Color? activeColor;
try { try {
themeName = (await xsettings.get('theme-name')).toString(); themeName = (await xsettings.get('theme-name')).toString();
var _activeColor = (await xsettings.get('qt-active-color'));
activeColor = H.parseQtActiveColor(_activeColor.toNative());
} catch (e) { } catch (e) {
print(e); print(e);
context.read<SettingsProvider>().setProps(isDarkMode: false); context.read<SettingsProvider>().setProps(isDarkMode: false);
@ -27,10 +30,14 @@ Future<void> initEvents(BuildContext context) async {
if (themeName != null) { if (themeName != null) {
context.read<SettingsProvider>().setProps(isDarkMode: themeName.contains('dark')); context.read<SettingsProvider>().setProps(isDarkMode: themeName.contains('dark'));
context.read<SettingsProvider>().setProps(activeColor: activeColor);
xsettings.keysChanged.listen((event) { xsettings.keysChanged.listen((event) {
xsettings.get('theme-name').then((value) { xsettings.get('theme-name').then((value) {
context.read<SettingsProvider>().setProps(isDarkMode: value.toString().contains('dark')); context.read<SettingsProvider>().setProps(isDarkMode: value.toString().contains('dark'));
}); });
xsettings.get('qt-active-color').then((value) {
context.read<SettingsProvider>().setProps(activeColor: H.parseQtActiveColor(value.toNative()));
});
}); });
} }
} }

Loading…
Cancel
Save