OSDN Git Service

cdd13930ebfbc92478640e8ff07cded2a5ce263a
[gefu/Gefu.git] / filereadworker.cpp
1 #include "filereadworker.h"
2
3 #include <QDebug>
4 #include <QThread>
5
6 FileReadWorker::FileReadWorker() :
7     AbstractWorker(),
8     m_file()
9 {
10 }
11
12 FileReadWorker::~FileReadWorker()
13 {
14     qDebug() << "FileReadWorker::~FileReadWorker()---------------------------";
15 }
16
17 bool FileReadWorker::open(const QString &path)
18 {
19     m_file.setFileName(path);
20     return m_file.open(QIODevice::ReadOnly);
21 }
22
23 void FileReadWorker::run()
24 {
25     if (!m_file.isOpen()) {
26         emit finished();
27         return;
28     }
29
30     emit size(m_file.size());
31
32     QByteArray data;
33     while (!m_file.atEnd()) {
34         this->thread()->msleep(1);
35         if (isAborted()) {
36             emit finished(true);
37             m_file.close();
38             return;
39         }
40
41         data.append(m_file.read(2048));
42         emit progress(data.size());
43     }
44
45     emit resultReady(data);
46     emit finished();
47 }