1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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
|