summaryrefslogtreecommitdiffstats
path: root/kpovmodeler/pmtreeviewitem.cpp
blob: 72562f78db70741575449a7540205a73a0998049 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/*
**************************************************************************
                                 description
                             --------------------
    copyright            : (C) 2000-2001 by Andreas Zehender
    email                : zehender@kde.org
**************************************************************************

**************************************************************************
*                                                                        *
*  This program is free software; you can redistribute it and/or modify  *
*  it under the terms of the GNU General Public License as published by  *
*  the Free Software Foundation; either version 2 of the License, or     *
*  (at your option) any later version.                                   *
*                                                                        *
**************************************************************************/


#include "pmtreeviewitem.h"
#include "pmobject.h"
#include <kiconloader.h>

#include "pmtreeview.h"
#include "pmfactory.h"
#include "pmtexturemap.h"

PMTreeViewItem::PMTreeViewItem( PMObject* object, QListView* parent )
      : QListViewItem( parent )
{
   m_pObject = object;
   setDescriptions( );
   initSelection( );
}

PMTreeViewItem::PMTreeViewItem( PMObject* object, QListViewItem* parent )
      : QListViewItem( parent )
{
   m_pObject = object;
   setDescriptions( );
   initSelection( );
}

PMTreeViewItem::PMTreeViewItem( PMObject* object, QListView* parent,
                                QListViewItem* after )
      : QListViewItem( parent, after )
{
   m_pObject = object;
   setDescriptions( );
   initSelection( );
}

PMTreeViewItem::PMTreeViewItem( PMObject* object, QListViewItem* parent,
                   QListViewItem* after )
      : QListViewItem( parent, after )
{
   m_pObject = object;
   setDescriptions( );
   initSelection( );
}

void PMTreeViewItem::setDescriptions( )
{
   QString text;
   setPixmap( 0, SmallIcon( m_pObject->pixmap( ), PMFactory::instance( ) ) );
   
   if( m_pObject->canHaveName( ) )
   {
      text = m_pObject->name( );
      if( text.isEmpty( ) )
         text = m_pObject->description( );      
   }
   else
      text = m_pObject->description( );
   
   if( m_pObject->parent( ) )
   {
      if( m_pObject->parent( )->isA( "TextureMapBase" ) )
      {
         PMTextureMapBase* tm = ( PMTextureMapBase* ) m_pObject->parent( );
         if( m_pObject->type( ) == tm->mapType( ) )
            text = QString( "[%1] " ).arg( tm->mapValue( m_pObject ), 4, 'f', 2 ) + text;
      }
   }
   setText( 0, text );
}

QString PMTreeViewItem::key( int, bool ) const
{
   QString result;
   if( m_pObject->parent( ) )
      result.sprintf( "%06i", m_pObject->parent( )->findChild( m_pObject ) );
   else
      result = "000000";
   return result;
}

void PMTreeViewItem::setSelected( bool select )
{
   bool ws = isSelected( );
   PMTreeView* treeview = ( PMTreeView* ) listView( );

   // ignore selections during a move event
   if( treeview->acceptSelect( ) )
   {
      QListViewItem::setSelected( select );

      if( ws != isSelected( ) )
         treeview->itemSelected( this, isSelected( ) );
   }
}

void PMTreeViewItem::initSelection( )
{
   QListViewItem::setSelected( m_pObject->isSelected( ) );
//   if( m_pObject->isSelected( ) )
//      repaint( );
}