X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/ac62df5672f67393bd582edefaeccb0eb89537e8..ec00f379dc42b00a64ab1af25bb4bb1a06bd7449:/src/dolphindetailsview.h diff --git a/src/dolphindetailsview.h b/src/dolphindetailsview.h index 6197376a8..fdd93b03c 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,26 @@ * 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 dragEnterEvent(QDragEnterEvent* event); + virtual void dragLeaveEvent(QDragLeaveEvent* event); + virtual void dragMoveEvent(QDragMoveEvent* event); virtual void dropEvent(QDropEvent* event); + virtual void paintEvent(QPaintEvent* event); private slots: /** @@ -66,10 +75,64 @@ 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 slotItemActivated(const QModelIndex& index); private: - DolphinView* m_dolphinView; + 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; + +private: + DolphinController* m_controller; + QStyleOptionViewItem m_viewOptions; + + 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