/*****************************************************************************
* preferences_widgets.cpp : Widgets for preferences displays
****************************************************************************
- * Copyright (C) 2006-2007 the VideoLAN team
+ * Copyright (C) 2006-2011 the VideoLAN team
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
#include <QSignalMapper>
#include <QDialogButtonBox>
#include <QKeyEvent>
+#include <QColorDialog>
#define MINWIDTH_BOX 90
#define LAST_COLUMN 10
p_control = new StringListConfigControl( p_this, p_item,
parent, l, line );
break;
+ case CONFIG_ITEM_RGB:
+ p_control = new ColorConfigControl( p_this, p_item, parent, l, line );
+ break;
case CONFIG_ITEM_INTEGER:
if( p_item->i_list )
p_control = new IntegerListConfigControl( p_this, p_item,
void InterfacePreviewWidget::setNormalPreview( bool b_minimal )
{
- setPreview( ( b_minimal )?MINIMAL:COMPLETE );
+ setPreview( ( b_minimal ) ? MINIMAL : COMPLETE );
}
void InterfacePreviewWidget::setPreview( enum_style e_style )
}
-
/**************************************************************************
* String-based controls
*************************************************************************/
return checkbox->isChecked();
}
+/************* Color *************/
+ColorConfigControl::ColorConfigControl( vlc_object_t *_p_this,
+ module_config_t *_p_item,
+ QWidget *_parent, QGridLayout *l,
+ int line ) :
+ VIntConfigControl( _p_this, _p_item, _parent )
+{
+ label = new QLabel;
+ color_but = new QToolButton;
+ finish();
+
+ if( !l )
+ {
+ QHBoxLayout *layout = new QHBoxLayout();
+ layout->addWidget( label, 0 ); layout->addWidget( color_but, LAST_COLUMN );
+ widget->setLayout( layout );
+ }
+ else
+ {
+ l->addWidget( label, line, 0 );
+ l->addWidget( color_but, line, LAST_COLUMN, Qt::AlignRight );
+ }
+}
+
+ColorConfigControl::ColorConfigControl( vlc_object_t *_p_this,
+ module_config_t *_p_item,
+ QLabel *_label, QAbstractButton *_color ):
+ VIntConfigControl( _p_this, _p_item )
+{
+ label = _label;
+ color_but = _color;
+ finish();
+}
+
+void ColorConfigControl::finish()
+{
+ i_color = p_item->value.i;
+
+ color_px = new QPixmap( 34, 20 );
+ color_px->fill( QColor( i_color ) );
+ color_but->setIcon( QIcon( *color_px ) );
+ color_but->setMinimumWidth( 40 );
+
+ label->setText( qtr(p_item->psz_text) );
+ if( p_item->psz_longtext )
+ {
+ label->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) );
+ color_but->setToolTip( formatTooltip(qtr(p_item->psz_longtext)) );
+ }
+
+ BUTTONACT( color_but, selectColor() );
+}
+
+int ColorConfigControl::getValue() const
+{
+ return i_color;
+}
+
+void ColorConfigControl::selectColor()
+{
+ QColor color = QColorDialog::getColor( QColor( i_color ) );
+ i_color = (color.red() << 16) + (color.green() << 8) + color.blue();
+
+ color_px->fill( QColor( i_color ) );
+ color_but->setIcon( QIcon( *color_px ) );
+}
+
+
/**************************************************************************
* Float-based controls
*************************************************************************/
/*****************************************************************************
* preferences_widgets.hpp : Widgets for preferences panels
****************************************************************************
- * Copyright (C) 2006-2007 the VideoLAN team
+ * Copyright (C) 2006-2011 the VideoLAN team
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Variable controls
*******************************************************/
-class ConfigControl : public QObject
+class ConfigControl : public QObject
{
Q_OBJECT
public:
QLabel *, QSlider * );
virtual int getValue() const;
protected:
- QSlider *slider;
+ QSlider *slider;
private:
- QLabel *label;
- void finish();
+ QLabel *label;
+ void finish();
};
class IntegerListConfigControl : public VIntConfigControl
void finish();
};
+class ColorConfigControl : public VIntConfigControl
+{
+Q_OBJECT
+public:
+ ColorConfigControl( vlc_object_t *, module_config_t *, QWidget *,
+ QGridLayout *, int );
+ ColorConfigControl( vlc_object_t *, module_config_t *,
+ QLabel *, QAbstractButton* );
+ virtual ~ColorConfigControl() { delete color_px; }
+ virtual int getValue() const;
+private:
+ QLabel *label;
+ QAbstractButton *color_but;
+ QPixmap *color_px;
+ int i_color;
+ void finish();
+private slots:
+ void selectColor();
+};
+
/*******************************************************
* Float-based controls
*******************************************************/