mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-01 08:38:18 +08:00
opt desktop pip
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -121,6 +121,26 @@ class _LiveHeaderControlState extends State<LiveHeaderControl>
|
||||
child,
|
||||
...?timeBatteryWidgets,
|
||||
const SizedBox(width: 10),
|
||||
if (Utils.isDesktop && !plPlayerController.isDesktopPip)
|
||||
Obx(() {
|
||||
final isAlwaysOnTop = plPlayerController.isAlwaysOnTop.value;
|
||||
return ComBtn(
|
||||
height: 30,
|
||||
tooltip: '${isAlwaysOnTop ? '取消' : ''}置顶',
|
||||
icon: isAlwaysOnTop
|
||||
? const Icon(
|
||||
size: 18,
|
||||
Icons.push_pin,
|
||||
color: Colors.white,
|
||||
)
|
||||
: const Icon(
|
||||
size: 18,
|
||||
Icons.push_pin_outlined,
|
||||
color: Colors.white,
|
||||
),
|
||||
onTap: () => plPlayerController.setAlwaysOnTop(!isAlwaysOnTop),
|
||||
);
|
||||
}),
|
||||
ComBtn(
|
||||
height: 30,
|
||||
tooltip: '发弹幕',
|
||||
|
||||
@@ -118,12 +118,18 @@ class _MainAppState extends State<MainApp>
|
||||
|
||||
@override
|
||||
Future<void> onWindowMoved() async {
|
||||
if (PlPlayerController.instance?.isDesktopPip ?? false) {
|
||||
return;
|
||||
}
|
||||
final Offset offset = await windowManager.getPosition();
|
||||
_setting.put(SettingBoxKey.windowPosition, [offset.dx, offset.dy]);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> onWindowResized() async {
|
||||
if (PlPlayerController.instance?.isDesktopPip ?? false) {
|
||||
return;
|
||||
}
|
||||
final Rect bounds = await windowManager.getBounds();
|
||||
_setting.putAll({
|
||||
SettingBoxKey.windowSize: [bounds.width, bounds.height],
|
||||
|
||||
@@ -2567,6 +2567,33 @@ class HeaderControlState extends State<HeaderControl>
|
||||
title,
|
||||
// show current datetime
|
||||
...?timeBatteryWidgets,
|
||||
if (Utils.isDesktop && !plPlayerController.isDesktopPip)
|
||||
Obx(() {
|
||||
final isAlwaysOnTop = plPlayerController.isAlwaysOnTop.value;
|
||||
return SizedBox(
|
||||
width: 42,
|
||||
height: 34,
|
||||
child: IconButton(
|
||||
tooltip: '${isAlwaysOnTop ? '取消' : ''}置顶',
|
||||
style: const ButtonStyle(
|
||||
padding: WidgetStatePropertyAll(EdgeInsets.zero),
|
||||
),
|
||||
onPressed: () =>
|
||||
plPlayerController.setAlwaysOnTop(!isAlwaysOnTop),
|
||||
icon: isAlwaysOnTop
|
||||
? const Icon(
|
||||
size: 19,
|
||||
Icons.push_pin,
|
||||
color: Colors.white,
|
||||
)
|
||||
: const Icon(
|
||||
size: 19,
|
||||
Icons.push_pin_outlined,
|
||||
color: Colors.white,
|
||||
),
|
||||
),
|
||||
);
|
||||
}),
|
||||
if (!isFileSource) ...[
|
||||
if (!isFSOrPip) ...[
|
||||
if (videoDetailCtr.isUgc)
|
||||
|
||||
@@ -227,6 +227,12 @@ class PlPlayerController {
|
||||
late bool isDesktopPip = false;
|
||||
late Rect _lastWindowBounds;
|
||||
|
||||
late final RxBool isAlwaysOnTop = false.obs;
|
||||
Future<void> setAlwaysOnTop(bool value) {
|
||||
isAlwaysOnTop.value = value;
|
||||
return windowManager.setAlwaysOnTop(value);
|
||||
}
|
||||
|
||||
Offset initialFocalPoint = Offset.zero;
|
||||
|
||||
Future<void> exitDesktopPip() {
|
||||
@@ -235,18 +241,8 @@ class PlPlayerController {
|
||||
windowManager.setTitleBarStyle(TitleBarStyle.normal),
|
||||
windowManager.setMinimumSize(const Size(400, 700)),
|
||||
windowManager.setBounds(_lastWindowBounds),
|
||||
windowManager.setAlwaysOnTop(false),
|
||||
setAlwaysOnTop(false),
|
||||
windowManager.setAspectRatio(0),
|
||||
setting.putAll({
|
||||
SettingBoxKey.windowSize: [
|
||||
_lastWindowBounds.width,
|
||||
_lastWindowBounds.height,
|
||||
],
|
||||
SettingBoxKey.windowPosition: [
|
||||
_lastWindowBounds.left,
|
||||
_lastWindowBounds.top,
|
||||
],
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -270,9 +266,9 @@ class PlPlayerController {
|
||||
}
|
||||
|
||||
await windowManager.setMinimumSize(size);
|
||||
setAlwaysOnTop(true);
|
||||
windowManager
|
||||
..setSize(size)
|
||||
..setAlwaysOnTop(true)
|
||||
..setAspectRatio(width / height);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user