⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kfiledetaillist.cpp

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 CPP
字号:
// -*- c++ -*-/* This file is part of the KDE libraries    Copyright (C) 1998 Richard Moore <rich@kde.org>                  1998 Stephan Kulow <coolo@kde.org>                  1998 Daniel Grana <grana@ie.iwi.unibe.ch>    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    Library General Public License for more details.    You should have received a copy of the GNU Library General Public License    along with this library; see the file COPYING.LIB.  If not, write to    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,    Boston, MA 02111-1307, USA.*/#include "kdir.h"#include "kfiledetaillist.h"#include "qkeycode.h"#include <kapp.h>KFileDetailList::KFileDetailList(bool s, QDir::SortSpec sorting,				 QWidget *parent, const char *name)    : KTabListBox(parent, name, 7), KFileInfoContents(s,sorting){    QWidget::setFocusPolicy(QWidget::StrongFocus);    setSeparator('\t');    setColumn(0, "", file_pixmap->width() + 10, KTabListBox::PixmapColumn);    QFontMetrics fm = fontMetrics();    QString text = i18n("Name");    setColumn(1, text, QMAX(fm.width(text + "_"), 150));    text = i18n("Size");    setColumn(2, text, QMAX(fm.width(text + "_"), 50));    text = i18n("Permissions");    setColumn(3, text, QMAX(fm.width(text + "_"), 80));    text = i18n("Date");    int _width = QMAX(fm.width(text + "_"), 50);    setColumn(4, text, QMAX(_width, fm.width(KFileInfo::dateTime(0) + "_")));    text = i18n("Owner");    setColumn(5, text, QMAX(fm.width(text + "_"), 70));    text = i18n("Group");    setColumn(6, text, QMAX(fm.width(text + "_"), 70));    dict().insert("file", file_pixmap);    dict().insert("l_file", locked_file);    dict().insert("folder", folder_pixmap);    dict().insert("l_folder", locked_folder);    setSortMode(Switching);    //setSorting(QDir::Name);    connect(this,SIGNAL(selected(int,int )), SLOT(selected(int)));    connect(this, SIGNAL(highlighted(int,int)), SLOT(highlighted(int)));    connect(this, SIGNAL(headerClicked(int)), SLOT(reorderFiles(int)));}void KFileDetailList::repaint(bool){    KTabListBox::repaint();}void KFileDetailList::keyPressEvent( QKeyEvent *e){    int oldRow = currentItem();    int edge;    int numVisible = lastRowVisible() - topCell();    switch( e->key() ) {    case Key_Up:	if( oldRow > 0 ) {	    KTabListBox::setCurrentItem(oldRow-1);	    edge = topItem();	    if ( currentItem() < edge )		setTopItem( edge - 1 );	}	break;    case Key_Down:	if( oldRow < numRows()-1 ) {	    KTabListBox::setCurrentItem(oldRow+1);	    edge = lastRowVisible();	    if ( currentItem() >= edge )		setTopItem( topCell() + 1 );	}	break;    case Key_Home:      highlightItem( 0 );      break;    case Key_End:      edge = KTabListBox::count() -1;      if ( edge >= 0 )	highlightItem( edge );      break;    case Key_Enter:    case Key_Return:	select( currentItem() );	break;    case Key_PageUp:	if ( oldRow > 0 ) {          if ( oldRow >= numVisible ) {              KTabListBox::setCurrentItem(oldRow - numVisible);              edge = topCell() - numVisible;              if ( currentItem() - edge >= numVisible )                  edge++;              if ( edge >= 0)                  setTopItem(edge);              else                  setTopItem(0);          } else {              KTabListBox::setCurrentItem(0);              setTopItem(0);          }        }	break;    case Key_PageDown:	if ( oldRow < numRows()-1 ) {          if ( oldRow < numRows()-numVisible-1 ) {              KTabListBox::setCurrentItem(oldRow + numVisible);              edge = lastRowVisible();              if ( currentItem()+numVisible-1 >=  edge )                  setTopItem( topCell() + numVisible );              else                  setTopItem( numRows() - numVisible );          } else {              KTabListBox::setCurrentItem(numRows()-1);              setTopItem( numRows() - numVisible );          }        }	break;    default:	e->ignore();	return;    }}void KFileDetailList::focusInEvent ( QFocusEvent *){    if (currentItem() < 0) {	KTabListBox::setCurrentItem(topItem());    }    else {        markItem( currentItem() );    }}KFileDetailList::~KFileDetailList(){}void KFileDetailList::setAutoUpdate(bool f){    KTabListBox::setAutoUpdate(f);}void KFileDetailList::highlightItem(unsigned int i){    KTabListBox::setCurrentItem(i);    unsigned j = (KTabListBox::lastRowVisible()-KTabListBox::topItem())/2;    j = (j>i) ? 0 : (i-j);    KTabListBox::setTopItem( j );}void KFileDetailList::clearView(){    KTabListBox::clear();}void KFileDetailList::reorderFiles(int inColumn){    QDir::SortSpec new_sort;    // QDir::SortSpec oldFlags = sorting() & (~QDir::SortByMask);    switch ( inColumn ) {    case 1:	new_sort = QDir::Name;	break;    case 2:	new_sort = QDir::Size;	break;    case 4:	new_sort = QDir::Time;	break;    default:	return;    }    setSorting(new_sort);}bool KFileDetailList::insertItem(const KFileInfo *i, int index){    const char *type;    if (i->isDir())	if (i->isReadable())	    type = "folder";	else	    type = "l_folder";    else	if (i->isReadable())	    type = "file";	else	    type = "l_file";    QString item;    item.sprintf("%s\t%s\t%u\t%s\t%s\t%s\t%s",                 type,                 i->fileName(),                 i->size(),                 i->access(),                 i->date(),                 i->owner(),                 i->group());    KTabListBox::insertItem(item, index);    // TODO: find out, if a repaint is really necessary    return true;}void KFileDetailList::selected(int row){    select(row);}void KFileDetailList::highlighted(int row){    highlight(row);}#include "kfiledetaillist.moc"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -