summaryrefslogtreecommitdiffstats
path: root/konqueror/listview/konq_listviewwidget.h
diff options
context:
space:
mode:
Diffstat (limited to 'konqueror/listview/konq_listviewwidget.h')
-rw-r--r--konqueror/listview/konq_listviewwidget.h274
1 files changed, 274 insertions, 0 deletions
diff --git a/konqueror/listview/konq_listviewwidget.h b/konqueror/listview/konq_listviewwidget.h
new file mode 100644
index 000000000..ae79e5c03
--- /dev/null
+++ b/konqueror/listview/konq_listviewwidget.h
@@ -0,0 +1,274 @@
+/* This file is part of the KDE project
+ Copyright (C) 1998, 1999 Torben Weis <[email protected]>
+ 2004 Michael Brade <[email protected]>
+
+ 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 __konq_listviewwidget_h__
+#define __konq_listviewwidget_h__
+
+#include <tqvaluelist.h>
+#include <tqvaluevector.h>
+
+#include <kurl.h>
+#include <tdefileitem.h>
+#include <tdelistview.h>
+#include <tdeparts/browserextension.h>
+#include <konq_propsview.h>
+#include "konq_listviewitems.h"
+
+namespace TDEIO { class Job; }
+
+class TQCursor;
+class TQRect;
+class KDirLister;
+class KonqFMSettings;
+class ListViewPropertiesExtension;
+class TDEToggleAction;
+class KonqListView;
+class KonqFileTip;
+class ListViewBrowserExtension;
+class TQTimer;
+class TQFocusEvent;
+class TQDragMoveEvent;
+class TQDragEnterEvent;
+class TQDragLeaveEvent;
+class TQDropEvent;
+class TQPaintEvent;
+class TQResizeEvent;
+class TQMouseEvent;
+
+class ColumnInfo
+{
+public:
+ ColumnInfo();
+ void setData( const TQString& n, const TQString& desktopName, int kioUds,
+ TDEToggleAction *someAction, int theWith = -1 );
+ void setData( const TQString& n, const TQString& desktopName, int kioUds /* UDS_EXTRA */,
+ TQVariant::Type type, TDEToggleAction *someAction, int theWith = -1 );
+ int displayInColumn;
+ TQString name;
+ TQString desktopFileName;
+ int udsId;
+ TQVariant::Type type; // only used if udsId == UDS_EXTRA
+ bool displayThisOne;
+ TDEToggleAction *toggleThisOne;
+ int width;
+};
+
+/**
+ * The tree view widget (based on TDEListView).
+ * Most of the functionality is here.
+ */
+class KonqBaseListViewWidget : public TDEListView
+{
+ friend class KonqBaseListViewItem;
+ friend class KonqListView;
+ friend class ListViewBrowserExtension;
+
+ Q_OBJECT
+
+public:
+ KonqBaseListViewWidget( KonqListView *parent, TQWidget *parentWidget );
+ virtual ~KonqBaseListViewWidget();
+ unsigned int NumberOfAtoms;
+
+ virtual void stop();
+ const KURL& url();
+
+ struct iterator
+ {
+ KonqBaseListViewItem *m_p;
+
+ iterator() : m_p( 0L ) { }
+ iterator( KonqBaseListViewItem *_b ) : m_p( _b ) { }
+ iterator( const iterator& _it ) : m_p( _it.m_p ) { }
+
+ KonqBaseListViewItem& operator*() { return *m_p; }
+ KonqBaseListViewItem *operator->() { return m_p; }
+ bool operator==( const iterator& _it ) { return ( m_p == _it.m_p ); }
+ bool operator!=( const iterator& _it ) { return ( m_p != _it.m_p ); }
+ iterator& operator++();
+ iterator operator++(int);
+ };
+ iterator begin() { iterator it( (KonqBaseListViewItem *)firstChild() ); return it; }
+ iterator end() { iterator it; return it; }
+
+ virtual bool openURL( const KURL &url );
+
+ void selectedItems( TQPtrList<KonqBaseListViewItem> *_list );
+ KFileItemList visibleFileItems();
+ KFileItemList selectedFileItems();
+ KURL::List selectedUrls( bool mostLocal = false );
+
+ /** @return the KonqListViewDir which handles the directory _url */
+ //virtual KonqListViewDir *findDir ( const TQString & _url );
+
+ /**
+ * @return the Properties instance for this view. Used by the items.
+ */
+ KonqPropsView *props() const;
+
+ //TQPtrList<ColumnInfo> *columnConfigInfo() { return &confColumns; };
+ TQValueVector<ColumnInfo>& columnConfigInfo() { return confColumns; };
+ TQString sortedByColumn;
+
+ virtual void setShowIcons( bool enable ) { m_showIcons = enable; }
+ virtual bool showIcons() { return m_showIcons; }
+
+ void setItemFont( const TQFont &f ) { m_itemFont = f; }
+ TQFont itemFont() const { return m_itemFont; }
+ void setItemColor( const TQColor &c ) { m_itemColor = c; }
+ TQColor itemColor() const { return m_itemColor; }
+ int iconSize() const { return props()->iconSize(); }
+
+ void setAscending( bool b ) { m_bAscending = b; }
+ bool ascending() const { return m_bAscending; }
+ bool caseInsensitiveSort() const;
+
+ virtual void paintEmptyArea( TQPainter *p, const TQRect &r );
+
+ virtual void saveState( TQDataStream & );
+ virtual void restoreState( TQDataStream & );
+
+ virtual void disableIcons( const KURL::List& lst );
+
+ KonqListView *m_pBrowserView;
+ KonqFMSettings *m_pSettings;
+
+signals:
+ void viewportAdjusted();
+
+public slots:
+ //virtual void slotOnItem( KonqBaseListViewItem* _item );
+ // The '2' was added to differentiate it from TDEListView::slotMouseButtonClicked()
+ void slotMouseButtonClicked2( int _button, TQListViewItem *_item, const TQPoint& pos, int );
+ virtual void slotExecuted( TQListViewItem *_item );
+ void slotItemRenamed( TQListViewItem *, const TQString &, int );
+ void slotRenameNextItem(TQListViewItem *item, int col);
+ void slotRenamePrevItem(TQListViewItem *item, int col);
+
+protected slots:
+ void slotAutoScroll();
+
+ // from TQListView
+ virtual void slotReturnPressed( TQListViewItem *_item );
+ virtual void slotCurrentChanged( TQListViewItem *_item ) { slotOnItem( _item ); }
+
+ // slots connected to the directory lister
+ virtual void slotStarted();
+ virtual void slotCompleted();
+ virtual void slotCanceled();
+ virtual void slotClear();
+ virtual void slotNewItems( const KFileItemList & );
+ virtual void slotDeleteItem( KFileItem * );
+ virtual void slotRefreshItems( const KFileItemList & );
+ virtual void slotRedirection( const KURL & );
+ void slotPopupMenu( TQListViewItem *, const TQPoint&, int );
+
+ // forces a repaint on column size changes / branch expansion
+ // when there is a background pixmap
+ void slotUpdateBackground();
+
+ //Notifies the browser view of the currently selected items
+ void slotSelectionChanged();
+ virtual void reportItemCounts();
+
+protected:
+ //creates the listview columns according to confColumns
+ virtual void createColumns();
+ //reads the configuration for the columns of the current
+ //protocol, it is called when the protocol changes
+ //it checks/unchecks the menu items and sets confColumns
+ void readProtocolConfig( const KURL& url );
+ //calls updateContents of every ListViewItem, called after
+ //the columns changed
+ void updateListContents();
+
+ //this is called in the constructor, so virtual would be nonsense
+ void initConfig();
+
+ virtual void startDrag();
+ virtual void viewportDragMoveEvent( TQDragMoveEvent *_ev );
+ virtual void viewportDragEnterEvent( TQDragEnterEvent *_ev );
+ virtual void viewportDragLeaveEvent( TQDragLeaveEvent *_ev );
+ virtual void viewportDropEvent( TQDropEvent *_ev );
+ virtual void viewportPaintEvent( TQPaintEvent *e );
+ virtual void viewportResizeEvent( TQResizeEvent *e );
+
+ virtual void drawRubber( TQPainter * );
+ virtual void contentsMousePressEvent( TQMouseEvent *e );
+ virtual void contentsMouseReleaseEvent( TQMouseEvent *e );
+ virtual void contentsMouseMoveEvent( TQMouseEvent *e );
+ virtual void contentsWheelEvent( TQWheelEvent * e );
+
+ virtual void leaveEvent( TQEvent *e );
+
+ /** Common method for slotCompleted and slotCanceled */
+ virtual void setComplete();
+
+ //the second parameter is set to true when the menu shortcut is pressed,
+ //so the position of the mouse pointer doesn't matter when using keyboard, aleXXX
+ virtual void popupMenu( const TQPoint& _global, bool alwaysForSelectedFiles = false );
+
+ //this one is called only by TDEListView, and this is friend anyways (Alex)
+ //KDirLister *dirLister() const { return m_dirLister; }
+
+protected:
+ int executeArea( TQListViewItem *_item );
+
+ /** The directory lister for this URL */
+ KDirLister *m_dirLister;
+
+ //TQPtrList<ColumnInfo> confColumns;
+ // IMO there is really no need for an advanced data structure
+ //we have a fixed number of members,
+ //it consumes less memory and access should be faster (Alex)
+ // This might not be the case for ever... we should introduce custom fields in tdeio (David)
+ TQValueVector<ColumnInfo> confColumns;
+
+ KonqBaseListViewItem *m_dragOverItem;
+ KonqBaseListViewItem *m_activeItem;
+ TQPtrList<KonqBaseListViewItem> *m_selected;
+ TQTimer *m_scrollTimer;
+
+ TQFont m_itemFont;
+ TQColor m_itemColor;
+
+ TQRect *m_rubber;
+ TQPixmap *m_backrubber;
+
+ bool m_bTopLevelComplete:1;
+ bool m_showIcons:1;
+ bool m_bCaseInsensitive:1;
+ bool m_bUpdateContentsPosAfterListing:1;
+ bool m_bAscending:1;
+ bool m_itemFound:1;
+ bool m_restored:1;
+
+ int m_filenameColumn;
+ int m_filenameColumnWidth;
+
+ KURL m_url;
+
+ TQString m_itemToGoTo;
+ TQStringList m_itemsToSelect;
+ TQTimer *m_backgroundTimer;
+
+ KonqFileTip *m_fileTip;
+};
+
+#endif