From 06f20cdf8362e2fd6f0818346aa5525edbda296f Mon Sep 17 00:00:00 2001 From: Marko Mattila Date: Thu, 11 Apr 2013 08:20:34 +0300 Subject: [PATCH] [nemo-transfer-engine] Removed autogenerated docs. --- doc/html/callbackinterface-members.html | 18 - doc/html/callbackinterface.html | 63 -- doc/html/dbmanager-members.html | 30 - doc/html/dbmanager.html | 150 ----- doc/html/imageoperation-members.html | 18 - doc/html/imageoperation.html | 66 -- doc/html/index.html | 42 -- doc/html/nemo-transferengine.index | 277 -------- doc/html/nemo-transferengine.pageindex | 609 ------------------ doc/html/transfer-engine.tags | 598 ----------------- doc/html/transferdbrecord-members.html | 42 -- doc/html/transferdbrecord.html | 88 --- doc/html/transferengine-members.html | 39 -- doc/html/transferengine.html | 195 ------ doc/html/transferengine.qch | Bin 53248 -> 0 bytes doc/html/transferengine.qhp | 144 ----- doc/html/transferengineclient-members.html | 23 - doc/html/transferengineclient.html | 155 ----- doc/html/transfermethodinfo-members.html | 28 - doc/html/transfermethodinfo.html | 95 --- doc/html/transferplugininterface-members.html | 19 - doc/html/transferplugininterface.html | 66 -- 22 files changed, 2765 deletions(-) delete mode 100644 doc/html/callbackinterface-members.html delete mode 100644 doc/html/callbackinterface.html delete mode 100644 doc/html/dbmanager-members.html delete mode 100644 doc/html/dbmanager.html delete mode 100644 doc/html/imageoperation-members.html delete mode 100644 doc/html/imageoperation.html delete mode 100644 doc/html/index.html delete mode 100644 doc/html/nemo-transferengine.index delete mode 100644 doc/html/nemo-transferengine.pageindex delete mode 100644 doc/html/transfer-engine.tags delete mode 100644 doc/html/transferdbrecord-members.html delete mode 100644 doc/html/transferdbrecord.html delete mode 100644 doc/html/transferengine-members.html delete mode 100644 doc/html/transferengine.html delete mode 100644 doc/html/transferengine.qch delete mode 100644 doc/html/transferengine.qhp delete mode 100644 doc/html/transferengineclient-members.html delete mode 100644 doc/html/transferengineclient.html delete mode 100644 doc/html/transfermethodinfo-members.html delete mode 100644 doc/html/transfermethodinfo.html delete mode 100644 doc/html/transferplugininterface-members.html delete mode 100644 doc/html/transferplugininterface.html diff --git a/doc/html/callbackinterface-members.html b/doc/html/callbackinterface-members.html deleted file mode 100644 index 1c067b9..0000000 --- a/doc/html/callbackinterface-members.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: List of All Members for CallbackInterface -
  • Modules
  • -
  • CallbackInterface
  • -

    List of All Members for CallbackInterface

    -

    This is the complete list of members for CallbackInterface, including inherited members.

    - - - diff --git a/doc/html/callbackinterface.html b/doc/html/callbackinterface.html deleted file mode 100644 index 2efaa67..0000000 --- a/doc/html/callbackinterface.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: CallbackInterface Class Reference -
  • Modules
  • -
  • CallbackInterface
  • -
    -

    Contents

    - -
    -

    CallbackInterface Class Reference

    - -

    The CallbackInterface class is a convenience class to wrap DBus callback infromation for TransferEngineClient API. More...

    - -
     #include <CallbackInterface>
    - -

    Public Functions

    - - - - -
    CallbackInterface ()
    CallbackInterface ( const QString & server, const QString & path, const QString & interface, const QString & cancelMethod, const QString & restartMethod )
    ~CallbackInterface ()
    - - -
    -

    Detailed Description

    -

    The CallbackInterface class is a convenience class to wrap DBus callback infromation for TransferEngineClient API.

    -

    This class should be used with TransferEngineClient API.

    -

    NOTE: If creating an instance of this class to the heap, the caller is responsible of freeing the allocated memory.

    -
    -

    See also TransferEngineClient::createSyncEvent() and TransferEngineClient::createDownloadEvent().

    - -
    -

    Member Function Documentation

    - -

    CallbackInterface::CallbackInterface ()

    -

    Construct an empty CallbackInterface. This can be used if client doesn't want to provide callback interface to the Sync or Download events.

    - - -

    CallbackInterface::CallbackInterface ( const QString & server, const QString & path, const QString & interface, const QString & cancelMethod, const QString & restartMethod )

    -

    Construct CallbackInterface instance to provide callback information to the TransferEngineClient. Setup arguments as:

    - - - -

    CallbackInterface::~CallbackInterface ()

    - -
    - - diff --git a/doc/html/dbmanager-members.html b/doc/html/dbmanager-members.html deleted file mode 100644 index 72be390..0000000 --- a/doc/html/dbmanager-members.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: List of All Members for DbManager -
  • Modules
  • -
  • DbManager
  • -

    List of All Members for DbManager

    -

    This is the complete list of members for DbManager, including inherited members.

    - - - diff --git a/doc/html/dbmanager.html b/doc/html/dbmanager.html deleted file mode 100644 index 2ad540e..0000000 --- a/doc/html/dbmanager.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: DbManager Class Reference -
  • Modules
  • -
  • DbManager
  • -
    -

    Contents

    - -
    -

    DbManager Class Reference

    - -

    The DbManager class is a singleton class to read and write transfers database. More...

    - -
     #include <DbManager>
    - -

    Public Functions

    - - - - - - - - - - - - - - - -
    ~DbManager ()
    QStringList callback ( int key ) const
    bool callbackMethods ( int key, QString & cancelMethod, QString & restartMethod ) const
    bool clearTransfers ()
    int createCallbackEntry ( int key, const QString & service, const QString & path, const QString & interface, const QString & cancelMethod, const QString & restartMethod )
    int createMetadataEntry ( int key, const QString & title, const QString & description )
    int createTransferEntry ( MediaItem * mediaItem )
    MediaItem * mediaItem ( int key ) const
    bool removeTransfer ( int key )
    TransferEngineData::TransferStatus transferStatus ( int key ) const
    TransferEngineData::TransferType transferType ( int key ) const
    QList<TransferDBRecord> transfers () const
    bool updateProgress ( int key, qreal progress )
    bool updateTransferStatus ( int key, TransferEngineData::TransferStatus status )
    - -

    Static Public Members

    - - -
    DbManager * instance ()
    - - -
    -

    Detailed Description

    -

    The DbManager class is a singleton class to read and write transfers database.

    -

    DbManager class takes care of reading and writing transfer database used by Nemo Transfer Engine. It's a singleton class and it can be instantiated using DbManager::instance() method.

    -
    - -
    -

    Member Function Documentation

    - -

    DbManager::~DbManager ()

    -

    Destructor.

    - - -

    QStringList DbManager::callback ( int key ) const

    -

    Get a DBus callback interface and method for the transfer with key. If there is no callback for the key then an empty QStringList is returned.

    -

    In a case there is a DBus callback, then QStringList contains the following items:

    - - - -

    bool DbManager::callbackMethods ( int key, QString & cancelMethod, QString & restartMethod ) const

    -

    Get the callback method names for the transfer with key. The method names are set to the output arguments cancelMethod and restartMethod.

    -

    This method returns true on success, false on failure.

    - - -

    bool DbManager::clearTransfers ()

    -

    Clear all finished, canceled or failed transfers from the database.

    -

    This method returns true on success, false on failure.

    - - -

    int DbManager::createCallbackEntry ( int key, const QString & service, const QString & path, const QString & interface, const QString & cancelMethod, const QString & restartMethod )

    -

    Create a callback entry to the callback table for the existing transfer with a key.

    -

    The callback is a dbus interface so it must contain the following attributes:

    - -

    This method returns a key of the created callback record in a callback table or -1 on failure.

    -

    NOTE: Deleting the record from the transfer which has a key, also deletes related callback entry.

    - - -

    int DbManager::createMetadataEntry ( int key, const QString & title, const QString & description )

    -

    Create a metadata entry for the existing transfer with key. Metadata can contain only title and/or \description.

    -

    Metadata entry will be created to the metadata table. Argument key must point to the existing entry in transfers table.

    -

    This method returns a key of the created record in metadata table or -1 on failure.

    -

    NOTE: Deleting the record from the transfer which has a key, also deletes related metadata entry.

    - - -

    int DbManager::createTransferEntry ( MediaItem * mediaItem )

    -

    Create a transfer entry to the transfers table bsaed on mediaItem content.

    -

    MediaItem instance contains all the required information for the single Upload, Download or a Sync item. Based on this information, DbManager creates a record to the transfers table, but also to the callback and metadata tables if these are defined.

    -

    This method returns a key of the created transfer or -1 on failure.

    -

    See also MediaItem.

    - - -

    DbManager * DbManager::instance () [static]

    -

    Return a singleton instance of this DbManager. Note that caller is NOT responsible of deleting the instance. It will be deleted automatically when application stack is cleaned.

    - - -

    MediaItem * DbManager::mediaItem ( int key ) const

    -

    Returns a MediaItem instance from the transfer data with a key.

    - - -

    bool DbManager::removeTransfer ( int key )

    -

    Remove an existing transfer with a key from the transfers table. If this transfer has metadata or callback defined, they will be removed too.

    -

    This method returns true on success, false on failure.

    - - -

    TransferEngineData::TransferStatus DbManager::transferStatus ( int key ) const

    -

    Returns the transfer status of the transfer with key. In a case of error the TransferEngineData::Unknown is returned.

    - - -

    TransferEngineData::TransferType DbManager::transferType ( int key ) const

    -

    Returns the transfer type e.g. Sync, Download or Upload of the transfer with a key.

    -

    If there is no transfer record with key or error occurs, this method returns TransferEngineData::Undefined.

    - - -

    QList<TransferDBRecord> DbManager::transfers () const

    -

    Returns all the transfers from the database. This method doesn't fetch all the fields from all the tables, instead it returns what is required to fill fields in TransferDBRecord class.

    - - -

    bool DbManager::updateProgress ( int key, qreal progress )

    -

    Update a transfer progress of the existing transfer with key.

    -

    This method returns true on success, false on failure.

    - - -

    bool DbManager::updateTransferStatus ( int key, TransferEngineData::TransferStatus status )

    -

    Update a transfer status of the existing transfer with key. Changing the status updates the timestamp too.

    -

    This method returns true on success, false on failure.

    - -
    - - diff --git a/doc/html/imageoperation-members.html b/doc/html/imageoperation-members.html deleted file mode 100644 index 5addf06..0000000 --- a/doc/html/imageoperation-members.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: List of All Members for ImageOperation -
  • Modules
  • -
  • ImageOperation
  • -

    List of All Members for ImageOperation

    -

    This is the complete list of members for ImageOperation, including inherited members.

    - - - diff --git a/doc/html/imageoperation.html b/doc/html/imageoperation.html deleted file mode 100644 index abcce3a..0000000 --- a/doc/html/imageoperation.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: ImageOperation Class Reference -
  • Modules
  • -
  • ImageOperation
  • -
    -

    Contents

    - -
    -

    ImageOperation Class Reference

    - -

    The ImageOperation class is a helper class to manipulate images. More...

    - -
     #include <ImageOperation>
    - -

    Static Public Members

    - - - - -
    QString removeImageMetadata ( const QString & sourceFile )
    QString scaleImage ( const QString & sourceFile, qreal scaleFactor, const QString & targetFile = QString() )
    QString tempFilePath ( const QString & sourceFile )
    - - -
    -

    Detailed Description

    -

    The ImageOperation class is a helper class to manipulate images.

    -

    This class is meant to be used by share plugins. It can be used for:

    - -
    - -
    -

    Member Function Documentation

    - -

    QString ImageOperation::removeImageMetadata ( const QString & sourceFile ) [static]

    -

    Helper method to remove metadata from jpeg files. Only author and location related metadata will be removed. sourceFile is the path to the original file.

    -

    Returns a path to the copy of the image with metadata removed.

    - - -

    QString ImageOperation::scaleImage ( const QString & sourceFile, qreal scaleFactor, const QString & targetFile = QString() ) [static]

    -

    Scale image sourceFile using scaleFactor. The scaled image is stored to the targetFile or if targetFile is not given, then a temporary file is created for saving.

    -

    The scaleFactor argument must be > 0. This function returns path to the scaled image. Note that if user doesn't specify targetFile the scaled image is stored under temp directory. Nothing guarantees that created file will remain in that diretory forewer so the caller is reponsible of copying file for more permanent storing.

    -

    Returns a path to the scaled image.

    -

    It is also recommended that if the caller doesn't use the scaled file, which is stored to the temp directory later, the caller should remove the file.

    - - -

    QString ImageOperation::tempFilePath ( const QString & sourceFile ) [static]

    -

    Creates a temporary file from the sourceFile. This function uses sourceFile as a template to create a temp file. Temporary file will be e.g:

    -

    Source file: "/home/nemo/Pictures/img_001.jpg" Temporary file: "/var/tmp/img_001_0.jpg"

    -

    Note that it's caller's responsibility to remove created temp file.

    - -
    - - diff --git a/doc/html/index.html b/doc/html/index.html deleted file mode 100644 index cd5125c..0000000 --- a/doc/html/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: Nemo Transfer Engine -
  • Nemo Transfer Engine
  • -

    -

    Nemo Transfer Engine

    - - -
    -

    The Nemo Transfer Engine is a daemon process which takes care of tracking sharing, sync and downloads. In addition to just tracking those operations, it provides an API to create new share plugins and different functionality related these operations.The Nemo Transfer Engine doesn't provide any UI components, but the plugin interface expects sharing UIs to be written as QML.

    -

    The Nemo Transfer Engine can be understood as a front end to the database which contain all the information about sharing, syncs and downloads. For syncs and downloads it acts only as storage manager so clients can use Nemo Transfer Engine client API to create and update sync and download events. For sharing, Nemo Transfer Engine provides own API and supports share plugins.

    -

    See TransferEngine DbManager

    - -

    Nemo Transfer Engine API

    -

    The API can be divided in two different parts: the share plugin API and the client API.

    - -

    Share Plugin API

    -

    Share plugin is a Qt plugin, which must be implemented using C++ interfaces defined by Nemo Transfer Engine. The plugins must be installed to the specific location where Nemo Transfer Engine loads them. The actual share functionality implementation depends on the client e.g. if it's HW specific like NFC or online service such as Facebook. Each plugin must implement or use the following interface:

    - - -

    Client API

    -

    Client API can also be divided in two sections: full features DBus API and TransferEngineClient Interface. The first one supports all the features Nemo Transfer Engine provides and makes possible to implement for example Transfer UI and client side sharing interface on top of it. The TransferEngineClient is meant to be used by clients who want to inform Nemo Transfer Engine of ongoing Sync or Downloads.

    - -
    - - - - diff --git a/doc/html/nemo-transferengine.index b/doc/html/nemo-transferengine.index deleted file mode 100644 index c28805f..0000000 --- a/doc/html/nemo-transferengine.index +++ /dev/null @@ -1,277 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/html/nemo-transferengine.pageindex b/doc/html/nemo-transferengine.pageindex deleted file mode 100644 index 89692e7..0000000 --- a/doc/html/nemo-transferengine.pageindex +++ /dev/null @@ -1,609 +0,0 @@ - - - - ImageOperation class reference - ImageOperation Class Reference - imageoperation.html - APIPage - - - tempFilePath function ImageOperation - tempFilePath Function Reference - imageoperation.html#tempFilePath - APIPage - - - removeImageMetadata function ImageOperation - removeImageMetadata Function Reference - imageoperation.html#removeImageMetadata - APIPage - - - scaleImage function ImageOperation - scaleImage Function Reference - imageoperation.html#scaleImage - APIPage - - - CallbackInterface class reference - CallbackInterface Class Reference - callbackinterface.html - APIPage - - - CallbackInterface function CallbackInterface - CallbackInterface Function Reference - callbackinterface.html#CallbackInterface - APIPage - - - CallbackInterface function CallbackInterface - CallbackInterface Function Reference - callbackinterface.html#CallbackInterface - APIPage - - - ~CallbackInterface function CallbackInterface - ~CallbackInterface Function Reference - callbackinterface.html#~CallbackInterface - APIPage - - - TransferEngineClient class reference - TransferEngineClient Class Reference - transferengineclient.html - APIPage - - - Status enum type TransferEngineClient - Status Enum Reference - transferengineclient.html#Status-enum - APIPage - - - TransferEngineClient function TransferEngineClient - TransferEngineClient Function Reference - transferengineclient.html#TransferEngineClient - APIPage - - - ~TransferEngineClient function TransferEngineClient - ~TransferEngineClient Function Reference - transferengineclient.html#~TransferEngineClient - APIPage - - - createDownloadEvent function TransferEngineClient - createDownloadEvent Function Reference - transferengineclient.html#createDownloadEvent - APIPage - - - createSyncEvent function TransferEngineClient - createSyncEvent Function Reference - transferengineclient.html#createSyncEvent - APIPage - - - startTransfer function TransferEngineClient - startTransfer Function Reference - transferengineclient.html#startTransfer - APIPage - - - updateTransferProgress function TransferEngineClient - updateTransferProgress Function Reference - transferengineclient.html#updateTransferProgress - APIPage - - - finishTransfer function TransferEngineClient - finishTransfer Function Reference - transferengineclient.html#finishTransfer - APIPage - - - DbManager class reference - DbManager Class Reference - dbmanager.html - APIPage - - - instance function DbManager - instance Function Reference - dbmanager.html#instance - APIPage - - - ~DbManager function DbManager - ~DbManager Function Reference - dbmanager.html#~DbManager - APIPage - - - createMetadataEntry function DbManager - createMetadataEntry Function Reference - dbmanager.html#createMetadataEntry - APIPage - - - callback function DbManager - callback Function Reference - dbmanager.html#callback - APIPage - - - createCallbackEntry function DbManager - createCallbackEntry Function Reference - dbmanager.html#createCallbackEntry - APIPage - - - createTransferEntry function DbManager - createTransferEntry Function Reference - dbmanager.html#createTransferEntry - APIPage - - - updateTransferStatus function DbManager - updateTransferStatus Function Reference - dbmanager.html#updateTransferStatus - APIPage - - - updateProgress function DbManager - updateProgress Function Reference - dbmanager.html#updateProgress - APIPage - - - removeTransfer function DbManager - removeTransfer Function Reference - dbmanager.html#removeTransfer - APIPage - - - clearTransfers function DbManager - clearTransfers Function Reference - dbmanager.html#clearTransfers - APIPage - - - transfers function DbManager - transfers Function Reference - dbmanager.html#transfers - APIPage - - - transferType function DbManager - transferType Function Reference - dbmanager.html#transferType - APIPage - - - transferStatus function DbManager - transferStatus Function Reference - dbmanager.html#transferStatus - APIPage - - - callbackMethods function DbManager - callbackMethods Function Reference - dbmanager.html#callbackMethods - APIPage - - - mediaItem function DbManager - mediaItem Function Reference - dbmanager.html#mediaItem - APIPage - - - TransferEngine class reference - TransferEngine Class Reference - transferengine.html - APIPage - - - TransferEngine function TransferEngine - TransferEngine Function Reference - transferengine.html#TransferEngine - APIPage - - - ~TransferEngine function TransferEngine - ~TransferEngine Function Reference - transferengine.html#~TransferEngine - APIPage - - - uploadMediaItem function TransferEngine - uploadMediaItem Function Reference - transferengine.html#uploadMediaItem - APIPage - - - uploadMediaItemContent function TransferEngine - uploadMediaItemContent Function Reference - transferengine.html#uploadMediaItemContent - APIPage - - - createDownload function TransferEngine - createDownload Function Reference - transferengine.html#createDownload - APIPage - - - createSync function TransferEngine - createSync Function Reference - transferengine.html#createSync - APIPage - - - startTransfer function TransferEngine - startTransfer Function Reference - transferengine.html#startTransfer - APIPage - - - restartTransfer function TransferEngine - restartTransfer Function Reference - transferengine.html#restartTransfer - APIPage - - - finishTransfer function TransferEngine - finishTransfer Function Reference - transferengine.html#finishTransfer - APIPage - - - updateTransferProgress function TransferEngine - updateTransferProgress Function Reference - transferengine.html#updateTransferProgress - APIPage - - - transfers function TransferEngine - transfers Function Reference - transferengine.html#transfers - APIPage - - - transferMethods function TransferEngine - transferMethods Function Reference - transferengine.html#transferMethods - APIPage - - - clearTransfers function TransferEngine - clearTransfers Function Reference - transferengine.html#clearTransfers - APIPage - - - cancelTransfer function TransferEngine - cancelTransfer Function Reference - transferengine.html#cancelTransfer - APIPage - - - enableNotifications function TransferEngine - enableNotifications Function Reference - transferengine.html#enableNotifications - APIPage - - - notificationsEnabled function TransferEngine - notificationsEnabled Function Reference - transferengine.html#notificationsEnabled - APIPage - - - progressChanged function TransferEngine - progressChanged Function Reference - transferengine.html#progressChanged - APIPage - - - statusChanged function TransferEngine - statusChanged Function Reference - transferengine.html#statusChanged - APIPage - - - transferMethodListChanged function TransferEngine - transferMethodListChanged Function Reference - transferengine.html#transferMethodListChanged - APIPage - - - transfersChanged function TransferEngine - transfersChanged Function Reference - transferengine.html#transfersChanged - APIPage - - - TransferMethodInfo class reference - TransferMethodInfo Class Reference - transfermethodinfo.html - APIPage - - - TransferMethodInfoField enum type TransferMethodInfo - TransferMethodInfoField Enum Reference - transfermethodinfo.html#TransferMethodInfoField-enum - APIPage - - - TransferMethodInfo function TransferMethodInfo - TransferMethodInfo Function Reference - transfermethodinfo.html#TransferMethodInfo - APIPage - - - operator= function TransferMethodInfo - operator= Function Reference - transfermethodinfo.html#operator= - APIPage - - - TransferMethodInfo function TransferMethodInfo - TransferMethodInfo Function Reference - transfermethodinfo.html#TransferMethodInfo - APIPage - - - ~TransferMethodInfo function TransferMethodInfo - ~TransferMethodInfo Function Reference - transfermethodinfo.html#~TransferMethodInfo - APIPage - - - registerType function TransferMethodInfo - registerType Function Reference - transfermethodinfo.html#registerType - APIPage - - - value function TransferMethodInfo - value Function Reference - transfermethodinfo.html#value - APIPage - - - displayName TransferMethodInfo - displayName - transfermethodinfo.html - APIPage - - - userName TransferMethodInfo - userName - transfermethodinfo.html - APIPage - - - methodId TransferMethodInfo - methodId - transfermethodinfo.html - APIPage - - - shareUIPath TransferMethodInfo - shareUIPath - transfermethodinfo.html - APIPage - - - capabilitities TransferMethodInfo - capabilitities - transfermethodinfo.html - APIPage - - - accountId TransferMethodInfo - accountId - transfermethodinfo.html - APIPage - - - TransferPluginInterface class reference - TransferPluginInterface Class Reference - transferplugininterface.html - APIPage - - - transferObject function TransferPluginInterface - transferObject Function Reference - transferplugininterface.html#transferObject - APIPage - - - infoObject function TransferPluginInterface - infoObject Function Reference - transferplugininterface.html#infoObject - APIPage - - - pluginId function TransferPluginInterface - pluginId Function Reference - transferplugininterface.html#pluginId - APIPage - - - enabled function TransferPluginInterface - enabled Function Reference - transferplugininterface.html#enabled - APIPage - - - TransferDBRecord class reference - TransferDBRecord Class Reference - transferdbrecord.html - APIPage - - - TransferDBRecordField enum type TransferDBRecord - TransferDBRecordField Enum Reference - transferdbrecord.html#TransferDBRecordField-enum - APIPage - - - TransferDBRecord function TransferDBRecord - TransferDBRecord Function Reference - transferdbrecord.html#TransferDBRecord - APIPage - - - operator= function TransferDBRecord - operator= Function Reference - transferdbrecord.html#operator= - APIPage - - - TransferDBRecord function TransferDBRecord - TransferDBRecord Function Reference - transferdbrecord.html#TransferDBRecord - APIPage - - - ~TransferDBRecord function TransferDBRecord - ~TransferDBRecord Function Reference - transferdbrecord.html#~TransferDBRecord - APIPage - - - registerType function TransferDBRecord - registerType Function Reference - transferdbrecord.html#registerType - APIPage - - - value function TransferDBRecord - value Function Reference - transferdbrecord.html#value - APIPage - - - transfer_id TransferDBRecord - transfer_id - transferdbrecord.html - APIPage - - - transfer_type TransferDBRecord - transfer_type - transferdbrecord.html - APIPage - - - status TransferDBRecord - status - transferdbrecord.html - APIPage - - - size TransferDBRecord - size - transferdbrecord.html - APIPage - - - progress TransferDBRecord - progress - transferdbrecord.html - APIPage - - - plugin_id TransferDBRecord - plugin_id - transferdbrecord.html - APIPage - - - url TransferDBRecord - url - transferdbrecord.html - APIPage - - - timestamp TransferDBRecord - timestamp - transferdbrecord.html - APIPage - - - display_name TransferDBRecord - display_name - transferdbrecord.html - APIPage - - - resource_name TransferDBRecord - resource_name - transferdbrecord.html - APIPage - - - mime_type TransferDBRecord - mime_type - transferdbrecord.html - APIPage - - - service_icon TransferDBRecord - service_icon - transferdbrecord.html - APIPage - - - application_icon TransferDBRecord - application_icon - transferdbrecord.html - APIPage - - - thumbnail_icon TransferDBRecord - thumbnail_icon - transferdbrecord.html - APIPage - - - cancel_supported TransferDBRecord - cancel_supported - transferdbrecord.html - APIPage - - - restart_supported TransferDBRecord - restart_supported - transferdbrecord.html - APIPage - - - Nemo Transfer Engine - Nemo Transfer Engine - index.html - Article - - - Nemo Transfer Engine Nemo Transfer Engine API - Nemo Transfer Engine API - index.html#nemo-transfer-engine-api - Article - - - Nemo Transfer Engine Share Plugin API - Share Plugin API - index.html#share-plugin-api - Article - - - Nemo Transfer Engine Client API - Client API - index.html#client-api - Article - - diff --git a/doc/html/transfer-engine.tags b/doc/html/transfer-engine.tags deleted file mode 100644 index d1358f0..0000000 --- a/doc/html/transfer-engine.tags +++ /dev/null @@ -1,598 +0,0 @@ - - - - ImageOperation - imageoperation.html - - QString - tempFilePath - imageoperation.html - tempFilePath - (const QString & sourceFile) - - - QString - removeImageMetadata - imageoperation.html - removeImageMetadata - (const QString & sourceFile) - - - QString - scaleImage - imageoperation.html - scaleImage - (const QString & sourceFile, qreal scaleFactor, const QString & targetFile) - - - - CallbackInterface - callbackinterface.html - - - CallbackInterface - callbackinterface.html - CallbackInterface - () - - - - CallbackInterface - callbackinterface.html - CallbackInterface-2 - (const QString & server, const QString & path, const QString & interface, const QString & cancelMethod, const QString & restartMethod) - - - - ~CallbackInterface - callbackinterface.html - dtor.CallbackInterface - () - - - - TransferEngineClient - transferengineclient.html - - Status - Status-enum - - - - Status-enum - - - - Status-enum - - - - Status-enum - - - - - TransferEngineClient - transferengineclient.html - TransferEngineClient - (QObject * parent) - - - - ~TransferEngineClient - transferengineclient.html - dtor.TransferEngineClient - () - - - int - createDownloadEvent - transferengineclient.html - createDownloadEvent - (const QString & displayName, const QUrl & applicationIcon, const QUrl & serviceIcon, const QUrl & url, const QString & mimeType, qlonglong expectedFileSize, const CallbackInterface & callback) - - - int - createSyncEvent - transferengineclient.html - createSyncEvent - (const QString & displayName, const QUrl & applicationIcon, const QUrl & serviceIcon, const CallbackInterface & callback) - - - void - startTransfer - transferengineclient.html - startTransfer - (int transferId) - - - void - updateTransferProgress - transferengineclient.html - updateTransferProgress - (int transferId, qreal progress) - - - void - finishTransfer - transferengineclient.html - finishTransfer - (int transferId, Status status, const QString & reason) - - - - DbManager - dbmanager.html - - DbManager * - instance - dbmanager.html - instance - () - - - - ~DbManager - dbmanager.html - dtor.DbManager - () - - - int - createMetadataEntry - dbmanager.html - createMetadataEntry - (int key, const QString & title, const QString & description) - - - QStringList - callback - dbmanager.html - callback - (int key) const - - - int - createCallbackEntry - dbmanager.html - createCallbackEntry - (int key, const QString & service, const QString & path, const QString & interface, const QString & cancelMethod, const QString & restartMethod) - - - int - createTransferEntry - dbmanager.html - createTransferEntry - (MediaItem * mediaItem) - - - bool - updateTransferStatus - dbmanager.html - updateTransferStatus - (int key, TransferEngineData::TransferStatus status) - - - bool - updateProgress - dbmanager.html - updateProgress - (int key, qreal progress) - - - bool - removeTransfer - dbmanager.html - removeTransfer - (int key) - - - bool - clearTransfers - dbmanager.html - clearTransfers - () - - - QList<TransferDBRecord> - transfers - dbmanager.html - transfers - () const - - - TransferEngineData::TransferType - transferType - dbmanager.html - transferType - (int key) const - - - TransferEngineData::TransferStatus - transferStatus - dbmanager.html - transferStatus - (int key) const - - - bool - callbackMethods - dbmanager.html - callbackMethods - (int key, QString & cancelMethod, QString & restartMethod) const - - - MediaItem * - mediaItem - dbmanager.html - mediaItem - (int key) const - - - - TransferEngine - transferengine.html - - - TransferEngine - transferengine.html - TransferEngine - (QObject * parent) - - - - ~TransferEngine - transferengine.html - dtor.TransferEngine - () - - - int - uploadMediaItem - transferengine.html - uploadMediaItem - (const QString & source, const QString & serviceId, const QString & mimeType, bool metadataStripped, const QVariantMap & userData) - - - int - uploadMediaItemContent - transferengine.html - uploadMediaItemContent - (const QVariantMap & content, const QString & serviceId, const QVariantMap & userData) - - - int - createDownload - transferengine.html - createDownload - (const QString & displayName, const QString & applicationIcon, const QString & serviceIcon, const QString & filePath, const QString & mimeType, qlonglong expectedFileSize, const QStringList & callback, const QString & cancelMethod, const QString & restartMethod) - - - int - createSync - transferengine.html - createSync - (const QString & displayName, const QString & applicationIcon, const QString & serviceIcon, const QStringList & callback, const QString & cancelMethod, const QString & restartMethod) - - - void - startTransfer - transferengine.html - startTransfer - (int transferId) - - - void - restartTransfer - transferengine.html - restartTransfer - (int transferId) - - - void - finishTransfer - transferengine.html - finishTransfer - (int transferId, int status, const QString & reason) - - - void - updateTransferProgress - transferengine.html - updateTransferProgress - (int transferId, double progress) - - - QList<TransferDBRecord> - transfers - transferengine.html - transfers - () - - - QList<TransferMethodInfo> - transferMethods - transferengine.html - transferMethods - () - - - void - clearTransfers - transferengine.html - clearTransfers - () - - - void - cancelTransfer - transferengine.html - cancelTransfer - (int transferId) - - - void - enableNotifications - transferengine.html - enableNotifications - (bool enable) - - - bool - notificationsEnabled - transferengine.html - notificationsEnabled - () - - - void - progressChanged - transferengine.html - progressChanged - (int transferId, double progress) - - - void - statusChanged - transferengine.html - statusChanged - (int transferId, int status) - - - void - transferMethodListChanged - transferengine.html - transferMethodListChanged - () - - - void - transfersChanged - transferengine.html - transfersChanged - () - - - - TransferMethodInfo - transfermethodinfo.html - - TransferMethodInfoField - TransferMethodInfoField-enum - - - - TransferMethodInfoField-enum - - - - TransferMethodInfoField-enum - - - - TransferMethodInfoField-enum - - - - TransferMethodInfoField-enum - - - - TransferMethodInfoField-enum - - - - TransferMethodInfoField-enum - - - - - TransferMethodInfo - transfermethodinfo.html - TransferMethodInfo - () - - - TransferMethodInfo & - operator= - transfermethodinfo.html - operator= - (const TransferMethodInfo & other) - - - - TransferMethodInfo - transfermethodinfo.html - TransferMethodInfo-2 - (const TransferMethodInfo & other) - - - - ~TransferMethodInfo - transfermethodinfo.html - dtor.TransferMethodInfo - () - - - void - registerType - transfermethodinfo.html - registerType - () - - - QVariant - value - transfermethodinfo.html - value - (int index) const - - - - TransferPluginInterface - transferplugininterface.html - - virtual MediaTransferInterface * - transferObject - transferplugininterface.html - transferObject - () = 0 - - - virtual TransferPluginInfo * - infoObject - transferplugininterface.html - infoObject - () = 0 - - - virtual QString - pluginId - transferplugininterface.html - pluginId - () const = 0 - - - virtual bool - enabled - transferplugininterface.html - enabled - () const = 0 - - - - TransferDBRecord - transferdbrecord.html - - TransferDBRecordField - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - TransferDBRecordField-enum - - - - - TransferDBRecord - transferdbrecord.html - TransferDBRecord - () - - - TransferDBRecord & - operator= - transferdbrecord.html - operator= - (const TransferDBRecord & other) - - - - TransferDBRecord - transferdbrecord.html - TransferDBRecord-2 - (const TransferDBRecord & other) - - - - ~TransferDBRecord - transferdbrecord.html - dtor.TransferDBRecord - () - - - void - registerType - transferdbrecord.html - registerType - () - - - QVariant - value - transferdbrecord.html - value - (int index) const - - - diff --git a/doc/html/transferdbrecord-members.html b/doc/html/transferdbrecord-members.html deleted file mode 100644 index 64b12f1..0000000 --- a/doc/html/transferdbrecord-members.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: List of All Members for TransferDBRecord -
  • Modules
  • -
  • TransferDBRecord
  • -

    List of All Members for TransferDBRecord

    -

    This is the complete list of members for TransferDBRecord, including inherited members.

    - - -
    -
    - - diff --git a/doc/html/transferdbrecord.html b/doc/html/transferdbrecord.html deleted file mode 100644 index de12b41..0000000 --- a/doc/html/transferdbrecord.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: TransferDBRecord Class Reference -
  • Modules
  • -
  • TransferDBRecord
  • -
    -

    Contents

    - -
    -

    TransferDBRecord Class Reference

    - -

    The TransferDBRecord class is a simple wrapper class for TransferEngine DBus message. More...

    - -
     #include <TransferDBRecord>
    - -

    Public Types

    - - -
    enum TransferDBRecordField { TransferID, TransferType, Progress, URL, ..., RestartSupported }
    - -

    Public Functions

    - - - - - - -
    TransferDBRecord ()
    TransferDBRecord ( const TransferDBRecord & other )
    ~TransferDBRecord ()
    QVariant value ( int index ) const
    TransferDBRecord & operator= ( const TransferDBRecord & other )
    - -

    Static Public Members

    - - -
    void registerType ()
    - - -
    -

    Detailed Description

    -

    The TransferDBRecord class is a simple wrapper class for TransferEngine DBus message.

    -

    This class wraps transfer method related information and is used to pass that information over the DBus to the any client who is interested in about it.

    -

    A single instance of TransferDBRecord contains information of a one transfer record in TransferEngine database. Usually clients don't need to fill any data to this class, instead they can request a list of TransferDBRecords from the TransferEngine and access its data via value() method.

    -
    - -
    -

    Member Type Documentation

    - -

    enum TransferDBRecord::TransferDBRecordField

    - -
    -
    -

    Member Function Documentation

    - -

    TransferDBRecord::TransferDBRecord ()

    -

    Default constructor.

    - - -

    TransferDBRecord::TransferDBRecord ( const TransferDBRecord & other )

    -

    Copy constructor. Copies the other instance to this.

    - - -

    TransferDBRecord::~TransferDBRecord ()

    -

    Destructor.

    - - -

    void TransferDBRecord::registerType () [static]

    -

    Register TransferDBRecord and QList<TransferDBRecord> as DBus types.

    - - -

    QVariant TransferDBRecord::value ( int index ) const

    -

    Returns any of the TransferDBRecord values based on the index. As an index it's recommended to use TransferDBRecord::TransferDBRecordField enum.

    - - -

    TransferDBRecord & TransferDBRecord::operator= ( const TransferDBRecord & other )

    -

    Assign operator. other is the instance of other TransferDBRecord to copy this instance.

    - -
    - - diff --git a/doc/html/transferengine-members.html b/doc/html/transferengine-members.html deleted file mode 100644 index dec3f17..0000000 --- a/doc/html/transferengine-members.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: List of All Members for TransferEngine -
  • Modules
  • -
  • TransferEngine
  • -

    List of All Members for TransferEngine

    -

    This is the complete list of members for TransferEngine, including inherited members.

    - - -
    -
    - - diff --git a/doc/html/transferengine.html b/doc/html/transferengine.html deleted file mode 100644 index 7607cbb..0000000 --- a/doc/html/transferengine.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: TransferEngine Class Reference -
  • Modules
  • -
  • TransferEngine
  • -
    -

    Contents

    - -
    -

    TransferEngine Class Reference

    - -

    The TransferEngine class implements the functionality for different transfer types. More...

    - -
     #include <TransferEngine>
    - -

    Public Functions

    - - - -
    TransferEngine ( QObject * parent = 0 )
    ~TransferEngine ()
    - -

    Public Slots

    - - - - - - - - - - - - - - - -
    void cancelTransfer ( int transferId )
    void clearTransfers ()
    int createDownload ( const QString & displayName, const QString & applicationIcon, const QString & serviceIcon, const QString & filePath, const QString & mimeType, qlonglong expectedFileSize, const QStringList & callback, const QString & cancelMethod, const QString & restartMethod )
    int createSync ( const QString & displayName, const QString & applicationIcon, const QString & serviceIcon, const QStringList & callback, const QString & cancelMethod, const QString & restartMethod )
    void enableNotifications ( bool enable )
    void finishTransfer ( int transferId, int status, const QString & reason )
    bool notificationsEnabled ()
    void restartTransfer ( int transferId )
    void startTransfer ( int transferId )
    QList<TransferMethodInfo> transferMethods ()
    QList<TransferDBRecord> transfers ()
    void updateTransferProgress ( int transferId, double progress )
    int uploadMediaItem ( const QString & source, const QString & serviceId, const QString & mimeType, bool metadataStripped, const QVariantMap & userData )
    int uploadMediaItemContent ( const QVariantMap & content, const QString & serviceId, const QVariantMap & userData )
    - -

    Signals

    - - - - - -
    void progressChanged ( int transferId, double progress )
    void statusChanged ( int transferId, int status )
    void transferMethodListChanged ()
    void transfersChanged ()
    - - -
    -

    Detailed Description

    -

    The TransferEngine class implements the functionality for different transfer types.

    -

    TransferEngine is the central place for:

    - -

    For Downloads and Syncs, the Transfer Engine acts only a place to keep track of these operations. The actual Download and Sync is executed by a client using TransferEngine API. For sharing the TransferEngine provides an API containing a few interaces, which a share plugin must implement. TransferEngine also takes care of loading and executing the sharing, based on the API it defines.

    -

    The most essential thing to remember is that Transfer Engine provides share plugin API, DBus API e.g. for creating Transfer UI or Share UIs, it stores data to the local sqlite database using DbManager and that's it.

    -

    How to implement a share plugin see: TransferPluginInterface, MediaTransferInterface, MediaItem, TransferPluginInfo

    -

    TransferEngine provides DBus API, but instead of using it directly, it's recommended to use TransferEngineClient. If there is a need to create UI to display e.g. transfer statuses, then the DBus API is the recommend way to implement it.

    -
    - -
    -

    Member Function Documentation

    - -

    TransferEngine::TransferEngine ( QObject * parent = 0 )

    -

    Constructor with optional parent arguement.

    - - -

    TransferEngine::~TransferEngine ()

    -

    Destructor.

    - - -

    void TransferEngine::cancelTransfer ( int transferId ) [slot]

    -

    DBus adaptor calls this method to cancel an existing transfer with a transferId.

    -

    If the transfer is Upload, then this method calls MediaTransferInterface instance's cancel method. In a case of Sync or Download this method calls client's cancel callback method, if the one exists.

    -

    Calling this method causes statusChanged() signal to be emitted.

    - - -

    void TransferEngine::clearTransfers () [slot]

    -

    DBus adaptor calls this method to clear all the finished, canceled or interrupted transfers in the database.

    - - -

    int TransferEngine::createDownload ( const QString & displayName, const QString & applicationIcon, const QString & serviceIcon, const QString & filePath, const QString & mimeType, qlonglong expectedFileSize, const QStringList & callback, const QString & cancelMethod, const QString & restartMethod ) [slot]

    -

    DBus adaptor calls this method to create a download entry. Note that this is purely write-only method and doesn't involve anything else from TransferEngine side than creating a new DB record of type 'Download'.

    - -

    This method returns the transfer id of the created Download transfer. Note that this method only creates an entry to the database. To start the actual transfer, the startTransfer() method must be called.

    -

    See also startTransfer(), restartTransfer(), finishTransfer(), and updateTransferProgress().

    - - -

    int TransferEngine::createSync ( const QString & displayName, const QString & applicationIcon, const QString & serviceIcon, const QStringList & callback, const QString & cancelMethod, const QString & restartMethod ) [slot]

    -

    DBus adaptor calls this method to create a Sync entry. Note that this is purely write-only method and doesn't involve anything else from TransferEngine side than creating a new DB record of type 'Download'.

    - -

    This method returns the transfer id of the created Download transfer. Note that this method only creates an entry to the database. To start the actual transfer, the startTransfer() method must be called.

    -

    See also startTransfer(), restartTransfer(), finishTransfer(), and updateTransferProgress().

    - - -

    void TransferEngine::enableNotifications ( bool enable ) [slot]

    -

    DBus adaptor calls this method to enable or disable transfer speicific notifications based on enable argument.

    - - -

    void TransferEngine::finishTransfer ( int transferId, int status, const QString & reason ) [slot]

    -

    Finish an existing Sync or Download transfer with a transferId. Transfer can be finished with different status e.g for successfully finish status can be set to TransferEngineData::TransferFinished, for canceling TransferEngineData::Canceled and for failure with TransferEngineData::TransferInterrupted. In a case of failure, the client can also provide a reason.

    -

    This method causes statusChanged() signal to be emitted. If a sync has been successfully finished, then it will also be removed from the database automatically which causes transferChanged() signal to be emitted.

    - - -

    bool TransferEngine::notificationsEnabled () [slot]

    -

    DBus adaptor calls this method. Returns true or false depending if notifications are enabled or disabled.

    - - -

    void TransferEngine::progressChanged ( int transferId, double progress ) [signal]

    - - -

    void TransferEngine::restartTransfer ( int transferId ) [slot]

    -

    DBus adaptor calls this method to restart a canceled or failed transfer with a \transferId. In a case of Upload, this method creates MediaItem instance of the existing transfer and instantiates the required share plugin. The MediaItem instance is passed to the plugin and sharing is restarted.

    -

    For Sync and Download entries, this method calls their callbacks methods, if a callback interface has been defined by the client originally created the Sync or Download entry.

    - - -

    void TransferEngine::startTransfer ( int transferId ) [slot]

    -

    DBus adaptor calls this method to start the actual transfer. This method changes the transfer status of the existing transfer with a key to TransferEngineData::TransferStarted. This method can only be called for Sync and Download transfers.

    -

    Calling this method causes the corresponding statusChanged() signal to be emitted.

    - - -

    void TransferEngine::statusChanged ( int transferId, int status ) [signal]

    - - -

    void TransferEngine::transferMethodListChanged () [signal]

    - - -

    QList<TransferMethodInfo> TransferEngine::transferMethods () [slot]

    -

    DBus adaptor calls this method to fetch a list of transfer methods. This method returns QList<TransferMethodInfo>.

    -

    Transfer methods are basically a list of share plugins installed to the system.

    - - -

    QList<TransferDBRecord> TransferEngine::transfers () [slot]

    -

    DBus adaptor calls this method to fetch a list of transfers. This method returns QList<TransferDBRecord>.

    - - -

    void TransferEngine::transfersChanged () [signal]

    - - -

    void TransferEngine::updateTransferProgress ( int transferId, double progress ) [slot]

    -

    DBus adaptor calls this method to update transfer progress of the transfer with a transferId and with a new progress.

    - - -

    int TransferEngine::uploadMediaItem ( const QString & source, const QString & serviceId, const QString & mimeType, bool metadataStripped, const QVariantMap & userData ) [slot]

    -

    DBus adaptor calls this method to start uploading a media item. The minimum information needed to start an upload and to create an entry to the transfer database is: source the path to the media item to be downloaded. serviceId the ID of the share plugin. See TransferPluginInterface::pluginId() for more details. mimeType is the MimeType of the media item e.g. "image/jpeg". metadataStripped boolean to indicate if the metadata should be kept or removed before uploading. userData is various kind of data which share UI may provide to the engine. UserData is QVariant map i.e. the data must be provided as key-value pairs, where the keys must be QStrings.

    -

    TransferEngine handles the following user defined data automatically and stores them to the database:

    - -

    In practice this method instantiates a share plugin with serviceId and passes a MediaItem instance filled with required data to it. When the plugin has been loaded, the MediaTransferInterface::start() method is called and the actual sharing starts.

    -

    This method returns a transfer ID which can be used later to fetch information of this specific transfer.

    - - -

    int TransferEngine::uploadMediaItemContent ( const QVariantMap & content, const QString & serviceId, const QVariantMap & userData ) [slot]

    -

    DBus adaptor calls this method to start uploading media item content. Sometimes the content to be shared is not a file, but data e.g. contact information in vcard format. In order to avoid serializing data to a file, pass url to the file, reading the data, deleting the file, TransferEngine provides this convenience API.

    -

    content is the media item content to be shared. serviceId is the id of the share plugin. See TransferPluginInterface::pluginId() for more details. userData is a QVariantMap containing share plugin specific data. See TransferEngine::uploadMediaItem for more details.

    -

    This method returns a transfer ID which can be used later to fetch information of this specific transfer.

    - -
    - - diff --git a/doc/html/transferengine.qch b/doc/html/transferengine.qch deleted file mode 100644 index 39e8c8bab6af1e24bab599d83305ac645a06b83e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53248 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 XkW5d(2nOJN3QmNRkckm=0Ga;_uU(~h diff --git a/doc/html/transferengine.qhp b/doc/html/transferengine.qhp deleted file mode 100644 index f0e3d55..0000000 --- a/doc/html/transferengine.qhp +++ /dev/null @@ -1,144 +0,0 @@ - - - Transfer.Engine.100 - transferengine - - 1.0.0 - transferengine - - - 1.0.0 - transferengine - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - transferengineclient.html - transferdbrecord.html - imageoperation.html - index.html - transferengine.html - transfermethodinfo.html - transferplugininterface.html - callbackinterface.html - dbmanager.html - - - diff --git a/doc/html/transferengineclient-members.html b/doc/html/transferengineclient-members.html deleted file mode 100644 index a98e74e..0000000 --- a/doc/html/transferengineclient-members.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: List of All Members for TransferEngineClient -
  • Modules
  • -
  • TransferEngineClient
  • -

    List of All Members for TransferEngineClient

    -

    This is the complete list of members for TransferEngineClient, including inherited members.

    - - - diff --git a/doc/html/transferengineclient.html b/doc/html/transferengineclient.html deleted file mode 100644 index fa0b3f8..0000000 --- a/doc/html/transferengineclient.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: TransferEngineClient Class Reference -
  • Modules
  • -
  • TransferEngineClient
  • - -

    TransferEngineClient Class Reference

    - -

    The TransferEngineClient class is a simple client API for creating Download and Sync events to TransferEngine. More...

    - -
     #include <TransferEngineClient>
    - -

    Public Types

    - - -
    enum Status { TransferFinished, TransferCanceled, TransferInterrupted }
    - -

    Public Functions

    - - - - - - - - -
    TransferEngineClient ( QObject * parent = 0 )
    ~TransferEngineClient ()
    int createDownloadEvent ( const QString & displayName, const QUrl & applicationIcon, const QUrl & serviceIcon, const QUrl & url, const QString & mimeType, qlonglong expectedFileSize, const CallbackInterface & callback = CallbackInterface() )
    int createSyncEvent ( const QString & displayName, const QUrl & applicationIcon, const QUrl & serviceIcon, const CallbackInterface & callback = CallbackInterface() )
    void finishTransfer ( int transferId, Status status, const QString & reason = QString() )
    void startTransfer ( int transferId )
    void updateTransferProgress ( int transferId, qreal progress )
    - - -
    -

    Detailed Description

    -

    The TransferEngineClient class is a simple client API for creating Download and Sync events to TransferEngine.

    -

    TransferEngineClient is a convenience API for create and updating Download and Sync entries to the Nemo TransferEngine. For Upload entries, it is required to create share plugins by implementing required interfaces provided by this TransferEngine library.

    -

    If the client using this interface wants to enable cancel and restart functionality, it means that the client process must provide DBus API, which Nemo Transfer Engine can call in a case of canceling or restarting the operation. In order to do that client must provide CallbackInterface object with properly set dbus information. See the example below.

    -

    For share plugin implementation:

    -

    To use this API to create e.g. Sync entry see the example below:

    -
     // Create the instance of the client
    - TransferEngineClient *client = new TransferEngineClient(this);
    -
    - // Setup callback information. This is dbus interface
    - CallbackInterface callback("com.jolla.myapp", "/com/jolla/myapp", "com.jolla.myapp",
    -                            "cancel", "restart");
    -
    - // Create the sync event
    - int transferId = client->createSyncEvent("Syncing data from my service",
    -                                        QUrl("image://theme/icon-launcher-my-app"),
    -                                        QUrl("image://theme/icon-s-service-icon"),
    -                                        callback);
    -
    - // Start the actual transfer i.e. sync
    - client->startTransfer(transferId)
    -
    - // Update sync progress. Usually this is done e.g. in a slot which receives sync
    - // progress from a signal.
    - bool ok;
    - qreal progress = 0;
    - while (progress <= 1) {
    - client->updateProgress(transferId, progress);
    - progress = getProgressFoo(&ok);
    -
    - if (!ok)
    -     break;
    - }
    -
    - // End the sync
    - TransferEngineClient status;
    - QString reason;
    - if (ok) {
    -  status = TransferEngineClient::TransferFinished;
    - } else {
    -  status = TnrasferEngineClient::TransferInterrupted;
    -  reason = "Something went wrong";
    - }
    -
    - client->finishTransfer(transferId, status, reason);
    -
    -

    See also TransferPluginInterface, MediaTransferInterface, and TransferPluginInfo.

    - -
    -

    Member Type Documentation

    - -

    enum TransferEngineClient::Status

    -

    This enum type describes different values for the Status.

    - - - - -
    ConstantValueDescription
    TransferEngineClient::TransferFinishedTransferEngineData::TransferFinishedTransfer finished successfully
    TransferEngineClient::TransferCanceledTransferEngineData::TransferCanceledTransfer canceled usually due user actions
    TransferEngineClient::TransferInterruptedTransferEngineData::TransferInterruptedTransfer interrupted because of an error
    - -
    -
    -

    Member Function Documentation

    - -

    TransferEngineClient::TransferEngineClient ( QObject * parent = 0 )

    -

    Construct an instance of TransferEngineClient with optional parent argument.

    - - -

    TransferEngineClient::~TransferEngineClient ()

    -

    Destructor.

    - - -

    int TransferEngineClient::createDownloadEvent ( const QString & displayName, const QUrl & applicationIcon, const QUrl & serviceIcon, const QUrl & url, const QString & mimeType, qlonglong expectedFileSize, const CallbackInterface & callback = CallbackInterface() )

    -

    Creates a download event to the TransferEngine. This method requires the following parameters displayName, a human readable name for the entry. applicationIcon is the QUrl to the icon of the application, who's calling this method. Usually it can be in format "image://theme/icon-s-something". serviceIcon is a service specific icon such as DropBox. url is the url to the media to be downloaded. mimeType is the mimeType of the media.

    -

    Client can define callback functions for canceling and restarting download. For that client can provide optional parameter callback, which is CallbackInterface object containing information about the dbus service.

    -

    Returns transfer id of the download event.

    -

    Create a download event to the TransferEngine. This only creates and entry, and client needs still call:

    -
      -
    • TransferEngineClient::startTransfer(int transferId)
    • -
    • TransferEngineClient::updateTransferProgress(int transferId, qreal progress)
    • -
    • TransferEngineClient::finishTransfer(int transferId, Status status, const QString &reason)
    • -
    -

    See also createSyncEvent(), startTransfer(), updateTransferProgress(), and finishTransfer().

    - - -

    int TransferEngineClient::createSyncEvent ( const QString & displayName, const QUrl & applicationIcon, const QUrl & serviceIcon, const CallbackInterface & callback = CallbackInterface() )

    -

    Create a sync event to the TransferEngine. This method is very similar to

    -

    displayName, a human readable name for the entry. applicationIcon is the QUrl to the icon of the application, who's calling this method. Usually it can be in format "image://theme/icon-s-something". serviceIcon is a service specific icon such as email account.

    -

    Client can define callback functions for canceling and restarting sync. For that client can provide optional parameter callback, which is CallbackInterface object containing information about the dbus service.

    -

    Returns transfer id of the sync event.

    -

    See also createDownload(), except, createSyncEvent(), takes, less, parameters, ., createSyncEvent(), startTransfer(), updateTransferProgress(), and finishTransfer().

    - - -

    void TransferEngineClient::finishTransfer ( int transferId, Status status, const QString & reason = QString() )

    -

    Finalize the transfer with transferId. There are three options for finalizing the transfer by setting the status parameter value:

    - -

    If the client wants to provide reason for finishing the transfer, it's possible to provide reason parameter.

    - - -

    void TransferEngineClient::startTransfer ( int transferId )

    -

    Start the transfer for the existing transfer entry with transferId. This changes the status of the transfer from idle to started.These status changes are handled by Nemo TransferEngine internally, but after this method has been called, the transfer is possible to cancel, interrupt or finish.

    - - -

    void TransferEngineClient::updateTransferProgress ( int transferId, qreal progress )

    -

    Update the progress of the existing transfer with transferId. The progress must be a qreal value between 0 to 1.

    - -
    - - diff --git a/doc/html/transfermethodinfo-members.html b/doc/html/transfermethodinfo-members.html deleted file mode 100644 index 3be6006..0000000 --- a/doc/html/transfermethodinfo-members.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: List of All Members for TransferMethodInfo -
  • Modules
  • -
  • TransferMethodInfo
  • -

    List of All Members for TransferMethodInfo

    -

    This is the complete list of members for TransferMethodInfo, including inherited members.

    - - - diff --git a/doc/html/transfermethodinfo.html b/doc/html/transfermethodinfo.html deleted file mode 100644 index d4850da..0000000 --- a/doc/html/transfermethodinfo.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: TransferMethodInfo Class Reference -
  • Modules
  • -
  • TransferMethodInfo
  • - -

    TransferMethodInfo Class Reference

    - -

    The TransferMethodInfo class encapsulate information of a single transfer method. More...

    - -
     #include <TransferMethodInfo>
    - -

    Public Types

    - - -
    enum TransferMethodInfoField { DisplayName, UserName, MethodId, AccountId, ShareUIPath, Capabilities }
    - -

    Public Functions

    - - - - - - -
    TransferMethodInfo ()
    TransferMethodInfo ( const TransferMethodInfo & other )
    ~TransferMethodInfo ()
    QVariant value ( int index ) const
    TransferMethodInfo & operator= ( const TransferMethodInfo & other )
    - -

    Static Public Members

    - - -
    void registerType ()
    - - -
    -

    Detailed Description

    -

    The TransferMethodInfo class encapsulate information of a single transfer method.

    -

    Share plugin must create a list of instances of TransferMethodInfo class to encapsulate information about the plugin for example filling information for the Bluetooth sharing plugin:

    -
     QList<TransferMethodInfo> infoList;
    - TransferMethodInfo info;
    -
    - QStringList capabilities;
    - capabilities << QLatin1String("*");
    -
    - info.displayName     = QLatin1String("Bluetooth");
    - info.userName        = "";
    - info.accountId       = "";
    - info.methodId        = QLatin1String("bluetooth");
    - info.shareUIPath     = SHARE_UI_PATH + QLatin1String("/BluetoothShareUI.qml");
    - info.capabilitities  = capabilities;
    - infoList << info;
    -
    - -
    -

    Member Type Documentation

    - -

    enum TransferMethodInfo::TransferMethodInfoField

    - -
    -
    -

    Member Function Documentation

    - -

    TransferMethodInfo::TransferMethodInfo ()

    - - -

    TransferMethodInfo::TransferMethodInfo ( const TransferMethodInfo & other )

    - - -

    TransferMethodInfo::~TransferMethodInfo ()

    - - -

    void TransferMethodInfo::registerType () [static]

    - - -

    QVariant TransferMethodInfo::value ( int index ) const

    -

    Returns the value using the index. Actually the index is enum TransferMethodInfoField.

    - - -

    TransferMethodInfo & TransferMethodInfo::operator= ( const TransferMethodInfo & other )

    - -
    - - diff --git a/doc/html/transferplugininterface-members.html b/doc/html/transferplugininterface-members.html deleted file mode 100644 index 03c1ad6..0000000 --- a/doc/html/transferplugininterface-members.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: List of All Members for TransferPluginInterface -
  • Modules
  • -
  • TransferPluginInterface
  • -

    List of All Members for TransferPluginInterface

    -

    This is the complete list of members for TransferPluginInterface, including inherited members.

    - - - diff --git a/doc/html/transferplugininterface.html b/doc/html/transferplugininterface.html deleted file mode 100644 index 4804651..0000000 --- a/doc/html/transferplugininterface.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - Nemo TransferEngine 1.0: TransferPluginInterface Class Reference -
  • Modules
  • -
  • TransferPluginInterface
  • - -

    TransferPluginInterface Class Reference

    - -

    The TransferPluginInterface class defines an abstract interface for each TransferEngine share plugins to implement. More...

    - -
     #include <TransferPluginInterface>
    - -

    Public Functions

    - - - - - -
    virtual bool enabled () const = 0
    virtual TransferPluginInfo * infoObject () = 0
    virtual QString pluginId () const = 0
    virtual MediaTransferInterface * transferObject () = 0
    - - -
    -

    Detailed Description

    -

    The TransferPluginInterface class defines an abstract interface for each TransferEngine share plugins to implement.

    -

    TransferEngine supports C++ share plugins. Each share plugin must implement couple of well defined interfaces:

    -
      -
    • TransferPluginInterface Provides interfaces to access required objects to start sharing.
    • -
    • MediaTransferInterface Implements the actual sharing functionality
    • -
    • TransferPluginInfo Provides information about plugin status such as is it ready.
    • -
    -

    TransferPluginInterface provides information to the TransferEngine via this interface.

    -
    - -
    -

    Member Function Documentation

    - -

    bool TransferPluginInterface::enabled () const [pure virtual]

    -

    Return true or false depending if the plugin is enabled or not

    - - -

    TransferPluginInfo * TransferPluginInterface::infoObject () [pure virtual]

    -

    Return TransferPluginInfo object

    - - -

    QString TransferPluginInterface::pluginId () const [pure virtual]

    -

    Return a plugin id e.g. Facebook, Twitter, etc.

    - - -

    MediaTransferInterface * TransferPluginInterface::transferObject () [pure virtual]

    -

    Return MediaTransferInterface object

    - -
    - -