diff options
Diffstat (limited to 'src/dolphinviewcontainer.h')
| -rw-r--r-- | src/dolphinviewcontainer.h | 232 |
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 |
