Sayonara Player
SettingKey.h
1/* SettingKey.h */
2
3/* Copyright (C) 2011-2020 Michael Lugmair (Lucio Carreras)
4 *
5 * This file is part of sayonara player
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21// clazy:excludeall=non-pod-global-static
22
23#ifndef SETTINGKEY_H
24#define SETTINGKEY_H
25
26#include "Utils/typedefs.h"
27
28enum class SettingKey :
29 unsigned short
30{
31 AlternativeCovers_Size = 0,
32 AudioConvert_NumberThreads,
33 AudioConvert_PreferredConverter,
34 AudioConvert_QualityLameCBR,
35 AudioConvert_QualityLameVBR,
36 AudioConvert_QualityOgg,
37 Broadcast_Active,
38 Broadcast_Port,
39 Broadcast_Prompt,
40 Cover_FetchFromWWW,
41 Cover_SaveToDB,
42 Cover_SaveToLibrary,
43 Cover_SaveToSayonaraDir,
44 Cover_Server,
45 Cover_StartSearch,
46 Cover_TemplatePath,
47 Dir_ShowTracks,
48 Dir_SplitterDirFile,
49 Dir_SplitterTracks,
50 Dir_TagToFilenameExpression,
51 Engine_AlsaDevice,
52 Engine_BufferSizeMS,
53 Engine_CovertTargetPath,
54 Engine_CrossFaderActive,
55 Engine_CrossFaderTime,
56 Engine_CurTrackPos_s,
57 Engine_Mute,
58 Engine_Name,
59 Engine_Pitch,
60 Engine_PreservePitch,
61 Engine_SR_Active,
62 Engine_SR_AutoRecord,
63 Engine_SR_Path,
64 Engine_SR_SessionPath,
65 Engine_SR_SessionPathTemplate,
66 Engine_SR_Warning,
67 Engine_ShowLevel,
68 Engine_ShowSpectrum,
69 Engine_Sink,
70 Engine_SoundFileExtensions,
71 Engine_SpectrumBins,
72 Engine_Speed,
73 Engine_SpeedActive,
74 Engine_Vol,
75 Eq_Gauss,
76 Eq_Last,
77 Icon_ForceInDarkTheme,
78 Icon_Theme,
79 InfoDialog_Size,
80 LFM_Active,
81 LFM_Corrections,
82 LFM_Login,
83 LFM_Password,
84 LFM_ScrobbleTimeSec,
85 LFM_SessionKey,
86 LFM_ShowErrors,
87 LFM_Username,
88 Level_Style,
89 Lib_AllLibraries,
90 Lib_AutoUpdate,
91 Lib_ColStateAlbums,
92 Lib_ColStateArtists,
93 Lib_ColStateTracks,
94 Lib_CoverOrigPMCache,
95 Lib_CoverScaledPMCache,
96 Lib_CoverShowArtist,
97 Lib_CoverShowUtils,
98 Lib_CoverZoom,
99 Lib_CurPlugin,
100 Lib_DC_DoNothing,
101 Lib_DC_PlayIfStopped,
102 Lib_DC_PlayImmediately,
103 Lib_DD_DoNothing,
104 Lib_DD_PlayIfStoppedAndEmpty,
105 Lib_FontBold,
106 Lib_GenreTree,
107 Lib_HeaderAutoResizeAlbums,
108 Lib_HeaderAutoResizeArtists,
109 Lib_HeaderAutoResizeTracks,
110 Lib_LastIndex,
111 Lib_LiveSearch,
112 Lib_OldWidth,
113 Lib_Path,
114 Lib_SearchMode,
115 Lib_SearchStringLength,
116 Lib_Show,
117 Lib_ShowAlbumArtists,
118 Lib_ShowAlbumCovers,
119 Lib_ShowFilterExtBar,
120 Lib_SortIgnoreArtistArticle,
121 Lib_SortModeMask,
122 Lib_Sorting,
123 Lib_SplitterStateArtist,
124 Lib_SplitterStateDate,
125 Lib_SplitterStateGenre,
126 Lib_SplitterStateTrack,
127 Lib_UseViewClearButton,
128 Lib_ViewType,
129 Logger_Level,
130 Lyrics_Server,
131 Lyrics_Zoom,
132 MP3enc_found,
133 Notification_Name,
134 Notification_Show,
135 Notification_Timeout,
136 PL_CurrentTrackColorStringDark,
137 PL_CurrentTrackColorStringStandard,
138 PL_CurrentTrackCustomColorDark,
139 PL_CurrentTrackCustomColorStandard,
140 PL_EntryLook,
141 PL_JumpToCurrentTrack,
142 PL_LastPlaylist,
143 PL_LastTrack,
144 PL_LastTrackBeforeStop,
145 PL_LoadLastTrack,
146 PL_LoadSavedPlaylists,
147 PL_LoadTemporaryPlaylists,
148 PL_Mode,
149 PL_PlayTrackAfterSearch,
150 PL_RememberTime,
151 PL_RememberTrackAfterStop,
152 PL_ShowBottomBar,
153 PL_ShowClearButton,
154 PL_ShowCovers,
155 PL_ShowNumbers,
156 PL_ShowRating,
157 PL_StartPlaying,
158 PL_StartPlayingWorkaround_Issue263,
159 Pitch_found,
160 Player_514Fix,
161 Player_ControlStyle,
162 Player_FadingCover,
163 Player_ForceNativeDirDialog,
164 Player_Fullscreen,
165 Player_Geometry,
166 Player_Language,
167 Player_Maximized,
168 Player_Min2Tray,
169 Player_NotifyNewVersion,
170 Player_OneInstance,
171 Player_PrivId,
172 Player_PublicId,
173 Player_ShowTrayIcon,
174 Player_ShownPlugin,
175 Player_SplitterControls,
176 Player_SplitterState,
177 Player_StartInTray,
178 Player_Style,
179 Player_Version,
180 Proxy_Active,
181 Proxy_Hostname,
182 Proxy_Password,
183 Proxy_Port,
184 Proxy_SavePw,
185 Proxy_Username,
186 Remote_Active,
187 Remote_DiscoverPort,
188 Remote_Discoverable,
189 Remote_Port,
190 Settings_Revision,
191 Soundcloud_AuthToken,
192 Spectrum_Style,
193 Speed_LastTab,
194 Stream_NewTab,
195 Stream_SearchWindowSize,
196 Stream_ShowHistory,
197 Num_Setting_Keys
198};
199
200class QString;
201class QStringList;
202class QPoint;
203class QSize;
204class QByteArray;
205
206class EqualizerSetting;
207struct RawShortcutMap;
208
209namespace Playlist
210{
211 class Mode;
212}
213
214namespace Library
215{
216 class Sortings;
217 class Info;
218 enum class ViewType :
219 quint8;
220}
221
222template<typename DataType, SettingKey keyIndex>
224{
225 using Data [[maybe_unused]] = DataType;
226 const static SettingKey key = keyIndex;
227
228 SettingIdentifier() = delete;
229 ~SettingIdentifier() = delete;
230};
231
232// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
233#define CreateSetting(settingkey, type); \
234 using settingkey = SettingIdentifier<type, SettingKey:: settingkey> // NOLINT(bugprone-macro-parentheses)
235
236namespace Set
237{ // persistent settings
238 CreateSetting(AlternativeCovers_Size, QSize); // Size of Alternative Cover Dialog
239 CreateSetting(AudioConvert_NumberThreads, int); // Number of threads
240 CreateSetting(AudioConvert_PreferredConverter, QString); // Preferred Converter: ogg, lame cbr, lame vbr
241 CreateSetting(AudioConvert_QualityLameCBR, int); // 64 - 320
242 CreateSetting(AudioConvert_QualityLameVBR, int); // Lame Quality for variable bitrate 1-10
243 CreateSetting(AudioConvert_QualityOgg, int); // 1 - 10
244 CreateSetting(Broadcast_Active, bool); // is broadcast active?
245 CreateSetting(Broadcast_Port, int); // broadcast port
246 CreateSetting(Broadcast_Prompt, bool); // prompt when new connection arrives?
247 CreateSetting(Cover_FetchFromWWW, bool); // Fetch covers from www
248 CreateSetting(Cover_SaveToDB, bool); // Save covers to DB
249 CreateSetting(Cover_SaveToLibrary, bool); // Save covers in library
250 CreateSetting(Cover_SaveToSayonaraDir, bool); // Save covers in library
251 CreateSetting(Cover_Server, QStringList); // Cover server
252 CreateSetting(Cover_StartSearch, bool); // start alternative cover search automatically
253 CreateSetting(Cover_TemplatePath, QString); // Name of cover file in library
254 CreateSetting(Dir_ShowTracks, bool); // show tracks panel in directory view
255 CreateSetting(Dir_SplitterDirFile, QByteArray); // Splitter state between dirs and files
256 CreateSetting(Dir_SplitterTracks, QByteArray); // Splitter between upper and track view
257 CreateSetting(Dir_TagToFilenameExpression, QString); // Last used expression when converting tags to filename
258 CreateSetting(Engine_AlsaDevice, QString); // Specific alsa device
259 CreateSetting(Engine_BufferSizeMS, int); // Buffer size for streaming
260 CreateSetting(Engine_CovertTargetPath, QString); // last convert path
261 CreateSetting(Engine_CrossFaderActive, bool); // crossfader, but not gapless active
262 CreateSetting(Engine_CrossFaderTime, int); // crossfader overlap time
263 CreateSetting(Engine_CurTrackPos_s, int); // position of track (used to load old position)
264 CreateSetting(Engine_Mute, bool); // Muted/unmuted
265 CreateSetting(Engine_Name, QString); // Deprecated: Engine name
266 CreateSetting(Engine_Pitch, int); // hertz of a
267 CreateSetting(Engine_PreservePitch, bool); // if yes, should pitch be preserved?
268 CreateSetting(Engine_SR_Active, bool); // Streamripper active
269 CreateSetting(Engine_SR_AutoRecord, bool); // streamripper automatic recording
270 CreateSetting(Engine_SR_Path, QString); // streamripper paths
271 CreateSetting(Engine_SR_SessionPath, bool); // create streamripper session path?
272 CreateSetting(Engine_SR_SessionPathTemplate, QString); // streamripper session path templat
273 CreateSetting(Engine_SR_Warning, bool); // streamripper warnings
274 CreateSetting(Engine_ShowLevel, bool); // show level
275 CreateSetting(Engine_ShowSpectrum, bool); // show spectrum
276 CreateSetting(Engine_Sink, QString); // Alsa, pulseaudio
277 CreateSetting(Engine_SoundFileExtensions, QStringList); // additional file extensions
278 CreateSetting(Engine_SpectrumBins, int); // number of spectrum bins
279 CreateSetting(Engine_Speed, float); // if yes, set speed
280 CreateSetting(Engine_SpeedActive, bool); // is speed control active?
281 CreateSetting(Engine_Vol, int); // Volume
282 CreateSetting(Eq_Gauss, bool); // do curve, when changing eq setting
283 CreateSetting(Eq_Last, int); // last equalizer index
284 CreateSetting(Icon_ForceInDarkTheme, bool); // Current icon theme
285 CreateSetting(Icon_Theme, QString); // Current icon theme
286 CreateSetting(InfoDialog_Size, QSize); // Size of Info Dialog
287 CreateSetting(LFM_Active, bool); // is lastFM active?
288 CreateSetting(LFM_Corrections, bool); // propose lfm corrections
289 CreateSetting(LFM_Login, StringPair); // deprecated: 2-Tupel, username, password
290 CreateSetting(LFM_Password, QString); // encrypted password
291 CreateSetting(LFM_ScrobbleTimeSec, int); // time in sec when to scrobble
292 CreateSetting(LFM_SessionKey, QString); // lfm session key
293 CreateSetting(LFM_ShowErrors, bool); // get error message, if there are lfm problems
294 CreateSetting(LFM_Username, QString); // usernam
295 CreateSetting(Level_Style, int); // index of level style
296 CreateSetting(Lib_AllLibraries, QList<Library::Info>); // deprecated
297 CreateSetting(Lib_AutoUpdate, bool); // Automatic update of library
298 CreateSetting(Lib_ColStateAlbums, QByteArray); // Header state of albums
299 CreateSetting(Lib_ColStateArtists, QByteArray); // Header state of artists
300 CreateSetting(Lib_ColStateTracks, QByteArray); // Header state of tracks
301 CreateSetting(Lib_CoverOrigPMCache, int); // Original sized pixmap cache
302 CreateSetting(Lib_CoverScaledPMCache, int); // Scaled sized pixmap cache
303 CreateSetting(Lib_CoverShowArtist, bool); // Show artist name in cover view
304 CreateSetting(Lib_CoverShowUtils, bool); // Show utils bar in cover view
305 CreateSetting(Lib_CoverZoom, int); // Zoom of album cover view
306 CreateSetting(Lib_CurPlugin, QString); // Current shown library plugin
307 CreateSetting(Lib_DC_DoNothing, bool); // when double clicked, create playlist and do nothin
308 CreateSetting(Lib_DC_PlayIfStopped, bool); // when double clicked, play if stopped
309 CreateSetting(Lib_DC_PlayImmediately, bool); // when double clicked, play immediately
310 CreateSetting(Lib_DD_DoNothing, bool); // when drag dropped, insert tracks and do nothing
311 CreateSetting(Lib_DD_PlayIfStoppedAndEmpty, bool); // when drag dropped, play if playlist is empty and stopped
312 CreateSetting(Lib_FontBold, bool); // bold fonts in library
313 CreateSetting(Lib_GenreTree, bool); // Show tree view of genres
314 CreateSetting(Lib_HeaderAutoResizeAlbums, bool); // resize columns automatically in albums
315 CreateSetting(Lib_HeaderAutoResizeArtists, bool); // resize columns automatically in artists
316 CreateSetting(Lib_HeaderAutoResizeTracks, bool); // resize columns automatically in tracks
317 CreateSetting(Lib_LastIndex, int); // Last selected library
318 CreateSetting(Lib_LiveSearch, bool); // library live search
319 CreateSetting(Lib_OldWidth, int); // Old library width when hiding library
320 CreateSetting(Lib_Path, QString); // deprecated
321 CreateSetting(Lib_SearchMode, int); // Search mode in library. See
322 CreateSetting(Lib_SearchStringLength, int); // minimum length of search string
323 CreateSetting(Lib_Show, bool); // show library
324 CreateSetting(Lib_ShowAlbumArtists, bool); // Show album artists instead of artists
325 CreateSetting(Lib_ShowAlbumCovers, bool); // Show album cover view
326 CreateSetting(Lib_ShowFilterExtBar, bool); // Show the file extension filter bar in track view
327 CreateSetting(Lib_SortIgnoreArtistArticle, bool); // ignore article for artist
328 CreateSetting(Lib_SortModeMask, int); // additional attributes applied to sorting
329 CreateSetting(Lib_Sorting, Library::Sortings); // how to sort in lib
330 CreateSetting(Lib_SplitterStateArtist, QByteArray); // Splitter state between artists and albums
331 CreateSetting(Lib_SplitterStateDate, QByteArray); // Splitter state between tracks and genres
332 CreateSetting(Lib_SplitterStateGenre, QByteArray); // Splitter state between tracks and genres
333 CreateSetting(Lib_SplitterStateTrack, QByteArray); // Splitter state between artists and tracks
334 CreateSetting(Lib_UseViewClearButton, bool); // Show clear button in single view
335 CreateSetting(Lib_ViewType, Library::ViewType); // Standard view, CoverView, LibraryView
336 CreateSetting(Logger_Level, int); // Also log development:
337 CreateSetting(Lyrics_Server, QString); // Lyrics server
338 CreateSetting(Lyrics_Zoom, int); // Zoom factor in lyrics window
339 CreateSetting(Notification_Name, QString); // type of notifications: libnotify or empty for native baloons
340 CreateSetting(Notification_Show, bool); // show notifications
341 CreateSetting(Notification_Timeout, int); // notification timeout
342 CreateSetting(PL_CurrentTrackColorStringDark, QString); // custom color in dark theme
343 CreateSetting(PL_CurrentTrackColorStringStandard, QString); // custom color string in standard theme
344 CreateSetting(PL_CurrentTrackCustomColorDark, bool); // use custom color in dark theme
345 CreateSetting(PL_CurrentTrackCustomColorStandard, bool); // use custom color in standard theme
346 CreateSetting(PL_EntryLook, QString); // formatting of playlist entry
347 CreateSetting(PL_JumpToCurrentTrack, bool); // jump to current track when track changes
348 CreateSetting(PL_LastPlaylist, int); // last Playlist id, where LastTrack has been played
349 CreateSetting(PL_LastTrack, int); // last track idx in playlist
350 CreateSetting(PL_LastTrackBeforeStop, int); // last track before stop
351 CreateSetting(PL_LoadLastTrack, bool); // load last track on startup
352 CreateSetting(PL_LoadSavedPlaylists, bool); // load saved playlists on startup
353 CreateSetting(PL_LoadTemporaryPlaylists, bool); // load temporary playlists on startup
354 CreateSetting(PL_Mode, Playlist::Mode); // playlist mode: rep1, repAll, shuffle...
355 CreateSetting(PL_PlayTrackAfterSearch, bool); // play track after search is done
356 CreateSetting(PL_RememberTime, bool); // remember time of last track
357 CreateSetting(PL_RememberTrackAfterStop, bool); // when stop button is pressed, remember last track index
358 CreateSetting(PL_ShowBottomBar, bool); // Show bottom bar in playlist
359 CreateSetting(PL_ShowClearButton, bool); // show clear button in playlist
360 CreateSetting(PL_ShowCovers, bool); // Show covers in Playlist
361 CreateSetting(PL_ShowNumbers, bool); // show numbers in playlist
362 CreateSetting(PL_ShowRating, bool); // Show rating in playlist
363 CreateSetting(PL_StartPlaying, bool); // start playing immediately when opening Sayonara
364 CreateSetting(PL_StartPlayingWorkaround_Issue263,
365 bool); // https://gitlab.com/luciocarreras/sayonara-player/-/issues/263
366 CreateSetting(Player_514Fix, bool); // https://bugs.archlinux.org/task/59451
367 CreateSetting(Player_ControlStyle, int); // Big cover or not
368 CreateSetting(Player_FadingCover, bool); // If cover buttons should fade
369 CreateSetting(Player_ForceNativeDirDialog, bool); // Under some environments, native dir dialog is disabled
370 CreateSetting(Player_Fullscreen, bool); // player fullscreen
371 CreateSetting(Player_Geometry, QByteArray); // player geometry
372 CreateSetting(Player_Language, QString); // language of player
373 CreateSetting(Player_Maximized, bool); // player maximized
374 CreateSetting(Player_Min2Tray, bool); // minimize Sayonara to tray
375 CreateSetting(Player_NotifyNewVersion, bool); // check for new version on startup
376 CreateSetting(Player_OneInstance, bool); // only one Sayonara instance is allowed
377 CreateSetting(Player_PrivId, QByteArray); // Unique identifier
378 CreateSetting(Player_PublicId, QByteArray); // Unique identifier
379 CreateSetting(Player_ShowTrayIcon, bool); // Show/hide the tray icon
380 CreateSetting(Player_ShownPlugin, QString); // current shown plugin in player, empty if none
381 CreateSetting(Player_SplitterControls, QByteArray); // Splitter state between controls and playlist
382 CreateSetting(Player_SplitterState, QByteArray); // spliter state between playlist and library
383 CreateSetting(Player_StartInTray, bool); // start in tray
384 CreateSetting(Player_Style, int); // dark or native: native = 0, dark = 1
385 CreateSetting(Player_Version, QString); // Version string of player
386 CreateSetting(Proxy_Active, bool); // Is proxy server active
387 CreateSetting(Proxy_Hostname, QString); // Proxy Hostname/IP Address
388 CreateSetting(Proxy_Password, QString); // Proxy Password
389 CreateSetting(Proxy_Port, int); // Proxy Port 3128
390 CreateSetting(Proxy_SavePw, bool); // Should password be saved
391 CreateSetting(Proxy_Username, QString); // Proxy Username
392 CreateSetting(Remote_Active, bool); // Remote control activated
393 CreateSetting(Remote_DiscoverPort, int); // UDP port for remote discovering
394 CreateSetting(Remote_Discoverable, bool); // broadcast is discoverable via UDP
395 CreateSetting(Remote_Port, int); // Remote control port
396 CreateSetting(Settings_Revision, int); // Version number of settings
397 CreateSetting(Spectrum_Style, int); // index of spectrum style
398 CreateSetting(Speed_LastTab, int); // Last tab selected int he speed/pitch plugin
399 CreateSetting(Stream_NewTab, bool); // Open Streams in new tab
400 CreateSetting(Stream_SearchWindowSize, QSize); // Size of the stream search dialog
401 CreateSetting(Stream_ShowHistory, bool); // Show history when playing streams
402}
403
404namespace SetNoDB
405{ // non-persistent settings
406 CreateSetting(MP3enc_found, bool); // is mp3 encoder available?
407 CreateSetting(Pitch_found, bool); // is pitch element available?
408 CreateSetting(Soundcloud_AuthToken, QString); // soundcloud authentication token
409}
410#endif // SETTINGKEY_H
The EQ_Setting class. Container for Equalizer configurations.
Definition: EqualizerSetting.h:35
The Sortings class.
Definition: Sorting.h:37
The Mode class.
Definition: PlaylistMode.h:42
Definition: EngineUtils.h:33
An interface class needed when implementing a library plugin.
Definition: LocalLibraryWatcher.h:31
Definition: typedefs.h:33
The RawShortcutMap struct consisting of a specifier writable into database and a shortcut....
Definition: RawShortcutMap.h:38
Definition: SettingKey.h:224