-
Notifications
You must be signed in to change notification settings - Fork 89
Expand file tree
/
Copy pathfiletask.cpp
More file actions
92 lines (76 loc) · 1.57 KB
/
filetask.cpp
File metadata and controls
92 lines (76 loc) · 1.57 KB
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
#include "filetask.h"
FileTask::FileTask()
{
}
FileTask::FileTask(shared_ptr<FileContent> fileContent, FileTaskType type)
:mContent(fileContent), mType(type)
{
mNotifySize = fileContent->size/100;//每1%通知一次
const int minNotifySize = 102400;//至少变化了100k才通知
if (mNotifySize < minNotifySize)
mNotifySize = minNotifySize;
}
void FileTask::setObserver(IFileTaskObserver *observer)
{
mObserver = observer;
}
void FileTask::setProcess(int val)
{
mProcess = val;
if (mProcess - mLastProcess >= mNotifySize
|| mProcess >= mContent->size)
{
mLastProcess = mProcess;
mObserver->onProgress(this);
}
}
void FileTask::setState(FileTaskState val, const string &msg)
{
mState = val;
mMsg = msg;
mObserver->onStateChanged(this);
}
void FileTask::setFellow(shared_ptr<Fellow> fellow)
{
mFellow = fellow;
}
void FileTask::cancel()
{
mCancelPending=true;
}
bool FileTask::hasCancelPending()
{
return mCancelPending;
}
shared_ptr<Fellow> FileTask::fellow() const
{
return mFellow;
}
int FileTask::getProcess() const
{
return mProcess;
}
FileTaskState FileTask::getState() const
{
return mState;
}
string FileTask::getDetailInfo() const
{
return mMsg;
}
shared_ptr<FileContent> FileTask::getContent() const
{
return mContent;
}
FileTaskType FileTask::type() const
{
return mType;
}
string FileTask::getTaskTypeDes() const
{
if (mType == FileTaskType::Upload)
return "发送";
else if (mType == FileTaskType::Download)
return "接收";
return "";
}