OSDN Git Service

環境設定ダイアログのタブオーダーを修正
[gefu/Gefu.git] / deleteworker.cpp
1 #include "deleteworker.h"\r
2 \r
3 #include <QFileInfo>\r
4 #include <QDir>\r
5 #include <QDebug>\r
6 #include <QThread>\r
7 \r
8 const int SLEEP_TIME = 1;\r
9 \r
10 DeleteWorker::DeleteWorker() :\r
11     OperationWorker(),\r
12     m_DeleteList(),\r
13     m_Targets()\r
14 {\r
15 }\r
16 \r
17 void DeleteWorker::Listup(const QString &path)\r
18 {\r
19     if (isAborted()) {\r
20         return;\r
21     }\r
22     this->thread()->msleep(SLEEP_TIME);\r
23 \r
24     if (QFileInfo(path).isDir()) {\r
25         QDir dir(path);\r
26         QFileInfoList list = dir.entryInfoList(QDir::NoDotAndDotDot |\r
27                                                QDir::System |\r
28                                                QDir::Hidden |\r
29                                                QDir::AllDirs |\r
30                                                QDir::Files,\r
31                                                QDir::DirsFirst);\r
32         foreach (const QFileInfo &info, list) {\r
33             Listup(info.absoluteFilePath());\r
34         }\r
35     }\r
36 \r
37     m_Targets << path;\r
38 }\r
39 \r
40 \r
41 void DeleteWorker::run()\r
42 {\r
43     foreach (const QFileInfo &info, m_DeleteList) {\r
44         if (isAborted()) {\r
45             emit finished(true);\r
46             return;\r
47         }\r
48         Listup(info.absoluteFilePath());\r
49     }\r
50 \r
51     bool ret;\r
52     int successCount = 0;\r
53     int errorCount = 0;\r
54     QString msg;\r
55     foreach (const QString &path, m_Targets) {\r
56         this->thread()->msleep(SLEEP_TIME);\r
57         if (isAborted()) {\r
58             emit finished(true);\r
59             return;\r
60         }\r
61 \r
62         emit progress(tr("削除:%1").arg(path));\r
63 \r
64         QFileInfo info(path);\r
65         if (info.isDir()) {\r
66             QDir dir(path);\r
67             ret = dir.rmdir(path);\r
68         }\r
69         else {\r
70             ret = QFile::remove(path);\r
71         }\r
72 \r
73         if (ret) {\r
74             successCount++;\r
75             emit success(tr("成功"));\r
76         }\r
77         else {\r
78             errorCount++;\r
79             emit error(tr("失敗"));\r
80         }\r
81 \r
82         msg = tr("%1アイテム成功。").arg(successCount);\r
83         if (errorCount > 0) {\r
84             msg += tr("%1アイテム失敗。").arg(errorCount);\r
85         }\r
86         emit information(msg);\r
87     }\r
88 \r
89     emit finished();\r
90 }\r
91 \r
92 QString DeleteWorker::initialText() const\r
93 {\r
94     return tr("削除準備中...");\r
95 }\r