
* Update es_ES * Localization updates * Documentation * Localization updates * Documentation * Xd * Expose playback progress. * Cider The Wekeend Update Add more keybinds and make own page to change it ( No more Pop Up) Redesing the "Menu Bar" to more efficient order. * CleanUp * Some Strings Update made By "Monochromish" * Documentation * Goodbye Analog Warmth * typo * I can't fuckin read * Updated config.yml * Auto Triage * Remove Spatialization from Audio Settings modal * Remove customizable Spatialization strings * Remove some whitespaces in ja_JP * Add i18n updates to README * Change some things in i18n README * Remove whitespace in ja_JP * uhh * Add hide_timestamp to store * Add hideTimestamp to en_US and source * Add hideTimestamp to hu_HU * Add check to discordrpc.ts * Add hideTimestamp to settings * Add missing button labels (fix for screen readers) (#1016) * added some attributes for themes https://docs.cider.sh/themes/available-attributes * Fix unlove * Revert "Fix unlove" * Update ja_JP.json Drafted by あづき#8046 Finalized by Maikiwi * ja_JP credit change * Update en_OWO.json * Add Relaunch Prompt to nativeTitleBar and hw_acc * Update zh_TW.json Update TW language. * made some new playback icons * german language changes * CiderAudio cleanup * and I forgor * perf increase * electron version bump * feat: 🌐 Update French language (#1030) * further cideraudio trimming * i18n support for CAR/CTS * fix broken code * Update es_ES * Update Some "Audio Settings" String and added to es_ES * optimizations added show loved tracks inline set several less operations to async changed default transition to fade in, moved slide in to sweetener changed drawer transition to transform optimizations for disabled gpu * readded audio strings * Don't code while ur sleepy * don't fix code while ur drunk * test your commits before pushing * impulses can now be external * feat: 🌐 Update French Language * Create Themes and Plugins folder if it doesnt't exist Fixes #742 * Make cast device list scrollable * Removal of Natural (High) * i18n changes * I'm an idiot * fix queue menu * CAR mode selector ext * I forgor Co-authored-by: Mefsaal <mefsaal@gmail.com> Co-authored-by: Gabriel Davila <56521591+mefsaal@users.noreply.github.com> Co-authored-by: maikirakiwi <stella@mai.kiwi> Co-authored-by: Core <64542347+coredev-uk@users.noreply.github.com> Co-authored-by: Amaru8 <52407090+Amaru8@users.noreply.github.com> Co-authored-by: Pedro Galhardo <pedromgalhardo@tecnico.ulisboa.pt> Co-authored-by: booploops <49113086+booploops@users.noreply.github.com> Co-authored-by: GamingLiamStudios <58615717+GamingLiamStudios@users.noreply.github.com> Co-authored-by: 宥叡 <46503943+jay900604@users.noreply.github.com> Co-authored-by: UnbreakCode <unbreakcode@gmail.com> Co-authored-by: Erwan <24718500+ErwanGit@users.noreply.github.com> Co-authored-by: Erwan <erwan977@gmail.com> Co-authored-by: licia-tia <licia@s-cry.com> Co-authored-by: vapormusic <vietanhfat@gmail.com>
199 lines
12 KiB
Text
199 lines
12 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}"
|
|
:aria-label="$root.getLz('term.quickNav')"></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()"
|
|
:title="$root.getLz('term.navigateBack')" v-b-tooltip.hover>
|
|
<%- include('../svg/chevron-left.svg') %>
|
|
</button>
|
|
</div>
|
|
<div class="app-chrome-item">
|
|
<button class="playback-button navigation" @click="navigateForward()"
|
|
:title="$root.getLz('term.navigateForward')" v-b-tooltip.hover>
|
|
<%- 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" :title="$root.getLz('term.enableShuffle')"
|
|
v-b-tooltip.hover></button>
|
|
<button class="playback-button--small shuffle active" v-else
|
|
@click="mk.shuffleMode = 0" :title="$root.getLz('term.disableShuffle')"
|
|
v-b-tooltip.hover></button>
|
|
</div>
|
|
<div class="app-chrome-item display--large">
|
|
<button class="playback-button previous" @click="prevButton()"
|
|
:title="$root.getLz('term.previous')" v-b-tooltip.hover></button>
|
|
</div>
|
|
<div class="app-chrome-item display--large">
|
|
<button class="playback-button pause" @click="mk.pause()" v-if="mk.isPlaying"
|
|
:title="$root.getLz('term.pause')" v-b-tooltip.hover></button>
|
|
<button class="playback-button play" @click="mk.play()" v-else
|
|
:title="$root.getLz('term.play')" v-b-tooltip.hover></button>
|
|
</div>
|
|
<div class="app-chrome-item display--large">
|
|
<button class="playback-button next" @click="skipToNextItem()"
|
|
:title="$root.getLz('term.next')" v-b-tooltip.hover></button>
|
|
</div>
|
|
<div class="app-chrome-item display--large">
|
|
<button class="playback-button--small repeat" v-if="mk.repeatMode == 0"
|
|
@click="mk.repeatMode = 1" :title="$root.getLz('term.enableRepeatOne')"
|
|
v-b-tooltip.hover></button>
|
|
<button class="playback-button--small repeat repeatOne" @click="mk.repeatMode = 2"
|
|
v-else-if="mk.repeatMode == 1" :title="$root.getLz('term.disableRepeatOne')"
|
|
v-b-tooltip.hover></button>
|
|
<button class="playback-button--small repeat active" @click="mk.repeatMode = 0"
|
|
v-else-if="mk.repeatMode == 2" :title="$root.getLz('term.disableRepeat')"
|
|
v-b-tooltip.hover></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);"
|
|
@touchend="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"
|
|
:title="$root.getLz('term.more')" v-b-tooltip.hover>
|
|
<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}"
|
|
:title="cfg.audio.muted ? $root.getLz('term.unmute') : $root.getLz('term.mute')"
|
|
v-b-tooltip.hover></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="formatVolumeTooltip()">
|
|
</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>
|