#ifndef DOLPHINCOLUMNVIEW_H
#define DOLPHINCOLUMNVIEW_H
+#include "dolphinview.h"
+
+#include <kurl.h>
+
#include <QAbstractItemView>
#include <QList>
+#include <QString>
#include <QStyleOption>
-class ColumnWidget;
+class DolphinColumnWidget;
class DolphinController;
class DolphinModel;
-class KUrl;
class QAbstractProxyModel;
+class QFrame;
class QTimeLine;
/**
explicit DolphinColumnView(QWidget* parent, DolphinController* controller);
virtual ~DolphinColumnView();
+ /** @see QAbstractItemView::indexAt() */
virtual QModelIndex indexAt(const QPoint& point) const;
+
+ /**
+ * Returns the item on the position \a pos. The KFileItem instance
+ * is null if no item is below the position.
+ */
+ KFileItem itemAt(const QPoint& point) const;
+
+ /** @see QAbstractItemView::scrollTo() */
virtual void scrollTo(const QModelIndex& index, ScrollHint hint = EnsureVisible);
+
+ /** @see QAbstractItemView::visualRect() */
virtual QRect visualRect(const QModelIndex& index) const;
- virtual void setModel(QAbstractItemModel* model);
/** Inverts the selection of the currently active column. */
void invertSelection();
*/
void reload();
-public slots:
+ /**
+ * 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);
+ /**
+ * Does an inline editing for the item \a item
+ * inside the active column.
+ */
+ void editItem(const KFileItem& item);
+
+ /**
+ * Returns the selected items of the active column.
+ */
+ KFileItemList selectedItems() const;
+
+ /**
+ * Returns the MIME data for the selected items
+ * of the active column.
+ */
+ QMimeData* selectionMimeData() const;
+
+public slots:
/** @see QAbstractItemView::selectAll() */
virtual void selectAll();
+signals:
+ /**
+ * Requests that the given column be deleted at the discretion
+ * of the receiver of the signal.
+ */
+ void requestColumnDeletion(QAbstractItemView* column);
+
protected:
virtual bool isIndexHidden(const QModelIndex& index) const;
virtual QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers);
virtual void mousePressEvent(QMouseEvent* event);
virtual void resizeEvent(QResizeEvent* event);
+ virtual void wheelEvent(QWheelEvent* event);
private slots:
- void zoomIn();
- void zoomOut();
+ void setZoomLevel(int level);
/**
* Moves the content of the columns view to represent
* will get informed about possible zoom in/zoom out
* operations.
*/
- void updateDecorationSize();
+ void updateDecorationSize(bool showPreview);
/**
- * Expands the directory model the the currently active URL.
- * Used by DolphinColumnView::reload() after the directory
- * lister has been loaded.
+ * Updates the background color of the columns to respect
+ * the current activation state \a active.
*/
- void expandToActiveUrl();
+ void updateColumnsBackground(bool active);
- /**
- * Triggers the updating of columns after the model index
- * \a index has been expanded. Used by DolphinModel::expandToActiveUrl().
- */
- void triggerUpdateColumns(const QModelIndex& index);
-
- /**
- * Adjusts the root index of all columns to represent the reloaded
- * model. Used by DolphinModel::triggerUpdateColumns().
- */
- void updateColumns();
-
- /**
- * Is invoked when the directory lister has completed the loading
- * and invokes expandToActiveUrl() asynchronously.
- */
- void triggerExpandToActiveUrl();
+ void slotSortingChanged(DolphinView::Sorting sorting);
+ void slotSortOrderChanged(Qt::SortOrder order);
+ void slotShowHiddenFilesChanged();
+ void slotShowPreviewChanged();
private:
- bool isZoomInPossible() const;
- bool isZoomOutPossible() const;
-
- ColumnWidget* activeColumn() const;
+ DolphinColumnWidget* activeColumn() const;
/**
* Deactivates the currently active column and activates
* that the columns gets fully visible by adjusting the horizontal
* position of the content.
*/
- void requestActivation(ColumnWidget* column);
+ void requestActivation(DolphinColumnWidget* column);
+
+ /** Removes all columns except of the root column. */
+ void removeAllColumns();
+
+ /**
+ * Returns the position of the point \a point relative to the column
+ * \a column.
+ */
+ QPoint columnPosition(DolphinColumnWidget* column, const QPoint& point) const;
+
+ /**
+ * Deletes the column. If the itemview of the controller is set to the column,
+ * the controllers itemview is set to 0.
+ */
+ void deleteColumn(DolphinColumnWidget* column);
private:
DolphinController* m_controller;
- bool m_restoreActiveColumnFocus;
+ bool m_active;
int m_index;
int m_contentX;
- QList<ColumnWidget*> m_columns;
+ QList<DolphinColumnWidget*> m_columns;
+ QFrame* m_emptyViewport;
QTimeLine* m_animation;
+ QString m_nameFilter;
- DolphinModel* m_dolphinModel;
- QAbstractProxyModel* m_proxyModel;
-
- friend class ColumnWidget;
+ friend class DolphinColumnWidget;
};
-inline ColumnWidget* DolphinColumnView::activeColumn() const
+inline DolphinColumnWidget* DolphinColumnView::activeColumn() const
{
return m_columns[m_index];
}