Skip to content

Commit 8c4815b

Browse files
Added setting for fade in
2 parents 7960a9f + 1a50fe0 commit 8c4815b

File tree

8 files changed

+179
-117
lines changed

8 files changed

+179
-117
lines changed

lib/main.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3670,6 +3670,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
36703670
bool _autoConvert = false;
36713671
bool _clearMp3Cache = false;
36723672
bool _vimKeybindings = false;
3673+
bool _fadeIn = false;
36733674
late FocusNode _escapeNode;
36743675

36753676
Song? _currentSong;
@@ -3705,6 +3706,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
37053706
_autoConvert = prefs.getBool('autoConvert') ?? false;
37063707
_clearMp3Cache = prefs.getBool('clearMp3Cache') ?? false;
37073708
_vimKeybindings = prefs.getBool('vimKeybindings') ?? false;
3709+
_fadeIn = prefs.getBool('fadeIn') ?? false;
37083710
});
37093711
final savedSeparators = prefs.getStringList('separators');
37103712
if (savedSeparators != null) {
@@ -3738,6 +3740,13 @@ class _SettingsScreenState extends State<SettingsScreen> {
37383740
setState(() => _clearMp3Cache = value);
37393741
}
37403742

3743+
Future<void> _saveFadeIn(bool value) async {
3744+
final prefs = await SharedPreferences.getInstance();
3745+
await prefs.setBool('fadeIn', value);
3746+
rust_api.setFadein(value: value);
3747+
setState(() => _fadeIn = value);
3748+
}
3749+
37413750
Future<void> _clearCache() async {
37423751
setState(() => _isClearingCache = true);
37433752
try {
@@ -4110,6 +4119,12 @@ class _SettingsScreenState extends State<SettingsScreen> {
41104119
value: _clearMp3Cache,
41114120
onChanged: _saveClearMp3Cache,
41124121
),
4122+
_buildSettingsSwitch(
4123+
context,
4124+
title: 'Music fade in on seek and song start',
4125+
value: _fadeIn,
4126+
onChanged: _saveFadeIn,
4127+
),
41134128
],
41144129
),
41154130
),

lib/src/rust/api/music_handler.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
1010
// These types are ignored because they are neither used by any `pub` functions nor (for structs and enums) marked `#[frb(unignore)]`: `AudioChunk`, `AudioPlayer`, `PlayerMessage`, `StreamWrapper`, `StreamingBuffer`, `StreamingSource`, `Track`
1111
// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `channels`, `clone`, `clone`, `clone`, `current_frame_len`, `drop`, `fmt`, `fmt`, `fmt`, `fmt`, `next`, `sample_rate`, `total_duration`
1212

13+
Future<void> setFadein({required bool value}) =>
14+
RustLib.instance.api.crateApiMusicHandlerSetFadein(value: value);
15+
1316
Future<bool> initializePlayer() =>
1417
RustLib.instance.api.crateApiMusicHandlerInitializePlayer();
1518

lib/src/rust/frb_generated.dart

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class RustLib extends BaseEntrypoint<RustLibApi, RustLibApiImpl, RustLibWire> {
6969
String get codegenVersion => '2.11.1';
7070

7171
@override
72-
int get rustContentHash => 212314157;
72+
int get rustContentHash => 144449308;
7373

7474
static const kDefaultExternalLibraryLoaderConfig =
7575
ExternalLibraryLoaderConfig(
@@ -134,6 +134,8 @@ abstract class RustLibApi extends BaseApi {
134134

135135
Future<bool> crateApiMusicHandlerSeekToPosition({required double position});
136136

137+
Future<void> crateApiMusicHandlerSetFadein({required bool value});
138+
137139
Future<void> crateApiMusicHandlerSetSeparators(
138140
{required List<String> separators});
139141

@@ -731,6 +733,31 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
731733
argNames: ["position"],
732734
);
733735

736+
@override
737+
Future<void> crateApiMusicHandlerSetFadein({required bool value}) {
738+
return handler.executeNormal(NormalTask(
739+
callFfi: (port_) {
740+
final serializer = SseSerializer(generalizedFrbRustBinding);
741+
sse_encode_bool(value, serializer);
742+
pdeCallFfi(generalizedFrbRustBinding, serializer,
743+
funcId: 24, port: port_);
744+
},
745+
codec: SseCodec(
746+
decodeSuccessData: sse_decode_unit,
747+
decodeErrorData: null,
748+
),
749+
constMeta: kCrateApiMusicHandlerSetFadeinConstMeta,
750+
argValues: [value],
751+
apiImpl: this,
752+
));
753+
}
754+
755+
TaskConstMeta get kCrateApiMusicHandlerSetFadeinConstMeta =>
756+
const TaskConstMeta(
757+
debugName: "set_fadein",
758+
argNames: ["value"],
759+
);
760+
734761
@override
735762
Future<void> crateApiMusicHandlerSetSeparators(
736763
{required List<String> separators}) {
@@ -739,7 +766,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
739766
final serializer = SseSerializer(generalizedFrbRustBinding);
740767
sse_encode_list_String(separators, serializer);
741768
pdeCallFfi(generalizedFrbRustBinding, serializer,
742-
funcId: 24, port: port_);
769+
funcId: 25, port: port_);
743770
},
744771
codec: SseCodec(
745772
decodeSuccessData: sse_decode_unit,
@@ -766,7 +793,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
766793
sse_encode_list_String(songs, serializer);
767794
sse_encode_usize(currentIndex, serializer);
768795
pdeCallFfi(generalizedFrbRustBinding, serializer,
769-
funcId: 25, port: port_);
796+
funcId: 26, port: port_);
770797
},
771798
codec: SseCodec(
772799
decodeSuccessData: sse_decode_bool,
@@ -793,7 +820,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
793820
sse_encode_list_String(songs, serializer);
794821
sse_encode_usize(currentIndex, serializer);
795822
pdeCallFfi(generalizedFrbRustBinding, serializer,
796-
funcId: 26, port: port_);
823+
funcId: 27, port: port_);
797824
},
798825
codec: SseCodec(
799826
decodeSuccessData: sse_decode_bool,
@@ -817,7 +844,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
817844
callFfi: (port_) {
818845
final serializer = SseSerializer(generalizedFrbRustBinding);
819846
pdeCallFfi(generalizedFrbRustBinding, serializer,
820-
funcId: 27, port: port_);
847+
funcId: 28, port: port_);
821848
},
822849
codec: SseCodec(
823850
decodeSuccessData: sse_decode_bool,

pubspec.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,10 @@ packages:
174174
dependency: "direct main"
175175
description:
176176
name: http
177-
sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
177+
sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007
178178
url: "https://pub.dev"
179179
source: hosted
180-
version: "1.4.0"
180+
version: "1.5.0"
181181
http_parser:
182182
dependency: transitive
183183
description:
@@ -363,10 +363,10 @@ packages:
363363
dependency: transitive
364364
description:
365365
name: shared_preferences_android
366-
sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac"
366+
sha256: "5bcf0772a761b04f8c6bf814721713de6f3e5d9d89caf8d3fe031b02a342379e"
367367
url: "https://pub.dev"
368368
source: hosted
369-
version: "2.4.10"
369+
version: "2.4.11"
370370
shared_preferences_foundation:
371371
dependency: transitive
372372
description:

0 commit comments

Comments
 (0)