diff --git a/interface/resources/qml/hifi/NameCard.qml b/interface/resources/qml/hifi/NameCard.qml
index fcde5817fc..2b44a72fe3 100644
--- a/interface/resources/qml/hifi/NameCard.qml
+++ b/interface/resources/qml/hifi/NameCard.qml
@@ -79,23 +79,22 @@ Item {
}
StateImage {
id: infoHoverImage;
- visible: avatarImageMouseArea.containsMouse ? true : false;
+ visible: false;
imageURL: "../../images/info-icon-2-state.svg";
size: 32;
buttonState: 1;
anchors.centerIn: parent;
}
MouseArea {
- id: avatarImageMouseArea;
anchors.fill: parent
enabled: selected || isMyCard;
hoverEnabled: enabled
onClicked: {
- /*
- THIS WILL OPEN THE BROWSER TO THE USER'S INFO PAGE!
- I've no idea how to do this yet..
- */
+ userInfoViewer.url = defaultBaseUrl + "/users/" + userName;
+ userInfoViewer.visible = true;
}
+ onEntered: infoHoverImage.visible = true;
+ onExited: infoHoverImage.visible = false;
}
}
@@ -118,15 +117,15 @@ Item {
id: myDisplayName
visible: isMyCard
// Size
- width: parent.width - avatarImage.width - anchors.leftMargin*2 - anchors.rightMargin;
+ width: parent.width - avatarImage.width - anchors.leftMargin - anchors.rightMargin*2;
height: 40
// Anchors
anchors.top: avatarImage.top
anchors.left: avatarImage.right
- anchors.leftMargin: 5;
+ anchors.leftMargin: avatarImage.visible ? 5 : 0;
anchors.rightMargin: 5;
// Style
- color: myDisplayNameMouseArea.containsMouse ? hifi.colors.lightGrayText : hifi.colors.textFieldLightBackground
+ color: hifi.colors.textFieldLightBackground
border.color: hifi.colors.blueHighlight
border.width: 0
TextInput {
@@ -167,7 +166,6 @@ Item {
}
}
MouseArea {
- id: myDisplayNameMouseArea;
anchors.fill: parent
hoverEnabled: true
onClicked: {
@@ -184,6 +182,8 @@ Item {
pal.currentlyEditingDisplayName = true
myDisplayNameText.autoScroll = true;
}
+ onEntered: myDisplayName.color = hifi.colors.lightGrayText;
+ onExited: myDisplayName.color = hifi.colors.textFieldLightBackground;
}
// Edit pencil glyph
HiFiGlyphs {
@@ -204,13 +204,12 @@ Item {
// DisplayName container for others' cards
Item {
id: displayNameContainer
- visible: !isMyCard
+ visible: !isMyCard && pal.activeTab !== "connectionsTab"
// Size
width: parent.width - anchors.leftMargin - avatarImage.width - anchors.leftMargin;
height: displayNameTextPixelSize + 4
// Anchors
- anchors.top: pal.activeTab == "connectionsTab" ? undefined : avatarImage.top;
- anchors.bottom: pal.activeTab == "connectionsTab" ? avatarImage.bottom : undefined;
+ anchors.top: avatarImage.top;
anchors.left: avatarImage.right
anchors.leftMargin: avatarImage.visible ? 5 : 0;
// DisplayName Text for others' cards
@@ -229,14 +228,20 @@ Item {
// Text Positioning
verticalAlignment: Text.AlignTop
// Style
- color: (pal.activeTab == "nearbyTab" && (displayNameTextMouseArea.containsMouse || userNameTextMouseArea.containsMouse))
- ? hifi.colors.blueHighlight : (pal.activeTab == "nearbyTab" ? hifi.colors.darkGray : hifi.colors.greenShadow);
+ color: hifi.colors.darkGray;
MouseArea {
- id: displayNameTextMouseArea;
anchors.fill: parent
enabled: selected && pal.activeTab == "nearbyTab" && thisNameCard.userName !== "";
hoverEnabled: enabled
onClicked: pal.sendToScript({method: 'goToUser', params: thisNameCard.userName});
+ onEntered: {
+ displayNameText.color = hifi.colors.blueHighlight;
+ userNameText.color = hifi.colors.blueHighlight;
+ }
+ onExited: {
+ displayNameText.color = hifi.colors.darkGray
+ userNameText.color = hifi.colors.greenShadow;
+ }
}
}
TextMetrics {
@@ -297,29 +302,36 @@ Item {
FiraSansRegular {
id: userNameText
// Properties
- text: thisNameCard.userName
+ text: thisNameCard.userName === "Unknown user" ? "not logged in" : thisNameCard.userName;
elide: Text.ElideRight
- visible: thisNameCard.displayName
+ visible: thisNameCard.userName !== "";
// Size
width: parent.width
- height: usernameTextPixelSize + 4
+ height: pal.activeTab == "nearbyTab" || isMyCard ? usernameTextPixelSize + 4 : displayNameTextPixelSize + 4
// Anchors
anchors.top: isMyCard ? myDisplayName.bottom : undefined;
- anchors.bottom: isMyCard ? undefined : avatarImage.bottom
+ anchors.bottom: !isMyCard ? avatarImage.bottom : undefined;
anchors.left: avatarImage.right;
anchors.leftMargin: avatarImage.visible ? 5 : 0;
// Text Size
- size: usernameTextPixelSize;
+ size: pal.activeTab == "nearbyTab" || isMyCard ? usernameTextPixelSize : displayNameTextPixelSize;
// Text Positioning
verticalAlignment: Text.AlignBottom
// Style
- color: (pal.activeTab == "nearbyTab" && (displayNameTextMouseArea.containsMouse || userNameTextMouseArea.containsMouse)) ? hifi.colors.blueHighlight : hifi.colors.greenShadow;
+ color: hifi.colors.greenShadow;
MouseArea {
- id: userNameTextMouseArea;
anchors.fill: parent
enabled: selected && pal.activeTab == "nearbyTab" && thisNameCard.userName !== "";
hoverEnabled: enabled
onClicked: pal.sendToScript({method: 'goToUser', params: thisNameCard.userName});
+ onEntered: {
+ displayNameText.color = hifi.colors.blueHighlight;
+ userNameText.color = hifi.colors.blueHighlight;
+ }
+ onExited: {
+ displayNameText.color = hifi.colors.darkGray;
+ userNameText.color = hifi.colors.greenShadow;
+ }
}
}
// VU Meter
diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml
index 5fb11b4e2f..3099087bd4 100644
--- a/interface/resources/qml/hifi/Pal.qml
+++ b/interface/resources/qml/hifi/Pal.qml
@@ -346,13 +346,12 @@ Rectangle {
text: "[?]";
size: connectionsTabSelectorText.size + 6;
font.capitalization: Font.AllUppercase;
- color: connectionsTabSelectorMouseArea.containsMouse ? hifi.colors.redAccent : hifi.colors.redHighlight;
+ color: hifi.colors.redHighlight;
horizontalAlignment: Text.AlignHCenter;
verticalAlignment: Text.AlignVCenter;
anchors.fill: parent;
}
MouseArea {
- id: connectionsTabSelectorMouseArea;
anchors.fill: parent;
hoverEnabled: true;
onClicked: letterbox(hifi.glyphs.question,
@@ -361,6 +360,8 @@ Rectangle {
"When your availability is set to Everyone, Connections can see your username and location.
" +
"Green borders around profile pictures are Friends.
" +
"When your availability is set to Friends, only Friends can see your username and location.");
+ onEntered: connectionsHelpText.color = hifi.colors.redAccent;
+ onExited: connectionsHelpText.color = hifi.colors.redHighlight;
}
}
}
@@ -703,7 +704,6 @@ Rectangle {
}
// This Rectangle refers to the [?] popup button next to "NAMES"
Rectangle {
- id: helpText;
color: hifi.colors.tableBackgroundLight;
width: 20;
height: hifi.dimensions.tableHeaderHeight - 2;
@@ -712,16 +712,16 @@ Rectangle {
anchors.topMargin: 1;
anchors.leftMargin: actionButtonWidth + nearbyNameCardWidth/2 + displayNameHeaderMetrics.width/2 + 6;
RalewayRegular {
+ id: helpText;
text: "[?]";
size: hifi.fontSizes.tableHeading + 2;
font.capitalization: Font.AllUppercase;
- color: helpTextMouseArea.containsMouse ? hifi.colors.baseGrayHighlight : hifi.colors.darkGray;
+ color: hifi.colors.darkGray;
horizontalAlignment: Text.AlignHCenter;
verticalAlignment: Text.AlignVCenter;
anchors.fill: parent;
}
MouseArea {
- id: helpTextMouseArea;
anchors.fill: parent;
hoverEnabled: true;
onClicked: letterbox(hifi.glyphs.question,
@@ -733,6 +733,8 @@ Rectangle {
"If you can see someone's username, you can GoTo them by selecting them in the PAL, then clicking their name.
" +
"
If someone's display name isn't set, a unique session display name is assigned to them.
" +
"
Administrators of this domain can also see the username or machine ID associated with each avatar present.");
+ onEntered: helpText.color = hifi.colors.baseGrayHighlight;
+ onExited: helpText.color = hifi.colors.darkGray;
}
}
// This Rectangle refers to the [?] popup button next to "ADMIN"
@@ -750,19 +752,20 @@ Rectangle {
text: "[?]";
size: hifi.fontSizes.tableHeading + 2;
font.capitalization: Font.AllUppercase;
- color: adminHelpTextMouseArea.containsMouse ? "#94132e" : hifi.colors.redHighlight;
+ color: hifi.colors.redHighlight;
horizontalAlignment: Text.AlignHCenter;
verticalAlignment: Text.AlignVCenter;
anchors.fill: parent;
}
MouseArea {
- id: adminHelpTextMouseArea;
anchors.fill: parent;
hoverEnabled: true;
onClicked: letterbox(hifi.glyphs.question,
"Admin Actions",
"Silence mutes a user's microphone. Silenced users can unmute themselves by clicking "UNMUTE" on their toolbar.
" +
"Ban removes a user from this domain and prevents them from returning. Admins can un-ban users from the Sandbox Domain Settings page.");
+ onEntered: adminHelpText.color = "#94132e";
+ onExited: adminHelpText.color = hifi.colors.redHighlight;
}
}
} // "Nearby" Tab
@@ -860,8 +863,8 @@ Rectangle {
visible: styleData.role === "userName";
profileUrl: (model && model.profileUrl) || "";
imageMaskColor: rowColor(styleData.selected, styleData.row % 2);
- displayName: model ? model.userName : "";
- userName: "";
+ displayName: "";
+ userName: model ? model.userName : "";
connectionStatus : model ? model.connection : "";
selected: styleData.selected;
// Size
@@ -887,13 +890,14 @@ Rectangle {
// Text Positioning
verticalAlignment: Text.AlignVCenter
// Style
- color: connectionsLocationDataMouseArea.containsMouse ? hifi.colors.blueHighlight : hifi.colors.darkGray;
+ color: hifi.colors.darkGray;
MouseArea {
- id: connectionsLocationDataMouseArea;
anchors.fill: parent
hoverEnabled: enabled
enabled: connectionsNameCard.selected && pal.activeTab == "connectionsTab"
onClicked: pal.sendToScript({method: 'goToUser', params: model.userName});
+ onEntered: connectionsLocationData.color = hifi.colors.blueHighlight;
+ onExited: connectionsLocationData.color = hifi.colors.darkGray;
}
}
@@ -934,15 +938,140 @@ Rectangle {
}
} // Keyboard
- /*
- THIS WILL BE THE BROWSER THAT OPENS THE USER'S INFO PAGE!
- I've no idea how to do this yet..
+ Item {
+ id: webViewContainer;
+ anchors.fill: parent;
- HifiTablet.TabletAddressDialog {
- id: userInfoViewer;
- visible: false;
+ Rectangle {
+ id: navigationContainer;
+ visible: userInfoViewer.visible;
+ height: 70;
+ anchors {
+ top: parent.top;
+ left: parent.left;
+ right: parent.right;
+ }
+ color: hifi.colors.faintGray;
+
+ Item {
+ id: backButton
+ anchors {
+ top: parent.top;
+ left: parent.left;
+ }
+ height: parent.height - urlBar.height;
+ width: parent.width/2;
+
+ FiraSansSemiBold {
+ // Properties
+ text: "BACK";
+ elide: Text.ElideRight;
+ // Anchors
+ anchors.fill: parent;
+ // Text Size
+ size: 16;
+ // Text Positioning
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter;
+ // Style
+ color: backButtonMouseArea.containsMouse || !userInfoViewer.canGoBack ? hifi.colors.lightGray : hifi.colors.darkGray;
+ MouseArea {
+ id: backButtonMouseArea;
+ anchors.fill: parent
+ hoverEnabled: enabled
+ onClicked: userInfoViewer.goBack();
+ }
+ }
+ }
+
+ Item {
+ id: closeButtonContainer
+ anchors {
+ top: parent.top;
+ right: parent.right;
+ }
+ height: parent.height - urlBar.height;
+ width: parent.width/2;
+
+ FiraSansSemiBold {
+ id: closeButton;
+ // Properties
+ text: "CLOSE";
+ elide: Text.ElideRight;
+ // Anchors
+ anchors.fill: parent;
+ // Text Size
+ size: 16;
+ // Text Positioning
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter;
+ // Style
+ color: hifi.colors.redHighlight;
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: enabled
+ onClicked: userInfoViewer.visible = false;
+ onEntered: closeButton.color = hifi.colors.redAccent;
+ onExited: closeButton.color = hifi.colors.redHighlight;
+ }
+ }
+ }
+
+ Item {
+ id: urlBar
+ anchors {
+ top: closeButtonContainer.bottom;
+ left: parent.left;
+ right: parent.right;
+ }
+ height: 30;
+ width: parent.width;
+
+ FiraSansRegular {
+ // Properties
+ text: userInfoViewer.url;
+ elide: Text.ElideRight;
+ // Anchors
+ anchors.fill: parent;
+ // Text Size
+ size: 14;
+ // Text Positioning
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter;
+ // Style
+ color: hifi.colors.lightGray;
+ MouseArea {
+ anchors.fill: parent
+ onClicked: userInfoViewer.visible = false;
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ id: webViewBackground;
+ color: "white";
+ visible: userInfoViewer.visible;
+ anchors {
+ top: navigationContainer.bottom;
+ bottom: parent.bottom;
+ left: parent.left;
+ right: parent.right;
+ }
+ }
+
+ HifiControls.WebView {
+ id: userInfoViewer;
+ anchors {
+ top: navigationContainer.bottom;
+ topMargin: 5;
+ bottom: parent.bottom;
+ left: parent.left;
+ right: parent.right;
+ }
+ visible: false;
+ }
}
- */
} // PAL container
@@ -1002,6 +1131,7 @@ Rectangle {
break;
case 'connections':
var data = message.params;
+ console.log('Got connection data: ', JSON.stringify(data));
connectionsUserModelData = data;
sortConnectionsModel();
connectionsLoading.visible = false;
diff --git a/scripts/system/makeUserConnection.js b/scripts/system/makeUserConnection.js
index 50243aa7e4..1b49ed92cb 100644
--- a/scripts/system/makeUserConnection.js
+++ b/scripts/system/makeUserConnection.js
@@ -354,11 +354,18 @@ Messages.subscribe(MESSAGE_CHANNEL);
Messages.messageReceived.connect(messageHandler);
-function makeGripHandler(hand) {
+function makeGripHandler(hand, animate) {
// determine if we are gripping or un-gripping
- return function (value) {
- updateTriggers(value, false, hand);
- };
+ if (animate) {
+ return function(value) {
+ updateTriggers(value, true, hand);
+ };
+
+ } else {
+ return function (value) {
+ updateTriggers(value, false, hand);
+ };
+ }
}
function keyPressEvent(event) {
@@ -377,10 +384,12 @@ friendsMapping.from(Controller.Standard.LeftGrip).peek().to(makeGripHandler(Cont
friendsMapping.from(Controller.Standard.RightGrip).peek().to(makeGripHandler(Controller.Standard.RightHand));
// setup keyboard initiation
-
Controller.keyPressEvent.connect(keyPressEvent);
Controller.keyReleaseEvent.connect(keyReleaseEvent);
+// xbox controller cuz that's important
+friendsMapping.from(Controller.Standard.RB).peek().to(makeGripHandler(Controller.Standard.RightHand, true));
+
// it is easy to forget this and waste a lot of time for nothing
friendsMapping.enable();
diff --git a/scripts/system/pal.js b/scripts/system/pal.js
index ff0fb80c4d..ec0d19962c 100644
--- a/scripts/system/pal.js
+++ b/scripts/system/pal.js
@@ -261,6 +261,7 @@ function fromQml(message) { // messages are {method, params}, like json-rpc. See
UserActivityLogger.palAction("refresh_nearby", "");
break;
case 'refreshConnections':
+ print('Refreshing Connections...');
getConnectionData();
UserActivityLogger.palAction("refresh_connections", "");
break;