#ifndef DOLPHINVIEWCONTAINER_H
#define DOLPHINVIEWCONTAINER_H
-#include "dolphinview.h"
-
-#include <kparts/part.h>
#include <kfileitem.h>
#include <kfileitemdelegate.h>
+#include <kglobalsettings.h>
#include <kio/job.h>
#include <kurlnavigator.h>
#include <QtGui/QBoxLayout>
#include <QtGui/QWidget>
-class DolphinController;
+#include <views/dolphinview.h>
+
class FilterBar;
-class KFileItemDelegate;
class KUrl;
-class KDirModel;
+class DolphinModel;
class KUrlNavigator;
-class DolphinColumnView;
-class DolphinDetailsView;
class DolphinDirLister;
-class DolphinIconsView;
-class DolphinMainWindow;
+class DolphinSearchBox;
class DolphinSortFilterProxyModel;
class DolphinStatusBar;
-class QModelIndex;
-class ViewProperties;
/**
* @short Represents a view for the directory content
Q_OBJECT
public:
- DolphinViewContainer(DolphinMainWindow* mainwindow,
- QWidget *parent,
- const KUrl& url,
- DolphinView::Mode mode = DolphinView::IconsView,
- bool showHiddenFiles = false);
-
+ DolphinViewContainer(const KUrl& url, QWidget* parent);
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;
+ KUrl url() const;
/**
* If \a active is true, the view container will marked as active. The active
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();
+ const DolphinStatusBar* statusBar() const;
+ DolphinStatusBar* statusBar();
- KFileItem* fileItem(const QModelIndex index) const;
+ const KUrlNavigator* urlNavigator() const;
+ KUrlNavigator* urlNavigator();
- DolphinStatusBar* statusBar() const;
+ const DolphinView* view() const;
+ DolphinView* view();
/**
- * Returns true, if the URL shown by the navigation bar is editable.
- * @see KUrlNavigator
+ * Refreshes the view container to get synchronized with the (updated) Dolphin settings.
*/
- bool isUrlEditable() const;
-
- inline KUrlNavigator* urlNavigator() const;
-
- inline DolphinView* view() const;
+ void refresh();
/** 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.
+ * Enables the search mode, if \p enabled is true. In the search mode the URL navigator
+ * will be hidden and replaced by a line editor that allows to enter a search term.
*/
- DolphinMainWindow* mainWindow() const ;
+ void setSearchModeEnabled(bool enabled);
+ bool isSearchModeEnabled() const;
public slots:
/**
- * Popups the filter bar above the status bar if \a show is true.
+ * 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 showFilterBar(bool show);
+ void setUrl(const KUrl& url);
/**
- * 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.
+ * Popups the filter bar above the status bar if \a show is true.
*/
- void updateStatusBar();
+ void showFilterBar(bool show);
signals:
/**
*/
void showFilterBarChanged(bool shown);
+ /**
+ * Is emitted when the write state of the folder has been changed. The application
+ * should disable all actions like "Create New..." that depend on the write
+ * state.
+ */
+ void writeStateChanged(bool isFolderWritable);
+
private slots:
+ /**
+ * 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. The update
+ * is done asynchronously, as getting the sum of the
+ * filesizes can be an expensive operation.
+ */
+ void delayedStatusBarUpdate();
+
+ /**
+ * Is invoked by DolphinViewContainer::delayedStatusBarUpdate() and
+ * updates the status bar synchronously.
+ */
+ void updateStatusBar();
+
+ void initializeProgress();
+
void updateProgress(int percent);
/**
- * Updates the number of items (= number of directories + number of files)
- * and shows this information in the statusbar.
+ * Assures that the viewport position is restored and updates the
+ * statusbar to reflect the current content.
+ */
+ void slotDirListerCompleted();
+
+ /**
+ * Handles clicking on an item. If the item is a directory, the
+ * directory is opened in the view. If the item is a file, the file
+ * gets started by the corresponding application.
*/
- void updateItemCount();
+ void slotItemTriggered(const KFileItem& item);
/**
- * Shows the item information for the URL \a url inside the statusbar. If the
- * URL is empty, the default statusbar information is shown.
+ * Opens a the file \a url by opening the corresponding application.
+ * Is connected with the signal urlIsFile() from DolphinDirLister and will
+ * get invoked if the user manually has entered a file into the URL navigator.
*/
- void showItemInfo(const KUrl& url);
+ void openFile(const KUrl& url);
+
+ /**
+ * Shows the information for the item \a item inside the statusbar. If the
+ * item is null, the default statusbar information is shown.
+ */
+ void showItemInfo(const KFileItem& item);
/** 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);
+ /** Shows the "operation completed" message \a msg inside the statusbar. */
+ void showOperationCompletedMessage(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);
+ void setNameFilter(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.
+ * Marks the view container as active
+ * (see DolphinViewContainer::setActive()).
*/
- void openContextMenu(KFileItem* item, const KUrl& url);
+ void activate();
+
+ /**
+ * Saves the state of the current view: contents position,
+ * root URL, ...
+ */
+ void saveViewState();
+
+ /**
+ * Restores the current view to show \a url and assures
+ * that the root URL of the view is respected.
+ */
+ void slotUrlNavigatorLocationChanged(const KUrl& url);
+
+ /**
+ * Is connected with the URL navigator and drops the URLs
+ * above the destination \a destination.
+ */
+ void dropUrls(const KUrl& destination, QDropEvent* event);
+
+ /**
+ * Is invoked when a redirection is done and changes the
+ * URL of the URL navigator to \a newUrl without triggering
+ * a reloading of the directory.
+ */
+ void redirect(const KUrl& oldUrl, const KUrl& newUrl);
+
+ /** Requests the focus for the view \a m_view. */
+ void requestFocus();
-private:
/**
- * Returns the default text of the status bar, if no item is
- * selected.
+ * Saves the currently used URL completion mode of
+ * the URL navigator.
*/
- QString defaultStatusBarText() const;
+ void saveUrlCompletionMode(KGlobalSettings::Completion completion);
+
+ void slotHistoryChanged();
/**
- * Returns the text for the status bar, if at least one item
- * is selected.
+ * Gets the search URL from the searchbox and starts searching.
+ * @param text Text the user has entered into the searchbox.
*/
- QString selectionStatusBarText() const;
+ void startSearching(const QString& text);
+ void closeSearchBox();
private:
- bool m_showProgress;
+ bool isSearchUrl(const KUrl& url) const;
- int m_iconSize;
- int m_folderCount;
- int m_fileCount;
+private:
+ bool m_isFolderWritable;
- DolphinMainWindow* m_mainWindow;
QVBoxLayout* m_topLayout;
KUrlNavigator* m_urlNavigator;
+ DolphinSearchBox* m_searchBox;
DolphinView* m_view;
FilterBar* m_filterBar;
+
DolphinStatusBar* m_statusBar;
+ QTimer* m_statusBarTimer;
- KDirModel* m_dirModel;
+ DolphinModel* m_dolphinModel;
DolphinDirLister* m_dirLister;
DolphinSortFilterProxyModel* m_proxyModel;
};
-KUrlNavigator* DolphinViewContainer::urlNavigator() const
+inline const DolphinStatusBar* DolphinViewContainer::statusBar() const
+{
+ return m_statusBar;
+}
+
+inline DolphinStatusBar* DolphinViewContainer::statusBar()
+{
+ return m_statusBar;
+}
+
+inline const KUrlNavigator* DolphinViewContainer::urlNavigator() const
+{
+ return m_urlNavigator;
+}
+
+inline KUrlNavigator* DolphinViewContainer::urlNavigator()
{
return m_urlNavigator;
}
-DolphinView* DolphinViewContainer::view() const
+inline const DolphinView* DolphinViewContainer::view() const
+{
+ return m_view;
+}
+
+inline DolphinView* DolphinViewContainer::view()
{
return m_view;
}