]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
no message
authorstv <stv@opencascade.com>
Mon, 28 May 2007 08:52:01 +0000 (08:52 +0000)
committerstv <stv@opencascade.com>
Mon, 28 May 2007 08:52:01 +0000 (08:52 +0000)
src/Qtx/QtxComboBox.cxx
src/Qtx/QtxComboBox.h

index eecfbb4059856fcc483298ac2ee1f6a770cbd890..0bbe2ce606c4be32ea172e8c612c39a0c9a785f0 100755 (executable)
@@ -122,6 +122,16 @@ void QtxComboBox::setCurrentId( int num )
   setCurrentIndex( index( num ) );
 }
 
+/*!
+  \brief Set the identifier to specified item.
+  \param index - index of the item
+  \param id - identifier of the item
+*/
+void QtxComboBox::setId( const int index, const int id )
+{
+  setItemData( index, QVariant( id ), (Qt::ItemDataRole)IdRole );
+}
+
 /*!
   \brief Customize paint event.
   \param e paint event
@@ -196,8 +206,9 @@ void QtxComboBox::paintClear( QPaintEvent* e )
 int QtxComboBox::id( const int idx ) const
 {
   int id = -1;
-  if ( myIndexId.contains( idx ) )
-    id = myIndexId[idx];
+  QVariant v = itemData( idx, (Qt::ItemDataRole)IdRole );
+  if ( v.canConvert( QVariant::Int ) )
+    id = v.toInt();
   return id;
 }
 
@@ -206,13 +217,13 @@ int QtxComboBox::id( const int idx ) const
   \param id item ID
   \return item index or -1 if ID is invalid.
 */
-int QtxComboBox::index( const int id ) const
+int QtxComboBox::index( const int ident ) const
 {
   int idx = -1;
-  for ( IndexIdMap::ConstIterator it = myIndexId.begin(); it != myIndexId.end() && idx == -1; ++it )
+  for ( int i = 0; i < (int)count() && idx == -1; i++ )
   {
-    if ( it.value() == id )
-      idx = it.key();
+    if ( id( i ) == ident )
+      idx = i;
   }
   return idx;
 }
index 8038e5aa9d0d14fb0d7ed53544b359250394b0de..9aae4eb727495978619d87d56ae927441f3f869b 100755 (executable)
@@ -24,8 +24,8 @@
 
 #include "Qtx.h"
 
-#include <QComboBox>
 #include <QMap>
+#include <QComboBox>
 
 #ifdef WIN32
 #pragma warning( disable:4251 )
@@ -35,8 +35,6 @@ class QTX_EXPORT QtxComboBox : public QComboBox
 {
   Q_OBJECT
 
-  typedef QMap<int, int> IndexIdMap;      //!< ID to item index map
-
 public:
   QtxComboBox( QWidget* = 0 );
   virtual ~QtxComboBox();
@@ -49,6 +47,11 @@ public:
   int          currentId() const;
   void         setCurrentId( int );
 
+  int          id( const int ) const;
+  int          index( const int ) const;
+
+  void         setId( const int, const int );
+
 signals:
   void         activatedId( int );
   void         highlightedId( int );
@@ -61,15 +64,14 @@ protected:
   virtual void paintEvent( QPaintEvent* );
 
 private:
-  int          id( const int ) const;
-  int          index( const int ) const;
-
   void         resetClear();
   void         paintClear( QPaintEvent* );
 
+private:
+  enum { IdRole = Qt::UserRole + 10 };
+
 private:
   bool         myCleared;     //!< "cleared" state
-  IndexIdMap   myIndexId;     //!< ID to item index map
 };
 
 #ifdef WIN32