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

📄 dirview.cpp.bak

📁 这是一个自己开发的键盘驱动代码
💻 BAK
字号:
/****************************************************************************** $Id: qt/dirview.cpp   3.3.6   edited Aug 31 2005 $**** Copyright (C) 1992-2005 Trolltech AS.  All rights reserved.**** This file is part of an example program for Qt.  This example** program may be used, distributed and modified without limitation.*******************************************************************************/#include "dirview.h"#include <qdir.h>#include <qfile.h>#include <qfileinfo.h>#include <qpixmap.h>#include <qimage.h>#include <qstringlist.h>#include <qapplication.h>#include <qheader.h>#include <qmessagebox.h>#include <stdlib.h>static const char* folder_closed_xpm[]={    "16 16 9 1",    "g c #808080",    "b c #c0c000",    "e c #c0c0c0",    "# c #000000",    "c c #ffff00",    ". c None",    "a c #585858",    "f c #a0a0a4",    "d c #ffffff",    "..###...........",    ".#abc##.........",    ".#daabc#####....",    ".#ddeaabbccc#...",    ".#dedeeabbbba...",    ".#edeeeeaaaab#..",    ".#deeeeeeefe#ba.",    ".#eeeeeeefef#ba.",    ".#eeeeeefeff#ba.",    ".#eeeeefefff#ba.",    ".##geefeffff#ba.",    "...##gefffff#ba.",    ".....##fffff#ba.",    ".......##fff#b##",    ".........##f#b##",    "...........####."};static const char* folder_open_xpm[]={    "16 16 11 1",    "# c #000000",    "g c #c0c0c0",    "e c #303030",    "a c #ffa858",    "b c #808080",    "d c #a0a0a4",    "f c #585858",    "c c #ffdca8",    "h c #dcdcdc",    "i c #ffffff",    ". c None",    "....###.........",    "....#ab##.......",    "....#acab####...",    "###.#acccccca#..",    "#ddefaaaccccca#.",    "#bdddbaaaacccab#",    ".eddddbbaaaacab#",    ".#bddggdbbaaaab#",    "..edgdggggbbaab#",    "..#bgggghghdaab#",    "...ebhggghicfab#",    "....#edhhiiidab#",    "......#egiiicfb#",    "........#egiibb#",    "..........#egib#",    "............#ee#"};static const char * folder_locked[]={    "16 16 10 1",    "h c #808080",    "b c #ffa858",    "f c #c0c0c0",    "e c #c05800",    "# c #000000",    "c c #ffdca8",    ". c None",    "a c #585858",    "g c #a0a0a4",    "d c #ffffff",    "..#a#...........",    ".#abc####.......",    ".#daa#eee#......",    ".#ddf#e##b#.....",    ".#dfd#e#bcb##...",    ".#fdccc#daaab#..",    ".#dfbbbccgfg#ba.",    ".#ffb#ebbfgg#ba.",    ".#ffbbe#bggg#ba.",    ".#fffbbebggg#ba.",    ".##hf#ebbggg#ba.",    "...###e#gggg#ba.",    ".....#e#gggg#ba.",    "......###ggg#b##",    ".........##g#b##",    "...........####."};static const char * pix_file []={    "16 16 7 1",    "# c #000000",    "b c #ffffff",    "e c #000000",    "d c #404000",    "c c #c0c000",    "a c #ffffc0",    ". c None",    "................",    ".........#......",    "......#.#a##....",    ".....#b#bbba##..",    "....#b#bbbabbb#.",    "...#b#bba##bb#..",    "..#b#abb#bb##...",    ".#a#aab#bbbab##.",    "#a#aaa#bcbbbbbb#",    "#ccdc#bcbbcbbb#.",    ".##c#bcbbcabb#..",    "...#acbacbbbe...",    "..#aaaacaba#....",    "...##aaaaa#.....",    ".....##aa#......",    ".......##......."};QPixmap *folderLocked = 0;QPixmap *folderClosed = 0;QPixmap *folderOpen = 0;QPixmap *fileNormal = 0;/***************************************************************************** * * Class Directory * *****************************************************************************/Directory::Directory( Directory * parent, const QString& filename )    : QListViewItem( parent ), f(filename),      showDirsOnly( parent->showDirsOnly ),      pix( 0 ){    p = parent;    readable = QDir( fullName() ).isReadable();    if ( !readable )	setPixmap( folderLocked );    else	setPixmap( folderClosed );}Directory::Directory( QListView * parent, const QString& filename )    : QListViewItem( parent ), f(filename),      showDirsOnly( ( (DirectoryView*)parent )->showDirsOnly() ),      pix( 0 ){    p = 0;    readable = QDir( fullName() ).isReadable();}void Directory::setPixmap( QPixmap *px ){    pix = px;    setup();    widthChanged( 0 );    invalidateHeight();    repaint();}const QPixmap *Directory::pixmap( int i ) const{    if ( i )	return 0;    return pix;}void Directory::setOpen( bool o ){    if ( o ) setPixmap( folderOpen );    else setPixmap( folderClosed );    if ( o && !childCount() ) {			QString s( fullName() );			QDir thisDir( s );			if ( !thisDir.isReadable() ) {	    	readable = FALSE;	    	setExpandable( FALSE );	    	return;			}			listView()->setUpdatesEnabled( FALSE );			const QFileInfoList * files = thisDir.entryInfoList();			if ( files ) {	    	QFileInfoListIterator it( *files );	    	QFileInfo * fi;	    	while( (fi=it.current()) != 0 ) {					++it;					if ( fi->fileName() == "." || fi->fileName() == ".." )		    		; // nothing					else if ( fi->isSymLink() && !showDirsOnly ) {		    		FileItem *item = new FileItem( this, fi->fileName(),						     "Symbolic Link" );		    		item->setPixmap( fileNormal );					}					else if ( fi->isDir() ) (void)new Directory( this, fi->fileName() );					else if ( !showDirsOnly ) {							for ( QStringList::Iterator its = ( (DirectoryView*)listView() )->format.begin(); its != ( (DirectoryView*)listView() )->format.end(); its++ ) {								if ( *its == "JPEG") *its = "JPG";								if ( ( fi->extension( false ) ).upper() == *its ) {		    					FileItem *item = new FileItem( this, fi->fileName(),					  				fi->isFile()?"File":"Special" );		    					item->setPixmap( fileNormal );		    					break;		    				}		    			}					}	    	}			}			listView()->setUpdatesEnabled( TRUE );    }    QListViewItem::setOpen( o );}void Directory::setup(){    setExpandable( TRUE );    QListViewItem::setup();}QString Directory::fullName(){    QString s;    if ( p ) {	s = p->fullName();	s.append( f.name() );	s.append( "/" );    } else {	s = f.name();    }    return s;}QString Directory::text( int column ) const{    if ( column == 0 )	return f.name();    else if ( readable )	return "Directory";    else	return "Unreadable Directory";}/***************************************************************************** * * Class DirectoryView * *****************************************************************************/DirectoryView::DirectoryView( QWidget *parent, const char *name, bool sdo, const QStringList fmt )    : QListView( parent, name ), format( fmt ), dirsOnly( sdo ){    if ( !folderLocked ) {			folderLocked = new QPixmap( folder_locked );			folderClosed = new QPixmap( folder_closed_xpm );			folderOpen = new QPixmap( folder_open_xpm );			fileNormal = new QPixmap( pix_file );    }    connect( this, SIGNAL( doubleClicked( QListViewItem * ) ),	     this, SLOT( slotFolderSelected( QListViewItem * ) ) );    connect( this, SIGNAL( returnPressed( QListViewItem * ) ),	     this, SLOT( slotFolderSelected( QListViewItem * ) ) );        header()->hide();}void DirectoryView::slotFolderSelected( QListViewItem *i ){    if ( !i )			return;				Directory *dir = (Directory*)i;		QString fp = ( (DirectoryView*)i->listView() )->fullPath( i );		QString fn = i->text( 0 );				if ( dir->text(1) == "Directory" ) emit folderSelected( dir->fullName() );    else emit fileSelected( fp );}QString DirectoryView::fullPath(QListViewItem* item){    QString fullpath = item->text(0);    while ( (item=item->parent()) ) {	if ( item->parent() )	    fullpath = item->text(0) + "/" + fullpath;	else	    fullpath = item->text(0) + fullpath;    }#ifdef Q_WS_WIN	if (fullpath.length() > 2 && fullpath[1] != ':') {		QDir dir(fullpath);		fullpath = dir.currentDirPath().left(2) + fullpath;	}#endif	    return fullpath;}void DirectoryView::setDir( const QString &s ){    QListViewItemIterator it( this );    ++it;    for ( ; it.current(); ++it ) {	it.current()->setOpen( false );    }    QStringList lst( QStringList::split( "/", s ) );    QListViewItem *item = firstChild();    QStringList::Iterator it2 = lst.begin();    for ( ; it2 != lst.end(); ++it2 ) {			while ( item ) {	  		if ( item->text( 0 ) == *it2 ) {					item->setOpen( true );					break;	  		}	  	item = item->itemBelow();			}    }    if ( item )	setCurrentItem( item );	if ( item->firstChild() )		ensureItemVisible( item->firstChild() );	else ensureItemVisible( item );}void FileItem::setPixmap( QPixmap *p ){    pix = p;    setup();    widthChanged( 0 );    invalidateHeight();    repaint();}const QPixmap *FileItem::pixmap( int i ) const{    if ( i )	return 0;    return pix;}

⌨️ 快捷键说明

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