[niepce: 11/12] importer: move the import mechanics into the importer.
- From: Hubert Figuière <hub src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [niepce: 11/12] importer: move the import mechanics into the importer.
- Date: Thu, 22 Oct 2015 15:27:53 +0000 (UTC)
commit 100898b320ad933ef9b26c3648865bdda186ac09
Author: Hubert Figuière <hub figuiere net>
Date: Wed Oct 21 11:05:44 2015 -0400
importer: move the import mechanics into the importer.
src/engine/importer/directoryimporter.cpp | 12 +++++++++++-
src/engine/importer/directoryimporter.hpp | 3 ++-
src/engine/importer/iimporter.hpp | 8 ++++++++
src/niepce/ui/dialogs/importdialog.hpp | 3 ++-
src/niepce/ui/niepcewindow.cpp | 13 ++++++++++---
5 files changed, 33 insertions(+), 6 deletions(-)
---
diff --git a/src/engine/importer/directoryimporter.cpp b/src/engine/importer/directoryimporter.cpp
index 3e0189e..dfeb25b 100644
--- a/src/engine/importer/directoryimporter.cpp
+++ b/src/engine/importer/directoryimporter.cpp
@@ -19,7 +19,7 @@
#include <glibmm/i18n.h>
-#include "fwk/utils/files.hpp"
+#include "fwk/base/debug.hpp"
#include "fwk/utils/pathutils.hpp"
#include "engine/importer/directoryimporter.hpp"
#include "engine/importer/importedfile.hpp"
@@ -82,4 +82,14 @@ std::list<ImportedFile::Ptr> DirectoryImporter::getSourceContent()
return content;
}
+bool DirectoryImporter::doImport(const std::string & source,
+ const file_importer & importer)
+{
+ // pretty trivial, we have the source path.
+ importer(source, false);
+
+ // XXX return a real error
+ return true;
+}
+
}
diff --git a/src/engine/importer/directoryimporter.hpp b/src/engine/importer/directoryimporter.hpp
index 6be63fd..0a31226 100644
--- a/src/engine/importer/directoryimporter.hpp
+++ b/src/engine/importer/directoryimporter.hpp
@@ -38,7 +38,8 @@ public:
bool listSourceContent(const std::string & source) override;
std::list<ImportedFile::Ptr> getSourceContent() override;
-
+ bool doImport(const std::string & source,
+ const file_importer & importer) override;
private:
std::mutex m_content_lock;
std::list<ImportedFile::Ptr> m_content;
diff --git a/src/engine/importer/iimporter.hpp b/src/engine/importer/iimporter.hpp
index 29d2f28..f75bd12 100644
--- a/src/engine/importer/iimporter.hpp
+++ b/src/engine/importer/iimporter.hpp
@@ -31,6 +31,9 @@ class IImporter {
public:
virtual ~IImporter() {}
+ /** file importer callback */
+ typedef std::function<void (const std::string&, bool)> file_importer;
+
/** User visible importer name. */
virtual std::string name() const = 0;
@@ -39,6 +42,11 @@ public:
/** get the source content. */
virtual std::list<ImportedFile::Ptr> getSourceContent() = 0;
+
+ /** perform import from source */
+ virtual bool doImport(const std::string & source,
+ const file_importer & importer) = 0;
+
};
}
diff --git a/src/niepce/ui/dialogs/importdialog.hpp b/src/niepce/ui/dialogs/importdialog.hpp
index 86c2f3e..6841938 100644
--- a/src/niepce/ui/dialogs/importdialog.hpp
+++ b/src/niepce/ui/dialogs/importdialog.hpp
@@ -77,7 +77,8 @@ public:
const Glib::ustring & sourcePath() const
{ return m_folder_path_source; }
void setToImport(const Glib::ustring & f);
-
+ eng::IImporter* importer() const
+ { return m_importer; }
private:
class ImportParam;
diff --git a/src/niepce/ui/niepcewindow.cpp b/src/niepce/ui/niepcewindow.cpp
index 9bd39fc..0a5eb3c 100644
--- a/src/niepce/ui/niepcewindow.cpp
+++ b/src/niepce/ui/niepcewindow.cpp
@@ -39,6 +39,7 @@
#include "fwk/toolkit/configdatabinder.hpp"
#include "fwk/toolkit/undo.hpp"
#include "engine/db/library.hpp"
+#include "engine/importer/iimporter.hpp"
#include "libraryclient/uidataprovider.hpp"
#include "thumbstripview.hpp"
@@ -260,9 +261,15 @@ void NiepceWindow::on_action_file_import()
if(!source.empty()) {
cfg.setValue("last_import_location", source);
- // XXX actually use the import module associated.
- //DBG_OUT("%s", source.c_str());
- m_libClient->importFromDirectory(source, false);
+ eng::IImporter* importer = import_dialog->importer();
+ DBG_ASSERT(importer, "Import can't be null if we clicked import");
+ if (importer) {
+ importer->doImport(
+ source,
+ [this] (const std::string & path, bool manage) {
+ m_libClient->importFromDirectory(path, manage);
+ });
+ }
}
break;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]