summaryrefslogtreecommitdiffstats
path: root/kdesktop/kdiconview.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdesktop/kdiconview.h')
-rw-r--r--kdesktop/kdiconview.h256
1 files changed, 256 insertions, 0 deletions
diff --git a/kdesktop/kdiconview.h b/kdesktop/kdiconview.h
new file mode 100644
index 000000000..a92d39712
--- /dev/null
+++ b/kdesktop/kdiconview.h
@@ -0,0 +1,256 @@
+/* This file is part of the KDE project
+ Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
+ Copyright (C) 2000, 2001 David Faure <faure@kde.org>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef kdiconview_h
+#define kdiconview_h
+
+#include <konq_iconviewwidget.h>
+#include <kaction.h>
+#include <kfileitem.h>
+#include <kdirnotify.h>
+
+class KDirLister;
+class KonqSettings;
+class KSimpleConfig;
+class KAccel;
+class KShadowEngine;
+class KDesktopShadowSettings;
+
+/**
+ * This class is KDesktop's icon view.
+ * The icon view is a child widget of the KDesktop widget.
+ *
+ * Added shadow capability by Laur Ivan (C) 2003
+ * The shadow is supported by the new KFileIVIDesktop objects
+ * which replace KFileIVI objects.
+ */
+class KDIconView : public KonqIconViewWidget, public KDirNotify
+{
+ Q_OBJECT
+
+public:
+ KDIconView( QWidget *parent, const char* name = 0L );
+ ~KDIconView();
+
+ virtual void initConfig( bool init );
+ void configureMedia();
+ /**
+ * Start listing
+ */
+ void start();
+
+ KActionCollection *actionCollection() { return &m_actionCollection; }
+
+ enum SortCriterion {
+ NameCaseSensitive = 0, NameCaseInsensitive, Size, Type, Date };
+
+ void rearrangeIcons( SortCriterion sc, bool bSortDirectoriesFirst);
+
+ /**
+ * Re-arrange the desktop icons without confirmation.
+ */
+ void rearrangeIcons();
+
+ void lineupIcons(QIconView::Arrangement);
+
+ void setAutoAlign( bool b );
+
+ QStringList selectedURLs();
+
+ /**
+ * Save the icon positions
+ */
+ void saveIconPositions();
+
+ /**
+ * Check if the URL to the desktop has changed
+ */
+ void recheckDesktopURL();
+
+ /**
+ * Called when the desktop icons area has changed
+ */
+ void updateWorkArea( const QRect &wr );
+
+ /**
+ * Reimplemented from KonqIconViewWidget (for image drops)
+ */
+ virtual void setWallpaper(const KURL &url) { emit newWallpaper( url ); }
+ void setLastIconPosition( const QPoint & );
+
+ static KURL desktopURL();
+
+ /// KDirNotify interface, for trash:/
+ virtual void FilesAdded( const KURL & directory );
+ virtual void FilesRemoved( const KURL::List & fileList );
+ virtual void FilesChanged( const KURL::List & ) {}
+
+ void startDirLister();
+
+protected slots:
+
+ // slots connected to the icon view
+ void slotReturnPressed( QIconViewItem *item );
+ void slotExecuted( QIconViewItem *item );
+ void slotMouseButtonPressed(int _button, QIconViewItem* _item, const QPoint& _global);
+ void slotMouseButtonClickedKDesktop(int _button, QIconViewItem* _item, const QPoint& _global);
+ void slotContextMenuRequested(QIconViewItem* _item, const QPoint& _global);
+ void slotEnableAction( const char * name, bool enabled );
+ void slotAboutToCreate(const QPoint &pos, const QValueList<KIO::CopyInfo> &files);
+
+ void slotItemRenamed(QIconViewItem*, const QString &name);
+
+ // slots connected to the directory lister
+ void slotStarted( const KURL& url );
+ void slotCompleted();
+ void slotNewItems( const KFileItemList& );
+ void slotDeleteItem( KFileItem * );
+ void slotRefreshItems( const KFileItemList& );
+
+ // slots connected to the popupmenu (actions)
+ void slotCut();
+ void slotCopy();
+ void slotTrashActivated( KAction::ActivationReason reason, Qt::ButtonState state );
+ void slotDelete();
+ void slotPopupPasteTo();
+ void slotProperties();
+
+ void slotClipboardDataChanged();
+
+ void slotNewMenuActivated();
+
+ // For communication with KDesktop
+signals:
+ void colorDropEvent( QDropEvent *e );
+ void imageDropEvent( QDropEvent *e );
+ void newWallpaper( const KURL & );
+ void iconMoved();
+ void wheelRolled( int delta );
+
+public slots:
+ /**
+ * Lineup the desktop icons.
+ */
+ void lineupIcons();
+ void slotPaste(); // for krootwm
+ void slotClear();
+ void refreshIcons();
+
+
+protected:
+ void createActions();
+ void setupSortKeys();
+ void initDotDirectories();
+
+ bool makeFriendlyText( KFileIVI *fileIVI );
+ static QString stripDesktopExtension( const QString & text );
+ bool isDesktopFile( KFileItem * _item ) const;
+ bool isFreePosition( const QIconViewItem *item ) const;
+ bool isFreePosition( const QIconViewItem *item, const QRect& rect ) const;
+ void moveToFreePosition(QIconViewItem *item );
+
+ bool deleteGlobalDesktopFiles();
+
+ static void renameDesktopFile(const QString &path, const QString &name);
+
+ void popupMenu( const QPoint &_global, const KFileItemList& _items );
+ virtual void showEvent( QShowEvent *e );
+ virtual void contentsDropEvent( QDropEvent *e );
+ virtual void viewportWheelEvent( QWheelEvent * );
+ virtual void contentsMousePressEvent( QMouseEvent *e );
+ virtual void mousePressEvent( QMouseEvent *e );
+ virtual void wheelEvent( QWheelEvent* e );
+
+private:
+ void refreshTrashIcon();
+
+ static QRect desktopRect();
+ static void saveIconPosition(KSimpleConfig *config, int x, int y);
+ static void readIconPosition(KSimpleConfig *config, int &x, int &y);
+
+ /** Our action collection, parent of all our actions */
+ KActionCollection m_actionCollection;
+
+ /** KAccel object, to make the actions shortcuts work */
+ KAccel *m_accel;
+
+ bool m_bNeedRepaint;
+ bool m_bNeedSave;
+ bool m_autoAlign;
+
+ /** true if even one icon has an icon-position entry in the .directory */
+ bool m_hasExistingPos;
+
+ /** whether the user may move/edit/remove desktop icons */
+ bool m_bEditableDesktopIcons;
+
+ /** Show dot files ? */
+ bool m_bShowDot;
+
+ /** Vertical or Horizontal align of icons on desktop */
+ bool m_bVertAlign;
+
+ /** The directory lister - created only in start() */
+ KDirLister* m_dirLister;
+
+ /** The list of urls to be merged into the desktop, in addition to desktopURL */
+ KURL::List m_mergeDirs;
+
+ /** The list of dirs to be merged into the desktop, in addition to desktopURL **/
+ QStringList m_desktopDirs;
+
+ /** The desktop's .directory, used for storing icon positions */
+ KSimpleConfig *m_dotDirectory;
+
+ /** Position of last deleted icon - used when renaming a file */
+ QPoint m_lastDeletedIconPos;
+
+ /** Sorting */
+ SortCriterion m_eSortCriterion;
+ bool m_bSortDirectoriesFirst;
+ QStringList m_itemsAlwaysFirst;
+
+ /**
+ * The shadow object
+ */
+ KShadowEngine *m_shadowEngine;
+
+ /** Position where to move the next item.
+ * It is set to the KRootWm position when "new file" is chosen. */
+ QPoint m_nextItemPos;
+
+ /** Position where the last drop occurred */
+ QPoint m_dropPos;
+
+ /** Position for the last dropped item */
+ QPoint m_lastDropPos;
+
+ /** URL of the items which is being RMB'ed - when only one */
+ KURL m_popupURL;
+
+ /** media list management */
+ bool m_enableMedia;
+ QStringList m_excludedMedia;
+
+ // did we already get the correct desktopIconsArea (from kicker)
+ // needed when we want to line up icons on a grid
+ bool m_gotIconsArea;
+};
+
+#endif