Rabbit Remote Control 0.1.0-alpha
Loading...
Searching...
No Matches
ListFileModel.h
1// Copyright Copyright (c) Kang Lin studio, All Rights Reserved
2// Author Kang Lin <kl222@126.com>
3
4#pragma once
5
6#include <QAbstractTableModel>
7#include <QDateTime>
8#include <QSettings>
9
10class CFileTransfer : public QObject
11{
12 Q_OBJECT
13public:
14 enum class Direction{
15 Upload,
16 Download
17 };
18 Q_ENUM(Direction)
19
20 CFileTransfer(const QString& localFile, const QString& remoteFile, Direction dir = Direction::Download);
21
22 int GetId();
23
24 QString GetDirectionName();
25 Direction GetDirection();
26 void SetDirection(Direction d);
27
28 enum class ColumnValue {
29 LocalFiles = 0,
30 Direction,
31 RemoteFiles,
32 FileSize,
33 Speed,
34 State,
35 Time,
36 Priority,
37 Explanation,
38 End
39 };
40 Q_ENUM(ColumnValue)
41 static QString HeaderData(int section);
42 QVariant Data(int column, int role);
43
44 QString GetLocalFile();
45 void SetLocaleFile(const QString& szFile);
46 QString GetRemoteFile();
47 void SetRemoteFile(const QString& szFile);
48
49 quint64 GetFileSize();
50 void SetFileSize(quint64 size);
51 quint64 GetTransferSize();
52
53 enum class State{
54 No = 0x01,
55 Opening = 0x02,
56 Transferring = 0x04,
57 Closing = 0x08,
58 Stop = 0x10,
59 Finish = 0x20,
60 Fail = 0x40,
61 Process = Opening | Transferring | Closing,
62 CanStart = No | Stop | Fail
63 };
64 Q_ENUM(State)
65 State GetState();
66 QString GetStateName();
67
68 enum class Priority{
69 Height,
70 Normal,
71 Lower
72 };
73 Q_ENUM(Priority)
74 QString GetPriority();
75
76 QString GetExplanation();
77 QString GetFinishTime();
78
79 quint32 GetLocalPermission() const;
80 void SetLocalPermission(quint32 newLocalPermission);
81 quint32 GetRemotePermission() const;
82 void SetRemotePermission(quint32 newRemotePermission);
83
84 void SetFinishTime(QString szTime);
85
86Q_SIGNALS:
87 void sigStart(CFileTransfer* pFile);
88public Q_SLOTS:
89 void slotSetstate(State s);
90 void slotTransferSize(quint64 nAddSize);
91 void slotSetPrority(Priority p);
92 void slotSetExplanation(const QString& explanation);
93 void slotFinish();
94
95private:
96 float_t GetSpeed();
97
98private:
99 int m_nId;
100 QString m_szLocalFile;
101 quint32 m_LocalPermission;
102 QString m_szRemoteFile;
103 quint32 m_RemotePermission;
104 quint64 m_nFileSize;
105 quint64 m_nTransferSize;
106 Direction m_Direction;
107 State m_State;
108 Priority m_Priority;
109 QString m_szExplanation;
110 QDateTime m_FinishTime;
111
112 quint64 m_nLastSize;
113 QDateTime m_tmLast;
114 float_t m_fSpeed;
115};
116
117class CListFileModel : public QAbstractTableModel
118{
119 Q_OBJECT
120
121public:
122 explicit CListFileModel(QObject *parent = nullptr);
123
124 virtual int Load(QSettings &set);
125 virtual int Save(QSettings &set);
126
127 QModelIndex AddFileTransfer(QSharedPointer<CFileTransfer> f);
128 int RemoveFileTransfer(int id);
129 int RemoveFileTransfer(QList<int> ids);
130 QSharedPointer<CFileTransfer> GetFileTransfer(const QModelIndex& index);
131 void UpdateFileTransfer(QSharedPointer<CFileTransfer> f);
132
133 QVariant headerData(int section,
134 Qt::Orientation orientation,
135 int role = Qt::DisplayRole) const override;
136
137 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
138 int columnCount(const QModelIndex &parent = QModelIndex()) const override;
139
140 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
141 virtual bool removeRows(int row, int count, const QModelIndex &parent) override;
142
143private:
144 QList<QSharedPointer<CFileTransfer> > m_lstFile;
145};