OSDN Git Service

Ver0.21
[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     AbstractWorker(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     if (isStopRequested()) {\r
68         return;\r
69     }\r
70 \r
71     if (QFileInfo(path).isDir()) {\r
72         QDir dir(path);\r
73         QFileInfoList list = dir.entryInfoList(QDir::NoDotAndDotDot |\r
74                                                QDir::System |\r
75                                                QDir::Hidden |\r
76                                                QDir::AllDirs |\r
77                                                QDir::Files,\r
78                                                QDir::DirsFirst);\r
79         foreach (const QFileInfo &info, list) {\r
80             Listup(info.absoluteFilePath());\r
81         }\r
82     }\r
83 \r
84     m_Targets << path;\r
85 }\r