OSDN Git Service

Ver0.09pre
[gefu/Gefu.git] / deleteworker.cpp
1 #include "deleteworker.h"\r
2 #include <QFileInfo>\r
3 #include <QDir>\r
4 #include <QDebug>\r
5 \r
6 DeleteWorker::DeleteWorker(QObject *parent) :\r
7     IWorker(parent),\r
8     m_DeleteList(NULL),\r
9     m_Targets()\r
10 {\r
11 }\r
12 \r
13 void DeleteWorker::operate()\r
14 {\r
15     m_progressText->setText(tr("削除準備中..."));\r
16 \r
17     foreach (const QFileInfo &info, *m_DeleteList) {\r
18         if (isStopRequested()) {\r
19             emit canceled();\r
20             return;\r
21         }\r
22         Listup(info.absoluteFilePath());\r
23     }\r
24 \r
25     bool ret;\r
26     int successCount = 0;\r
27     int errorCount = 0;\r
28     QString msg;\r
29     foreach (const QString &path, m_Targets) {\r
30         if (isStopRequested()) {\r
31             emit canceled();\r
32             return;\r
33         }\r
34 \r
35         emit operation(tr("削除:") + path);\r
36 \r
37         QFileInfo info(path);\r
38         if (info.isDir()) {\r
39             QDir dir(path);\r
40             ret = dir.rmdir(path);\r
41         }\r
42         else {\r
43             ret = QFile::remove(path);\r
44         }\r
45 \r
46         if (ret) {\r
47             successCount++;\r
48             emit success(tr("成功"));\r
49         }\r
50         else {\r
51             errorCount++;\r
52             emit error(tr("失敗"));\r
53         }\r
54 \r
55         msg = tr("%1アイテム成功。").arg(successCount);\r
56         if (errorCount > 0) {\r
57             msg += tr("%1アイテム失敗。").arg(errorCount);\r
58         }\r
59         m_progressText->setText(msg);\r
60     }\r
61 \r
62     emit finished();\r
63 }\r
64 \r
65 void DeleteWorker::Listup(const QString &path)\r
66 {\r
67 //    qDebug() << tr("Listup: ") << path;\r
68 \r
69     if (isStopRequested()) {\r
70         return;\r
71     }\r
72 \r
73     QFileInfo info(path);\r
74 \r
75     if (info.isDir()) {\r
76         QDir dir(path);\r
77         foreach (QFileInfo info2, dir.entryInfoList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden | QDir::AllDirs | QDir::Files, QDir::DirsFirst)) {\r
78 //            qDebug() << info2.fileName();\r
79             Listup(info2.absoluteFilePath());\r
80         }\r
81     }\r
82 //    qDebug() << "Targeting: " << path;\r
83     m_Targets << path;\r
84 }\r