mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 19:21:16 +02:00
get rid of 'isExternal' due to changes requirements
show avatar thumbnail if url was specified & valid, show 'guy-in-circle' otherwise
This commit is contained in:
parent
9925bc2822
commit
5381dce8d8
4 changed files with 61 additions and 49 deletions
|
@ -109,9 +109,10 @@ Rectangle {
|
||||||
currentAvatar.avatarScale = message.value;
|
currentAvatar.avatarScale = message.value;
|
||||||
updateCurrentAvatarInBookmarks(currentAvatar);
|
updateCurrentAvatarInBookmarks(currentAvatar);
|
||||||
} else if(message.method === 'externalAvatarApplied') {
|
} else if(message.method === 'externalAvatarApplied') {
|
||||||
currentAvatar.isExternal = true;
|
console.debug('externalAvatarApplied...');
|
||||||
currentAvatar.name = allAvatars.encodedName('', true);
|
currentAvatar.avatarUrl = message.avatarURL;
|
||||||
currentAvatar.thumbnailUrl = externalAvatarThumbnailUrl.toString();
|
currentAvatar.thumbnailUrl = allAvatars.makeThumbnailUrl(message.avatarURL);
|
||||||
|
console.debug('externalAvatarApplied: ', currentAvatar.avatarUrl, currentAvatar.thumbnailUrl);
|
||||||
updateCurrentAvatarInBookmarks(currentAvatar);
|
updateCurrentAvatarInBookmarks(currentAvatar);
|
||||||
} else if(message.method === 'settingChanged') {
|
} else if(message.method === 'settingChanged') {
|
||||||
currentAvatarSettings[message.name] = message.value;
|
currentAvatarSettings[message.name] = message.value;
|
||||||
|
@ -340,11 +341,25 @@ Rectangle {
|
||||||
anchors.left: displayNameLabel.left
|
anchors.left: displayNameLabel.left
|
||||||
anchors.top: displayNameLabel.bottom
|
anchors.top: displayNameLabel.bottom
|
||||||
anchors.topMargin: 31
|
anchors.topMargin: 31
|
||||||
source: avatarUrl
|
Binding on source {
|
||||||
visible: avatarImage.status !== Image.Loading
|
when: avatarUrl !== ''
|
||||||
|
value: avatarUrl
|
||||||
|
}
|
||||||
|
onSourceChanged: {
|
||||||
|
console.debug('avatarImage: source = ', source);
|
||||||
|
}
|
||||||
|
|
||||||
|
visible: avatarImage.status !== Image.Loading && avatarImage.status !== Image.Error
|
||||||
fillMode: Image.PreserveAspectCrop
|
fillMode: Image.PreserveAspectCrop
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ShadowImage {
|
||||||
|
id: customAvatarImage
|
||||||
|
anchors.fill: avatarImage;
|
||||||
|
visible: avatarUrl === '' || avatarImage.status === Image.Error
|
||||||
|
source: externalAvatarThumbnailUrl
|
||||||
|
}
|
||||||
|
|
||||||
ShadowRectangle {
|
ShadowRectangle {
|
||||||
anchors.fill: avatarImage;
|
anchors.fill: avatarImage;
|
||||||
color: 'white'
|
color: 'white'
|
||||||
|
@ -407,14 +422,17 @@ Rectangle {
|
||||||
}
|
}
|
||||||
|
|
||||||
entry.avatarEntites = wearables;
|
entry.avatarEntites = wearables;
|
||||||
currentAvatar.name = allAvatars.encodedName(createFavorite.favoriteNameText, currentAvatar.isExternal);
|
currentAvatar.name = createFavorite.favoriteNameText;
|
||||||
console.debug('became: ', JSON.stringify(entry, 0, 4));
|
console.debug('became: ', JSON.stringify(entry, 0, 4));
|
||||||
|
|
||||||
emitSendToScript({'method': 'addAvatar', 'name' : currentAvatar.name});
|
emitSendToScript({'method': 'addAvatar', 'name' : currentAvatar.name});
|
||||||
createFavorite.close();
|
createFavorite.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
createFavorite.open(root.currentAvatar);
|
var avatarThumbnail = (avatarUrl === '' || avatarImage.status === Image.Error) ?
|
||||||
|
externalAvatarThumbnailUrl : avatarUrl;
|
||||||
|
|
||||||
|
createFavorite.open(root.currentAvatar.wearables.count, avatarThumbnail);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -564,16 +582,15 @@ Rectangle {
|
||||||
property int verticalSpacing: 44
|
property int verticalSpacing: 44
|
||||||
|
|
||||||
function selectAvatar(avatar) {
|
function selectAvatar(avatar) {
|
||||||
emitSendToScript({'method' : 'selectAvatar', 'name' : allAvatars.encodedName(avatar.name, avatar.isExternal)})
|
emitSendToScript({'method' : 'selectAvatar', 'name' : avatar.name})
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteAvatar(avatar) {
|
function deleteAvatar(avatar) {
|
||||||
emitSendToScript({'method' : 'deleteAvatar', 'name' : allAvatars.encodedName(avatar.name, avatar.isExternal)})
|
emitSendToScript({'method' : 'deleteAvatar', 'name' : avatar.name})
|
||||||
}
|
}
|
||||||
|
|
||||||
AvatarsModel {
|
AvatarsModel {
|
||||||
id: allAvatars
|
id: allAvatars
|
||||||
externalAvatarThumbnailUrl: root.externalAvatarThumbnailUrl
|
|
||||||
}
|
}
|
||||||
|
|
||||||
property int itemsPerPage: 8
|
property int itemsPerPage: 8
|
||||||
|
@ -676,7 +693,8 @@ Rectangle {
|
||||||
|
|
||||||
AvatarThumbnail {
|
AvatarThumbnail {
|
||||||
id: favoriteAvatarImage
|
id: favoriteAvatarImage
|
||||||
imageUrl: thumbnailUrl
|
externalAvatarThumbnailUrl: root.externalAvatarThumbnailUrl
|
||||||
|
avatarUrl: thumbnailUrl
|
||||||
border.color: container.highlighted ? style.colors.blueHighlight : 'transparent'
|
border.color: container.highlighted ? style.colors.blueHighlight : 'transparent'
|
||||||
border.width: container.highlighted ? 4 : 0
|
border.width: container.highlighted ? 4 : 0
|
||||||
wearablesCount: {
|
wearablesCount: {
|
||||||
|
|
|
@ -15,15 +15,32 @@ Item {
|
||||||
property alias dropShadowHorizontalOffset: avatarImage.dropShadowHorizontalOffset
|
property alias dropShadowHorizontalOffset: avatarImage.dropShadowHorizontalOffset
|
||||||
property alias dropShadowVerticalOffset: avatarImage.dropShadowVerticalOffset
|
property alias dropShadowVerticalOffset: avatarImage.dropShadowVerticalOffset
|
||||||
|
|
||||||
property alias imageUrl: avatarImage.source
|
property url externalAvatarThumbnailUrl;
|
||||||
|
property var avatarUrl;
|
||||||
property alias border: avatarImage.border
|
property alias border: avatarImage.border
|
||||||
|
|
||||||
ShadowImage {
|
ShadowImage {
|
||||||
id: avatarImage
|
id: avatarImage
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
visible: status !== Image.Loading
|
|
||||||
radius: 5
|
radius: 5
|
||||||
fillMode: Image.PreserveAspectCrop
|
fillMode: Image.PreserveAspectCrop
|
||||||
|
|
||||||
|
Binding on source {
|
||||||
|
when: avatarUrl !== ''
|
||||||
|
value: avatarUrl
|
||||||
|
}
|
||||||
|
onSourceChanged: {
|
||||||
|
console.debug('avatarImage: source = ', source);
|
||||||
|
}
|
||||||
|
|
||||||
|
visible: avatarImage.status !== Image.Loading && avatarImage.status !== Image.Error
|
||||||
|
}
|
||||||
|
|
||||||
|
ShadowImage {
|
||||||
|
id: customAvatarImage
|
||||||
|
anchors.fill: avatarImage;
|
||||||
|
visible: avatarUrl === '' || avatarImage.status === Image.Error
|
||||||
|
source: externalAvatarThumbnailUrl
|
||||||
}
|
}
|
||||||
|
|
||||||
ShadowRectangle {
|
ShadowRectangle {
|
||||||
|
|
|
@ -2,8 +2,6 @@ import QtQuick 2.9
|
||||||
|
|
||||||
ListModel {
|
ListModel {
|
||||||
id: model
|
id: model
|
||||||
property url externalAvatarThumbnailUrl;
|
|
||||||
|
|
||||||
function extractMarketId(avatarUrl) {
|
function extractMarketId(avatarUrl) {
|
||||||
|
|
||||||
var guidRegexp = '([A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12})';
|
var guidRegexp = '([A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12})';
|
||||||
|
@ -27,39 +25,21 @@ ListModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
function makeThumbnailUrl(avatarUrl) {
|
function makeThumbnailUrl(avatarUrl) {
|
||||||
|
var marketId = extractMarketId(avatarUrl);
|
||||||
|
if(marketId === '')
|
||||||
|
return '';
|
||||||
|
|
||||||
var avatarThumbnailUrl = "https://hifi-metaverse.s3-us-west-1.amazonaws.com/marketplace/previews/%marketId%/large/hifi-mp-%marketId%.jpg"
|
var avatarThumbnailUrl = "https://hifi-metaverse.s3-us-west-1.amazonaws.com/marketplace/previews/%marketId%/large/hifi-mp-%marketId%.jpg"
|
||||||
.split('%marketId%').join(extractMarketId(avatarUrl));
|
.split('%marketId%').join(marketId);
|
||||||
|
|
||||||
return avatarThumbnailUrl;
|
return avatarThumbnailUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
function encodedName(avatarName, isExternal) {
|
|
||||||
if(isExternal) {
|
|
||||||
if(avatarName.indexOf('external:') !== 0) {
|
|
||||||
return 'external:' + avatarName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return avatarName;
|
|
||||||
}
|
|
||||||
|
|
||||||
function decodedName(avatarName, isExternal) {
|
|
||||||
if(isExternal) {
|
|
||||||
if(avatarName.indexOf('external:') === 0) {
|
|
||||||
avatarName = avatarName.replace('external:', '');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return avatarName;
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeAvatarObject(avatar, avatarName) {
|
function makeAvatarObject(avatar, avatarName) {
|
||||||
console.debug('makeAvatarEntry: ', avatarName, JSON.stringify(avatar));
|
console.debug('makeAvatarEntry: ', avatarName, JSON.stringify(avatar));
|
||||||
var isExternal = avatarName.indexOf('external:') === 0;
|
|
||||||
avatarName = decodedName(avatarName, isExternal);
|
|
||||||
|
|
||||||
var avatarThumbnailUrl = isExternal ? externalAvatarThumbnailUrl.toString() : makeThumbnailUrl(avatar.avatarUrl);
|
var avatarThumbnailUrl = makeThumbnailUrl(avatar.avatarUrl);
|
||||||
console.debug('isExternal:', isExternal, 'avatarThumbnailUrl:', avatarThumbnailUrl, 'externalAvatarThumbnailUrl:', externalAvatarThumbnailUrl);
|
console.debug('avatarThumbnailUrl:', avatarThumbnailUrl);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'name' : avatarName,
|
'name' : avatarName,
|
||||||
|
@ -69,7 +49,6 @@ ListModel {
|
||||||
'wearables' : avatar.avatarEntites ? avatar.avatarEntites : [],
|
'wearables' : avatar.avatarEntites ? avatar.avatarEntites : [],
|
||||||
'attachments' : avatar.attachments ? avatar.attachments : [],
|
'attachments' : avatar.attachments ? avatar.attachments : [],
|
||||||
'entry' : avatar,
|
'entry' : avatar,
|
||||||
'isExternal' : isExternal,
|
|
||||||
'getMoreAvatars' : false
|
'getMoreAvatars' : false
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -25,14 +25,12 @@ Rectangle {
|
||||||
property var onSaveClicked;
|
property var onSaveClicked;
|
||||||
property var onCancelClicked;
|
property var onCancelClicked;
|
||||||
|
|
||||||
function open(avatar) {
|
function open(wearables, thumbnail) {
|
||||||
favoriteName.text = '';
|
favoriteName.text = '';
|
||||||
favoriteName.forceActiveFocus();
|
favoriteName.forceActiveFocus();
|
||||||
|
|
||||||
console.debug('CreateFavoriteDialog: ', avatar.thumbnailUrl);
|
avatarImageUrl = thumbnail;
|
||||||
|
wearablesCount = wearables;
|
||||||
avatarImageUrl = avatar.thumbnailUrl;
|
|
||||||
wearablesCount = avatar.wearables.count;
|
|
||||||
|
|
||||||
visible = true;
|
visible = true;
|
||||||
}
|
}
|
||||||
|
@ -101,9 +99,9 @@ Rectangle {
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
|
|
||||||
AvatarThumbnail {
|
AvatarThumbnail {
|
||||||
imageUrl: avatarImageUrl
|
avatarUrl: avatarImageUrl
|
||||||
onImageUrlChanged: {
|
onAvatarUrlChanged: {
|
||||||
console.debug('CreateFavoritesDialog: imageUrlChanged: ', imageUrl);
|
console.debug('CreateFavoritesDialog: onAvatarUrlChanged: ', avatarUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
wearablesCount: avatarWearablesCount
|
wearablesCount: avatarWearablesCount
|
||||||
|
|
Loading…
Reference in a new issue