summaryrefslogtreecommitdiff
path: root/src/ui/devicewidget.h
blob: 802014ef42456ef277d1bac94dce635466ab1977 (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
#pragma once

#include <tqwidget.h>
#include <tqstring.h>
#include <tqpixmap.h>
#include <tqptrlist.h>

class AudioDevice;
class PulseModel;
class KLed;
class KLedButton;
class LevelMeter;
class TQSlider;
class BalanceKnob;
class TQLabel;
class TQRadioButton;
class TQContextMenuEvent;
class TQFrame;

class DeviceWidget : public TQWidget
{
    TQ_OBJECT

public:
    DeviceWidget( AudioDevice *device, PulseModel *model, TQWidget *parent = 0 );
    ~DeviceWidget() {}

    AudioDevice *device() const { return m_device; }
    LevelMeter  *levelMeter() const { return m_levelMeter; }
    void setSeparatorVisible( bool v );

protected:
    void contextMenuEvent( TQContextMenuEvent *e );
    void wheelEvent( TQWheelEvent *e );

private slots:
    void onVolumeChanged( int v );
    void onBalanceChanged( int v );
    void onMuteClicked();
    void onToggleMute();
    void onSetDefault();
    void onDefaultClicked();
    void onMoveToSink( int id );
    void onDefaultChanged( AudioDevice *dev );
    void onRecordingActive( bool active );

    void onDeviceVolume( int v );
    void onDeviceMute( bool m );
    void onDevicePan( int p );
    void onDeviceLevel( float level );
    void onDeviceName( const TQString &name );

private:
    AudioDevice  *m_device;
    PulseModel   *m_model;
    TQFrame       *m_sep;
    TQSlider      *m_volSlider;
    BalanceKnob   *m_balanceDial;
    KLedButton    *m_muteLed;
    KLed          *m_recordingLed;  // null unless Input
    TQRadioButton  *m_defaultBtn;   // null for Playback/Recording
    TQLabel       *m_volLabel;
    LevelMeter   *m_levelMeter;
    TQWidget      *m_label;
    TQLabel       *m_iconLabel;

    TQPtrList<AudioDevice> m_moveTargets;  // populated by context menu build
};