]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinpart.h
Ported dolphinpart to K_PLUGIN_FACTORY
[dolphin.git] / src / dolphinpart.h
index d6d126cc7b6581aa966978c69ac6877be71372d1..eaf9cb74e587b392bfdf81a75e7f4164093c0240 100644 (file)
 #define DOLPHINPART_H
 
 #include <kparts/part.h>
+#include <kparts/browserextension.h>
+class DolphinViewActionHandler;
+class QActionGroup;
+class KAction;
+class KFileItemList;
 class KFileItem;
 class DolphinPartBrowserExtension;
 class DolphinSortFilterProxyModel;
-class KDirModel;
+class DolphinModel;
 class KDirLister;
 class DolphinView;
 class QLineEdit;
 class KAboutData;
-namespace KParts { class ReadOnlyPart; }
 
 class DolphinPart : public KParts::ReadOnlyPart
 {
     Q_OBJECT
+    // Used by konqueror. Technically it means "we want undo enabled if
+    // there are things in the undo history and the current part is a dolphin part".
+    // Even though it's konqueror doing the undo...
+    Q_PROPERTY( bool supportsUndo READ supportsUndo )
+
+    Q_PROPERTY( QString currentViewMode READ currentViewMode WRITE setCurrentViewMode )
 
 public:
-    explicit DolphinPart(QWidget* parentWidget, QObject* parent, const QStringList& args);
+    explicit DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantList& args);
     ~DolphinPart();
 
     static KAboutData* createAboutData();
 
+    /**
+     * Standard KParts::ReadOnlyPart openUrl method.
+     * Called by Konqueror to view a directory in DolphinPart.
+     */
     virtual bool openUrl(const KUrl& url);
 
+    /// see the supportsUndo property
+    bool supportsUndo() const { return true; }
+
+    /**
+     * Used by konqueror for setting the view mode
+     * @param viewModeName internal name for the view mode, like "icons"
+     * Those names come from the Actions line in dolphinpart.desktop,
+     * and have to match the name of the KActions.
+     */
+    void setCurrentViewMode(const QString& viewModeName);
+
+    /**
+     * Used by konqueror for displaying the current view mode.
+     * @see setCurrentViewMode
+     */
+    QString currentViewMode() const;
+
+    /// Returns the view owned by this part; used by DolphinPartBrowserExtension
+    DolphinView* view() { return m_view; }
+
 protected:
+    /**
+     * We reimplement openUrl so no need to implement openFile.
+     */
     virtual bool openFile() { return true; }
 
+Q_SIGNALS:
+    /**
+     * Emitted when the view mode changes. Used by konqueror.
+     */
+    void viewModeChanged();
+
+
+    /**
+     * Emitted whenever the current URL is about to be changed.
+     */ 
+    void aboutToOpenURL();
+
 private Q_SLOTS:
     void slotCompleted(const KUrl& url);
     void slotCanceled(const KUrl& url);
     void slotInfoMessage(const QString& msg);
     void slotErrorMessage(const QString& msg);
+    /**
+     * Shows the information for the item \a item inside the statusbar. If the
+     * item is null, the default statusbar information is shown.
+     */
     void slotRequestItemInfo(const KFileItem& item);
+    /**
+     * Handles clicking on an item
+     */
+    void slotItemTriggered(const KFileItem& item);
+    /**
+     * Opens the context menu on the current mouse position.
+     * @item  File item context. If item is 0, the context menu
+     *        should be applied to \a url.
+     * @url   URL which contains \a item.
+     */
+    void slotOpenContextMenu(const KFileItem& item, const KUrl& url);
+
+    /**
+     * Asks the host to open the URL \a url if the current view has
+     * a different URL.
+     */
+    void slotUrlChanged(const KUrl& url);
+
+    /**
+     * Updates the state of the 'Edit' menu actions and emits
+     * the signal selectionChanged().
+     */
+    void slotSelectionChanged(const KFileItemList& selection);
+
+    /**
+     * Updates the text of the paste action dependent from
+     * the number of items which are in the clipboard.
+     */
+    void updatePasteAction();
+
+    /**
+     * Connected to all "Go" menu actions provided by DolphinPart
+     */
+    void slotGoTriggered(QAction* action);
+
+    /**
+     * Connected to the "editMimeType" action
+     */
+    void slotEditMimeType();
+
+    /**
+     * Connected to the "properties" action
+     */
+    void slotProperties();
+
+private:
+    void createActions();
+    void createGoAction(const char* name, const char* iconName,
+                        const QString& text, const QString& url,
+                        QActionGroup* actionGroup);
 
 private:
     DolphinView* m_view;
+    DolphinViewActionHandler* m_actionHandler;
     KDirLister* m_dirLister;
-    KDirModel* m_dirModel;
+    DolphinModel* m_dolphinModel;
     DolphinSortFilterProxyModel* m_proxyModel;
     DolphinPartBrowserExtension* m_extension;
     Q_DISABLE_COPY(DolphinPart)
 };
 
+class DolphinPartBrowserExtension : public KParts::BrowserExtension
+{
+    Q_OBJECT
+public:
+    DolphinPartBrowserExtension( DolphinPart* part )
+        : KParts::BrowserExtension( part ), m_part(part) {}
+
+public Q_SLOTS:
+    void cut();
+    void copy();
+    void paste();
+    void reparseConfiguration();
 
-#endif /* DOLPHINPART_H */
+private:
+    DolphinPart* m_part;
+};
 
+#endif /* DOLPHINPART_H */