void DolphinView::slotChangeNameFilter(const QString& nameFilter) { // The name filter of KDirLister does a 'hard' filtering, which // means that only the items are shown where the names match // exactly the filter. This is non-transparent for the user, which // just wants to have a 'soft' filtering: does the name contain // the filter string? QString adjustedFilter(nameFilter); adjustedFilter.insert(0, '*'); adjustedFilter.append('*'); m_dirLister->setNameFilter(adjustedFilter); m_dirLister->emitChanges(); // TODO: this is a workaround for QIconView: the item position // stay as they are by filtering, only an inserting of an item // results to an automatic adjusting of the item position. In Qt4/KDE4 // this workaround should get obsolete due to Interview. KFileView* view = fileView(); if (view == m_iconsView) { KFileItem* first = view->firstFileItem(); if (first != 0) { view->removeItem(first); view->insertItem(first); } } }
void DolphinView::slotCompleted() { m_refreshing = true; KFileView* view = fileView(); view->clearView(); // TODO: in Qt4 the code should get a lot // simpler and nicer due to Interview... if (m_iconsView != 0) { m_iconsView->beginItemUpdates(); } if (m_detailsView != 0) { m_detailsView->beginItemUpdates(); } if (m_showProgress) { m_statusBar->setProgressText(QString::null); m_statusBar->setProgress(100); m_showProgress = false; } KFileItemList items(m_dirLister->items()); KFileItemListIterator it(items); m_fileCount = 0; m_folderCount = 0; KFileItem* item = 0; while ((item = it.current()) != 0) { view->insertItem(item); if (item->isDir()) { ++m_folderCount; } else { ++m_fileCount; } ++it; } updateStatusBar(); if (m_iconsView != 0) { // Prevent a flickering of the icon view widget by giving a small // timeslot to swallow asynchronous update events. m_iconsView->setUpdatesEnabled(false); QTimer::singleShot(10, this, SLOT(slotDelayedUpdate())); } if (m_detailsView != 0) { m_detailsView->endItemUpdates(); m_refreshing = false; } }