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

📄 kimagefilepreview.cpp

📁 LINUX 下, 以 QT/KDE 写的档案管理员
💻 CPP
字号:
/** This file is part of the KDE project* Copyright (C) 2001 Martin R. Jones <mjones@kde.org>*               2001 Carsten Pfeiffer <pfeiffer@kde.org>** You can Freely distribute this program under the GNU Library General Public* License. See the file "COPYING" for the exact licensing terms.*/#include <qlayout.h>#include <qlabel.h>#include <qcombobox.h>#include <qcheckbox.h>#include <qwhatsthis.h>#include <qtimer.h>#include <kapplication.h>#include <kglobal.h>#include <kiconloader.h>#include <kpushbutton.h>#include <kstandarddirs.h>#include <kdebug.h>#include <klocale.h>#include <kfiledialog.h>#include <kfileitem.h>#include <kio/previewjob.h>#include "kimagefilepreview.h"/**** KrusaderImageFilePreview ****/KrusaderImageFilePreview::KrusaderImageFilePreview( QWidget *parent )		: KPreviewWidgetBase( parent ),m_job( 0L ) {	QVBoxLayout *vb = new QVBoxLayout( this, KDialog::marginHint() );	imageLabel = new QLabel( this );	imageLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken );	imageLabel->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter );	imageLabel->setSizePolicy( QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Ignored ) );	vb->addWidget( imageLabel, 1 );	timer = new QTimer( this );	connect( timer, SIGNAL( timeout() ), SLOT( showPreview() ) );	setSupportedMimeTypes( KIO::PreviewJob::supportedMimeTypes() );}KrusaderImageFilePreview::~KrusaderImageFilePreview() {	if ( m_job )		m_job->kill();}void KrusaderImageFilePreview::showPreview() {	// Pass a copy since clearPreview() will clear currentURL	KURL url = currentURL;	showPreview( url, true );}// called via KPreviewWidgetBase interfacevoid KrusaderImageFilePreview::showPreview( const KURL& url ) {	showPreview( url, false );}void KrusaderImageFilePreview::showPreview( const KURL &url, bool force ) {	if ( !url.isValid() ) {		clearPreview();		return ;	}	if ( url != currentURL || force ) {		clearPreview();		currentURL = url;		int w = imageLabel->contentsRect().width() - 4;		int h = imageLabel->contentsRect().height() - 4;		m_job = createJob( url, w, h );		connect( m_job, SIGNAL( result( KIO::Job * ) ),		         this, SLOT( slotResult( KIO::Job * ) ) );		connect( m_job, SIGNAL( gotPreview( const KFileItem*,		                                    const QPixmap& ) ),		         SLOT( gotPreview( const KFileItem*, const QPixmap& ) ) );		connect( m_job, SIGNAL( failed( const KFileItem* ) ),		         this, SLOT( slotFailed( const KFileItem* ) ) );	}}void KrusaderImageFilePreview::resizeEvent( QResizeEvent * ) {	timer->start( 100, true ); // forces a new preview}QSize KrusaderImageFilePreview::sizeHint() const {	return QSize( 20, 200 ); // otherwise it ends up huge???}KIO::PreviewJob * KrusaderImageFilePreview::createJob( const KURL& url, int w, int h ) {	KURL::List urls;	urls.append( url );	return KIO::filePreview( urls, w, h, 0, 0, true, false );}void KrusaderImageFilePreview::gotPreview( const KFileItem* item, const QPixmap& pm ) {	if ( item->url() == currentURL )   // should always be the case		imageLabel->setPixmap( pm );}void KrusaderImageFilePreview::slotFailed( const KFileItem* item ) {	if ( item->isDir() )		imageLabel->clear();	else if ( item->url() == currentURL )   // should always be the case		imageLabel->setPixmap( SmallIcon( "file_broken", KIcon::SizeLarge,		                                  KIcon::DisabledState ) );}void KrusaderImageFilePreview::slotResult( KIO::Job *job ) {	if ( job == m_job )		m_job = 0L;}void KrusaderImageFilePreview::clearPreview() {	if ( m_job ) {		m_job->kill();		m_job = 0L;	}	imageLabel->clear();	currentURL = KURL();}void KrusaderImageFilePreview::virtual_hook( int id, void* data ) {	KPreviewWidgetBase::virtual_hook( id, data );}#include "kimagefilepreview.moc"

⌨️ 快捷键说明

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