┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphinviewcontainer.h
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2007-06-07 21:10:48 +0000
committerPeter Penz <[email protected]>2007-06-07 21:10:48 +0000
commitbe9746e87bb6a42e641dbf36c528a60fb564420a (patch)
tree678e044f977b702685aa7267957b797f623efbb3 /src/dolphinviewcontainer.h
parent5de9950182b5a1b0b99e4cc51e48d4d83b6bef24 (diff)
First big step to make it possible that the DolphinView can be embedded as KPart into Konqueror (discussed with David Faure). A lot of refactoring of the DolphinView has been done:
- The DolphinView does not contain the URL navigator, the filterbar and the statusbar anymore. Those widgets have been moved to DolphinViewContainer. - The DolphinView does not contain any reference to the main window anymore. Currently there are some minor regressions (the statusbar shows less informations, renaming has been deactivated), but they will get fixed during the next days. Also still a lot of interface cleanups must be done, but let's just do it step by step... svn path=/trunk/KDE/kdebase/apps/; revision=672692
Diffstat (limited to 'src/dolphinviewcontainer.h')
-rw-r--r--src/dolphinviewcontainer.h232
1 files changed, 232 insertions, 0 deletions
diff --git a/src/dolphinviewcontainer.h b/src/dolphinviewcontainer.h
new file mode 100644
index 000000000..5652e4b4a
--- /dev/null
+++ b/src/dolphinviewcontainer.h
@@ -0,0 +1,232 @@
+/***************************************************************************
+ * Copyright (C) 2007 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 DOLPHINVIEWCONTAINER_H
+#define DOLPHINVIEWCONTAINER_H
+
+#include "dolphinview.h"
+
+#include <kparts/part.h>
+#include <kfileitem.h>
+#include <kfileitemdelegate.h>
+#include <kio/job.h>
+
+#include <kurlnavigator.h>
+
+#include <QtGui/QKeyEvent>
+#include <QtCore/QLinkedList>
+#include <QtGui/QListView>
+#include <QtGui/QBoxLayout>
+#include <QtGui/QWidget>
+
+class DolphinController;
+class FilterBar;
+class KFileItemDelegate;
+class KUrl;
+class KDirModel;
+class KUrlNavigator;
+class DolphinColumnView;
+class DolphinDetailsView;
+class DolphinDirLister;
+class DolphinIconsView;
+class DolphinMainWindow;
+class DolphinSortFilterProxyModel;
+class DolphinStatusBar;
+class QModelIndex;
+class ViewProperties;
+
+/**
+ * @short Represents a view for the directory content
+ * including the navigation bar, filter bar and status bar.
+ *
+ * View modes for icons, details and columns are supported. Currently
+ * Dolphin allows to have up to two views inside the main window.
+ *
+ * @see DolphinView
+ * @see FilterBar
+ * @see KUrlNavigator
+ * @see DolphinStatusBar
+ */
+class DolphinViewContainer : public QWidget
+{
+ Q_OBJECT
+
+public:
+ DolphinViewContainer(DolphinMainWindow* mainwindow,
+ QWidget *parent,
+ const KUrl& url,
+ DolphinView::Mode mode = DolphinView::IconsView,
+ bool showHiddenFiles = false);
+
+ virtual ~DolphinViewContainer();
+
+ /**
+ * Sets the current active URL, where all actions are applied. The
+ * URL navigator is synchronized with this URL. The signals
+ * KUrlNavigator::urlChanged() and KUrlNavigator::historyChanged()
+ * are emitted.
+ * @see DolphinViewContainer::urlNavigator()
+ */
+ void setUrl(const KUrl& url);
+
+ /**
+ * Returns the current active URL, where all actions are applied.
+ * The URL navigator is synchronized with this URL.
+ */
+ const KUrl& url() const;
+
+ /**
+ * If \a active is true, the view container will marked as active. The active
+ * view container is defined as view where all actions are applied to.
+ */
+ void setActive(bool active);
+ bool isActive() const;
+
+ /**
+ * Triggers the renaming of the currently selected items, where
+ * the user must input a new name for the items.
+ */
+ void renameSelectedItems();
+
+ KFileItem* fileItem(const QModelIndex index) const;
+
+ /**
+ * Renames the filename of the source URL by the new file name.
+ * If the new file name already exists, a dialog is opened which
+ * asks the user to enter a new name.
+ */
+ void rename(const KUrl& source, const QString& newName);
+
+ DolphinStatusBar* statusBar() const;
+
+ /**
+ * Returns true, if the URL shown by the navigation bar is editable.
+ * @see KUrlNavigator
+ */
+ bool isUrlEditable() const;
+
+ inline KUrlNavigator* urlNavigator() const;
+
+ inline DolphinView* view() const;
+
+ /** Returns true, if the filter bar is visible. */
+ bool isFilterBarVisible() const;
+
+ /**
+ * Return the DolphinMainWindow this View belongs to. It is guaranteed
+ * that we have one.
+ */
+ DolphinMainWindow* mainWindow() const ;
+
+public slots:
+ /**
+ * Popups the filter bar above the status bar if \a show is true.
+ */
+ void showFilterBar(bool show);
+
+ /**
+ * Updates the number of items (= number of files + number of
+ * directories) in the statusbar. If files are selected, the number
+ * of selected files and the sum of the filesize is shown.
+ */
+ void updateStatusBar();
+
+signals:
+ /**
+ * Is emitted whenever the filter bar has changed its visibility state.
+ */
+ void showFilterBarChanged(bool shown);
+
+private slots:
+ void updateProgress(int percent);
+
+ /**
+ * Updates the number of items (= number of directories + number of files)
+ * and shows this information in the statusbar.
+ */
+ void updateItemCount();
+
+ /** Shows the information \a msg inside the statusbar. */
+ void showInfoMessage(const QString& msg);
+
+ /** Shows the error message \a msg inside the statusbar. */
+ void showErrorMessage(const QString& msg);
+
+ void closeFilterBar();
+
+ /**
+ * Filters the currently shown items by \a nameFilter. All items
+ * which contain the given filter string will be shown.
+ */
+ void changeNameFilter(const QString& nameFilter);
+
+ /**
+ * Opens the context menu on the current mouse postition.
+ * @item File item context. If item is 0, the context menu
+ * should be applied to \a url.
+ * @url URL which contains \a item.
+ */
+ void openContextMenu(KFileItem* item, const KUrl& url);
+
+private:
+ /**
+ * Returns the default text of the status bar, if no item is
+ * selected.
+ */
+ QString defaultStatusBarText() const;
+
+ /**
+ * Returns the text for the status bar, if at least one item
+ * is selected.
+ */
+ QString selectionStatusBarText() const;
+
+private:
+ bool m_showProgress;
+
+ int m_iconSize;
+ int m_folderCount;
+ int m_fileCount;
+
+ DolphinMainWindow* m_mainWindow;
+ QVBoxLayout* m_topLayout;
+ KUrlNavigator* m_urlNavigator;
+
+ DolphinView* m_view;
+
+ FilterBar* m_filterBar;
+ DolphinStatusBar* m_statusBar;
+
+ KDirModel* m_dirModel;
+ DolphinDirLister* m_dirLister;
+ DolphinSortFilterProxyModel* m_proxyModel;
+};
+
+KUrlNavigator* DolphinViewContainer::urlNavigator() const
+{
+ return m_urlNavigator;
+}
+
+DolphinView* DolphinViewContainer::view() const
+{
+ return m_view;
+}
+
+#endif // DOLPHINVIEWCONTAINER_H