summaryrefslogtreecommitdiffstats
path: root/libkonq/konq_dirpart.h
diff options
context:
space:
mode:
Diffstat (limited to 'libkonq/konq_dirpart.h')
-rw-r--r--libkonq/konq_dirpart.h351
1 files changed, 351 insertions, 0 deletions
diff --git a/libkonq/konq_dirpart.h b/libkonq/konq_dirpart.h
new file mode 100644
index 000000000..df76e93bd
--- /dev/null
+++ b/libkonq/konq_dirpart.h
@@ -0,0 +1,351 @@
+/* This file is part of the KDE projects
+ Copyright (C) 2000 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 as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ 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 __konqdirpart_h
+#define __konqdirpart_h
+
+#include <qstring.h>
+#include <kparts/part.h>
+#include <kparts/browserextension.h>
+#include <kfileitem.h>
+#include <kdatastream.h>
+#include <kio/global.h>
+#include <libkonq_export.h>
+
+class KDirLister;
+namespace KParts { class BrowserExtension; }
+class KonqPropsView;
+class QScrollView;
+class KAction;
+class KToggleAction;
+class KonqDirPartBrowserExtension;
+
+class LIBKONQ_EXPORT KonqDirPart: public KParts::ReadOnlyPart
+{
+ Q_OBJECT
+
+ friend class KonqDirPartBrowserExtension;
+
+public:
+ KonqDirPart( QObject *parent, const char *name );
+
+ virtual ~KonqDirPart();
+
+ /**
+ * The derived part should call this in its constructor
+ */
+ void setBrowserExtension( KonqDirPartBrowserExtension * extension )
+ { m_extension = extension; }
+
+ KonqDirPartBrowserExtension * extension()
+ { return m_extension; }
+
+ /**
+ * The derived part should call this in its constructor
+ */
+ void setDirLister( KDirLister* lister );
+ // TODO KDE4 create the KDirLister here and simplify the parts?
+
+ QScrollView * scrollWidget();
+
+ virtual void saveState( QDataStream &stream );
+ virtual void restoreState( QDataStream &stream );
+
+ /** Called when LMB'ing an item in a directory view.
+ * @param fileItem must be set
+ * @param widget is only set as parent pointer for dialog boxes */
+ void lmbClicked( KFileItem * fileItem );
+
+ /** Called when MMB'ing an item in a directory view.
+ * @param fileItem if 0 it means we MMB'ed the background. */
+ void mmbClicked( KFileItem * fileItem );
+
+ void setNameFilter( const QString & nameFilter ) { m_nameFilter = nameFilter; }
+
+ QString nameFilter() const { return m_nameFilter; }
+
+ void setFilesToSelect( const QStringList & filesToSelect ) { m_filesToSelect = filesToSelect; }
+
+ /**
+ * Sets per directory mime-type based filtering.
+ *
+ * This method causes only the items matching the mime-type given
+ * by @p filters to be displayed. You can supply multiple mime-types
+ * by separating them with a space, eg. "text/plain image/x-png".
+ * To clear all the filters set for the current url simply call this
+ * function with a null or empty argument.
+ *
+ * NOTE: the filter(s) specified here only apply to the current
+ * directory as returned by @ref #url().
+ *
+ * @param filter mime-type(s) to filter directory by.
+ */
+ void setMimeFilter (const QStringList& filters);
+
+ /**
+ * Completely clears the internally stored list of mime filters
+ * set by call to @ref #setMimeFilter.
+ */
+ QStringList mimeFilter() const;
+
+
+ KonqPropsView * props() const { return m_pProps; }
+
+ /**
+ * "Cut" icons : disable those whose URL is in lst, enable the others
+ */
+ virtual void disableIcons( const KURL::List & lst ) = 0;
+
+ /**
+ * This class takes care of the counting of items, size etc. in the
+ * current directory. Call this in slotClear.
+ */
+ void resetCount();
+
+ /**
+ * Update the counts for those new items
+ */
+ void newItems( const KFileItemList & entries );
+
+ /**
+ * Update the counts with this item being deleted
+ */
+ void deleteItem( KFileItem * fileItem );
+
+ /**
+ * Show the counts for the directory in the status bar
+ */
+ void emitTotalCount();
+
+ // ##### TODO KDE 4: remove!
+ /**
+ * Show the counts for the list of items in the status bar.
+ * If none are provided emitTotalCount() is called to display
+ * the counts for the whole directory. However, that does not work
+ * for a treeview.
+ *
+ * @deprecated
+ */
+ void emitCounts( const KFileItemList & lst, bool selectionChanged );
+
+ /**
+ * Show the counts for the list of items in the status bar. The list
+ * can be empty.
+ *
+ * @param lst the list of fileitems for which to display the counts
+ * @since 3.4
+ */
+ void emitCounts( const KFileItemList & lst );
+
+ void emitMouseOver( const KFileItem * item );
+
+ /**
+ * Enables or disables the paste action. This depends both on
+ * the data in the clipboard and the number of files selected
+ * (pasting is only possible if not more than one file is selected).
+ */
+ void updatePasteAction();
+
+ /**
+ * Change the icon size of the view.
+ * The view should call it initially.
+ * The view should also reimplement it, to update the icons.
+ */
+ virtual void newIconSize( int size );
+
+ /**
+ * This is called by the actions that change the icon size.
+ * It stores the new size and calls newIconSize.
+ */
+ void setIconSize( int size );
+
+ /**
+ * This is called by konqueror itself, when the "find" functionality is activated
+ */
+ void setFindPart( KParts::ReadOnlyPart * part );
+
+ KParts::ReadOnlyPart * findPart() const { return m_findPart; }
+
+ virtual const KFileItem * currentItem() = 0; // { return 0L; }
+
+ virtual KFileItemList selectedFileItems() { return KFileItemList(); }
+
+ /**
+ * Re-implemented for internal reasons. API is unaffected. All inheriting
+ * classes should re-implement @ref doCloseURL() instead instead of this one.
+ */
+ bool closeURL ();
+
+signals:
+
+ /**
+ * Emitted whenever the current URL is about to be changed.
+ */
+ void aboutToOpenURL();
+
+ /**
+ * We emit this if we want a find part to be created for us.
+ * This happens when restoring from history
+ */
+ void findOpen( KonqDirPart * );
+
+ /**
+ * We emit this _after_ a find part has been created for us.
+ * This also happens initially.
+ */
+ void findOpened( KonqDirPart * );
+
+ /**
+ * We emit this to ask konq to close the find part
+ */
+ void findClosed( KonqDirPart * );
+
+ /**
+ * Emitted as the part is updated with new items.
+ * Useful for informing plugins of changes in view.
+ */
+ void itemsAdded( const KFileItemList& );
+
+ /**
+ * Emitted as the part is updated with these items.
+ * Useful for informing plugins of changes in view.
+ */
+ void itemRemoved( const KFileItem* );
+
+ /**
+ * Emitted with the list of filtered-out items whenever
+ * a mime-based filter(s) is set.
+ */
+ void itemsFilteredByMime( const KFileItemList& );
+
+public slots:
+
+ /**
+ * Re-implemented for internal reasons. API is unaffected. All inheriting
+ * classes should re-implement @ref doOpenURL() instead instead of this one.
+ */
+ bool openURL (const KURL&);
+
+ /**
+ * This is called either by the part's close button, or by the
+ * dir part itself, if entering a directory. It deletes the find
+ * part.
+ */
+ void slotFindClosed();
+
+ /**
+ * Start the animated "K" during kfindpart's file search
+ */
+ void slotStartAnimationSearching();
+
+ /**
+ * Start the animated "K" during kfindpart's file search
+ */
+ void slotStopAnimationSearching();
+
+ void slotBackgroundSettings();
+
+ /**
+ * Called when the clipboard's data changes, to update the 'cut' icons
+ * Call this when the directory's listing is finished, to draw icons as cut.
+ */
+ void slotClipboardDataChanged();
+
+ void slotIncIconSize();
+ void slotDecIconSize();
+
+ void slotIconSizeToggled( bool );
+
+ // slots connected to the directory lister - or to the kfind interface
+ virtual void slotStarted() = 0;
+ virtual void slotCanceled() = 0;
+ virtual void slotCompleted() = 0;
+ virtual void slotNewItems( const KFileItemList& ) = 0;
+ virtual void slotDeleteItem( KFileItem * ) = 0;
+ virtual void slotRefreshItems( const KFileItemList& ) = 0;
+ virtual void slotClear() = 0;
+ virtual void slotRedirection( const KURL & ) = 0;
+
+private slots:
+ void slotIconChanged(int group);
+protected:
+ /**
+ * Invoked from openURL to enable childern classes to
+ * handle open URL requests.
+ */
+ virtual bool doOpenURL( const KURL& ) = 0;
+ virtual bool doCloseURL () = 0;
+
+protected:
+
+ QString m_nameFilter;
+ QStringList m_filesToSelect;
+
+ KonqPropsView * m_pProps;
+
+ KAction *m_paIncIconSize;
+ KAction *m_paDecIconSize;
+ KToggleAction *m_paDefaultIcons;
+ KToggleAction *m_paHugeIcons;
+ KToggleAction *m_paLargeIcons;
+ KToggleAction *m_paMediumIcons;
+ KToggleAction *m_paSmallIcons;
+
+ KParts::ReadOnlyPart * m_findPart;
+ KonqDirPartBrowserExtension * m_extension;
+
+ // Remove all those in KDE4
+ int m_iIconSize[5];
+ KIO::filesize_t m_lDirSize;
+ uint m_lFileCount;
+ uint m_lDirCount;
+
+private:
+ void saveFindState( QDataStream& );
+ void restoreFindState( QDataStream& );
+
+ void adjustIconSizes();
+
+ class KonqDirPartPrivate;
+ KonqDirPartPrivate* d;
+};
+
+class LIBKONQ_EXPORT KonqDirPartBrowserExtension : public KParts::BrowserExtension
+{
+public:
+ KonqDirPartBrowserExtension( KonqDirPart* dirPart )
+ : KParts::BrowserExtension( dirPart )
+ , m_dirPart( dirPart )
+ {}
+
+ /**
+ * This calls saveState in KonqDirPart, and also takes care of the "find part".
+ *
+ * If your KonqDirPart-derived class needs to save and restore state,
+ * you should probably override KonqDirPart::saveState
+ * and KonqDirPart::restoreState, not the following methods.
+ */
+ virtual void saveState( QDataStream &stream );
+ virtual void restoreState( QDataStream &stream );
+
+private:
+ KonqDirPart* m_dirPart;
+};
+
+#endif