]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinview.h
Create the new architecture for KCategorizedView. Now DolphinModel is created, inheri...
[dolphin.git] / src / dolphinview.h
index b4aef3468c8ef6cefb6c0b383b0048c641f0fcd4..159613cd9508842e5698a57cc2254b50102f37ec 100644 (file)
 #ifndef DOLPHINVIEW_H
 #define DOLPHINVIEW_H
 
+#include <config-nepomuk.h>
+
+#include "libdolphin_export.h"
+
 #include <kparts/part.h>
 #include <kfileitem.h>
 #include <kfileitemdelegate.h>
@@ -37,7 +41,7 @@ class DolphinController;
 class KDirLister;
 class KFileItemDelegate;
 class KUrl;
-class KDirModel;
+class DolphinModel;
 class DolphinColumnView;
 class DolphinDetailsView;
 class DolphinIconsView;
@@ -60,7 +64,7 @@ class ViewProperties;
  * @see DolphinDetailsView
  * @see DolphinColumnView
  */
-class DolphinView : public QWidget
+class LIBDOLPHINPRIVATE_EXPORT DolphinView : public QWidget
 {
     Q_OBJECT
 
@@ -102,7 +106,9 @@ public:
         SortByOwner,
         SortByGroup,
         SortByType,
-        MaxSortEnum = SortByType
+        SortByRating,
+        SortByTags,
+        MaxSortEnum = SortByTags
     };
 
     /**
@@ -110,21 +116,17 @@ public:
      * @param url             Specifies the content which should be shown.
      * @param dirLister       Used directory lister. The lister is not owned
      *                        by the view and won't get deleted.
-     * @param dirModel        Used directory model. The model is not owned
+     * @param dolphinModel    Used directory model. The model is not owned
      *                        by the view and won't get deleted.
      * @param proxyModel      Used proxy model which specifies the sorting. The
      *                        model is not owned by the view and won't get
      *                        deleted.
-     * @param mode            Used display mode (IconsView, DetailsView or ColumnsView).
-     * @param showHiddenFiles If true, hidden files will be shown in the view.
      */
     DolphinView(QWidget* parent,
                 const KUrl& url,
                 KDirLister* dirLister,
-                KDirModel* dirModel,
-                DolphinSortFilterProxyModel* proxyModel,
-                Mode mode = IconsView,
-                bool showHiddenFiles = false);
+                DolphinModel* dolphinModel,
+                DolphinSortFilterProxyModel* proxyModel);
 
     virtual ~DolphinView();
 
@@ -222,7 +224,7 @@ public:
      * selected.
      * @see DolphinView::selectedUrls()
      */
-    KFileItemList selectedItems() const;
+    QList<KFileItem> selectedItems() const;
 
     /**
      * Returns a list of URLs for all selected items. An empty list
@@ -234,21 +236,17 @@ public:
     /**
      * Returns the file item for the given model index \a index.
      */
-    KFileItem* fileItem(const QModelIndex index) const;
+    KFileItem fileItem(const QModelIndex& index) const;
 
     /**
-     * Returns the x-position of the view content.
-     * The content of the view might be larger than the visible area
+     * Sets the upper left position of the view content
+     * to (x,y). The content of the view might be larger than the visible area
      * and hence a scrolling must be done.
      */
-    int contentsX() const;
+    void setContentsPosition(int x, int y);
 
-    /**
-     * Returns the y-position of the view content.
-     * The content of the view might be larger than the visible area
-     * and hence a scrolling must be done.
-     */
-    int contentsY() const;
+    /** Returns the upper left position of the view content. */
+    QPoint contentsPosition() const;
 
     /** Increases the size of the current set view mode. */
     void zoomIn();
@@ -290,7 +288,7 @@ public:
     void reload();
 
     /**
-     * Refreshs the view to get synchronized with the (updated) Dolphin settings.
+     * Refreshes the view to get synchronized with the (updated) Dolphin settings.
      * This method only needs to get invoked if the view settings for the Icons View,
      * Details View or Columns View have been changed.
      */
@@ -309,7 +307,7 @@ public slots:
      * will actually get selected. The view will e.g. not select items which
      * are not in the currently displayed folder.
      */
-    void changeSelection(const KFileItemList& selection);
+    void changeSelection(const QList<KFileItem>& selection);
 
 signals:
     /**
@@ -320,6 +318,11 @@ signals:
     /** Is emitted if URL of the view has been changed to \a url. */
     void urlChanged(const KUrl& url);
 
+    /**
+     * Is emitted when clicking on an item
+     */
+    void itemTriggered(const KFileItem& item);
+
     /**
      * Is emitted if the view mode (IconsView, DetailsView,
      * PreviewsView) has been changed.
@@ -341,14 +344,14 @@ signals:
     /** Is emitted if the sort order (ascending or descending) has been changed. */
     void sortOrderChanged(Qt::SortOrder order);
 
-    /** Is emitted if the addtional information for an item has been changed. */
+    /** Is emitted if the additional information for an item has been changed. */
     void additionalInfoChanged(KFileItemDelegate::AdditionalInformation info);
 
     /**
      * Is emitted if information of an item is requested to be shown e. g. in the sidebar.
-     * It the URL is empty, no item information request is pending.
+     * If item is null, no item information request is pending.
      */
-    void requestItemInfo(const KUrl& url);
+    void requestItemInfo(const KFileItem& item);
 
     /** Is emitted if the contents has been moved to \a x, \a y. */
     void contentsMoved(int x, int y);
@@ -356,19 +359,14 @@ signals:
     /**
      * Is emitted whenever the selection has been changed.
      */
-    void selectionChanged(const KFileItemList& selection);
-
-    /**
-     * Is emitted whenever the filter bar has been turned show or hidden.
-     */
-    void showFilterBarChanged(bool shown);
+    void selectionChanged(const QList<KFileItem>& selection);
 
     /**
      * Is emitted if a context menu is requested for the item \a item,
      * which is part of \a url. If the item is 0, the context menu
      * for the URL should be shown.
      */
-    void requestContextMenu(KFileItem* item, const KUrl& url);
+    void requestContextMenu(const KFileItem& item, const KUrl& url);
 
     /**
      * Is emitted if the URLs \a are dropped to the destination URL
@@ -378,6 +376,18 @@ signals:
      */
     void urlsDropped(const KUrl::List& urls, const KUrl& destination);
 
+    /**
+     * Is emitted if an information message with the content \a msg
+     * should be shown.
+     */
+    void infoMessage(const QString& msg);
+
+    /**
+     * Is emitted if an error message with the content \a msg
+     * should be shown.
+     */
+    void errorMessage(const QString& msg);
+
 protected:
     /** @see QWidget::mouseReleaseEvent */
     virtual void mouseReleaseEvent(QMouseEvent* event);
@@ -401,7 +411,7 @@ private slots:
      * The current preview settings (maximum size, 'Show Preview' menu)
      * are respected.
      */
-    void generatePreviews(const KFileItemList& items);
+    void generatePreviews(const QList<KFileItem>& items);
 
     /**
      * Replaces the icon of the item \a item by the preview pixmap
@@ -409,12 +419,6 @@ private slots:
      */
     void showPreview(const KFileItem& item, const QPixmap& pixmap);
 
-    /**
-     * Restores the x- and y-position of the contents if the
-     * current view is part of the history.
-     */
-    void restoreContentsPos();
-
     void emitSelectionChangedSignal();
 
     /**
@@ -477,16 +481,25 @@ private:
     void startDirLister(const KUrl& url, bool reload = false);
 
     /**
-     * Creates a new view representing the given view mode (DolphinView::mode()).
-     * The current view will get deleted.
+     * Returns the URL where the view properties should be stored. Usually
+     * DolphinView::url() is returned, but in the case of a Column View the
+     * view properties are always stored in the directory represented by the
+     * first column. It is recommendend whenever using the ViewProperties class
+     * to use DolphinView::viewPropertiesUrl() as URL.
      */
-    void createView();
+    KUrl viewPropertiesUrl() const;
+
+    /**
+     * Applies the view properties which are defined by the current URL
+     * m_url to the DolphinView properties.
+     */
+    void applyViewProperties(const KUrl& url);
 
     /**
-     * Selects all items by using the selection flags \a flags. This is a helper
-     * method for the slots DolphinView::selectAll() and DolphinView::invertSelection().
+     * Creates a new view representing the given view mode (DolphinView::mode()).
+     * The current view will get deleted.
      */
-    void selectAll(QItemSelectionModel::SelectionFlags flags);
+    void createView();
 
     /**
      * Returns a pointer to the currently used item view, which is either
@@ -496,7 +509,7 @@ private:
 
     /**
      * Returns true if the index is valid and represents
-     * the column KDirModel::Name.
+     * the column DolphinModel::Name.
      */
     bool isValidNameIndex(const QModelIndex& index) const;
 
@@ -509,6 +522,12 @@ private:
     /** Applies an item effect to all cut items. */
     void applyCutItemEffect();
 
+    /**
+     * Updates the color of the viewport depending from the
+     * activation state (see DolphinView::isActive()).
+     */
+    void updateViewportColor();
+
     /**
      * Returns true, if the ColumnView is activated. As the column view
      * requires some special handling for iterating through directories,
@@ -531,7 +550,7 @@ private:
     };
 
     bool m_active;
-    bool m_blockContentsMovedSignal;
+    bool m_loadingDirectory;
     bool m_initializeColumnView;
     Mode m_mode;
 
@@ -544,7 +563,7 @@ private:
     DolphinColumnView* m_columnView;
     KFileItemDelegate* m_fileItemDelegate;
 
-    KDirModel* m_dirModel;
+    DolphinModel* m_dolphinModel;
     KDirLister* m_dirLister;
     DolphinSortFilterProxyModel* m_proxyModel;