#pragma once

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

class AlsaModel;
class AlsaDevice;
class TQScrollView;
class TQComboBox;
class KLedButton;

// ── One row per Switch element ──────────────────────────────────────────────

class AlsaSwitchRow : public TQWidget
{
    TQ_OBJECT
public:
    AlsaSwitchRow( AlsaDevice *dev, TQWidget *parent = 0 );

private slots:
    void onMuteChanged( bool m );
    void onLedToggled( bool on );

private:
    AlsaDevice *m_dev;
    KLedButton *m_led;
};

// ── One row per Enum element ────────────────────────────────────────────────

class AlsaEnumRow : public TQWidget
{
    TQ_OBJECT
public:
    AlsaEnumRow( AlsaDevice *dev, TQWidget *parent = 0 );

private slots:
    void onEnumChanged( int id );
    void onComboActivated( int idx );

private:
    AlsaDevice *m_dev;
    TQComboBox  *m_combo;
};

// ── Device Settings page ────────────────────────────────────────────────────

class AlsaDevicesPage : public TQWidget
{
    TQ_OBJECT
public:
    explicit AlsaDevicesPage( AlsaModel *model, TQWidget *parent = 0 );

    void setCard( int cardIndex );

private slots:
    void onDeviceAdded( AlsaDevice * );

private:
    void rebuild();

    AlsaModel   *m_model;
    int          m_cardIndex;
    TQScrollView *m_scroll;
    TQWidget     *m_content;
};
