X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fchoosecolorwidget.cpp;h=f8b8d3024b7050e30d4883316808a8948ae64a9b;hb=c3302003093710ee247ad84c0fe2ef3c579d417f;hp=86138195450f47ea95432f8e63519780e71dd82e;hpb=4c3e738cacd82522bee069346966a6617161cb4f;p=kdenlive diff --git a/src/choosecolorwidget.cpp b/src/choosecolorwidget.cpp index 86138195..f8b8d302 100644 --- a/src/choosecolorwidget.cpp +++ b/src/choosecolorwidget.cpp @@ -27,13 +27,13 @@ #include #include #include +#include static QColor stringToColor(QString strColor) { bool ok = false; QColor color("black"); int intval = 0; - if (strColor.startsWith("0x")) { if (strColor.length() == 10) { // 0xRRGGBBAA @@ -55,6 +55,10 @@ static QColor stringToColor(QString strColor) ( intval >> 8 ) & 0xff, // g ( intval ) & 0xff, // b ( intval >> 24 ) & 0xff ); // a + } else if (strColor.length() == 8) { + // 0xRRGGBB + strColor = strColor.replace('#', "0x"); + color.setNamedColor(strColor); } else { // #RRGGBB, #RGB color.setNamedColor(strColor); @@ -64,25 +68,26 @@ static QColor stringToColor(QString strColor) return color; } -static QString colorToString(QColor color, bool alpha) +static QString colorToString(const QColor &color, bool alpha) { QString colorStr; QTextStream stream(&colorStr); - stream << "#"; + stream << "0x"; stream.setIntegerBase(16); stream.setFieldWidth(2); stream.setFieldAlignment(QTextStream::AlignRight); stream.setPadChar('0'); - if(alpha) - { + stream << color.red() << color.green() << color.blue(); + if (alpha) { stream << color.alpha(); + } else { + // MLT always wants 0xRRGGBBAA format + stream << "ff"; } - stream << color.red() << color.green() << color.blue(); - return colorStr; } -ChooseColorWidget::ChooseColorWidget(QString text, QString color, QWidget *parent) : +ChooseColorWidget::ChooseColorWidget(const QString &text, const QString &color, bool alphaEnabled, QWidget *parent) : QWidget(parent) { QHBoxLayout *layout = new QHBoxLayout(this); @@ -97,6 +102,9 @@ ChooseColorWidget::ChooseColorWidget(QString text, QString color, QWidget *paren rightSideLayout->setSpacing(0); m_button = new KColorButton(stringToColor(color), rightSide); +#if KDE_IS_VERSION(4,5,0) + if (alphaEnabled) m_button->setAlphaChannelEnabled(alphaEnabled); +#endif // m_button->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); ColorPickerWidget *picker = new ColorPickerWidget(rightSide); @@ -106,11 +114,12 @@ ChooseColorWidget::ChooseColorWidget(QString text, QString color, QWidget *paren rightSideLayout->addWidget(picker, 0, Qt::AlignRight); connect(picker, SIGNAL(colorPicked(QColor)), this, SLOT(setColor(QColor))); - connect(picker, SIGNAL(displayMessage(const QString&, int)), this, SIGNAL(displayMessage(const QString&, int))); + connect(picker, SIGNAL(displayMessage(QString,int)), this, SIGNAL(displayMessage(QString,int))); + connect(picker, SIGNAL(disableCurrentFilter(bool)), this, SIGNAL(disableCurrentFilter(bool))); connect(m_button, SIGNAL(changed(QColor)), this, SIGNAL(modified())); } -QString ChooseColorWidget::getColor() +QString ChooseColorWidget::getColor() const { bool alphaChannel = false; #if KDE_IS_VERSION(4,5,0) @@ -119,14 +128,7 @@ QString ChooseColorWidget::getColor() return colorToString(m_button->color(), alphaChannel); } -void ChooseColorWidget::setAlphaChannelEnabled(bool enabled) -{ -#if KDE_IS_VERSION(4,5,0) - m_button->setAlphaChannelEnabled(enabled); -#endif -} - -void ChooseColorWidget::setColor(QColor color) +void ChooseColorWidget::setColor(const QColor& color) { m_button->setColor(color); }