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 );
}