From ab3d8b100385fabaa612683f527d2e4ebd5c1086 Mon Sep 17 00:00:00 2001 From: David Faure Date: Sun, 1 Jul 2007 14:25:21 +0000 Subject: [PATCH] Here comes dolphinpart, to use dolphin as the file management view in konqueror. Embeds nicely, now all the integration needs to be done. Thanks to Peter for the nice DolphinView/DolphinViewContainer separation which made writing the part very very easy! CCMAIL: peter.penz@gmx.at svn path=/trunk/KDE/kdebase/apps/; revision=682079 --- src/CMakeLists.txt | 22 ++++++++++-- src/dolphinpart.cpp | 72 +++++++++++++++++++++++++++++++++++++ src/dolphinpart.desktop | 12 +++++++ src/dolphinpart.h | 57 +++++++++++++++++++++++++++++ src/dolphinpart.rc | 1 + src/dolphinview.h | 4 ++- src/treeviewsidebarpage.cpp | 2 +- 7 files changed, 166 insertions(+), 4 deletions(-) create mode 100644 src/dolphinpart.cpp create mode 100644 src/dolphinpart.desktop create mode 100644 src/dolphinpart.h create mode 100644 src/dolphinpart.rc diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c305f3015..a2aad29a3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -13,6 +13,7 @@ set(dolphinprivate_LIB_SRCS dolphincontroller.cpp dolphindetailsview.cpp dolphiniconsview.cpp + dolphincolumnview.cpp dolphinitemcategorizer.cpp klistview.cpp ksortfilterproxymodel.cpp @@ -20,6 +21,7 @@ set(dolphinprivate_LIB_SRCS viewproperties.cpp dolphinsortfilterproxymodel.cpp renamedialog.cpp + dolphinview.cpp ) kde4_add_kcfg_files(dolphinprivate_LIB_SRCS @@ -49,6 +51,24 @@ set_target_properties(dolphinprivate PROPERTIES VERSION 1.0.0 SOVERSION 1 ) install(TARGETS dolphinprivate DESTINATION ${LIB_INSTALL_DIR} ) +########################################## + +set(dolphinpart_SRCS + dolphinpart.cpp +) + +kde4_automoc(${dolphinpart_SRCS}) + +kde4_add_plugin(dolphinpart ${dolphinpart_SRCS}) + +target_link_libraries(dolphinpart dolphinprivate) + +install(TARGETS dolphinpart DESTINATION ${PLUGIN_INSTALL_DIR} ) + +install(FILES dolphinpart.rc DESTINATION ${DATA_INSTALL_DIR}/dolphinpart ) +install(FILES dolphinpart.desktop DESTINATION ${SERVICES_INSTALL_DIR} ) + + ########################################## set(dolphin_SRCS @@ -56,10 +76,8 @@ set(dolphin_SRCS columnviewsettingspage.cpp detailsviewsettingspage.cpp dolphinapplication.cpp - dolphincolumnview.cpp dolphinmainwindow.cpp dolphinnewmenu.cpp - dolphinview.cpp dolphinviewcontainer.cpp dolphinstatusbar.cpp dolphindirlister.cpp diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp new file mode 100644 index 000000000..3a7c9b11b --- /dev/null +++ b/src/dolphinpart.cpp @@ -0,0 +1,72 @@ +/* This file is part of the KDE project + Copyright (c) 2007 David Faure + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "dolphinpart.h" +#include +#include "dolphinview.h" +#include "dolphinsortfilterproxymodel.h" +#include +#include + +typedef KParts::GenericFactory DolphinPartFactory; +K_EXPORT_COMPONENT_FACTORY(dolphinpart, DolphinPartFactory) + +DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QStringList& args) + : KParts::ReadOnlyPart(parent) +{ + Q_UNUSED(args) + setComponentData( DolphinPartFactory::componentData() ); + //setBrowserExtension( new DolphinPartBrowserExtension( this ) ); + + m_dirLister = new KDirLister; + m_dirLister->setAutoUpdate(true); + m_dirLister->setMainWindow(parentWidget->topLevelWidget()); + m_dirLister->setDelayedMimeTypes(true); + + m_dirModel = new KDirModel(this); + m_dirModel->setDirLister(m_dirLister); + + m_proxyModel = new DolphinSortFilterProxyModel(this); + m_proxyModel->setSourceModel(m_dirModel); + + m_view = new DolphinView(parentWidget, + KUrl(), + m_dirLister, + m_dirModel, + m_proxyModel); + setWidget(m_view); +} + +DolphinPart::~DolphinPart() +{ + delete m_dirLister; +} + +KAboutData* DolphinPart::createAboutData() +{ + return new KAboutData("dolphinpart", I18N_NOOP( "Dolphin Part" ), "0.1"); +} + +bool DolphinPart::openUrl(const KUrl& url) +{ + m_view->setUrl(url); + return true; +} + +#include "dolphinpart.moc" diff --git a/src/dolphinpart.desktop b/src/dolphinpart.desktop new file mode 100644 index 000000000..fc6be9051 --- /dev/null +++ b/src/dolphinpart.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Service +Name=Dolphin Part +MimeType=inode/directory +ServiceTypes=KParts/ReadOnlyPart,Browser/View +X-KDE-Library=dolphinpart +X-KDE-BrowserView-Args=Icon +X-KDE-BrowserView-HideFromMenus=true +X-KDE-BrowserView-Built-Into=konqueror +Icon=view_icon +InitialPreference=7 diff --git a/src/dolphinpart.h b/src/dolphinpart.h new file mode 100644 index 000000000..08dfce90a --- /dev/null +++ b/src/dolphinpart.h @@ -0,0 +1,57 @@ +/* This file is part of the KDE project + Copyright (c) 2007 David Faure + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef DOLPHINPART_H +#define DOLPHINPART_H + +#include +class DolphinSortFilterProxyModel; +class KDirModel; +class KDirLister; +class DolphinView; +class QLineEdit; +class KAboutData; +namespace KParts { class ReadOnlyPart; } + +class DolphinPart : public KParts::ReadOnlyPart +{ + Q_OBJECT + +public: + explicit DolphinPart(QWidget* parentWidget, QObject* parent, const QStringList& args); + ~DolphinPart(); + + static KAboutData* createAboutData(); + + virtual bool openUrl(const KUrl& url); + +protected: + virtual bool openFile() { return true; } + +private: + DolphinView* m_view; + KDirLister* m_dirLister; + KDirModel* m_dirModel; + DolphinSortFilterProxyModel* m_proxyModel; + Q_DISABLE_COPY(DolphinPart) +}; + + +#endif /* DOLPHINPART_H */ + diff --git a/src/dolphinpart.rc b/src/dolphinpart.rc new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/src/dolphinpart.rc @@ -0,0 +1 @@ + diff --git a/src/dolphinview.h b/src/dolphinview.h index 223c52dbf..899eb492e 100644 --- a/src/dolphinview.h +++ b/src/dolphinview.h @@ -24,6 +24,8 @@ #include +#include "libdolphin_export.h" + #include #include #include @@ -62,7 +64,7 @@ class ViewProperties; * @see DolphinDetailsView * @see DolphinColumnView */ -class DolphinView : public QWidget +class LIBDOLPHINPRIVATE_EXPORT DolphinView : public QWidget { Q_OBJECT diff --git a/src/treeviewsidebarpage.cpp b/src/treeviewsidebarpage.cpp index 75e12bcf8..8f8887697 100644 --- a/src/treeviewsidebarpage.cpp +++ b/src/treeviewsidebarpage.cpp @@ -82,7 +82,7 @@ void TreeViewSidebarPage::showEvent(QShowEvent* event) m_dirLister->setAutoErrorHandlingEnabled(false, this); Q_ASSERT(m_dirModel == 0); - m_dirModel = new KDirModel(); + m_dirModel = new KDirModel(this); m_dirModel->setDirLister(m_dirLister); m_dirModel->setDropsAllowed(KDirModel::DropOnDirectory); -- 2.47.3