summaryrefslogtreecommitdiff
path: root/plugins/Themes/Oxygen/TransferModel.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Themes/Oxygen/TransferModel.h')
-rw-r--r--plugins/Themes/Oxygen/TransferModel.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/plugins/Themes/Oxygen/TransferModel.h b/plugins/Themes/Oxygen/TransferModel.h
new file mode 100644
index 0000000..e572f9e
--- /dev/null
+++ b/plugins/Themes/Oxygen/TransferModel.h
@@ -0,0 +1,96 @@
+#ifndef TRANSFERMODEL_H
+#define TRANSFERMODEL_H
+
+#include <QAbstractTableModel>
+#include <QItemSelectionModel>
+#include <QModelIndex>
+#include <QVariant>
+#include <QList>
+#include <QSet>
+#include <QIcon>
+#include <QString>
+#include <unordered_map>
+#include <unordered_set>
+#include <set>
+#include <vector>
+
+#include "StructEnumDefinition.h"
+#include "Environment.h"
+
+#include "../../../interface/FacilityInterface.h"
+
+/// \brief model to store the transfer list
+class TransferModel : public QAbstractTableModel
+{
+ Q_OBJECT
+public:
+ /// \brief the transfer item displayed
+ struct TransfertItem
+ {
+ uint64_t id;
+ std::string source;
+ std::string size;
+ std::string destination;
+ };
+ /// \brief the transfer item with progression
+ struct ItemOfCopyListWithMoreInformations
+ {
+ uint64_t currentReadProgression,currentWriteProgression;
+ Ultracopier::ItemOfCopyList generalData;
+ Ultracopier::ActionTypeCopyList actionType;
+ bool custom_with_progression;
+ };
+ /// \brief returned first transfer item
+ struct currentTransfertItem
+ {
+ uint64_t id;
+ bool haveItem;
+ std::string from;
+ std::string to;
+ std::string current_file;
+ int progressBar_read,progressBar_write;
+ };
+
+ TransferModel();
+
+ virtual int columnCount(const QModelIndex& parent = QModelIndex()) const;
+ virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
+ virtual int rowCount(const QModelIndex& parent = QModelIndex()) const;
+ virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
+ virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
+
+ std::vector<uint64_t> synchronizeItems(const std::vector<Ultracopier::ReturnActionOnCopyList>& returnActions);
+ void setFacilityEngine(FacilityInterface * facilityEngine);
+
+ int search(const std::string &text,bool searchNext);
+ int searchPrev(const std::string &text);
+
+ void setFileProgression(std::vector<Ultracopier::ProgressionItem> &progressionList);
+
+ currentTransfertItem getCurrentTransfertItem() const;
+
+ uint64_t firstId() const;
+protected:
+ std::vector<TransfertItem> transfertItemList;///< To have a transfer list for the user
+ std::set<uint64_t> startId,stopId;///< To show what is started, what is stopped
+ std::unordered_map<uint64_t,ItemOfCopyListWithMoreInformations> internalRunningOperation;///< to have progression and stat
+private:
+ int loop_size,index_for_loop;
+ int sub_loop_size,sub_index_for_loop;
+ int row,column;
+ FacilityInterface * facilityEngine;
+ std::string search_text;
+ /// \brief index from start the search, decresed by remove before it
+ int currentIndexSearch;
+ bool haveSearchItem;
+ uint64_t searchId;
+ static QIcon *start;
+ static QIcon *stop;
+signals:
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,std::string fonction,std::string text,std::string file,int ligne) const;
+ #endif
+};
+
+#endif // TRANSFERMODEL_H