Modified some usecases for async dialogs

This commit is contained in:
vladest 2017-08-16 21:41:18 +02:00
parent a87a93d991
commit 4e5c650621
6 changed files with 74 additions and 53 deletions

View file

@ -6849,12 +6849,18 @@ void Application::setPreviousScriptLocation(const QString& location) {
} }
void Application::loadScriptURLDialog() const { void Application::loadScriptURLDialog() const {
QString newScript = OffscreenUi::getText(OffscreenUi::ICON_NONE, "Open and Run Script", "Script URL"); auto offscreenUi = DependencyManager::get<OffscreenUi>();
if (QUrl(newScript).scheme() == "atp") { connect(offscreenUi.data(), &OffscreenUi::inputDialogResponse, this, [=] (QVariant response) {
OffscreenUi::asyncWarning("Error Loading Script", "Cannot load client script over ATP"); disconnect(offscreenUi.data(), &OffscreenUi::inputDialogResponse, this, nullptr);
} else if (!newScript.isEmpty()) { auto offscreenUi = DependencyManager::get<OffscreenUi>();
DependencyManager::get<ScriptEngines>()->loadScript(newScript.trimmed()); const QString& newScript = response.toString();
} if (QUrl(newScript).scheme() == "atp") {
OffscreenUi::asyncWarning("Error Loading Script", "Cannot load client script over ATP");
} else if (!newScript.isEmpty()) {
DependencyManager::get<ScriptEngines>()->loadScript(newScript.trimmed());
}
});
OffscreenUi::getTextAsync(OffscreenUi::ICON_NONE, "Open and Run Script", "Script URL");
} }
void Application::loadLODToolsDialog() { void Application::loadLODToolsDialog() {

View file

@ -106,30 +106,31 @@ void AvatarBookmarks::changeToBookmarkedAvatar() {
} }
void AvatarBookmarks::addBookmark() { void AvatarBookmarks::addBookmark() {
bool ok = false; auto offscreenUi = DependencyManager::get<OffscreenUi>();
auto bookmarkName = OffscreenUi::getText(OffscreenUi::ICON_PLACEMARK, "Bookmark Avatar", "Name", QString(), &ok); connect(offscreenUi.data(), &OffscreenUi::inputDialogResponse, this, [=] (QVariant response) {
if (!ok) { disconnect(offscreenUi.data(), &OffscreenUi::inputDialogResponse, this, nullptr);
return; auto offscreenUi = DependencyManager::get<OffscreenUi>();
} auto bookmarkName = response.toString();
bookmarkName = bookmarkName.trimmed().replace(QRegExp("(\r\n|[\r\n\t\v ])+"), " ");
if (bookmarkName.length() == 0) {
return;
}
bookmarkName = bookmarkName.trimmed().replace(QRegExp("(\r\n|[\r\n\t\v ])+"), " "); auto myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
if (bookmarkName.length() == 0) {
return;
}
auto myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar(); const QString& avatarUrl = myAvatar->getSkeletonModelURL().toString();
const QVariant& avatarScale = myAvatar->getAvatarScale();
const QString& avatarUrl = myAvatar->getSkeletonModelURL().toString(); // If Avatar attachments ever change, this is where to update them, when saving remember to also append to AVATAR_BOOKMARK_VERSION
const QVariant& avatarScale = myAvatar->getAvatarScale(); QVariantMap *bookmark = new QVariantMap;
bookmark->insert(ENTRY_VERSION, AVATAR_BOOKMARK_VERSION);
bookmark->insert(ENTRY_AVATAR_URL, avatarUrl);
bookmark->insert(ENTRY_AVATAR_SCALE, avatarScale);
bookmark->insert(ENTRY_AVATAR_ATTACHMENTS, myAvatar->getAttachmentsVariant());
// If Avatar attachments ever change, this is where to update them, when saving remember to also append to AVATAR_BOOKMARK_VERSION Bookmarks::addBookmarkToFile(bookmarkName, *bookmark);
QVariantMap *bookmark = new QVariantMap; });
bookmark->insert(ENTRY_VERSION, AVATAR_BOOKMARK_VERSION); OffscreenUi::getTextAsync(OffscreenUi::ICON_PLACEMARK, "Bookmark Avatar", "Name", QString());
bookmark->insert(ENTRY_AVATAR_URL, avatarUrl);
bookmark->insert(ENTRY_AVATAR_SCALE, avatarScale);
bookmark->insert(ENTRY_AVATAR_ATTACHMENTS, myAvatar->getAttachmentsVariant());
Bookmarks::addBookmarkToFile(bookmarkName, *bookmark);
} }
void AvatarBookmarks::addBookmarkToMenu(Menu* menubar, const QString& name, const QVariant& bookmark) { void AvatarBookmarks::addBookmarkToMenu(Menu* menubar, const QString& name, const QVariant& bookmark) {

View file

@ -70,20 +70,23 @@ void LocationBookmarks::teleportToBookmark() {
} }
void LocationBookmarks::addBookmark() { void LocationBookmarks::addBookmark() {
bool ok = false; auto offscreenUi = DependencyManager::get<OffscreenUi>();
auto bookmarkName = OffscreenUi::getText(OffscreenUi::ICON_PLACEMARK, "Bookmark Location", "Name", QString(), &ok); connect(offscreenUi.data(), &OffscreenUi::inputDialogResponse, this, [=] (QVariant response) {
if (!ok) { disconnect(offscreenUi.data(), &OffscreenUi::inputDialogResponse, this, nullptr);
return; auto offscreenUi = DependencyManager::get<OffscreenUi>();
} auto bookmarkName = response.toString();
bookmarkName = bookmarkName.trimmed().replace(QRegExp("(\r\n|[\r\n\t\v ])+"), " "); bookmarkName = bookmarkName.trimmed().replace(QRegExp("(\r\n|[\r\n\t\v ])+"), " ");
if (bookmarkName.length() == 0) { if (bookmarkName.length() == 0) {
return; return;
} }
auto addressManager = DependencyManager::get<AddressManager>(); auto addressManager = DependencyManager::get<AddressManager>();
QString bookmarkAddress = addressManager->currentAddress().toString(); QString bookmarkAddress = addressManager->currentAddress().toString();
Bookmarks::addBookmarkToFile(bookmarkName, bookmarkAddress); Bookmarks::addBookmarkToFile(bookmarkName, bookmarkAddress);
});
OffscreenUi::getTextAsync(OffscreenUi::ICON_PLACEMARK, "Bookmark Location", "Name", QString());
} }
void LocationBookmarks::addBookmarkToMenu(Menu* menubar, const QString& name, const QVariant& address) { void LocationBookmarks::addBookmarkToMenu(Menu* menubar, const QString& name, const QVariant& address) {
@ -97,4 +100,4 @@ void LocationBookmarks::addBookmarkToMenu(Menu* menubar, const QString& name, co
menubar->addActionToQMenuAndActionHash(_bookmarksMenu, teleportAction, name, 0, QAction::NoRole); menubar->addActionToQMenuAndActionHash(_bookmarksMenu, teleportAction, name, 0, QAction::NoRole);
Bookmarks::sortActions(menubar, _bookmarksMenu); Bookmarks::sortActions(menubar, _bookmarksMenu);
} }
} }

View file

@ -116,11 +116,17 @@ QScriptValue WindowScriptingInterface::confirm(const QString& message) {
/// Display a prompt with a text box /// Display a prompt with a text box
/// \param const QString& message message to display /// \param const QString& message message to display
/// \param const QString& defaultText default text in the text box /// \param const QString& defaultText default text in the text box
/// \return QScriptValue string text value in text box if the dialog was accepted, `null` otherwise. void WindowScriptingInterface::prompt(const QString& message, const QString& defaultText) {
QScriptValue WindowScriptingInterface::prompt(const QString& message, const QString& defaultText) { auto offscreenUi = DependencyManager::get<OffscreenUi>();
bool ok = false; connect(offscreenUi.data(), &OffscreenUi::inputDialogResponse,
QString result = OffscreenUi::getText(nullptr, "", message, QLineEdit::Normal, defaultText, &ok); this, [=] (QVariant result) {
return ok ? QScriptValue(result) : QScriptValue::NullValue; auto offscreenUi = DependencyManager::get<OffscreenUi>();
disconnect(offscreenUi.data(), &OffscreenUi::inputDialogResponse,
this, nullptr);
emit promptTextChanged(result.toString());
});
OffscreenUi::getTextAsync(nullptr, "", message, QLineEdit::Normal, defaultText);
} }
CustomPromptResult WindowScriptingInterface::customPrompt(const QVariant& config) { CustomPromptResult WindowScriptingInterface::customPrompt(const QVariant& config) {

View file

@ -51,7 +51,7 @@ public slots:
void raiseMainWindow(); void raiseMainWindow();
void alert(const QString& message = ""); void alert(const QString& message = "");
QScriptValue confirm(const QString& message = ""); QScriptValue confirm(const QString& message = "");
QScriptValue prompt(const QString& message = "", const QString& defaultText = ""); void prompt(const QString& message = "", const QString& defaultText = "");
CustomPromptResult customPrompt(const QVariant& config); CustomPromptResult customPrompt(const QVariant& config);
void browseDir(const QString& title = "", const QString& directory = ""); void browseDir(const QString& title = "", const QString& directory = "");
void browse(const QString& title = "", const QString& directory = "", const QString& nameFilter = ""); void browse(const QString& title = "", const QString& directory = "", const QString& nameFilter = "");
@ -91,6 +91,7 @@ signals:
void assetsDirChanged(QString assetsDir); void assetsDirChanged(QString assetsDir);
void saveFileChanged(QString filename); void saveFileChanged(QString filename);
void openFileChanged(QString filename); void openFileChanged(QString filename);
void promptTextChanged(QString text);
// triggered when window size or position changes // triggered when window size or position changes
void geometryChanged(QRect geometry); void geometryChanged(QRect geometry);

View file

@ -1473,6 +1473,16 @@ function onFileOpenChanged(filename) {
} }
} }
function onPromptTextChanged(prompt) {
Window.promptTextChanged.disconnect(onPromptTextChanged);
if (prompt !== "") {
if (!isActive && (Entities.canRez() && Entities.canRezTmp())) {
toolBar.toggle();
}
importSVO(prompt);
}
}
function handeMenuEvent(menuItem) { function handeMenuEvent(menuItem) {
if (menuItem === "Allow Selecting of Small Models") { if (menuItem === "Allow Selecting of Small Models") {
allowSmallModels = Menu.isOptionChecked("Allow Selecting of Small Models"); allowSmallModels = Menu.isOptionChecked("Allow Selecting of Small Models");
@ -1498,14 +1508,8 @@ function handeMenuEvent(menuItem) {
Window.openFileChanged.connect(onFileOpenChanged); Window.openFileChanged.connect(onFileOpenChanged);
Window.browse("Select Model to Import", "", "*.json"); Window.browse("Select Model to Import", "", "*.json");
} else { } else {
var importURL = Window.prompt("URL of SVO to import", ""); Window.promptTextChanged.connect(onFileOpenChanged);
if (importURL) { Window.prompt("URL of SVO to import", "");
if (!isActive && (Entities.canRez() && Entities.canRezTmp())) {
toolBar.toggle();
}
importSVO(importURL);
}
} }
} else if (menuItem === "Entity List...") { } else if (menuItem === "Entity List...") {
entityListTool.toggleVisible(); entityListTool.toggleVisible();