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 <tqguardedptr.h> 00027 #include <tdefileitem.h> 00028 #include <tdeio/jobclasses.h> 00029 #include <libkonq_export.h> 00030 00031 class KonqFMSettings; 00032 class KFileIVI; 00033 class KonqIconDrag; 00034 namespace TDEIO { class Job; } 00035 00042 class LIBKONQ_EXPORT KonqIconViewWidget : public TDEIconView 00043 { 00044 Q_OBJECT 00045 TQ_PROPERTY( bool sortDirectoriesFirst READ sortDirectoriesFirst WRITE setSortDirectoriesFirst ) 00046 TQ_PROPERTY( TQRect iconArea READ iconArea WRITE setIconArea ) 00047 TQ_PROPERTY( int lineupMode READ lineupMode WRITE setLineupMode ) 00048 TQ_PROPERTY( TQString url READ urlString WRITE setNewURL ) 00049 00050 friend class KFileIVI; 00051 00052 public: 00053 00054 enum LineupMode { LineupHorizontal=1, LineupVertical, LineupBoth }; 00055 00059 KonqIconViewWidget( TQWidget *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 TQRect &rect ); 00078 00082 virtual void focusOutEvent( TQFocusEvent * /* ev */ ); 00083 00087 TQRect iconArea() const; 00088 00093 void setLineupMode(int mode); 00094 00098 int lineupMode() const; 00099 00105 void lineupIcons(); 00106 00114 void lineupIcons( TQIconView::Arrangement arrangement ); 00115 00126 void setIcons( int size, const TQStringList& stopImagePreviewFor = TQStringList() ); 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 TQStringList &ignored, bool force ); 00164 void stopImagePreview(); 00165 bool isPreviewRunning() const; 00166 // unused 00167 void setThumbnailPixmap( KFileIVI * item, const TQPixmap & pixmap ); 00168 void disableSoundPreviews(); 00169 00170 void setURL ( const KURL & kurl ); 00171 // ### KDE4: make const 00172 const KURL & url() { return m_url; } 00173 TQString urlString() const { return m_url.url(); } 00174 void setRootItem ( const KFileItem * item ) { m_rootItem = item; } 00175 00179 KFileItemList selectedFileItems(); 00180 00181 void setItemColor( const TQColor &c ); 00182 TQColor 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( TQIconViewItem *item ); 00212 00216 virtual void insertInGrid( TQIconViewItem *item ); 00217 00221 virtual void setItemTextPos( ItemTextPos pos ); 00222 00226 virtual void visualActivate(TQIconViewItem *); 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 TQString iconPositionGroupPrefix() const { return m_iconPositionGroupPrefix; } 00241 TQString dotDirectoryPath() const { return m_dotDirectoryPath; } 00242 00243 void setPreviewSettings(const TQStringList& mimeTypes); 00244 const TQStringList& previewSettings(); 00245 void setNewURL( const TQString& 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 TQPixmap & ); // ### 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( TQDropEvent *e, const TQValueList<TQIconDragItem> & ); 00288 00289 void slotItemRenamed(TQIconViewItem *item, const TQString &name); 00290 00291 void slotIconChanged(int); 00292 void slotOnItem(TQIconViewItem *); 00293 void slotOnViewport(); 00294 void slotStartSoundPreview(); 00295 void slotPreview(const KFileItem *, const TQPixmap &); 00296 void slotPreviewResult(); 00297 00298 void slotMovieUpdate( const TQRect& rect ); 00299 void slotMovieStatus( int status ); 00300 void slotReenableAnimation(); 00301 00302 void slotAboutToCreate(const TQPoint &pos, const TQValueList<TDEIO::CopyInfo> &files); 00303 void doubleClickTimeout(); 00304 00305 protected: 00306 virtual TQDragObject *dragObject(); 00307 KonqIconDrag *konqDragObject( TQWidget * dragSource = 0L ); 00308 bool mimeTypeMatch( const TQString& mimeType, const TQStringList& mimeList ) const; 00309 00310 virtual void drawBackground( TQPainter *p, const TQRect &r ); 00316 virtual void drawBackground( TQPainter *p, const TQRect &r, 00317 const TQPoint &pt ); 00318 virtual void contentsDragEnterEvent( TQDragEnterEvent *e ); 00319 virtual void contentsDragLeaveEvent( TQDragLeaveEvent *e ); 00320 virtual void contentsDragMoveEvent( TQDragMoveEvent *e ); 00321 virtual void contentsDropEvent( TQDropEvent *e ); 00322 virtual void contentsMousePressEvent( TQMouseEvent *e ); 00323 virtual void contentsMouseReleaseEvent ( TQMouseEvent * e ); 00324 virtual void contentsMouseMoveEvent( TQMouseEvent *e ); 00325 virtual void backgroundPixmapChange( const TQPixmap & ); 00326 virtual void wheelEvent( TQWheelEvent* ); 00327 virtual void leaveEvent( TQEvent *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 TQPoint m_mousePos; 00351 00352 TQColor iColor; 00353 00354 bool m_bSortDirsFirst; 00355 00356 TQString m_iconPositionGroupPrefix; 00357 TQString m_dotDirectoryPath; 00358 00359 int m_LineupMode; 00360 TQRect m_IconRect; 00361 00362 bool m_bDesktop; 00363 bool m_bSetGridX; 00364 00365 private: 00366 struct KonqIconViewWidgetPrivate *d; 00367 00368 }; 00369 00370 #endif