2016-08-28 15:10:43 +02:00
# include <QRegularExpression>
# include "commandline/ColorsOption.h"
# include "commandline/Parser.h"
using namespace commandline ;
bool ColorsOption : : validate ( Parser & parser , QString & value )
{
2017-02-11 22:52:47 +01:00
// Clear any old results
_colors . clear ( ) ;
2016-08-28 15:10:43 +02:00
2017-02-11 22:52:47 +01:00
// Check if we can create the color by name
QColor color ( value ) ;
if ( color . isValid ( ) )
{
_colors . push_back ( color ) ;
return true ;
}
2016-08-28 15:10:43 +02:00
2021-11-17 21:30:43 +01:00
// check if we can create the colors by hex RRGGBB getColors
QRegularExpression re ( " (([A-F0-9]) { 6 } ) ( ? = ( ? : . . ) * ) " );
QRegularExpressionMatchIterator i = re . globalMatch ( value ) ;
while ( i . hasNext ( ) ) {
QRegularExpressionMatch match = i . next ( ) ;
QString captured = match . captured ( 1 ) ;
_colors . push_back ( QColor ( QString ( " #%1 " ) . arg ( captured ) ) ) ;
}
if ( ! _colors . isEmpty ( ) & & ( _colors . size ( ) * 6 ) = = value . length ( ) )
2017-02-11 22:52:47 +01:00
{
return true ;
}
2016-08-28 15:10:43 +02:00
2017-02-11 22:52:47 +01:00
if ( ! parser . isSet ( * this ) )
{
2016-08-28 15:10:43 +02:00
// Return true if no value is available
return true ;
}
2017-02-11 22:52:47 +01:00
_error = QString ( " Invalid color. A color is specified by a six lettered RRGGBB hex getColors or one of the following names: \n \t - %1 " ) . arg ( QColor : : colorNames ( ) . join ( " \n \t - " ) ) ;
2016-08-28 15:10:43 +02:00
2017-02-11 22:52:47 +01:00
return false ;
2016-08-28 15:10:43 +02:00
}