• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

Nepomuk-Core

  • sources
  • kde-4.12
  • kdelibs
  • nepomuk-core
  • services
  • fileindexer
  • indexer
extractorpluginmanager.cpp
Go to the documentation of this file.
1 /*
2  * <one line to give the library's name and an idea of what it does.>
3  * Copyright (C) 2012 Vishesh Handa <me@vhanda.in>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18  *
19  */
20 
21 #include "extractorplugin.h"
22 #include "extractorpluginmanager.h"
23 
24 #include <KService>
25 #include <KMimeType>
26 #include <KServiceTypeTrader>
27 #include <KDebug>
28 
29 namespace Nepomuk2 {
30 
31 
32 ExtractorPluginManager::ExtractorPluginManager(QObject* parent): QObject(parent)
33 {
34  QList< ExtractorPlugin* > all = allExtractors();
35 
36  foreach(ExtractorPlugin* ex, all) {
37  if( ex->criteria() == ExtractorPlugin::BasicMimeType ) {
38  foreach(const QString& type, ex->mimetypes()) {
39  m_simpleExtractors.insertMulti( type, ex );
40  }
41  }
42  else if( ex->criteria() == ExtractorPlugin::Custom ) {
43  m_complexExtractors << ex;
44  }
45  }
46 }
47 
48 ExtractorPluginManager::~ExtractorPluginManager()
49 {
50  qDeleteAll( m_simpleExtractors.values().toSet() );
51  qDeleteAll( m_complexExtractors );
52 }
53 
54 
55 QList<ExtractorPlugin*> ExtractorPluginManager::allExtractors()
56 {
57  // Get all the plugins
58  KService::List plugins = KServiceTypeTrader::self()->query( "NepomukFileExtractor" );
59 
60  QList<ExtractorPlugin*> extractors;
61  KService::List::const_iterator it;
62  for( it = plugins.constBegin(); it != plugins.constEnd(); it++ ) {
63  KService::Ptr service = *it;
64 
65  QString error;
66  Nepomuk2::ExtractorPlugin* ex = service->createInstance<Nepomuk2::ExtractorPlugin>( this, QVariantList(), &error );
67  if( !ex ) {
68  kError() << "Could not create Extractor: " << service->library();
69  kError() << error;
70  continue;
71  }
72 
73  extractors << ex;
74  }
75 
76  return extractors;
77 }
78 
79 QList<ExtractorPlugin*> ExtractorPluginManager::fetchExtractors(const QUrl& url, const QString& mimetype)
80 {
81  QList<ExtractorPlugin*> plugins = m_simpleExtractors.values( mimetype );
82  foreach( ExtractorPlugin* ex, m_complexExtractors ) {
83  if( ex->shouldExtract( url, mimetype ) )
84  plugins << ex;
85  }
86 
87  return plugins;
88 }
89 
90 }
Nepomuk2::ExtractorPluginManager::fetchExtractors
QList< ExtractorPlugin * > fetchExtractors(const QUrl &url, const QString &mimetype)
Fetch the extractors which can be used to extract data for the respective file with the given mimetyp...
Definition: extractorpluginmanager.cpp:79
Nepomuk2::ExtractorPlugin
The ExtractorPlugin is the base class for all file metadata extractors.
Definition: extractorplugin.h:60
QObject
Nepomuk2::ExtractorPluginManager::~ExtractorPluginManager
virtual ~ExtractorPluginManager()
Definition: extractorpluginmanager.cpp:48
Nepomuk2::ExtractorPlugin::Custom
The plugin implements the determineMimeType function and uses that to determine if the url and mimety...
Definition: extractorplugin.h:82
Nepomuk2::ExtractorPlugin::criteria
virtual ExtractingCritera criteria()
Returns the critera that is being used for determining if this plugin can index the files provided to...
Definition: extractorplugin.cpp:39
Nepomuk2::ExtractorPlugin::BasicMimeType
This is a simple plugin that just has a list of mimetypes that it supports.
Definition: extractorplugin.h:76
Nepomuk2::ExtractorPlugin::shouldExtract
virtual bool shouldExtract(const QUrl &url, const QString &mimeType)
By default this returns true if mimetype is in the list of mimetypes provided by the plugin...
Definition: extractorplugin.cpp:49
Nepomuk2::ExtractorPluginManager::ExtractorPluginManager
ExtractorPluginManager(QObject *parent=0)
Definition: extractorpluginmanager.cpp:32
Nepomuk2::ExtractorPlugin::mimetypes
virtual QStringList mimetypes()
Provide a list of mimetypes which are supported by this plugin.
Definition: extractorplugin.cpp:44
extractorplugin.h
extractorpluginmanager.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:48:08 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Nepomuk-Core

Skip menu "Nepomuk-Core"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal