kde-playground/kdepimlibs/akonadi/collectionmodel_p.h
2015-04-14 21:49:29 +00:00

107 lines
3.1 KiB
C++

/*
Copyright (c) 2006 - 2008 Volker Krause <vkrause@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 AKONADI_COLLECTIONMODEL_P_H
#define AKONADI_COLLECTIONMODEL_P_H
#include "collection.h"
#include <klocalizedstring.h>
#include <QtCore/QHash>
#include <QtCore/QList>
#include <QtCore/QModelIndex>
#include <QtCore/QStringList>
class KJob;
namespace Akonadi {
class CollectionModel;
class CollectionStatistics;
class Monitor;
class Session;
/**
* @internal
*/
class CollectionModelPrivate
{
public:
Q_DECLARE_PUBLIC(CollectionModel)
explicit CollectionModelPrivate(CollectionModel *parent)
: q_ptr(parent)
, monitor(0)
, session(0)
, fetchStatistics(false)
, unsubscribed(false)
, headerContent(i18nc("@title:column, name of a thing", "Name"))
{
}
virtual ~CollectionModelPrivate() {}
CollectionModel *q_ptr;
QHash<Collection::Id, Collection> collections;
QHash<Collection::Id, QVector<Collection::Id> > childCollections;
QHash<Collection::Id, Collection> m_newCollections;
QHash< Collection::Id, QVector<Collection::Id> > m_newChildCollections;
Monitor *monitor;
Session *session;
QStringList mimeTypes;
bool fetchStatistics;
bool unsubscribed;
QString headerContent;
void init();
void startFirstListJob();
void collectionRemoved(const Akonadi::Collection &);
void collectionChanged(const Akonadi::Collection &);
void updateDone(KJob *);
void collectionStatisticsChanged(Collection::Id, const Akonadi::CollectionStatistics &);
void listDone(KJob *);
void editDone(KJob *);
void dropResult(KJob *);
void collectionsChanged(const Akonadi::Collection::List &cols);
QModelIndex indexForId(Collection::Id id, int column = 0) const;
bool removeRowFromModel(int row, const QModelIndex &parent = QModelIndex());
bool supportsContentType(const QModelIndex &index, const QStringList &contentTypes);
private:
void updateSupportedMimeTypes(Collection col)
{
const QStringList l = col.contentMimeTypes();
QStringList::ConstIterator constEnd(l.constEnd());
for (QStringList::ConstIterator it = l.constBegin(); it != constEnd; ++it) {
if ((*it) == Collection::mimeType()) {
continue;
}
if (!mimeTypes.contains(*it)) {
mimeTypes << *it;
}
}
}
};
}
#endif