File fix-KDE4-data-migration.patch of Package amarok5
diff --git a/src/main.cpp b/src/main.cpp
index c8ce816d60..17db43b1ec 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -30,6 +30,8 @@
#include <KLocalizedString>
#include <QCommandLineParser>
+#include <QDirIterator>
+#include <QFileInfo>
#include <QStandardPaths>
#include <QtGlobal>
@@ -65,8 +67,6 @@ int main( int argc, char *argv[] )
<< QStringLiteral("amarok_homerc")
<< QStringLiteral("amarok-appletsrc")
);
- configMigrator.migrate();
-
if (configMigrator.migrate()) {
Kdelibs4Migration dataMigrator;
const QString sourceBasePath = dataMigrator.saveLocation("data", QStringLiteral("amarok"));
@@ -79,13 +79,17 @@ int main( int argc, char *argv[] )
if (sourceDir.exists()) {
if (!targetDir.exists()) {
QDir().mkpath(targetBasePath);
- }
- QStringList fileNames = sourceDir.entryList(
- QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks);
- for(const QString &fileName : fileNames) {
- targetFilePath = targetBasePath + fileName;
- if (!QFile::exists(targetFilePath)) {
- QFile::copy(sourceBasePath + fileName, targetFilePath);
+ sourceDir.setFilter(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks);
+ QDirIterator it(sourceDir, QDirIterator::Subdirectories);
+ while (it.hasNext()) {
+ QString sourceFilePath = it.next();
+ QFileInfo entry = it.fileInfo();
+ targetFilePath = sourceDir.relativeFilePath(sourceFilePath);
+ if(entry.isDir()) {
+ targetDir.mkdir(targetFilePath);
+ } else {
+ QFile::copy(sourceFilePath, targetBasePath + targetFilePath);
+ }
}
}
}