WIP settings panel, added #app[window-state]
This commit is contained in:
parent
c54b1ac363
commit
f71ca88298
14 changed files with 2762 additions and 1019 deletions
|
@ -1,9 +1,9 @@
|
||||||
import {join} from "path";
|
import { join } from "path";
|
||||||
import {app, BrowserWindow as bw, ipcMain, ShareMenu, shell, screen} from "electron";
|
import { app, BrowserWindow as bw, ipcMain, ShareMenu, shell, screen } from "electron";
|
||||||
import * as windowStateKeeper from "electron-window-state";
|
import * as windowStateKeeper from "electron-window-state";
|
||||||
import * as express from "express";
|
import * as express from "express";
|
||||||
import * as getPort from "get-port";
|
import * as getPort from "get-port";
|
||||||
import {search} from "youtube-search-without-api-key";
|
import { search } from "youtube-search-without-api-key";
|
||||||
import {
|
import {
|
||||||
existsSync,
|
existsSync,
|
||||||
rmSync,
|
rmSync,
|
||||||
|
@ -16,14 +16,14 @@ import {
|
||||||
rmdirSync,
|
rmdirSync,
|
||||||
lstatSync,
|
lstatSync,
|
||||||
} from "fs";
|
} from "fs";
|
||||||
import {Stream} from "stream";
|
import { Stream } from "stream";
|
||||||
import {networkInterfaces} from "os";
|
import { networkInterfaces } from "os";
|
||||||
import * as mm from 'music-metadata';
|
import * as mm from 'music-metadata';
|
||||||
import fetch from 'electron-fetch'
|
import fetch from 'electron-fetch'
|
||||||
import {wsapi} from "./wsapi";
|
import { wsapi } from "./wsapi";
|
||||||
import {utils} from './utils';
|
import { utils } from './utils';
|
||||||
import {Plugins} from "./plugins";
|
import { Plugins } from "./plugins";
|
||||||
import {watch} from "chokidar";
|
import { watch } from "chokidar";
|
||||||
import * as os from "os";
|
import * as os from "os";
|
||||||
import wallpaper from "wallpaper";
|
import wallpaper from "wallpaper";
|
||||||
import * as AdmZip from "adm-zip";
|
import * as AdmZip from "adm-zip";
|
||||||
|
@ -123,6 +123,7 @@ export class BrowserWindow {
|
||||||
"components/artist-chip",
|
"components/artist-chip",
|
||||||
"components/hello-world",
|
"components/hello-world",
|
||||||
"components/inline-collection-list",
|
"components/inline-collection-list",
|
||||||
|
"components/settings-window",
|
||||||
],
|
],
|
||||||
appRoutes: [
|
appRoutes: [
|
||||||
{
|
{
|
||||||
|
@ -201,12 +202,12 @@ export class BrowserWindow {
|
||||||
component: `<cider-browse :data="browsepage"></cider-browse>`,
|
component: `<cider-browse :data="browsepage"></cider-browse>`,
|
||||||
condition: `page == 'browse'`,
|
condition: `page == 'browse'`,
|
||||||
onEnter: ``
|
onEnter: ``
|
||||||
},{
|
}, {
|
||||||
page: "groupings",
|
page: "groupings",
|
||||||
component: `<cider-groupings :data="browsepage"></cider-groupings>`,
|
component: `<cider-groupings :data="browsepage"></cider-groupings>`,
|
||||||
condition: `page == 'groupings'`,
|
condition: `page == 'groupings'`,
|
||||||
onEnter: ``
|
onEnter: ``
|
||||||
},{
|
}, {
|
||||||
page: "charts",
|
page: "charts",
|
||||||
component: `<cider-charts :data="browsepage"></cider-charts>`,
|
component: `<cider-charts :data="browsepage"></cider-charts>`,
|
||||||
condition: `page == 'charts'`,
|
condition: `page == 'charts'`,
|
||||||
|
@ -292,7 +293,7 @@ export class BrowserWindow {
|
||||||
show: false,
|
show: false,
|
||||||
// backgroundColor: "#1E1E1E",
|
// backgroundColor: "#1E1E1E",
|
||||||
titleBarStyle: 'hidden',
|
titleBarStyle: 'hidden',
|
||||||
trafficLightPosition: {x: 15, y: 20},
|
trafficLightPosition: { x: 15, y: 20 },
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
experimentalFeatures: true,
|
experimentalFeatures: true,
|
||||||
nodeIntegration: true,
|
nodeIntegration: true,
|
||||||
|
@ -358,7 +359,7 @@ export class BrowserWindow {
|
||||||
* @yields {object} Electron browser window
|
* @yields {object} Electron browser window
|
||||||
*/
|
*/
|
||||||
async createWindow(): Promise<Electron.BrowserWindow> {
|
async createWindow(): Promise<Electron.BrowserWindow> {
|
||||||
this.clientPort = await getPort({port: 9000});
|
this.clientPort = await getPort({ port: 9000 });
|
||||||
BrowserWindow.verifyFiles();
|
BrowserWindow.verifyFiles();
|
||||||
this.StartWatcher(utils.getPath('themes'));
|
this.StartWatcher(utils.getPath('themes'));
|
||||||
|
|
||||||
|
@ -495,9 +496,9 @@ export class BrowserWindow {
|
||||||
app.get("/cideraudio/impulses/:file", (req, res) => {
|
app.get("/cideraudio/impulses/:file", (req, res) => {
|
||||||
const impulseExternals = join(utils.getPath("externals"), "/impulses/")
|
const impulseExternals = join(utils.getPath("externals"), "/impulses/")
|
||||||
const impulseFile = join(impulseExternals, req.params.file)
|
const impulseFile = join(impulseExternals, req.params.file)
|
||||||
if(existsSync(impulseFile)) {
|
if (existsSync(impulseFile)) {
|
||||||
res.sendFile(impulseFile)
|
res.sendFile(impulseFile)
|
||||||
}else{
|
} else {
|
||||||
res.sendFile(join(utils.getPath('srcPath'), "./renderer/audio/impulses/" + req.params.file))
|
res.sendFile(join(utils.getPath('srcPath'), "./renderer/audio/impulses/" + req.params.file))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -550,8 +551,10 @@ export class BrowserWindow {
|
||||||
app.get("/ciderlocal/:songs", (req, res) => {
|
app.get("/ciderlocal/:songs", (req, res) => {
|
||||||
const audio = atob(req.params.songs.replace(/_/g, '/').replace(/-/g, '+'));
|
const audio = atob(req.params.songs.replace(/_/g, '/').replace(/-/g, '+'));
|
||||||
console.log('auss', audio)
|
console.log('auss', audio)
|
||||||
let data = {data:
|
let data = {
|
||||||
this.localSongs.filter((f: any) => audio.split(',').includes(f.id))};
|
data:
|
||||||
|
this.localSongs.filter((f: any) => audio.split(',').includes(f.id))
|
||||||
|
};
|
||||||
res.send(data);
|
res.send(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -638,7 +641,7 @@ export class BrowserWindow {
|
||||||
remote.use(express.static(join(utils.getPath('srcPath'), "./web-remote/")))
|
remote.use(express.static(join(utils.getPath('srcPath'), "./web-remote/")))
|
||||||
remote.set("views", join(utils.getPath('srcPath'), "./web-remote/views"));
|
remote.set("views", join(utils.getPath('srcPath'), "./web-remote/views"));
|
||||||
remote.set("view engine", "ejs");
|
remote.set("view engine", "ejs");
|
||||||
getPort({port: 6942}).then((port: number) => {
|
getPort({ port: 6942 }).then((port: number) => {
|
||||||
this.remotePort = port;
|
this.remotePort = port;
|
||||||
// Start Remote Discovery
|
// Start Remote Discovery
|
||||||
this.broadcastRemote()
|
this.broadcastRemote()
|
||||||
|
@ -671,11 +674,11 @@ export class BrowserWindow {
|
||||||
});
|
});
|
||||||
} else if (details.url.includes("ciderlocal")) {
|
} else if (details.url.includes("ciderlocal")) {
|
||||||
let text = details.url.toString().includes('ids=') ? decodeURIComponent(details.url.toString()).split("?ids=")[1] : decodeURIComponent(details.url.toString().substring(details.url.toString().lastIndexOf('/') + 1));
|
let text = details.url.toString().includes('ids=') ? decodeURIComponent(details.url.toString()).split("?ids=")[1] : decodeURIComponent(details.url.toString().substring(details.url.toString().lastIndexOf('/') + 1));
|
||||||
console.log('localurl',text)
|
console.log('localurl', text)
|
||||||
callback({
|
callback({
|
||||||
redirectURL: `http://localhost:${this.clientPort}/ciderlocal/${Buffer.from(text).toString('base64url')}`,
|
redirectURL: `http://localhost:${this.clientPort}/ciderlocal/${Buffer.from(text).toString('base64url')}`,
|
||||||
});
|
});
|
||||||
}else {
|
} else {
|
||||||
callback({
|
callback({
|
||||||
cancel: false,
|
cancel: false,
|
||||||
});
|
});
|
||||||
|
@ -717,7 +720,7 @@ export class BrowserWindow {
|
||||||
'KHTML, like Gecko) Mobile/17D50 UCBrowser/12.8.2.1268 Mobile AliApp(TUnionSDK/0.1.20.3) '
|
'KHTML, like Gecko) Mobile/17D50 UCBrowser/12.8.2.1268 Mobile AliApp(TUnionSDK/0.1.20.3) '
|
||||||
details.requestHeaders['Referer'] = "https://y.qq.com/portal/player.html"
|
details.requestHeaders['Referer'] = "https://y.qq.com/portal/player.html"
|
||||||
}
|
}
|
||||||
callback({requestHeaders: details.requestHeaders});
|
callback({ requestHeaders: details.requestHeaders });
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -774,7 +777,7 @@ export class BrowserWindow {
|
||||||
const Jimp = require("jimp")
|
const Jimp = require("jimp")
|
||||||
const img = await Jimp.read(wpPath)
|
const img = await Jimp.read(wpPath)
|
||||||
const blurAmount = args.blurAmount ?? 256
|
const blurAmount = args.blurAmount ?? 256
|
||||||
if(blurAmount) {
|
if (blurAmount) {
|
||||||
img.blur(blurAmount)
|
img.blur(blurAmount)
|
||||||
}
|
}
|
||||||
const screens = await screen.getAllDisplays()
|
const screens = await screen.getAllDisplays()
|
||||||
|
@ -811,7 +814,7 @@ export class BrowserWindow {
|
||||||
}
|
}
|
||||||
// if path is directory, delete it
|
// if path is directory, delete it
|
||||||
if (lstatSync(path).isDirectory()) {
|
if (lstatSync(path).isDirectory()) {
|
||||||
await rmdirSync(path, {recursive: true});
|
await rmdirSync(path, { recursive: true });
|
||||||
} else {
|
} else {
|
||||||
// if path is file, delete it
|
// if path is file, delete it
|
||||||
await unlinkSync(path);
|
await unlinkSync(path);
|
||||||
|
@ -842,7 +845,7 @@ export class BrowserWindow {
|
||||||
// remove WidevineCDM from appdata folder
|
// remove WidevineCDM from appdata folder
|
||||||
const widevineCdmPath = join(app.getPath("userData"), "./WidevineCdm");
|
const widevineCdmPath = join(app.getPath("userData"), "./WidevineCdm");
|
||||||
if (existsSync(widevineCdmPath)) {
|
if (existsSync(widevineCdmPath)) {
|
||||||
rmSync(widevineCdmPath, {recursive: true, force: true})
|
rmSync(widevineCdmPath, { recursive: true, force: true })
|
||||||
}
|
}
|
||||||
// reinstall WidevineCDM
|
// reinstall WidevineCDM
|
||||||
app.relaunch()
|
app.relaunch()
|
||||||
|
@ -1134,7 +1137,7 @@ export class BrowserWindow {
|
||||||
|
|
||||||
// Move window
|
// Move window
|
||||||
ipcMain.on("windowmove", (_event, x, y) => {
|
ipcMain.on("windowmove", (_event, x, y) => {
|
||||||
BrowserWindow.win.setBounds({x, y});
|
BrowserWindow.win.setBounds({ x, y });
|
||||||
});
|
});
|
||||||
|
|
||||||
//Fullscreen
|
//Fullscreen
|
||||||
|
@ -1149,7 +1152,7 @@ export class BrowserWindow {
|
||||||
|
|
||||||
//Fullscreen
|
//Fullscreen
|
||||||
ipcMain.on('detachDT', (_event, _) => {
|
ipcMain.on('detachDT', (_event, _) => {
|
||||||
BrowserWindow.win.webContents.openDevTools({mode: 'detach'});
|
BrowserWindow.win.webContents.openDevTools({ mode: 'detach' });
|
||||||
})
|
})
|
||||||
|
|
||||||
ipcMain.handle('relaunchApp', (_event, _) => {
|
ipcMain.handle('relaunchApp', (_event, _) => {
|
||||||
|
@ -1187,7 +1190,7 @@ export class BrowserWindow {
|
||||||
|
|
||||||
|
|
||||||
ipcMain.on("scanLibrary", async (event, folders) => {
|
ipcMain.on("scanLibrary", async (event, folders) => {
|
||||||
async function getFiles(dir : any) {
|
async function getFiles(dir: any) {
|
||||||
const dirents = await readdir(dir, { withFileTypes: true });
|
const dirents = await readdir(dir, { withFileTypes: true });
|
||||||
const files = await Promise.all(dirents.map((dirent: any) => {
|
const files = await Promise.all(dirents.map((dirent: any) => {
|
||||||
const res = path.resolve(dir, dirent.name);
|
const res = path.resolve(dir, dirent.name);
|
||||||
|
@ -1198,7 +1201,7 @@ export class BrowserWindow {
|
||||||
if (folders == null || folders.length == null || folders.length == 0) folders = ["D:\\Music"]
|
if (folders == null || folders.length == null || folders.length == 0) folders = ["D:\\Music"]
|
||||||
console.log('folders', folders)
|
console.log('folders', folders)
|
||||||
let files: any[] = []
|
let files: any[] = []
|
||||||
for (var folder of folders){
|
for (var folder of folders) {
|
||||||
// get files from the Music folder
|
// get files from the Music folder
|
||||||
files = files.concat(await getFiles(folder))
|
files = files.concat(await getFiles(folder))
|
||||||
}
|
}
|
||||||
|
@ -1210,9 +1213,9 @@ export class BrowserWindow {
|
||||||
let metadatalist = []
|
let metadatalist = []
|
||||||
let numid = 0;
|
let numid = 0;
|
||||||
for (var audio of audiofiles) {
|
for (var audio of audiofiles) {
|
||||||
try{
|
try {
|
||||||
const metadata = await mm.parseFile(audio);
|
const metadata = await mm.parseFile(audio);
|
||||||
if (metadata != null){
|
if (metadata != null) {
|
||||||
let form = {
|
let form = {
|
||||||
"id": "ciderlocal" + numid,
|
"id": "ciderlocal" + numid,
|
||||||
"type": "podcast-episodes",
|
"type": "podcast-episodes",
|
||||||
|
@ -1221,7 +1224,7 @@ export class BrowserWindow {
|
||||||
"artwork": {
|
"artwork": {
|
||||||
"width": 3000,
|
"width": 3000,
|
||||||
"height": 3000,
|
"height": 3000,
|
||||||
"url": metadata.common.picture != undefined ? "data:image/png;base64,"+metadata.common.picture[0].data.toString('base64')+"" : "",
|
"url": metadata.common.picture != undefined ? "data:image/png;base64," + metadata.common.picture[0].data.toString('base64') + "" : "",
|
||||||
},
|
},
|
||||||
"topics": [],
|
"topics": [],
|
||||||
"url": "",
|
"url": "",
|
||||||
|
@ -1241,10 +1244,10 @@ export class BrowserWindow {
|
||||||
"albumName": metadata.common.album,
|
"albumName": metadata.common.album,
|
||||||
"artistName": metadata.common.artist,
|
"artistName": metadata.common.artist,
|
||||||
"copyright": metadata.common.copyright ?? "",
|
"copyright": metadata.common.copyright ?? "",
|
||||||
"assetUrl": "file:///" +audio,
|
"assetUrl": "file:///" + audio,
|
||||||
"contentAdvisory": "",
|
"contentAdvisory": "",
|
||||||
"releaseDateTime": "2022-05-13T00:23:00Z",
|
"releaseDateTime": "2022-05-13T00:23:00Z",
|
||||||
"durationInMilliseconds": Math.floor((metadata.format.duration?? 0) * 1000),
|
"durationInMilliseconds": Math.floor((metadata.format.duration ?? 0) * 1000),
|
||||||
|
|
||||||
"offers": [
|
"offers": [
|
||||||
{
|
{
|
||||||
|
@ -1273,8 +1276,9 @@ export class BrowserWindow {
|
||||||
// "name": metadata.common.title,
|
// "name": metadata.common.title,
|
||||||
// "albumName": metadata.common.album,
|
// "albumName": metadata.common.album,
|
||||||
// "artistName": metadata.common.artist}}
|
// "artistName": metadata.common.artist}}
|
||||||
metadatalist.push(form)}
|
metadatalist.push(form)
|
||||||
} catch (e){}
|
}
|
||||||
|
} catch (e) { }
|
||||||
}
|
}
|
||||||
// console.log('metadatalist', metadatalist);
|
// console.log('metadatalist', metadatalist);
|
||||||
this.localSongs = metadatalist;
|
this.localSongs = metadatalist;
|
||||||
|
@ -1502,7 +1506,6 @@ export class BrowserWindow {
|
||||||
/* *********************************************************************************************
|
/* *********************************************************************************************
|
||||||
* Window Events
|
* Window Events
|
||||||
* **********************************************************************************************/
|
* **********************************************************************************************/
|
||||||
if (process.platform === "win32") {
|
|
||||||
let WND_STATE = {
|
let WND_STATE = {
|
||||||
MINIMIZED: 0,
|
MINIMIZED: 0,
|
||||||
NORMAL: 1,
|
NORMAL: 1,
|
||||||
|
@ -1518,19 +1521,23 @@ export class BrowserWindow {
|
||||||
const state = wndState;
|
const state = wndState;
|
||||||
if (isMinimized && state !== WND_STATE.MINIMIZED) {
|
if (isMinimized && state !== WND_STATE.MINIMIZED) {
|
||||||
wndState = WND_STATE.MINIMIZED;
|
wndState = WND_STATE.MINIMIZED;
|
||||||
|
BrowserWindow.win.webContents.send('window-state-changed', 'minimized');
|
||||||
} else if (isFullScreen && state !== WND_STATE.FULL_SCREEN) {
|
} else if (isFullScreen && state !== WND_STATE.FULL_SCREEN) {
|
||||||
wndState = WND_STATE.FULL_SCREEN;
|
wndState = WND_STATE.FULL_SCREEN;
|
||||||
|
BrowserWindow.win.webContents.send('window-state-changed', 'fullscreen')
|
||||||
} else if (isMaximized && state !== WND_STATE.MAXIMIZED) {
|
} else if (isMaximized && state !== WND_STATE.MAXIMIZED) {
|
||||||
wndState = WND_STATE.MAXIMIZED;
|
wndState = WND_STATE.MAXIMIZED;
|
||||||
|
BrowserWindow.win.webContents.send('window-state-changed', 'maximized')
|
||||||
BrowserWindow.win.webContents.executeJavaScript(`app.chrome.maximized = true`);
|
BrowserWindow.win.webContents.executeJavaScript(`app.chrome.maximized = true`);
|
||||||
} else if (state !== WND_STATE.NORMAL) {
|
} else if (state !== WND_STATE.NORMAL) {
|
||||||
wndState = WND_STATE.NORMAL;
|
wndState = WND_STATE.NORMAL;
|
||||||
|
BrowserWindow.win.webContents.send('window-state-changed', 'normal')
|
||||||
BrowserWindow.win.webContents.executeJavaScript(
|
BrowserWindow.win.webContents.executeJavaScript(
|
||||||
`app.chrome.maximized = false`
|
`app.chrome.maximized = false`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
let isQuiting = false
|
let isQuiting = false
|
||||||
|
|
||||||
|
@ -1573,10 +1580,10 @@ export class BrowserWindow {
|
||||||
// Set window Handler
|
// Set window Handler
|
||||||
BrowserWindow.win.webContents.setWindowOpenHandler((x: any) => {
|
BrowserWindow.win.webContents.setWindowOpenHandler((x: any) => {
|
||||||
if (x.url.includes("apple") || x.url.includes("localhost")) {
|
if (x.url.includes("apple") || x.url.includes("localhost")) {
|
||||||
return {action: "allow"};
|
return { action: "allow" };
|
||||||
}
|
}
|
||||||
shell.openExternal(x.url).catch(console.error);
|
shell.openExternal(x.url).catch(console.error);
|
||||||
return {action: "deny"};
|
return { action: "deny" };
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1632,7 +1639,7 @@ export class BrowserWindow {
|
||||||
"CtlN": "Cider",
|
"CtlN": "Cider",
|
||||||
"iV": "196623"
|
"iV": "196623"
|
||||||
};
|
};
|
||||||
let server2 = mdns.createAdvertisement(x, `${await getPort({port: 3839})}`, {
|
let server2 = mdns.createAdvertisement(x, `${await getPort({ port: 3839 })}`, {
|
||||||
name: encoded,
|
name: encoded,
|
||||||
txt: txt_record
|
txt: txt_record
|
||||||
});
|
});
|
||||||
|
|
5
src/renderer/less/bootstrap.less
vendored
5
src/renderer/less/bootstrap.less
vendored
|
@ -2432,10 +2432,9 @@ fieldset:disabled .btn {
|
||||||
.nav-pills .nav-link {
|
.nav-pills .nav-link {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border: 0;
|
border: 0;
|
||||||
border-radius: 50px;
|
border-radius: 6px;
|
||||||
color: #eee;
|
color: #eee;
|
||||||
-webkit-user-drag: none;
|
-webkit-user-drag: none;
|
||||||
// transition: transform .35s var(--appleEase), background-color .35s var(--appleEase);
|
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
margin: 0px 4px;
|
margin: 0px 4px;
|
||||||
&:hover {
|
&:hover {
|
||||||
|
@ -2447,7 +2446,7 @@ fieldset:disabled .btn {
|
||||||
.nav-pills .show > .nav-link {
|
.nav-pills .show > .nav-link {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: var(--selected);
|
background-color: var(--selected);
|
||||||
outline:2px solid var(--keyColor);
|
// outline:2px solid var(--keyColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-fill > .nav-link,
|
.nav-fill > .nav-link,
|
||||||
|
|
|
@ -2168,12 +2168,20 @@ input[type=checkbox][switch]:checked:active::before {
|
||||||
}
|
}
|
||||||
|
|
||||||
// fancy pills
|
// fancy pills
|
||||||
.nav-pills {
|
.fancy-pills {
|
||||||
|
.nav-pills {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.nav-link {
|
.nav-link {
|
||||||
transition: transform .3s var(--appleEase);
|
transition: transform .3s var(--appleEase);
|
||||||
position: relative;
|
position: relative;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
border-radius: 50px;
|
||||||
|
color: #eee;
|
||||||
|
-webkit-user-drag: none;
|
||||||
|
font-weight: 500;
|
||||||
|
margin: 0px 4px;
|
||||||
|
|
||||||
|
|
||||||
&:after {
|
&:after {
|
||||||
|
@ -2270,6 +2278,7 @@ input[type=checkbox][switch]:checked:active::before {
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.grouping-container {
|
.grouping-container {
|
||||||
|
|
|
@ -6,6 +6,7 @@ body[platform="darwin"] {
|
||||||
&.notransparency::before {
|
&.notransparency::before {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#app {
|
#app {
|
||||||
&.simplebg {
|
&.simplebg {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
|
@ -33,6 +34,16 @@ body[platform="darwin"] {
|
||||||
background-color: var(--macOSChromeColor);
|
background-color: var(--macOSChromeColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// &::after {
|
||||||
|
// position: fixed;
|
||||||
|
// top:0;left:0;right:0;bottom:0;
|
||||||
|
// box-shadow: inset 0px 0px .5px 1px rgb(200 200 200 / 40%);
|
||||||
|
// border-radius: 10px;
|
||||||
|
// content: " ";
|
||||||
|
// z-index: 999999;
|
||||||
|
// pointer-events: none;
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
#app-main {
|
#app-main {
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -168,6 +168,7 @@ const app = new Vue({
|
||||||
location: "",
|
location: "",
|
||||||
info: {}
|
info: {}
|
||||||
},
|
},
|
||||||
|
windowState: "normal",
|
||||||
desiredPageTransition: "wpfade_transform",
|
desiredPageTransition: "wpfade_transform",
|
||||||
hideUserInfo: ipcRenderer.sendSync("is-dev") || false,
|
hideUserInfo: ipcRenderer.sendSync("is-dev") || false,
|
||||||
artworkReady: false,
|
artworkReady: false,
|
||||||
|
@ -217,6 +218,7 @@ const app = new Vue({
|
||||||
castMenu: false,
|
castMenu: false,
|
||||||
moreInfo: false,
|
moreInfo: false,
|
||||||
airplayPW: false,
|
airplayPW: false,
|
||||||
|
settings: false
|
||||||
},
|
},
|
||||||
socialBadges: {
|
socialBadges: {
|
||||||
badgeMap: {},
|
badgeMap: {},
|
||||||
|
@ -849,6 +851,10 @@ const app = new Vue({
|
||||||
this.library.localsongs = data;
|
this.library.localsongs = data;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
ipcRenderer.on('window-state-changed', (event, data) => {
|
||||||
|
this.chrome.windowState = data
|
||||||
|
})
|
||||||
|
|
||||||
ipcRenderer.on('SoundCheckTag', (event, tag) => {
|
ipcRenderer.on('SoundCheckTag', (event, tag) => {
|
||||||
// let replaygain = self.parseSCTagToRG(tag)
|
// let replaygain = self.parseSCTagToRG(tag)
|
||||||
try {
|
try {
|
||||||
|
@ -4325,7 +4331,8 @@ const app = new Vue({
|
||||||
"name": app.getLz('settings.option.audio.audioLab'),
|
"name": app.getLz('settings.option.audio.audioLab'),
|
||||||
"hidden": true,
|
"hidden": true,
|
||||||
"action": function () {
|
"action": function () {
|
||||||
app.appRoute('audiolabs')
|
app.$store.state.pageState.settings.currentTabIndex = 2
|
||||||
|
app.modals.settings = true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -12,6 +12,10 @@ const store = new Vuex.Store({
|
||||||
nextUrl: null,
|
nextUrl: null,
|
||||||
items: [],
|
items: [],
|
||||||
size: "normal"
|
size: "normal"
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
currentTabIndex: 0,
|
||||||
|
fullscreen: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
artwork: {
|
artwork: {
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--appleEase: cubic-bezier(0.42, 0, 0.58, 1);
|
--appleEase: cubic-bezier(0.42, 0, 0.58, 1);
|
||||||
|
--borderColor: rgb(200 200 200 / 16%);
|
||||||
--mediaItemShadow: inset 0px 0px 0px 1px rgb(200 200 200 / 16%);
|
--mediaItemShadow: inset 0px 0px 0px 1px rgb(200 200 200 / 16%);
|
||||||
--mediaItemShadow-Shadow: 0 8px 40px rgb(0 0 0 / 0.55);
|
--mediaItemShadow-Shadow: 0 8px 40px rgb(0 0 0 / 0.55);
|
||||||
--mediaItemShadow-ShadowSubtle: 0 4px 14px rgb(0 0 0 / 10%);
|
--mediaItemShadow-ShadowSubtle: 0 4px 14px rgb(0 0 0 / 10%);
|
||||||
|
@ -50,6 +51,7 @@
|
||||||
--textColor: #eee;
|
--textColor: #eee;
|
||||||
--replayGradient: linear-gradient(45deg, hsl(248deg 58% 29%), hsl(13deg 41% 42%));
|
--replayGradient: linear-gradient(45deg, hsl(248deg 58% 29%), hsl(13deg 41% 42%));
|
||||||
--glassFilter: blur(16px) saturate(180%);
|
--glassFilter: blur(16px) saturate(180%);
|
||||||
|
--glassFilterHeavy: blur(64px) saturate(280%);
|
||||||
--sidebarWidth: 260px;
|
--sidebarWidth: 260px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@
|
||||||
$root.getLz("term.about")
|
$root.getLz("term.about")
|
||||||
}}</span>
|
}}</span>
|
||||||
</button>
|
</button>
|
||||||
<button class="usermenu-item" @click="appRoute('settings')">
|
<button class="usermenu-item" @click="modals.settings = true">
|
||||||
<span class="usermenu-item-icon">
|
<span class="usermenu-item-icon">
|
||||||
<%- include("../svg/settings.svg") %>
|
<%- include("../svg/settings.svg") %>
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -31,6 +31,9 @@
|
||||||
<transition name="modal">
|
<transition name="modal">
|
||||||
<plugin-menu v-if="modals.pluginMenu"></plugin-menu>
|
<plugin-menu v-if="modals.pluginMenu"></plugin-menu>
|
||||||
</transition>
|
</transition>
|
||||||
|
<transition name="modal">
|
||||||
|
<settings-window v-if="modals.settings"></settings-window>
|
||||||
|
</transition>
|
||||||
<transition name="modal">
|
<transition name="modal">
|
||||||
<eq-view v-if="modals.equalizer"></eq-view>
|
<eq-view v-if="modals.equalizer"></eq-view>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
1560
src/renderer/views/components/settings-window.ejs
Normal file
1560
src/renderer/views/components/settings-window.ejs
Normal file
File diff suppressed because it is too large
Load diff
|
@ -71,7 +71,9 @@
|
||||||
<div id="LOADER">
|
<div id="LOADER">
|
||||||
<%- include("../assets/cider-round.svg") %>
|
<%- include("../assets/cider-round.svg") %>
|
||||||
</div>
|
</div>
|
||||||
<div id="app" :class="getAppClasses()" :style="getAppStyle()" :library-visible="(chrome.sidebarCollapsed ? 0 : 1)" :window-style="cfg.visual.directives.windowLayout">
|
<div id="app" :class="getAppClasses()"
|
||||||
|
:window-state="chrome.windowState"
|
||||||
|
:style="getAppStyle()" :library-visible="(chrome.sidebarCollapsed ? 0 : 1)" :window-style="cfg.visual.directives.windowLayout">
|
||||||
<transition name="fsModeSwitch">
|
<transition name="fsModeSwitch">
|
||||||
<div id="app-main" v-show="appMode == 'player'">
|
<div id="app-main" v-show="appMode == 'player'">
|
||||||
<%- include('app/chrome-top'); %>
|
<%- include('app/chrome-top'); %>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script type="text/x-template" id="audiolabs-page">
|
<script type="text/x-template" id="audiolabs-page">
|
||||||
<div class="content-inner audiolabs-page ">
|
<div class="audiolabs-page">
|
||||||
<div class="md-option-container">
|
<div class="md-option-container">
|
||||||
<div class="settings-option-body">
|
<div class="settings-option-body">
|
||||||
<div class="md-option-line">
|
<div class="md-option-line">
|
||||||
|
@ -120,7 +120,7 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="opacity: 0.5; pointer-events: none">
|
<div style="opacity: 0.5; pointer-events: none" v-if="false">
|
||||||
<div class="md-option-header">
|
<div class="md-option-header">
|
||||||
<span>{{$root.getLz('settings.header.unfinished')}}</span>
|
<span>{{$root.getLz('settings.header.unfinished')}}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -178,7 +178,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="playlist-body scrollbody">
|
<div class="playlist-body scrollbody">
|
||||||
<b-tabs pills class="track-pills pilldim" align="center" content-class="mt-3" :nav-wrapper-class="navClass(data)">
|
<b-tabs pills class="track-pills pilldim fancy-pills" align="center" content-class="mt-3" :nav-wrapper-class="navClass(data)">
|
||||||
<b-tab :title="$root.getLz('term.tracks')">
|
<b-tab :title="$root.getLz('term.tracks')">
|
||||||
<div @wheel="minClass(true)" @scroll="minClass(true)">
|
<div @wheel="minClass(true)" @scroll="minClass(true)">
|
||||||
<div class="">
|
<div class="">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue