diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 64177b483..b3887e78f 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -938,6 +938,7 @@ "albumCount": "$t(entity.album_other)", "artist": "$t(entity.artist_one)", "biography": "biography", + "bitDepth": "$t(common.bitDepth)", "bitrate": "bitrate", "bpm": "bpm", "channels": "$t(common.channel_other)", @@ -953,6 +954,7 @@ "rating": "rating", "releaseDate": "release date", "releaseYear": "year", + "sampleRate": "$t(common.sampleRate)", "size": "$t(common.size)", "songCount": "$t(entity.track_other)", "title": "title", @@ -998,6 +1000,7 @@ "albumArtist": "$t(entity.albumArtist_one)", "artist": "$t(entity.artist_one)", "biography": "$t(common.biography)", + "bitDepth": "$t(common.bitDepth)", "bitrate": "$t(common.bitrate)", "bpm": "$t(common.bpm)", "channels": "$t(common.channel_other)", @@ -1017,6 +1020,7 @@ "rating": "$t(common.rating)", "releaseDate": "release date", "rowIndex": "row index", + "sampleRate": "$t(common.sampleRate)", "size": "$t(common.size)", "songCount": "$t(entity.track_other)", "title": "$t(common.title)", diff --git a/src/renderer/components/item-list/helpers/use-grid-rows.ts b/src/renderer/components/item-list/helpers/use-grid-rows.ts index 19af7a3d8..46212f73a 100644 --- a/src/renderer/components/item-list/helpers/use-grid-rows.ts +++ b/src/renderer/components/item-list/helpers/use-grid-rows.ts @@ -46,6 +46,7 @@ const getRowIdFromTableColumn = (tableColumn: TableColumn): null | string => { [TableColumn.ALBUM_COUNT]: 'albumCount', [TableColumn.ARTIST]: 'artists', [TableColumn.BIOGRAPHY]: null, + [TableColumn.BIT_DEPTH]: 'bitDepth', [TableColumn.BIT_RATE]: null, [TableColumn.BPM]: null, [TableColumn.CHANNELS]: null, @@ -62,8 +63,10 @@ const getRowIdFromTableColumn = (tableColumn: TableColumn): null | string => { [TableColumn.OWNER]: null, [TableColumn.PATH]: null, [TableColumn.PLAY_COUNT]: 'playCount', + [TableColumn.PLAYLIST_REORDER]: null, [TableColumn.RELEASE_DATE]: 'releaseDate', [TableColumn.ROW_INDEX]: null, + [TableColumn.SAMPLE_RATE]: 'sampleRate', [TableColumn.SIZE]: null, [TableColumn.SKIP]: null, [TableColumn.SONG_COUNT]: 'songCount', diff --git a/src/renderer/components/item-list/item-table-list/default-columns.ts b/src/renderer/components/item-list/item-table-list/default-columns.ts index af86bb5fb..9a781d33a 100644 --- a/src/renderer/components/item-list/item-table-list/default-columns.ts +++ b/src/renderer/components/item-list/item-table-list/default-columns.ts @@ -139,6 +139,15 @@ export const SONG_TABLE_COLUMNS: DefaultTableColumn[] = [ value: TableColumn.TRACK_NUMBER, width: 100, }, + { + align: 'center', + autoSize: false, + isEnabled: false, + label: i18n.t('table.config.label.bitDepth', { postProcess: 'titleCase' }), + pinned: null, + value: TableColumn.BIT_DEPTH, + width: 100, + }, { align: 'center', autoSize: false, @@ -157,6 +166,15 @@ export const SONG_TABLE_COLUMNS: DefaultTableColumn[] = [ value: TableColumn.CODEC, width: 100, }, + { + align: 'center', + autoSize: false, + isEnabled: false, + label: i18n.t('table.config.label.sampleRate', { postProcess: 'titleCase' }), + pinned: null, + value: TableColumn.SAMPLE_RATE, + width: 100, + }, { align: 'center', autoSize: false, diff --git a/src/renderer/components/item-list/item-table-list/item-table-list-column.tsx b/src/renderer/components/item-list/item-table-list/item-table-list-column.tsx index d1507ea22..d8416ce08 100644 --- a/src/renderer/components/item-list/item-table-list/item-table-list-column.tsx +++ b/src/renderer/components/item-list/item-table-list/item-table-list-column.tsx @@ -479,10 +479,12 @@ export const ItemTableListColumn = (props: ItemTableListColumn) => { case TableColumn.COMMENT: return ; + case TableColumn.BIT_DEPTH: case TableColumn.BIT_RATE: case TableColumn.BPM: case TableColumn.CHANNELS: case TableColumn.DISC_NUMBER: + case TableColumn.SAMPLE_RATE: case TableColumn.TRACK_NUMBER: case TableColumn.YEAR: return ; @@ -1228,6 +1230,9 @@ const columnLabelMap: Record = { [TableColumn.BIOGRAPHY]: i18n.t('table.column.biography', { postProcess: 'upperCase', }) as string, + [TableColumn.BIT_DEPTH]: i18n.t('table.column.bitDepth', { + postProcess: 'upperCase', + }) as string, [TableColumn.BIT_RATE]: i18n.t('table.column.bitrate', { postProcess: 'upperCase' }) as string, [TableColumn.BPM]: i18n.t('table.column.bpm', { postProcess: 'upperCase' }) as string, [TableColumn.CHANNELS]: i18n.t('table.column.channels', { postProcess: 'upperCase' }) as string, @@ -1273,6 +1278,9 @@ const columnLabelMap: Record = { ), + [TableColumn.SAMPLE_RATE]: i18n.t('table.column.sampleRate', { + postProcess: 'upperCase', + }) as string, [TableColumn.SIZE]: i18n.t('table.column.size', { postProcess: 'upperCase' }) as string, [TableColumn.SKIP]: '', [TableColumn.SONG_COUNT]: i18n.t('table.column.songCount', { diff --git a/src/renderer/store/settings.store.ts b/src/renderer/store/settings.store.ts index 475e53a71..f590d0a9b 100644 --- a/src/renderer/store/settings.store.ts +++ b/src/renderer/store/settings.store.ts @@ -1472,10 +1472,41 @@ export const useSettingsStore = createWithEqualityFn()( }); } + if (version <= 14) { + // Add bitDepth and sampleRate columns to song lists + + const bitDepthColumn: ItemTableListColumnConfig = { + align: 'center', + autoSize: false, + id: TableColumn.BIT_DEPTH, + isEnabled: false, + pinned: null, + width: 100, + }; + + const sampleRateColumn: ItemTableListColumnConfig = { + align: 'center', + autoSize: false, + id: TableColumn.SAMPLE_RATE, + isEnabled: false, + pinned: null, + width: 100, + }; + + const columns = [bitDepthColumn, sampleRateColumn]; + + state.lists[LibraryItem.SONG]?.table.columns.push(...columns); + state.lists[LibraryItem.PLAYLIST_SONG]?.table.columns.push(...columns); + state.lists[LibraryItem.QUEUE_SONG]?.table.columns.push(...columns); + state.lists['albumDetail']?.table.columns.push(...columns); + state.lists['fullscreen']?.table.columns.push(...columns); + state.lists['sidequeue']?.table.columns.push(...columns); + } + return persistedState; }, name: 'store_settings', - version: 14, + version: 15, }, ), ); diff --git a/src/shared/types/types.ts b/src/shared/types/types.ts index 78776aec3..ba782bb8f 100644 --- a/src/shared/types/types.ts +++ b/src/shared/types/types.ts @@ -161,6 +161,7 @@ export enum TableColumn { ALBUM_COUNT = 'albumCount', ARTIST = 'artists', BIOGRAPHY = 'biography', + BIT_DEPTH = 'bitDepth', BIT_RATE = 'bitRate', BPM = 'bpm', CHANNELS = 'channels', @@ -180,6 +181,7 @@ export enum TableColumn { PLAYLIST_REORDER = 'playlistReorder', RELEASE_DATE = 'releaseDate', ROW_INDEX = 'rowIndex', + SAMPLE_RATE = 'sampleRate', SIZE = 'size', SKIP = 'skip', SONG_COUNT = 'songCount',