X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FQtx%2FQtxPagePrefMgr.cxx;h=b6eac24c7129134fa6f272b397c9f4389cc2c1c2;hb=855f4002aa71d468682a50c484a19579a51bf78c;hp=4ec238be21bdaf9ec3fc7d3bb53fd4ca388b4056;hpb=26ac7ca874ce9a796ff7ad43685f42afca635df9;p=modules%2Fgui.git diff --git a/src/Qtx/QtxPagePrefMgr.cxx b/src/Qtx/QtxPagePrefMgr.cxx index 4ec238be2..b6eac24c7 100644 --- a/src/Qtx/QtxPagePrefMgr.cxx +++ b/src/Qtx/QtxPagePrefMgr.cxx @@ -51,6 +51,30 @@ #include +namespace +{ + bool toStringList(const QVariant& value, QStringList& result) + { + bool ok = false; + if ( value.type() == QVariant::StringList ) + { + result = value.toStringList(); + ok = true; + } + else if ( value.type() == QVariant::List ) + { + QList valueList = value.toList(); + for ( QList::const_iterator it = valueList.begin(); it != valueList.end(); ++it ) + { + if ( (*it).canConvert( QVariant::String ) ) + result.append( (*it).toString() ); + } + ok = true; + } + return ok; + } +} + /*! \class QtxPagePrefMgr \brief GUI implementation of the QtxPreferenceMgr class: preferences manager. @@ -2701,7 +2725,7 @@ void QtxPagePrefSelectItem::setInputType( const int type ) QStringList QtxPagePrefSelectItem::strings() const { QStringList res; - for ( uint i = 0; i < mySelector->count(); i++ ) + for ( int i = 0; i < mySelector->count(); i++ ) res.append( mySelector->itemText( i ) ); return res; } @@ -2711,10 +2735,10 @@ QStringList QtxPagePrefSelectItem::strings() const \return list of values IDs \sa strings(), icons(), setNumbers() */ -QList QtxPagePrefSelectItem::numbers() const +QList QtxPagePrefSelectItem::numbers() const { - QList res; - for ( uint i = 0; i < mySelector->count(); i++ ) + QList res; + for ( int i = 0; i < mySelector->count(); i++ ) { if ( mySelector->hasId( i ) ) res.append( mySelector->id( i ) ); @@ -2730,7 +2754,7 @@ QList QtxPagePrefSelectItem::numbers() const QList QtxPagePrefSelectItem::icons() const { QList res; - for ( uint i = 0; i < mySelector->count(); i++ ) + for ( int i = 0; i < mySelector->count(); i++ ) res.append( mySelector->itemIcon( i ) ); return res; } @@ -2751,10 +2775,10 @@ void QtxPagePrefSelectItem::setStrings( const QStringList& lst ) \param ids new list of values IDs \sa numbers(), setStrings(), setIcons() */ -void QtxPagePrefSelectItem::setNumbers( const QList& ids ) +void QtxPagePrefSelectItem::setNumbers( const QList& ids ) { - uint i = 0; - for ( QList::const_iterator it = ids.begin(); it != ids.end(); ++it, i++ ) { + int i = 0; + for ( QList::const_iterator it = ids.begin(); it != ids.end(); ++it, i++ ) { if ( i >= mySelector->count() ) mySelector->addItem(QString("") ); @@ -2772,7 +2796,7 @@ void QtxPagePrefSelectItem::setNumbers( const QList& ids ) */ void QtxPagePrefSelectItem::setIcons( const QList& icns ) { - uint i = 0; + int i = 0; for ( QList::const_iterator it = icns.begin(); it != icns.end() && i < mySelector->count(); ++it, i++ ) mySelector->setItemIcon( i, *it ); } @@ -2788,10 +2812,16 @@ void QtxPagePrefSelectItem::store() int idx = mySelector->currentIndex(); - if ( mySelector->hasId( idx ) ) - setInteger( mySelector->id( idx ) ); - else if ( idx >= 0 ) + if ( mySelector->hasId( idx ) ) { + QVariant id = mySelector->id( idx ); + if ( id.type() == QVariant::Int ) + setInteger( id.toInt() ); + else if ( id.type() == QVariant::String ) + setString( id.toString() ); + } + else if ( idx >= 0 ) { setString( mySelector->itemText( idx ) ); + } } /*! @@ -2801,16 +2831,12 @@ void QtxPagePrefSelectItem::store() void QtxPagePrefSelectItem::retrieve() { QString txt = getString(); - - int idx = -1; - - bool ok = false; - int num = txt.toInt( &ok ); - if ( ok ) - idx = mySelector->index( num ); - else + + // try to find via the id + int idx = mySelector->index( txt ); + if ( idx < 0 ) { - for ( uint i = 0; i < mySelector->count() && idx == -1; i++ ) + for ( int i = 0; i < mySelector->count() && idx == -1; i++ ) { if ( mySelector->itemText( i ) == txt ) idx = i; @@ -2848,11 +2874,7 @@ QVariant QtxPagePrefSelectItem::optionValue( const QString& name ) const return strings(); else if ( name == "numbers" || name == "ids" || name == "indexes" ) { - QList lst; - QList nums = numbers(); - for ( QList::const_iterator it = nums.begin(); it != nums.end(); ++it ) - lst.append( *it ); - return lst; + return numbers(); } else if ( name == "icons" || name == "pixmaps" ) { @@ -2896,10 +2918,9 @@ void QtxPagePrefSelectItem::setOptionValue( const QString& name, const QVariant& */ void QtxPagePrefSelectItem::setStrings( const QVariant& var ) { - if ( var.type() != QVariant::StringList ) - return; - - setStrings( var.toStringList() ); + QStringList values; + if ( toStringList( var, values ) ) + setStrings( values ); } /*! @@ -2912,14 +2933,7 @@ void QtxPagePrefSelectItem::setNumbers( const QVariant& var ) if ( var.type() != QVariant::List ) return; - QList lst; - QList varList = var.toList(); - for ( QList::const_iterator it = varList.begin(); it != varList.end(); ++it ) - { - if ( (*it).canConvert( QVariant::Int ) ) - lst.append( (*it).toInt() ); - } - setNumbers( lst ); + setNumbers( var.toList() ); } /*! @@ -3815,8 +3829,9 @@ void QtxPagePrefFontItem::setOptionValue( const QString& name, const QVariant& v } else if ( name == "fonts" || name == "families" ) { - if ( val.canConvert( QVariant::StringList ) ) - setFonts( val.toStringList() ); + QStringList values; + if ( toStringList( val, values ) ) + setFonts( values ); } else if ( name == "sizes" ) { @@ -4795,8 +4810,9 @@ void QtxPagePrefBackgroundItem::setOptionValue( const QString& name, const QVari setImageFormats( val.toString() ); } else if ( name == "gradient_names" ) { - if ( val.canConvert( QVariant::StringList ) ) - setGradients( val.toStringList() ); + QStringList values; + if ( toStringList( val, values ) ) + setGradients( values ); } else if ( name == "gradient_ids" ) { if ( val.canConvert( QVariant::List ) ) {