summaryrefslogtreecommitdiffhomepage
path: root/opentrack-logic/work.cpp
diff options
context:
space:
mode:
authorDaMichel <mw.pub@welter-4d.de>2016-07-30 17:52:51 +0200
committerGitHub <noreply@github.com>2016-07-30 17:52:51 +0200
commitae51598b329f7120c6ee07e2ed127a607ff68f1e (patch)
tree5530cadb7f2cd5794b06510a77a131924c6bb8a5 /opentrack-logic/work.cpp
parentc346bb024b2a109debf59774eb96971d32a528ae (diff)
parent44428d4b5eeae78fd9cdedce840f7de2ddc6c6b2 (diff)
Merge pull request #398 from DaMichel/logging
Track Logging
Diffstat (limited to 'opentrack-logic/work.cpp')
-rw-r--r--opentrack-logic/work.cpp43
1 files changed, 42 insertions, 1 deletions
diff --git a/opentrack-logic/work.cpp b/opentrack-logic/work.cpp
index 820112bf..8d00270b 100644
--- a/opentrack-logic/work.cpp
+++ b/opentrack-logic/work.cpp
@@ -1,9 +1,50 @@
#include "work.hpp"
+#include <QMessageBox>
+
+
+std::shared_ptr<TrackLogger> Work::make_logger(const main_settings &s)
+{
+ if (s.tracklogging_enabled)
+ {
+ if (static_cast<QString>(s.tracklogging_filename).isEmpty())
+ {
+ QMessageBox::warning(nullptr, "Logging Error",
+ "No filename given for track logging. Proceeding without logging.",
+ QMessageBox::Ok,
+ QMessageBox::NoButton);
+ }
+ else
+ {
+ auto logger = std::make_shared<TrackLoggerCSV>(s.tracklogging_filename);
+ if (!logger->is_open())
+ {
+ logger = nullptr;
+ QMessageBox::warning(nullptr, "Logging Error",
+ "Unable to open file: " + s.tracklogging_filename + ". Proceeding without logging.",
+ QMessageBox::Ok,
+ QMessageBox::NoButton);
+ }
+ else
+ {
+ /* As this function has the potential to fill up the hard drive
+ of the unwary with junk data, a warning is in order. */
+ QMessageBox::warning(nullptr, "Logging Active",
+ "Just a heads up. You are recoding pose data to " + s.tracklogging_filename + "!",
+ QMessageBox::Ok,
+ QMessageBox::NoButton);
+ return logger;
+ }
+ }
+ }
+ return std::make_shared<TrackLogger>();
+}
+
Work::Work(Mappings& m, SelectedLibraries& libs, WId handle) :
libs(libs),
- tracker(std::make_shared<Tracker>(m, libs)),
+ logger(make_logger(s)),
+ tracker(std::make_shared<Tracker>(m, libs, *logger)),
sc(std::make_shared<Shortcuts>()),
handle(handle),
keys {