diff --git a/interface/resources/qml/hifi/tablet/InputRecorder.qml b/interface/resources/qml/hifi/tablet/InputRecorder.qml index 77f21e338c..6b307b2f79 100644 --- a/interface/resources/qml/hifi/tablet/InputRecorder.qml +++ b/interface/resources/qml/hifi/tablet/InputRecorder.qml @@ -23,6 +23,7 @@ Rectangle { signal sendToScript(var message); color: hifi.colors.baseGray; property string path: "" + property string dir: "" property var dialog: null; property bool recording: false; @@ -49,6 +50,7 @@ Rectangle { sendToScript({method: "Stop"}); inputRecorder.recording = false; start.text = "Start Recording"; + selectedFile.text = ""; } else { sendToScript({method: "Start"}); inputRecorder.recording = true; @@ -111,6 +113,9 @@ Rectangle { enabled: true onClicked: { dialog = fileDialog.createObject(inputRecorder); + dialog.caption = "InputRecorder"; + console.log(dialog.dir); + dialog.dir = "file:///" + inputRecorder.dir; dialog.selectedFile.connect(getFileSelected); } } @@ -144,6 +149,10 @@ Rectangle { case "update": updateButtonStatus(message.params); break; + case "path": + console.log(message.params); + inputRecorder.dir = message.params; + break; } } diff --git a/libraries/controllers/src/controllers/InputRecorder.cpp b/libraries/controllers/src/controllers/InputRecorder.cpp index 5a10cc1d4a..2d2cd40739 100644 --- a/libraries/controllers/src/controllers/InputRecorder.cpp +++ b/libraries/controllers/src/controllers/InputRecorder.cpp @@ -23,8 +23,7 @@ #include #include -QString SAVE_DIRECTORY = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/" + BuildInfo::INTERFACE_NAME + - "/interface" + "/hifi-input-recordings/"; +QString SAVE_DIRECTORY = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/" + BuildInfo::MODIFIED_ORGANIZATION + "/" + BuildInfo::INTERFACE_NAME + "/hifi-input-recordings/"; QString FILE_PREFIX_NAME = "input-recording-"; QString COMPRESS_EXTENSION = ".tar.gz"; namespace controller { @@ -135,6 +134,10 @@ namespace controller { return &inputRecorder; } + QString InputRecorder::getSaveDirectory() { + return SAVE_DIRECTORY; + } + void InputRecorder::startRecording() { _recording = true; _playback = false; diff --git a/libraries/controllers/src/controllers/InputRecorder.h b/libraries/controllers/src/controllers/InputRecorder.h index 20b30f4b6e..d1cc9a32eb 100644 --- a/libraries/controllers/src/controllers/InputRecorder.h +++ b/libraries/controllers/src/controllers/InputRecorder.h @@ -44,6 +44,7 @@ namespace controller { void setActionState(controller::Action action, const controller::Pose pose); float getActionState(controller::Action action); controller::Pose getPoseState(controller::Action action); + QString getSaveDirectory(); void frameTick(); private: bool _recording { false }; diff --git a/libraries/controllers/src/controllers/ScriptingInterface.cpp b/libraries/controllers/src/controllers/ScriptingInterface.cpp index 9225579732..16db22401f 100644 --- a/libraries/controllers/src/controllers/ScriptingInterface.cpp +++ b/libraries/controllers/src/controllers/ScriptingInterface.cpp @@ -185,6 +185,11 @@ namespace controller { inputRecorder->loadRecording(file); } + QString ScriptingInterface::getInputRecorderSaveDirectory() { + InputRecorder* inputRecorder = InputRecorder::getInstance(); + return inputRecorder->getSaveDirectory(); + } + bool ScriptingInterface::triggerHapticPulseOnDevice(unsigned int device, float strength, float duration, controller::Hand hand) const { return DependencyManager::get()->triggerHapticPulseOnDevice(device, strength, duration, hand); } diff --git a/libraries/controllers/src/controllers/ScriptingInterface.h b/libraries/controllers/src/controllers/ScriptingInterface.h index 9ed2c60790..2c60ca25f5 100644 --- a/libraries/controllers/src/controllers/ScriptingInterface.h +++ b/libraries/controllers/src/controllers/ScriptingInterface.h @@ -105,6 +105,7 @@ namespace controller { Q_INVOKABLE void stopInputPlayback(); Q_INVOKABLE void saveInputRecording(); Q_INVOKABLE void loadInputRecording(const QString& file); + Q_INVOKABLE QString getInputRecorderSaveDirectory(); bool isMouseCaptured() const { return _mouseCaptured; } bool isTouchCaptured() const { return _touchCaptured; } diff --git a/scripts/developer/inputRecording.js b/scripts/developer/inputRecording.js index 7a3809c058..85bda623b3 100644 --- a/scripts/developer/inputRecording.js +++ b/scripts/developer/inputRecording.js @@ -9,6 +9,7 @@ (function() { var recording = false; var onRecordingScreen = false; + var passedSaveDirectory = false; var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var button = tablet.addButton({ text: "IRecord" @@ -25,6 +26,7 @@ function onScreenChanged(type, url) { onRecordingScreen = false; + passedSaveDirectory = false; } button.clicked.connect(onClick); @@ -78,6 +80,12 @@ } function update() { + + if (!passedSaveDirectory) { + var directory = Controller.getInputRecorderSaveDirectory(); + sendToQml({method: "path", params: directory}); + passedSaveDirectory = true; + } sendToQml({method: "update", params: recording}); }