mirror of
https://github.com/lubosz/overte.git
synced 2025-04-09 09:44:33 +02:00
backend integration from Dante
* adding some functionality to avatar bookmarks * saving work
This commit is contained in:
parent
5007c259bb
commit
ce3015662e
5 changed files with 85 additions and 18 deletions
|
@ -11,7 +11,6 @@ Rectangle {
|
|||
width: 480
|
||||
height: 706
|
||||
color: style.colors.white
|
||||
|
||||
property string getAvatarsMethod: 'getAvatars'
|
||||
|
||||
signal sendToScript(var message);
|
||||
|
@ -486,6 +485,7 @@ Rectangle {
|
|||
property int verticalSpacing: 36
|
||||
|
||||
function selectAvatar(avatar) {
|
||||
AvatarBookmarks.loadBookmark(avatar.name);
|
||||
selectedAvatarId = avatar.name;
|
||||
var avatarIndex = allAvatars.findAvatarIndex(selectedAvatarId);
|
||||
allAvatars.move(avatarIndex, 0, 1);
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
#include <QStandardPaths>
|
||||
#include <QQmlContext>
|
||||
#include <QList>
|
||||
#include <QtCore/QThread>
|
||||
|
||||
#include <shared/QtHelpers.h>
|
||||
#include <Application.h>
|
||||
#include <OffscreenUi.h>
|
||||
#include <avatar/AvatarManager.h>
|
||||
|
@ -96,6 +98,74 @@ AvatarBookmarks::AvatarBookmarks() {
|
|||
readFromFile();
|
||||
}
|
||||
|
||||
void AvatarBookmarks::addBookmark(const QString& bookmarkName) {
|
||||
if (QThread::currentThread() != thread()) {
|
||||
BLOCKING_INVOKE_METHOD(this, "addBookmark", Q_ARG(QString, bookmarkName));
|
||||
return;
|
||||
}
|
||||
Menu* menubar = Menu::getInstance();
|
||||
QVariantMap bookmark = getAvatarDataToBookmark();
|
||||
addBookmarkToMenu(menubar, bookmarkName, bookmark);
|
||||
insert(bookmarkName, bookmark);
|
||||
enableMenuItems(true);
|
||||
}
|
||||
|
||||
void AvatarBookmarks::saveBookmark(const QString& bookmarkName) {
|
||||
if (QThread::currentThread() != thread()) {
|
||||
BLOCKING_INVOKE_METHOD(this, "saveBookmark", Q_ARG(QString, bookmarkName));
|
||||
return;
|
||||
}
|
||||
if (contains(bookmarkName)) {
|
||||
QVariantMap bookmark = getAvatarDataToBookmark();
|
||||
insert(bookmarkName, bookmark);
|
||||
}
|
||||
}
|
||||
|
||||
void AvatarBookmarks::removeBookmark(const QString& bookmarkName) {
|
||||
if (QThread::currentThread() != thread()) {
|
||||
BLOCKING_INVOKE_METHOD(this, "removeBookmark", Q_ARG(QString, bookmarkName));
|
||||
return;
|
||||
}
|
||||
|
||||
Menu* menubar = Menu::getInstance();
|
||||
Bookmarks::removeBookmarkFromMenu(Menu::getInstance(), bookmarkName);
|
||||
remove(bookmarkName);
|
||||
|
||||
if (_bookmarksMenu->actions().count() == 0) {
|
||||
enableMenuItems(false);
|
||||
}
|
||||
}
|
||||
|
||||
void AvatarBookmarks::loadBookmark(const QString& bookmarkName) {
|
||||
if (QThread::currentThread() != thread()) {
|
||||
BLOCKING_INVOKE_METHOD(this, "reloadBookmark", Q_ARG(QString, bookmarkName));
|
||||
return;
|
||||
}
|
||||
|
||||
auto bookmarkEntry = _bookmarks.find(bookmarkName);
|
||||
|
||||
if (bookmarkEntry != _bookmarks.end()) {
|
||||
QVariantMap bookmark = bookmarkEntry.value().toMap();
|
||||
if (!bookmark.empty()) {
|
||||
auto myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
|
||||
myAvatar->removeAvatarEntities();
|
||||
const QString& avatarUrl = bookmark.value(ENTRY_AVATAR_URL, "").toString();
|
||||
myAvatar->useFullAvatarURL(avatarUrl);
|
||||
qCDebug(interfaceapp) << "Avatar On " << avatarUrl;
|
||||
const QList<QVariant>& attachments = bookmark.value(ENTRY_AVATAR_ATTACHMENTS, QList<QVariant>()).toList();
|
||||
|
||||
qCDebug(interfaceapp) << "Attach " << attachments;
|
||||
myAvatar->setAttachmentsVariant(attachments);
|
||||
|
||||
const float& qScale = bookmark.value(ENTRY_AVATAR_SCALE, 1.0f).toFloat();
|
||||
myAvatar->setAvatarScale(qScale);
|
||||
|
||||
const QVariantList& avatarEntities = bookmark.value(ENTRY_AVATAR_ENTITIES, QVariantList()).toList();
|
||||
addAvatarEntities(avatarEntities);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AvatarBookmarks::readFromFile() {
|
||||
// migrate old avatarbookmarks.json, used to be in 'local' folder on windows
|
||||
QString oldConfigPath = QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + AVATARBOOKMARKS_FILENAME;
|
||||
|
@ -181,12 +251,12 @@ void AvatarBookmarks::addBookmark() {
|
|||
return;
|
||||
}
|
||||
|
||||
addBookmark(bookmarkName);
|
||||
QVariantMap bookmark = getAvatarDataToBookmark();
|
||||
Bookmarks::addBookmarkToFile(bookmarkName, bookmark);
|
||||
});
|
||||
}
|
||||
|
||||
void AvatarBookmarks::addBookmark(QString bookmarkName)
|
||||
{
|
||||
QVariantMap AvatarBookmarks::getAvatarDataToBookmark() {
|
||||
auto myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
|
||||
|
||||
const QString& avatarUrl = myAvatar->getSkeletonModelURL().toString();
|
||||
|
@ -199,13 +269,7 @@ void AvatarBookmarks::addBookmark(QString bookmarkName)
|
|||
bookmark.insert(ENTRY_AVATAR_SCALE, avatarScale);
|
||||
bookmark.insert(ENTRY_AVATAR_ATTACHMENTS, myAvatar->getAttachmentsVariant());
|
||||
bookmark.insert(ENTRY_AVATAR_ENTITIES, myAvatar->getAvatarEntitiesVariant());
|
||||
|
||||
Bookmarks::addBookmarkToFile(bookmarkName, bookmark);
|
||||
}
|
||||
|
||||
void AvatarBookmarks::removeBookmark(QString bookmarkName)
|
||||
{
|
||||
Bookmarks::deleteBookmark(bookmarkName);
|
||||
return bookmark;
|
||||
}
|
||||
|
||||
void AvatarBookmarks::addBookmarkToMenu(Menu* menubar, const QString& name, const QVariant& bookmark) {
|
||||
|
|
|
@ -39,13 +39,16 @@ public slots:
|
|||
* @function AvatarBookmarks.addBookMark
|
||||
*/
|
||||
void addBookmark();
|
||||
void addBookmark(QString bookmarkName);
|
||||
void removeBookmark(QString bookmarkName);
|
||||
void addBookmark(const QString& bookmarkName);
|
||||
void saveBookmark(const QString& bookmarkName);
|
||||
void loadBookmark(const QString& bookmarkName);
|
||||
void removeBookmark(const QString& bookmarkName);
|
||||
QVariantMap getBookmarks() { return _bookmarks; }
|
||||
|
||||
protected:
|
||||
void addBookmarkToMenu(Menu* menubar, const QString& name, const QVariant& bookmark) override;
|
||||
void readFromFile() override;
|
||||
QVariantMap getAvatarDataToBookmark();
|
||||
|
||||
private:
|
||||
const QString AVATARBOOKMARKS_FILENAME = "avatarbookmarks.json";
|
||||
|
|
|
@ -40,9 +40,10 @@ protected:
|
|||
void insert(const QString& name, const QVariant& address); // Overwrites any existing entry with same name.
|
||||
void sortActions(Menu* menubar, MenuWrapper* menu);
|
||||
int getMenuItemLocation(QList<QAction*> actions, const QString& name) const;
|
||||
|
||||
void removeBookmarkFromMenu(Menu* menubar, const QString& name);
|
||||
bool contains(const QString& name) const;
|
||||
|
||||
void remove(const QString& name);
|
||||
|
||||
QVariantMap _bookmarks; // { name: url, ... }
|
||||
QPointer<MenuWrapper> _bookmarksMenu;
|
||||
QPointer<QAction> _deleteBookmarksAction;
|
||||
|
@ -59,12 +60,9 @@ protected slots:
|
|||
void deleteBookmark();
|
||||
|
||||
private:
|
||||
void remove(const QString& name);
|
||||
static bool sortOrder(QAction* a, QAction* b);
|
||||
|
||||
void persistToFile();
|
||||
|
||||
void removeBookmarkFromMenu(Menu* menubar, const QString& name);
|
||||
};
|
||||
|
||||
#endif // hifi_Bookmarks_h
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
#include "scripting/MenuScriptingInterface.h"
|
||||
#include "scripting/SettingsScriptingInterface.h"
|
||||
#include <Preferences.h>
|
||||
#include <AvatarBookmarks.h>
|
||||
#include <ScriptEngines.h>
|
||||
#include "FileDialogHelper.h"
|
||||
#include "avatar/AvatarManager.h"
|
||||
|
@ -253,6 +254,7 @@ void Web3DOverlay::setupQmlSurface() {
|
|||
_webSurface->getSurfaceContext()->setContextProperty("SoundCache", DependencyManager::get<SoundCache>().data());
|
||||
_webSurface->getSurfaceContext()->setContextProperty("MenuInterface", MenuScriptingInterface::getInstance());
|
||||
_webSurface->getSurfaceContext()->setContextProperty("Settings", SettingsScriptingInterface::getInstance());
|
||||
_webSurface->getSurfaceContext()->setContextProperty("AvatarBookmarks", DependencyManager::get<AvatarBookmarks>().data());
|
||||
_webSurface->getSurfaceContext()->setContextProperty("Render", AbstractViewStateInterface::instance()->getRenderEngine()->getConfiguration().get());
|
||||
_webSurface->getSurfaceContext()->setContextProperty("Workload", qApp->getGameWorkload()._engine->getConfiguration().get());
|
||||
_webSurface->getSurfaceContext()->setContextProperty("Controller", DependencyManager::get<controller::ScriptingInterface>().data());
|
||||
|
|
Loading…
Reference in a new issue