History

Reworked WindowScriptingInterface save method for async methods

vladest committed 9 years ago

Commit 8afdb271 parent 51a5c305 files · +73 −51Browse files

Showing the changes to interface/src/scripting/WindowScriptingInterface.cpp (1 of 5 files). Show all

Unified · Split

interface/src/scripting/WindowScriptingInterface.cpp+14−7
@@ -225,8 +225,7 @@ QScriptValue WindowScriptingInterface::browse(const QString& title, const QStrin · 224 unmodified lines
225225 /// \param const QString& title title of the window
226226 /// \param const QString& directory directory to start the file browser at
227227 /// \param const QString& nameFilter filter to filter filenames by - see `QFileDialog`
228−/// \return QScriptValue file path as a string if one was selected, otherwise `QScriptValue::NullValue`
229−QScriptValue WindowScriptingInterface::save(const QString& title, const QString& directory, const QString& nameFilter) {
228+void WindowScriptingInterface::save(const QString& title, const QString& directory, const QString& nameFilter) {
230229 ensureReticleVisible();
231230 QString path = directory;
232231 if (path.isEmpty()) {
@@ -235,11 +234,19 @@ QScriptValue WindowScriptingInterface::save(const QString& title, const QString& · 2 unmodified lines
235234 #ifndef Q_OS_WIN
236235 path = fixupPathForMac(directory);
237236 #endif
238− QString result = OffscreenUi::getSaveFileName(nullptr, title, path, nameFilter);
239− if (!result.isEmpty()) {
240− setPreviousBrowseLocation(QFileInfo(result).absolutePath());
241− }
242− return result.isEmpty() ? QScriptValue::NullValue : QScriptValue(result);
237+ auto offscreenUi = DependencyManager::get<OffscreenUi>();
238+ connect(offscreenUi.data(), &OffscreenUi::fileDialogResponse,
239+ this, [=] (QString result) {
240+ auto offscreenUi = DependencyManager::get<OffscreenUi>();
241+ disconnect(offscreenUi.data(), &OffscreenUi::fileDialogResponse,
242+ this, nullptr);
243+ if (!result.isEmpty()) {
244+ setPreviousBrowseLocation(QFileInfo(result).absolutePath());
245+ }
246+ emit saveFileChanged(result);
247+ });
248+
249+ OffscreenUi::getSaveFileNameAsync(nullptr, title, path, nameFilter);
243250 }
244251
245252 /// Display a select asset dialog that lets the user select an asset from the Asset Server. If `directory` is an invalid