diff --git a/linphone-app/resources.qrc b/linphone-app/resources.qrc index a5ff5052e..3143adb80 100644 --- a/linphone-app/resources.qrc +++ b/linphone-app/resources.qrc @@ -175,6 +175,7 @@ ui/modules/Common/Dialog/DialogDescription.qml ui/modules/Common/Dialog/DialogPlus.qml ui/modules/Common/Dialog/DialogTitle.qml + ui/modules/Common/Dialog/FileDialog.qml ui/modules/Common/Form/ActionBar.qml ui/modules/Common/Form/ActionButton.qml ui/modules/Common/Form/ActionSwitch.qml diff --git a/linphone-app/src/utils/Utils.cpp b/linphone-app/src/utils/Utils.cpp index 1ff0e0351..1365e31d6 100644 --- a/linphone-app/src/utils/Utils.cpp +++ b/linphone-app/src/utils/Utils.cpp @@ -604,4 +604,8 @@ QString Utils::getFileChecksum(const QString& filePath){ } } return QString(); +} + +QString Utils::decodePercentFromUtf8(const QString& utf8){ + return QUrl::fromPercentEncoding(utf8.toUtf8()); } \ No newline at end of file diff --git a/linphone-app/src/utils/Utils.hpp b/linphone-app/src/utils/Utils.hpp index 3a435a297..fe95628f6 100644 --- a/linphone-app/src/utils/Utils.hpp +++ b/linphone-app/src/utils/Utils.hpp @@ -66,6 +66,7 @@ public: Q_INVOKABLE QSize getImageSize(const QString& url); Q_INVOKABLE static QPoint getCursorPosition(); Q_INVOKABLE static QString getFileChecksum(const QString& filePath); + Q_INVOKABLE static QString decodePercentFromUtf8(const QString& utf8); //---------------------------------------------------------------------------------- diff --git a/linphone-app/ui/modules/Common/Dialog/FileDialog.qml b/linphone-app/ui/modules/Common/Dialog/FileDialog.qml new file mode 100644 index 000000000..d5d07bcb4 --- /dev/null +++ b/linphone-app/ui/modules/Common/Dialog/FileDialog.qml @@ -0,0 +1,19 @@ +import QtQuick.Dialogs 1.2 as Dialogs + + +import UtilsCpp 1.0 + +Dialogs.FileDialog { + id:mainItem + + function getFileUrls(){ + var decodedFiles = []; + for(var i = 0 ; i < fileDialog.fileUrls.length ; ++i) + decodedFiles.push(UtilsCpp.decodePercentFromUtf8(fileDialog.fileUrls[i])) + return decodedFiles; + } + + function getFileUrl(){ + return UtilsCpp.decodePercentFromUtf8(fileUrl) + } +} \ No newline at end of file diff --git a/linphone-app/ui/modules/Common/Form/Buttons/FileChooserButton.qml b/linphone-app/ui/modules/Common/Form/Buttons/FileChooserButton.qml index 9285e7d43..8f570a92c 100644 --- a/linphone-app/ui/modules/Common/Form/Buttons/FileChooserButton.qml +++ b/linphone-app/ui/modules/Common/Form/Buttons/FileChooserButton.qml @@ -1,5 +1,4 @@ import QtQuick 2.7 -import QtQuick.Dialogs 1.2 import Common 1.0 import Common.Styles 1.0 @@ -77,7 +76,7 @@ TextField { } onAccepted: { - var selectedFile = Utils.getSystemPathFromUri(fileUrl) + var selectedFile = Utils.getSystemPathFromUri(getFileUrl()) textField.selectedFile = selectedFile textField.accepted(selectedFile) diff --git a/linphone-app/ui/modules/Common/Form/DroppableTextArea.qml b/linphone-app/ui/modules/Common/Form/DroppableTextArea.qml index 245149dfb..60487820c 100644 --- a/linphone-app/ui/modules/Common/Form/DroppableTextArea.qml +++ b/linphone-app/ui/modules/Common/Form/DroppableTextArea.qml @@ -1,6 +1,5 @@ import QtQuick 2.7 import QtQuick.Controls 2.2 -import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.12 import Common 1.0 @@ -8,6 +7,8 @@ import Linphone 1.0 import Common.Styles 1.0 import Utils 1.0 +import 'qrc:/ui/scripts/Utils/utils.js' as Utils + // ============================================================================= Item { @@ -45,7 +46,6 @@ Item { return files }, []) - if (files.length > 0) { dropped(files) } @@ -84,7 +84,7 @@ Item { folder: shortcuts.home title: qsTr('fileChooserTitle') - onAccepted: {_emitFiles(fileDialog.fileUrls);fileDialogLoader.active = false} + onAccepted: {_emitFiles(getFileUrls());fileDialogLoader.active = false} onRejected: fileDialogLoader.active = false Component.onCompleted: fileDialog.open() } diff --git a/linphone-app/ui/modules/Common/qmldir b/linphone-app/ui/modules/Common/qmldir index a025a39b3..962a67475 100644 --- a/linphone-app/ui/modules/Common/qmldir +++ b/linphone-app/ui/modules/Common/qmldir @@ -12,10 +12,11 @@ singleton Constants 1.0 Constants/Constants.qml BusyIndicator 1.0 Animations/BusyIndicator.qml +ConfirmDialog 1.0 Dialog/ConfirmDialog.qml DateTimeDialog 1.0 Dialog/DateTimeDialog.qml DialogDescription 1.0 Dialog/DialogDescription.qml -ConfirmDialog 1.0 Dialog/ConfirmDialog.qml DialogPlus 1.0 Dialog/DialogPlus.qml +FileDialog 1.0 Dialog/FileDialog.qml ActionBar 1.0 Form/ActionBar.qml ActionButton 1.0 Form/ActionButton.qml diff --git a/linphone-app/ui/views/App/Main/ContactEdit.qml b/linphone-app/ui/views/App/Main/ContactEdit.qml index d150abf6b..0494654c3 100644 --- a/linphone-app/ui/views/App/Main/ContactEdit.qml +++ b/linphone-app/ui/views/App/Main/ContactEdit.qml @@ -1,6 +1,5 @@ import QtQuick 2.7 import QtQuick.Controls 2.2 -import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.3 import Common 1.0 @@ -75,7 +74,7 @@ ColumnLayout { folder: shortcuts.home title: qsTr('avatarChooserTitle') - onAccepted: Logic.setAvatar(fileUrls[0]) + onAccepted: Logic.setAvatar(getFileUrls()[0]) } // --------------------------------------------------------------------------- diff --git a/linphone-sdk b/linphone-sdk index 3e4c31b64..8dc0b5e60 160000 --- a/linphone-sdk +++ b/linphone-sdk @@ -1 +1 @@ -Subproject commit 3e4c31b645e47b5231a9d9a4a8effc11eecb868b +Subproject commit 8dc0b5e6033c994f3d63c097f1cf1969bba04864