diff options
author | Thomas Preud'homme <robotux@celest.fr> | 2013-01-04 14:50:19 +0100 |
---|---|---|
committer | Thomas Preud'homme <robotux@celest.fr> | 2013-01-04 14:50:19 +0100 |
commit | 8f9f382e1c97cab2e72e97495650c73ac4b97314 (patch) | |
tree | 78510a0d81368c09b56f444fb19bb132c8bc3009 /CopyEngineManager.h |
Imported Upstream version 0.3.0.5
Diffstat (limited to 'CopyEngineManager.h')
-rw-r--r-- | CopyEngineManager.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/CopyEngineManager.h b/CopyEngineManager.h new file mode 100644 index 0000000..afec5e5 --- /dev/null +++ b/CopyEngineManager.h @@ -0,0 +1,102 @@ +/** \file CopyEngineManager.h +\brief Define the copy engine manager +\author alpha_one_x86 +\version 0.3 +\date 2010 +\licence GPL3, see the file COPYING */ + +#ifndef COPYENGINEMANAGER_H +#define COPYENGINEMANAGER_H + +#include <QObject> +#include <QPluginLoader> +#include <QList> +#include <QWidget> +#include <QString> + +#include "Environment.h" +#include "GlobalClass.h" +#include "LocalPluginOptions.h" +#include "OptionDialog.h" +#include "interface/PluginInterface_CopyEngine.h" +#include "FacilityEngine.h" + +namespace Ui { + class CopyEngineOptions; +} + +/** \brief Manage copy engine plugins and their instance */ +class CopyEngineManager : public QObject, public GlobalClass +{ + Q_OBJECT +public: + /** \brief internal structure to return one copy engine instance */ + struct returnCopyEngine + { + PluginInterface_CopyEngine * engine; ///< The copy engine instance + bool canDoOnlyCopy; ///< true if can do only the copy (not move) + CopyType type; ///< Kind of copy what it can do + TransferListOperation transferListOperation; + }; + explicit CopyEngineManager(OptionDialog *optionDialog); + /** \brief return copy engine instance when know the sources and destinations + \param mode the mode (copy/move) + \param protocolsUsedForTheSources list of sources used + \param protocolsUsedForTheDestination list of destination used + \see getCopyEngine() + */ + returnCopyEngine getCopyEngine(const CopyMode &mode,const QStringList &protocolsUsedForTheSources,const QString &protocolsUsedForTheDestination); + /** \brief return copy engine instance with specific engine + \param mode the mode (copy/move) + \param name name of the engine needed + \see getCopyEngine() + */ + returnCopyEngine getCopyEngine(const CopyMode &mode,const QString &name); + //bool currentEngineCanDoOnlyCopy(QStringList protocolsUsedForTheSources,QString protocolsUsedForTheDestination=""); + //CopyType currentEngineGetCopyType(QStringList protocolsUsedForTheSources,QString protocolsUsedForTheDestination=""); + /** \brief to send all signal because all object is connected on it */ + void setIsConnected(); + /** \brief check if the protocols given is supported by the copy engine + \see Core::newCopy() + \see Core::newMove() + */ + bool protocolsSupportedByTheCopyEngine(PluginInterface_CopyEngine * engine,const QStringList &protocolsUsedForTheSources,const QString &protocolsUsedForTheDestination); +private slots: + void onePluginAdded(const PluginsAvailable &plugin); + void onePluginWillBeRemoved(const PluginsAvailable &plugin); + void onePluginWillBeUnloaded(const PluginsAvailable &plugin); + #ifdef ULTRACOPIER_DEBUG + void debugInformation(DebugLevel level,const QString& fonction,const QString& text,const QString& file,const int& ligne); + #endif // ULTRACOPIER_DEBUG + /// \brief To notify when new value into a group have changed + void newOptionValue(const QString &groupName,const QString &variableName,const QVariant &value); + void allPluginIsloaded(); +private: + /// \brief the option interface + struct CopyEnginePlugin + { + QString path; + QString name; + QString pluginPath; + QStringList supportedProtocolsForTheSource; + QStringList supportedProtocolsForTheDestination; + QPluginLoader * pointer; + PluginInterface_CopyEngineFactory * factory; + QList<PluginInterface_CopyEngine *> intances; + bool canDoOnlyCopy; + CopyType type; + TransferListOperation transferListOperation; + LocalPluginOptions *options; + QWidget *optionsWidget; + }; + QList<CopyEnginePlugin> pluginList; + OptionDialog *optionDialog; + bool isConnected; + FacilityEngine facilityEngine; +signals: + //void newCopyEngineOptions(QString,QString,QWidget *); + void addCopyEngine(QString name,bool canDoOnlyCopy); + void removeCopyEngine(QString name); +}; + +#endif // COPYENGINEMANAGER_H |