X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/d56ae4eda3918e004738c7ed45ee96e250ebeb3c..ac73af7bedeebe2afa451249e8a6500651a6ec00:/src/dolphinpart.cpp diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp index 981bb7028..d26f14061 100644 --- a/src/dolphinpart.cpp +++ b/src/dolphinpart.cpp @@ -18,6 +18,8 @@ */ #include "dolphinpart.h" +#include +#include #include "dolphinsortfilterproxymodel.h" #include "dolphinview.h" #include "dolphinmodel.h" @@ -26,6 +28,7 @@ #include #include +#include #include #include #include @@ -45,6 +48,9 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QStringLi setComponentData( DolphinPartFactory::componentData() ); m_extension = new DolphinPartBrowserExtension(this); + // make sure that other apps using this part find Dolphin's view-file-columns icons + KIconLoader::global()->addAppDir("dolphin"); + m_dirLister = new KDirLister; m_dirLister->setAutoUpdate(true); m_dirLister->setMainWindow(parentWidget->topLevelWidget()); @@ -129,6 +135,15 @@ void DolphinPart::createActions() KAction* deleteAction = DolphinView::createDeleteAction(actionCollection()); connect(deleteAction, SIGNAL(triggered()), m_view, SLOT(deleteSelectedItems())); + KAction *editMimeTypeAction = actionCollection()->addAction( "editMimeType" ); + editMimeTypeAction->setText( i18nc("@action:inmenu Edit", "&Edit File Type..." ) ); + connect(editMimeTypeAction, SIGNAL(triggered()), SLOT(slotEditMimeType())); + + KAction *propertiesAction = actionCollection()->addAction( "properties" ); + propertiesAction->setText( i18nc("@action:inmenu Edit", "Properties") ); + propertiesAction->setShortcut(Qt::ALT+Qt::Key_Return); + connect(propertiesAction, SIGNAL(triggered()), SLOT(slotProperties())); + // This action doesn't appear in the GUI, it's for the shortcut only. // KNewMenu takes care of the GUI stuff. KAction* newDirAction = actionCollection()->addAction( "create_dir" ); @@ -136,6 +151,45 @@ void DolphinPart::createActions() connect(newDirAction, SIGNAL(triggered()), SLOT(slotNewDir())); newDirAction->setShortcut(Qt::Key_F10); widget()->addAction(newDirAction); + + // Go menu + + QActionGroup* goActionGroup = new QActionGroup(this); + connect(goActionGroup, SIGNAL(triggered(QAction*)), + this, SLOT(slotGoTriggered(QAction*))); + + createGoAction("go_applications", "start-here-kde", + i18nc("@action:inmenu Go", "App&lications"), QString("programs:/"), + goActionGroup); + createGoAction("go_network_folders", "folder-remote", + i18nc("@action:inmenu Go", "&Network Folders"), QString("remote:/"), + goActionGroup); + createGoAction("go_settings", "preferences-system", + i18nc("@action:inmenu Go", "Sett&ings"), QString("settings:/"), + goActionGroup); + createGoAction("go_trash", "user-trash", + i18nc("@action:inmenu Go", "Trash"), QString("trash:/"), + goActionGroup); + createGoAction("go_autostart", "", + i18nc("@action:inmenu Go", "Autostart"), KGlobalSettings::autostartPath(), + goActionGroup); +} + +void DolphinPart::createGoAction(const char* name, const char* iconName, + const QString& text, const QString& url, + QActionGroup* actionGroup) +{ + KAction* action = actionCollection()->addAction(name); + action->setIcon(KIcon(iconName)); + action->setText(text); + action->setData(url); + action->setActionGroup(actionGroup); +} + +void DolphinPart::slotGoTriggered(QAction* action) +{ + const QString url = action->data().toString(); + emit m_extension->openUrlRequest(KUrl(url)); } void DolphinPart::slotSelectionChanged(const KFileItemList& selection) @@ -148,7 +202,7 @@ void DolphinPart::slotSelectionChanged(const KFileItemList& selection) } QStringList actions; - actions << "rename" << "move_to_trash" << "delete"; + actions << "rename" << "move_to_trash" << "delete" << "editMimeType" << "properties"; foreach(const QString& actionName, actions) { QAction* action = actionCollection()->action(actionName); Q_ASSERT(action); @@ -227,6 +281,14 @@ void DolphinPart::slotRequestItemInfo(const KFileItem& item) void DolphinPart::slotItemTriggered(const KFileItem& item) { + KParts::OpenUrlArguments args; + args.setMimeType(item.mimetype()); + + // Ideally, konqueror should be changed to not require trustedSource for directory views, + // since the idea was not to need BrowserArguments for non-browser stuff... + KParts::BrowserArguments browserArgs; + browserArgs.trustedSource = true; + // MMB click support. // TODO: this doesn't work, mouseButtons() is always 0. // Issue N176832 for the missing QAIV signal; task 177399 @@ -234,9 +296,7 @@ void DolphinPart::slotItemTriggered(const KFileItem& item) if (QApplication::mouseButtons() & Qt::MidButton) { kDebug() << "MMB!!" << item.mimetype(); if (item.mimeTypePtr()->is("inode/directory")) { - KParts::OpenUrlArguments args; - args.setMimeType( item.mimetype() ); - emit m_extension->createNewWindow( item.url(), args ); + emit m_extension->createNewWindow(item.url(), args); } else { kDebug() << "run()"; item.run(); @@ -244,7 +304,7 @@ void DolphinPart::slotItemTriggered(const KFileItem& item) } else { // Left button. [Right button goes to slotOpenContextMenu before triggered can be emitted] kDebug() << "LMB"; - emit m_extension->openUrlRequest(item.url()); + emit m_extension->openUrlRequest(item.url(), args, browserArgs); } } @@ -359,4 +419,21 @@ void DolphinPart::slotNewDir() KonqOperations::newDir(widget(), url()); } +void DolphinPart::slotEditMimeType() +{ + const KFileItemList items = m_view->selectedItems(); + if (!items.isEmpty()) { + KonqOperations::editMimeType(items.first().mimetype(), m_view); + } +} + +void DolphinPart::slotProperties() +{ + const KFileItemList items = m_view->selectedItems(); + if (!items.isEmpty()) { + KPropertiesDialog dialog(items.first().url(), m_view); + dialog.exec(); + } +} + #include "dolphinpart.moc"