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