+// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/
+//
#include "OB_ListItem.h"
#include "OB_ListView.h"
#include <qpainter.h>
#include <qwmatrix.h>
+#include <iostream>
+using namespace std;
+
/*!
Class: ListItem
Descr: base template class
*/
-template<class T>
-ListItem<T>::ListItem( SUIT_DataObject* obj, QListView* parent )
-: T( parent ),
-myObject( obj )
-{
- update();
-}
-
-template<class T>
-ListItem<T>::ListItem( SUIT_DataObject* obj, QListViewItem* parent )
-: T( parent ),
-myObject( obj )
-{
- update();
-}
template<class T>
-ListItem<T>::ListItem( SUIT_DataObject* obj, QListView* parent, QListViewItem* after )
-: T( parent, after ),
+ListItemF<T>::ListItemF( T& theT, SUIT_DataObject* obj ) :
+myT( theT ),
myObject( obj )
{
- update();
}
template<class T>
-ListItem<T>::ListItem( SUIT_DataObject* obj, QListViewItem* parent, QListViewItem* after )
-: T( parent, after ),
-myObject( obj )
-{
- update();
-}
-
-template<class T>
-ListItem<T>::ListItem( SUIT_DataObject* obj, QListView* parent, int type )
-: T( parent, "", (typename T::Type)type ),
-myObject( obj )
-{
- update();
-}
-
-template<class T>
-ListItem<T>::ListItem( SUIT_DataObject* obj, QListViewItem* parent, int type )
-: T( parent, "", (typename T::Type)type ),
-myObject( obj )
-{
- update();
-}
-
-template<class T>
-ListItem<T>::ListItem( SUIT_DataObject* obj, QListView* parent, QListViewItem* after, int type )
-#if defined(QT_VERSION) && QT_VERSION >= 0x030101
-: T( parent, after, "", (typename T::Type)type ),
-#else
-: T( parent, "", (typename T::Type)type ),
-#endif
-myObject( obj )
-{
- update();
-}
-
-template<class T>
-ListItem<T>::ListItem( SUIT_DataObject* obj, QListViewItem* parent, QListViewItem* after, int type )
-#if defined(QT_VERSION) && QT_VERSION >= 0x030101
-: T( parent, after, "", (typename T::Type)type ),
-#else
-: T( parent, "", (typename T::Type)type ),
-#endif
-myObject( obj )
-{
- update();
-}
-
-template<class T>
-void ListItem<T>::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, int align )
+void ListItemF<T>::paintC( QPainter* p, QColorGroup& cg, int c, int w, int align )
{
- QColorGroup colorGrp( cg );
+// QColorGroup colorGrp( cg );
if ( myObject )
{
if ( myObject->color( SUIT_DataObject::Text ).isValid() )
- colorGrp.setColor( QColorGroup::Text, myObject->color( SUIT_DataObject::Text ) );
+ cg.setColor( QColorGroup::Text, myObject->color( SUIT_DataObject::Text ) );
if ( myObject->color( SUIT_DataObject::Base ).isValid() )
- colorGrp.setColor( QColorGroup::Base, myObject->color( SUIT_DataObject::Base ) );
+ cg.setColor( QColorGroup::Base, myObject->color( SUIT_DataObject::Base ) );
if ( myObject->color( SUIT_DataObject::Foreground ).isValid() )
- colorGrp.setColor( QColorGroup::Foreground, myObject->color( SUIT_DataObject::Foreground ) );
+ cg.setColor( QColorGroup::Foreground, myObject->color( SUIT_DataObject::Foreground ) );
if ( myObject->color( SUIT_DataObject::Background ).isValid() )
- colorGrp.setColor( QColorGroup::Background, myObject->color( SUIT_DataObject::Background ) );
+ cg.setColor( QColorGroup::Background, myObject->color( SUIT_DataObject::Background ) );
if ( myObject->color( SUIT_DataObject::Highlight ).isValid() )
- colorGrp.setColor( QColorGroup::Highlight, myObject->color( SUIT_DataObject::Highlight ) );
+ cg.setColor( QColorGroup::Highlight, myObject->color( SUIT_DataObject::Highlight ) );
+ if ( myObject->color( SUIT_DataObject::HighlightedText ).isValid() )
+ cg.setColor( QColorGroup::HighlightedText, myObject->color( SUIT_DataObject::HighlightedText ) );
}
- p->fillRect( 0, 0, w, this->height(), colorGrp.brush( QColorGroup::Base ) );
- int itemW = width( p->fontMetrics(), this->listView(), c );
+ p->fillRect( 0, 0, w, myT.height(), cg.brush( QColorGroup::Base ) );
+ //int itemW = myT.width( p->fontMetrics(), myT.listView(), c );
- T::paintCell( p, colorGrp, c, itemW, align );
+ //myT.paintCell( p, colorGrp, c, itemW, align );
}
template<class T>
-void ListItem<T>::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r )
+void ListItemF<T>::paintFoc( QPainter* p, QColorGroup& cg, const QRect& r )
{
QRect rect = r;
- rect.setWidth( width( p->fontMetrics(), this->listView(), 0 ) );
- T::paintFocus( p, cg, rect );
+ rect.setWidth( myT.width( p->fontMetrics(), myT.listView(), 0 ) );
+ //myT.paintFocus( p, cg, rect );
}
template<class T>
-void ListItem<T>::setSelected( bool s )
+void ListItemF<T>::setSel( bool s )
{
- if ( s && listView() && listView()->inherits( "OB_ListView" ) )
+ QListView* lv = myT.listView();
+ if ( s && lv && lv->inherits( "OB_ListView" ) )
{
- OB_ListView* oblv = (OB_ListView*)listView();
- s = s && oblv->isOk( this );
+ OB_ListView* objlv = (OB_ListView*)lv;
+ s = s && objlv->isOk( &myT );
}
- QListViewItem::setSelected( s );
+ //myT.setSelected( s );
}
template<class T>
-void ListItem<T>::update()
+void ListItemF<T>::update()
{
SUIT_DataObject* obj = dataObject();
if ( !obj )
return;
- setText( 0, obj->name() );
+ myT.setText( 0, obj->name() );
int aIconW = obj->icon().width();
if ( aIconW > 0 )
QWMatrix aM;
double aScale = 20.0 / aIconW;
aM.scale( aScale, aScale );
- setPixmap( 0, obj->icon().xForm( aM ) );
+ myT.setPixmap( 0, obj->icon().xForm( aM ) );
}
else
- setPixmap( 0, obj->icon() );
+ myT.setPixmap( 0, obj->icon() );
}
- this->setDragEnabled( obj->isDragable() );
- this->setDropEnabled( true );
+ myT.setDragEnabled( obj->isDragable() );
+ myT.setDropEnabled( true );
}
/*!
*/
OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent )
-: ListItem<QListViewItem>( obj, parent )
+: ListItemF<QListViewItem>( *this, obj ),
+ QListViewItem(parent)
{
+ update();
}
OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListViewItem* parent )
-: ListItem<QListViewItem>( obj, parent )
+: ListItemF<QListViewItem>( *this, obj),
+ QListViewItem(parent)
{
+ update();
}
OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListView* parent, QListViewItem* after )
-: ListItem<QListViewItem>( obj, parent, after )
+: ListItemF<QListViewItem>( *this, obj),
+QListViewItem(parent, after )
{
+ update();
}
OB_ListItem::OB_ListItem( SUIT_DataObject* obj, QListViewItem* parent, QListViewItem* after )
-: ListItem<QListViewItem>( obj, parent, after )
+: ListItemF<QListViewItem>( *this,obj),
+QListViewItem(parent, after )
{
+ update();
}
OB_ListItem::~OB_ListItem()
{
}
+void OB_ListItem::setSelected( bool s )
+{
+ setSel( s );
+ QListViewItem::setSelected( s );
+}
+
+void OB_ListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r )
+{
+ QColorGroup col_group( cg );
+ paintFoc( p, col_group, r );
+
+ QRect R( r );
+ if ( listView() && !listView()->allColumnsShowFocus() )
+ R.setWidth( width( p->fontMetrics(), listView(), 0 ) );
+
+ QListViewItem::paintFocus( p, col_group, R );
+}
+
+void OB_ListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, int align )
+{
+ QColorGroup col_group( cg );
+ paintC( p, col_group, c ,w, align );
+
+ int W = w;
+ if ( listView() && !listView()->allColumnsShowFocus() )
+ W = width( p->fontMetrics(), listView(), c );
+
+ QListViewItem::paintCell( p, col_group, c, W, align );
+}
+
int OB_ListItem::RTTI()
{
return 1000;
*/
OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListView* parent, Type type )
-: ListItem<QCheckListItem>( obj, parent, type )
+: ListItemF<QCheckListItem>( *this, obj),
+QCheckListItem( parent, "", type )
{
+ update();
}
OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListViewItem* parent, Type type )
-: ListItem<QCheckListItem>( obj, parent, type )
+: ListItemF<QCheckListItem>( *this, obj),
+QCheckListItem( parent, "", type )
{
+ update();
}
OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListView* parent, QListViewItem* after, Type type )
-: ListItem<QCheckListItem>( obj, parent, after, type )
+: ListItemF<QCheckListItem>( *this, obj),
+#if defined(QT_VERSION) && QT_VERSION >= 0x030101
+ QCheckListItem( parent, after, "", type )
+#else
+ QCheckListItem( parent, "", type )
+#endif
{
+ update();
}
OB_CheckListItem::OB_CheckListItem( SUIT_DataObject* obj, QListViewItem* parent, QListViewItem* after, Type type )
-: ListItem<QCheckListItem>( obj, parent, after, type )
+: ListItemF<QCheckListItem>( *this, obj),
+#if defined(QT_VERSION) && QT_VERSION >= 0x030101
+ QCheckListItem( parent, after, "", type )
+#else
+ QCheckListItem( parent, "", type )
+#endif
{
+ update();
}
OB_CheckListItem::~OB_CheckListItem()
{
}
+void OB_CheckListItem::setSelected( bool s )
+{
+ setSel( s );
+ QCheckListItem::setSelected( s );
+}
+
+void OB_CheckListItem::paintFocus( QPainter* p, const QColorGroup& cg, const QRect& r )
+{
+ QColorGroup col_group( cg );
+ paintFoc( p, col_group, r );
+
+ QRect R( r );
+ if ( listView() && !listView()->allColumnsShowFocus() )
+ R.setWidth( width( p->fontMetrics(), listView(), 0 ) );
+
+ QCheckListItem::paintFocus( p, col_group, R );
+}
+
+void OB_CheckListItem::paintCell( QPainter* p, const QColorGroup& cg, int c, int w, int align )
+{
+ QColorGroup col_group( cg );
+ paintC( p, col_group, c ,w, align );
+
+ int W = w;
+ if ( listView() && !listView()->allColumnsShowFocus() )
+ W = width( p->fontMetrics(), listView(), c );
+
+ QCheckListItem::paintCell( p, col_group, c, W, align );
+}
+
int OB_CheckListItem::RTTI()
{
return OB_ListItem::RTTI() + 1;