]> SALOME platform Git repositories - modules/gui.git/blob - src/ObjBrowser/OB_ListItem.cxx
Salome HOME
2e85a85b4663ce2dd966c0d8ec99f6093c7349fb
[modules/gui.git] / src / ObjBrowser / OB_ListItem.cxx
1 #include "OB_ListItem.h"
2
3 #include "OB_ListView.h"
4
5 #include <SUIT_DataObject.h>
6
7 #include <qpainter.h>
8 #include <qwmatrix.h>
9
10 #include <iostream>
11 using namespace std;
12
13 /*!
14     Class: ListItem
15     Descr: base template class
16 */
17
18 template<class T>
19 ListItemF<T>::ListItemF(T& theT, SUIT_DataObject* obj) :
20 myT(theT),
21 myObject( obj )
22 {
23 }
24
25 template<class T>
26 void ListItemF<T>::paintC( QPainter* p, const QColorGroup& cg, int c, int w, int align )
27
28   QColorGroup colorGrp( cg );
29   if ( myObject )
30   {
31     if ( myObject->color( SUIT_DataObject::Text ).isValid() )
32       colorGrp.setColor( QColorGroup::Text, myObject->color( SUIT_DataObject::Text ) );
33     if ( myObject->color( SUIT_DataObject::Base ).isValid() )
34       colorGrp.setColor( QColorGroup::Base, myObject->color( SUIT_DataObject::Base ) );
35     if ( myObject->color( SUIT_DataObject::Foreground ).isValid() )
36       colorGrp.setColor( QColorGroup::Foreground, myObject->color( SUIT_DataObject::Foreground ) );
37     if ( myObject->color( SUIT_DataObject::Background ).isValid() )
38       colorGrp.setColor( QColorGroup::Background, myObject->color( SUIT_DataObject::Background ) );
39     if ( myObject->color( SUIT_DataObject::Highlight ).isValid() )
40       colorGrp.setColor( QColorGroup::Highlight, myObject->color( SUIT_DataObject::Highlight ) );
41     if ( myObject->color( SUIT_DataObject::HighlightedText ).isValid() )
42       colorGrp.setColor( QColorGroup::HighlightedText, myObject->color( SUIT_DataObject::HighlightedText ) );
43   }
44
45   
46   p->fillRect( 0, 0, w, myT.height(), colorGrp.brush( QColorGroup::Base ) );
47   int itemW = myT.width( p->fontMetrics(), myT.listView(), c );
48     
49   //myT.paintCell( p, colorGrp, c, itemW,  align );
50 }
51
52 template<class T>
53 void ListItemF<T>::paintFoc( QPainter* p, const QColorGroup& cg, const QRect& r )
54 {
55   QRect rect = r;
56   rect.setWidth( myT.width( p->fontMetrics(), myT.listView(), 0 ) );
57   //myT.paintFocus( p, cg, rect );
58 }
59
60 template<class T>
61 void ListItemF<T>::setSel( bool s )
62 {
63   QListView* lv = myT.listView();
64   if ( s && lv && lv->inherits( "OB_ListView" ) )
65   {
66     OB_ListView* objlv = (OB_ListView*)lv;
67     s = s && objlv->isOk( &myT );
68   }
69
70   //myT.setSelected( s );
71 }
72
73 template<class T>
74 void ListItemF<T>::update()
75 {
76   SUIT_DataObject* obj = dataObject();
77   if ( !obj )
78     return;
79
80   myT.setText( 0, obj->name() );
81
82   int aIconW = obj->icon().width();
83   if ( aIconW > 0 )
84   {
85     if ( aIconW > 20 )
86     {
87       QWMatrix aM;
88       double aScale = 20.0 / aIconW;
89       aM.scale( aScale, aScale );
90       myT.setPixmap( 0, obj->icon().xForm( aM ) );
91     }
92     else
93       myT.setPixmap( 0, obj->icon() );
94   }
95
96   myT.setDragEnabled( obj->isDragable() );
97   myT.setDropEnabled( true );
98 }
99
100 /*!
101     Class: OB_ListItem
102     Descr: List view item for OB_Browser.
103 */
104
105 OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent )
106 : ListItemF<QListViewItem>( *this, obj ),
107  QListViewItem(parent)
108 {
109         update();
110 }
111
112 OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListViewItem* parent )
113 : ListItemF<QListViewItem>( *this, obj),
114  QListViewItem(parent)
115 {
116         update();
117 }
118
119 OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent, QListViewItem* after )
120 : ListItemF<QListViewItem>( *this, obj),
121 QListViewItem(parent, after )
122 {
123         update();
124 }
125
126 OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListViewItem* parent, QListViewItem* after )
127 : ListItemF<QListViewItem>( *this,obj),
128 QListViewItem(parent, after )
129 {
130         update();
131 }
132
133 OB_ListItem::~OB_ListItem()
134 {
135 }
136
137 void OB_ListItem::setSelected( bool s ) {
138         setSel(s);
139         QListViewItem::setSelected(s);
140 }
141
142 void OB_ListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r ){
143         paintFoc(p, cg, r);
144         QListViewItem::paintFocus(p, cg, r);
145 }
146
147 void OB_ListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, int align ) {
148         paintC(p, cg, c ,w, align);
149         QListViewItem::paintCell(p, cg, c, w, align);
150 }
151
152 int OB_ListItem::RTTI()
153 {
154   return 1000;
155 }
156
157 int OB_ListItem::rtti() const
158 {
159   return RTTI();
160 }
161
162 /*!
163     Class: OB_CheckListItem
164     Descr: Check list view item for OB_Browser.
165 */
166
167 OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListView* parent, Type type )
168 : ListItemF<QCheckListItem>( *this, obj),
169 QCheckListItem( parent, "", type )
170 {
171         update();
172 }
173
174 OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListViewItem* parent, Type type )
175 : ListItemF<QCheckListItem>( *this, obj),
176 QCheckListItem( parent, "", type )
177 {
178         update();
179 }
180
181 OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListView* parent, QListViewItem* after, Type type )
182 : ListItemF<QCheckListItem>( *this, obj),
183 #if defined(QT_VERSION) && QT_VERSION >= 0x030101
184  QCheckListItem( parent, after, "", type )
185 #else
186  QCheckListItem( parent, "", type )
187 #endif
188 {
189         update();
190 }
191
192 OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListViewItem* parent, QListViewItem* after, Type type )
193 : ListItemF<QCheckListItem>( *this, obj),
194 #if defined(QT_VERSION) && QT_VERSION >= 0x030101
195  QCheckListItem( parent, after, "", type )
196 #else
197  QCheckListItem( parent, "", type )
198 #endif
199 {
200         update();
201 }
202
203 OB_CheckListItem::~OB_CheckListItem()
204 {
205 }
206
207 void OB_CheckListItem::setSelected( bool s ) {
208         setSel(s);
209         QCheckListItem::setSelected(s);
210 }
211
212 void OB_CheckListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r ){
213         paintFoc(p, cg, r);
214         QCheckListItem::paintFocus(p, cg, r);
215 }
216
217 void OB_CheckListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, int align ) {
218         paintC(p, cg, c ,w, align);
219         QCheckListItem::paintCell(p, cg, c, w, align);
220 }
221
222 int OB_CheckListItem::RTTI()
223 {
224   return OB_ListItem::RTTI() + 1;
225 }
226
227 int OB_CheckListItem::rtti() const
228 {
229   return RTTI();
230 }
231
232 void OB_CheckListItem::stateChange( bool on )
233 {
234   QCheckListItem::stateChange( on );
235
236   if ( dataObject() )
237     dataObject()->setOn( on );
238 }