183 lines
11 KiB
Text
183 lines
11 KiB
Text
<div class="app-chrome" :style="{'display': chrome.topChromeVisible ? '' : 'none'}">
|
|
<div class="app-chrome--left">
|
|
<div class="app-chrome-item full-height" v-if="chrome.windowControlPosition == 'left' && !chrome.nativeControls">
|
|
<div class="window-controls-macos">
|
|
<div class="close" @click="ipcRenderer.send('close')"></div>
|
|
<div class="minimize" @click="ipcRenderer.send('minimize')"></div>
|
|
<div class="minmax restore" v-if="chrome.maximized"
|
|
@click="ipcRenderer.send('maximize')">
|
|
</div>
|
|
<div class="minmax" v-else @click="ipcRenderer.send('maximize')"></div>
|
|
</div>
|
|
</div>
|
|
<div class="app-chrome-item full-height" v-else>
|
|
<button class="app-mainmenu"
|
|
@blur="mainMenuVisibility(false)"
|
|
@click="mainMenuVisibility(true)"
|
|
:class="{active: chrome.menuOpened}"></button>
|
|
</div>
|
|
<template v-if="getThemeDirective('appNavigation') != 'seperate'">
|
|
<div class="vdiv display--large" v-if="getThemeDirective('windowLayout') == 'twopanel'"></div>
|
|
<div class="app-chrome-item">
|
|
<button class="playback-button navigation" @click="navigateBack()">
|
|
<%- include('../svg/chevron-left.svg') %>
|
|
</button>
|
|
</div>
|
|
<div class="app-chrome-item">
|
|
<button class="playback-button navigation" @click="navigateForward()">
|
|
<%- include('../svg/chevron-right.svg') %>
|
|
</button>
|
|
</div>
|
|
<div class="vdiv display--large" v-if="getThemeDirective('windowLayout') != 'twopanel'"></div>
|
|
</template>
|
|
<template v-if="getThemeDirective('windowLayout') != 'twopanel'">
|
|
<div class="app-chrome-item display--large">
|
|
<button class="playback-button--small shuffle" v-if="mk.shuffleMode == 0"
|
|
@click="mk.shuffleMode = 1"></button>
|
|
<button class="playback-button--small shuffle active" v-else
|
|
@click="mk.shuffleMode = 0"></button>
|
|
</div>
|
|
<div class="app-chrome-item display--large">
|
|
<button class="playback-button previous" @click="prevButton()"></button>
|
|
</div>
|
|
<div class="app-chrome-item display--large">
|
|
<button class="playback-button pause" @click="mk.pause()" v-if="mk.isPlaying"></button>
|
|
<button class="playback-button play" @click="mk.play()" v-else></button>
|
|
</div>
|
|
<div class="app-chrome-item display--large">
|
|
<button class="playback-button next" @click="skipToNextItem()"></button>
|
|
</div>
|
|
<div class="app-chrome-item display--large">
|
|
<button class="playback-button--small repeat" v-if="mk.repeatMode == 0"
|
|
@click="mk.repeatMode = 1"></button>
|
|
<button class="playback-button--small repeat repeatOne" @click="mk.repeatMode = 2"
|
|
v-else-if="mk.repeatMode == 1"></button>
|
|
<button class="playback-button--small repeat active" @click="mk.repeatMode = 0"
|
|
v-else-if="mk.repeatMode == 2"></button>
|
|
</div>
|
|
</template>
|
|
</div>
|
|
<div class="app-chrome--center">
|
|
<div class="app-chrome-item playback-controls" v-if="getThemeDirective('windowLayout') != 'twopanel'">
|
|
<template v-if="mkReady()">
|
|
<div class="app-playback-controls" @mouseover="chrome.progresshover = true"
|
|
@mouseleave="chrome.progresshover = false" @contextmenu="nowPlayingContextMenu">
|
|
<div class="artwork" @click="drawer.open = false; fullscreen(true)">
|
|
<mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork>
|
|
</div>
|
|
<div class="playback-info">
|
|
<div class="chrome-icon-container">
|
|
<div class="audio-type private-icon" v-if="cfg.general.privateEnabled === true"></div>
|
|
<div class="audio-type ppe-icon" v-if="cfg.audio.maikiwiAudio.ciderPPE === true"></div>
|
|
</div>
|
|
<div class="song-name"
|
|
:class="[isElementOverflowing('#app-main > div.app-chrome > div.app-chrome--center > div > div > div.playback-info > div.song-name') ? 'marquee' : '']">
|
|
{{ mk.nowPlayingItem["attributes"]["name"] }}
|
|
<div class="explicit-icon"
|
|
v-if="mk.nowPlayingItem['attributes']['contentRating'] == 'explicit'"
|
|
style="display: inline-block"></div>
|
|
</div>
|
|
<div class="song-artist-album">
|
|
<div class="song-artist-album-content"
|
|
:class="[isElementOverflowing('#app-main > .app-chrome .app-chrome-item > .app-playback-controls > div >.song-artist-album > .song-artist-album-content') ? 'marquee' : '']"
|
|
style="display: inline-block; -webkit-box-orient: horizontal; white-space: nowrap;">
|
|
<div class="item-navigate song-artist" style="display: inline-block"
|
|
@click="getNowPlayingItemDetailed(`artist`)">
|
|
{{ mk.nowPlayingItem["attributes"]["artistName"] }}
|
|
</div>
|
|
<div class="song-artist item-navigate" style="display: inline-block"
|
|
@click="getNowPlayingItemDetailed('album')"
|
|
v-if="mk.nowPlayingItem['attributes']['albumName'] != ''">
|
|
<div class="separator" style="display: inline-block;">{{"—"}}</div>
|
|
{{(mk.nowPlayingItem["attributes"]["albumName"]) ?
|
|
(mk.nowPlayingItem["attributes"]["albumName"]) : "" }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="song-progress">
|
|
<div class="song-duration"
|
|
style="justify-content: space-between; height: 1px;"
|
|
:style="[chrome.progresshover ? {'display': 'flex'} : {'display' : 'none'} ]">
|
|
<p style="width: auto">{{ convertTime(getSongProgress()) }}</p>
|
|
<p style="width: auto">{{ convertTime(mk.currentPlaybackDuration) }}
|
|
</p>
|
|
</div>
|
|
|
|
<input type="range" step="0.01" min="0" :style="progressBarStyle()"
|
|
@input="playerLCD.desiredDuration = $event.target.value;playerLCD.userInteraction = true"
|
|
@mouseup="mk.seekToTime($event.target.value);setTimeout(()=>{playerLCD.desiredDuration = 0;playerLCD.userInteraction = false}, 1000);"
|
|
:max="mk.currentPlaybackDuration" :value="getSongProgress()">
|
|
</div>
|
|
</div>
|
|
<template v-if="mk.nowPlayingItem['attributes']['playParams']">
|
|
<div class="actions">
|
|
<button class="lcdMenu" @click="nowPlayingContextMenu">
|
|
<div class="svg-icon"></div>
|
|
</button>
|
|
</div>
|
|
</template>
|
|
|
|
</div>
|
|
</template>
|
|
|
|
</div>
|
|
<div class="app-title-text" v-if="false">
|
|
Cider
|
|
</div>
|
|
</div>
|
|
<div class="app-chrome--right">
|
|
<template v-if="getThemeDirective('windowLayout') != 'twopanel'">
|
|
<div class="app-chrome-item volume display--large">
|
|
<button class="volume-button--small volume" @click="muteButtonPressed()"
|
|
:class="{'active': this.cfg.audio.volume == 0}"></button>
|
|
<input type="range" @wheel="volumeWheel" :step="cfg.audio.volumeStep" min="0" :max="cfg.audio.maxVolume"
|
|
v-model="mk.volume" v-if="typeof mk.volume != 'undefined'" @change="checkMuteChange()"
|
|
v-b-tooltip.hover :title="`${(Math.log10(mk.volume) * 20).toFixed(2)} dB`">
|
|
</div>
|
|
<div class="app-chrome-item generic">
|
|
<button class="playback-button--small miniplayer"
|
|
:title="$root.getLz('term.miniplayer')"
|
|
v-b-tooltip.hover
|
|
@click="drawer.open = false; miniPlayer(true)"></button>
|
|
</div>
|
|
<div class="app-chrome-item generic">
|
|
<button class="playback-button--small queue"
|
|
:title="$root.getLz('term.queue')"
|
|
v-b-tooltip.hover
|
|
:class="{'active': drawer.panel == 'queue'}"
|
|
@click="invokeDrawer('queue')"></button>
|
|
</div>
|
|
<div class="app-chrome-item generic">
|
|
<template v-if="lyrics && lyrics != [] && lyrics.length > 0">
|
|
<button class="playback-button--small lyrics"
|
|
:title="$root.getLz('term.lyrics')"
|
|
v-b-tooltip.hover
|
|
:class="{'active': drawer.panel == 'lyrics'}"
|
|
@click="invokeDrawer('lyrics')"></button>
|
|
</template>
|
|
<template v-else>
|
|
<button class="playback-button--small lyrics"
|
|
:style="{'opacity': 0.3, 'pointer-events': 'none'}"></button>
|
|
</template>
|
|
</div>
|
|
</template>
|
|
<div class="app-chrome-item full-height" id="window-controls-container"
|
|
v-if="chrome.windowControlPosition == 'right' && !chrome.nativeControls">
|
|
<div class="window-controls">
|
|
<div class="minimize" @click="ipcRenderer.send('minimize')"></div>
|
|
<div class="minmax restore" v-if="chrome.maximized"
|
|
@click="ipcRenderer.send('maximize')">
|
|
</div>
|
|
<div class="minmax" v-else @click="ipcRenderer.send('maximize')"></div>
|
|
<div class="close" @click="ipcRenderer.send('close')"></div>
|
|
</div>
|
|
</div>
|
|
<div class="app-chrome-item full-height" v-else-if="platform != 'darwin' && !chrome.nativeControls">
|
|
<button class="app-mainmenu"
|
|
@blur="mainMenuVisibility(false)"
|
|
@click="mainMenuVisibility(true)"
|
|
:class="{active: chrome.menuOpened}"></button>
|
|
</div>
|
|
</div>
|
|
</div>
|