X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/03f4481bdfb8e96b26acfccbf2b2bc780b060cf2..f32987d719f4b396ea2679b59a712a8bc288b8d2:/src/dolphinpart.cpp diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp index e155573cc..41c6ff3a3 100644 --- a/src/dolphinpart.cpp +++ b/src/dolphinpart.cpp @@ -25,28 +25,31 @@ #include -#include -#include +#include #include +#include +#include #include +#include #include +#include #include -#include +#include +#include #include -#include #include #include #include -typedef KParts::GenericFactory DolphinPartFactory; -K_EXPORT_COMPONENT_FACTORY(dolphinpart, DolphinPartFactory) +K_PLUGIN_FACTORY(DolphinPartFactory, registerPlugin();) +K_EXPORT_PLUGIN(DolphinPartFactory("dolphin")) -DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QStringList& args) +DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantList& args) : KParts::ReadOnlyPart(parent) { Q_UNUSED(args) - setComponentData( DolphinPartFactory::componentData() ); + setComponentData(DolphinPartFactory::componentData(), false); m_extension = new DolphinPartBrowserExtension(this); // make sure that other apps using this part find Dolphin's view-file-columns icons @@ -82,6 +85,8 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QStringLi this, SLOT(slotErrorMessage(QString))); connect(m_view, SIGNAL(itemTriggered(KFileItem)), this, SLOT(slotItemTriggered(KFileItem))); + connect(m_view, SIGNAL(tabRequested(KUrl)), + this, SLOT(createNewWindow(KUrl))); connect(m_view, SIGNAL(requestContextMenu(KFileItem,KUrl)), this, SLOT(slotOpenContextMenu(KFileItem,KUrl))); connect(m_view, SIGNAL(selectionChanged(KFileItemList)), @@ -110,6 +115,8 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QStringLi // TODO there was a "always open a new window" (when clicking on a directory) setting in konqueror // (sort of spacial navigation) + + loadPlugins(this, this, componentData()); } DolphinPart::~DolphinPart() @@ -217,6 +224,7 @@ bool DolphinPart::openUrl(const KUrl& url) emit m_extension->setLocationBarUrl(prettyUrl); emit started(0); // get the wheel to spin m_view->setUrl(url); + emit aboutToOpenURL(); if (reload) m_view->reload(); return true; @@ -257,24 +265,18 @@ void DolphinPart::slotItemTriggered(const KFileItem& item) // since the idea was not to need BrowserArguments for non-browser stuff... KParts::BrowserArguments browserArgs; browserArgs.trustedSource = true; + emit m_extension->openUrlRequest(item.targetUrl(), args, browserArgs); +} - // MMB click support. - // TODO: this doesn't work, mouseButtons() is always 0. - // Issue N176832 for the missing QAIV signal; task 177399 - kDebug() << QApplication::mouseButtons(); - if (QApplication::mouseButtons() & Qt::MidButton) { - kDebug() << "MMB!!" << item.mimetype(); - if (item.mimeTypePtr()->is("inode/directory")) { - emit m_extension->createNewWindow(item.url(), args); - } else { - kDebug() << "run()"; - item.run(); - } - } else { - // Left button. [Right button goes to slotOpenContextMenu before triggered can be emitted] - kDebug() << "LMB"; - emit m_extension->openUrlRequest(item.targetUrl(), args, browserArgs); - } +void DolphinPart::createNewWindow(const KUrl& url) +{ + // TODO: Check issue N176832 for the missing QAIV signal; task 177399 - maybe this code + // should be moved into DolphinPart::slotItemTriggered() + KFileItem item(S_IFDIR, (mode_t)-1, url); + Q_ASSERT(item.mimeTypePtr()->is("inode/directory")); // the signal 'tabRequested' is only emitted for dirs + KParts::OpenUrlArguments args; + args.setMimeType(item.mimetype()); + emit m_extension->createNewWindow(url, args); } void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&)