summaryrefslogtreecommitdiffstats
path: root/src/app/Panel/krdetailedview.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/Panel/krdetailedview.h')
-rw-r--r--src/app/Panel/krdetailedview.h181
1 files changed, 181 insertions, 0 deletions
diff --git a/src/app/Panel/krdetailedview.h b/src/app/Panel/krdetailedview.h
new file mode 100644
index 0000000..4d8c8b2
--- /dev/null
+++ b/src/app/Panel/krdetailedview.h
@@ -0,0 +1,181 @@
+/***************************************************************************
+ krdetailedview.h
+ -------------------
+ copyright : (C) 2000-2002 by Shie Erlich & Rafi Yanai
+ e-mail : krusader@users.sourceforge.net
+ web site : http://krusader.sourceforge.net
+---------------------------------------------------------------------------
+Description
+***************************************************************************
+
+A
+
+ db dD d8888b. db db .d8888. .d8b. d8888b. d88888b d8888b.
+ 88 ,8P' 88 `8D 88 88 88' YP d8' `8b 88 `8D 88' 88 `8D
+ 88,8P 88oobY' 88 88 `8bo. 88ooo88 88 88 88ooooo 88oobY'
+ 88`8b 88`8b 88 88 `Y8b. 88~~~88 88 88 88~~~~~ 88`8b
+ 88 `88. 88 `88. 88b d88 db 8D 88 88 88 .8D 88. 88 `88.
+ YP YD 88 YD ~Y8888P' `8888Y' YP YP Y8888D' Y88888P 88 YD
+
+ H e a d e r F i l e
+
+***************************************************************************
+* *
+* 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. *
+* *
+***************************************************************************/
+#ifndef KRDETAILEDVIEW_H
+#define KRDETAILEDVIEW_H
+
+#include <tdelistview.h>
+#include <ksqueezedtextlabel.h>
+#include <tdelocale.h>
+#include <tqwidget.h>
+#include <tqtimer.h>
+#include <tqdatetime.h>
+#include "krview.h"
+#include "krviewitem.h"
+
+// extends KrViewProperties to add detailedview-only properties
+class KrDetailedViewProperties: public KrViewProperties {
+public:
+ enum ColumnType { Unused = -1, Name = 0x0, Extention = 0x1, Mime = 0x2, Size = 0x3, DateTime = 0x4,
+ Permissions = 0x5, KrPermissions = 0x6, Owner = 0x7, Group = 0x8 };
+ static const int MAX_COLUMNS = 9;
+ int column[ MAX_COLUMNS ]; // column[ColumnType] contains the number of the requested column.
+ // This is used by column() and whenever item uses text() or setText()
+ bool numericPermissions; // show full permission column as octal numbers
+
+ KrDetailedViewProperties() {
+ for ( int i = 0; i < MAX_COLUMNS; i++ ) column[i] = Unused;
+ filter = KrViewProperties::All;
+ filterMask = KRQuery( "*" );
+ }
+};
+
+
+class TQDragMoveEvent;
+class KrRenameTimerObject;
+class ListPanel;
+class KrDetailedViewItem;
+
+/**
+ * KrDetailedView implements everthing and anything regarding a detailed view in a filemananger.
+ * IT MUST USE KrViewItem as the children to it's *TDEListView. KrDetailedView and KrViewItem are
+ * tightly coupled and the view will not work with other kinds of items.
+ * Apart from this, the view is self-reliant and you can use the vast interface to get whatever
+ * information is necessery from it.
+ */
+class KrDetailedView : public TDEListView, public KrView {
+ TQ_OBJECT
+
+ friend class KrDetailedViewItem;
+
+public:
+ KrDetailedView( TQWidget *parent, bool &left, TDEConfig *cfg = krConfig, const char *name = 0 );
+ virtual ~KrDetailedView();
+ virtual int column( KrDetailedViewProperties::ColumnType type );
+ virtual inline KrViewItem *getFirst() { return dynamic_cast<KrViewItem*>( firstChild() ); }
+ virtual inline KrViewItem *getLast() { return dynamic_cast<KrViewItem*>( lastChild() ); }
+ virtual inline KrViewItem *getNext( KrViewItem *current ) { return dynamic_cast<KrViewItem*>( dynamic_cast<TDEListViewItem*>( current ) ->itemBelow() ); }
+ virtual inline KrViewItem *getPrev( KrViewItem *current ) { return dynamic_cast<KrViewItem*>( dynamic_cast<TDEListViewItem*>( current ) ->itemAbove() ); }
+ virtual inline KrViewItem *getCurrentKrViewItem() { return dynamic_cast<KrViewItem*>( currentItem() ); }
+ virtual KrViewItem *getKrViewItemAt( const TQPoint &vp );
+ virtual inline KrViewItem *findItemByName( const TQString &name ) { return dynamic_cast<KrViewItem*>( findItem( name, 0 ) ); }
+ virtual void addItems( vfs *v, bool addUpDir = true );
+ virtual TQString getCurrentItem() const;
+ virtual void makeItemVisible( const KrViewItem *item );
+ virtual void setCurrentItem( const TQString& name );
+ virtual void updateView();
+ virtual void updateItem(KrViewItem* item);
+ virtual void clear();
+ virtual void sort() { TDEListView::sort(); }
+ virtual void setSortMode( KrViewProperties::SortSpec mode );
+ virtual void prepareForActive();
+ virtual void prepareForPassive();
+ virtual inline void saveSettings() { TDEListView::saveLayout( _config, nameInTDEConfig() ); }
+ virtual inline void restoreSettings() { TDEListView::restoreLayout( _config, nameInTDEConfig() ); }
+
+signals:
+ void middleButtonClicked( KrViewItem *item );
+ void currentChanged( KrViewItem *item );
+
+protected:
+ virtual void setup();
+ virtual void initProperties();
+ virtual void initOperator();
+ virtual KrViewItem *preAddItem(vfile *vf);
+ virtual bool preDelItem(KrViewItem *item);
+
+ void newColumn( KrDetailedViewProperties::ColumnType type );
+ void selectColumns();
+
+ virtual void keyPressEvent( TQKeyEvent *e );
+ virtual void imStartEvent( TQIMEvent* e );
+ virtual void imEndEvent( TQIMEvent *e );
+ virtual void imComposeEvent( TQIMEvent *e );
+ virtual void contentsMousePressEvent( TQMouseEvent *e );
+ virtual void contentsMouseReleaseEvent (TQMouseEvent *e);
+ virtual void contentsMouseMoveEvent ( TQMouseEvent * e );
+ virtual void contentsWheelEvent( TQWheelEvent *e );
+ virtual bool acceptDrag( TQDropEvent* e ) const;
+ virtual void contentsDropEvent( TQDropEvent *e );
+ virtual void contentsDragMoveEvent( TQDragMoveEvent *e );
+ virtual TQRect drawItemHighlighter(TQPainter *painter, TQListViewItem *item);
+ virtual void startDrag() { op()->startDrag(); }
+ virtual bool event( TQEvent *e );
+ virtual bool eventFilter( TQObject * watched, TQEvent * e );
+
+protected slots:
+ void rename( TQListViewItem *item, int c );
+ void slotClicked( TQListViewItem *item );
+ void slotDoubleClicked( TQListViewItem *item );
+ void slotItemDescription( TQListViewItem *item );
+ void slotCurrentChanged( TQListViewItem *item );
+ void handleContextMenu( TQListViewItem*, const TQPoint&, int );
+ virtual void renameCurrentItem();
+ virtual void showContextMenu( );
+ void inplaceRenameFinished( TQListViewItem *it, int col );
+ void setNameToMakeCurrent( TQListViewItem *it );
+ void sortOrderChanged(int);
+ void slotRightButtonPressed(TQListViewItem*, const TQPoint& point, int);
+ void slotSortOrderChanged(int col);
+ void transformCurrentChanged( TQListViewItem * item ) { emit currentChanged( dynamic_cast<KrViewItem *>(item ) ); }
+
+ /**
+ * used internally to produce the signal middleButtonClicked()
+ */
+ void slotMouseClicked( int button, TQListViewItem * item, const TQPoint & pos, int c );
+ inline void slotExecuted( TQListViewItem* i ) {
+ TQString tmp = dynamic_cast<KrViewItem*>( i ) ->name();
+ op()->emitExecuted( tmp );
+ }
+
+public slots:
+ void refreshColors();
+ void quickSearch( const TQString &, int = 0 );
+ void stopQuickSearch( TQKeyEvent* );
+ void handleQuickSearchEvent( TQKeyEvent* );
+
+private:
+ static TQString ColumnName[ KrDetailedViewProperties::MAX_COLUMNS ];
+ bool swushSelects;
+ TQPoint dragStartPos;
+ TQListViewItem *lastSwushPosition;
+ bool caseSensitiveSort;
+ KrViewItem *_currDragItem;
+ bool singleClicked;
+ bool modifierPressed;
+ TQTime clickTime;
+ TQListViewItem *clickedItem;
+ TQTimer renameTimer;
+ TQTimer contextMenuTimer;
+ TQPoint contextMenuPoint;
+ TQListViewItem *currentlyRenamedItem;
+ TQListViewItem *pressedItem;
+};
+
+#endif /* KRDETAILEDVIEW_H */