mirror of
https://gitlab.com/futo-org/fcast.git
synced 2025-06-24 21:25:23 +00:00
Receivers: Add playlist next/previous buttons and metadata for audio files
This commit is contained in:
parent
782a01f4e9
commit
56e10760b8
8 changed files with 151 additions and 32 deletions
|
@ -1,6 +1,6 @@
|
|||
import { BrowserWindow, ipcMain, IpcMainEvent, nativeImage, Tray, Menu, dialog, shell } from 'electron';
|
||||
import { ToastIcon } from 'common/components/Toast';
|
||||
import { Opcode, PlaybackErrorMessage, PlaybackUpdateMessage, VolumeUpdateMessage, PlayMessage, PlayUpdateMessage, EventMessage, EventType, PlaylistContent, SeekMessage, SetVolumeMessage, SetSpeedMessage, SetPlaylistItemMessage } from 'common/Packets';
|
||||
import { Opcode, PlaybackErrorMessage, PlaybackUpdateMessage, VolumeUpdateMessage, PlayMessage, PlayUpdateMessage, EventMessage, EventType, PlaylistContent, SeekMessage, SetVolumeMessage, SetSpeedMessage, SetPlaylistItemMessage, MetadataType, GenericMediaMetadata } from 'common/Packets';
|
||||
import { DiscoveryService } from 'common/DiscoveryService';
|
||||
import { TcpListenerService } from 'common/TcpListenerService';
|
||||
import { WebSocketListenerService } from 'common/WebSocketListenerService';
|
||||
|
@ -19,6 +19,8 @@ import { hideBin } from 'yargs/helpers';
|
|||
const cp = require('child_process');
|
||||
let logger = null;
|
||||
|
||||
const APPLICATION_TITLE = 'FCast Receiver';
|
||||
|
||||
class AppCache {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
public interfaces: any = null;
|
||||
|
@ -125,7 +127,7 @@ export class Main {
|
|||
|
||||
await dialog.showMessageBox({
|
||||
type: 'info',
|
||||
title: 'Fcast Receiver',
|
||||
title: APPLICATION_TITLE,
|
||||
message: aboutMessage,
|
||||
buttons: ['OK'],
|
||||
defaultId: 0
|
||||
|
@ -168,11 +170,18 @@ export class Main {
|
|||
Main.mediaCache = new MediaCache(playMessage);
|
||||
});
|
||||
|
||||
let windowTitle = APPLICATION_TITLE;
|
||||
if (message.metadata?.type === MetadataType.Generic) {
|
||||
const metadata = message.metadata as GenericMediaMetadata;
|
||||
windowTitle = metadata.title ? `${metadata.title} - ${APPLICATION_TITLE}` : APPLICATION_TITLE;
|
||||
}
|
||||
|
||||
if (!Main.playerWindow) {
|
||||
Main.playerWindow = new BrowserWindow({
|
||||
fullscreen: true,
|
||||
autoHideMenuBar: true,
|
||||
icon: path.join(__dirname, 'icon512.png'),
|
||||
title: windowTitle,
|
||||
webPreferences: {
|
||||
preload: path.join(__dirname, 'player/preload.js')
|
||||
}
|
||||
|
@ -191,11 +200,13 @@ export class Main {
|
|||
});
|
||||
}
|
||||
else if (Main.playerWindow && messageInfo.contentViewer !== Main.playerWindowContentViewer) {
|
||||
Main.playerWindow.setTitle(windowTitle);
|
||||
Main.playerWindow.loadFile(path.join(__dirname, `${messageInfo.contentViewer}/index.html`));
|
||||
Main.playerWindow.on('ready-to-show', async () => {
|
||||
Main.playerWindow?.webContents?.send(messageInfo.rendererEvent, messageInfo.rendererMessage);
|
||||
});
|
||||
} else {
|
||||
Main.playerWindow.setTitle(windowTitle);
|
||||
Main.playerWindow?.webContents?.send(messageInfo.rendererEvent, messageInfo.rendererMessage);
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,9 @@
|
|||
<div id="title-icon"></div>
|
||||
<div id="loading-spinner" class="lds-ring"><div></div><div></div><div></div><div></div></div>
|
||||
<div id="idle-background"></div>
|
||||
<img id="thumbnailImage" />
|
||||
<video id="videoPlayer" autoplay preload="auto"></video>
|
||||
<div id="mediaTitle" class="captionsContainer"></div>
|
||||
<div id="videoCaptions" class="captionsContainer"></div>
|
||||
|
||||
<div id="controls" class="container">
|
||||
|
@ -27,7 +29,9 @@
|
|||
</div>
|
||||
|
||||
<div class="leftButtonContainer">
|
||||
<div id="playPrevious" class="playPrevious iconSize"></div>
|
||||
<div id="action" class="play iconSize"></div>
|
||||
<div id="playNext" class="playNext iconSize"></div>
|
||||
|
||||
<div id="volume" class="volume_high iconSize"></div>
|
||||
<div class="volumeContainer">
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue