Index: apps/dolphin/src/dolphincontextmenu.cpp =================================================================== --- apps/dolphin/src/dolphincontextmenu.cpp (revision 1123572) +++ apps/dolphin/src/dolphincontextmenu.cpp (working copy) @@ -52,6 +52,9 @@ #include <QtGui/QClipboard> #include <QtCore/QDir> +#include <nepomuk/annotationmenu.h> + + DolphinContextMenu::DolphinContextMenu(DolphinMainWindow* parent, const KFileItem& fileInfo, const KUrl& baseUrl) : @@ -234,6 +237,12 @@ popup->addSeparator(); } + // insert 'Annotation' sub menu + if ( !m_selectedItems.isEmpty() ) { + popup->addAction(m_mainWindow->actionCollection()->action("nepomuk_annotate")); + popup->addSeparator(); + } + // insert version control actions addVersionControlActions(popup); Index: apps/dolphin/src/dolphinmainwindow.cpp =================================================================== --- apps/dolphin/src/dolphinmainwindow.cpp (revision 1123572) +++ apps/dolphin/src/dolphinmainwindow.cpp (working copy) @@ -90,6 +90,9 @@ #include <QDockWidget> #include <kacceleratormanager.h> +#include <nepomuk/annotationmenu.h> +#include <nepomuk/resource.h> + /* * Remembers the tab configuration if a tab has been closed. * Each closed tab can be restored by the menu @@ -1105,6 +1108,17 @@ #endif } +void DolphinMainWindow::annotationMenuAboutToBeConstructed(Nepomuk::AnnotationMenu* menu) +{ + QList<Nepomuk::Resource> resources; + Q_FOREACH( const KFileItem& item, m_activeViewContainer->view()->selectedItems() ) { + KUrl uri = item.nepomukUri(); + if ( uri.isValid() ) + resources << uri; + } + menu->setResources( resources ); +} + void DolphinMainWindow::init() { DolphinSettings& settings = DolphinSettings::instance(); @@ -1438,6 +1452,18 @@ search->setText(i18nc("@action:inmenu", "Search Bar")); search->setDefaultWidget(m_searchBox); search->setShortcutConfigurable(false); + + // Nepomuk Annotate action + Nepomuk::AnnotationMenu* annotationSubMenu = new Nepomuk::AnnotationMenu(this); + annotationSubMenu->setConfigurationFlags( annotationSubMenu->configurationFlags() | Nepomuk::AnnotationMenu::UseSubMenus ); + connect( annotationSubMenu, SIGNAL(aboutToBeConstructed(Nepomuk::AnnotationMenu*)), + this, SLOT(annotationMenuAboutToBeConstructed(Nepomuk::AnnotationMenu*))); + KActionMenu* annotationAction = new KActionMenu(this); + annotationAction->setText(i18nc("@title:menu Annotate files using Nepomuk", "Annotate")); + annotationAction->setIcon(KIcon("nepomuk")); + annotationAction->setMenu(annotationSubMenu); + annotationAction->setDelayed(false); + actionCollection()->addAction("nepomuk_annotate", annotationAction); } void DolphinMainWindow::setupDockWidgets() Index: apps/dolphin/src/dolphinui.rc =================================================================== --- apps/dolphin/src/dolphinui.rc (revision 1123572) +++ apps/dolphin/src/dolphinui.rc (working copy) @@ -1,5 +1,5 @@ <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> -<kpartgui name="dolphin" version="12"> +<kpartgui name="dolphin" version="13"> <MenuBar> <Menu name="file"> <Action name="create_new" /> @@ -105,6 +105,7 @@ <Action name="move_to_trash" /> <Action name="delete" /> <Action name="invert_selection" /> + <Action name="nepomuk_annotate" /> </enable> </State> <State name="has_no_selection" > @@ -116,6 +117,7 @@ <Action name="delete" /> <Action name="delete_shortcut" /> <Action name="invert_selection" /> + <Action name="nepomuk_annotate" /> </disable> </State> <ToolBar noMerge="1" name="mainToolBar" > @@ -129,6 +131,8 @@ <Separator name="separator_0" /> <Action name="show_preview" /> <Action name="split_view" /> + <Separator /> + <Action name="nepomuk_annotate" /> </ToolBar> <ToolBar iconText="icononly" name="searchToolBar" newline="false"> <text context="@title:menu">Search Toolbar</text> Index: apps/dolphin/src/dolphinmainwindow.h =================================================================== --- apps/dolphin/src/dolphinmainwindow.h (revision 1123572) +++ apps/dolphin/src/dolphinmainwindow.h (working copy) @@ -50,7 +50,9 @@ class KUrl; class QSplitter; class KJob; - +namespace Nepomuk { + class AnnotationMenu; +} /** * @short Main window for Dolphin. * @@ -436,6 +438,8 @@ */ void slotCaptionStatFinished(KJob* job); + void annotationMenuAboutToBeConstructed(Nepomuk::AnnotationMenu*); + private: DolphinMainWindow(int id); void init(); Index: apps/dolphin/src/CMakeLists.txt =================================================================== --- apps/dolphin/src/CMakeLists.txt (revision 1123572) +++ apps/dolphin/src/CMakeLists.txt (working copy) @@ -218,6 +218,7 @@ ${NEPOMUK_LIBRARIES} ${SOPRANO_LIBRARIES} ${NEPOMUK_QUERY_LIBRARIES} + nepomukannotation ) endif (Nepomuk_FOUND)