#pragma once

#include <tdemainwindow.h>
#include <tqptrlist.h>

class AlsaModel;
class AlsaDevice;
class AlsaDevicesPage;
#include "alsadevicewidget.h"
class AlsaTray;
class TQComboBox;
class TQTabWidget;
class TQHBoxLayout;
class TQWidget;

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

    void setTray( AlsaTray *tray ) { m_tray = tray; }

signals:
    void settingsChanged();

public slots:
    void bringToFront();
    void quit();

protected:
    bool queryClose();
    void showEvent( TQShowEvent *e );

private slots:
    void onCardChanged( int idx );
    void onDeviceAdded( AlsaDevice *dev );
    void showPreferences();
    void showAbout();

private:
    void rebuildTabs( int cardIndex );

    AlsaModel  *m_model;
    AlsaTray   *m_tray;
    bool        m_posRestored;
    TQComboBox  *m_cardCombo;
    TQTabWidget *m_tabs;
    TQWidget    *m_outputPage;
    TQWidget    *m_inputPage;
    TQHBoxLayout *m_outputLayout;
    TQHBoxLayout *m_inputLayout;
    TQPtrList<AlsaDeviceWidget> m_widgets;
    AlsaDevicesPage *m_devicesPage;
};
