/*
* Copyright (C) 2009-2010 Collabora Ltd. <info@collabora.co.uk>
* @Author Dario Freddi <dario.freddi@collabora.co.uk>
* Copyright (C) 2011 Daniele E. Domenichelli <daniele.domenichelli@gmail.com>
*
* 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) 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
* 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, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef LIBKTP_TELEPATHY_BASE_JOB_H
#define LIBKTP_TELEPATHY_BASE_JOB_H
#include <KJob>
namespace KTp
{
/**
* This enum defines the error code for a job spawned by one of the functions inside \c TelepathyBridge
*/
enum JobError {
/** Taken from KJob. No errors occurred */
NoError = 0,
/** Taken from KJob. The job was killed */
KilledJobError = 1,
/** The operation supplied is invalid. This, most of the times, represents an error internal to TelepathyBridge */
InvalidOperationError = 101,
/**
* This error means that there has been one or more errors while mapping Nepomuk resources to Telepathy contacts.
* For specific operations, this means that:
* <ul>
* <li>If the operation is being done upon a contact, the Nepomuk resource provided could not be
* mapped to an existing Tp::Contact.
* </li>
* <li>If the operation is being done upon a metacontact, none of the \c PersonContact belonging to the metacontact
* could be mapped to an existing Tp::Contact.
* </li>
* </ul>
*/
NoContactsFoundError = 102,
/** None of the specified \c RemovalModes were available for the contact(s) in question */
NoRemovalModesAvailableError = 103,
/** No valid Telepathy accounts were found to match the specified contacts and/or resources */
NoAccountsFoundError = 104,
/** The protocol of the account on which the request is being done is not capable to carry on the requested action */
ProtocolNotCapableError = 105,
/** The operation requested the account to be online, but it is not */
AccountNotOnlineError = 106,
/** An operation attempted to create a nepomuk resource which already exists */
ResourceAlreadyExistsError = 107,
/** A channel is null */
NullChannel = 108,
/** A required Tp::Feature is not ready */
FeatureNotReady = 109,
/** Cannot accept file */
AcceptFileError = 111,
/** File transfer cancelled */
FileTransferCancelled = 112,
/** URI Property is missing */
UriPropertyMissing = 113,
/** Non a local file */
NotALocalFile = 114,
/** Cannot provide file */
ProvideFileError = 115,
/** Cannot cancel file transfer */
CancelFileTransferError = 116,
/** Telepathy triggered an error */
TelepathyErrorError = 200,
/** KTp Error */
KTpError = 300
};
class TelepathyBaseJobPrivate;
class TelepathyBaseJob : public KJob
{
Q_OBJECT
Q_DISABLE_COPY(TelepathyBaseJob)
Q_DECLARE_PRIVATE(TelepathyBaseJob)
Q_PRIVATE_SLOT(d_func(), void __k__tpOperationFinished(Tp::PendingOperation*))
Q_PRIVATE_SLOT(d_func(), void __k__doEmitResult())
protected:
explicit TelepathyBaseJob(TelepathyBaseJobPrivate &dd, QObject *parent = 0);
virtual ~TelepathyBaseJob();
void setProcessedAmountAndCalculateSpeed(qulonglong amount);
TelepathyBaseJobPrivate * const d_ptr;
};
} // namespace KTp
#endif // LIBKTP_TELEPATHY_BASE_JOB_H