Source Code (Use browser search to find items of interest.)

Class Index

kdelibs'KFileDetailView (./kdelibs/kfile/kfiledetailview.h:59)

class KFileDetailView : public KListView, public KFileView
{
    friend class KSimpleCombiView;
    friend class KDetailCombiView;

    Q_OBJECT

public:
    KFileDetailView(QWidget *parent, const char *name);
    virtual ~KFileDetailView();

    virtual QWidget *widget() { return this; }
    virtual void clearView();
    virtual void setAutoUpdate( bool ) {}

    virtual void setSelectionMode( KFile::SelectionMode sm );

    virtual void updateView( bool );
    virtual void updateView(const KFileViewItem*);

    virtual void setSelected(const KFileViewItem *, bool);
    virtual bool isSelected(const KFileViewItem *i) const;
    virtual void clearSelection();

    virtual void insertItem( KFileViewItem *i );

    // implemented to get noticed about sorting changes (for sortingIndicator)
    void setSorting( QDir::SortSpec );
    void sortReversed();

    void ensureItemVisible( const KFileViewItem * );

protected:
    void setSortIndicator();

    QListViewItem *myLastItem;

private slots:
    void slotSortingChanged( int );
    void selected( QListViewItem *item );
    void highlighted( QListViewItem *item );
    void rightButtonPressed ( QListViewItem *item );

private:
    class KFileDetailViewPrivate;
    KFileDetailViewPrivate *d;
};

kdelibs'KFileDetailView::KFileDetailView() (./kdelibs/kfile/kfiledetailview.cpp:39)

KFileDetailView::KFileDetailView(QWidget *parent, const char *name)
    : KListView(parent, name), KFileView()
{
    KListView::setSorting( -1 );
    setViewName( i18n("Detailed View") );
    myLastItem = 0L;

    addColumn( i18n( "Name" ) );
    addColumn( i18n( "Size" ) );
    addColumn( i18n( "Permissions" ) );
    addColumn( i18n( "Date" ) );
    addColumn( i18n( "Owner" ) );
    addColumn( i18n( "Group" ) );
    setShowSortIndicator( TRUE );
    setAllColumnsShowFocus( TRUE );

    QHeader *h = header();
    h->setClickEnabled( false, COL_PERM );
    h->setClickEnabled( false, COL_OWNER);
    h->setClickEnabled( false, COL_GROUP );
    connect( h, SIGNAL( sectionClicked(int)), SLOT(slotSortingChanged(int) ));


    connect( this, SIGNAL( executed(QListViewItem *) ),
	     SLOT( selected( QListViewItem *) ) );
    connect( this, SIGNAL( returnPressed(QListViewItem *) ),
	     SLOT( selected( QListViewItem *) ) );
    connect( this, SIGNAL( currentChanged( QListViewItem *) ),
	     this, SLOT( highlighted( QListViewItem *)	) );
    connect( this, SIGNAL(rightButtonPressed ( QListViewItem *, const QPoint &, int )),
	     this, SLOT( rightButtonPressed ( QListViewItem * )));

    switch ( KFileView::selectionMode() ) {
    case KFile::Multi:
	QListView::setSelectionMode( QListView::Multi );
	break;
    case KFile::Extended:
	QListView::setSelectionMode( QListView::Extended );
	break;
    case KFile::NoSelection:
	QListView::setSelectionMode( QListView::NoSelection );
	break;
    default: // fall through
    case KFile::Single:
	QListView::setSelectionMode( QListView::Single );
	break;
    }

    setSorting( sorting() );
}


kdelibs'KFileDetailView::~KFileDetailView() (./kdelibs/kfile/kfiledetailview.cpp:90)

KFileDetailView::~KFileDetailView()
{
}


kdelibs'KFileDetailView::setSelected() (./kdelibs/kfile/kfiledetailview.cpp:94)

void KFileDetailView::setSelected( const KFileViewItem *info, bool enable )
{
    if ( !info )
	return;

    // we can only hope that this casts works
    KFileListViewItem *item = (KFileListViewItem*)info->viewItem( this );

    if ( item && item != currentItem() ) {
        KListView::setCurrentItem( item );
	KListView::ensureItemVisible( item );
	KListView::setSelected( item, enable );
    }
}


kdelibs'KFileDetailView::clearSelection() (./kdelibs/kfile/kfiledetailview.cpp:109)

void KFileDetailView::clearSelection()
{
    KListView::clearSelection();
}


kdelibs'KFileDetailView::rightButtonPressed() (./kdelibs/kfile/kfiledetailview.cpp:114)

void KFileDetailView::rightButtonPressed ( QListViewItem *item )
{
    if ( !item ) {
	activateMenu( 0 );
	return;
    }
    KFileListViewItem *i = (KFileListViewItem*)item;
    activateMenu( i->fileInfo() );
}


kdelibs'KFileDetailView::clearView() (./kdelibs/kfile/kfiledetailview.cpp:124)

void KFileDetailView::clearView()
{
    KListView::clear();
    myLastItem = 0L;
}


kdelibs'KFileDetailView::insertItem() (./kdelibs/kfile/kfiledetailview.cpp:130)

void KFileDetailView::insertItem( KFileViewItem *i )
{
    KFileListViewItem *item = new KFileListViewItem( (QListView*) this,
						     i->name(), i->pixmap(), i,
						     myLastItem );

    item->setText( 1, QString::number( i->size() ) );
    item->setText( 2, i->access() );
    item->setText( 3, i->date() );
    item->setText( 4, i->owner() );
    item->setText( 5, i->group() );
    i->setViewItem( this, item );

    myLastItem = item;
}


kdelibs'KFileDetailView::selected() (./kdelibs/kfile/kfiledetailview.cpp:146)

void KFileDetailView::selected( QListViewItem *item )
{
    if ( !item )
	return;
    const KFileViewItem *fi = ( (KFileListViewItem*)item )->fileInfo();
    if ( fi ) {
	select( const_cast<KFileViewItem*>( fi ) );
	// ContentsPos( 0, 0 ); // scroll to top left
    }
}


kdelibs'KFileDetailView::highlighted() (./kdelibs/kfile/kfiledetailview.cpp:157)

void KFileDetailView::highlighted( QListViewItem *item )
{
    if ( !item )
	return;
    const KFileViewItem *fi = ( (KFileListViewItem*)item )->fileInfo();
    if ( fi )
	highlight( const_cast<KFileViewItem*>( fi ) );
}


kdelibs'KFileDetailView::setSelectionMode() (./kdelibs/kfile/kfiledetailview.cpp:166)

void KFileDetailView::setSelectionMode( KFile::SelectionMode sm )
{
    KFileView::setSelectionMode( sm );

    switch ( KFileView::selectionMode() ) {
    case KFile::Multi:
	QListView::setSelectionMode( QListView::Multi );
	break;
    case KFile::Extended:
	QListView::setSelectionMode( QListView::Extended );
	break;
    case KFile::NoSelection:
	QListView::setSelectionMode( QListView::NoSelection );
	break;
    default: // fall through
    case KFile::Single:
	QListView::setSelectionMode( QListView::Single );
	break;
    }
}


kdelibs'KFileDetailView::isSelected() (./kdelibs/kfile/kfiledetailview.cpp:187)

bool KFileDetailView::isSelected( const KFileViewItem *i ) const
{
    if ( !i )
	return false;
    KFileListViewItem *item = (KFileListViewItem*) i->viewItem( this );
    return (item && item->isSelected());
}



kdelibs'KFileDetailView::updateView() (./kdelibs/kfile/kfiledetailview.cpp:196)

void KFileDetailView::updateView( bool b )
{
    if ( !b )
	return;

    // hack to make it not flicker
    qApp->processEvents();
    viewport()->setUpdatesEnabled( false );

    QListViewItemIterator it( (QListView*)this );
    for ( ; it.current(); ++it ) {
	KFileListViewItem *item=static_cast<KFileListViewItem *>(it.current());
	item->setPixmap( 0, const_cast<KFileViewItem*>( item->fileInfo() )->pixmap() );
    }

    qApp->processEvents();
    viewport()->setUpdatesEnabled( true );
    viewport()->repaint();
}


kdelibs'KFileDetailView::updateView() (./kdelibs/kfile/kfiledetailview.cpp:216)

void KFileDetailView::updateView( const KFileViewItem *i )
{
    if ( !i )
	return;

    // hack to make it not flicker
    qApp->processEvents();
    viewport()->setUpdatesEnabled( false );

    KFileListViewItem *item = (KFileListViewItem*) i->viewItem( this );
    if ( !item )
	return;

    item->setPixmap( 0, i->pixmap() );
    item->setText( 2, i->access() );

    qApp->processEvents();
    viewport()->setUpdatesEnabled( true );
    item->repaint(); // only repaints if visible
}



kdelibs'KFileDetailView::slotSortingChanged() (./kdelibs/kfile/kfiledetailview.cpp:238)

void KFileDetailView::slotSortingChanged( int col )
{
    KListView::setSorting( -1 );
    QDir::SortSpec sort = sorting();
    int sortSpec = -1;
    bool reversed = false;

    switch( col ) {
    case COL_NAME:
	if ( (sort & QDir::Size) == 0 && (sort & QDir::Time) == 0 )
	    reversed = true;
	else
	    sortSpec = sort & ~QDir::SortByMask | QDir::Name;
	break;
    case COL_SIZE:
	if ( (sort & QDir::Size) == QDir::Size )
	    reversed = true;
	else
	    sortSpec = sort & ~QDir::SortByMask | QDir::Size;
	break;
    case COL_DATE:
	if ( (sort & QDir::Time) == QDir::Time )
	    reversed = true;
	else
	    sortSpec = sort & ~QDir::SortByMask | QDir::Time;
	break;
    default: // FIXME sort by group.... only this view can do this for now
	break;
    }

    if ( sortSpec != -1 )
	KFileView::setSorting( static_cast<QDir::SortSpec>( sortSpec ) );

    if ( reversed )
	sortReversed();
    else
	header()->setSortIndicator( col, !isReversed() );
}



kdelibs'KFileDetailView::setSorting() (./kdelibs/kfile/kfiledetailview.cpp:278)

void KFileDetailView::setSorting( QDir::SortSpec spec )
{
    KFileView::setSorting( spec );
    setSortIndicator();
}



kdelibs'KFileDetailView::sortReversed() (./kdelibs/kfile/kfiledetailview.cpp:285)

void KFileDetailView::sortReversed()
{
    KFileView::sortReversed();
    setSortIndicator();

}



kdelibs'KFileDetailView::setSortIndicator() (./kdelibs/kfile/kfiledetailview.cpp:293)

void KFileDetailView::setSortIndicator()
{
    QDir::SortSpec spec = sorting();
    int col = -1;

    if ( (spec & QDir::Size) == QDir::Size )
	col = COL_SIZE;
    else if (  (spec & QDir::Time) == QDir::Time )
	col = COL_DATE;
    else if ( (spec & QDir::Name) == QDir::Name )
	col = COL_NAME;

    header()->setSortIndicator( col, !isReversed() );
}



kdelibs'KFileDetailView::ensureItemVisible() (./kdelibs/kfile/kfiledetailview.cpp:309)

void KFileDetailView::ensureItemVisible( const KFileViewItem *i )
{
    if ( !i )
	return;
    KFileListViewItem *item = (KFileListViewItem*) i->viewItem( this );
    if ( item )
	KListView::ensureItemVisible( item );
}