Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Network
Kaidan
Commits
9fbb3ac3
Verified
Commit
9fbb3ac3
authored
Jul 17, 2019
by
Filipe Azevedo
Committed by
Linus Jahn
Nov 26, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor file chooser
Task-Id:
#287
Signed-off-by:
Linus Jahn
<
lnj@kaidan.im
>
parent
c2a206cc
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
69 additions
and
54 deletions
+69
-54
src/qml/ChatPage.qml
src/qml/ChatPage.qml
+48
-41
src/qml/elements/FileChooser.qml
src/qml/elements/FileChooser.qml
+2
-3
src/qml/elements/FileChooserDesktop.qml
src/qml/elements/FileChooserDesktop.qml
+12
-8
src/qml/elements/FileChooserMobile.qml
src/qml/elements/FileChooserMobile.qml
+0
-1
src/qml/elements/SendMediaSheet.qml
src/qml/elements/SendMediaSheet.qml
+7
-1
No files found.
src/qml/ChatPage.qml
View file @
9fbb3ac3
...
...
@@ -29,12 +29,15 @@
*/
import
QtQuick
2.6
import
QtQuick
.
Controls
2.0
as
Controls
import
QtQuick
.
Layouts
1.3
import
org
.
kde
.
kirigami
2.2
as
Kirigami
import
QtGraphicalEffects
1.0
import
QtQuick
.
Controls
2.0
as
Controls
import
org
.
kde
.
kirigami
2.2
as
Kirigami
import
im
.
kaidan
.
kaidan
1.0
import
EmojiModel
0.1
import
MediaUtils
0.1
import
"
elements
"
Kirigami.ScrollablePage
{
...
...
@@ -101,60 +104,64 @@ Kirigami.ScrollablePage {
FileChooser
{
id
:
fileChooser
title
:
qsTr
(
"
Select a file
"
)
onAccepted
:
{
sendMediaSheet
.
jid
=
kaidan
.
messageModel
.
chatPartner
sendMediaSheet
.
fileUrl
=
fileUrl
sendMediaSheet
.
open
()
}
onAccepted
:
sendMediaSheet
.
sendFile
(
kaidan
.
messageModel
.
chatPartner
,
fileUrl
)
}
function
openFileDialog
(
filterName
,
filter
)
{
function
openFileDialog
(
filterName
,
filter
,
title
)
{
fileChooser
.
filterName
=
filterName
fileChooser
.
filter
=
filter
if
(
title
!==
undefined
)
fileChooser
.
title
=
title
fileChooser
.
open
()
mediaDrawer
.
close
()
}
Kirigami.OverlayDrawer
{
id
:
mediaDrawer
edge
:
Qt
.
BottomEdge
height
:
Kirigami
.
Units
.
gridUnit
*
8
contentItem
:
RowLayout
{
contentItem
:
ListView
{
id
:
content
Layout.alignment
:
Qt
.
AlignHCenter
orientation
:
Qt
.
Horizontal
Layout.fillHeight
:
true
Layout.fillWidth
:
true
model
:
[
Enums
.
MessageType
.
MessageFile
,
Enums
.
MessageType
.
MessageImage
,
Enums
.
MessageType
.
MessageAudio
,
Enums
.
MessageType
.
MessageVideo
,
Enums
.
MessageType
.
MessageDocument
]
delegate
:
IconButton
{
height
:
ListView
.
view
.
height
width
:
height
buttonText
:
MediaUtilsInstance
.
label
(
model
.
modelData
)
iconSource
:
MediaUtilsInstance
.
iconName
(
model
.
modelData
)
IconButton
{
buttonText
:
qsTr
(
"
Image
"
)
iconSource
:
"
image-jpeg
"
onClicked
:
openFileDialog
(
"
Images
"
,
"
*.jpg *.jpeg *.png *.gif
"
)
Layout.alignment
:
Qt
.
AlignHCenter
}
IconButton
{
buttonText
:
qsTr
(
"
Video
"
)
iconSource
:
"
video-mp4
"
onClicked
:
openFileDialog
(
"
Videos
"
,
"
*.mp4 *.mkv *.avi *.webm
"
)
Layout.alignment
:
Qt
.
AlignHCenter
}
IconButton
{
buttonText
:
qsTr
(
"
Audio
"
)
iconSource
:
"
audio-mp3
"
onClicked
:
openFileDialog
(
"
Audio files
"
,
"
*.mp3 *.wav *.flac *.ogg *.m4a *.mka
"
)
Layout.alignment
:
Qt
.
AlignHCenter
}
IconButton
{
buttonText
:
qsTr
(
"
Document
"
)
iconSource
:
"
x-office-document
"
onClicked
:
openFileDialog
(
"
Documents
"
,
"
*.doc *.docx *.odt
"
)
Layout.alignment
:
Qt
.
AlignHCenter
}
IconButton
{
buttonText
:
qsTr
(
"
Other file
"
)
iconSource
:
"
text-x-plain
"
onClicked
:
openFileDialog
(
"
All files
"
,
"
*
"
)
Layout.alignment
:
Qt
.
AlignHCenter
onClicked
:
{
switch
(
model
.
modelData
)
{
case
Enums
.
MessageType
.
MessageFile
:
case
Enums
.
MessageType
.
MessageImage
:
case
Enums
.
MessageType
.
MessageAudio
:
case
Enums
.
MessageType
.
MessageVideo
:
case
Enums
.
MessageType
.
MessageDocument
:
openFileDialog
(
MediaUtilsInstance
.
filterName
(
model
.
modelData
),
MediaUtilsInstance
.
filter
(
model
.
modelData
),
MediaUtilsInstance
.
label
(
model
.
modelData
))
break
case
Enums
.
MessageType
.
MessageText
:
case
Enums
.
MessageType
.
MessageGeoLocation
:
case
Enums
.
MessageType
.
MessageUnknown
:
break
}
}
}
}
}
...
...
@@ -238,7 +245,7 @@ Kirigami.ScrollablePage {
if
(
Kirigami
.
Settings
.
isMobile
)
mediaDrawer
.
open
()
else
openFileDialog
(
"
All files
"
,
"
(*)
"
)
openFileDialog
(
qsTr
(
"
All files
"
)
,
"
*
"
,
MediaUtilsInstance
.
label
(
Enums
.
MessageType
.
MessageFile
)
)
}
}
...
...
src/qml/elements/FileChooser.qml
View file @
9fbb3ac3
...
...
@@ -58,12 +58,11 @@ Item {
})
}
else
if
(
!
Kirigami
.
Settings
.
isMobile
)
{
var
selectedNameFilter
=
filterName
+
"
(
"
+
filter
+
"
)
"
fileChooserLoader
.
setSource
(
"
FileChooserDesktop.qml
"
,
{
"
selectedNameFilter
"
:
selec
te
d
Name
Filter
,
"
selectedNameFilter
"
:
Qt
.
binding
(
function
()
{
return
fil
te
r
Name
+
"
(
"
+
filter
+
"
)
"
})
,
"
selectFolder
"
:
selectFolder
,
"
title
"
:
title
"
title
"
:
Qt
.
binding
(
function
()
{
return
title
})
})
}
else
{
...
...
src/qml/elements/FileChooserDesktop.qml
View file @
9fbb3ac3
...
...
@@ -31,17 +31,21 @@
import
QtQuick
2.6
import
QtQuick
.
Dialogs
1.2
import
im
.
kaidan
.
kaidan
1.0
import
MediaUtils
0.1
FileDialog
{
id
:
fileDialog
folder
:
shortcuts
.
home
nameFilters
:
[
"
Images (*.jpg *.jpeg *.png *.gif)
"
,
"
Videos (*.mp4 *.mkv *.avi *.webm)
"
,
"
Audio files (*.mp3 *.wav *.flac *.ogg *.m4a *.mka)
"
,
"
Documents (*.doc *.docx *.odt)
"
,
"
All files (*)
"
,
selectedNameFilter
]
nameFilters
:
{
var
filters
=
[]
filters
=
filters
.
concat
(
MediaUtilsInstance
.
namedFilter
(
Enums
.
MessageType
.
MessageImage
).
split
(
"
;;
"
))
filters
=
filters
.
concat
(
MediaUtilsInstance
.
namedFilter
(
Enums
.
MessageType
.
MessageAudio
).
split
(
"
;;
"
))
filters
=
filters
.
concat
(
MediaUtilsInstance
.
namedFilter
(
Enums
.
MessageType
.
MessageVideo
).
split
(
"
;;
"
))
filters
=
filters
.
concat
(
MediaUtilsInstance
.
namedFilter
(
Enums
.
MessageType
.
MessageDocument
).
split
(
"
;;
"
))
filters
=
filters
.
concat
(
MediaUtilsInstance
.
namedFilter
(
Enums
.
MessageType
.
MessageFile
).
split
(
"
;;
"
))
return
filters
}
// TODO: support multiple files
// Currently the problem is that the fileUrls list isn't cleared
}
src/qml/elements/FileChooserMobile.qml
View file @
9fbb3ac3
...
...
@@ -83,7 +83,6 @@ Item {
reserveSpaceForIcon
:
true
icon
:
(
fileIsDir
?
"
folder
"
:
"
text-x-plain
"
)
iconColor
:
"
transparent
"
label
:
fileName
+
(
fileIsDir
?
"
/
"
:
""
)
onClicked
:
{
...
...
src/qml/elements/SendMediaSheet.qml
View file @
9fbb3ac3
...
...
@@ -29,8 +29,8 @@
*/
import
QtQuick
2.6
import
QtQuick
.
Controls
2.0
as
Controls
import
QtQuick
.
Layouts
1.3
import
QtQuick
.
Controls
2.0
as
Controls
import
org
.
kde
.
kirigami
2.0
as
Kirigami
Kirigami.OverlaySheet
{
...
...
@@ -105,4 +105,10 @@ Kirigami.OverlaySheet {
}
}
}
function
sendFile
(
jid
,
url
)
{
fileUrl
=
url
root
.
jid
=
jid
open
()
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment