summaryrefslogtreecommitdiffstats
path: root/src/engine/controls/vinylcontrolcontrol.h
blob: 9129337a13235af930cf51d6fc59a179dc2d897d (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
#ifndef VINYLCONTROLCONTROL_H
#define VINYLCONTROLCONTROL_H

#include "control/controlobject.h"
#include "control/controlproxy.h"
#include "control/controlpushbutton.h"
#include "engine/controls/enginecontrol.h"
#include "preferences/usersettings.h"
#include "track/track_decl.h"

class VinylControlControl : public EngineControl {
    Q_OBJECT
  public:
    VinylControlControl(QString group, UserSettingsPointer pConfig);
    virtual ~VinylControlControl();

    // If the engine asks for a seek, we may need to disable absolute mode.
    void notifySeekQueued();
    bool isEnabled();
    bool isScratching();
    void trackLoaded(TrackPointer pNewTrack) override;

  private slots:
    void slotControlVinylSeek(double fractionalPos);

  private:
    ControlObject* m_pControlVinylRate;
    ControlObject* m_pControlVinylSeek;
    ControlObject* m_pControlVinylSpeedType;
    ControlObject* m_pControlVinylStatus;
    ControlPushButton* m_pControlVinylScratching;
    ControlPushButton* m_pControlVinylMode;
    ControlPushButton* m_pControlVinylEnabled;
    ControlPushButton* m_pControlVinylWantEnabled;
    ControlPushButton* m_pControlVinylCueing;
    ControlPushButton* m_pControlVinylSignalEnabled;
    ControlProxy* m_pPlayEnabled;

    TrackPointer m_pTrack; // is written from an engine worker thread

    bool m_bSeekRequested;
};

#endif /* VINYLCONTROLCONTROL_H */