X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/be9746e87bb6a42e641dbf36c528a60fb564420a..d6488887ecf69d7f192b94de8dce34fae0b7eb76:/src/dolphincolumnview.h diff --git a/src/dolphincolumnview.h b/src/dolphincolumnview.h index 500da74ac..30ac7ae71 100644 --- a/src/dolphincolumnview.h +++ b/src/dolphincolumnview.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) * + * Copyright (C) 2007 by Peter Penz * * * * 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 * @@ -20,15 +20,27 @@ #ifndef DOLPHINCOLUMNVIEW_H #define DOLPHINCOLUMNVIEW_H -#include -#include +#include +#include +#include +#include +#include + +class DolphinColumnWidget; class DolphinController; +class DolphinModel; +class QAbstractProxyModel; +class QFrame; +class QTimeLine; /** - * @brief TODO + * @brief Represents the view, where each directory is show as separate column. + * + * @see DolphinIconsView + * @see DolphinDetailsView */ -class DolphinColumnView : public QColumnView +class DolphinColumnView : public QAbstractItemView { Q_OBJECT @@ -36,20 +48,71 @@ public: explicit DolphinColumnView(QWidget* parent, DolphinController* controller); virtual ~DolphinColumnView(); + virtual QModelIndex indexAt(const QPoint& point) const; + virtual void scrollTo(const QModelIndex& index, ScrollHint hint = EnsureVisible); + virtual QRect visualRect(const QModelIndex& index) const; + + /** Inverts the selection of the currently active column. */ + void invertSelection(); + + /** + * Reloads the content of all columns. In opposite to non-hierarchical views + * it is not enough to reload the KDirLister, instead this method must be explicitly + * invoked. + */ + void reload(); + + /** + * Adjusts the root URL of the first column and removes all + * other columns. + */ + void setRootUrl(const KUrl& url); + + /** Returns the URL of the first column. */ + KUrl rootUrl() const; + + /** + * Filters the currently shown items by \a nameFilter. All items + * which contain the given filter string will be shown. + */ + void setNameFilter(const QString& nameFilter); + + /** + * Returns the currently used name filter. All items + * which contain the name filter will be shown. + */ + QString nameFilter() const; + + /** + * Shows the column which represents the URL \a url. If the column + * is already shown, it gets activated, otherwise it will be created. + */ + void showColumn(const KUrl& url); + +public slots: + /** @see QAbstractItemView::selectAll() */ + virtual void selectAll(); + protected: - virtual QStyleOptionViewItem viewOptions() const; - virtual void contextMenuEvent(QContextMenuEvent* event); + virtual bool isIndexHidden(const QModelIndex& index) const; + virtual QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers); + virtual void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags flags); + virtual QRegion visualRegionForSelection(const QItemSelection& selection) const; + virtual int horizontalOffset() const; + virtual int verticalOffset() const; + virtual void mousePressEvent(QMouseEvent* event); - virtual void dragEnterEvent(QDragEnterEvent* event); - virtual void dropEvent(QDropEvent* event); + virtual void resizeEvent(QResizeEvent* event); private slots: void zoomIn(); void zoomOut(); -private: - bool isZoomInPossible() const; - bool isZoomOutPossible() const; + /** + * Moves the content of the columns view to represent + * the scrollbar position \a x. + */ + void moveContentHorizontally(int x); /** * Updates the size of the decoration dependent on the @@ -59,9 +122,64 @@ private: */ void updateDecorationSize(); + /** + * Updates the background color of the columns to respect + * the current activation state \a active. + */ + void updateColumnsBackground(bool active); + + void slotShowHiddenFilesChanged(); + void slotShowPreviewChanged(); + +private: + bool isZoomInPossible() const; + bool isZoomOutPossible() const; + + DolphinColumnWidget* activeColumn() const; + + /** + * Deactivates the currently active column and activates + * the new column indicated by \a index. m_index represents + * the active column afterwards. Also the URL of the navigator + * will be adjusted to reflect the column URL. + */ + void setActiveColumnIndex(int index); + + void layoutColumns(); + void updateScrollBar(); + + /** + * Assures that the currently active column is fully visible + * by adjusting the horizontal position of the content. + */ + void assureVisibleActiveColumn(); + + /** + * Request the activation for the column \a column. It is assured + * that the columns gets fully visible by adjusting the horizontal + * position of the content. + */ + void requestActivation(DolphinColumnWidget* column); + + /** Removes all columns except of the root column. */ + void removeAllColumns(); + private: DolphinController* m_controller; - QStyleOptionViewItem m_viewOptions; + bool m_active; + int m_index; + int m_contentX; + QList m_columns; + QFrame* m_emptyViewport; + QTimeLine* m_animation; + QString m_nameFilter; + + friend class DolphinColumnWidget; }; +inline DolphinColumnWidget* DolphinColumnView::activeColumn() const +{ + return m_columns[m_index]; +} + #endif