]> git.sesse.net Git - kdenlive/blobdiff - src/choosecolorwidget.cpp
Const'ref
[kdenlive] / src / choosecolorwidget.cpp
index 86138195450f47ea95432f8e63519780e71dd82e..f8b8d3024b7050e30d4883316808a8948ae64a9b 100644 (file)
 #include <KColorButton>
 #include <KLocalizedString>
 #include <kdeversion.h>
+#include <KDebug>
 
 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);
 }