diff options
Diffstat (limited to 'src/nepomuk/utils')
-rw-r--r-- | src/nepomuk/utils/nepomukutils_export.h | 40 | ||||
-rw-r--r-- | src/nepomuk/utils/resourcemodel.cpp | 230 | ||||
-rw-r--r-- | src/nepomuk/utils/resourcemodel.h | 177 | ||||
-rw-r--r-- | src/nepomuk/utils/simpleresourcemodel.cpp | 170 | ||||
-rw-r--r-- | src/nepomuk/utils/simpleresourcemodel.h | 144 |
5 files changed, 0 insertions, 761 deletions
diff --git a/src/nepomuk/utils/nepomukutils_export.h b/src/nepomuk/utils/nepomukutils_export.h deleted file mode 100644 index 718bd7c3..00000000 --- a/src/nepomuk/utils/nepomukutils_export.h +++ /dev/null @@ -1,40 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2007 David Faure <faure@kde.org> - Copyright (C) 2010 Sebastian Trueg <trueg@kde.org> - - 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 NEPOMUKUTILS_EXPORT_H -#define NEPOMUKUTILS_EXPORT_H - -/* needed for KDE_EXPORT and KDE_IMPORT macros */ -#include <kdemacros.h> - -#ifndef NEPOMUKUTILS_EXPORT -# if defined(KDELIBS_STATIC_LIBS) - /* No export/import for static libraries */ -# define NEPOMUKUTILS_EXPORT -# elif defined(MAKE_NEPOMUKUTILS_LIB) - /* We are building this library */ -# define NEPOMUKUTILS_EXPORT KDE_EXPORT -# else - /* We are using this library */ -# define NEPOMUKUTILS_EXPORT KDE_IMPORT -# endif -#endif - -#endif diff --git a/src/nepomuk/utils/resourcemodel.cpp b/src/nepomuk/utils/resourcemodel.cpp deleted file mode 100644 index 72c71e9b..00000000 --- a/src/nepomuk/utils/resourcemodel.cpp +++ /dev/null @@ -1,230 +0,0 @@ -/* - This file is part of the Nepomuk KDE project. - Copyright (C) 2007-2010 Sebastian Trueg <trueg@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "resourcemodel.h" - -#include <QtCore/QUrl> -#include <QtCore/QList> -#include <QtCore/QMimeData> - -#include "kurl.h" -#include "kdebug.h" -#include "kcategorizedsortfilterproxymodel.h" -#include "kicon.h" -#include "klocale.h" - -#include <Nepomuk2/Resource> -#include <Nepomuk2/Types/Class> -#include <Nepomuk2/Variant> - -#include <Soprano/Vocabulary/RDFS> -#include <Soprano/Vocabulary/NAO> - - -Q_DECLARE_METATYPE(Nepomuk2::Types::Class) - - -class Nepomuk2::Utils::ResourceModel::Private -{ -public: -}; - - -Nepomuk2::Utils::ResourceModel::ResourceModel( QObject* parent ) - : QAbstractItemModel( parent ), - d( new Private() ) -{ -} - - -Nepomuk2::Utils::ResourceModel::~ResourceModel() -{ - delete d; -} - - -QModelIndex Nepomuk2::Utils::ResourceModel::parent( const QModelIndex& child ) const -{ - Q_UNUSED(child); - return QModelIndex(); -} - - -int Nepomuk2::Utils::ResourceModel::columnCount( const QModelIndex& parent ) const -{ - Q_UNUSED(parent); - return ResourceModelColumnCount; -} - - -QVariant Nepomuk2::Utils::ResourceModel::data( const QModelIndex& index, int role ) const -{ - Nepomuk2::Resource res = resourceForIndex( index ); - if( !res.isValid() ) { - return QVariant(); - } - - // - // Part 1: column specific data - // - switch( index.column() ) { - case ResourceColumn: - switch( role ) { - case Qt::DisplayRole: - case Qt::EditRole: - return res.genericLabel(); - - case Qt::DecorationRole: { - QString iconName = res.genericIcon(); - if( !iconName.isEmpty() ) { - return KIcon( iconName ); - } - else { - QIcon icon = Types::Class(res.type()).icon(); - if( !icon.isNull() ) - return icon; - else - return QVariant(); - } - } - - case Qt::ToolTipRole: - return KUrl( res.uri() ).prettyUrl(); - - } - - case ResourceTypeColumn: - switch( role ) { - case Qt::DisplayRole: - case Qt::EditRole: - return Types::Class( res.type() ).label(); - - case Qt::DecorationRole: { - QIcon icon = Types::Class(res.type()).icon(); - if( !icon.isNull() ) - return icon; - else - return QVariant(); - } - - case Qt::ToolTipRole: - return KUrl(res.type()).prettyUrl(); - } - } - - - // - // Part 2: column-independant data - // - switch( role ) { - case KCategorizedSortFilterProxyModel::CategorySortRole: - // FIXME: sort files before other stuff and so on - - case KCategorizedSortFilterProxyModel::CategoryDisplayRole: { - Q_ASSERT( !res.type().isEmpty() ); - Nepomuk2::Types::Class c( res.type() ); - QString cat = c.label(); - if ( cat.isEmpty() ) { - cat = c.name(); - } - if ( c.uri() == Soprano::Vocabulary::RDFS::Resource() || cat.isEmpty() ) { - cat = i18nc( "@title KCategorizedSortFilterProxyModel grouping for all Nepomukj resources that are of type rdfs:Resource", "Miscellaneous" ); - } - - return cat; - } - - case ResourceRole: - return QVariant::fromValue( res ); - - case ResourceTypeRole: - return QVariant::fromValue( Nepomuk2::Types::Class(res.type()) ); - - case ResourceCreationDateRole: - return res.property( Soprano::Vocabulary::NAO::created() ).toDateTime(); - } - - // fallback - return QVariant(); -} - - -QVariant Nepomuk2::Utils::ResourceModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - if( role == Qt::DisplayRole ) { - switch( section ) { - case ResourceColumn: - return i18nc("@title:column The Nepomuk resource label and icon", "Resource"); - case ResourceTypeColumn: - return i18nc("@title:column The Nepomuk resource's RDF type", "Resource Type"); - } - } - - return QAbstractItemModel::headerData(section, orientation, role); -} - - -Qt::ItemFlags Nepomuk2::Utils::ResourceModel::flags( const QModelIndex& index ) const -{ - if ( index.isValid() ) { - return QAbstractItemModel::flags( index ) | Qt::ItemIsDragEnabled; - } - else { - return QAbstractItemModel::flags( index ); - } -} - - -QMimeData* Nepomuk2::Utils::ResourceModel::mimeData( const QModelIndexList& indexes ) const -{ - KUrl::List uris; - foreach ( const QModelIndex& index, indexes ) { - if (index.isValid()) { - uris << index.data( ResourceRole ).value<Resource>().uri(); - } - } - - QMimeData* mimeData = new QMimeData(); - uris.populateMimeData( mimeData ); - - QByteArray data; - QDataStream s( &data, QIODevice::WriteOnly ); - s << uris; - mimeData->setData( mimeTypes().first(), data ); - - return mimeData; -} - - -QStringList Nepomuk2::Utils::ResourceModel::mimeTypes() const -{ - return( QStringList() - << QLatin1String( "application/x-nepomuk-resource-uri" ) - << KUrl::List::mimeDataTypes() ); -} - - -bool Nepomuk2::Utils::ResourceModel::setData( const QModelIndex& index, const QVariant& value, int role ) -{ - return QAbstractItemModel::setData(index, value, role); -} - -#include "resourcemodel.moc" diff --git a/src/nepomuk/utils/resourcemodel.h b/src/nepomuk/utils/resourcemodel.h deleted file mode 100644 index 526c7ac0..00000000 --- a/src/nepomuk/utils/resourcemodel.h +++ /dev/null @@ -1,177 +0,0 @@ -/* - This file is part of the Nepomuk KDE project. - Copyright (C) 2007-2010 Sebastian Trueg <trueg@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef _NEPOMUK_RESOUCE_MODEL_H_ -#define _NEPOMUK_RESOUCE_MODEL_H_ - -#include <QtCore/QAbstractItemModel> - -#include "nepomukutils_export.h" - -namespace Nepomuk2 { - - class Resource; - - namespace Utils { - /** - * \class ResourceModel resourcemodel.h Nepomuk/Utils/ResourceModel - * - * \brief Base class for all models providing a plain list of resources. - * - * The %ResourceModel is a base class for models that handle a set of - * %Nepomuk Resource instances. This can be a simple list as in SimpleResourceModel - * or a set of query results as in ResultModel. It could also be a dynamic list - * which is updated while the user scrolls it. - * - * %ResourceModel cannot be instanciated by itself. Use one of the subclasses - * or derive your own subclass from it. - * - * At least the following methods need to be implemented in a subclass: - * \li resourceForIndex() - * \li indexForResource(), - * \li QAbstractItemModel::rowCount() - * \li QAbstractItemModel::index() - * - * \author Sebastian Trueg <trueg@kde.org> - * - * \since 4.6 - */ - class NEPOMUKUTILS_EXPORT ResourceModel : public QAbstractItemModel - { - Q_OBJECT - - public: - /** - * Constructor. - */ - ResourceModel( QObject* parent = 0 ); - - /** - * Destructor - */ - virtual ~ResourceModel(); - - /** - * The columns supported by ResourceModel are identified - * by this enumeration. - */ - enum ResourceModelColumns { - /// The first column displays the label of the resource and its icon - ResourceColumn = 0, - - /// The second column displays the resource's type - ResourceTypeColumn = 1, - - /// The number of columns - ResourceModelColumnCount = 2 - }; - - /** - * Custom roles that can be accessed for example in delegates. - */ - enum ResourceRoles { - /** - * The resource itself, provided as a Nepomuk::Resource instance. - */ - ResourceRole = 7766897, - - /** - * The type of the resource, provided as a Nepomuk::Types::Class - * instance. - */ - ResourceTypeRole = 687585, - - /** - * The creation date of the resource. - */ - ResourceCreationDateRole = 7766898 - }; - - /** - * Get the Resource which corresponds to \p index. - * - * \return The Resource which corresponds to \p index or an invalid Resource - * if \p index is invalid. - */ - virtual Resource resourceForIndex( const QModelIndex& index ) const = 0; - - /** - * Get the index for a resource. - * - * \return The index which corresponds to \p res of an invalid QModelIndex - * if \p res is not part of this model. - */ - virtual QModelIndex indexForResource( const Resource& res ) const = 0; - - /** - * The default implementation returns an invalid QModelIndex, thus providing - * a plain list. - */ - virtual QModelIndex parent( const QModelIndex& child ) const; - - /** - * The default implementation returns 2 with the first column representing the resource - * itself and the second one showing the type. - */ - virtual int columnCount( const QModelIndex& parent ) const; - - /** - * Handles most roles typically used in applications like Qt::DisplayRole, Qt::ToolTipRole, - * and Qt::DecorationRole. Additionally KCategorizedSortFilterProxyModel roles are supported - * categorizing by resource types. - */ - virtual QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const; - - /** - * Provides header data for the supported columns. - */ - virtual QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; - - /** - * Reimplemented to support dragging of resources out of the model. - */ - virtual Qt::ItemFlags flags( const QModelIndex& index ) const; - - /** - * Stores the resource URIs via KUrl::List::populateMimeData() and as a specific - * "application/x-nepomuk-resource-uri" mime type to indicate that these are URIs - * corresponding to actual %Nepomuk resources. - */ - virtual QMimeData* mimeData( const QModelIndexList& indexes ) const; - - /** - * \return The KUrl mime types and "application/x-nepomuk-resource-uri". - */ - virtual QStringList mimeTypes() const; - - /** - * Provided for future extensions. - */ - virtual bool setData( const QModelIndex& index, const QVariant& value, int role ); - - private: - class Private; - Private* const d; - }; - } -} - -#endif diff --git a/src/nepomuk/utils/simpleresourcemodel.cpp b/src/nepomuk/utils/simpleresourcemodel.cpp deleted file mode 100644 index f500f648..00000000 --- a/src/nepomuk/utils/simpleresourcemodel.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/* - This file is part of the Nepomuk KDE project. - Copyright (C) 2008-2010 Sebastian Trueg <trueg@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "simpleresourcemodel.h" - -#include <QtCore/QUrl> -#include <QtCore/QList> - -#include <Nepomuk2/Resource> -#include <Nepomuk2/Query/Result> - -#include "kdebug.h" -#include "kurl.h" - - -class Nepomuk2::Utils::SimpleResourceModel::Private -{ -public: - QList<Nepomuk2::Resource> resources; -}; - - -Nepomuk2::Utils::SimpleResourceModel::SimpleResourceModel( QObject* parent ) - : ResourceModel( parent ), - d( new Private() ) -{ -} - - -Nepomuk2::Utils::SimpleResourceModel::~SimpleResourceModel() -{ - delete d; -} - - -QModelIndex Nepomuk2::Utils::SimpleResourceModel::indexForResource( const Resource& res ) const -{ - Q_ASSERT( res.isValid() ); - // FIXME: performance - int i = 0; - QList<Nepomuk2::Resource>::const_iterator end = d->resources.constEnd(); - for ( QList<Nepomuk2::Resource>::const_iterator it = d->resources.constBegin(); it != end; ++it ) { - if ( *it == res ) { - return index( i, 0 ); - } - ++i; - } - - return QModelIndex(); -} - - -Nepomuk2::Resource Nepomuk2::Utils::SimpleResourceModel::resourceForIndex( const QModelIndex& index ) const -{ - if ( index.isValid() && index.row() < d->resources.count() ) { - return d->resources[index.row()]; - } - else { - return Resource(); - } -} - - -int Nepomuk2::Utils::SimpleResourceModel::rowCount( const QModelIndex& parent ) const -{ - if ( parent.isValid() ) { - return 0; - } - else { - return d->resources.count(); - } -} - - -QModelIndex Nepomuk2::Utils::SimpleResourceModel::index( int row, int column, const QModelIndex& parent ) const -{ - if ( !parent.isValid() && row < d->resources.count() ) { - return createIndex( row, column, 0 ); - } - else { - return QModelIndex(); - } -} - - -bool Nepomuk2::Utils::SimpleResourceModel::removeRows(int row, int count, const QModelIndex& parent) -{ - if( count < 1 || row < 0 || (row + count) > d->resources.size() || parent.isValid() ) - return false; - - beginRemoveRows( parent, row, row + count -1 ); - - QList<Resource>::iterator begin, end; - begin = end = d->resources.begin(); - begin += row; - end += row + count; - d->resources.erase( begin, end ); - - endRemoveRows(); - return true; -} - - -void Nepomuk2::Utils::SimpleResourceModel::setResources( const QList<Nepomuk2::Resource>& resources ) -{ - d->resources = resources; - reset(); -} - - -void Nepomuk2::Utils::SimpleResourceModel::addResources( const QList<Nepomuk2::Resource>& resources ) -{ - if(!resources.isEmpty()) { - beginInsertRows( QModelIndex(), d->resources.count(), d->resources.count() + resources.count() - 1 ); - d->resources << resources; - endInsertRows(); - } -} - - -void Nepomuk2::Utils::SimpleResourceModel::addResource( const Nepomuk2::Resource& resource ) -{ - addResources( QList<Resource>() << resource ); -} - - -void Nepomuk2::Utils::SimpleResourceModel::setResults( const QList<Nepomuk2::Query::Result>& results) -{ - clear(); - addResults( results ); -} - -void Nepomuk2::Utils::SimpleResourceModel::addResults( const QList<Nepomuk2::Query::Result>& results ) -{ - Q_FOREACH( const Query::Result& result, results ) { - addResource( result.resource() ); - } -} - -void Nepomuk2::Utils::SimpleResourceModel::addResult( const Nepomuk2::Query::Result result ) -{ - addResource( result.resource() ); -} - - -void Nepomuk2::Utils::SimpleResourceModel::clear() -{ - d->resources.clear(); - reset(); -} - -#include "simpleresourcemodel.moc" diff --git a/src/nepomuk/utils/simpleresourcemodel.h b/src/nepomuk/utils/simpleresourcemodel.h deleted file mode 100644 index 2f48d930..00000000 --- a/src/nepomuk/utils/simpleresourcemodel.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - This file is part of the Nepomuk KDE project. - Copyright (C) 2008-2010 Sebastian Trueg <trueg@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) version 3, or any - later version accepted by the membership of KDE e.V. (or its - successor approved by the membership of KDE e.V.), which shall - act as a proxy defined in Section 6 of version 3 of the license. - - 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef _NEPOMUK_SIMPLE_RESOURCE_MODEL_H_ -#define _NEPOMUK_SIMPLE_RESOURCE_MODEL_H_ - -#include "resourcemodel.h" - -#include "nepomukutils_export.h" - -#include <Nepomuk2/Resource> -#include <Nepomuk2/Query/Result> - -#include <QtCore/QList> - -namespace Nepomuk2 { - namespace Utils { - /** - * \class SimpleResourceModel simpleresourcemodel.h Nepomuk/Utils/SimpleResourceModel - * - * A simple ResourceModel that handles a list of Resource instances which - * can be managed via the setResources(), addResource(), addResources(), and - * clear() methods. - * - * \author Sebastian Trueg <trueg@kde.org> - * - * \since 4.6 - */ - class NEPOMUKUTILS_EXPORT SimpleResourceModel : public ResourceModel - { - Q_OBJECT - - public: - /** - * Creates an empty resource model. - */ - SimpleResourceModel( QObject* parent = 0 ); - - /** - * Destructor - */ - ~SimpleResourceModel(); - - /** - * Get the Resource which corresponds to \p index. - * - * \return The Resource which corresponds to \p index or an invalid Resource - * if \p index is invalid. - */ - QModelIndex indexForResource( const Resource& res ) const; - - /** - * Get the index for a resource. - * - * \return The index which corresponds to \p res of an invalid QModelIndex - * if \p res is not part of this model. - */ - Resource resourceForIndex( const QModelIndex& index ) const; - - /** - * \return The number of resources added to the model for an invalid parent index. - */ - int rowCount( const QModelIndex& parent = QModelIndex() ) const; - - /** - * Creates an index for the cell at \p row and \p column. - */ - QModelIndex index( int row, int column, const QModelIndex& parent = QModelIndex() ) const; - - /** - * Removes those resources from the model. - */ - bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex()); - - public Q_SLOTS: - /** - * Set the resources to be provided by the model to \p resources. - */ - void setResources( const QList<Nepomuk2::Resource>& resources ); - - /** - * Add \p resources to the list of resources being provided by the - * model. - */ - void addResources( const QList<Nepomuk2::Resource>& resources ); - - /** - * Add \p resource to the list of resources being provided by the - * model. - */ - void addResource( const Nepomuk2::Resource& resource ); - - /** - * This method is similar to setResources(). It is provided for - * allowing convenient connections from signals that provide - * Query::Result objects. - */ - void setResults( const QList<Nepomuk2::Query::Result>& results ); - - /** - * This method is similar to addResources(). It is provided for - * allowing convenient connections from signals that provide - * Query::Result objects like Query::QueryServiceClient::newResults(). - */ - void addResults( const QList<Nepomuk2::Query::Result>& results ); - - /** - * This method is similar to addResource(). It is provided for - * allowing convenient connections from signals that provide - * Query::Result objects. - */ - void addResult( const Nepomuk2::Query::Result result ); - - /** - * Clear the model by removing all resources added via setResources() and friends. - */ - void clear(); - - private: - class Private; - Private* const d; - }; - } -} - -#endif |