summaryrefslogtreecommitdiffstats
path: root/src/preferences/dialog/dlgpreflibrary.h
blob: 3f767c83008e5f062e533344db9b94f1940981a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#pragma once

#include <QFont>
#include <QStandardItemModel>
#include <QWidget>
#include <memory>

#include "library/library_decl.h"
#include "preferences/dialog/dlgpreferencepage.h"
#include "preferences/dialog/ui_dlgpreflibrarydlg.h"
#include "preferences/usersettings.h"

class DlgPrefLibrary : public DlgPreferencePage, public Ui::DlgPrefLibraryDlg  {
    Q_OBJECT
  public:
    enum class TrackDoubleClickAction : int {
        LoadToDeck = 0,
        AddToAutoDJBottom = 1,
        AddToAutoDJTop = 2,
        Ignore = 3,
    };

    enum class CoverArtFetcherQuality {
        Low = 0,
        Medium = 1,
        High = 2,
        Highest = 3,
    };

    DlgPrefLibrary(
            QWidget* pParent,
            UserSettingsPointer pConfig,
            std::shared_ptr<Library> pLibrary);
    ~DlgPrefLibrary() override;

    QUrl helpUrl() const override;

  public slots:
    // Common preference page slots.
    void slotUpdate() override;
    void slotShow() override;
    void slotHide() override;
    void slotResetToDefaults() override;
    void slotApply() override;
    void slotCancel() override;

    // Dialog to browse for music file directory
    void slotAddDir();
    void slotRemoveDir();
    void slotRelocateDir();

  signals:
    void apply();
    void scanLibrary();
    void requestAddDir(const QString& dir);
    void requestRemoveDir(const QString& dir, LibraryRemovalType removalType);
    void requestRelocateDir(const QString& currentDir, const QString& newDir);

  private slots:
    void slotRowHeightValueChanged(int);
    void slotSelectFont();
    void slotSyncTrackMetadataToggled();
    void slotSearchDebouncingTimeoutMillisChanged(int);
    void slotBpmColumnPrecisionChanged(int bpmPrecision);
    void slotSeratoMetadataExportClicked(bool);

  private:
    void setFocusPolicyInstallEventFilter(QSpinBox* box);
    bool eventFilter(QObject* object, QEvent* event) override;
    void initializeDirList();
    void setLibraryFont(const QFont& font);
    void updateSearchLineEditHistoryOptions();

    QStandardItemModel m_dirListModel;
    UserSettingsPointer m_pConfig;
    std::shared_ptr<Library> m_pLibrary;
    bool m_bAddedDirectory;
    QFont m_originalTrackTableFont;
    int m_iOriginalTrackTableRowHeight;
};