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

📄 qfileiconview.cpp.bak

📁 这是一个自己开发的键盘驱动代码
💻 BAK
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** $Id: qt/qfileiconview.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 "qfileiconview.h"#include <qpainter.h>#include <qstringlist.h>#include <qpixmap.h>#include <qmime.h>#include <qstrlist.h>#include <qdragobject.h>#include <qmessagebox.h>#include <qevent.h>#include <qpopupmenu.h>#include <qcursor.h>#include <qapplication.h>#include <qwmatrix.h>#include <qevent.h>#include <qtextcodec.h>#include <stdlib.h>static const char * file_icon[]={    "32 32 17 1",    "# c #000000",    "a c #ffffff",    "j c #808080",    "n c #a0a0a4",    "g c #c0c0c0",    "m c #004000",    "o c #000000",    "l c #004040",    "k c #404000",    "i c #c0c000",    "h c #ffff00",    "b c #ffffc0",    "e c #ff8000",    "f c #c05800",    "c c #ffa858",    "d c #ffdca8",    ". c None",    "................................",    "................................",    "................................",    "................................",    ".............#....###...........",    "...###......#a##.#aba##.........",    "..#cdb#....#aaaa#aaaaaa##.......",    "..#ecdb#..#aaaa#aaaaaaaba##.....",    "..#fecdb##aaaa#aaaaaaaaaaab##...",    "...#fecdb#aaa#aaaaaaabaabaaaa##.",    "....#fecdb#a#baaaaa#baaaaaabaaa#",    ".....#fecdb#aaaaab#a##baaaaaaa#.",    ".....##fecdb#bbba#aaaa##baaab#..",    "....#bb#fecdb#ba#aaaaaaa##aa#...",    "...#bbbb#fecdb##aaabaaaaaa##....",    "..#bbbb#b#fecdb#aaaaaaabaaaa##..",    ".#bbbb#bbb#fecdg#aaaaaaaaaaaba#.",    "#hhbb#bbbbb#fegg#iiaaaaaaaaaaaa#",    "#jhhhklibbbk#ggj#aaiiaaaaaaaaa#j",    ".#mjhhhkmikab####aaabiiaaaaaa#j.",    "...##jhhhmaaibbaaiibaaaiiaab#n..",    ".....##j#baaaiiabaaiibaabaa#n...",    "......##baibaabiibaaaiiabb#j....",    "......#bbbbiiaabbiiaaaaabon.....",    ".....#bbbbbbbiiabbaiiaab#n......",    ".....#jbbbbbbbbiibaabba#n.......",    "......##jbbbbbbbbiiaabmj........",    "........##jbbbbbbbbbb#j.........",    "..........##nbbbbbbbmj..........",    "............##jbbbb#j...........",    "..............#mjj#n............",    "................##n............."};static const char * folder_icon[]={    "32 32 11 1",    "# c #000000",    "b c #c0c000",    "d c #585858",    "a c #ffff00",    "i c #400000",    "h c #a0a0a4",    "e c #000000",    "c c #ffffff",    "f c #303030",    "g c #c0c0c0",    ". c None",    "...###..........................",    "...#aa##........................",    ".###baaa##......................",    ".#cde#baaa##....................",    ".#cccdeebaaa##..##f.............",    ".#cccccdeebaaa##aaa##...........",    ".#cccccccdeebaaaaaaaa##.........",    ".#cccccccccdeebababaaa#.........",    ".#cccccgcgghhebbbbbbbaa#........",    ".#ccccccgcgggdebbbbbbba#........",    ".#cccgcgcgcgghdeebiebbba#.......",    ".#ccccgcggggggghdeddeeba#.......",    ".#cgcgcgcggggggggghghdebb#......",    ".#ccgcggggggggghghghghd#b#......",    ".#cgcgcggggggggghghghhd#b#......",    ".#gcggggggggghghghhhhhd#b#......",    ".#cgcggggggggghghghhhhd#b#......",    ".#ggggggggghghghhhhhhhdib#......",    ".#gggggggggghghghhhhhhd#b#......",    ".#hhggggghghghhhhhhhhhd#b#......",    ".#ddhhgggghghghhhhhhhhd#b#......",    "..##ddhhghghhhhhhhhhhhdeb#......",    "....##ddhhhghhhhhhhhhhd#b#......",    "......##ddhhhhhhhhhhhhd#b#......",    "........##ddhhhhhhhhhhd#b#......",    "..........##ddhhhhhhhhd#b#......",    "............##ddhhhhhhd#b###....",    "..............##ddhhhhd#b#####..",    "................##ddhhd#b######.",    "..................##dddeb#####..",    "....................##d#b###....",    "......................####......"};static const char * link_icon[]={    "32 32 12 1",    "# c #000000",    "h c #a0a0a4",    "b c #c00000",    "d c #585858",    "i c #400000",    "c c #ffffff",    "e c #000000",    "g c #c0c0c0",    "a c #ff0000",    "f c #303030",    "n c white",    ". c None",    "...###..........................",    "...#aa##........................",    ".###baaa##......................",    ".#cde#baaa##....................",    ".#cccdeebaaa##..##f.............",    ".#cccccdeebaaa##aaa##...........",    ".#cccccccdeebaaaaaaaa##.........",    ".#cccccccccdeebababaaa#.........",    ".#cccccgcgghhebbbbbbbaa#........",    ".#ccccccgcgggdebbbbbbba#........",    ".#cccgcgcgcgghdeebiebbba#.......",    ".#ccccgcggggggghdeddeeba#.......",    ".#cgcgcgcggggggggghghdebb#......",    ".#ccgcggggggggghghghghd#b#......",    ".#cgcgcggggggggghghghhd#b#......",    ".#gcggggggggghghghhhhhd#b#......",    ".#cgcggggggggghghghhhhd#b#......",    ".#ggggggggghghghhhhhhhdib#......",    ".#gggggggggghghghhhhhhd#b#......",    ".#hhggggghghghhhhhhhhhd#b#......",    ".#ddhhgggghghghhhhhhhhd#b#......",    "..##ddhhghghhhhhhhhhhhdeb#......",    "############hhhhhhhhhhd#b#......",    "#nnnnnnnnnn#hhhhhhhhhhd#b#......",    "#nnnnnnnnnn#hhhhhhhhhhd#b#......",    "#nn#nn#nnnn#ddhhhhhhhhd#b#......",    "#nn##n##nnn###ddhhhhhhd#b###....",    "#nnn#####nn#..##ddhhhhd#b#####..",    "#nnnnn##nnn#....##ddhhd#b######.",    "#nnnnn#nnnn#......##dddeb#####..",    "#nnnnnnnnnn#........##d#b###....",    "############..........####......"};static const char * folder_locked_icon[]={    "32 32 12 1",    "# c #000000",    "g c #808080",    "h c #c0c0c0",    "f c #c05800",    "c c #ffffff",    "d c #585858",    "b c #ffa858",    "a c #ffdca8",    "e c #000000",    "i c #a0a0a4",    "j c #c0c0c0",    ". c None",    "...###..........................",    "...#aa##........................",    ".###baaa##......................",    ".#cde#baaa##....................",    ".#cccdeeba#######...............",    ".#cccccde##fffff##..............",    ".#cccccc##fffgggg#..............",    ".#ccccccc#ffg####a##............",    ".#ccccchc#ffg#eebbaa##..........",    ".#ccccccc#ffg#ddeebbba##........",    ".#ccchccc#ffg#ihddeebbba##......",    ".#cccccaa#ffg#ihhhddeeba##......",    ".#chchhbbaafg#ihhhihidebb#......",    ".#cchccbbbbaa#ihhihihid#b#......",    ".#chchhbb#bbbaaiihihiid#b#......",    ".#hchhcbb#fbbbafhiiiiid#b#......",    ".#chchhbb#ffgbbfihiiiid#b#......",    ".#hhhhhbb#ffg#bfiiiiiid#b#......",    ".#hhhhhbbaffg#bfiiiiiid#b#......",    ".#iihhhjbbaab#bfiiiiiid#b#......",    ".#ddiihhh#bbbabfiiiiiid#b#......",    "..##ddiih#ffbbbfiiiiiid#b#......",    "....##ddi#ffg#biiiiiiid#b#......",    "......##d#ffg#iiiiiiiid#b#......",    "........##ffg#iiiiiiiid#b#......",    ".........#ffg#iiiiiiiid#b#......",    ".........#ffg#ddiiiiiid#b###....",    ".........##fg###ddiiiid#b#####..",    "...........####.##ddiid#b######.",    "..................##dddeb#####..",    "....................##d#b###....",    "......................####......"};static QPixmap *iconFolderLockedLarge = 0;static QPixmap *iconFolderLarge = 0;static QPixmap *iconFileLarge = 0;static QPixmap *iconLinkLarge = 0;static QPixmap *iconFolderLockedSmall = 0;static QPixmap *iconFolderSmall = 0;static QPixmap *iconFileSmall = 0;static QPixmap *iconLinkSmall = 0;static void cleanup(){    delete iconFolderLockedLarge;    iconFolderLockedLarge = 0;    delete iconFolderLarge;    iconFolderLarge = 0;    delete iconFileLarge;    iconFileLarge = 0;    delete iconLinkLarge;    iconLinkLarge = 0;    delete iconFolderLockedSmall;    iconFolderLockedSmall = 0;    delete iconFolderSmall;    iconFolderSmall = 0;    delete iconFileSmall;    iconFileSmall = 0;    delete iconLinkSmall;    iconLinkSmall = 0;}/***************************************************************************** * * Class QtFileIconDrag * *****************************************************************************/QtFileIconDrag::QtFileIconDrag( QWidget * dragSource, const char* name )    : QIconDrag( dragSource, name ){}const char* QtFileIconDrag::format( int i ) const{    if ( i == 0 )	return "application/x-qiconlist";    else if ( i == 1 )	return "text/uri-list";    else	return 0;}QByteArray QtFileIconDrag::encodedData( const char* mime ) const{    QByteArray a;    if ( QString( mime ) == "application/x-qiconlist" ) {	a = QIconDrag::encodedData( mime );    } else if ( QString( mime ) == "text/uri-list" ) {	QString s = urls.join( "\r\n" );	a.resize( s.length() );	memcpy( a.data(), s.latin1(), s.length() );    }    return a;}bool QtFileIconDrag::canDecode( QMimeSource* e ){    return e->provides( "application/x-qiconlist" ) ||	e->provides( "text/uri-list" );}void QtFileIconDrag::append( const QIconDragItem &item, const QRect &pr,			     const QRect &tr, const QString &url ){    QIconDrag::append( item, pr, tr );    QString ourUrl = url;    #ifdef Q_WS_WIN    if (ourUrl.length() > 2 && ourUrl[1] != ':') {	QDir dir(ourUrl);	ourUrl = dir.absPath();    }#endif    urls << QUriDrag::localFileToUri(ourUrl);}/***************************************************************************** * * Class QtFileIconViewItem * *****************************************************************************/QtFileIconViewItem::QtFileIconViewItem( QtFileIconView *parent, QFileInfo *fi )    : QIconViewItem( parent, fi->fileName() ), itemFileName( fi->filePath() ),      itemFileInfo( fi ), checkSetText( FALSE ){    vm = QtFileIconView::Small;    if ( itemFileInfo->isDir() )	itemType = Dir;    else if ( itemFileInfo->isFile() )	itemType = File;    if ( itemFileInfo->isSymLink() )	itemType = Link;    viewModeChanged( ( (QtFileIconView*)iconView() )->viewMode() );    if ( itemFileInfo->fileName() == "." ||	 itemFileInfo->fileName() == ".." )	setRenameEnabled( FALSE );    checkSetText = true;        QTextCodec *codec = QTextCodec::codecForName("gbk");    QString uniString = codec->toUnicode( fi->fileName() );    setText( uniString );    QObject::connect( &timer, SIGNAL( timeout() ),		      iconView(), SLOT( openFolder() ) );}void QtFileIconViewItem::paintItem( QPainter *p, const QColorGroup &cg ){    if ( itemFileInfo->isSymLink() ) {	QFont f( p->font() );	f.setItalic( TRUE );	p->setFont( f );    }    QIconViewItem::paintItem( p, cg );}void QtFileIconViewItem::viewModeChanged( QtFileIconView::ViewMode m ){    vm = m;    setDropEnabled( itemType == Dir && QDir( itemFileName ).isReadable() );    calcRect();}QPixmap *QtFileIconViewItem::pixmap() const{    switch ( itemType ) {    case Dir:	{	    if ( !QDir( itemFileName ).isReadable() ) {		if ( vm == QtFileIconView::Small )		    return iconFolderLockedSmall;		else		    return iconFolderLockedLarge;	    } else {		if ( vm == QtFileIconView::Small )		    return iconFolderSmall;		else		    return iconFolderLarge;	    }	}    case Link:	{	    if ( vm == QtFileIconView::Small )		return iconLinkSmall;	    else		return iconLinkLarge;	}    default:	{	    if ( vm == QtFileIconView::Small )		return iconFileSmall;	    else		return iconFileLarge;	}    }}QtFileIconViewItem::~QtFileIconViewItem(){    delete itemFileInfo;}/*void QtFileIconViewItem::setText( const QString &text ){    if ( checkSetText ) {	if ( text == "." || text == "." || text.isEmpty() )	    return;	QDir dir( itemFileInfo->dir() );	if ( dir.rename( itemFileInfo->fileName(), text ) ) {	    itemFileName = itemFileInfo->dirPath( TRUE ) + "/" + text;	    delete itemFileInfo;	    itemFileInfo = new QFileInfo( itemFileName );	    QIconViewItem::setText( text );	}    } else {	QIconViewItem::setText( text );    }}*/bool QtFileIconViewItem::acceptDrop( const QMimeSource *e ) const{    if ( type() == Dir && e->provides( "text/uri-list" ) &&	 dropEnabled() )	return TRUE;    return FALSE;}void QtFileIconViewItem::dropped( QDropEvent *e, const QValueList<QIconDragItem> & ){    timer.stop();    if ( !QUriDrag::canDecode( e ) ) {			e->ignore();			return;    }    QUriDrag::decodeLocalFiles( e, ( (QtFileIconView *)iconView() )->cpyCutList );    QString str;    if ( e->action() == QDropEvent::Copy )			( (QtFileIconView *)iconView() )->slotCopy();    else			( (QtFileIconView *)iconView() )->slotCut();		( (QtFileIconView *)iconView() )->slotPaste( itemFileName );    e->acceptAction();}void QtFileIconViewItem::dragEntered(){    if ( type() != Dir ||	 type() == Dir && !QDir( itemFileName ).isReadable() )	return;    ( (QtFileIconView*)iconView() )->setOpenItem( this );    timer.start( 1500 );}void QtFileIconViewItem::dragLeft(){    if ( type() != Dir ||	 type() == Dir && !QDir( itemFileName ).isReadable() )	return;    timer.stop();}void QtFileIconView::slotPreCpyCut(){    QIconViewItem *item = firstItem();    QDir d = currentDir();    QStringList bak = cpyCutList;        cpyCutList.clear();        while ( item != 0 ) {    	if( item->isSelected() && item->text() != ".." && item->text() != "." )    		cpyCutList += d.absPath() + "/" + item->text();		  item = item->nextItem();    }    if( !cpyCutList.count() ) cpyCutList = bak;    else if ( !cpyCutFlag ) emit enablePaste();    else emit disablePaste();}void QtFileIconView::slotCopy(){		cpyCutFlag = 0;		slotPreCpyCut();}

⌨️ 快捷键说明

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