#ifndef CTRIPLECOLORWIDGET_H
#define CTRIPLECOLORWIDGET_H

#include <qwidget.h>
#include "CColorWidget.h"

class QWidgetStack;
class CColorWidget;
class QVButtonGroup;
class QRadioButton;
class QHBox;
class QVBox;
class QLabel;
class QLineEdit;
class QDoubleValidator;

class CTripleColorWidget : public QWidget
{
  Q_OBJECT

  QWidgetStack     *m_colorwidgetstack;
  CColorWidget     *m_colorwidgets[3];
  QVButtonGroup    *m_buttongroup;
  QRadioButton     *m_radiobuttons[3];
  QHBox            *m_hbox;
  QVBox            *m_vbox;
  QHBox            *m_hbox2;
  QVBox            *m_vbox2;
  QLabel           *m_preview;
  QLabel           *m_exponent;
  QLineEdit        *m_exponentLineEdit;
  QDoubleValidator *m_doublevalidator;

 public:
  CTripleColorWidget( QWidget* parent = NULL,
                       const char *name = NULL );
  ~CTripleColorWidget();

  void getFloatColor(int i, float color[4]) const
    {
      m_colorwidgets[i]->getFloatColor(color);
    }
  float getSpecularExponent() const;
  void setColor(int i, const float color[4])
    {
      m_colorwidgets[i]->setColor(color);
      Update(m_colorwidgets[i]);
    }

 private slots:
  void Update(QWidget *widget = NULL);
  void Changed0(void) { emit Changed(0); }
  void Changed1(void) { emit Changed(1); }
  void Changed2(void) { emit Changed(2); }
  void Changed3(void) { emit Changed(3); }

 signals:
  void Changed(int i);
};

#endif // CTRIPLECOLORWIDGET
