00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "KoPictureFilePreview.h"
00022 #include "KoPictureFilePreview.moc"
00023 #include <kdialog.h>
00024 #include <klocale.h>
00025 #include <kurl.h>
00026 #include <QBitmap>
00027 #include <QLayout>
00028 #include <QFileInfo>
00029 #include <QPainter>
00030 #include <q3scrollview.h>
00031 #include <QPalette>
00032 #include <QVBoxLayout>
00033
00034 #include <kdebug.h>
00035
00036 #include <KoPicture.h>
00037
00043 class KoPictureFilePreviewWidget : public Q3ScrollView
00044 {
00045 public:
00046 KoPictureFilePreviewWidget( QWidget *parent )
00047 : Q3ScrollView( parent ) {
00048 viewport()->setBackgroundRole( QPalette::Base );
00049 }
00050
00051 bool setPicture( const KUrl& url )
00052 {
00053 KoPicture picture;
00054 if ( url.isLocalFile() )
00055 {
00056 if ( !picture.loadFromFile( url.path() ) )
00057 {
00058 return false;
00059 }
00060 }
00061 else
00062 {
00063
00064 if ( !picture.setKeyAndDownloadPicture( url, this ) )
00065 {
00066 return false;
00067 }
00068 }
00069 m_size = picture.getOriginalSize();
00070 m_picture = picture;
00071 resizeContents( m_size.width(), m_size.height() );
00072 repaintContents();
00073 return true;
00074 }
00075
00076 void setNullPicture(void)
00077 {
00078 m_picture=KoPicture();
00079 m_size=QSize();
00080 }
00081
00082 void drawContents( QPainter *p, int, int, int, int )
00083 {
00084 p->setBackground( QBrush( Qt::white ) );
00085
00086 p->fillRect(0, 0, m_size.width(), m_size.height(), QBrush( Qt::white ));
00087 m_picture.draw( *p, 0 ,0, m_size.width(), m_size.height());
00088 }
00089
00090 private:
00091 KoPicture m_picture;
00092 QSize m_size;
00093 };
00094
00095 KoPictureFilePreview::KoPictureFilePreview( QWidget *parent )
00096 : KPreviewWidgetBase( parent )
00097 {
00098 QVBoxLayout *vb = new QVBoxLayout( this );
00099 vb->setMargin(KDialog::marginHint());
00100 m_widget = new KoPictureFilePreviewWidget( this );
00101 vb->addWidget( m_widget, 1 );
00102 }
00103
00104 void KoPictureFilePreview::showPreview( const KUrl &u )
00105 {
00106 m_widget->setPicture( u );
00107 }
00108
00109 void KoPictureFilePreview::clearPreview()
00110 {
00111 m_widget->setNullPicture();
00112 }
00113
00114 QString KoPictureFilePreview::clipartPattern()
00115 {
00116 return i18n( "*.svg *.wmf *.qpic|Clipart (*.svg *.wmf *.qpic)" );
00117 }
00118
00119 QStringList KoPictureFilePreview::clipartMimeTypes()
00120 {
00121 QStringList lst;
00122 lst << "image/svg+xml";
00123 lst << "image/x-wmf";
00124 lst << "image/x-vnd.trolltech.qpicture";
00125 return lst;
00126 }