Commit c35da63e authored by Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf

Qt: implement the color selector button

parent b2202ed4
/***************************************************************************** /*****************************************************************************
* preferences_widgets.cpp : Widgets for preferences displays * preferences_widgets.cpp : Widgets for preferences displays
**************************************************************************** ****************************************************************************
* Copyright (C) 2006-2007 the VideoLAN team * Copyright (C) 2006-2011 the VideoLAN team
* $Id$ * $Id$
* *
* Authors: Clément Stenac <zorglub@videolan.org> * Authors: Clément Stenac <zorglub@videolan.org>
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
#include <QSignalMapper> #include <QSignalMapper>
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <QKeyEvent> #include <QKeyEvent>
#include <QColorDialog>
#define MINWIDTH_BOX 90 #define MINWIDTH_BOX 90
#define LAST_COLUMN 10 #define LAST_COLUMN 10
...@@ -113,6 +114,9 @@ ConfigControl *ConfigControl::createControl( vlc_object_t *p_this, ...@@ -113,6 +114,9 @@ ConfigControl *ConfigControl::createControl( vlc_object_t *p_this,
p_control = new StringListConfigControl( p_this, p_item, p_control = new StringListConfigControl( p_this, p_item,
parent, l, line ); parent, l, line );
break; break;
case CONFIG_ITEM_RGB:
p_control = new ColorConfigControl( p_this, p_item, parent, l, line );
break;
case CONFIG_ITEM_INTEGER: case CONFIG_ITEM_INTEGER:
if( p_item->i_list ) if( p_item->i_list )
p_control = new IntegerListConfigControl( p_this, p_item, p_control = new IntegerListConfigControl( p_this, p_item,
...@@ -167,7 +171,7 @@ InterfacePreviewWidget::InterfacePreviewWidget ( QWidget *parent ) : QLabel( par ...@@ -167,7 +171,7 @@ InterfacePreviewWidget::InterfacePreviewWidget ( QWidget *parent ) : QLabel( par
void InterfacePreviewWidget::setNormalPreview( bool b_minimal ) void InterfacePreviewWidget::setNormalPreview( bool b_minimal )
{ {
setPreview( ( b_minimal )?MINIMAL:COMPLETE ); setPreview( ( b_minimal ) ? MINIMAL : COMPLETE );
} }
void InterfacePreviewWidget::setPreview( enum_style e_style ) void InterfacePreviewWidget::setPreview( enum_style e_style )
...@@ -193,7 +197,6 @@ void InterfacePreviewWidget::setPreview( enum_style e_style ) ...@@ -193,7 +197,6 @@ void InterfacePreviewWidget::setPreview( enum_style e_style )
} }
/************************************************************************** /**************************************************************************
* String-based controls * String-based controls
*************************************************************************/ *************************************************************************/
...@@ -1113,6 +1116,74 @@ int BoolConfigControl::getValue() const ...@@ -1113,6 +1116,74 @@ int BoolConfigControl::getValue() const
return checkbox->isChecked(); 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 * Float-based controls
*************************************************************************/ *************************************************************************/
......
/***************************************************************************** /*****************************************************************************
* preferences_widgets.hpp : Widgets for preferences panels * preferences_widgets.hpp : Widgets for preferences panels
**************************************************************************** ****************************************************************************
* Copyright (C) 2006-2007 the VideoLAN team * Copyright (C) 2006-2011 the VideoLAN team
* $Id$ * $Id$
* *
* Authors: Clément Stenac <zorglub@videolan.org> * Authors: Clément Stenac <zorglub@videolan.org>
...@@ -209,6 +209,26 @@ private: ...@@ -209,6 +209,26 @@ private:
void finish(); 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 * Float-based controls
*******************************************************/ *******************************************************/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment