From b05a686180dab5d5367b7cac56569d76b984af32 Mon Sep 17 00:00:00 2001
From: qier222
Date: Mon, 17 May 2021 23:31:44 +0800
Subject: [PATCH] feat: add clear queue button to next page
---
src/components/TrackList.vue | 67 ++++++++++++++++++------------------
src/locale/lang/en.js | 2 +-
src/locale/lang/tr.js | 2 +-
src/locale/lang/zh-CN.js | 2 +-
src/utils/Player.js | 7 ++++
src/views/album.vue | 2 +-
src/views/next.vue | 27 ++++++++++++++-
src/views/playlist.vue | 2 +-
8 files changed, 72 insertions(+), 39 deletions(-)
diff --git a/src/components/TrackList.vue b/src/components/TrackList.vue
index 712b875..d77093f 100644
--- a/src/components/TrackList.vue
+++ b/src/components/TrackList.vue
@@ -10,7 +10,15 @@
{{ $t('contextMenu.play') }}
- {{ $t('contextMenu.playNext') }}
+ {{
+ $t('contextMenu.addToQueue')
+ }}
+ 从队列删除
{{ $t('contextMenu.saveToMyLikedSongs') }}
@@ -33,7 +41,7 @@
:track="track"
:highlight-playing-track="highlightPlayingTrack"
@dblclick.native="playThisList(track.id)"
- @click.right.native="openMenu($event, track)"
+ @click.right.native="openMenu($event, track, index)"
/>
@@ -74,7 +82,10 @@ export default {
extraContextMenuItem: {
type: Array,
default: () => {
- return []; // 'removeTrackFromPlaylist'
+ return [
+ // 'removeTrackFromPlaylist'
+ // 'removeTrackFromQueue'
+ ];
},
},
columnNumber: {
@@ -98,11 +109,12 @@ export default {
ar: [{ name: '' }],
al: { picUrl: '' },
},
+ rightClickedTrackIndex: -1,
listStyles: {},
};
},
computed: {
- ...mapState(['liked']),
+ ...mapState(['liked', 'player']),
isRightClickedTrackLiked() {
return this.liked.songs.includes(this.rightClickedTrack?.id);
},
@@ -119,8 +131,9 @@ export default {
methods: {
...mapMutations(['updateModal']),
...mapActions(['nextTrack', 'showToast', 'likeATrack']),
- openMenu(e, track) {
+ openMenu(e, track, index = -1) {
this.rightClickedTrack = track;
+ this.rightClickedTrackIndex = index;
this.$refs.menu.openMenu(e);
},
closeMenu() {
@@ -130,6 +143,7 @@ export default {
ar: [{ name: '' }],
al: { picUrl: '' },
};
+ this.rightClickedTrackIndex = -1;
},
playThisList(trackID) {
if (this.dbclickTrackFunc === 'default') {
@@ -137,50 +151,32 @@ export default {
} else if (this.dbclickTrackFunc === 'none') {
// do nothing
} else if (this.dbclickTrackFunc === 'playTrackOnListByID') {
- this.$store.state.player.playTrackOnListByID(trackID);
+ this.player.playTrackOnListByID(trackID);
} else if (this.dbclickTrackFunc === 'playPlaylistByID') {
- this.$store.state.player.playPlaylistByID(this.id, trackID);
+ this.player.playPlaylistByID(this.id, trackID);
} else if (this.dbclickTrackFunc === 'playAList') {
let trackIDs = this.tracks.map(t => t.id);
- this.$store.state.player.replacePlaylist(
- trackIDs,
- this.id,
- 'artist',
- trackID
- );
+ this.player.replacePlaylist(trackIDs, this.id, 'artist', trackID);
} else if (this.dbclickTrackFunc === 'dailyTracks') {
let trackIDs = this.tracks.map(t => t.id);
- this.$store.state.player.replacePlaylist(
- trackIDs,
- '/daily/songs',
- 'url',
- trackID
- );
+ this.player.replacePlaylist(trackIDs, '/daily/songs', 'url', trackID);
}
},
playThisListDefault(trackID) {
if (this.type === 'playlist') {
- this.$store.state.player.playPlaylistByID(this.id, trackID);
+ this.player.playPlaylistByID(this.id, trackID);
} else if (this.type === 'album') {
- this.$store.state.player.playAlbumByID(this.id, trackID);
+ this.player.playAlbumByID(this.id, trackID);
} else if (this.type === 'tracklist') {
let trackIDs = this.tracks.map(t => t.id);
- this.$store.state.player.replacePlaylist(
- trackIDs,
- this.id,
- 'artist',
- trackID
- );
+ this.player.replacePlaylist(trackIDs, this.id, 'artist', trackID);
}
},
play() {
- this.$store.state.player.addTrackToPlayNext(
- this.rightClickedTrack.id,
- true
- );
+ this.player.addTrackToPlayNext(this.rightClickedTrack.id, true);
},
- playNext() {
- this.$store.state.player.addTrackToPlayNext(this.rightClickedTrack.id);
+ addToQueue() {
+ this.player.addTrackToPlayNext(this.rightClickedTrack.id);
},
like() {
this.likeATrack(this.rightClickedTrack.id);
@@ -220,6 +216,11 @@ export default {
});
}
},
+ removeTrackFromQueue() {
+ this.$store.state.player.removeTrackFromQueue(
+ this.rightClickedTrackIndex
+ );
+ },
},
};
diff --git a/src/locale/lang/en.js b/src/locale/lang/en.js
index 53d476b..4d27618 100644
--- a/src/locale/lang/en.js
+++ b/src/locale/lang/en.js
@@ -161,7 +161,7 @@ export default {
},
contextMenu: {
play: 'Play',
- playNext: 'Play Next',
+ addToQueue: 'Add to queue',
saveToMyLikedSongs: 'Save to my Liked Songs',
removeFromMyLikedSongs: 'Remove from my Liked Songs',
},
diff --git a/src/locale/lang/tr.js b/src/locale/lang/tr.js
index 71fd59e..21179c2 100644
--- a/src/locale/lang/tr.js
+++ b/src/locale/lang/tr.js
@@ -160,7 +160,7 @@ export default {
},
contextMenu: {
play: 'Oynat',
- playNext: 'Sonrakini Oynat',
+ addToQueue: 'Sonrakini Oynat',
saveToMyLikedSongs: 'Beğendiğim Müziklere Kaydet',
removeFromMyLikedMüzikler: 'Beğendiğim Müziklerden Kaldır',
},
diff --git a/src/locale/lang/zh-CN.js b/src/locale/lang/zh-CN.js
index 135d11f..859b933 100644
--- a/src/locale/lang/zh-CN.js
+++ b/src/locale/lang/zh-CN.js
@@ -162,7 +162,7 @@ export default {
},
contextMenu: {
play: '播放',
- playNext: '下一首播放',
+ addToQueue: '添加到队列',
saveToMyLikedSongs: '添加到我喜欢的音乐',
removeFromMyLikedSongs: '从喜欢的音乐中删除',
},
diff --git a/src/utils/Player.js b/src/utils/Player.js
index f70f37f..74b7242 100644
--- a/src/utils/Player.js
+++ b/src/utils/Player.js
@@ -620,4 +620,11 @@ export default class {
switchShuffle() {
this.shuffle = !this.shuffle;
}
+
+ clearPlayNextList() {
+ this._playNextList = [];
+ }
+ removeTrackFromQueue(index) {
+ this._playNextList.splice(index, 1);
+ }
}
diff --git a/src/views/album.vue b/src/views/album.vue
index e2078f9..cb78932 100644
--- a/src/views/album.vue
+++ b/src/views/album.vue
@@ -114,7 +114,7 @@
- {{ $t('contextMenu.playNext') }}
+
{{
dynamicDetail.isSub ? '从音乐库删除' : '保存到音乐库'
}}
diff --git a/src/views/next.vue b/src/views/next.vue
index de3e155..7f19451 100644
--- a/src/views/next.vue
+++ b/src/views/next.vue
@@ -6,7 +6,10 @@
type="playlist"
dbclick-track-func="none"
/>
- 插队播放
+ 插队播放
+
+
{{ $t('next.nextUp') }}
diff --git a/src/views/playlist.vue b/src/views/playlist.vue
index ce7bef9..9345e9a 100644
--- a/src/views/playlist.vue
+++ b/src/views/playlist.vue
@@ -184,7 +184,7 @@
>
- {{ $t('contextMenu.playNext') }}
+
{{
playlist.subscribed ? '从音乐库删除' : '保存到音乐库'
}}