00001 #include "KDChartObjectFactory.h"
00002 #include <KDChartParams.h>
00003 #include <KDChartTable.h>
00004 #include <qsargument.h>
00005 #include <qdatetime.h>
00006 #include <KDChartEnums.h>
00007 #include <qfont.h>
00008 #include <KDChartTextPiece.h>
00009 #include <qcolor.h>
00010 #include <KDChartWidget.h>
00011 #include <KDChartPropertySet.h>
00012 #include "factories/QtFactory.h"
00013 #include "factories/QFontFactory.h"
00014
00015
00016 KDChartObjectFactory::KDChartObjectFactory()
00017 {
00018 registerClass( QString::fromLatin1( "KDChartWidget" ) );
00019 registerClass( QString::fromLatin1( "KDChartParams" ), new KDChartParams );
00020 registerClass( QString::fromLatin1( "KDChartTableData" ) );
00021 registerClass( QString::fromLatin1( "KDChartAxisParams" ), new KDChartAxisParams );
00022 registerClass( QString::fromLatin1( "KDChartEnums" ), 0, new KDChartEnums );
00023 registerClass( QString::fromLatin1( "KDChartTextPiece" ) );
00024 registerClass( QString::fromLatin1( "KDChartCustomBox" ), new KDChartCustomBox );
00025 registerClass( QString::fromLatin1( "KDChartPropertySet" ), new KDChartPropertySet );
00026 registerClass( QString::fromLatin1( "KDFrame" ), QString::null, new KDFrame );
00027
00028 registerClass( QString::fromLatin1( "Qt" ), QString::null, new QtFactory() );
00029 registerClass( QString::fromLatin1( "QFont" ), QString::null, new QFontFactory );
00030 }
00031
00032 QObject* KDChartObjectFactory::create( const QString& className, const QSArgumentList& args, QObject* )
00033 {
00034 if ( className == QString::fromLatin1( "KDChartWidget" ) )
00035 return createKDChartWidget( args );
00036
00037 if ( className == QString::fromLatin1("KDChartParams") )
00038 return new KDChartParams();
00039
00040 else if ( className == QString::fromLatin1("KDChartTableData") )
00041 return createKDChartTableData( args );
00042
00043 else if ( className == QString::fromLatin1("KDChartAxisParams") )
00044 return new KDChartAxisParams();
00045
00046
00047 else if ( className == QString::fromLatin1( "KDChartTextPiece" ) )
00048 return createKDChartTextPiece( args );
00049
00050 else if ( className == QString::fromLatin1( "KDChartCustomBox" ) )
00051 return createKDChartCustomBox( args );
00052
00053 else if ( className == QString::fromLatin1( "KDChartPropertySet" ) )
00054 return createKDChartPropertySet( args );
00055
00056 else
00057 return 0;
00058 }
00059
00060 QObject* KDChartObjectFactory::createKDChartWidget( const QSArgumentList& args )
00061 {
00062 if ( !checkArgCount( "KDChartWidget", args.count(), 2, 2 ) ) return 0;
00063 if ( !checkArgsIsQtClass( args, 1, "KDChartParams", "KDChartWidget" ) ) return 0;
00064 if ( !checkArgsIsQtClass( args, 2, "KDChartTableDataBase", "KDChartWidget" ) ) return 0;
00065 KDChartParams* params = static_cast<KDChartParams*>( args[0].qobject() );
00066 KDChartTableDataBase* data = static_cast<KDChartTableDataBase*>( args[1].qobject() );
00067
00068 return new KDChartWidget( params, data );
00069
00070 }
00071
00072 QObject* KDChartObjectFactory::createKDChartTableData( const QSArgumentList& args )
00073 {
00074 if ( args.count() != 2 ) {
00075 throwError( QObject::tr( "wrong number of arguments to KDChartTableData" ) );
00076 return 0;
00077 }
00078 QSArgument arg1 = args[0];
00079 QSArgument arg2 = args[1];
00080
00081 if ( arg1.type() != QSArgument::Variant || !isNumber(arg1.variant()) ) {
00082 throwError( QObject::tr( "wrong type for argument 1 of KDChartTableData" ) );
00083 return 0;
00084 }
00085 if ( arg2.type() != QSArgument::Variant || !isNumber(arg2.variant() ) ) {
00086 throwError( QObject::tr( "wrong type for argument 2 of KDChartTableData" ) );
00087 return 0;
00088 }
00089 return new KDChartTableData( arg1.variant().toUInt(), arg2.variant().toUInt() );
00090 }
00091
00092
00093 QObject* KDChartObjectFactory::createKDChartTextPiece( const QSArgumentList& args )
00094 {
00095 if ( !checkArgCount( "KDChartTextPiece", args.count(), 2, 2 ) ) return 0;
00096 QSArgument arg1 = args[0];
00097 QSArgument arg2 = args[1];
00098
00099 QString str;
00100 if ( !getString( args, 1, &str, "KDChartTextPiece" ) ) return 0;
00101 if ( !checkIsQtVariant( args, 2, QVariant::Font, QString::fromLatin1( "QFont" ), "KDChartTextPiece" ) ) return 0;
00102 QFont font = args[1].variant().toFont();
00103
00104 return new KDChartTextPiece( str, font );
00105 }
00106
00107 QObject* KDChartObjectFactory::createKDChartCustomBox( const QSArgumentList& args )
00108 {
00109 int tmp;
00110
00111 if ( args.count() == 0 )
00112 return new KDChartCustomBox();
00113
00114
00115 if ( args[0].type() == QSArgument::Variant && isNumber( args[0].variant() ) ) {
00116 if ( args.count() < 8 ) {
00117 throwError( QObject::tr( "Too few arguments to KDChartCustomBox" ) );
00118 return 0;
00119 }
00120
00121 int rotation;
00122 if ( !getNumber( args, 1, &rotation, "KDChartCustomBox" ) ) return 0;
00123
00124 if (!checkArgsIsQtClass( args, 2, "KDChartTextPiece", "KDChartCustomBox" )) return 0;
00125 KDChartTextPiece* content = static_cast<KDChartTextPiece*>( args[1].qobject() );
00126
00127 int fontSize;
00128 if ( !getNumber( args, 3, &fontSize, "KDChartCustomBox" ) ) return 0;
00129
00130
00131 bool fontScaleGlobal;
00132 if ( !getBool( args, 4, &fontScaleGlobal, "KDChartCustomBox" ) ) return 0;
00133
00134 int deltaX;
00135 if ( !getNumber( args, 5, &deltaX, "KDChartCustomBox" ) ) return 0;
00136
00137 int deltaY;
00138 if ( !getNumber( args, 6, &deltaY, "KDChartCustomBox" ) ) return 0;
00139
00140 int width;
00141 if ( !getNumber( args, 7, &width, "KDChartCustomBox" ) ) return 0;
00142
00143 int height;
00144 if ( !getNumber( args, 8, &height, "KDChartCustomBox" ) ) return 0;
00145
00146 QColor color = Qt::black;
00147 if ( args.count() >= 9 ) {
00148 if ( !checkIsQtVariant( args, 9, QVariant::Color, QString::fromLatin1( "QColor" ), "KDChartCustomBox" ) ) return 0;
00149 color = args[8].variant().toColor();
00150 }
00151
00152 QBrush paper = Qt::NoBrush;
00153 if ( args.count() >= 10 ) {
00154 if ( !checkIsQtVariant( args, 10, QVariant::Brush, QString::fromLatin1( "QBrush" ), "KDChartCustomBox" ) ) return 0;
00155 paper = args[9].variant().toBrush();
00156 }
00157
00158 uint area = KDChartEnums::AreaInnermost;
00159 if ( args.count() >= 11 ) {
00160 if ( !getNumber( args, 11, &area, "KDChartCustomBox" ) ) return 0;
00161 }
00162
00163 KDChartEnums::PositionFlag position = KDChartEnums::PosTopLeft;
00164 if ( args.count() >= 12 ) {
00165 if ( !getNumber( args, 12, &tmp, "KDChartCustomBox" ) ) return 0;
00166 position = (KDChartEnums::PositionFlag) tmp;
00167 }
00168
00169 uint align = Qt::AlignTop + Qt::AlignLeft;
00170 if ( args.count() >= 13 ) {
00171 if ( !getNumber( args, 13, &align, "KDChartCustomBox" ) ) return 0;
00172 }
00173
00174 uint dataRow = 0;
00175 if ( args.count() >= 14 ) {
00176 if ( !getNumber( args, 14, &dataRow, "KDChartCustomBox" ) ) return 0;
00177 }
00178
00179 uint dataCol = 0;
00180 if ( args.count() >= 15 ) {
00181 if ( !getNumber( args, 15, &dataCol, "KDChartCustomBox" ) ) return 0;
00182 }
00183
00184 uint data3rd = 0;
00185 if ( args.count() >= 16 ) {
00186 if ( !getNumber( args, 16, &data3rd, "KDChartCustomBox" ) ) return 0;
00187 }
00188
00189 uint deltaAlign = KDCHART_AlignAuto;
00190 if ( args.count() >= 17 ) {
00191 if ( !getNumber( args, 17, &deltaAlign, "KDChartCustomBox" ) ) return 0;
00192 }
00193
00194 bool deltaScaleGlobal = true;
00195 if ( args.count() >= 18 ) {
00196 if ( !getBool( args, 18, &deltaScaleGlobal, "KDChartCustomBox" ) ) return 0;
00197 }
00198
00199 return new KDChartCustomBox( rotation, *content, fontSize, fontScaleGlobal, deltaX, deltaY,
00200 width, height, color, paper, area, position, align, dataRow,
00201 dataCol, data3rd, deltaAlign, deltaScaleGlobal );
00202 }
00203
00204 if (!checkArgsIsQtClass( args, 1, "KDChartTextPiece", "KDChartCustomBox" )) return 0;
00205 KDChartTextPiece* content = static_cast<KDChartTextPiece*>( args[0].qobject() );
00206
00207 if ( args.count() < 2 ) {
00208 throwError( QObject::tr( "Too few arguments to KDChartCustomBox" ) );
00209 return 0;
00210 }
00211
00212 int fontSize;
00213 if ( ! getNumber( args, 2, &fontSize, "KDChartCustomBox" ) ) return 0;
00214
00215 bool fontScaleGlobal = true;
00216 if ( args.count() > 2 && !getBool( args, 3, &fontScaleGlobal, "KDChartCustomBox" ) ) return 0;
00217
00218 if ( args.count() <= 3 )
00219 return new KDChartCustomBox( *content, fontSize, fontScaleGlobal );
00220
00221 checkArgCount( "KDChartCustomBox", args.count(), 7, 17 );
00222
00223 int deltaX;
00224 if ( !getNumber( args, 4, &deltaX, "KDChartCustomBox" ) ) return 0;
00225
00226 int deltaY;
00227 if ( !getNumber( args, 5, &deltaY, "KDChartCustomBox" ) ) return 0;
00228
00229 int width;
00230 if ( !getNumber( args, 6, &width, "KDChartCustomBox" ) ) return 0;
00231
00232 int height;
00233 if ( !getNumber( args, 7, &height, "KDChartCustomBox" ) ) return 0;
00234
00235
00236 QColor color = Qt::black;
00237 if ( args.count() >= 8 ) {
00238 if ( !checkIsQtVariant( args, 8, QVariant::Color, QString::fromLatin1( "QColor" ), "KDChartCustomBox" ) ) return 0;
00239 color = args[7].variant().toColor();
00240 }
00241
00242 QBrush paper = Qt::NoBrush;
00243 if ( args.count() >= 9 ) {
00244 if ( !checkIsQtVariant( args, 9, QVariant::Brush, QString::fromLatin1( "QBrush" ), "KDChartCustomBox" ) ) return 0;
00245 paper = args[8].variant().toBrush();
00246 }
00247
00248 uint area = KDChartEnums::AreaInnermost;
00249 if ( args.count() >= 10 ) {
00250 if ( !getNumber( args, 10, &area, "KDChartCustomBox" ) ) return 0;
00251 }
00252
00253 KDChartEnums::PositionFlag position = KDChartEnums::PosTopLeft;
00254 if ( args.count() >= 11 ) {
00255 if ( !getNumber( args, 11, &tmp, "KDChartCustomBox" ) ) return 0;
00256 position = (KDChartEnums::PositionFlag) tmp;
00257 }
00258
00259 uint align = Qt::AlignTop + Qt::AlignLeft;
00260 if ( args.count() >= 12 ) {
00261 if ( !getNumber( args, 12, &align, "KDChartCustomBox" ) ) return 0;
00262 }
00263
00264 uint dataRow = 0;
00265 if ( args.count() >= 13 ) {
00266 if ( !getNumber( args, 13, &dataRow, "KDChartCustomBox" ) ) return 0;
00267 }
00268
00269 uint dataCol = 0;
00270 if ( args.count() >= 14 ) {
00271 if ( !getNumber( args, 14, &dataCol, "KDChartCustomBox" ) ) return 0;
00272 }
00273
00274 uint data3rd = 0;
00275 if ( args.count() >= 15 ) {
00276 if ( !getNumber( args, 15, &data3rd, "KDChartCustomBox" ) ) return 0;
00277 }
00278
00279 uint deltaAlign = KDCHART_AlignAuto;
00280 if ( args.count() >= 16 ) {
00281 if ( !getNumber( args, 16, &deltaAlign, "KDChartCustomBox" ) ) return 0;
00282 }
00283
00284 bool deltaScaleGlobal = true;
00285 if ( args.count() >= 17 ) {
00286 if ( !getBool( args, 17, &deltaScaleGlobal, "KDChartCustomBox" ) ) return 0;
00287 }
00288
00289
00290 return new KDChartCustomBox( *content, fontSize, fontScaleGlobal, deltaX, deltaY, width, height, color,
00291 paper, area, position, align, dataRow, dataCol, data3rd, deltaAlign, deltaScaleGlobal );
00292 }
00293
00294 QObject* KDChartObjectFactory::createKDChartPropertySet(const QSArgumentList& args )
00295 {
00296 if ( args.count() == 0 )
00297 return new KDChartPropertySet();
00298
00299 QString name;
00300 if ( !getString( args, 1, &name, "KDChartPropertySet" ) ) return 0;
00301
00302 if ( args.count() == 1 )
00303 return new KDChartPropertySet( name );
00304
00305 int i;
00306 if ( !getNumber( args, 2, &i, "KDChartPropertySet" ) ) return 0;
00307 if ( args.count() == 2 )
00308 return new KDChartPropertySet( name, i );
00309
00310 if ( !checkArgCount( "KDChartPropertySet", args.count(), 33, 33 ) ) return 0;
00311
00312 int idLineWidth = i;
00313
00314 int lineWidth;
00315 if ( !getNumber( args, 3,&lineWidth, "KDChartPropertySet" ) ) return 0;
00316
00317 int idLineColor;
00318 if ( !getNumber( args, 4,&idLineColor, "KDChartPropertySet" ) ) return 0;
00319
00320
00321 if ( !checkIsQtVariant( args, 5, QVariant::Color, QString::fromLatin1( "QColor" ), "KDChartPropertySet" ) ) return 0;
00322 QColor lineColor = args[4].variant().toColor();
00323
00324 int idLineStyle;
00325 if ( !getNumber( args, 6,&idLineStyle, "KDChartPropertySet" ) ) return 0;
00326
00327
00328
00329 if ( !getNumber( args, 7,&i, "KDChartPropertySet" ) ) return 0;
00330 Qt::PenStyle lineStyle = (Qt::PenStyle) i;
00331
00332 int idShowMarker;
00333 if ( !getNumber( args, 8,&idShowMarker, "KDChartPropertySet" ) ) return 0;
00334
00335 bool showMarker;
00336 if ( !getBool( args, 9, &showMarker, "KDChartPropertySet" ) ) return 0;
00337
00338 int idExtraLinesAlign;
00339 if ( !getNumber( args, 10,&idExtraLinesAlign, "KDChartPropertySet" ) ) return 0;
00340
00341 uint extraLinesAlign;
00342 if ( !getNumber( args, 11,&extraLinesAlign, "KDChartPropertySet" ) ) return 0;
00343
00344 int idExtraLinesInFront;
00345 if ( !getNumber( args, 12,&idExtraLinesInFront, "KDChartPropertySet" ) ) return 0;
00346
00347 bool extraLinesInFront;
00348 if ( !getBool( args, 13, &extraLinesInFront, "KDChartPropertySet" ) ) return 0;
00349
00350 int idExtraLinesLength;
00351 if ( !getNumber( args, 14,&idExtraLinesLength, "KDChartPropertySet" ) ) return 0;
00352
00353 int extraLinesLength;
00354 if ( !getNumber( args, 15,&extraLinesLength, "KDChartPropertySet" ) ) return 0;
00355
00356 int idExtraLinesWidth;
00357 if ( !getNumber( args, 16,&idExtraLinesWidth, "KDChartPropertySet" ) ) return 0;
00358
00359 int extraLinesWidth;
00360 if ( !getNumber( args, 17,&extraLinesWidth, "KDChartPropertySet" ) ) return 0;
00361
00362 int idExtraLinesColor;
00363 if ( !getNumber( args, 18,&idExtraLinesColor, "KDChartPropertySet" ) ) return 0;
00364
00365 if ( !checkIsQtVariant( args, 19, QVariant::Color, QString::fromLatin1( "QColor" ), "KDChartPropertySet" ) ) return 0;
00366 QColor extraLinesColor = args[18].variant().toColor();
00367
00368 int idExtraLinesStyle;
00369 if ( !getNumber( args, 20,&idExtraLinesStyle, "KDChartPropertySet" ) ) return 0;
00370
00371 if ( !getNumber( args, 21,&i, "KDChartPropertySet" ) ) return 0;
00372 Qt::PenStyle extraLinesStyle = (Qt::PenStyle) i;
00373
00374 int idExtraMarkersAlign;
00375 if ( !getNumber( args, 22,&idExtraMarkersAlign, "KDChartPropertySet" ) ) return 0;
00376
00377 uint extraMarkersAlign;
00378 if ( !getNumber( args, 23,&extraMarkersAlign, "KDChartPropertySet" ) ) return 0;
00379
00380 int idExtraMarkersSize;
00381 if ( !getNumber( args, 24,&idExtraMarkersSize, "KDChartPropertySet" ) ) return 0;
00382
00383 if ( !checkIsQtVariant( args, 25, QVariant::Size, QString::fromLatin1( "QSize" ), "KDChartPropertySet" ) ) return 0;
00384 QSize extraMarkersSize = args[24].variant().toSize();
00385
00386 int idExtraMarkersColor;
00387 if ( !getNumber( args, 26,&idExtraMarkersColor, "KDChartPropertySet" ) ) return 0;
00388
00389 if ( !checkIsQtVariant( args, 27, QVariant::Color, QString::fromLatin1( "QColor" ), "KDChartPropertySet" ) ) return 0;
00390 QColor extraMarkersColor = args[26].variant().toColor();
00391
00392 int idExtraMarkersStyle;
00393 if ( !getNumber( args, 28,&idExtraMarkersStyle, "KDChartPropertySet" ) ) return 0;
00394
00395 int extraMarkersStyle;
00396 if ( !getNumber( args, 29,&extraMarkersStyle, "KDChartPropertySet" ) ) return 0;
00397
00398 int idShowBar;
00399 if ( !getNumber( args, 30,&idShowBar, "KDChartPropertySet" ) ) return 0;
00400
00401 bool showBar;
00402 if ( !getBool( args, 31, &showBar, "KDChartPropertySet" ) ) return 0;
00403
00404 int idBarColor;
00405 if ( !getNumber( args, 32,&idBarColor, "KDChartPropertySet" ) ) return 0;
00406
00407 if ( !checkIsQtVariant( args, 33, QVariant::Color, QString::fromLatin1( "QColor" ), "KDChartPropertySet" ) ) return 0;
00408 QColor barColor = args[32].variant().toColor();
00409
00410 KDChartPropertySet* set = new KDChartPropertySet;
00411 set->setName( name );
00412 set->setLineWidth( idLineWidth, lineWidth );
00413 set->setLineColor( idLineColor, lineColor );
00414 set->setLineStyle( idLineStyle, lineStyle );
00415 set->setShowMarker( idShowMarker, showMarker );
00416 set->setExtraLinesAlign( idExtraLinesAlign, extraLinesAlign );
00417 set->setExtraLinesInFront( idExtraLinesInFront, extraLinesInFront );
00418 set->setExtraLinesLength( idExtraLinesLength, extraLinesLength );
00419 set->setExtraLinesWidth( idExtraLinesWidth, extraLinesWidth );
00420 set->setExtraLinesColor( idExtraLinesColor, extraLinesColor );
00421 set->setExtraLinesStyle( idExtraLinesStyle, extraLinesStyle );
00422 set->setExtraMarkersAlign( idExtraMarkersAlign, extraMarkersAlign );
00423 set->setExtraMarkersSize( idExtraMarkersSize, extraMarkersSize );
00424 set->setExtraMarkersColor( idExtraMarkersColor, extraMarkersColor );
00425 set->setExtraMarkersStyle( idExtraMarkersStyle, extraMarkersStyle );
00426 set->setShowBar( idShowMarker, showBar );
00427 set->setBarColor( idBarColor, barColor );
00428 return set;
00429 }
00430
00431
00432 bool KDChartObjectFactory::isNumber( const QVariant& v )
00433 {
00434 return ( v.type() == QVariant::Int || v.type() == QVariant::UInt || v.type() == QVariant::Double );
00435 }
00436
00437
00438 bool KDChartObjectFactory::checkArgCount( const QString& className, int count, int min, int max )
00439 {
00440 if ( count < min ) {
00441 throwError( QObject::tr( "Too few arguments when creating %1 object." ).arg( className ) );
00442 return false;
00443 }
00444 if ( count > max ) {
00445 throwError( QObject::tr( "Too many arguments when creating %1 object." ).arg( className ) );
00446 return false;
00447 }
00448 return true;
00449 }
00450
00451
00452 bool KDChartObjectFactory::checkArgsIsQtClass( const QSArgumentList& args, int index, const char* expected, const char* constructing )
00453 {
00454 const QSArgument& arg = args[index-1];
00455 if ( arg.type() != QSArgument::QObjectPtr || !arg.qobject()->inherits( expected ) ) {
00456 throwError( QObject::tr( "Invalid type for argument no %1 to %2, must be a %3" ).arg(index).arg(constructing).arg(expected) );
00457 return false;
00458 }
00459 return true;
00460 }
00461
00462
00463 bool KDChartObjectFactory::getString( const QSArgumentList& args, int index, QString* str, const char* constructing )
00464 {
00465 const QSArgument& arg = args[index-1];
00466 if ( arg.type() != QSArgument::Variant || arg.variant().type() != QVariant::String ) {
00467 throwError( QObject::tr( "Invalid type for argument %1 to %2, must be a string" ).arg(index).arg(constructing) );
00468 return false;
00469 }
00470 else {
00471 *str = arg.variant().toString();
00472 return true;
00473 }
00474 }
00475
00476 bool KDChartObjectFactory::getNumber( const QSArgumentList& args, int index, double* number, const char* constructing )
00477 {
00478 const QSArgument& arg = args[index-1];
00479 if ( arg.type() != QSArgument::Variant || !isNumber(arg.variant()) ) {
00480 throwError( QObject::tr( "Invalid type for argument %1 to %2, must be a number" ).arg(index).arg( constructing ) );
00481 return false;
00482 }
00483 else {
00484 *number = arg.variant().toDouble();
00485 return true;
00486 }
00487 }
00488
00489 bool KDChartObjectFactory::getNumber( const QSArgumentList& args, int index, int* number, const char* constructing )
00490 {
00491 double tmp;
00492 bool ok = getNumber( args, index, &tmp, constructing );
00493 *number = static_cast<int>( tmp );
00494 return ok;
00495 }
00496
00497 bool KDChartObjectFactory::getNumber( const QSArgumentList& args, int index, uint* number, const char* constructing )
00498 {
00499 double tmp;
00500 bool ok = getNumber( args, index, &tmp, constructing );
00501 *number = static_cast<uint>( tmp );
00502 return ok;
00503 }
00504
00505
00506
00507 bool KDChartObjectFactory::getBool( const QSArgumentList& args, int index, bool* b, const char* constructing )
00508 {
00509 const QSArgument& arg = args[index-1];
00510 if ( arg.type() != QSArgument::Variant || arg.variant().type() != QVariant::Bool ) {
00511 throwError( QObject::tr( "Invalid type for argument %1 to %2, must be a boolean" ).arg(index).arg( constructing ) );
00512 return false;
00513 }
00514 else {
00515 *b = arg.variant().toBool();
00516 return true;
00517 }
00518 }
00519
00520 bool KDChartObjectFactory::checkIsQtVariant( const QSArgumentList& args, int index, QVariant::Type expected, const QString& variantName, const char* constructing )
00521 {
00522 const QSArgument& arg = args[index-1];
00523 if ( arg.type() != QSArgument::Variant || arg.variant().type() != expected ) {
00524 throwError( QObject::tr( "Invalid type for argument %1 to %2, must be a %3").arg(index).arg(constructing).arg(variantName) );
00525 return false;
00526 }
00527 else
00528 return true;
00529 }
00530
00531