import 'package:dde_gesture_manager/models/content_layout.provider.dart'; import 'package:dde_gesture_manager/models/solution.dart'; import 'package:flutter/cupertino.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:dde_gesture_manager/constants/constants.dart'; import 'package:dde_gesture_manager/extensions.dart'; class H { H._(); static final _h = H._(); factory H() => _h; late SharedPreferences _sp; SharedPreferences get sp => _sp; initSharedPreference() async { _sp = await SharedPreferences.getInstance(); } static void openPanel(BuildContext context, PanelType panelType) { var windowWidth = MediaQuery.of(context).size.width; if (windowWidth < minWindowSize.width + localManagerPanelWidth + marketPanelWidth) { context.read().setProps( localManagerOpened: panelType == PanelType.local_manager, marketOpened: panelType == PanelType.market, ); } else { switch (panelType) { case PanelType.local_manager: return context.read().setProps(localManagerOpened: true); case PanelType.market: return context.read().setProps(marketOpened: true); } } } static PreferredPanelsStatus getPreferredPanelsStatus(double windowWidth) { var preferredPanelsStatus = PreferredPanelsStatus(localManagerPanelOpened: true, marketPanelOpened: true); if (windowWidth > minWindowSize.width + localManagerPanelWidth + marketPanelWidth) return preferredPanelsStatus; else if (windowWidth < minWindowSize.width + localManagerPanelWidth) return preferredPanelsStatus ..marketPanelOpened = false ..localManagerPanelOpened = false; else return preferredPanelsStatus..marketPanelOpened = false; } static String getGestureName(Gesture gesture) => const { Gesture.swipe: 'swipe', Gesture.tap: 'tap', Gesture.pinch: 'pinch', }[gesture]!; static Gesture getGestureByName(String gestureName) => const { 'swipe': Gesture.swipe, 'tap': Gesture.tap, 'pinch': Gesture.pinch, }[gestureName] ?? Gesture.swipe; static String? getGestureDirectionName(GestureDirection direction) => const { GestureDirection.up: 'up', GestureDirection.down: 'down', GestureDirection.left: 'left', GestureDirection.right: 'right', GestureDirection.pinch_in: 'in', GestureDirection.pinch_out: 'out', }[direction]; static GestureDirection getGestureDirectionByName(String? directionName) => const { 'up': GestureDirection.up, 'down': GestureDirection.down, 'left': GestureDirection.left, 'right': GestureDirection.right, 'in': GestureDirection.pinch_in, 'out': GestureDirection.pinch_out, }[directionName] ?? GestureDirection.none; static String getGestureTypeName(GestureType type) => const { GestureType.built_in: 'built_in', GestureType.shortcut: 'shortcut', GestureType.commandline: 'commandline', }[type]!; static GestureType getGestureTypeByName(String typeName) => const { 'built_in': GestureType.built_in, 'shortcut': GestureType.shortcut, 'commandline': GestureType.commandline, }[typeName] ?? GestureType.built_in; } class PreferredPanelsStatus { bool localManagerPanelOpened; bool marketPanelOpened; PreferredPanelsStatus({ required this.localManagerPanelOpened, required this.marketPanelOpened, }); @override String toString() { return 'PreferredPanelsStatus{localManagerPanelOpened: $localManagerPanelOpened, marketPanelOpened: $marketPanelOpened}'; } }