diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/organizercore.cpp | 10 | ||||
| -rw-r--r-- | src/plugincontainer.cpp | 8 | ||||
| -rw-r--r-- | src/plugincontainer.h | 4 | ||||
| -rw-r--r-- | src/usvfsconnector.h | 10 |
4 files changed, 20 insertions, 12 deletions
diff --git a/src/organizercore.cpp b/src/organizercore.cpp index a5dc393d..83d468ef 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -1563,10 +1563,18 @@ void OrganizerCore::prepareStart() { std::vector<Mapping> OrganizerCore::fileMapping()
{
IPluginGame *game = qApp->property("managed_game").value<IPluginGame *>();
- return fileMapping(
+ MappingType result = fileMapping(
QDir::toNativeSeparators(game->dataDirectory().absolutePath()),
"\\",
directoryStructure(), directoryStructure());
+
+ for (MOBase::IPluginFileMapper *mapper : m_PluginContainer->plugins<MOBase::IPluginFileMapper>()) {
+ MappingType pluginMap = mapper->mappings();
+ result.reserve(result.size() + pluginMap.size());
+ result.insert(result.end(), pluginMap.begin(), pluginMap.end());
+ }
+
+ return result;
}
std::vector<Mapping> OrganizerCore::fileMapping(
diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp index 7a059cd1..a594f703 100644 --- a/src/plugincontainer.cpp +++ b/src/plugincontainer.cpp @@ -87,7 +87,7 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName) m_Organizer->settings().registerPlugin(pluginObj);
}
- { // diagnosis plugins
+ { // diagnosis plugin
IPluginDiagnose *diagnose = qobject_cast<IPluginDiagnose*>(plugin);
if (diagnose != nullptr) {
bf::at_key<IPluginDiagnose>(m_Plugins).push_back(diagnose);
@@ -96,6 +96,12 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName) );
}
}
+ { // file mapper plugin
+ IPluginFileMapper *mapper = qobject_cast<IPluginFileMapper*>(plugin);
+ if (mapper != nullptr) {
+ bf::at_key<IPluginFileMapper>(m_Plugins).push_back(mapper);
+ }
+ }
{ // mod page plugin
IPluginModPage *modPage = qobject_cast<IPluginModPage*>(plugin);
if (verifyPlugin(modPage)) {
diff --git a/src/plugincontainer.h b/src/plugincontainer.h index 02978e3e..70392d0b 100644 --- a/src/plugincontainer.h +++ b/src/plugincontainer.h @@ -10,6 +10,7 @@ #include <iplugintool.h>
#include <ipluginproxy.h>
#include <iplugininstaller.h>
+#include <ipluginfilemapper.h>
#include <QtPlugin>
#include <QPluginLoader>
#include <QFile>
@@ -36,7 +37,8 @@ private: boost::fusion::pair<MOBase::IPluginModPage, std::vector<MOBase::IPluginModPage*>>,
boost::fusion::pair<MOBase::IPluginPreview, std::vector<MOBase::IPluginPreview*>>,
boost::fusion::pair<MOBase::IPluginTool, std::vector<MOBase::IPluginTool*>>,
- boost::fusion::pair<MOBase::IPluginProxy, std::vector<MOBase::IPluginProxy*>>
+ boost::fusion::pair<MOBase::IPluginProxy, std::vector<MOBase::IPluginProxy*>>,
+ boost::fusion::pair<MOBase::IPluginFileMapper, std::vector<MOBase::IPluginFileMapper*>>
> PluginMap;
static const unsigned int PROBLEM_PLUGINSNOTLOADED = 1;
diff --git a/src/usvfsconnector.h b/src/usvfsconnector.h index beec5acc..78bb7a49 100644 --- a/src/usvfsconnector.h +++ b/src/usvfsconnector.h @@ -23,21 +23,13 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <usvfs.h> +#include <filemapping.h> #include <QString> #include <QThread> #include <QFile> #include <QDebug> -struct Mapping { - QString source; - QString destination; - bool isDirectory; -}; - -typedef std::vector<Mapping> MappingType; - - class LogWorker : public QThread { Q_OBJECT |
