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 directExitOnBack = Pref.directExitOnBack;
|
||||||
late bool minimizeOnExit = Pref.minimizeOnExit;
|
late bool minimizeOnExit = Pref.minimizeOnExit;
|
||||||
|
late bool pauseOnMinimize = Pref.pauseOnMinimize;
|
||||||
|
late bool isPlaying = false;
|
||||||
|
|
||||||
static const _period = 5 * 60 * 1000;
|
static const _period = 5 * 60 * 1000;
|
||||||
late int _lastSelectTime = 0;
|
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/home/view.dart';
|
||||||
import 'package:PiliPlus/pages/main/controller.dart';
|
import 'package:PiliPlus/pages/main/controller.dart';
|
||||||
import 'package:PiliPlus/pages/mine/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/app_scheme.dart';
|
||||||
import 'package:PiliPlus/utils/context_ext.dart';
|
import 'package:PiliPlus/utils/context_ext.dart';
|
||||||
import 'package:PiliPlus/utils/extension.dart';
|
import 'package:PiliPlus/utils/extension.dart';
|
||||||
@@ -131,6 +133,7 @@ class _MainAppState extends State<MainApp>
|
|||||||
void onWindowClose() {
|
void onWindowClose() {
|
||||||
if (_mainController.minimizeOnExit) {
|
if (_mainController.minimizeOnExit) {
|
||||||
windowManager.hide();
|
windowManager.hide();
|
||||||
|
_onHideWindow();
|
||||||
} else {
|
} else {
|
||||||
_onClose();
|
_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
|
@override
|
||||||
Future<void> onTrayIconMouseDown() async {
|
Future<void> onTrayIconMouseDown() async {
|
||||||
if (await windowManager.isVisible()) {
|
if (await windowManager.isVisible()) {
|
||||||
|
_onHideWindow();
|
||||||
windowManager.hide();
|
windowManager.hide();
|
||||||
} else {
|
} else {
|
||||||
|
_onShowWindow();
|
||||||
windowManager.show();
|
windowManager.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'dart:io';
|
|||||||
import 'package:PiliPlus/common/widgets/custom_icon.dart';
|
import 'package:PiliPlus/common/widgets/custom_icon.dart';
|
||||||
import 'package:PiliPlus/models/common/settings_type.dart';
|
import 'package:PiliPlus/models/common/settings_type.dart';
|
||||||
import 'package:PiliPlus/models/common/video/subtitle_pref_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/models/model.dart';
|
||||||
import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart';
|
import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart';
|
||||||
import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.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(
|
const SettingsModel(
|
||||||
settingsType: SettingsType.sw1tch,
|
settingsType: SettingsType.sw1tch,
|
||||||
title: '启用键盘控制',
|
title: '启用键盘控制',
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ abstract class SettingBoxKey {
|
|||||||
enableAutoExit = 'enableAutoExit',
|
enableAutoExit = 'enableAutoExit',
|
||||||
enableOnlineTotal = 'enableOnlineTotal',
|
enableOnlineTotal = 'enableOnlineTotal',
|
||||||
showSuperChat = 'showSuperChat',
|
showSuperChat = 'showSuperChat',
|
||||||
keyboardControl = 'keyboardControl';
|
keyboardControl = 'keyboardControl',
|
||||||
|
pauseOnMinimize = 'pauseOnMinimize';
|
||||||
|
|
||||||
static const String enableVerticalExpand = 'enableVerticalExpand',
|
static const String enableVerticalExpand = 'enableVerticalExpand',
|
||||||
feedBackEnable = 'feedBackEnable',
|
feedBackEnable = 'feedBackEnable',
|
||||||
|
|||||||
@@ -832,4 +832,7 @@ abstract class Pref {
|
|||||||
|
|
||||||
static bool get keyboardControl =>
|
static bool get keyboardControl =>
|
||||||
_setting.get(SettingBoxKey.keyboardControl, defaultValue: true);
|
_setting.get(SettingBoxKey.keyboardControl, defaultValue: true);
|
||||||
|
|
||||||
|
static bool get pauseOnMinimize =>
|
||||||
|
_setting.get(SettingBoxKey.pauseOnMinimize, defaultValue: false);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user