sorry for doing this.
This commit is contained in:
parent
5fc82a8bc7
commit
b3db294485
106 changed files with 86 additions and 259 deletions
407
oldshit/resources/functions/win.js
Normal file
407
oldshit/resources/functions/win.js
Normal file
|
@ -0,0 +1,407 @@
|
|||
const {app, Menu, Notification, TouchBar, BrowserWindow} = require("electron"),
|
||||
{TouchBarButton, TouchBarLabel, TouchBarSpacer} = TouchBar,
|
||||
{join} = require("path"),
|
||||
windowStateKeeper = require("electron-window-state"),
|
||||
{initAnalytics} = require('./utils');
|
||||
initAnalytics();
|
||||
|
||||
module.exports = {
|
||||
|
||||
SetApplicationMenu: () => {
|
||||
if (process.platform !== "darwin") return;
|
||||
|
||||
Menu.setApplicationMenu(Menu.buildFromTemplate([
|
||||
{
|
||||
label: app.getName(),
|
||||
submenu: [
|
||||
{ role: 'about' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'services' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'hide' },
|
||||
{ role: 'hideOthers' },
|
||||
{ role: 'unhide' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'quit' }
|
||||
]
|
||||
},
|
||||
{
|
||||
label: 'View',
|
||||
submenu: [
|
||||
{ role: 'reload' },
|
||||
{ role: 'forceReload' },
|
||||
{ role: 'toggleDevTools' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'resetZoom' },
|
||||
{ role: 'zoomIn' },
|
||||
{ role: 'zoomOut' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'togglefullscreen' }
|
||||
]
|
||||
},
|
||||
{
|
||||
label: 'Window',
|
||||
role: 'window',
|
||||
submenu: [
|
||||
{ role: 'minimize' },
|
||||
{ role: 'zoom' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'front' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'window' }
|
||||
]
|
||||
},
|
||||
{
|
||||
label: 'Support',
|
||||
role: 'help',
|
||||
submenu: [
|
||||
{
|
||||
label: 'Discord',
|
||||
click() {
|
||||
require("shell").openExternal("https://discord.gg/CezHYdXHEM")
|
||||
}
|
||||
},
|
||||
{
|
||||
label: 'GitHub Wiki',
|
||||
click() {
|
||||
require("shell").openExternal("https://github.com/Apple-Music-Electron/Apple-Music-Electron/wiki")
|
||||
}
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: 'View License',
|
||||
click() {
|
||||
require("shell").openExternal("https://github.com/Apple-Music-Electron/Apple-Music-Electron/blob/master/LICENSE")
|
||||
}
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: 'Toggle Developer Tools',
|
||||
accelerator: 'Option+CommandOrControl+I',
|
||||
click() {
|
||||
app.win.webContents.openDevTools()
|
||||
}
|
||||
},
|
||||
{
|
||||
label: 'Open Configuration File in Editor',
|
||||
click() {
|
||||
app.cfg.openInEditor()
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
]));
|
||||
},
|
||||
|
||||
SetContextMenu: (visibility) => {
|
||||
|
||||
if (visibility) {
|
||||
app.tray.setContextMenu(Menu.buildFromTemplate([
|
||||
{
|
||||
label: 'Check for Updates',
|
||||
click: function () {
|
||||
app.ame.utils.checkForUpdates(true)
|
||||
}
|
||||
},
|
||||
{
|
||||
label: 'Minimize to Tray',
|
||||
click: function () {
|
||||
if (typeof app.win.hide === 'function') {
|
||||
app.win.hide();
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
label: 'Quit',
|
||||
click: function () {
|
||||
app.quit();
|
||||
}
|
||||
}
|
||||
]));
|
||||
} else {
|
||||
app.tray.setContextMenu(Menu.buildFromTemplate([
|
||||
{
|
||||
label: 'Check for Updates',
|
||||
click: function () {
|
||||
app.ame.utils.checkForUpdates(true)
|
||||
}
|
||||
},
|
||||
{
|
||||
label: `Show ${app.getName()}`,
|
||||
click: function () {
|
||||
if (typeof app.win.show === 'function') {
|
||||
app.win.show();
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
label: 'Quit',
|
||||
click: function () {
|
||||
app.quit();
|
||||
}
|
||||
}
|
||||
]));
|
||||
}
|
||||
return true
|
||||
|
||||
},
|
||||
|
||||
SetTaskList: () => {
|
||||
if (process.platform !== "win32") return;
|
||||
|
||||
app.setUserTasks([
|
||||
{
|
||||
program: process.execPath,
|
||||
arguments: '--force-quit',
|
||||
iconPath: process.execPath,
|
||||
iconIndex: 0,
|
||||
title: `Quit ${app.getName()}`
|
||||
}
|
||||
]);
|
||||
return true
|
||||
},
|
||||
|
||||
SetButtons: () => {
|
||||
|
||||
if (process.platform === 'win32') { // Set the Windows Thumbnail Toolbar Buttons
|
||||
if (app.media.playParams.id !== 'no-id-found') {
|
||||
app.win.setThumbarButtons([
|
||||
{
|
||||
tooltip: 'Previous',
|
||||
icon: app.ame.utils.icons.previousTrack,
|
||||
click() {
|
||||
app.ame.utils.media.previousTrack()
|
||||
}
|
||||
},
|
||||
{
|
||||
tooltip: app.media.status ? 'Pause' : 'Play',
|
||||
icon: app.media.status ? app.ame.utils.icons.pause : app.ame.utils.icons.play,
|
||||
click() {
|
||||
app.ame.utils.media.pausePlay()
|
||||
}
|
||||
},
|
||||
{
|
||||
tooltip: 'Next',
|
||||
icon: app.ame.utils.icons.nextTrack,
|
||||
click() {
|
||||
app.ame.utils.media.nextTrack()
|
||||
}
|
||||
}
|
||||
]);
|
||||
} else {
|
||||
app.win.setThumbarButtons([
|
||||
{
|
||||
tooltip: 'Previous',
|
||||
icon: app.ame.utils.icons.inactive.previousTrack,
|
||||
flags: ["disabled"]
|
||||
},
|
||||
{
|
||||
tooltip: 'Play',
|
||||
icon: app.ame.utils.icons.inactive.play,
|
||||
flags: ["disabled"]
|
||||
},
|
||||
{
|
||||
tooltip: 'Next',
|
||||
icon: app.ame.utils.icons.inactive.nextTrack,
|
||||
flags: ["disabled"]
|
||||
}
|
||||
]);
|
||||
}
|
||||
} else if (process.platform === 'darwin') { // Set the macOS Touchbar
|
||||
if (!app.media || app.media.playParams.id === 'no-id-found') return;
|
||||
|
||||
const nextTrack = new TouchBarButton({
|
||||
icon: app.ame.utils.icons.nextTrack,
|
||||
click: () => {
|
||||
app.ame.utils.media.nextTrack()
|
||||
}
|
||||
})
|
||||
|
||||
const previousTrack = new TouchBarButton({
|
||||
icon: app.ame.utils.icons.previousTrack,
|
||||
click: () => {
|
||||
app.ame.utils.media.previousTrack()
|
||||
}
|
||||
})
|
||||
|
||||
const playPause = new TouchBarButton({
|
||||
icon: app.media.status ? app.ame.utils.icons.pause : app.ame.utils.icons.play,
|
||||
click: () => {
|
||||
app.ame.utils.media.pausePlay()
|
||||
}
|
||||
})
|
||||
|
||||
const trackInfo = new TouchBarLabel({
|
||||
label: app.media.name ? `${app.media.name} by ${app.media.artistName}` : `Nothing is Playing`
|
||||
})
|
||||
|
||||
const touchBar = new TouchBar({
|
||||
items: [
|
||||
previousTrack,
|
||||
playPause,
|
||||
nextTrack,
|
||||
new TouchBarSpacer({size: 'flexible'}),
|
||||
trackInfo,
|
||||
new TouchBarSpacer({size: 'flexible'})
|
||||
]
|
||||
})
|
||||
|
||||
app.win.setTouchBar(touchBar)
|
||||
}
|
||||
},
|
||||
|
||||
SetTrayTooltip: (attributes) => {
|
||||
if (!app.cfg.get('general.trayTooltipSongName')) return;
|
||||
|
||||
console.verbose(`[UpdateTooltip] Updating Tooltip for ${attributes.name} to ${attributes.status}`)
|
||||
|
||||
if (attributes.status === true) {
|
||||
app.tray.setToolTip(`Playing ${attributes.name} by ${attributes.artistName} on ${attributes.albumName}`);
|
||||
} else {
|
||||
app.tray.setToolTip(`Paused ${attributes.name} by ${attributes.artistName} on ${attributes.albumName}`);
|
||||
}
|
||||
},
|
||||
|
||||
CreateNotification: (attributes) => {
|
||||
if (!Notification.isSupported() || !(app.cfg.get('general.playbackNotifications') || app.cfg.get('general.playbackNotifications') === 'minimized')) return;
|
||||
|
||||
if (app.cfg.get('general.playbackNotifications') === "minimized" && !(!app.win.isVisible() || app.win.isMinimized())) {
|
||||
return;
|
||||
}
|
||||
|
||||
console.verbose(`[CreateNotification] Notification Generating | Function Parameters: SongName: ${attributes.name} | Artist: ${attributes.artistName} | Album: ${attributes.albumName}`)
|
||||
|
||||
if (app.ipc.existingNotification) {
|
||||
console.log("[CreateNotification] Existing Notification Found - Removing. ")
|
||||
app.ipc.existingNotification.close()
|
||||
app.ipc.existingNotification = false
|
||||
}
|
||||
|
||||
const NOTIFICATION_OBJECT = {
|
||||
title: attributes.name,
|
||||
body: `${attributes.artistName} - ${attributes.albumName}`,
|
||||
silent: true,
|
||||
icon: join(__dirname, '../icons/icon.png'),
|
||||
actions: [{
|
||||
type: 'button',
|
||||
text: 'Skip'
|
||||
}]
|
||||
}
|
||||
|
||||
app.ipc.existingNotification = new Notification(NOTIFICATION_OBJECT)
|
||||
app.ipc.existingNotification.show()
|
||||
|
||||
|
||||
app.ipc.existingNotification.addListener('action', (_event) => {
|
||||
app.ame.utils.media.nextTrack()
|
||||
});
|
||||
},
|
||||
|
||||
CreateBrowserWindow: () => {
|
||||
console.log('[CreateBrowserWindow] Initializing Browser Window Creation.')
|
||||
// Set default window sizes
|
||||
const mainWindowState = windowStateKeeper({
|
||||
defaultWidth: 1024,
|
||||
defaultHeight: 600
|
||||
});
|
||||
|
||||
const options = {
|
||||
icon: join(__dirname, `../icons/icon.ico`),
|
||||
width: mainWindowState.width,
|
||||
height: mainWindowState.height,
|
||||
x: mainWindowState.x,
|
||||
y: mainWindowState.y,
|
||||
minWidth: (app.cfg.get('visual.streamerMode') ? 400 : 300),
|
||||
minHeight: ((app.cfg.get('visual.frameType') === 'mac' || app.cfg.get('visual.frameType') === 'mac-right') ? (app.cfg.get('visual.streamerMode')? 55 : 300) : (app.cfg.get('visual.streamerMode') ? 115 : 300)),
|
||||
frame: (process.platform !== 'win32' && !(app.cfg.get('visual.frameType') === 'mac' || app.cfg.get('visual.frameType') === 'mac-right')),
|
||||
title: app.getName(),
|
||||
resizable: true,
|
||||
// Enables DRM
|
||||
webPreferences: {
|
||||
plugins: true,
|
||||
preload: join(__dirname, '../js/MusicKitInterop.js'),
|
||||
allowRunningInsecureContent: true,
|
||||
nodeIntegration: false,
|
||||
nodeIntegrationInWorker: false,
|
||||
contextIsolation: false,
|
||||
webSecurity: true,
|
||||
sandbox: true,
|
||||
nativeWindowOpen: true
|
||||
}
|
||||
};
|
||||
|
||||
// Fetch the transparency options
|
||||
const transparencyOptions = app.ame.utils.fetchTransparencyOptions()
|
||||
|
||||
if (process.platform === 'darwin' && !app.cfg.get('visual.frameType')) { // macOS Frame and transparency
|
||||
options.titleBarStyle = 'hidden'
|
||||
options.titleBarOverlay = true
|
||||
options.frame = true
|
||||
options.trafficLightPosition = {x: 20, y: 20}
|
||||
options.transparent = (app.transparency && transparencyOptions)
|
||||
}
|
||||
|
||||
// Create the Browser Window
|
||||
console.log('[CreateBrowserWindow] Creating BrowserWindow.')
|
||||
let win;
|
||||
if (process.platform === "darwin" || process.platform === "linux") {
|
||||
win = new BrowserWindow(options)
|
||||
} else {
|
||||
const {BrowserWindow} = require("electron-acrylic-window");
|
||||
if (app.transparency && transparencyOptions) {
|
||||
console.log('[CreateBrowserWindow] Setting Vibrancy')
|
||||
options.vibrancy = transparencyOptions
|
||||
}
|
||||
win = new BrowserWindow(options)
|
||||
}
|
||||
|
||||
// Set the transparency
|
||||
if (app.transparency && transparencyOptions && process.platform === "darwin") {
|
||||
console.log('[CreateBrowserWindow] Setting Vibrancy')
|
||||
win.setVibrancy(transparencyOptions)
|
||||
}
|
||||
|
||||
// alwaysOnTop
|
||||
if (!app.cfg.get('window.alwaysOnTop')) {
|
||||
win.setAlwaysOnTop(false)
|
||||
} else {
|
||||
win.setAlwaysOnTop(true)
|
||||
}
|
||||
|
||||
win.setMenuBarVisibility(false); // Hide that nasty menu bar
|
||||
if (app.cfg.get('advanced.devToolsOnStartup')) win.webContents.openDevTools({mode: 'detach'}); // Enables Detached DevTools
|
||||
|
||||
// Register listeners on Window to track size and position of the Window.
|
||||
mainWindowState.manage(win);
|
||||
|
||||
// Load the Website
|
||||
app.ame.load.LoadWebsite(win)
|
||||
|
||||
return win
|
||||
},
|
||||
|
||||
HandleBrowserWindow: () => {
|
||||
// Detect if the application has been opened with --minimized
|
||||
if (app.commandLine.hasSwitch('minimized') || process.argv.includes('--minimized')) {
|
||||
console.log("[Apple-Music-Electron] Application opened with '--minimized'");
|
||||
if (typeof app.win.minimize === 'function') {
|
||||
app.win.minimize();
|
||||
}
|
||||
}
|
||||
|
||||
// Detect if the application has been opened with --hidden
|
||||
if (app.commandLine.hasSwitch('hidden') || process.argv.includes('--hidden')) {
|
||||
console.log("[Apple-Music-Electron] Application opened with '--hidden'");
|
||||
if (typeof app.win.hide === 'function') {
|
||||
app.win.hide()
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
removeInsertedCSS: (index) => {
|
||||
if (app.injectedCSS[index]) {
|
||||
app.win.webContents.removeInsertedCSS(app.injectedCSS[index]).then(r => { if (r) { console.error(r); }});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue