summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTannin <devnull@localhost>2015-08-09 13:04:01 +0200
committerTannin <devnull@localhost>2015-08-09 13:04:01 +0200
commite6abe486a73928b8ec5bf01acd475d23aec722e0 (patch)
tree39c4cd9bc781864920eb19ce75088dedf5af81b5
parent52fcfaa2926fc9b87ca46a83da3a14a522ce4233 (diff)
added some (currently unused) functionality to dump the list of file mappings
from real to virtual location
-rw-r--r--src/mainwindow.cpp44
-rw-r--r--src/organizercore.cpp40
-rw-r--r--src/organizercore.h6
3 files changed, 63 insertions, 27 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index a209f00b..5ecebb1e 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -3451,36 +3451,26 @@ void MainWindow::languageChange(const QString &newLanguage)
void MainWindow::writeDataToFile(QFile &file, const QString &directory, const DirectoryEntry &directoryEntry)
{
- { // list files
-// std::set<FileEntry>::const_iterator current, end;
-// directoryEntry.getFiles(current, end);
-// for (; current != end; ++current) {
-
- std::vector<FileEntry::Ptr> files = directoryEntry.getFiles();
- for (auto iter = files.begin(); iter != files.end(); ++iter) {
- FileEntry::Ptr current = *iter;
- bool isArchive = false;
- int origin = current->getOrigin(isArchive);
- if (isArchive) {
- // TODO: don't list files from archives. maybe make this an option?
- continue;
- }
- QString fullName = directory;
- fullName.append("\\").append(ToQString(current->getName()));
- file.write(fullName.toUtf8());
-
- file.write("\t(");
- file.write(ToQString(m_OrganizerCore.directoryStructure()->getOriginByID(origin).getName()).toUtf8());
- file.write(")\r\n");
+ for (FileEntry::Ptr current : directoryEntry.getFiles()) {
+ bool isArchive = false;
+ int origin = current->getOrigin(isArchive);
+ if (isArchive) {
+ // TODO: don't list files from archives. maybe make this an option?
+ continue;
}
+ QString fullName = directory + "\\" + ToQString(current->getName());
+ file.write(fullName.toUtf8());
+
+ file.write("\t(");
+ file.write(ToQString(m_OrganizerCore.directoryStructure()->getOriginByID(origin).getName()).toUtf8());
+ file.write(")\r\n");
}
- { // recurse into subdirectories
- std::vector<DirectoryEntry*>::const_iterator current, end;
- directoryEntry.getSubDirectories(current, end);
- for (; current != end; ++current) {
- writeDataToFile(file, directory.mid(0).append("\\").append(ToQString((*current)->getName())), **current);
- }
+ // recurse into subdirectories
+ std::vector<DirectoryEntry*>::const_iterator current, end;
+ directoryEntry.getSubDirectories(current, end);
+ for (; current != end; ++current) {
+ writeDataToFile(file, directory + "\\" + ToQString((*current)->getName()), **current);
}
}
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index 50c95f0c..46065937 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -1570,3 +1570,43 @@ void OrganizerCore::prepareStart() {
storeSettings();
}
+std::vector<std::pair<QString, QString>> OrganizerCore::fileMapping()
+{
+ IPluginGame *game = qApp->property("managed_game").value<IPluginGame*>();
+ return fileMapping(game->dataDirectory().absolutePath(),
+ directoryStructure(),
+ directoryStructure());
+}
+
+
+std::vector<std::pair<QString, QString>> OrganizerCore::fileMapping(
+ const QString &dataPath,
+ const DirectoryEntry *base,
+ const DirectoryEntry *directoryEntry)
+{
+ std::vector<std::pair<QString, QString>> result;
+
+ for (FileEntry::Ptr current : directoryEntry->getFiles()) {
+ bool isArchive = false;
+ int origin = current->getOrigin(isArchive);
+ if (isArchive || (origin == 0)) {
+ continue;
+ }
+
+ QString fileName = ToQString(current->getRelativePath());
+ QString source = ToQString(base->getOriginByID(origin).getPath()) + fileName;
+ QString target = QDir::toNativeSeparators(dataPath) + fileName;
+ result.push_back(std::make_pair(source, target));
+ }
+
+ // recurse into subdirectories
+ std::vector<DirectoryEntry*>::const_iterator current, end;
+ directoryEntry->getSubDirectories(current, end);
+ for (; current != end; ++current) {
+ std::vector<std::pair<QString, QString>> subRes = fileMapping(dataPath, base, *current);
+ result.insert(result.end(), subRes.begin(), subRes.end());
+ }
+ return result;
+}
+
+
diff --git a/src/organizercore.h b/src/organizercore.h
index 014a4ab8..85f0e0c4 100644
--- a/src/organizercore.h
+++ b/src/organizercore.h
@@ -157,6 +157,8 @@ public:
bool onFinishedRun(const std::function<void (const QString &, unsigned int)> &func);
void refreshModList(bool saveChanges = true);
+ std::vector<std::pair<QString, QString> > fileMapping();
+
public: // IPluginDiagnose interface
virtual std::vector<unsigned int> activeProblems() const;
@@ -208,6 +210,10 @@ private:
bool testForSteam();
+ std::vector<std::pair<QString, QString>> fileMapping(const QString &dataPath,
+ const MOShared::DirectoryEntry *base,
+ const MOShared::DirectoryEntry *directoryEntry);
+
private slots:
void directory_refreshed();