kio Library API Documentation

kfilepreview.cpp

00001 /* This file is part of the KDE libraries
00002     Copyright (C) 1998 Stephan Kulow <coolo@kde.org>
00003                   1998 Daniel Grana <grana@ie.iwi.unibe.ch>
00004                   2000 Werner Trobin <wtrobin@carinthia.com>
00005 
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010 
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015 
00016     You should have received a copy of the GNU Library General Public License
00017     along with this library; see the file COPYING.LIB.  If not, write to
00018     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00019     Boston, MA 02111-1307, USA.
00020 */
00021 
00022 #include <kaction.h>
00023 #include <kfilepreview.h>
00024 #include <kfilepreview.moc>
00025 
00026 #include "config-kfile.h"
00027 
00028 KFilePreview::KFilePreview(KFileView *view, QWidget *parent, const char *name)
00029     : QSplitter(parent, name), KFileView()
00030 {
00031     if ( view )
00032         init( view );
00033     else
00034         init( new KFileIconView( (QSplitter*) this, "left" ));
00035 }
00036 
00037 
00038 KFilePreview::KFilePreview(QWidget *parent, const char *name) :
00039                            QSplitter(parent, name), KFileView()
00040 {
00041     init( new KFileIconView((QSplitter*)this, "left") );
00042 }
00043 
00044 KFilePreview::~KFilePreview()
00045 {
00046     // Why copy the actions in the first place? --ellis, 13 Jan 02.
00048     //for ( uint i = 0; i < left->actionCollection()->count(); i++ )
00049     //    actionCollection()->take( left->actionCollection()->action( i ));
00050 
00051     // don't delete the preview, we can reuse it
00052     // (it will get deleted by ~KDirOperator)
00053     if ( preview && preview->parentWidget() == this ) {
00054         preview->reparent(0L, 0, QPoint(0, 0), false);
00055     }
00056 }
00057 
00058 void KFilePreview::init( KFileView *view )
00059 {
00060     setViewName( i18n("Preview") );
00061 
00062     left = 0L;
00063     setFileView( view );
00064 
00065     preview = new QWidget((QSplitter*)this, "preview");
00066     QString tmp = i18n("No preview available.");
00067     QLabel *l = new QLabel(tmp, preview);
00068     l->setMinimumSize(l->sizeHint());
00069     l->move(10, 5);
00070     preview->setMinimumWidth(l->sizeHint().width()+20);
00071     setResizeMode(preview, QSplitter::KeepSize);
00072 
00073     // Why copy the actions? --ellis, 13 Jan 02.
00074     //for ( uint i = 0; i < view->actionCollection()->count(); i++ )
00075     //    actionCollection()->insert( view->actionCollection()->action( i ));
00076 }
00077 
00078 void KFilePreview::setFileView( KFileView *view )
00079 {
00080     Q_ASSERT( view );
00081 
00082     // Why copy the actions? --ellis, 13 Jan 02.
00083     //if ( left ) { // remove any previous actions
00084     //    for ( uint i = 0; i < left->actionCollection()->count(); i++ )
00085     //        actionCollection()->take( left->actionCollection()->action( i ));
00086     //}
00087 
00088     delete left;
00089     view->widget()->reparent( this, QPoint(0,0) );
00090     view->KFileView::setViewMode(All);
00091     view->setParentView(this);
00092     view->setSorting( sorting() );
00093     left = view;
00094 
00095     connect( left->signaler(), SIGNAL( fileHighlighted(const KFileItem*) ),
00096              SLOT( slotHighlighted( const KFileItem * )));
00097 
00098     // Why copy the actions? --ellis, 13 Jan 02.
00099     //for ( uint i = 0; i < view->actionCollection()->count(); i++ )
00100     //    actionCollection()->insert( view->actionCollection()->action( i ));
00101 }
00102 
00103 // this url parameter is useless... it's the url of the current directory.
00104 // what for?
00105 void KFilePreview::setPreviewWidget(const QWidget *w, const KURL &)
00106 {
00107     left->setOnlyDoubleClickSelectsFiles( onlyDoubleClickSelectsFiles() );
00108 
00109     if (w) {
00110         connect(this, SIGNAL( showPreview(const KURL &) ),
00111                 w, SLOT( showPreview(const KURL &) ));
00112         connect( this, SIGNAL( clearPreview() ),
00113                 w, SLOT( clearPreview() ));
00114     }
00115     else {
00116         preview->hide();
00117         return;
00118     }
00119 
00120     delete preview;
00121     preview = const_cast<QWidget*>(w);
00122     preview->reparent((QSplitter*)this, 0, QPoint(0, 0), true);
00123     preview->resize(preview->sizeHint());
00124     preview->show();
00125 }
00126 
00127 void KFilePreview::insertItem(KFileItem *item)
00128 {
00129     KFileView::insertItem( item );
00130     left->insertItem(item);
00131 }
00132 
00133 void KFilePreview::setSorting( QDir::SortSpec sort )
00134 {
00135     left->setSorting( sort );
00136     KFileView::setSorting( left->sorting() );
00137 }
00138 
00139 void KFilePreview::clearView()
00140 {
00141     left->clearView();
00142     emit clearPreview();
00143 }
00144 
00145 void KFilePreview::updateView(bool b)
00146 {
00147     left->updateView(b);
00148     if(preview)
00149         preview->repaint(b);
00150 }
00151 
00152 void KFilePreview::updateView(const KFileItem *i)
00153 {
00154     left->updateView(i);
00155 }
00156 
00157 void KFilePreview::removeItem(const KFileItem *i)
00158 {
00159     if ( left->isSelected( i ) )
00160         emit clearPreview();
00161 
00162     left->removeItem(i);
00163     KFileView::removeItem( i );
00164 }
00165 
00166 void KFilePreview::listingCompleted()
00167 {
00168     left->listingCompleted();
00169 }
00170 
00171 void KFilePreview::clear()
00172 {
00173     KFileView::clear();
00174     left->KFileView::clear();
00175 }
00176 
00177 void KFilePreview::clearSelection()
00178 {
00179     left->clearSelection();
00180     emit clearPreview();
00181 }
00182 
00183 void KFilePreview::selectAll()
00184 {
00185     left->selectAll();
00186 }
00187 
00188 void KFilePreview::invertSelection()
00189 {
00190     left->invertSelection();
00191 }
00192 
00193 bool KFilePreview::isSelected( const KFileItem *i ) const
00194 {
00195     return left->isSelected( i );
00196 }
00197 
00198 void KFilePreview::setSelectionMode(KFile::SelectionMode sm) {
00199     left->setSelectionMode( sm );
00200 }
00201 
00202 void KFilePreview::setSelected(const KFileItem *item, bool enable) {
00203     left->setSelected( item, enable );
00204 }
00205 
00206 void KFilePreview::setCurrentItem( const KFileItem *item )
00207 {
00208     left->setCurrentItem( item );
00209 }
00210 
00211 KFileItem * KFilePreview::currentFileItem() const
00212 {
00213     return left->currentFileItem();
00214 }
00215 
00216 void KFilePreview::slotHighlighted(const KFileItem* item)
00217 {
00218     if ( item )
00219         emit showPreview( item->url() );
00220 
00221     else { // item = 0 -> multiselection mode
00222         const KFileItemList *items = selectedItems();
00223         if ( items->count() == 1 )
00224             emit showPreview( items->getFirst()->url() );
00225         else
00226             emit clearPreview();
00227     }
00228 
00229     // the preview widget appears and takes some space of the left view,
00230     // so we may have to scroll to make the current item visible
00231     left->ensureItemVisible(item);
00232  }
00233 
00234 void KFilePreview::ensureItemVisible(const KFileItem *item)
00235 {
00236     left->ensureItemVisible(item);
00237 }
00238 
00239 KFileItem * KFilePreview::firstFileItem() const
00240 {
00241     return left->firstFileItem();
00242 }
00243 
00244 KFileItem * KFilePreview::nextItem( const KFileItem *item ) const
00245 {
00246     return left->nextItem( item );
00247 }
00248 
00249 KFileItem * KFilePreview::prevItem( const KFileItem *item ) const
00250 {
00251     return left->prevItem( item );
00252 }
00253 
00254 KActionCollection * KFilePreview::actionCollection() const
00255 {
00256     if ( left )
00257         return left->actionCollection();
00258     else {
00259         kdWarning() << "KFilePreview::actionCollection(): called before setFileView()." << endl; //ellis
00260         return KFileView::actionCollection();
00261     }
00262 }
00263 
00264 void KFilePreview::readConfig( KConfig *config, const QString& group )
00265 {
00266     left->readConfig( config, group );
00267 }
00268 
00269 void KFilePreview::writeConfig( KConfig *config, const QString& group )
00270 {
00271     left->writeConfig( config, group );
00272 }
00273 
00274 void KFilePreview::virtual_hook( int id, void* data )
00275 { KFileView::virtual_hook( id, data ); }
00276 
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.5.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Wed Jan 28 13:13:33 2004 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2001