KFileItem * KCombiView::firstFileItem() const { if ( !right ) return left->firstFileItem(); KFileView *preferredView = focusView( left ); KFileView *otherView = (preferredView == left) ? right : left; KFileItem *item = preferredView->firstFileItem(); if ( !item ) item = otherView->firstFileItem(); return item; }
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); } } }
KFileItem * KCombiView::prevItem( const KFileItem *fileItem ) const { if ( !right ) return left->nextItem( fileItem ); KFileView *preferredView = focusView( left ); KFileView *otherView = (preferredView == left) ? right : left; KFileItem *item = preferredView->prevItem( fileItem ); if ( item ) m_lastViewForPrevItem = preferredView; else { // no item, check other view // when changing from one to another view, we need to continue // with the next view's last item! if ( m_lastViewForPrevItem != otherView ) { fileItem = otherView->firstFileItem(); while ( otherView->nextItem( fileItem ) ) // find the last item fileItem = otherView->nextItem( fileItem ); } item = otherView->prevItem( fileItem ); m_lastViewForPrevItem = otherView; } return item; }