Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 29 additions & 8 deletions components.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,36 +18,50 @@ declare module 'vue' {
AutoClose: typeof import('./src/components/Modal/AutoClose.vue')['default']
BackgroundRender: typeof import('./src/components/AMLL/BackgroundRender.vue')['default']
BatchList: typeof import('./src/components/Modal/BatchList.vue')['default']
CacheDirectory: typeof import('./src/components/Setting/components/CacheDirectory.vue')['default']
CacheLimitConfig: typeof import('./src/components/Setting/components/CacheLimitConfig.vue')['default']
CacheSizeLimit: typeof import('./src/components/Setting/components/CacheSizeLimit.vue')['default']
ChangeRate: typeof import('./src/components/Modal/ChangeRate.vue')['default']
CloudMatch: typeof import('./src/components/Modal/CloudMatch.vue')['default']
CommentList: typeof import('./src/components/List/CommentList.vue')['default']
ConfigurableInputNumber: typeof import('./src/components/Setting/items/ConfigurableInputNumber.vue')['default']
CopyLyrics: typeof import('./src/components/Modal/CopyLyrics.vue')['default']
CoverList: typeof import('./src/components/List/CoverList.vue')['default']
CoverMenu: typeof import('./src/components/Menu/CoverMenu.vue')['default']
CreatePlaylist: typeof import('./src/components/Modal/CreatePlaylist.vue')['default']
CustomCode: typeof import('./src/components/Modal/Setting/CustomCode.vue')['default']
DefaultLyric: typeof import('./src/components/Player/PlayerLyric/DefaultLyric.vue')['default']
DiscordRpcConfig: typeof import('./src/components/Setting/components/DiscordRpcConfig.vue')['default']
DownloadDirectory: typeof import('./src/components/Setting/components/DownloadDirectory.vue')['default']
DownloadModal: typeof import('./src/components/Modal/DownloadModal.vue')['default']
DownloadPathButtons: typeof import('./src/components/Setting/components/DownloadPathButtons.vue')['default']
Equalizer: typeof import('./src/components/Modal/Equalizer.vue')['default']
ExcludeLyrics: typeof import('./src/components/Modal/Setting/ExcludeLyrics.vue')['default']
FontManager: typeof import('./src/components/Modal/Setting/FontManager.vue')['default']
FullPlayer: typeof import('./src/components/Player/FullPlayer.vue')['default']
FullPlayerMobile: typeof import('./src/components/Player/FullPlayerMobile.vue')['default']
GeneralSetting: typeof import('./src/components/Setting/GeneralSetting.vue')['default']
GeneralSetting: typeof import('./src/components/Setting/old/GeneralSetting.vue')['default']
HomePageSectionManager: typeof import('./src/components/Modal/Setting/HomePageSectionManager.vue')['default']
JumpArtist: typeof import('./src/components/Modal/JumpArtist.vue')['default']
KeyboardSetting: typeof import('./src/components/Setting/KeyboardSetting.vue')['default']
KeyboardSetting: typeof import('./src/components/Setting/old/KeyboardSetting.vue')['default']
LastfmConfig: typeof import('./src/components/Setting/components/LastfmConfig.vue')['default']
ListComment: typeof import('./src/components/List/ListComment.vue')['default']
ListDetail: typeof import('./src/components/List/ListDetail.vue')['default']
LocalSetting: typeof import('./src/components/Setting/LocalSetting.vue')['default']
LocalLyricDirectories: typeof import('./src/components/Setting/components/LocalLyricDirectories.vue')['default']
LocalMusicDirectories: typeof import('./src/components/Setting/components/LocalMusicDirectories.vue')['default']
LocalMusicDirectory: typeof import('./src/components/Modal/Setting/LocalMusicDirectory.vue')['default']
LocalMusicDirectoryModal: typeof import('./src/components/Modal/Setting/LocalMusicDirectoryModal.vue')['default']
LocalPathConfig: typeof import('./src/components/Setting/components/LocalPathConfig.vue')['default']
LocalSetting: typeof import('./src/components/Setting/old/LocalSetting.vue')['default']
Login: typeof import('./src/components/Modal/Login/Login.vue')['default']
LoginCookie: typeof import('./src/components/Modal/Login/LoginCookie.vue')['default']
LoginPhone: typeof import('./src/components/Modal/Login/LoginPhone.vue')['default']
LoginQRCode: typeof import('./src/components/Modal/Login/LoginQRCode.vue')['default']
LoginUID: typeof import('./src/components/Modal/Login/LoginUID.vue')['default']
Logo: typeof import('./src/components/Layout/Logo.vue')['default']
LyricPlayer: typeof import('./src/components/AMLL/LyricPlayer.vue')['default']
LyricsSetting: typeof import('./src/components/Setting/LyricsSetting.vue')['default']
LyricPreview: typeof import('./src/components/Setting/components/LyricPreview.vue')['default']
LyricsSetting: typeof import('./src/components/Setting/old/LyricsSetting.vue')['default']
MainPlayer: typeof import('./src/components/Player/MainPlayer.vue')['default']
MainSetting: typeof import('./src/components/Setting/MainSetting.vue')['default']
Menu: typeof import('./src/components/Layout/Menu.vue')['default']
Expand Down Expand Up @@ -129,7 +143,7 @@ declare module 'vue' {
NText: typeof import('naive-ui')['NText']
NThing: typeof import('naive-ui')['NThing']
NTree: typeof import('naive-ui')['NTree']
OtherSetting: typeof import('./src/components/Setting/OtherSetting.vue')['default']
OtherSetting: typeof import('./src/components/Setting/old/OtherSetting.vue')['default']
PersonalFM: typeof import('./src/components/Player/PlayerComponents/PersonalFM.vue')['default']
PlayerBackground: typeof import('./src/components/Player/PlayerMeta/PlayerBackground.vue')['default']
PlayerComment: typeof import('./src/components/Player/PlayerComponents/PlayerComment.vue')['default']
Expand All @@ -142,15 +156,19 @@ declare module 'vue' {
PlayerSlider: typeof import('./src/components/Player/PlayerComponents/PlayerSlider.vue')['default']
PlayerSpectrum: typeof import('./src/components/Player/PlayerComponents/PlayerSpectrum.vue')['default']
PlaylistAdd: typeof import('./src/components/Modal/PlaylistAdd.vue')['default']
PlaySetting: typeof import('./src/components/Setting/PlaySetting.vue')['default']
PlaySetting: typeof import('./src/components/Setting/old/PlaySetting.vue')['default']
Provider: typeof import('./src/components/Global/Provider.vue')['default']
ProxyConfig: typeof import('./src/components/Setting/components/ProxyConfig.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
ScalingModal: typeof import('./src/components/Modal/ScalingModal.vue')['default']
SearchDefault: typeof import('./src/components/Search/SearchDefault.vue')['default']
SearchInp: typeof import('./src/components/Search/SearchInp.vue')['default']
SearchInpMenu: typeof import('./src/components/Menu/SearchInpMenu.vue')['default']
SearchSuggest: typeof import('./src/components/Search/SearchSuggest.vue')['default']
SettingItemRenderer: typeof import('./src/components/Setting/SettingItemRenderer.vue')['default']
SettingSearch: typeof import('./src/components/Setting/SettingSearch.vue')['default']
ShortcutRecorder: typeof import('./src/components/Setting/components/ShortcutRecorder.vue')['default']
SidebarHideManager: typeof import('./src/components/Modal/Setting/SidebarHideManager.vue')['default']
Sider: typeof import('./src/components/Layout/Sider.vue')['default']
SImage: typeof import('./src/components/UI/s-image.vue')['default']
Expand All @@ -164,15 +182,18 @@ declare module 'vue' {
SongPlayList: typeof import('./src/components/List/SongPlayList.vue')['default']
SongUnlockManager: typeof import('./src/components/Modal/Setting/SongUnlockManager.vue')['default']
StreamingServerConfig: typeof import('./src/components/Modal/Setting/StreamingServerConfig.vue')['default']
StreamingSetting: typeof import('./src/components/Setting/StreamingSetting.vue')['default']
StreamingServerList: typeof import('./src/components/Setting/components/StreamingServerList.vue')['default']
StreamingSetting: typeof import('./src/components/Setting/old/StreamingSetting.vue')['default']
SvgIcon: typeof import('./src/components/Global/SvgIcon.vue')['default']
TextContainer: typeof import('./src/components/Global/TextContainer.vue')['default']
ThemeConfig: typeof import('./src/components/Modal/ThemeConfig.vue')['default']
ThirdSetting: typeof import('./src/components/Setting/ThirdSetting.vue')['default']
ThirdSetting: typeof import('./src/components/Setting/old/ThirdSetting.vue')['default']
UniversalSetting: typeof import('./src/components/Setting/UniversalSetting.vue')['default']
UpdateApp: typeof import('./src/components/Modal/UpdateApp.vue')['default']
UpdatePlaylist: typeof import('./src/components/Modal/UpdatePlaylist.vue')['default']
User: typeof import('./src/components/Layout/User.vue')['default']
UserAgreement: typeof import('./src/components/Modal/UserAgreement.vue')['default']
VirtualScroll: typeof import('./src/components/UI/VirtualScroll.vue')['default']
WebsocketConfig: typeof import('./src/components/Setting/components/WebsocketConfig.vue')['default']
}
}
7 changes: 7 additions & 0 deletions electron/main/windows/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@ export const createWindow = (
},
};
// 合并参数
if (options.webPreferences) {
options.webPreferences = Object.assign(
{},
defaultOptions.webPreferences,
options.webPreferences,
);
}
options = Object.assign(defaultOptions, options);
// 创建窗口
const win = new BrowserWindow(options);
Expand Down
3 changes: 3 additions & 0 deletions electron/main/windows/lyric-window.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@ class LyricWindow {
maximizable: false,
// 窗口不能进入全屏状态
fullscreenable: false,
webPreferences: {
zoomFactor: 1.0,
},
});
if (!this.win) return null;
// 加载地址
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "splayer",
"productName": "SPlayer",
"version": "3.0.0-beta.9",
"version": "3.0.0-rc.1",
"description": "A minimalist music player",
"main": "./out/main/index.js",
"author": "imsyy",
Expand Down
7 changes: 6 additions & 1 deletion src/App.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
<template>
<Provider>
<Provider v-if="!isDesktopLyric">
<router-view />
</Provider>
<router-view v-else />
</template>

<script setup lang="ts">
const isDesktopLyric = location.hash.includes("desktop-lyric");
</script>
67 changes: 67 additions & 0 deletions src/components/Modal/Setting/LocalMusicDirectory.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<template>
<div class="local-music-directory">
<n-text class="local-list-tip">
请选择本地音乐文件夹,将自动扫描您添加的目录,歌曲增删实时同步
</n-text>
<n-scrollbar style="max-height: 50vh">
<n-list class="local-list" hoverable clickable bordered>
<div v-if="!settingStore.localFilesPath.length" class="empty">
<n-empty description="暂无目录" />
</div>
<n-list-item v-for="(path, index) in settingStore.localFilesPath" :key="index">
<template #prefix>
<SvgIcon :size="20" name="Folder" />
</template>
<template #suffix>
<n-button :focusable="false" quaternary @click="changeLocalMusicPath(index)">
<template #icon>
<SvgIcon :size="20" name="Delete" />
</template>
</n-button>
</template>
<n-thing :title="path" />
</n-list-item>
</n-list>
</n-scrollbar>
<n-flex justify="center" style="margin-top: 20px">
<n-button class="add-path" strong secondary @click="changeLocalMusicPath()">
<template #icon>
<SvgIcon name="FolderPlus" />
</template>
添加文件夹
</n-button>
</n-flex>
</div>
</template>

<script setup lang="ts">
import { useSettingStore } from "@/stores";
import { changeLocalMusicPath } from "@/utils/helper";
import SvgIcon from "@/components/Global/SvgIcon.vue";

const settingStore = useSettingStore();
</script>

<style scoped lang="scss">
.local-list-tip {
display: block;
margin-bottom: 12px;
opacity: 0.8;
}
.local-list {
:deep(.n-list-item__prefix) {
display: flex;
align-items: center;
justify-content: center;
}
:deep(.n-list-item__main) {
.n-thing-main__description {
font-size: 13px;
opacity: 0.6;
}
}
.empty {
padding: 20px 0;
}
}
</style>
Loading