┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views/dolphincolumnview.h
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2010-07-24 21:45:49 +0000
committerPeter Penz <[email protected]>2010-07-24 21:45:49 +0000
commit652d08c9242ed51d86dba3b2afda9d3b2e9a9cd7 (patch)
treef65face40917d355fa74f593e04df9865f5a1552 /src/views/dolphincolumnview.h
parent935cc8a03bcb6088ff520d7161db14b9b6a29044 (diff)
Sourcecode hierarchy cleanup: Create folder "views" and move view related sources to it
svn path=/trunk/KDE/kdebase/apps/; revision=1154146
Diffstat (limited to 'src/views/dolphincolumnview.h')
-rw-r--r--src/views/dolphincolumnview.h170
1 files changed, 170 insertions, 0 deletions
diff --git a/src/views/dolphincolumnview.h b/src/views/dolphincolumnview.h
new file mode 100644
index 000000000..64feac4f9
--- /dev/null
+++ b/src/views/dolphincolumnview.h
@@ -0,0 +1,170 @@
+/***************************************************************************
+ * Copyright (C) 2007-2009 by Peter Penz <[email protected]> *
+ * *
+ * 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. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef DOLPHINCOLUMNVIEW_H
+#define DOLPHINCOLUMNVIEW_H
+
+#include "dolphinview.h"
+
+#include <QFont>
+#include <QListView>
+#include <QSize>
+#include <QStyleOption>
+
+#include <kurl.h>
+
+class DolphinColumnViewContainer;
+class DolphinModel;
+class DolphinSortFilterProxyModel;
+class DolphinDirLister;
+class KFileItem;
+class SelectionManager;
+class ViewExtensionsFactory;
+
+/**
+ * Represents one column inside the DolphinColumnViewContainer.
+ */
+class DolphinColumnView : public QListView
+{
+ Q_OBJECT
+
+public:
+ DolphinColumnView(QWidget* parent,
+ DolphinColumnViewContainer* container,
+ const KUrl& url);
+ virtual ~DolphinColumnView();
+
+ /**
+ * An active column is defined as column, which shows the same URL
+ * as indicated by the URL navigator. The active column is usually
+ * drawn in a lighter color. All operations are applied to this column.
+ */
+ void setActive(bool active);
+ bool isActive() const;
+
+ /**
+ * Sets the directory URL of the child column that is shown next to
+ * this column. This property is only used for a visual indication
+ * of the shown directory, it does not trigger a loading of the model.
+ */
+ void setChildUrl(const KUrl& url);
+ KUrl childUrl() const;
+
+ /** Sets the directory URL that is shown inside the column widget. */
+ void setUrl(const KUrl& url);
+
+ /** Returns the directory URL that is shown inside the column widget. */
+ KUrl url() const;
+
+ /**
+ * Updates the background color dependent from the activation state
+ * \a isViewActive of the column view.
+ */
+ void updateBackground();
+
+ /**
+ * Returns the item on the position \a pos. The KFileItem instance
+ * is null if no item is below the position.
+ */
+ KFileItem itemAt(const QPoint& pos) const;
+
+ virtual void setSelectionModel(QItemSelectionModel* model);
+
+protected:
+ virtual QStyleOptionViewItem viewOptions() const;
+ 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 mousePressEvent(QMouseEvent* event);
+ virtual void keyPressEvent(QKeyEvent* event);
+ virtual void contextMenuEvent(QContextMenuEvent* event);
+ virtual void wheelEvent(QWheelEvent* event);
+ virtual void leaveEvent(QEvent* event);
+ virtual void currentChanged(const QModelIndex& current, const QModelIndex& previous);
+
+private slots:
+ void setZoomLevel(int level);
+
+ void slotEntered(const QModelIndex& index);
+ void requestActivation();
+ void updateFont();
+
+ void slotShowPreviewChanged();
+
+private:
+ /** Used by DolphinColumnView::setActive(). */
+ void activate();
+
+ /** Used by DolphinColumnView::setActive(). */
+ void deactivate();
+
+ void updateDecorationSize(bool showPreview);
+
+private:
+ bool m_active;
+ DolphinColumnViewContainer* m_container;
+ SelectionManager* m_selectionManager;
+ ViewExtensionsFactory* m_extensionsFactory;
+ KUrl m_url; // URL of the directory that is shown
+ KUrl m_childUrl; // URL of the next column that is shown
+
+ QFont m_font;
+ QSize m_decorationSize;
+
+ DolphinDirLister* m_dirLister;
+ DolphinModel* m_dolphinModel;
+ DolphinSortFilterProxyModel* m_proxyModel;
+
+ QRect m_dropRect;
+
+ friend class DolphinColumnViewContainer;
+};
+
+inline bool DolphinColumnView::isActive() const
+{
+ return m_active;
+}
+
+inline void DolphinColumnView::setChildUrl(const KUrl& url)
+{
+ m_childUrl = url;
+}
+
+inline KUrl DolphinColumnView::childUrl() const
+{
+ return m_childUrl;
+}
+
+inline void DolphinColumnView::setUrl(const KUrl& url)
+{
+ if (url != m_url) {
+ m_url = url;
+ //reload();
+ }
+}
+
+inline KUrl DolphinColumnView::url() const
+{
+ return m_url;
+}
+
+#endif