diff options
-rw-r--r-- | src/widgets/dialogs/qfilesystemmodel.cpp | 26 | ||||
-rw-r--r-- | tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp | 6 |
2 files changed, 4 insertions, 28 deletions
diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp index 81fa40f0e7..9c6d972baa 100644 --- a/src/widgets/dialogs/qfilesystemmodel.cpp +++ b/src/widgets/dialogs/qfilesystemmodel.cpp @@ -199,32 +199,10 @@ QT_BEGIN_NAMESPACE bool QFileSystemModel::remove(const QModelIndex &aindex) { - //### TODO optim - QString path = filePath(aindex); + const QString path = filePath(aindex); QFileSystemModelPrivate * d = const_cast<QFileSystemModelPrivate*>(d_func()); d->fileInfoGatherer.removePath(path); - QDirIterator it(path, - QDir::AllDirs | QDir:: Files | QDir::NoDotAndDotDot, - QDirIterator::Subdirectories); - QStringList children; - while (it.hasNext()) - children.prepend(it.next()); - children.append(path); - - bool error = false; - for (int i = 0; i < children.count(); ++i) { - QFileInfo info(children.at(i)); - QModelIndex modelIndex = index(children.at(i)); - if (info.isDir()) { - QDir dir; - if (children.at(i) != path) - error |= remove(modelIndex); - error |= rmdir(modelIndex); - } else { - error |= QFile::remove(filePath(modelIndex)); - } - } - return error; + return QDir(path).removeRecursively(); } /*! diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp index 0fe7c8ab75..0b9fb5c168 100644 --- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp +++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp @@ -921,10 +921,8 @@ void tst_QFileSystemModel::mkdir() int oldRow = idx.row(); QTest::qWait(WAITTIME); idx = model->index(newFolderPath); - QDir cleanup(tmp); - QVERIFY(cleanup.rmdir(QLatin1String("NewFoldermkdirtest3"))); - QVERIFY(cleanup.rmdir(QLatin1String("NewFoldermkdirtest5"))); - bestatic.rmdir(newFolderPath); + QVERIFY(model->remove(idx)); + QVERIFY(!bestatic.exists()); QVERIFY(0 != idx.row()); QCOMPARE(oldRow, idx.row()); } |