27 #include "kiconviewsearchline.h"
29 #include <tqiconview.h>
34 #define DEFAULT_CASESENSITIVE false
36 typedef TQValueList <TQIconViewItem *> QIconViewItemList;
38 class KIconViewSearchLine::KIconViewSearchLinePrivate
41 KIconViewSearchLinePrivate() :
44 activeSearch( false ),
45 hiddenListChanged( 0 ),
46 queuedSearches( 0 ) {}
53 int hiddenListChanged;
54 QIconViewItemList hiddenItems;
84 return d->caseSensitive;
98 int original_hiddenListChanged;
103 TQString search = d->search = s.isNull() ? text() : s;
104 TQIconViewItem *currentItem = d->iconView->currentItem();
106 TQIconViewItem *item = NULL;
109 TQIconViewItem *i = d->iconView->firstItem();
110 while ( i != NULL ) {
116 if ( item == currentItem )
122 original_count = d->hiddenItems.count();
123 original_hiddenListChanged = d->hiddenListChanged;
124 for (QIconViewItemList::iterator it=d->hiddenItems.begin();it!=d->hiddenItems.end();++it) {
126 if ((original_count != d->hiddenItems.count()) || (original_hiddenListChanged != d->hiddenListChanged)) {
129 original_count = d->hiddenItems.count();
130 original_hiddenListChanged = d->hiddenListChanged;
131 it=d->hiddenItems.begin();
140 if ( currentItem != NULL )
141 d->iconView->ensureItemVisible( currentItem );
147 TQIconViewItem *item = NULL;
148 QIconViewItemList::iterator it = d->hiddenItems.begin();
149 while ( it != d->hiddenItems.end() )
155 if ( d->iconView != NULL )
161 if ( ! d->hiddenItems.isEmpty() )
162 kdDebug() << __FILE__ <<
":" << __LINE__ <<
163 "hiddenItems is not empty as it should be. " <<
164 d->hiddenItems.count() <<
" items are still there.\n" <<
endl;
167 d->queuedSearches = 0;
173 TQIconViewItem *item = NULL;
174 QIconViewItemList::iterator it = d->hiddenItems.begin();
175 while ( it != d->hiddenItems.end() )
181 if (item->text() == filename) {
182 if (d->iconView != NULL)
193 d->caseSensitive = cs;
198 if ( d->iconView != NULL )
199 disconnect( d->iconView, TQT_SIGNAL( destroyed() ),
200 this, TQT_SLOT( iconViewDeleted() ) );
206 connect( d->iconView, TQT_SIGNAL( destroyed() ),
207 this, TQT_SLOT( iconViewDeleted() ) );
218 const TQString &s )
const
226 TQString itemtext = item->text();
233 d =
new KIconViewSearchLinePrivate;
237 connect(
this, TQT_SIGNAL( textChanged(
const TQString & ) ),
238 this, TQT_SLOT(
queueSearch(
const TQString & ) ) );
240 if ( iconView != NULL )
242 connect( iconView, TQT_SIGNAL( destroyed() ),
243 this, TQT_SLOT( iconViewDeleted() ) );
252 if ( ( item == NULL ) || ( d->iconView == NULL ) )
255 d->hiddenListChanged++;
256 d->hiddenItems.append( item );
257 d->iconView->takeItem( item );
262 if ( d->iconView == NULL )
264 kdDebug() << __FILE__ <<
":" << __LINE__ <<
265 "showItem() could not be called while there's no iconView set." <<
269 d->hiddenListChanged++;
270 d->iconView->insertItem( item );
271 d->hiddenItems.remove( item );
272 item->setText(item->text());
289 if ( d->queuedSearches <= 0 )
292 d->queuedSearches = 0;
302 void KIconViewSearchLine::iconViewDeleted()
308 #include "kiconviewsearchline.moc"