X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/ac62df5672f67393bd582edefaeccb0eb89537e8..d6488887ecf69d7f192b94de8dce34fae0b7eb76:/src/dolphindetailsview.h diff --git a/src/dolphindetailsview.h b/src/dolphindetailsview.h index 6197376a8..1b21690c0 100644 --- a/src/dolphindetailsview.h +++ b/src/dolphindetailsview.h @@ -22,7 +22,11 @@ #define DOLPHINDETAILSVIEW_H #include -#include +#include +#include +#include + +class DolphinController; /** * @brief Represents the details view which shows the name, size, @@ -32,21 +36,30 @@ * that full available width of the view is used by stretching the width * of the name column. */ -class DolphinDetailsView : public QTreeView +class LIBDOLPHINPRIVATE_EXPORT DolphinDetailsView : public QTreeView { Q_OBJECT public: - explicit DolphinDetailsView(DolphinView* parent); + explicit DolphinDetailsView(QWidget* parent, DolphinController* controller); virtual ~DolphinDetailsView(); protected: virtual bool event(QEvent* event); virtual QStyleOptionViewItem viewOptions() const; virtual void contextMenuEvent(QContextMenuEvent* event); + virtual void mousePressEvent(QMouseEvent* event); + virtual void mouseMoveEvent(QMouseEvent* event); virtual void mouseReleaseEvent(QMouseEvent* event); + virtual void startDrag(Qt::DropActions supportedActions); virtual void dragEnterEvent(QDragEnterEvent* event); + virtual void dragLeaveEvent(QDragLeaveEvent* event); + virtual void dragMoveEvent(QDragMoveEvent* event); virtual void dropEvent(QDropEvent* event); + virtual void paintEvent(QPaintEvent* event); + virtual void keyPressEvent(QKeyEvent* event); + virtual void resizeEvent(QResizeEvent* event); + virtual void closeEvent(QCloseEvent* event); private slots: /** @@ -66,10 +79,83 @@ private slots: * with the current state of the details view. * @param column Index of the current sorting column. */ - void synchronizeSortingState(int column); + void synchronizeSortingState(int column); + + /** + * Is invoked when the mouse cursor has entered an item. The controller + * gets informed to emit the itemEntered() signal if the mouse cursor + * is above the name column. Otherwise the controller gets informed + * to emit the itemViewportEntered() signal (all other columns should + * behave as viewport area). + */ + void slotEntered(const QModelIndex& index); + + /** + * Updates the destination \a m_elasticBandDestination from + * the elastic band to the current mouse position and triggers + * an update. + */ + void updateElasticBand(); + + /** + * Returns the rectangle for the elastic band dependent from the + * origin \a m_elasticBandOrigin, the current destination + * \a m_elasticBandDestination and the viewport position. + */ + QRect elasticBandRect() const; + + void zoomIn(); + void zoomOut(); + + /** + * Called by QTreeView when an item is activated (clicked or double-clicked) + */ + void triggerItem(const QModelIndex& index); + + /** + * Opens a context menu at the position \a pos and allows to + * configure the visibility of the header columns. + */ + void configureColumns(const QPoint& pos); + + void updateColumnVisibility(); + +private: + bool isZoomInPossible() const; + bool isZoomOutPossible() const; + + /** + * Updates the size of the decoration dependent on the + * icon size of the DetailsModeSettings. The controller + * will get informed about possible zoom in/zoom out + * operations. + */ + void updateDecorationSize(); + + /** Return the upper left position in pixels of the viewport content. */ + QPoint contentsPos() const; + + KFileItem itemForIndex(const QModelIndex& index) const; + + KFileItemDelegate::Information infoForColumn(int columnIndex) const; + + /** + * Resizes all columns in a way to use the whole available width of the view. + */ + void resizeColumns(); private: - DolphinView* m_dolphinView; + DolphinController* m_controller; + QStyleOptionViewItem m_viewOptions; + + bool m_clearAdditionalInfo; + + bool m_dragging; // TODO: remove this property when the issue #160611 is solved in Qt 4.4 + QRect m_dropRect; // TODO: remove this property when the issue #160611 is solved in Qt 4.4 + + bool m_showElasticBand; + QPoint m_elasticBandOrigin; + QPoint m_elasticBandDestination; }; #endif