/***************************************************************************
- * Copyright (C) 2006-2009 by Peter Penz <peter.penz@gmx.at> *
+ * Copyright (C) 2006-2009 by Peter Penz <peter.penz19@gmail.com> *
* Copyright (C) 2006 by Gregor Kališnik <gregor@podnapisi.net> *
* *
* This program is free software; you can redistribute it and/or modify *
#include "libdolphin_export.h"
#include <kparts/part.h>
-#include <kfileitem.h>
-#include <kfileitemdelegate.h>
+#include <KFileItem>
+#include <KFileItemDelegate>
#include <kio/fileundomanager.h>
-#include <kio/job.h>
+#include <KIO/Job>
#include <QBoxLayout>
#include <QKeyEvent>
};
/**
- * @param parent Parent widget of the view.
* @param url Specifies the content which should be shown.
- * @param proxyModel Used proxy model which specifies the sorting. The
- * model is not owned by the view and won't get
- * deleted.
+ * @param parent Parent widget of the view.
*/
- DolphinView(QWidget* parent,
- const KUrl& url,
- DolphinSortFilterProxyModel* proxyModel);
+ DolphinView( const KUrl& url, QWidget* parent);
virtual ~DolphinView();
*/
bool supportsCategorizedSorting() const;
+ /**
+ * Returns the root item which represents the current URL. Note that the returned
+ * item can be null (KFileItem::isNull() will return true) in case that the directory
+ * has not been loaded.
+ */
+ KFileItem rootItem() const;
+
/**
* Returns the items of the view.
*/
/**
* Returns the selected items. The list is empty if no item has been
* selected.
- * @see DolphinView::selectedUrls()
*/
KFileItemList selectedItems() const;
* which contain the given filter string will be shown.
*/
void setNameFilter(const QString& nameFilter);
+ QString nameFilter() const;
/**
* Calculates the number of currently shown files into
*/
void itemTriggered(const KFileItem& item);
+ /**
+ * Is emitted if items have been added or deleted.
+ */
+ void itemCountChanged();
+
/**
* Is emitted if a new tab should be opened for the URL \a url.
*/
*/
void finishedPathLoading(const KUrl& url);
+ /**
+ * Is emitted after DolphinView::setUrl() has been invoked and provides
+ * the information how much percent of the current path have been loaded.
+ */
+ void pathLoadingProgress(int percent);
+
+ /**
+ * Is emitted if the DolphinView::setUrl() is invoked but the URL is not
+ * a directory.
+ */
+ void urlIsFileError(const KUrl& file);
+
/**
* Emitted when KDirLister emits redirection.
* Testcase: fish://localhost
*/
void redirection(const KUrl& oldUrl, const KUrl& newUrl);
+ /**
+ * 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);
+
protected:
/** @see QWidget::mouseReleaseEvent */
virtual void mouseReleaseEvent(QMouseEvent* event);
*/
void slotDeleteFileFinished(KJob* job);
+ /**
+ * Invoked when the directory lister has been started the
+ * loading of \a url.
+ */
+ void slotDirListerStarted(const KUrl& url);
+
/**
* Invoked when the directory lister has completed the loading of
* items. Assures that pasted items and renamed items get seleced.
*/
void restoreContentsPosition();
+ void slotUrlChangeRequested(const KUrl& url);
+
private:
void loadDirectory(const KUrl& url, bool reload = false);
void connectViewAccessor();
void disconnectViewAccessor();
+ /**
+ * Updates m_isFolderWritable dependent on whether the folder represented by
+ * the current URL is writable. If the state has changed, the signal
+ * writeableStateChanged() will be emitted.
+ */
+ void updateWritableState();
+
private:
/**
* Abstracts the access to the different view implementations
class ViewAccessor
{
public:
- ViewAccessor(DolphinSortFilterProxyModel* proxyModel);
+ ViewAccessor();
~ViewAccessor();
void createView(QWidget* parent,
DolphinIconsView* m_iconsView;
DolphinDetailsView* m_detailsView;
DolphinColumnViewContainer* m_columnsContainer;
+ DolphinModel* m_dolphinModel;
DolphinSortFilterProxyModel* m_proxyModel;
QAbstractItemView* m_dragSource;
QPointer<DolphinDetailsViewExpander> m_detailsViewExpander;
+
+ // For unit tests
+ friend class DolphinDetailsViewTest;
};
bool m_active : 1;
bool m_isContextMenuOpen : 1; // TODO: workaround for Qt-issue 207192
bool m_assureVisibleCurrentIndex : 1;
bool m_expanderActive : 1;
+ bool m_isFolderWritable : 1;
Mode m_mode;
// For unit tests
friend class TestBase;
+ friend class DolphinDetailsViewTest;
};
/// Allow using DolphinView::Mode in QVariant