1 /****************************************************************************
5 Copyright (C) 1999-2002 Lubos Lunak <l.lunak@kde.org>
7 Distributed under the terms of the GNU General Public License version 2.
9 ****************************************************************************/
11 #define _KHLISTVIEW_CPP_
13 #include "khlistview.h"
21 KHListView::KHListView( QWidget
* parent_P
)
22 : K3ListView( parent_P
), saved_current_item( NULL
),
23 in_clear( false ), ignore( false ), force_select( false )
25 insert_select_timer
.setSingleShot( true );
27 connect( this, SIGNAL( selectionChanged( Q3ListViewItem
* )),
28 SLOT( slot_selection_changed( Q3ListViewItem
* )));
29 connect( this, SIGNAL( currentChanged( Q3ListViewItem
* )),
30 SLOT( slot_current_changed( Q3ListViewItem
* )));
32 connect( this, SIGNAL( selectionChanged()),
33 SLOT( slot_selection_changed()));
34 connect( &insert_select_timer
, SIGNAL( timeout()),
35 SLOT( slot_insert_select()));
38 void KHListView::slot_selection_changed()
42 if( saved_current_item
== NULL
)
43 slot_selection_changed( NULL
);
44 else if( !saved_current_item
->isSelected()) // no way
45 setSelected( saved_current_item
, true );
48 void KHListView::slot_selection_changed( Q3ListViewItem
* item_P
)
52 if( item_P
== saved_current_item
)
54 saved_current_item
= item_P
;
55 setCurrentItem( saved_current_item
);
56 emit
current_changed( saved_current_item
);
59 void KHListView::slot_current_changed( Q3ListViewItem
* item_P
)
63 insert_select_timer
.stop();
64 if( item_P
== saved_current_item
)
66 saved_current_item
= item_P
;
67 setSelected( saved_current_item
, true );
68 emit
current_changed( saved_current_item
);
71 void KHListView::clear()
76 slot_selection_changed( NULL
);
79 void KHListView::insertItem( Q3ListViewItem
* item_P
)
83 set
= childCount() == 0;
84 K3ListView::insertItem( item_P
);
85 if( set
&& force_select
)
87 bool block
= signalsBlocked();
89 // SELI tohle spis jen blokovat sebe?
90 setCurrentItem( item_P
);
91 blockSignals( block
);
92 insert_select_timer
.start( 0 );
96 void KHListView::clearSelection()
98 K3ListView::clearSelection();
99 slot_current_changed( currentItem());
102 // items are often inserted using the QListViewItem constructor,
103 // which means that a derived class are not yet fully created
104 void KHListView::slot_insert_select()
108 slot_current_changed( currentItem());
111 void KHListView::contentsDropEvent( QDropEvent
* e
)
113 bool save_ignore
= ignore
;
115 K3ListView::contentsDropEvent( e
);
116 ignore
= save_ignore
;
119 } // namespace KHotKeys
121 #include "khlistview.moc"