玉兔远程控制
0.1.0-bate11
Toggle main menu visibility
载入中...
搜索中...
未找到
Plugins
FileTransfer
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
10
class
CFileTransfer :
public
QObject
11
{
12
Q_OBJECT
13
public
:
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
86
Q_SIGNALS:
87
void
sigStart(CFileTransfer* pFile);
88
public
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
95
private
:
96
float_t GetSpeed();
97
98
private
:
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
117
class
CListFileModel :
public
QAbstractTableModel
118
{
119
Q_OBJECT
120
121
public
:
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
143
private
:
144
QList<QSharedPointer<CFileTransfer> > m_lstFile;
145
};
作者:康林 (kl222@126.com)
版权所有(c) 康林工作室 保留所有权力