mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 23:40:11 +02:00
commit
ae5d056ca0
4 changed files with 50 additions and 42 deletions
|
@ -331,6 +331,7 @@ ModalWindow {
|
||||||
}
|
}
|
||||||
|
|
||||||
onFolderChanged: {
|
onFolderChanged: {
|
||||||
|
d.clearSelection();
|
||||||
fileTableModel.update(); // Update once the data from the folder change is available.
|
fileTableModel.update(); // Update once the data from the folder change is available.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -450,7 +451,7 @@ ModalWindow {
|
||||||
rows = 0,
|
rows = 0,
|
||||||
i;
|
i;
|
||||||
|
|
||||||
var newFilesModel = filesModelBuilder.createObject(root);
|
filesModel = filesModelBuilder.createObject(root);
|
||||||
|
|
||||||
comparisonFunction = sortOrder === Qt.AscendingOrder
|
comparisonFunction = sortOrder === Qt.AscendingOrder
|
||||||
? function(a, b) { return a < b; }
|
? function(a, b) { return a < b; }
|
||||||
|
@ -472,7 +473,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, newFilesModel.get(middle)[sortField])) {
|
if (comparisonFunction(sortValue, filesModel.get(middle)[sortField])) {
|
||||||
lessThan = true;
|
lessThan = true;
|
||||||
upper = middle;
|
upper = middle;
|
||||||
} else {
|
} else {
|
||||||
|
@ -481,7 +482,7 @@ ModalWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
newFilesModel.insert(lower, {
|
filesModel.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"),
|
||||||
|
@ -492,9 +493,6 @@ ModalWindow {
|
||||||
|
|
||||||
rows++;
|
rows++;
|
||||||
}
|
}
|
||||||
filesModel = newFilesModel;
|
|
||||||
|
|
||||||
d.clearSelection();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -332,6 +332,7 @@ ModalWindow {
|
||||||
}
|
}
|
||||||
|
|
||||||
onFolderChanged: {
|
onFolderChanged: {
|
||||||
|
d.clearSelection();
|
||||||
fileTableModel.update(); // Update once the data from the folder change is available.
|
fileTableModel.update(); // Update once the data from the folder change is available.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -451,7 +452,7 @@ ModalWindow {
|
||||||
rows = 0,
|
rows = 0,
|
||||||
i;
|
i;
|
||||||
|
|
||||||
var newFilesModel = filesModelBuilder.createObject(root);
|
filesModel = filesModelBuilder.createObject(root);
|
||||||
|
|
||||||
comparisonFunction = sortOrder === Qt.AscendingOrder
|
comparisonFunction = sortOrder === Qt.AscendingOrder
|
||||||
? function(a, b) { return a < b; }
|
? function(a, b) { return a < b; }
|
||||||
|
@ -473,7 +474,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, newFilesModel.get(middle)[sortField])) {
|
if (comparisonFunction(sortValue, filesModel.get(middle)[sortField])) {
|
||||||
lessThan = true;
|
lessThan = true;
|
||||||
upper = middle;
|
upper = middle;
|
||||||
} else {
|
} else {
|
||||||
|
@ -482,7 +483,7 @@ ModalWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
newFilesModel.insert(lower, {
|
filesModel.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"),
|
||||||
|
@ -493,9 +494,6 @@ ModalWindow {
|
||||||
|
|
||||||
rows++;
|
rows++;
|
||||||
}
|
}
|
||||||
filesModel = newFilesModel;
|
|
||||||
|
|
||||||
d.clearSelection();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -295,7 +295,8 @@ TabletModalWindow {
|
||||||
}
|
}
|
||||||
|
|
||||||
onFolderChanged: {
|
onFolderChanged: {
|
||||||
fileTableModel.update()
|
d.clearSelection();
|
||||||
|
fileTableModel.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
function getItem(index, field) {
|
function getItem(index, field) {
|
||||||
|
@ -413,7 +414,7 @@ TabletModalWindow {
|
||||||
rows = 0,
|
rows = 0,
|
||||||
i;
|
i;
|
||||||
|
|
||||||
var newFilesModel = filesModelBuilder.createObject(root);
|
filesModel = filesModelBuilder.createObject(root);
|
||||||
|
|
||||||
comparisonFunction = sortOrder === Qt.AscendingOrder
|
comparisonFunction = sortOrder === Qt.AscendingOrder
|
||||||
? function(a, b) { return a < b; }
|
? function(a, b) { return a < b; }
|
||||||
|
@ -435,7 +436,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, newFilesModel.get(middle)[sortField])) {
|
if (comparisonFunction(sortValue, filesModel.get(middle)[sortField])) {
|
||||||
lessThan = true;
|
lessThan = true;
|
||||||
upper = middle;
|
upper = middle;
|
||||||
} else {
|
} else {
|
||||||
|
@ -444,7 +445,7 @@ TabletModalWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
newFilesModel.insert(lower, {
|
filesModel.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"),
|
||||||
|
@ -455,9 +456,6 @@ TabletModalWindow {
|
||||||
|
|
||||||
rows++;
|
rows++;
|
||||||
}
|
}
|
||||||
filesModel = newFilesModel;
|
|
||||||
|
|
||||||
d.clearSelection();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,12 @@
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
//
|
||||||
|
|
||||||
import QtQuick 2.5
|
import QtQuick 2.7
|
||||||
import QtQuick.Controls 1.4
|
|
||||||
import Qt.labs.folderlistmodel 2.1
|
import Qt.labs.folderlistmodel 2.1
|
||||||
import Qt.labs.settings 1.0
|
import Qt.labs.settings 1.0
|
||||||
import QtQuick.Controls.Styles 1.4
|
|
||||||
import QtQuick.Dialogs 1.2 as OriginalDialogs
|
import QtQuick.Dialogs 1.2 as OriginalDialogs
|
||||||
|
import QtQuick.Controls 1.4 as QQC1
|
||||||
|
import QtQuick.Controls 2.3
|
||||||
|
|
||||||
import ".."
|
import ".."
|
||||||
import "../../../controls-uit"
|
import "../../../controls-uit"
|
||||||
|
@ -30,6 +30,8 @@ Rectangle {
|
||||||
|
|
||||||
color: hifi.colors.baseGray;
|
color: hifi.colors.baseGray;
|
||||||
|
|
||||||
|
property var filesModel: ListModel { }
|
||||||
|
|
||||||
Settings {
|
Settings {
|
||||||
category: "FileDialog"
|
category: "FileDialog"
|
||||||
property alias width: root.width
|
property alias width: root.width
|
||||||
|
@ -149,7 +151,7 @@ Rectangle {
|
||||||
|
|
||||||
ComboBox {
|
ComboBox {
|
||||||
id: pathSelector
|
id: pathSelector
|
||||||
anchors {
|
anchors {
|
||||||
top: parent.top
|
top: parent.top
|
||||||
topMargin: hifi.dimensions.contentMargin.y
|
topMargin: hifi.dimensions.contentMargin.y
|
||||||
left: navControls.right
|
left: navControls.right
|
||||||
|
@ -247,7 +249,9 @@ Rectangle {
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
||||||
|
@ -287,6 +291,7 @@ Rectangle {
|
||||||
}
|
}
|
||||||
|
|
||||||
onFolderChanged: {
|
onFolderChanged: {
|
||||||
|
d.clearSelection();
|
||||||
fileTableModel.update(); // Update once the data from the folder change is available.
|
fileTableModel.update(); // Update once the data from the folder change is available.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -327,7 +332,12 @@ Rectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ListModel {
|
Component {
|
||||||
|
id: filesModelBuilder
|
||||||
|
ListModel { }
|
||||||
|
}
|
||||||
|
|
||||||
|
QtObject {
|
||||||
id: fileTableModel
|
id: fileTableModel
|
||||||
|
|
||||||
// FolderListModel has a couple of problems:
|
// FolderListModel has a couple of problems:
|
||||||
|
@ -379,7 +389,11 @@ Rectangle {
|
||||||
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() {
|
||||||
|
@ -397,7 +411,7 @@ Rectangle {
|
||||||
rows = 0,
|
rows = 0,
|
||||||
i;
|
i;
|
||||||
|
|
||||||
clear();
|
filesModel = filesModelBuilder.createObject(root);
|
||||||
|
|
||||||
comparisonFunction = sortOrder === Qt.AscendingOrder
|
comparisonFunction = sortOrder === Qt.AscendingOrder
|
||||||
? function(a, b) { return a < b; }
|
? function(a, b) { return a < b; }
|
||||||
|
@ -419,7 +433,7 @@ Rectangle {
|
||||||
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, filesModel.get(middle)[sortField])) {
|
||||||
lessThan = true;
|
lessThan = true;
|
||||||
upper = middle;
|
upper = middle;
|
||||||
} else {
|
} else {
|
||||||
|
@ -428,7 +442,7 @@ Rectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
insert(lower, {
|
filesModel.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"),
|
||||||
|
@ -439,8 +453,6 @@ Rectangle {
|
||||||
|
|
||||||
rows++;
|
rows++;
|
||||||
}
|
}
|
||||||
|
|
||||||
d.clearSelection();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -465,12 +477,12 @@ Rectangle {
|
||||||
sortIndicatorOrder: Qt.AscendingOrder
|
sortIndicatorOrder: Qt.AscendingOrder
|
||||||
sortIndicatorVisible: true
|
sortIndicatorVisible: true
|
||||||
|
|
||||||
model: fileTableModel
|
model: filesModel
|
||||||
|
|
||||||
function updateSort() {
|
function updateSort() {
|
||||||
model.sortOrder = sortIndicatorOrder;
|
fileTableModel.sortOrder = sortIndicatorOrder;
|
||||||
model.sortColumn = sortIndicatorColumn;
|
fileTableModel.sortColumn = sortIndicatorColumn;
|
||||||
model.update();
|
fileTableModel.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
onSortIndicatorColumnChanged: { updateSort(); }
|
onSortIndicatorColumnChanged: { updateSort(); }
|
||||||
|
@ -522,7 +534,7 @@ Rectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TableViewColumn {
|
QQC1.TableViewColumn {
|
||||||
id: fileNameColumn
|
id: fileNameColumn
|
||||||
role: "fileName"
|
role: "fileName"
|
||||||
title: "Name"
|
title: "Name"
|
||||||
|
@ -530,7 +542,7 @@ Rectangle {
|
||||||
movable: false
|
movable: false
|
||||||
resizable: true
|
resizable: true
|
||||||
}
|
}
|
||||||
TableViewColumn {
|
QQC1.TableViewColumn {
|
||||||
id: fileMofifiedColumn
|
id: fileMofifiedColumn
|
||||||
role: "fileModified"
|
role: "fileModified"
|
||||||
title: "Date"
|
title: "Date"
|
||||||
|
@ -539,7 +551,7 @@ Rectangle {
|
||||||
resizable: true
|
resizable: true
|
||||||
visible: !selectDirectory
|
visible: !selectDirectory
|
||||||
}
|
}
|
||||||
TableViewColumn {
|
QQC1.TableViewColumn {
|
||||||
role: "fileSize"
|
role: "fileSize"
|
||||||
title: "Size"
|
title: "Size"
|
||||||
width: fileTableView.width - fileNameColumn.width - fileMofifiedColumn.width
|
width: fileTableView.width - fileNameColumn.width - fileMofifiedColumn.width
|
||||||
|
@ -554,11 +566,12 @@ Rectangle {
|
||||||
}
|
}
|
||||||
|
|
||||||
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();
|
||||||
}
|
}
|
||||||
|
@ -573,7 +586,8 @@ Rectangle {
|
||||||
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;
|
||||||
|
|
Loading…
Reference in a new issue