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
2017-02-11 22:52:47 +01:00
// check if we can create the color by hex RRGGBB getColors
QRegularExpression hexRe ( " ^([0-9A-F]{6}) + $ " , QRegularExpression::CaseInsensitiveOption) ;
QRegularExpressionMatch match = hexRe . match ( value ) ;
if ( match . hasMatch ( ) )
{
2020-07-12 09:19:59 +02:00
for ( const QString m : match . capturedTexts ( ) )
2017-02-11 22:52:47 +01:00
{
_colors . push_back ( QColor ( QString ( " #%1 " ) . arg ( m ) ) ) ;
}
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
}