kde-playground/kdepim-runtime/migration/kmigratorbase.h
Ivailo Monev a9b00154bc generic: replace forward class declarations with header inclusions
Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
2019-07-31 18:05:48 +00:00

92 lines
2.6 KiB
C++

/*
Copyright (c) 2009 Jonathan Armond <jon.armond@gmail.com>
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 KMIGRATORBASE_H
#define KMIGRATORBASE_H
#include <akonadi/agentinstance.h>
#include <QObject>
#include <QFile>
class KJob;
/**
* Base class for akonadi resource migrators.
*/
class KMigratorBase : public QObject
{
Q_OBJECT
public:
enum MigrationState {
None,
Bridged,
Complete
};
enum MessageType {
Success,
Skip,
Info,
Warning,
Error
};
Q_ENUMS( MigrationState )
KMigratorBase();
virtual ~KMigratorBase();
/**
* Read resource migration state.
*
* @return MigrationState and None if the resource with @param identifier as identifier is not available.
*/
MigrationState migrationState( const QString &identifier ) const;
/**
* Set resource migration state.
*
* Persists migration state in the resource config.
* @param resId and @param state is registered under @param identifier.
* Additionally all bridged resources are registered in the @param type and @param identifier.
*/
void setMigrationState( const QString &identifier, MigrationState state,
const QString &resId, const QString &type );
virtual void migrateNext() = 0;
protected:
KJob *createAgentInstance( const QString &typeId, QObject *receiver, const char* slot );
virtual void migrationFailed( const QString &errorMsg, const Akonadi::AgentInstance &instance
= Akonadi::AgentInstance() ) = 0;
signals:
void message( KMigratorBase::MessageType type, const QString &msg );
protected slots:
virtual void migrate() = 0;
private slots:
void logMessage( KMigratorBase::MessageType type, const QString &msg );
private:
QFile* m_logFile;
};
#endif