mirror of
https://github.com/overte-org/overte.git
synced 2025-08-05 00:00:00 +02:00
fix browse asset filtering
added support for list of filters using formatting consistent with other implementations, e.g: (*.png *.wav)
This commit is contained in:
parent
ae0af3ab62
commit
99ad51189c
1 changed files with 33 additions and 7 deletions
|
@ -19,14 +19,14 @@ 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 alias filter: selectionType.filtersString
|
||||
property int options // Not used.
|
||||
|
||||
property bool selectDirectory: false
|
||||
|
||||
// Not implemented.
|
||||
//property bool saveDialog: false;
|
||||
//property bool multiSelect: false;
|
||||
// property bool saveDialog: false;
|
||||
// property bool multiSelect: false;
|
||||
|
||||
property bool singleClickNavigate: false
|
||||
|
||||
|
@ -84,7 +84,7 @@ Item {
|
|||
size: 28
|
||||
width: height
|
||||
enabled: destination !== ""
|
||||
//onClicked: d.navigateHome();
|
||||
// onClicked: d.navigateHome();
|
||||
onClicked: assetTableModel.folder = destination;
|
||||
}
|
||||
}
|
||||
|
@ -227,7 +227,9 @@ Item {
|
|||
|
||||
function onGetAllMappings(error, map) {
|
||||
var mappings,
|
||||
fileTypeFilter,
|
||||
fileTypeFilters = [],
|
||||
filterListStart,
|
||||
filterListEnd,
|
||||
index,
|
||||
path,
|
||||
fileName,
|
||||
|
@ -248,7 +250,14 @@ 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) {
|
||||
fileTypeFilters = filter.substring(filterListStart + 2, filterListEnd).toLowerCase().split("*");
|
||||
} else if (filter !== "") {
|
||||
fileTypeFilters[0] = filter.replace("*", "").toLowerCase();
|
||||
}
|
||||
|
||||
for (i = 0, length = mappings.length; i < length; i++) {
|
||||
index = mappings[i].lastIndexOf("/");
|
||||
|
@ -259,7 +268,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) {
|
||||
|
|
Loading…
Reference in a new issue