-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(*): saving more data types and allow disable window configs
* Allow saving the following data types into database: * DateTime: Before this commit, only part of `DateTime` support. * Offset. * Size. * Allow disable `window_manager` features usage by adding cmdline arg `--no-window-configs`. * This features is useful when want to disable those related fetures such as in a tiling window manager environment or window became. missing due to `setPosition` to a out-of-bound position after monitor layout changed, which will add in near future. * When applying this cmdline arg, window title, window postion and window size use default values and not remembered. * This disabling feature (as well as window fetures) only available on desktop platforms.
- Loading branch information
Showing
21 changed files
with
275 additions
and
66 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
import 'package:args/args.dart'; | ||
import 'package:tsdm_client/instance.dart'; | ||
|
||
/// All flags in cmdline. | ||
abstract class Flags { | ||
/// Disable window related configs, including window size, window title and | ||
/// window position. | ||
/// | ||
/// Set to false if needed, as in recovery mode. | ||
static const noWindowConfigs = 'no-window-configs'; | ||
} | ||
|
||
/// Cmdline arguments parsed result. | ||
class CmdArgs { | ||
/// Constructor. | ||
const CmdArgs({ | ||
required this.noWindowConfigs, | ||
}); | ||
|
||
/// Disable window related configs. | ||
/// | ||
/// Set to `true` will disable window_manager related features. | ||
/// Also the **ONLY** way to disable it. | ||
final bool noWindowConfigs; | ||
} | ||
|
||
/// Parse cmdline [args] into global variable [cmdArgs]. | ||
void parseCmdArgs(List<String> args) { | ||
final parser = ArgParser()..addFlag(Flags.noWindowConfigs, negatable: false); | ||
|
||
final argsResult = parser.parse(args); | ||
cmdArgs = CmdArgs( | ||
noWindowConfigs: argsResult.flag(Flags.noWindowConfigs), | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,16 @@ | ||
import 'package:get_it/get_it.dart'; | ||
import 'package:talker_flutter/talker_flutter.dart'; | ||
import 'package:tsdm_client/cmd.dart'; | ||
|
||
/// Global service locator instance. | ||
final getIt = GetIt.instance; | ||
|
||
/// Global logger instance. | ||
final talker = TalkerFlutter.init(); | ||
|
||
/// Global cmdline args. | ||
/// | ||
/// Only used in desktop platforms. | ||
/// | ||
/// Init in [parseCmdArgs] | ||
late final CmdArgs cmdArgs; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 changes: 7 additions & 0 deletions
7
lib/shared/providers/storage_provider/models/convertable/convertable.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
import 'dart:convert'; | ||
import 'dart:ui'; | ||
|
||
import 'package:drift/drift.dart'; | ||
|
||
part 'offset.dart'; | ||
part 'size.dart'; |
22 changes: 22 additions & 0 deletions
22
lib/shared/providers/storage_provider/models/convertable/offset.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
part of 'convertable.dart'; | ||
|
||
/// Converter between [Offset] and [String]. | ||
class OffsetConverter extends TypeConverter<Offset, String> { | ||
/// Internal constructor. | ||
const OffsetConverter(); | ||
|
||
static const _keyDx = 'dx'; | ||
static const _keyDy = 'dy'; | ||
|
||
@override | ||
Offset fromSql(String fromDb) { | ||
final jsonMap = jsonDecode(fromDb) as Map<String, double>; | ||
return Offset(jsonMap[_keyDx]!, jsonMap[_keyDy]!); | ||
} | ||
|
||
@override | ||
String toSql(Offset value) => jsonEncode(<String, double>{ | ||
_keyDx: value.dx, | ||
_keyDy: value.dy, | ||
}); | ||
} |
22 changes: 22 additions & 0 deletions
22
lib/shared/providers/storage_provider/models/convertable/size.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
part of 'convertable.dart'; | ||
|
||
/// Converter between [Size] and [String]. | ||
class SizeConverter extends TypeConverter<Size, String> { | ||
/// Constructor. | ||
const SizeConverter(); | ||
|
||
static const _keyWidth = 'width'; | ||
static const _keyHeight = 'height'; | ||
|
||
@override | ||
Size fromSql(String fromDb) { | ||
final jsonMap = jsonDecode(fromDb) as Map<String, double>; | ||
return Size(jsonMap[_keyWidth]!, jsonMap[_keyHeight]!); | ||
} | ||
|
||
@override | ||
String toSql(Size value) => jsonEncode(<String, double>{ | ||
_keyWidth: value.width, | ||
_keyHeight: value.height, | ||
}); | ||
} |
Oops, something went wrong.