2007-06-07 21:10:48 +00:00
|
|
|
/***************************************************************************
|
|
|
|
* Copyright (C) 2007 by Peter Penz <peter.penz@gmx.at> *
|
|
|
|
* *
|
|
|
|
* 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 <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 FilterBar;
|
|
|
|
class KUrl;
|
2007-09-17 04:02:17 +00:00
|
|
|
class DolphinModel;
|
2007-06-07 21:10:48 +00:00
|
|
|
class KUrlNavigator;
|
|
|
|
class DolphinDirLister;
|
|
|
|
class DolphinMainWindow;
|
|
|
|
class DolphinSortFilterProxyModel;
|
|
|
|
class DolphinStatusBar;
|
|
|
|
class QModelIndex;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @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,
|
2007-06-19 16:35:52 +00:00
|
|
|
const KUrl& url);
|
2007-06-07 21:10:48 +00:00
|
|
|
|
|
|
|
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;
|
|
|
|
|
2007-09-27 12:44:14 +00:00
|
|
|
const DolphinStatusBar* statusBar() const;
|
|
|
|
DolphinStatusBar* statusBar();
|
2007-06-07 21:10:48 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns true, if the URL shown by the navigation bar is editable.
|
|
|
|
* @see KUrlNavigator
|
|
|
|
*/
|
|
|
|
bool isUrlEditable() const;
|
|
|
|
|
2007-09-27 12:44:14 +00:00
|
|
|
const KUrlNavigator* urlNavigator() const;
|
|
|
|
KUrlNavigator* urlNavigator();
|
2007-06-07 21:10:48 +00:00
|
|
|
|
2007-09-27 12:44:14 +00:00
|
|
|
const DolphinView* view() const;
|
|
|
|
DolphinView* view();
|
2007-06-07 21:10:48 +00:00
|
|
|
|
|
|
|
/** Returns true, if the filter bar is visible. */
|
|
|
|
bool isFilterBarVisible() 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);
|
|
|
|
|
|
|
|
/**
|
2007-10-09 22:32:54 +00:00
|
|
|
* Assures that the viewport position is restored and updates the
|
|
|
|
* statusbar to reflect the current content.
|
2007-06-07 21:10:48 +00:00
|
|
|
*/
|
2007-10-09 22:32:54 +00:00
|
|
|
void slotDirListerCompleted();
|
2007-06-07 21:10:48 +00:00
|
|
|
|
2007-08-28 17:50:54 +00:00
|
|
|
/**
|
|
|
|
* Handles clicking on an item
|
|
|
|
*/
|
|
|
|
void slotItemTriggered(const KFileItem& item);
|
|
|
|
|
2007-06-08 13:44:59 +00:00
|
|
|
/**
|
2007-07-08 20:31:36 +00:00
|
|
|
* Shows the information for the item \a item inside the statusbar. If the
|
|
|
|
* item is null, the default statusbar information is shown.
|
2007-06-08 13:44:59 +00:00
|
|
|
*/
|
2007-07-02 17:24:54 +00:00
|
|
|
void showItemInfo(const KFileItem& item);
|
2007-06-08 13:44:59 +00:00
|
|
|
|
2007-06-07 21:10:48 +00:00
|
|
|
/** 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);
|
|
|
|
|
2007-11-17 00:08:54 +00:00
|
|
|
/** Shows the "operation completed" message \a msg inside the statusbar. */
|
|
|
|
void showOperationCompletedMessage(const QString& msg);
|
|
|
|
|
2007-06-07 21:10:48 +00:00
|
|
|
void closeFilterBar();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Filters the currently shown items by \a nameFilter. All items
|
|
|
|
* which contain the given filter string will be shown.
|
|
|
|
*/
|
2007-10-09 22:32:54 +00:00
|
|
|
void setNameFilter(const QString& nameFilter);
|
2007-06-07 21:10:48 +00:00
|
|
|
|
|
|
|
/**
|
2007-08-28 19:48:36 +00:00
|
|
|
* Opens the context menu on the current mouse position.
|
2007-06-07 21:10:48 +00:00
|
|
|
* @item File item context. If item is 0, the context menu
|
|
|
|
* should be applied to \a url.
|
|
|
|
* @url URL which contains \a item.
|
|
|
|
*/
|
2007-08-13 21:57:20 +00:00
|
|
|
void openContextMenu(const KFileItem& item, const KUrl& url);
|
2007-06-07 21:10:48 +00:00
|
|
|
|
2007-06-10 11:46:41 +00:00
|
|
|
/**
|
|
|
|
* Saves the position of the contents to the
|
|
|
|
* current history element.
|
|
|
|
*/
|
|
|
|
void saveContentsPos(int x, int y);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Restores the contents position of the view, if the view
|
|
|
|
* is part of the history.
|
|
|
|
*/
|
|
|
|
void restoreContentsPos();
|
|
|
|
|
2007-06-13 17:08:39 +00:00
|
|
|
/**
|
|
|
|
* Marks the view container as active
|
|
|
|
* (see DolphinViewContainer::setActive()).
|
|
|
|
*/
|
|
|
|
void activate();
|
|
|
|
|
2007-09-24 13:50:31 +00:00
|
|
|
/**
|
|
|
|
* Restores the current view to show \a url and assures
|
|
|
|
* that the root URL of the view is respected.
|
|
|
|
*/
|
|
|
|
void restoreView(const KUrl& url);
|
|
|
|
|
2007-09-25 09:02:29 +00:00
|
|
|
/**
|
|
|
|
* Saves the root URL of the current URL \a url
|
|
|
|
* into the URL navigator.
|
|
|
|
*/
|
|
|
|
void saveRootUrl(const KUrl& url);
|
|
|
|
|
2007-06-07 21:10:48 +00:00
|
|
|
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;
|
|
|
|
|
|
|
|
DolphinMainWindow* m_mainWindow;
|
|
|
|
QVBoxLayout* m_topLayout;
|
|
|
|
KUrlNavigator* m_urlNavigator;
|
|
|
|
|
|
|
|
DolphinView* m_view;
|
|
|
|
|
|
|
|
FilterBar* m_filterBar;
|
|
|
|
DolphinStatusBar* m_statusBar;
|
|
|
|
|
2007-09-17 04:02:17 +00:00
|
|
|
DolphinModel* m_dolphinModel;
|
2007-06-07 21:10:48 +00:00
|
|
|
DolphinDirLister* m_dirLister;
|
|
|
|
DolphinSortFilterProxyModel* m_proxyModel;
|
|
|
|
};
|
|
|
|
|
2007-09-27 12:44:14 +00:00
|
|
|
inline const DolphinStatusBar* DolphinViewContainer::statusBar() const
|
2007-06-14 17:46:12 +00:00
|
|
|
{
|
|
|
|
return m_statusBar;
|
|
|
|
}
|
|
|
|
|
2007-09-27 12:44:14 +00:00
|
|
|
inline DolphinStatusBar* DolphinViewContainer::statusBar()
|
2007-06-14 17:46:12 +00:00
|
|
|
{
|
|
|
|
return m_statusBar;
|
|
|
|
}
|
|
|
|
|
2007-09-27 12:44:14 +00:00
|
|
|
inline const KUrlNavigator* DolphinViewContainer::urlNavigator() const
|
2007-06-14 17:46:12 +00:00
|
|
|
{
|
|
|
|
return m_urlNavigator;
|
|
|
|
}
|
|
|
|
|
2007-09-27 12:44:14 +00:00
|
|
|
inline KUrlNavigator* DolphinViewContainer::urlNavigator()
|
2007-06-07 21:10:48 +00:00
|
|
|
{
|
|
|
|
return m_urlNavigator;
|
|
|
|
}
|
|
|
|
|
2007-09-27 12:44:14 +00:00
|
|
|
inline const DolphinView* DolphinViewContainer::view() const
|
2007-06-14 17:46:12 +00:00
|
|
|
{
|
|
|
|
return m_view;
|
|
|
|
}
|
|
|
|
|
2007-09-27 12:44:14 +00:00
|
|
|
inline DolphinView* DolphinViewContainer::view()
|
2007-06-07 21:10:48 +00:00
|
|
|
{
|
|
|
|
return m_view;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // DOLPHINVIEWCONTAINER_H
|