Merge branch 'master' of https://github.com/highfidelity/hifi into orange

This commit is contained in:
Sam Gateau 2017-06-30 12:02:18 +02:00
commit 8aa5c17bf1
4 changed files with 59 additions and 30 deletions

View file

@ -171,7 +171,7 @@ void DomainMetadata::maybeUpdateUsers() {
if (linkedData) { if (linkedData) {
auto nodeData = static_cast<DomainServerNodeData*>(linkedData); auto nodeData = static_cast<DomainServerNodeData*>(linkedData);
if (!nodeData->wasAssigned()) { if (!nodeData->wasAssigned() && node->getType() == NodeType::Agent) {
++numConnected; ++numConnected;
if (nodeData->getUsername().isEmpty()) { if (nodeData->getUsername().isEmpty()) {

View file

@ -34,6 +34,8 @@ ModalWindow {
HifiConstants { id: hifi } HifiConstants { id: hifi }
property var filesModel: ListModel { }
Settings { Settings {
category: "FileDialog" category: "FileDialog"
property alias width: root.width property alias width: root.width
@ -253,7 +255,9 @@ ModalWindow {
} }
currentSelectionUrl = helper.pathToUrl(fileTableView.model.get(row).filePath); currentSelectionUrl = helper.pathToUrl(fileTableView.model.get(row).filePath);
currentSelectionIsFolder = fileTableView.model.isFolder(row); currentSelectionIsFolder = fileTableView.model !== filesModel ?
fileTableView.model.isFolder(row) :
fileTableModel.isFolder(row);
if (root.selectDirectory || !currentSelectionIsFolder) { if (root.selectDirectory || !currentSelectionIsFolder) {
currentSelection.text = capitalizeDrive(helper.urlToPath(currentSelectionUrl)); currentSelection.text = capitalizeDrive(helper.urlToPath(currentSelectionUrl));
} else { } else {
@ -331,7 +335,12 @@ ModalWindow {
} }
} }
ListModel { Component {
id: filesModelBuilder
ListModel { }
}
QtObject {
id: fileTableModel id: fileTableModel
// FolderListModel has a couple of problems: // FolderListModel has a couple of problems:
@ -383,7 +392,11 @@ ModalWindow {
if (row === -1) { if (row === -1) {
return false; return false;
} }
return get(row).fileIsDir; return filesModel.get(row).fileIsDir;
}
function get(row) {
return filesModel.get(row)
} }
function update() { function update() {
@ -401,7 +414,7 @@ ModalWindow {
rows = 0, rows = 0,
i; i;
clear(); var newFilesModel = filesModelBuilder.createObject(root);
comparisonFunction = sortOrder === Qt.AscendingOrder comparisonFunction = sortOrder === Qt.AscendingOrder
? function(a, b) { return a < b; } ? function(a, b) { return a < b; }
@ -423,7 +436,7 @@ ModalWindow {
while (lower < upper) { while (lower < upper) {
middle = Math.floor((lower + upper) / 2); middle = Math.floor((lower + upper) / 2);
var lessThan; var lessThan;
if (comparisonFunction(sortValue, get(middle)[sortField])) { if (comparisonFunction(sortValue, newFilesModel.get(middle)[sortField])) {
lessThan = true; lessThan = true;
upper = middle; upper = middle;
} else { } else {
@ -432,7 +445,7 @@ ModalWindow {
} }
} }
insert(lower, { newFilesModel.insert(lower, {
fileName: fileName, fileName: fileName,
fileModified: (fileIsDir ? new Date(0) : model.getItem(i, "fileModified")), fileModified: (fileIsDir ? new Date(0) : model.getItem(i, "fileModified")),
fileSize: model.getItem(i, "fileSize"), fileSize: model.getItem(i, "fileSize"),
@ -443,6 +456,7 @@ ModalWindow {
rows++; rows++;
} }
filesModel = newFilesModel;
d.clearSelection(); d.clearSelection();
} }
@ -469,7 +483,7 @@ ModalWindow {
sortIndicatorOrder: Qt.AscendingOrder sortIndicatorOrder: Qt.AscendingOrder
sortIndicatorVisible: true sortIndicatorVisible: true
model: fileTableModel model: filesModel
function updateSort() { function updateSort() {
model.sortOrder = sortIndicatorOrder; model.sortOrder = sortIndicatorOrder;
@ -561,11 +575,12 @@ ModalWindow {
} }
function navigateToCurrentRow() { function navigateToCurrentRow() {
var currentModel = fileTableView.model !== filesModel ? fileTableView.model : fileTableModel
var row = fileTableView.currentRow var row = fileTableView.currentRow
var isFolder = model.isFolder(row); var isFolder = currentModel.isFolder(row);
var file = model.get(row).filePath; var file = currentModel.get(row).filePath;
if (isFolder) { if (isFolder) {
fileTableView.model.folder = helper.pathToUrl(file); currentModel.folder = helper.pathToUrl(file);
} else { } else {
okAction.trigger(); okAction.trigger();
} }
@ -580,7 +595,8 @@ ModalWindow {
var newPrefix = prefix + event.text.toLowerCase(); var newPrefix = prefix + event.text.toLowerCase();
var matchedIndex = -1; var matchedIndex = -1;
for (var i = 0; i < model.count; ++i) { for (var i = 0; i < model.count; ++i) {
var name = model.get(i).fileName.toLowerCase(); var name = model !== filesModel ? model.get(i).fileName.toLowerCase() :
filesModel.get(i).fileName.toLowerCase();
if (0 === name.indexOf(newPrefix)) { if (0 === name.indexOf(newPrefix)) {
matchedIndex = i; matchedIndex = i;
break; break;

View file

@ -25,11 +25,14 @@ import "fileDialog"
//FIXME implement shortcuts for favorite location //FIXME implement shortcuts for favorite location
TabletModalWindow { TabletModalWindow {
id: root id: root
anchors.fill: parent anchors.fill: parent
width: parent.width width: parent.width
height: parent.height height: parent.height
HifiConstants { id: hifi } HifiConstants { id: hifi }
property var filesModel: ListModel { }
Settings { Settings {
category: "FileDialog" category: "FileDialog"
property alias width: root.width property alias width: root.width
@ -250,7 +253,9 @@ TabletModalWindow {
} }
currentSelectionUrl = helper.pathToUrl(fileTableView.model.get(row).filePath); currentSelectionUrl = helper.pathToUrl(fileTableView.model.get(row).filePath);
currentSelectionIsFolder = fileTableView.model.isFolder(row); currentSelectionIsFolder = fileTableView.model !== filesModel ?
fileTableView.model.isFolder(row) :
fileTableModel.isFolder(row);
if (root.selectDirectory || !currentSelectionIsFolder) { if (root.selectDirectory || !currentSelectionIsFolder) {
currentSelection.text = capitalizeDrive(helper.urlToPath(currentSelectionUrl)); currentSelection.text = capitalizeDrive(helper.urlToPath(currentSelectionUrl));
} else { } else {
@ -288,7 +293,7 @@ TabletModalWindow {
} }
onFolderChanged: { onFolderChanged: {
fileTableModel.update(); // Update once the data from the folder change is available. fileTableModel.update()
} }
function getItem(index, field) { function getItem(index, field) {
@ -328,7 +333,12 @@ TabletModalWindow {
} }
} }
ListModel { Component {
id: filesModelBuilder
ListModel { }
}
QtObject {
id: fileTableModel id: fileTableModel
// FolderListModel has a couple of problems: // FolderListModel has a couple of problems:
@ -359,17 +369,16 @@ TabletModalWindow {
} }
onFolderChanged: { onFolderChanged: {
if (folder === rootFolder) { if (folder === rootFolder) {
model = driveListModel; model = driveListModel;
helper.monitorDirectory(""); helper.monitorDirectory("");
update(); update();
} else { } else {
var needsUpdate = model === driveListModel && folder === folderListModel.folder; var needsUpdate = model === driveListModel && folder === folderListModel.folder;
model = folderListModel; model = folderListModel;
folderListModel.folder = folder; folderListModel.folder = folder;
helper.monitorDirectory(helper.urlToPath(folder)); helper.monitorDirectory(helper.urlToPath(folder));
if (needsUpdate) { if (needsUpdate) {
update(); update();
} }
@ -380,7 +389,11 @@ TabletModalWindow {
if (row === -1) { if (row === -1) {
return false; return false;
} }
return get(row).fileIsDir; return filesModel.get(row).fileIsDir;
}
function get(row) {
return filesModel.get(row)
} }
function update() { function update() {
@ -398,7 +411,7 @@ TabletModalWindow {
rows = 0, rows = 0,
i; i;
clear(); var newFilesModel = filesModelBuilder.createObject(root);
comparisonFunction = sortOrder === Qt.AscendingOrder comparisonFunction = sortOrder === Qt.AscendingOrder
? function(a, b) { return a < b; } ? function(a, b) { return a < b; }
@ -420,7 +433,7 @@ TabletModalWindow {
while (lower < upper) { while (lower < upper) {
middle = Math.floor((lower + upper) / 2); middle = Math.floor((lower + upper) / 2);
var lessThan; var lessThan;
if (comparisonFunction(sortValue, get(middle)[sortField])) { if (comparisonFunction(sortValue, newFilesModel.get(middle)[sortField])) {
lessThan = true; lessThan = true;
upper = middle; upper = middle;
} else { } else {
@ -429,7 +442,7 @@ TabletModalWindow {
} }
} }
insert(lower, { newFilesModel.insert(lower, {
fileName: fileName, fileName: fileName,
fileModified: (fileIsDir ? new Date(0) : model.getItem(i, "fileModified")), fileModified: (fileIsDir ? new Date(0) : model.getItem(i, "fileModified")),
fileSize: model.getItem(i, "fileSize"), fileSize: model.getItem(i, "fileSize"),
@ -440,6 +453,7 @@ TabletModalWindow {
rows++; rows++;
} }
filesModel = newFilesModel;
d.clearSelection(); d.clearSelection();
} }
@ -467,7 +481,7 @@ TabletModalWindow {
sortIndicatorOrder: Qt.AscendingOrder sortIndicatorOrder: Qt.AscendingOrder
sortIndicatorVisible: true sortIndicatorVisible: true
model: fileTableModel model: filesModel
function updateSort() { function updateSort() {
model.sortOrder = sortIndicatorOrder; model.sortOrder = sortIndicatorOrder;
@ -559,11 +573,12 @@ TabletModalWindow {
} }
function navigateToCurrentRow() { function navigateToCurrentRow() {
var currentModel = fileTableView.model !== filesModel ? fileTableView.model : fileTableModel
var row = fileTableView.currentRow var row = fileTableView.currentRow
var isFolder = model.isFolder(row); var isFolder = currentModel.isFolder(row);
var file = model.get(row).filePath; var file = currentModel.get(row).filePath;
if (isFolder) { if (isFolder) {
fileTableView.model.folder = helper.pathToUrl(file); currentModel.folder = helper.pathToUrl(file);
} else { } else {
okAction.trigger(); okAction.trigger();
} }
@ -578,7 +593,8 @@ TabletModalWindow {
var newPrefix = prefix + event.text.toLowerCase(); var newPrefix = prefix + event.text.toLowerCase();
var matchedIndex = -1; var matchedIndex = -1;
for (var i = 0; i < model.count; ++i) { for (var i = 0; i < model.count; ++i) {
var name = model.get(i).fileName.toLowerCase(); var name = model !== filesModel ? model.get(i).fileName.toLowerCase() :
filesModel.get(i).fileName.toLowerCase();
if (0 === name.indexOf(newPrefix)) { if (0 === name.indexOf(newPrefix)) {
matchedIndex = i; matchedIndex = i;
break; break;

View file

@ -1978,7 +1978,7 @@ JointData jointDataFromJsonValue(const QJsonValue& json) {
result.rotation = quatFromJsonValue(array[0]); result.rotation = quatFromJsonValue(array[0]);
result.rotationSet = true; result.rotationSet = true;
result.translation = vec3FromJsonValue(array[1]); result.translation = vec3FromJsonValue(array[1]);
result.translationSet = false; result.translationSet = true;
} }
return result; return result;
} }
@ -2146,12 +2146,9 @@ void AvatarData::fromJson(const QJsonObject& json, bool useFrameSkeleton) {
QVector<JointData> jointArray; QVector<JointData> jointArray;
QJsonArray jointArrayJson = json[JSON_AVATAR_JOINT_ARRAY].toArray(); QJsonArray jointArrayJson = json[JSON_AVATAR_JOINT_ARRAY].toArray();
jointArray.reserve(jointArrayJson.size()); jointArray.reserve(jointArrayJson.size());
int i = 0;
for (const auto& jointJson : jointArrayJson) { for (const auto& jointJson : jointArrayJson) {
auto joint = jointDataFromJsonValue(jointJson); auto joint = jointDataFromJsonValue(jointJson);
jointArray.push_back(joint); jointArray.push_back(joint);
setJointData(i, joint.rotation, joint.translation);
i++;
} }
setRawJointData(jointArray); setRawJointData(jointArray);
} }