1 #pragma once
2 
3 #include <QLineEdit>
4 #include <QString>
5 #include <QWidget>
6 
7 #include "controllers/keyboard/keyboardeventfilter.h"
8 #include "library/autodj/autodjprocessor.h"
9 #include "library/autodj/ui_dlgautodj.h"
10 #include "library/library.h"
11 #include "library/libraryview.h"
12 #include "library/trackcollection.h"
13 #include "preferences/usersettings.h"
14 #include "track/track_decl.h"
15 
16 class PlaylistTableModel;
17 class WLibrary;
18 class WTrackTableView;
19 
20 class DlgAutoDJ : public QWidget, public Ui::DlgAutoDJ, public LibraryView {
21     Q_OBJECT
22   public:
23     DlgAutoDJ(WLibrary* parent,
24             UserSettingsPointer pConfig,
25             Library* pLibrary,
26             AutoDJProcessor* pProcessor,
27             KeyboardEventFilter* pKeyboard);
28     ~DlgAutoDJ() override;
29 
30     void onShow() override;
31     bool hasFocus() const override;
32     void onSearch(const QString& text) override;
33     void loadSelectedTrack() override;
34     void loadSelectedTrackToGroup(const QString& group, bool play) override;
35     void moveSelection(int delta) override;
36 
37   public slots:
38     void shufflePlaylistButton(bool buttonChecked);
39     void skipNextButton(bool buttonChecked);
40     void fadeNowButton(bool buttonChecked);
41     void toggleAutoDJButton(bool enable);
42     void transitionTimeChanged(int time);
43     void transitionSliderChanged(int value);
44     void autoDJStateChanged(AutoDJProcessor::AutoDJState state);
45     void updateSelectionInfo();
46     void slotTransitionModeChanged(int comboboxIndex);
47     void slotRepeatPlaylistChanged(int checkedState);
48 
49   signals:
50     void addRandomButton(bool buttonChecked);
51     void loadTrack(TrackPointer tio);
52     void loadTrackToPlayer(TrackPointer tio, const QString& group, bool);
53     void trackSelected(TrackPointer pTrack);
54 
55   private:
56     void setupActionButton(QPushButton* pButton,
57             void (DlgAutoDJ::*pSlot)(bool),
58             const QString& fallbackText);
59 
60     const UserSettingsPointer m_pConfig;
61 
62     AutoDJProcessor* const m_pAutoDJProcessor;
63     WTrackTableView* const m_pTrackTableView;
64     const bool m_bShowButtonText;
65 
66     PlaylistTableModel* m_pAutoDJTableModel;
67 
68     QString m_enableBtnTooltip;
69     QString m_disableBtnTooltip;
70 };
71