konq_iconviewwidget.h

00001 /*  This file is part of the KDE project
00002     Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
00003     Copyright (C) 2000, 2001, 2002 David Faure <david@mandrakesoft.com>
00004 
00005     This program is free software; you can redistribute it and/or modify
00006     it under the terms of the GNU General Public License as published by
00007     the Free Software Foundation; either version 2 of the License, or
00008     (at your option) any later version.
00009 
00010     This program is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013     GNU General Public License for more details.
00014 
00015     You should have received a copy of the GNU General Public License
00016     along with this program; if not, write to the Free Software
00017     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
00018 */
00019 
00020 #ifndef __konq_iconviewwidget_h__
00021 #define __konq_iconviewwidget_h__
00022 
00023 #include <kiconloader.h>
00024 #include <kiconview.h>
00025 #include <kurl.h>
00026 #include <qguardedptr.h>
00027 #include <kfileitem.h>
00028 #include <kio/jobclasses.h>
00029 #include <libkonq_export.h>
00030 
00031 class KonqFMSettings;
00032 class KFileIVI;
00033 class KonqIconDrag;
00034 namespace KIO { class Job; }
00035 
00042 class LIBKONQ_EXPORT KonqIconViewWidget : public KIconView
00043 {
00044     Q_OBJECT
00045     Q_PROPERTY( bool sortDirectoriesFirst READ sortDirectoriesFirst WRITE setSortDirectoriesFirst )
00046     Q_PROPERTY( QRect iconArea READ iconArea WRITE setIconArea )
00047     Q_PROPERTY( int lineupMode READ lineupMode WRITE setLineupMode )
00048     Q_PROPERTY( QString url READ urlString WRITE setNewURL )
00049 
00050     friend class KFileIVI;
00051 
00052 public:
00053 
00054     enum LineupMode { LineupHorizontal=1, LineupVertical, LineupBoth };
00055 
00059     KonqIconViewWidget( QWidget *parent = 0L, const char *name = 0L, WFlags f = 0, bool kdesktop = FALSE );
00060     virtual ~KonqIconViewWidget();
00061 
00070     bool initConfig( bool bInit );
00071 
00077     void setIconArea( const QRect &rect );
00078 
00082     virtual void focusOutEvent( QFocusEvent * /* ev */ );
00083 
00087     QRect iconArea() const;
00088 
00093     void setLineupMode(int mode);
00094 
00098     int lineupMode() const;
00099 
00105     void lineupIcons();
00106 
00114     void lineupIcons( QIconView::Arrangement arrangement );
00115 
00126     void setIcons( int size, const QStringList& stopImagePreviewFor = QStringList() );
00127 
00131     void refreshMimeTypes();
00132 
00133     int iconSize() { return m_size; }
00134 
00135     void calculateGridX();
00140     int gridXValue() const;
00141 
00153     void gridValues( int* x, int* y, int* dx, int* dy, int* nx, int* ny );
00154 
00163     void startImagePreview( const QStringList &ignored, bool force );
00164     void stopImagePreview();
00165     bool isPreviewRunning() const;
00166     // unused
00167     void setThumbnailPixmap( KFileIVI * item, const QPixmap & pixmap );
00168     void disableSoundPreviews();
00169 
00170     void setURL ( const KURL & kurl );
00171     // ### KDE4: make const
00172     const KURL & url() { return m_url; }
00173     QString urlString() const { return m_url.url(); }
00174     void setRootItem ( const KFileItem * item ) { m_rootItem = item; }
00175 
00179     KFileItemList selectedFileItems();
00180 
00181     void setItemColor( const QColor &c );
00182     QColor itemColor() const;
00183 
00184     virtual void cutSelection();
00185     virtual void copySelection();
00186     virtual void pasteSelection();
00187     virtual KURL::List selectedUrls(); // KDE4: remove virtual + add const
00188     enum UrlFlags { UserVisibleUrls = 0, MostLocalUrls = 1 };
00189     KURL::List selectedUrls( UrlFlags flags ) const; // KDE4: merge with above, default is == UserVisibleUrls
00190     void paste( const KURL &url );
00191 
00192     bool sortDirectoriesFirst() const;
00193     void setSortDirectoriesFirst( bool b );
00194 
00195     void setCaseInsensitiveSort( bool b );
00196     bool caseInsensitiveSort() const;
00197 
00201     const KURL::List & dragURLs() { return m_lstDragURLs; }
00202 
00206     virtual void clear();
00207 
00211     virtual void takeItem( QIconViewItem *item );
00212 
00216     virtual void insertInGrid( QIconViewItem *item );
00217 
00221     virtual void setItemTextPos( ItemTextPos pos );
00222 
00226     virtual void visualActivate(QIconViewItem *);
00227 
00228     bool isDesktop() const { return m_bDesktop; }
00229 
00233     virtual void setWallpaper(const KURL&) { }
00234 
00235     bool maySetWallpaper();
00236     void setMaySetWallpaper(bool b);
00237 
00238     void disableIcons( const KURL::List & lst );
00239 
00240     QString iconPositionGroupPrefix() const { return m_iconPositionGroupPrefix; }
00241     QString dotDirectoryPath() const { return m_dotDirectoryPath; }
00242 
00243     void setPreviewSettings(const QStringList& mimeTypes);
00244     const QStringList& previewSettings();
00245     void setNewURL( const QString& url );
00246 
00247 public slots:
00251     virtual void slotSelectionChanged();
00252 
00253     void slotSaveIconPositions();
00254 
00255     void renameSelectedItem();
00256     void renameCurrentItem();
00257 
00258     void slotToolTipPreview( const KFileItem *, const QPixmap & );  // ### unused - remove for KDE4
00259     void slotToolTipPreviewResult() ;  // ### unused - remove for KDE4
00260 
00261 signals:
00265     void enableAction( const char * name, bool enabled );
00266 
00267     void dropped();
00268     void imagePreviewFinished();
00269 
00270     void incIconSize();
00271     void decIconSize();
00272 
00276     void dragEntered( bool accepted );
00277     void dragLeft();
00278 
00279     void dragMove( bool accepted );
00284     void dragFinished();
00285 
00286 protected slots:
00287     virtual void slotDropped( QDropEvent *e, const QValueList<QIconDragItem> & );
00288 
00289     void slotItemRenamed(QIconViewItem *item, const QString &name);
00290 
00291     void slotIconChanged(int);
00292     void slotOnItem(QIconViewItem *);
00293     void slotOnViewport();
00294     void slotStartSoundPreview();
00295     void slotPreview(const KFileItem *, const QPixmap &);
00296     void slotPreviewResult();
00297 
00298     void slotMovieUpdate( const QRect& rect );
00299     void slotMovieStatus( int status );
00300     void slotReenableAnimation();
00301 
00302     void slotAboutToCreate(const QPoint &pos, const QValueList<KIO::CopyInfo> &files);
00303     void doubleClickTimeout();
00304 
00305 protected:
00306     virtual QDragObject *dragObject();
00307     KonqIconDrag *konqDragObject( QWidget * dragSource = 0L );
00308     bool mimeTypeMatch( const QString& mimeType, const QStringList& mimeList ) const;
00309 
00310     virtual void drawBackground( QPainter *p, const QRect &r );
00316     virtual void drawBackground( QPainter *p, const QRect &r,
00317                     const QPoint &pt );
00318     virtual void contentsDragEnterEvent( QDragEnterEvent *e );
00319     virtual void contentsDragLeaveEvent( QDragLeaveEvent *e );
00320     virtual void contentsDragMoveEvent( QDragMoveEvent *e );
00321     virtual void contentsDropEvent( QDropEvent *e );
00322     virtual void contentsMousePressEvent( QMouseEvent *e );
00323     virtual void contentsMouseReleaseEvent ( QMouseEvent * e );
00324     virtual void contentsMouseMoveEvent( QMouseEvent *e );
00325     virtual void backgroundPixmapChange( const QPixmap & );
00326     virtual void wheelEvent( QWheelEvent* );
00327     virtual void leaveEvent( QEvent *e );
00328 
00329     void readAnimatedIconsConfig();
00330     void mousePressChangeValue();
00331 
00332     bool boostPreview() const;
00333     int previewIconSize( int size ) const;
00334     int largestPreviewIconSize( int size ) const;
00335     bool canPreview( KFileItem* item );
00336     void updatePreviewMimeTypes();
00337 
00338 private:
00339     KURL m_url;
00340     const KFileItem * m_rootItem;
00341 
00342     KURL::List m_lstDragURLs;
00343 
00344     int m_size;
00345 
00347     KonqFMSettings * m_pSettings;
00348 
00349     bool m_bMousePressed;
00350     QPoint m_mousePos;
00351 
00352     QColor iColor;
00353 
00354     bool m_bSortDirsFirst;
00355 
00356     QString m_iconPositionGroupPrefix;
00357     QString m_dotDirectoryPath;
00358 
00359     int m_LineupMode;
00360     QRect m_IconRect;
00361 
00362     bool m_bDesktop;
00363     bool m_bSetGridX;
00364 
00365 private:
00366     struct KonqIconViewWidgetPrivate *d;
00367 
00368 };
00369 
00370 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys