Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
Core 2022-03-10 17:31:02 +00:00
commit 6da8c3c2b6
No known key found for this signature in database
GPG key ID: FE9BF1B547F8F3C6
45 changed files with 11490 additions and 480 deletions

View file

@ -187,4 +187,10 @@ Update 27/02/2022 18:30 UTC
Update 28/02/2022 13:00 UTC
* `term.time.days`: Added for `en_US`
* `term.time.day`: Added for `en_US`
* `term.time.day`: Added for `en_US`
Update 10/3/2022 14:00 UTC
* `settings.header.window`: Added for `en_US`
* `settings.header.window.description`: Added for `en_US`
* `settings.option.window.openOnStartup`: Added for `en_US`
* `settings.option.window.openOnStartup.hidden`: Added for `en_US`

View file

@ -280,7 +280,7 @@
"settings.header.experimental": "Experimentální",
"settings.header.experimental.description": "Upravte experimentální nastavení pro Cider.",
"settings.option.experimental.compactUI": "Kompaktní uživatelské rozhraní",
"settings.option.experimental.close_button_hide": "Tlačítko Zavřít by mělo aplikaci skrýt",
"settings.option.window.close_button_hide": "Tlačítko Zavřít by mělo aplikaci skrýt",
"settings.option.experimental.copy_log": "Zkopírujte protokoly do clipboard",
"settings.option.experimental.inline_playlists": "Vložené seznamy skladeb a alba",
"spatial.notTurnedOn": "Prostorová funkce zvuku je zakázána. Chcete-li jej používat, nejprve jej povolte.",

View file

@ -291,7 +291,7 @@
"settings.header.experimental": "Experimentell",
"settings.header.experimental.description": "Passe die experimentellen Einstellungen für Cider an.",
"settings.option.experimental.compactUI": "Kompaktes UI",
"settings.option.experimental.close_button_hide": "Schließtaste soll die App verbergen",
"settings.option.window.close_button_hide": "Schließtaste soll die App verbergen",
"settings.option.experimental.copy_log": "Kopiere Logs in die Zwischenablage",
"settings.option.experimental.inline_playlists": "Inline Playlists und Alben",
"spatial.notTurnedOn": "Die Audio-Spatialisierung ist deaktiviert. Um sie zu verwenden, musst du diese zuerst aktivieren.",

View file

@ -363,7 +363,7 @@
"settings.option.experimental.unknownPlugin": "Unknyown Souwces",
"settings.option.experimental.unknownPlugin.description": "Awwow instawwation of pwugins fwom wepos othew than the Cidew Pwugin Wepositowy",
"settings.option.experimental.compactUI": "Compact UI",
"settings.option.experimental.close_button_hide": "Cwose Button Shouwd Hide the Appwication",
"settings.option.window.close_button_hide": "Cwose Button Shouwd Hide the Appwication",
"settings.option.experimental.inline_playlists": "Inwinye Pwaywists and Awbums",
"settings.option.advanced.playlistTrackMapping": "Pwaywist Twack Mapping",
"settings.option.advanced.playlistTrackMapping.description": "Enyabwes deep scannying of pwaywists to detewminye which twacks awe in which pwaywists. Pwaywist cache buiwd times can incwease signyificantwy.",

View file

@ -295,7 +295,7 @@
"settings.header.experimental": "piss lab",
"settings.header.experimental.description": "mitochondria is the powerhouse of the cell",
"settings.option.experimental.compactUI": "compact piss",
"settings.option.experimental.close_button_hide": "play hide-and-seek when clicking close button",
"settings.option.window.close_button_hide": "play hide-and-seek when clicking close button",
"settings.option.experimental.copy_log": "copy sewage to pissboard",
"settings.option.experimental.inline_playlists": "inpiss pisslists and piss collections",
"spatial.notTurnedOn": "3D piss is not on. turn it on lol",

View file

@ -290,7 +290,7 @@
"settings.header.experimental": "Experimental",
"settings.header.experimental.description": "Adjust the experimental settings for Cider.",
"settings.option.experimental.compactUI": "Compact UI",
"settings.option.experimental.close_button_hide": "Close Button Should Hide the Application",
"settings.option.window.close_button_hide": "Close Button Should Hide the Application",
"settings.option.experimental.copy_log": "Copy logs to clipboard",
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",

View file

@ -285,7 +285,7 @@
"settings.header.experimental": "ᒷ/i!ᒷ∷╎ᒲᒷリᒣᖋ|:",
"settings.header.experimental.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᒷ/i!ᒷ∷╎ᒲᒷリᒣᖋ|: ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
"settings.option.experimental.compactUI": "ᔮᒲi!ᖋᔮᒣ ⚍╎",
"settings.option.experimental.close_button_hide": "ᔮ|:ᒍϟᒷ ᕊ⚍ᒣᒣᒍリ ϟ⍑ᒍ⚍|:↸ ⍑╎↸ᒷ ᒣ⍑ᒷ ᖋi!i!|:╎ᔮᖋᒣ╎ᒍリ",
"settings.option.window.close_button_hide": "ᔮ|:ᒍϟᒷ ᕊ⚍ᒣᒣᒍリ ϟ⍑ᒍ⚍|:↸ ⍑╎↸ᒷ ᒣ⍑ᒷ ᖋi!i!|:╎ᔮᖋᒣ╎ᒍリ",
"settings.option.experimental.copy_log": "ᔮi!॥ |:ᒍ┤ϟ ᒣᒍ ᔮ|:╎i!ᕊᒍᖋ∷↸",
"settings.option.experimental.inline_playlists": "╎リ|:╎リᒷ i!|:ᖋ॥|:╎ϟᒣϟ ᖋリ↸ ᖋ|:ᕊ⚍ᒲϟ",
"spatial.notTurnedOn": "ᖋ⚍↸╎ᒍ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ ╎ϟ ↸╎ϟᖋᕊ|:ᒷ↸. ᒣᒍ ⚍ϟᒷ, i!|:ᒷᖋϟᒷ ᒷリᖋᕊ|:ᒷ ╎ᒣ ⎓╎∷ϟᒣ.",

View file

@ -23,6 +23,8 @@
"term.about": "About",
"term.privateSession": "Private Session",
"term.queue": "Queue",
"term.lyrics": "Lyrics",
"term.miniplayer": "MiniPlayer",
"term.history": "History",
"term.search": "Search",
"term.library": "Library",
@ -337,6 +339,10 @@
"settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "Dark",
"settings.option.visual.showPersonalInfo": "Show Personal Info",
"settings.header.window": "Window",
"settings.header.window.description": "Adjust the window settings for Cider.",
"settings.option.window.openOnStartup": "Open Cider on Startup",
"settings.option.window.openOnStartup.hidden": "Open Hidden",
"settings.header.lyrics": "Lyrics",
"settings.header.lyrics.description": "Adjust the lyrics settings for Cider.",
"settings.option.lyrics.enableMusixmatch": "Enable Musixmatch Lyrics",
@ -363,7 +369,7 @@
"settings.option.experimental.unknownPlugin": "Unknown Sources",
"settings.option.experimental.unknownPlugin.description": "Allow installation of plugins from repos other than the Cider Plugin Repository",
"settings.option.experimental.compactUI": "Compact UI",
"settings.option.experimental.close_button_hide": "Close Button Should Hide the Application",
"settings.option.window.close_button_hide": "Close Button Should Hide the Application",
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
"settings.option.advanced.playlistTrackMapping": "Playlist Track Mapping",
"settings.option.advanced.playlistTrackMapping.description": "Enables deep scanning of playlists to determine which tracks are in which playlists. Playlist cache build times can increase significantly.",

View file

@ -242,7 +242,7 @@
"settings.header.experimental": "En pruebas",
"settings.header.experimental.description": "Ajustes en pruebas para Cider.",
"settings.option.experimental.compactUI": "Interfaz de usuario compacto",
"settings.option.experimental.close_button_hide": "El botón de cerrar minimizará la aplicación en la bandeja",
"settings.option.window.close_button_hide": "El botón de cerrar minimizará la aplicación en la bandeja",
"spatial.notTurnedOn": "La espacialización del audio esta desactivada. Para usarlo primero actívelo.",
"spatial.spatialProperties": "Propiedades espaciales",
"spatial.width": "Ancho",

View file

@ -272,7 +272,7 @@
"settings.header.experimental": "Expérimental",
"settings.header.experimental.description": "Ajuster les paramètres expérimentaux de Cider.",
"settings.option.experimental.compactUI": "Interface utilisateur compacte",
"settings.option.experimental.close_button_hide": "Le bouton de fermeture doit masquer l'application",
"settings.option.window.close_button_hide": "Le bouton de fermeture doit masquer l'application",
"settings.option.experimental.copy_log": "Copier les logs dans le presse-papier",
"settings.option.experimental.inline_playlists": "Playlists et albums en ligne",
"spatial.notTurnedOn": "La spatialisation audio est désactivée. Pour l'utiliser, vous devez d'abord l'activer.",

View file

@ -280,7 +280,7 @@
"settings.header.experimental": "Experimental",
"settings.header.experimental.description": "Adjust the experimental settings for Cider.",
"settings.option.experimental.compactUI": "Compact UI",
"settings.option.experimental.close_button_hide": "Close Button Should Hide the Application",
"settings.option.window.close_button_hide": "Close Button Should Hide the Application",
"settings.option.experimental.copy_log": "Copy logs to clipboard",
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",

View file

@ -340,7 +340,7 @@
"settings.option.experimental.unknownPlugin": "Unknown Sources",
"settings.option.experimental.unknownPlugin.description": "Allow installion of plugins from repos other than the Cider Plugin Repository",
"settings.option.experimental.compactUI": "Kompakt felület",
"settings.option.experimental.close_button_hide": "A bezárás gomb rejtse el az alkalmazást",
"settings.option.window.close_button_hide": "A bezárás gomb rejtse el az alkalmazást",
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
"spatial.notTurnedOn": "A térbeli hangzás ki van kapcsolva, használatához kapcsolja be.",
"spatial.spatialProperties": "Térbeli hang",

View file

@ -280,7 +280,7 @@
"settings.header.experimental": "Eksperimental",
"settings.header.experimental.description": "Sesuaikan pengaturan eksperimental untuk Cider.",
"settings.option.experimental.compactUI": "UI Kompak",
"settings.option.experimental.close_button_hide": "Tombol Tutup Menyembunyikan Aplikasi",
"settings.option.window.close_button_hide": "Tombol Tutup Menyembunyikan Aplikasi",
"settings.option.experimental.copy_log": "Salin log ke clipboard",
"settings.option.experimental.inline_playlists": "Playlist dan Album Sebaris",
"spatial.notTurnedOn": "Spasialisasi Audio dinonaktifkan. Untuk menggunakan, aktifkan terlebih dahulu.",

View file

@ -255,7 +255,7 @@
"settings.header.experimental": "試験的な機能",
"settings.header.experimental.description": "開発中の実験的な機能は不完全で不安定である可能性があります",
"settings.option.experimental.compactUI": "コンパクトインターフェース",
"settings.option.experimental.close_button_hide": "「閉じる」ボタンでアプリを隠します",
"settings.option.window.close_button_hide": "「閉じる」ボタンでアプリを隠します",
"settings.option.experimental.copy_log": "ログをコピーする",
"settings.option.experimental.inline_playlists": "プレイリストをインラインで表示",
"spatial.spatialProperties": "空間化のプロパティ",

View file

@ -263,7 +263,7 @@
"settings.header.experimental": "실험실",
"settings.header.experimental.description": "Cider의 실험적 기능을 설정합니다.",
"settings.option.experimental.compactUI": "컴팩트 UI",
"settings.option.experimental.close_button_hide": "닫기 버튼이 애플리케이션을 가릴 것입니다",
"settings.option.window.close_button_hide": "닫기 버튼이 애플리케이션을 가릴 것입니다",
"settings.option.experimental.copy_log": "로그를 클립보드에 복사하기",
"settings.option.experimental.inline_playlists": "인라인 플레이리스트 및 앨범",
"spatial.notTurnedOn": "오디오 공간화가 비활성화되어있습니다. 사용하기 전에 먼저 활성화해주세요.",

View file

@ -86,7 +86,6 @@
"term.clearAll": "Limpar Tudo",
"term.language": "Idioma",
"term.recentStations": "Estações Recentes",
"term.language": "Idioma",
"term.funLanguages": "Fun",
"term.noLyrics": "Carregando... / Letras não achadas./ Instrumental.",
"term.copyright": "Copyright",
@ -283,7 +282,7 @@
"settings.header.experimental": "Experimental",
"settings.header.experimental.description": "Ajustar as definições experimental no Cider.",
"settings.option.experimental.compactUI": "UI Compacto",
"settings.option.experimental.close_button_hide": "Fechar apenas esconde o Cider",
"settings.option.window.close_button_hide": "Fechar apenas esconde o Cider",
"spatial.spatialProperties": "Propriedades do Espacial",
"spatial.width": "Largura",
"spatial.height": "Altura",

View file

@ -243,7 +243,7 @@
"settings.header.experimental": "Experimental",
"settings.header.experimental.description": "Ajustează setările experimentale pentru Cider.",
"settings.option.experimental.compactUI": "UI Compact",
"settings.option.experimental.close_button_hide": "Butonul de închidere ar trebui să ascundă aplicația",
"settings.option.window.close_button_hide": "Butonul de închidere ar trebui să ascundă aplicația",
"spatial.notTurnedOn": "Spațializarea Audio este dezactivată. Pentru a folosi opțiunea aceasta, activați-o mai întâi.",
"spatial.spatialProperties": "Proprietăți Spațiale",
"spatial.width": "Lățime",

View file

@ -315,7 +315,7 @@
"settings.header.experimental": "Экспериментальные",
"settings.header.experimental.description": "Настройка экспериментальных функций Cider.",
"settings.option.experimental.compactUI": "Компактный интерфейс",
"settings.option.experimental.close_button_hide": "Кнопка «Закрыть» скрывает приложение",
"settings.option.window.close_button_hide": "Кнопка «Закрыть» скрывает приложение",
"settings.option.experimental.inline_playlists": "Встроенные плейлисты и альбомы",
"spatial.notTurnedOn": "Пространственное аудио отключено. Чтобы использовать, сначала включите его.",
"spatial.spatialProperties": "Настройка пространственного аудио",

View file

@ -23,6 +23,8 @@
"term.about": "About",
"term.privateSession": "Private Session",
"term.queue": "Queue",
"term.lyrics": "Lyrics",
"term.miniplayer": "MiniPlayer",
"term.history": "History",
"term.search": "Search",
"term.library": "Library",
@ -337,6 +339,10 @@
"settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "Dark",
"settings.option.visual.showPersonalInfo": "Show Personal Info",
"settings.header.window": "Window",
"settings.header.window.description": "Adjust the window settings for Cider.",
"settings.option.window.openOnStartup": "Open Cider on Startup",
"settings.option.window.openOnStartup.hidden": "Open Hidden",
"settings.header.lyrics": "Lyrics",
"settings.header.lyrics.description": "Adjust the lyrics settings for Cider.",
"settings.option.lyrics.enableMusixmatch": "Enable Musixmatch Lyrics",
@ -363,7 +369,7 @@
"settings.option.experimental.unknownPlugin": "Unknown Sources",
"settings.option.experimental.unknownPlugin.description": "Allow installation of plugins from repos other than the Cider Plugin Repository",
"settings.option.experimental.compactUI": "Compact UI",
"settings.option.experimental.close_button_hide": "Close Button Should Hide the Application",
"settings.option.window.close_button_hide": "Close Button Should Hide the Application",
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
"settings.option.advanced.playlistTrackMapping": "Playlist Track Mapping",
"settings.option.advanced.playlistTrackMapping.description": "Enables deep scanning of playlists to determine which tracks are in which playlists. Playlist cache build times can increase significantly.",

View file

@ -242,7 +242,7 @@
"settings.header.experimental": "Experimentellt",
"settings.header.experimental.description": "Ändra Ciders experimentella inställningar.",
"settings.option.experimental.compactUI": "Kompakt gränssnitt",
"settings.option.experimental.close_button_hide": "Stängknappen gömmer Cider istället",
"settings.option.window.close_button_hide": "Stängknappen gömmer Cider istället",
"spatial.notTurnedOn": "Spiralljud är av. Akrtivera det först.",
"spatial.spatialProperties": "Spiralljudsintällningar",
"spatial.width": "Bredd",

View file

@ -282,7 +282,7 @@
"settings.header.experimental": "Deneysel",
"settings.header.experimental.description": "Cider'deki deneysel özelliklere erişim sağlayın. (Not: Bazı özellikler düzgün çalışmayabilir.)",
"settings.option.experimental.compactUI": "Kompakt Arayüz",
"settings.option.experimental.close_button_hide": "Kapatma Düğmesi Cider'i Küçültür",
"settings.option.window.close_button_hide": "Kapatma Düğmesi Cider'i Küçültür",
"settings.option.experimental.copy_log": "Günlüğü Panoya Kopyala",
"settings.option.experimental.inline_playlists": "Listeleri ve Albümleri Açılır Pencere İle göster",
"spatial.notTurnedOn": "Uzamsal ses devre dışı. Kullanabilmek için lütfen önce etkinleştirin.",

View file

@ -285,7 +285,7 @@
"settings.header.experimental": "Thử nghiệm",
"settings.header.experimental.description": "Thay đổi các cài đặt lời thử nghiệm của Cider.",
"settings.option.experimental.compactUI": "UI thu gọn",
"settings.option.experimental.close_button_hide": "Nút thoát cửa số sẽ ẩn Cider xuống khay hệ thống",
"settings.option.window.close_button_hide": "Nút thoát cửa số sẽ ẩn Cider xuống khay hệ thống",
"settings.option.experimental.copy_log": "Sao chép logs ra bộ nhớ tạm",
"settings.option.experimental.inline_playlists": "Playlists and Albums hiện nổi lên trên",
"spatial.notTurnedOn": "Âm thanh đa chiều chưa được kích hoạt. Hãy kích hoạt nó trước",

View file

@ -291,7 +291,7 @@
"settings.header.experimental": "实验性功能",
"settings.header.experimental.description": "调整 Cider 的实验性功能",
"settings.option.experimental.compactUI": "紧凑型 UI",
"settings.option.experimental.close_button_hide": "点击关闭按钮时仅隐藏窗口",
"settings.option.window.close_button_hide": "点击关闭按钮时仅隐藏窗口",
"settings.option.experimental.copy_log": "复制日志至剪贴板",
"spatial.notTurnedOn": "请在设定中开启空间音频。",
"spatial.spatialProperties": "空间属性",

View file

@ -297,7 +297,7 @@
"settings.header.experimental": "實驗性功能",
"settings.header.experimental.description": "調整Cider的實驗性功能",
"settings.option.experimental.compactUI": "緊凑型 UI",
"settings.option.experimental.close_button_hide": "以關閉按鈕來隱藏 Cider",
"settings.option.window.close_button_hide": "以關閉按鈕來隱藏 Cider",
"spatial.notTurnedOn": "請先在設定中啟用空間音訊。",
"spatial.spatialProperties": "空間音訊屬性",
"spatial.width": "闊度",

View file

@ -283,7 +283,7 @@
"settings.header.experimental.description": "調整 Cider 的實驗性功能",
"settings.option.experimental.compactUI": "使用緊密的介面設計",
"settings.option.experimental.closeButtonBehaviour": "關閉按鈕操作",
"settings.option.experimental.close_button_hide": "關閉按鈕將 Cider 隱藏至系統列",
"settings.option.window.close_button_hide": "關閉按鈕將 Cider 隱藏至系統列",
"settings.option.experimental.inline_playlists": "將播放列表做為行内元素顯示",
"spatial.notTurnedOn": "空間音訊目前是關閉狀態,請先啟用再使用。",
"spatial.spatialProperties": "空間音訊屬性設定",

View file

@ -262,7 +262,7 @@
"settings.header.experimental": "實驗性功能",
"settings.header.experimental.description": "調整Cider嘅實驗性功能",
"settings.option.experimental.compactUI": "逼啲既 UI",
"settings.option.experimental.close_button_hide": "㩒交叉制嚟隱藏 Cider",
"settings.option.window.close_button_hide": "㩒交叉制嚟隱藏 Cider",
"settings.option.experimental.copy_log": "將log複製喺剪貼簿",
"spatial.notTurnedOn": "唔該喺設定入面啟用左空間音訊先。",
"spatial.spatialProperties": "空間音訊屬性",

View file

@ -120,6 +120,8 @@ export class AppEvents {
public ready(plug: any) {
this.plugin = plug
console.log('[AppEvents] App ready');
AppEvents.setLoginSettings()
}
public bwCreated() {
@ -139,7 +141,9 @@ export class AppEvents {
}
this.InstanceHandler()
this.InitTray()
if (process.platform !== "darwin") {
this.InitTray()
}
}
/***********************************************************************************************************************
@ -329,4 +333,23 @@ export class AppEvents {
clipboard.writeText(data)
})
}
/**
* Set login settings
* @private
*/
private static setLoginSettings() {
if (utils.getStoreValue('general.onStartup.enabled')) {
app.setLoginItemSettings({
openAtLogin: true,
path: app.getPath('exe'),
args: [`${utils.getStoreValue('general.onStartup.hidden') ? '--hidden' : ''}`]
})
} else {
app.setLoginItemSettings({
openAtLogin: false,
path: app.getPath('exe')
})
}
}
}

View file

@ -10,7 +10,6 @@ import {networkInterfaces} from "os";
import * as mm from 'music-metadata';
import fetch from 'electron-fetch'
import {wsapi} from "./wsapi";
import {AppImageUpdater, NsisUpdater} from "electron-updater";
import {utils} from './utils';
import {Plugins} from "./plugins";
@ -1130,8 +1129,18 @@ export class BrowserWindow {
isQuiting = true
});
app.on('activate', function(){
BrowserWindow.win.show()
BrowserWindow.win.focus()
});
// Quit when all windows are closed.
app.on('window-all-closed', () => {
app.quit()
// On macOS it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== 'darwin') {
app.quit()
}
})
BrowserWindow.win.on("closed", () => {

View file

@ -7,7 +7,6 @@ export class Store {
private defaults: any = {
"general": {
"close_button_hide": false,
"open_on_startup": false,
"discord_rpc": 1, // 0 = disabled, 1 = enabled as Cider, 2 = enabled as Apple Music
"discord_rpc_clear_on_pause": true,
"language": "en_US", // electron.app.getLocale().replace('-', '_') this can be used in future
@ -23,6 +22,10 @@ export class Store {
"artists": true,
"videos": true,
"podcasts": true
},
"onStartup": {
"enabled": false,
"hidden": false,
}
},
"home": {

View file

@ -1,4 +1,5 @@
import {app, Menu, shell} from "electron";
import {utils} from "../base/utils";
export default class Thumbar {
/**
@ -76,13 +77,19 @@ export default class Thumbar {
label: 'Window',
submenu: [
{role: 'minimize'},
{
label: 'Show',
click: () => utils.getWindow().show()
},
{role: 'zoom'},
...(this.isMac ? [
{type: 'separator'},
{role: 'front'},
] : [
{role: 'close'}
{}
]),
{role: 'close'},
{type: 'separator'},
{
label: 'Edit',
submenu: [

File diff suppressed because it is too large Load diff

2638
src/renderer/less/bootstrap-vue.min.less vendored Normal file

File diff suppressed because it is too large Load diff

6246
src/renderer/less/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load diff

View file

@ -7506,6 +7506,7 @@ fieldset:disabled .btn {
font-size : 0.875rem;
word-wrap : break-word;
opacity : 0;
pointer-events: none;
}
.tooltip.show {

View file

@ -14,6 +14,7 @@
&.chrome-bottom {
height: var(--chromeHeight2);
box-shadow: 0px -1px 0px rgba(0, 0, 0, 0.25);
z-index: 1;
}
}

File diff suppressed because it is too large Load diff

View file

@ -547,6 +547,11 @@
color: #eee;
}
&.disabled {
opacity: 0.5;
pointer-events: none;
}
// list item compact
&.compact {
height: 40px;

View file

@ -0,0 +1,349 @@
.notyf__toast {
-webkit-app-region: no-drag;
cursor: pointer;
}
.notyf-info {
background: var(--keyColor);
}
.tooltip-inner {
background: #2f2f2f;
opacity: 1;
border: 1px solid rgba(0, 0, 0, 0.35);
transition: all 0.3s ease-in-out;
box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.25);
}
.modal-fullscreen {
display: flex;
justify-content: center;
align-items: center;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.3);
z-index: 1000;
}
.modal-fullscreen .modal-window {
background: #333;
border-radius: 10px;
box-shadow: var(--mediaItemShadow-Shadow);
display: flex;
flex-flow: column;
max-height: 500px;
max-width: 360px;
background: #121212;
width: 100%;
position: relative;
}
.modal-fullscreen .modal-window:after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
box-shadow: var(--mediaItemShadow);
z-index: 1;
border-radius: inherit;
}
.modal-fullscreen .modal-window .modal-header {
width: 100%;
padding: 6px;
}
.modal-fullscreen .modal-window .modal-content {
width: 100%;
height: 100%;
overflow: hidden;
overflow-y: overlay;
}
.spatialproperties-panel .modal-window {
height: 700px;
max-height: 700px;
width: 800px;
max-width: 800px;
overflow: hidden;
}
.spatialproperties-panel .modal-window .info-header {
padding-left: 12px;
}
.spatialproperties-panel .modal-window .visual-container {
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.spatialproperties-panel .modal-window .visual {
position: relative;
height: 250px;
width: 300px;
display: inline-flex;
align-items: flex-end;
justify-content: center;
filter: drop-shadow(2px 12px 6px rgba(0, 0, 0, 0.25));
margin: 0 auto;
}
.spatialproperties-panel .modal-window .visual .face {
position: absolute;
width: calc(12px * 6);
height: calc(12px * 6);
border-radius: 6px;
transform: rotateX(60deg) rotateZ(-45deg);
transition: transform 0.2s linear, width 0.2s linear, height 0.2s linear;
}
.spatialproperties-panel .modal-window .visual .listener {
position: absolute;
width: 32px;
height: 32px;
border-radius: 6px;
transform: rotateX(60deg) rotateZ(-45deg);
transition: transform 0.2s linear, width 0.2s linear, height 0.2s linear;
background: white;
color: black;
z-index: 2;
}
.spatialproperties-panel .modal-window .visual .audiosource {
position: absolute;
width: 32px;
height: 32px;
border-radius: 6px;
transform: rotateX(60deg) rotateZ(-45deg);
transition: transform 0.2s linear, width 0.2s linear, height 0.2s linear;
background: yellow;
z-index: 2;
}
.spatialproperties-panel .modal-window .visual .face:nth-of-type(1) {
background: linear-gradient(45deg, #28223a, #1f2038);
z-index: 1;
}
.spatialproperties-panel .modal-window .visual .face:nth-of-type(2) {
background: linear-gradient(45deg, #7d53ad, #5763ff);
transform: rotateX(60deg) rotateZ(-45deg) translateZ(30px);
opacity: 0.7;
z-index: 3;
}
.spatialproperties-panel .modal-window .modal-header {
padding: 16px;
position: relative;
overflow: hidden;
}
.spatialproperties-panel .modal-window .modal-header .modal-title {
text-align: center;
}
.spatialproperties-panel .modal-window .modal-header .close-btn {
width: 50px;
height: 100%;
background-image: var(--gfx-closeBtn);
background-position: center;
background-repeat: no-repeat;
-webkit-app-region: no-drag;
appearance: none;
border: 0;
background-color: transparent;
position: absolute;
top: 0;
right: 0;
}
.spatialproperties-panel .modal-window .modal-header .close-btn:hover {
background-color: #c42b1c;
}
.addtoplaylist-panel .modal-window {
max-height: 600px;
max-width: 400px;
background: rgba(18, 18, 18, 0.9);
overflow: hidden;
backdrop-filter: blur(16px) saturate(180%);
}
.addtoplaylist-panel .modal-window .modal-header {
padding: 16px;
position: relative;
}
.addtoplaylist-panel .modal-window .modal-header .modal-title {
text-align: center;
}
.addtoplaylist-panel .modal-window .modal-header .close-btn {
width: 50px;
height: 100%;
background-image: var(--gfx-closeBtn);
background-position: center;
background-repeat: no-repeat;
-webkit-app-region: no-drag;
appearance: none;
border: 0;
background-color: transparent;
position: absolute;
top: 0;
right: 0;
}
.addtoplaylist-panel .modal-window .modal-header .close-btn:hover {
background-color: #c42b1c;
}
.addtoplaylist-panel .modal-window .modal-search {
width: 100%;
padding: 0px 16px;
position: relative;
}
.addtoplaylist-panel .modal-window .playlist-item {
appearance: none;
border: 0px;
text-align: left;
width: 100%;
margin: 0;
display: flex;
background: rgba(32, 32, 32, 0.46);
color: #eee;
font-family: inherit;
font-size: 0.98em;
padding: 6px 12px;
align-items: center;
flex-flow: row;
}
.addtoplaylist-panel .modal-window .playlist-item .icon {
pointer-events: none;
width: 32px;
height: 32px;
display: flex;
justify-content: center;
align-items: center;
margin-right: 6px;
}
.addtoplaylist-panel .modal-window .playlist-item .name {
position: relative;
}
.addtoplaylist-panel .modal-window .playlist-item:hover {
background: var(--selected);
}
.addtoplaylist-panel .modal-window .playlist-item:active {
background: var(--selected-click);
}
.addtoplaylist-panel .modal-window .playlist-item.focused {
background: var(--keyColor);
}
.addtoplaylist-panel .modal-window .playlist-item:last-child {
border-bottom: 0px;
}
.menu-panel {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 100001;
display: flex;
justify-content: center;
align-items: center;
-webkit-app-region: no-drag;
}
.menu-panel .menu-header-body {
padding: 6px;
display: flex;
background: rgba(200, 200, 200, 0.1);
}
.menu-panel .menu-header-body .menu-option-header {
width: 40px;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
border-radius: var(--mediaItemRadius);
appearance: none;
border: 0;
background: transparent;
}
.menu-panel .menu-header-body .menu-option-header.active .sidebar-icon > .svg-icon {
--color: var(--keyColor);
}
.menu-panel .menu-header-body .menu-option-header:hover {
background: var(--selected);
}
.menu-panel .menu-header-body .menu-option-header:active {
background: var(--selected-click);
}
.menu-panel .menu-panel-body {
display: flex;
flex-flow: column;
background: #262626;
position: relative;
min-width: 200px;
box-shadow: var(--ciderShadow-Generic);
border-radius: var(--mediaItemRadius);
overflow: hidden;
font-size: 13px;
}
.menu-panel .menu-panel-body .menu-option {
text-align: left;
display: flex;
width: 100%;
padding: 9px 16px;
appearance: none;
border: 0px;
font: inherit;
background: transparent;
color: inherit;
}
.menu-panel .menu-panel-body .menu-option:hover {
background: var(--selected);
}
.menu-panel .menu-panel-body .menu-option:active {
background: var(--selected-click);
}
.menu-panel .menu-header-text {
margin: 18px 6px;
}
.menu-panel .menu-header-text .close-btn {
width: 50px;
height: 42px;
background-image: var(--gfx-closeBtn);
background-position: center;
background-repeat: no-repeat;
-webkit-app-region: no-drag;
appearance: none;
border: 0;
background-color: transparent;
position: absolute;
top: 0;
right: 0;
}
.menu-panel .menu-header-text .close-btn:hover {
background-color: #c42b1c;
}
.menu-panel .menu-body {
overflow: overlay;
height: 100%;
}
.menu-panel .menu-footer {
width: 100%;
padding: 12px;
}
.queue-panel {
height: 100%;
width: 100%;
display: flex;
flex-flow: column;
}
.queue-panel .queue-header-text {
margin: 18px 6px;
}
.queue-panel .queue-body {
overflow: overlay;
height: 100%;
}
.queue-panel .queue-footer {
width: 100%;
padding: 12px;
}
.queue-panel .autoplay {
background: rgba(200, 200, 200, 0.15);
display: flex;
justify-content: center;
appearance: none;
border: 0;
border-radius: 6px;
height: 32px;
width: 32px;
}
.queue-panel .infinity {
content: url("assets/infinity.svg");
margin: auto;
}

View file

@ -7,7 +7,13 @@
background: var(--keyColor);
}
.tooltip-inner {
background: #2f2f2f;
opacity: 1;
border: 1px solid rgb(0 0 0 / 35%);
transition: all 0.3s ease-in-out;
box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.25);
}
.modal-fullscreen {
display: flex;

View file

@ -247,6 +247,9 @@ const app = new Vue({
}
},
methods: {
setTimeout(func, time) {
return setTimeout(func, time);
},
songLinkShare(amUrl) {
notyf.open({ type: "info", className: "notyf-info", message: app.getLz('term.song.link.generate') })
let self = this

View file

@ -1060,41 +1060,19 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
}
body[platform="darwin"] .app-chrome .app-chrome-item > .window-controls > div.minimize {
height: 12px;
width: 12px;
background-color: rgb(255, 92, 92);
border-radius: 50%;
display: inline-block;
margin: auto 4px;
color: rgb(130, 0, 5);
-webkit-app-region: no-drag;
background-image: unset;
display: none;
}
body[platform="darwin"] .app-chrome .app-chrome-item > .window-controls {
width: 67px;
display: none;
}
body[platform="darwin"] .app-chrome .app-chrome-item > .window-controls > div.minmax {
height: 12px;
width: 12px;
background-color: rgb(255, 189, 76);
border-radius: 50%;
display: inline-block;
margin: auto 4px;
-webkit-app-region: no-drag;
background-image: unset;
display: none;
}
body[platform="darwin"] .app-chrome .app-chrome-item > .window-controls > div.close {
height: 12px;
width: 12px;
background-color: rgb(0, 202, 86);
border-radius: 50%;
display: inline-block;
margin: auto 4px auto 4px;
-webkit-app-region: no-drag;
background-image: unset;
display: none;
}
.app-chrome .app-chrome-item.playback-controls {

View file

@ -86,7 +86,7 @@
<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);playerLCD.desiredDuration = 0;playerLCD.userInteraction = false"
@mouseup="mk.seekToTime($event.target.value);setTimeout(()=>{playerLCD.desiredDuration = 0;playerLCD.userInteraction = false}, 1000);"
:max="mk.currentPlaybackDuration" :value="getSongProgress()">
</div>
</div>
@ -101,22 +101,27 @@
</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" :class="{'active': drawer.panel == 'queue'}"
:title="$root.getLz('term.queue')"
v-b-tooltip.hover
@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'}"
@click="invokeDrawer('lyrics')"></button>
:style="{'opacity': 0.3, 'pointer-events': 'none'}"></button>
</template>
</div>

View file

@ -89,7 +89,7 @@
<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);playerLCD.desiredDuration = 0;playerLCD.userInteraction = false"
@mouseup="mk.seekToTime($event.target.value);setTimeout(()=>{playerLCD.desiredDuration = 0;playerLCD.userInteraction = false}, 1000);"
:max="mk.currentPlaybackDuration" :value="getSongProgress()">
</div>
</div>
@ -117,22 +117,28 @@
</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" :class="{'active': drawer.panel == 'queue'}"
<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'}"
@click="invokeDrawer('lyrics')"></button>
:style="{'opacity': 0.3, 'pointer-events': 'none'}"></button>
</template>
</div>
</template>

View file

@ -2,12 +2,12 @@
<div v-observe-visibility="{callback: visibilityChanged}"
@contextmenu="contextMenu"
@click="select"
:data-id="item.attributes.playParams.id ?? item.id"
:data-id="itemId"
:data-type="getDataType()"
:data-index="index"
:data-guid="guid"
:data-islibrary="this.item.attributes.playParams.isLibrary ?? false"
:key="item.attributes.playParams.id ?? item.id"
:data-islibrary="isLibrary"
:key="itemId"
class="cd-mediaitem-list-item"
@mouseenter="checkLibrary"
@mouseover="showInLibrary = true"
@ -26,12 +26,12 @@
<%- include("../svg/play.svg") %>
</button>
</div>
<div v-if="!(app.mk.isPlaying && (((app.mk.nowPlayingItem._songId ?? (app.mk.nowPlayingItem.songId ?? app.mk.nowPlayingItem.id )) == item.attributes.playParams.id) || (app.mk.nowPlayingItem.id == item.id ))) && showIndex" :style="{display: ((showIndex && !showInLibrary) ? 'block' : 'none'), 'margin-left':'11px'}">
<div v-if="!(app.mk.isPlaying && (((app.mk.nowPlayingItem._songId ?? (app.mk.nowPlayingItem.songId ?? app.mk.nowPlayingItem.id )) == itemId) || (app.mk.nowPlayingItem.id == item.id ))) && showIndex" :style="{display: ((showIndex && !showInLibrary) ? 'block' : 'none'), 'margin-left':'11px'}">
<div>
<div>{{ (item.attributes && !showIndexPlaylist) ? (item.attributes.trackNumber ?? '') : ((index * 1 + 1 ) ?? '')}}</div>
</div>
</div>
<div v-if="app.mk.isPlaying && (((app.mk.nowPlayingItem._songId ?? (app.mk.nowPlayingItem.songId ?? app.mk.nowPlayingItem.id )) == item.attributes.playParams.id) || (app.mk.nowPlayingItem.id == item.id))" :style="{display: (showInLibrary ? 'none' : 'block')}">
<div v-if="app.mk.isPlaying && (((app.mk.nowPlayingItem._songId ?? (app.mk.nowPlayingItem.songId ?? app.mk.nowPlayingItem.id )) == itemId) || (app.mk.nowPlayingItem.id == item.id))" :style="{display: (showInLibrary ? 'none' : 'block')}">
<div class="loadbar-sound"></div>
</div>
</div>
@ -95,7 +95,9 @@
guid: this.uuidv4(),
app: this.$root,
displayDuration: true,
addClasses: {}
addClasses: {},
itemId: 0,
isLibrary: false
}
},
props: {
@ -112,6 +114,12 @@
'class-list': { type: String, required: false, default: "" },
},
mounted() {
if (this.item.attributes.playParams) {
this.itemId = this.item.attributes.playParams.id ?? this.item.id;
this.isLibrary = this.item.attributes.playParams.isLibrary ?? false;
} else {
this.itemId = this.item.id;
}
let duration = this.item.attributes.durationInMillis ?? 0
if (duration == 0 || !this.showDuration) {
this.displayDuration = false
@ -135,8 +143,11 @@
return this.addedToLibrary
},
getClasses() {
this.addClasses = {}
if(typeof this.item.attributes.playParams == "undefined") {
this.addClasses["disabled"] = true
}
if (this.classList) {
this.addClasses = {}
let classList = this.classList.split(' ')
for (let i = 0; i < classList.length; i++) {
this.addClasses[classList[i]] = true
@ -160,10 +171,14 @@
return minutes + ":" + (seconds < 10 ? '0' : '') + seconds;
},
getDataType() {
if (this.item.attributes.playParams.isLibrary) {
if (typeof this.item.attributes.playParams != "undefined") {
if (this.item.attributes.playParams.isLibrary) {
return this.item.type
} else {
return this.item.attributes.playParams.kind
}
}else{
return this.item.type
} else {
return this.item.attributes.playParams.kind
}
},
select(e) {
@ -537,7 +552,7 @@
array[j] = temp;
}
}
app.mk.setQueue({ [truekind]: [item.attributes.playParams.id ?? item.id] , parameters : {l : this.app.mklang} }).then(function () {
app.mk.setQueue({ [truekind]: [item.attributes.playParams.id ?? item.id], parameters: { l: this.app.mklang } }).then(function () {
app.mk.play().then(function () {
var playlistId = id
function getPlaylist(id, isLibrary) {
@ -597,4 +612,4 @@
}
}
});
</script>
</script>

View file

@ -1,6 +1,7 @@
<script type="text/x-template" id="cider-settings">
<div class="content-inner settings-page">
<div class="md-option-container">
<div class="md-option-container">
<!-- General Settings -->
<div class="md-option-header">
<span>{{$root.getLz('settings.header.general')}}</span>
</div>
@ -43,6 +44,8 @@
</div>
</div>
</div>
<!-- Audio Settings -->
<div class="md-option-header">
<span>{{$root.getLz('settings.header.audio')}}</span>
</div>
@ -123,6 +126,8 @@
</div>
</div>
</div>
<!-- Visual Settings -->
<div class="md-option-header">
<span>{{$root.getLz('settings.header.visual')}}</span>
</div>
@ -244,6 +249,38 @@
</div>
</div>
<!-- Window Settings -->
<div class="md-option-header">
<span>{{$root.getLz('settings.header.window')}}</span>
</div>
<div class="settings-option-body">
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.option.window.openOnStartup')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.general.onStartup.enabled" switch/>
</div>
</div>
<div class="md-option-line" v-show="app.cfg.general.onStartup.enabled">
<div class="md-option-segment">
{{$root.getLz('settings.option.window.openOnStartup.hidden')}}
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.general.onStartup.hidden" switch/>
</div>
</div>
<div class="md-option-line" v-show="app.platform !== 'darwin'">
<div class="md-option-segment">
{{$root.getLz("settings.option.window.close_button_hide")}}
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.general.close_button_hide" switch/>
</div>
</div>
</div>
<!-- Lyric Settings -->
<div class="md-option-header">
<span>{{$root.getLz('settings.header.lyrics')}}</span>
</div>
@ -548,6 +585,8 @@
</div>
</div>
</div>
<!-- Connectivity Settings -->
<div class="md-option-header">
<span>{{$root.getLz('settings.header.connectivity')}}</span>
</div>
@ -628,8 +667,7 @@
</div>
</div>
<!-- Debug Settings -->
<div class="md-option-header">
<span>{{$root.getLz('settings.header.debug')}}</span>
</div>
@ -656,7 +694,7 @@
</div>
</div>
<!-- Experimental Settings -->
<div class="md-option-header">
<span>{{$root.getLz('settings.header.experimental')}}</span>
</div>
@ -736,14 +774,6 @@
</select>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz("settings.option.experimental.close_button_hide")}}
</div>
<div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.general.close_button_hide" switch/>
</div>
</div>
<div class="md-option-line update-check">
<div class="md-option-segment">
{{$root.getLz('settings.option.general.updateCider')}}
@ -780,11 +810,12 @@
</div>
</div>
</div>
<div style="opacity: 0.5; pointer-events: none">
<div class="md-option-header">
<span>{{$root.getLz('settings.header.unfinished')}}</span>
</div>
<div class="settings-option-body">
<!-- Unfinished Settings -->
<div class="md-option-header">
<span>{{$root.getLz('settings.header.unfinished')}}</span>
</div>
<div class="settings-option-body" style="opacity: 0.5; pointer-events: none">
<div class="md-option-line">
<div class="md-option-segment">
@ -822,21 +853,7 @@
</select>
</div>
</div>
<div class="md-option-line">
<div class="md-option-segment">
Open Cider on Startup
</div>
<div class="md-option-segment md-option-segment_auto">
<select class="md-select">
<option value='0'>Never</option>
<option value='1'>Always</option>
<option value='2'>Always, minimized</option>
<option value='2'>Always, hidden in tray</option>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
</script>