diff options
author | DaMichel <mw.pub@welter-4d.de> | 2016-07-30 17:52:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-30 17:52:51 +0200 |
commit | ae51598b329f7120c6ee07e2ed127a607ff68f1e (patch) | |
tree | 5530cadb7f2cd5794b06510a77a131924c6bb8a5 /opentrack-logic/work.cpp | |
parent | c346bb024b2a109debf59774eb96971d32a528ae (diff) | |
parent | 44428d4b5eeae78fd9cdedce840f7de2ddc6c6b2 (diff) |
Merge pull request #398 from DaMichel/logging
Track Logging
Diffstat (limited to 'opentrack-logic/work.cpp')
-rw-r--r-- | opentrack-logic/work.cpp | 43 |
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 { |