From 5adc2cc593c61b3b01baf80ab13abe2c346072ed Mon Sep 17 00:00:00 2001 From: David Kelly Date: Thu, 19 Jan 2017 17:22:39 -0800 Subject: [PATCH] Couple improvements Only send one message when gain is changed. Eliminated the bool and now just sending un-personalMute, etc... --- interface/resources/qml/hifi/NameCard.qml | 17 ++++++++++++----- interface/resources/qml/hifi/Pal.qml | 2 +- scripts/system/pal.js | 18 +++++++++++++----- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/interface/resources/qml/hifi/NameCard.qml b/interface/resources/qml/hifi/NameCard.qml index 2725ea1617..bffac0b2b4 100644 --- a/interface/resources/qml/hifi/NameCard.qml +++ b/interface/resources/qml/hifi/NameCard.qml @@ -283,7 +283,12 @@ Item { maximumValue: 20.0 stepSize: 5 updateValueWhileDragging: true - onValueChanged: updateGainFromQML(uuid, value) + onValueChanged: updateGainFromQML(uuid, value, false) + onPressedChanged: { + if (!pressed) { + updateGainFromQML(uuid, value, true) + } + } MouseArea { anchors.fill: parent onWheel: { @@ -297,7 +302,8 @@ Item { mouse.accepted = false } onReleased: { - // Pass through to Slider + // the above mouse.accepted seems to make this + // never get called, nonetheless... mouse.accepted = false } } @@ -319,12 +325,13 @@ Item { } } - function updateGainFromQML(avatarUuid, sliderValue) { - if (pal.gainSliderValueDB[avatarUuid] !== sliderValue) { + function updateGainFromQML(avatarUuid, sliderValue, isReleased) { + if (isReleased || pal.gainSliderValueDB[avatarUuid] !== sliderValue) { pal.gainSliderValueDB[avatarUuid] = sliderValue; var data = { sessionId: avatarUuid, - gain: sliderValue + gain: sliderValue, + isReleased: isReleased }; pal.sendToScript({method: 'updateGain', params: data}); } diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml index 1ce6ab5e7d..ba1ffe37b6 100644 --- a/interface/resources/qml/hifi/Pal.qml +++ b/interface/resources/qml/hifi/Pal.qml @@ -247,7 +247,7 @@ Rectangle { userModel.setProperty(model.userIndex, styleData.role, newValue) userModelData[model.userIndex][styleData.role] = newValue // Defensive programming Users[styleData.role](model.sessionId, newValue) - UserActivityLogger["palAction"](newValue ? "un-" + styleData.role : styleData.role, model.sessionId) + UserActivityLogger["palAction"](newValue ? styleData.role : "un-" + styleData.role, model.sessionId) if (styleData.role === "ignore") { userModel.setProperty(model.userIndex, "personalMute", newValue) userModelData[model.userIndex]["personalMute"] = newValue // Defensive programming diff --git a/scripts/system/pal.js b/scripts/system/pal.js index 3d91bd27b2..1fbc7db9a0 100644 --- a/scripts/system/pal.js +++ b/scripts/system/pal.js @@ -103,6 +103,8 @@ ExtendedOverlay.prototype.select = function (selected) { return; } + UserActivityLogger.palAction(selected ? "avatar_selected" : "avatar_deselected", this.key); + this.editOverlay({color: color(selected, this.hovering, this.audioLevel)}); if (this.model) { this.model.editOverlay({textures: textures(selected)}); @@ -208,7 +210,6 @@ pal.fromQml.connect(function (message) { // messages are {method, params}, like var id = overlay.key; var selected = ExtendedOverlay.isSelected(id); overlay.select(selected); - UserActivityLogger.palAction("avatar_selected", id); }); HighlightedEntity.clearOverlays(); @@ -233,17 +234,24 @@ pal.fromQml.connect(function (message) { // messages are {method, params}, like case 'refresh': removeOverlays(); populateUserList(); - UserActivityLogger.palAction("refresh"); + UserActivityLogger.palAction("refresh", ""); break; case 'updateGain': data = message.params; - Users.setAvatarGain(data['sessionId'], data['gain']); - UserActivityLogger.palAction("avatar_gain_changed", data['sessionId']); + if (data['isReleased']) { + // isReleased=true happens once at the end of a cycle of dragging + // the slider about, but with same gain as last isReleased=false so + // we don't set the gain in that case, and only here do we want to + // send an analytic event. + UserActivityLogger.palAction("avatar_gain_changed", data['sessionId']); + } else { + Users.setAvatarGain(data['sessionId'], data['gain']); + } break; case 'displayNameUpdate': if (MyAvatar.displayName != message.params) { MyAvatar.displayName = message.params; - UserActivityLogger.palAction("display_name_change"); + UserActivityLogger.palAction("display_name_change", ""); } break; default: