mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
pause on minimize
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -59,6 +59,8 @@ class MainController extends GetxController
|
||||
|
||||
late bool directExitOnBack = Pref.directExitOnBack;
|
||||
late bool minimizeOnExit = Pref.minimizeOnExit;
|
||||
late bool pauseOnMinimize = Pref.pauseOnMinimize;
|
||||
late bool isPlaying = false;
|
||||
|
||||
static const _period = 5 * 60 * 1000;
|
||||
late int _lastSelectTime = 0;
|
||||
|
||||
@@ -9,6 +9,8 @@ import 'package:PiliPlus/models/common/nav_bar_config.dart';
|
||||
import 'package:PiliPlus/pages/home/view.dart';
|
||||
import 'package:PiliPlus/pages/main/controller.dart';
|
||||
import 'package:PiliPlus/pages/mine/controller.dart';
|
||||
import 'package:PiliPlus/plugin/pl_player/controller.dart';
|
||||
import 'package:PiliPlus/plugin/pl_player/models/play_status.dart';
|
||||
import 'package:PiliPlus/utils/app_scheme.dart';
|
||||
import 'package:PiliPlus/utils/context_ext.dart';
|
||||
import 'package:PiliPlus/utils/extension.dart';
|
||||
@@ -131,6 +133,7 @@ class _MainAppState extends State<MainApp>
|
||||
void onWindowClose() {
|
||||
if (_mainController.minimizeOnExit) {
|
||||
windowManager.hide();
|
||||
_onHideWindow();
|
||||
} else {
|
||||
_onClose();
|
||||
}
|
||||
@@ -144,11 +147,40 @@ class _MainAppState extends State<MainApp>
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void onWindowMinimize() {
|
||||
_onHideWindow();
|
||||
}
|
||||
|
||||
@override
|
||||
void onWindowRestore() {
|
||||
_onShowWindow();
|
||||
}
|
||||
|
||||
void _onHideWindow() {
|
||||
if (_mainController.pauseOnMinimize) {
|
||||
_mainController.isPlaying =
|
||||
PlPlayerController.instance?.playerStatus.status.value ==
|
||||
PlayerStatus.playing;
|
||||
PlPlayerController.pauseIfExists();
|
||||
}
|
||||
}
|
||||
|
||||
void _onShowWindow() {
|
||||
if (_mainController.pauseOnMinimize) {
|
||||
if (_mainController.isPlaying) {
|
||||
PlPlayerController.playIfExists();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> onTrayIconMouseDown() async {
|
||||
if (await windowManager.isVisible()) {
|
||||
_onHideWindow();
|
||||
windowManager.hide();
|
||||
} else {
|
||||
_onShowWindow();
|
||||
windowManager.show();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'dart:io';
|
||||
import 'package:PiliPlus/common/widgets/custom_icon.dart';
|
||||
import 'package:PiliPlus/models/common/settings_type.dart';
|
||||
import 'package:PiliPlus/models/common/video/subtitle_pref_type.dart';
|
||||
import 'package:PiliPlus/pages/main/controller.dart';
|
||||
import 'package:PiliPlus/pages/setting/models/model.dart';
|
||||
import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart';
|
||||
import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.dart';
|
||||
@@ -130,6 +131,18 @@ List<SettingsModel> get playSettings => [
|
||||
}
|
||||
},
|
||||
),
|
||||
SettingsModel(
|
||||
settingsType: SettingsType.sw1tch,
|
||||
title: '最小化时暂停/还原时播放',
|
||||
leading: const Icon(Icons.pause_circle_outline),
|
||||
setKey: SettingBoxKey.pauseOnMinimize,
|
||||
defaultVal: false,
|
||||
onChanged: (value) {
|
||||
try {
|
||||
Get.find<MainController>().pauseOnMinimize = value;
|
||||
} catch (_) {}
|
||||
},
|
||||
),
|
||||
const SettingsModel(
|
||||
settingsType: SettingsType.sw1tch,
|
||||
title: '启用键盘控制',
|
||||
|
||||
@@ -25,7 +25,8 @@ abstract class SettingBoxKey {
|
||||
enableAutoExit = 'enableAutoExit',
|
||||
enableOnlineTotal = 'enableOnlineTotal',
|
||||
showSuperChat = 'showSuperChat',
|
||||
keyboardControl = 'keyboardControl';
|
||||
keyboardControl = 'keyboardControl',
|
||||
pauseOnMinimize = 'pauseOnMinimize';
|
||||
|
||||
static const String enableVerticalExpand = 'enableVerticalExpand',
|
||||
feedBackEnable = 'feedBackEnable',
|
||||
|
||||
@@ -832,4 +832,7 @@ abstract class Pref {
|
||||
|
||||
static bool get keyboardControl =>
|
||||
_setting.get(SettingBoxKey.keyboardControl, defaultValue: true);
|
||||
|
||||
static bool get pauseOnMinimize =>
|
||||
_setting.get(SettingBoxKey.pauseOnMinimize, defaultValue: false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user