From: David Faure Date: Sun, 1 Jul 2007 14:25:21 +0000 (+0000) Subject: Here comes dolphinpart, to use dolphin as the file management view in konqueror. X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/ab3d8b100385fabaa612683f527d2e4ebd5c1086?ds=inline 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 --- 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);