]> 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 1a240be7a12b1997089076b62a68cbc54d2ca104..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,7 +116,7 @@ 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
@@ -119,7 +125,7 @@ public:
     DolphinView(QWidget* parent,
                 const KUrl& url,
                 KDirLister* dirLister,
-                KDirModel* dirModel,
+                DolphinModel* dolphinModel,
                 DolphinSortFilterProxyModel* proxyModel);
 
     virtual ~DolphinView();
@@ -218,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
@@ -230,7 +236,7 @@ public:
     /**
      * Returns the file item for the given model index \a index.
      */
-    KFileItem* fileItem(const QModelIndex index) const;
+    KFileItem fileItem(const QModelIndex& index) const;
 
     /**
      * Sets the upper left position of the view content
@@ -282,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.
      */
@@ -301,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:
     /**
@@ -312,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.
@@ -338,9 +349,9 @@ signals:
 
     /**
      * 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);
@@ -348,14 +359,14 @@ signals:
     /**
      * Is emitted whenever the selection has been changed.
      */
-    void selectionChanged(const KFileItemList& selection);
+    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
@@ -400,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
@@ -469,6 +480,15 @@ private slots:
 private:
     void startDirLister(const KUrl& url, bool reload = false);
 
+    /**
+     * 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.
+     */
+    KUrl viewPropertiesUrl() const;
+
     /**
      * Applies the view properties which are defined by the current URL
      * m_url to the DolphinView properties.
@@ -481,12 +501,6 @@ private:
      */
     void createView();
 
-    /**
-     * Selects all items by using the selection flags \a flags. This is a helper
-     * method for the slots DolphinView::selectAll() and DolphinView::invertSelection().
-     */
-    void selectAll(QItemSelectionModel::SelectionFlags flags);
-
     /**
      * Returns a pointer to the currently used item view, which is either
      * a ListView or a TreeView.
@@ -495,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;
 
@@ -508,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,
@@ -543,7 +563,7 @@ private:
     DolphinColumnView* m_columnView;
     KFileItemDelegate* m_fileItemDelegate;
 
-    KDirModel* m_dirModel;
+    DolphinModel* m_dolphinModel;
     KDirLister* m_dirLister;
     DolphinSortFilterProxyModel* m_proxyModel;