Merge pull request #12989 from Triplelexx/21774_file_browser

Worklist #21774: Fix Windows.browseAssets() bugs
This commit is contained in:
Dante Ruiz 2018-05-11 08:50:17 -07:00 committed by GitHub
commit 9e9852d67b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -20,15 +20,9 @@ import "../fileDialog"
Item {
// Set from OffscreenUi::assetDialog()
property alias dir: assetTableModel.folder
property alias filter: selectionType.filtersString // FIXME: Currently only supports simple filters, "*.xxx".
property int options // Not used.
property alias filter: selectionType.filtersString
property bool selectDirectory: false
// Not implemented.
//property bool saveDialog: false;
//property bool multiSelect: false;
property bool singleClickNavigate: false
HifiConstants { id: hifi }
@ -85,7 +79,6 @@ Item {
size: 28
width: height
enabled: destination !== ""
//onClicked: d.navigateHome();
onClicked: assetTableModel.folder = destination;
}
}
@ -228,7 +221,9 @@ Item {
function onGetAllMappings(error, map) {
var mappings,
fileTypeFilter,
fileTypeFilters = [],
filterListStart,
filterListEnd,
index,
path,
fileName,
@ -249,7 +244,16 @@ Item {
if (error === "") {
mappings = Object.keys(map);
fileTypeFilter = filter.replace("*", "").toLowerCase();
filter = filter.replace(/\s/g, '');
filterListStart = filter.indexOf("(");
filterListEnd = filter.indexOf(")");
if (filterListStart !== -1 && filterListEnd !== -1) {
var FIRST_EXTENSION_OFFSET = 2;
fileTypeFilters = filter.substring(filterListStart + FIRST_EXTENSION_OFFSET
, filterListEnd).toLowerCase().split("*");
} else if (filter !== "") {
fileTypeFilters[0] = filter.replace("*", "").toLowerCase();
}
for (i = 0, length = mappings.length; i < length; i++) {
index = mappings[i].lastIndexOf("/");
@ -260,7 +264,24 @@ Item {
fileIsDir = false;
isValid = false;
if (fileType.toLowerCase() === fileTypeFilter) {
if (fileTypeFilters.length > 1) {
if (fileTypeFilters.indexOf(fileType.toLowerCase()) !== -1) {
if (path === folder) {
isValid = !selectDirectory;
} else if (path.length > folder.length) {
subDirectory = path.slice(folder.length);
index = subDirectory.indexOf("/");
if (index === subDirectory.lastIndexOf("/")) {
fileName = subDirectory.slice(0, index);
if (subDirectories.indexOf(fileName) === -1) {
fileIsDir = true;
isValid = true;
subDirectories.push(fileName);
}
}
}
}
} else if (fileType.toLowerCase() === fileTypeFilters[0] || fileTypeFilters.length === 0) {
if (path === folder) {
isValid = !selectDirectory;
} else if (path.length > folder.length) {