diff --git a/tests/languages/en.ts b/tests/languages/en.ts
index 32656388c..5f0101707 100644
--- a/tests/languages/en.ts
+++ b/tests/languages/en.ts
@@ -26,6 +26,13 @@
Search contact or enter SIP address
+
+ Timeline
+
+ timelineTitle
+ Previously
+
+
contacts
diff --git a/tests/languages/fr.ts b/tests/languages/fr.ts
index 52a2d811b..13f4eaae1 100644
--- a/tests/languages/fr.ts
+++ b/tests/languages/fr.ts
@@ -26,6 +26,13 @@
Rechercher un contact ou entrer une adresse SIP
+
+ Timeline
+
+ timelineTitle
+ Précédemment
+
+
contacts
diff --git a/tests/linphone.pro b/tests/linphone.pro
index a17dda657..59f427563 100644
--- a/tests/linphone.pro
+++ b/tests/linphone.pro
@@ -21,12 +21,15 @@ TRANSLATIONS = \
lupdate_only{
# Each component folder must be added explicitly.
SOURCES = \
+ ui/components/chat/*.qml \
ui/components/collapse/*.qml \
ui/components/contact/*.qml \
ui/components/dialog/*.qml \
ui/components/form/*.qml \
ui/components/misc/*.qml \
+ ui/components/scrollBar/*.qml \
ui/components/select/*.qml \
+ ui/components/timeline/*.qml \
ui/views/*.qml \
ui/views/mainWindow/*.qml
}
diff --git a/tests/resources.qrc b/tests/resources.qrc
index e717cb695..2164cbe29 100644
--- a/tests/resources.qrc
+++ b/tests/resources.qrc
@@ -7,6 +7,10 @@
ui/components/timeline/Timeline.qml
ui/components/select/SelectContact.qml
ui/components/collapse/Collapse.qml
+ ui/components/chat/IncomingMessage.qml
+ ui/components/chat/Chat.qml
+ ui/components/chat/OutgoingMessage.qml
+ ui/components/chat/Message.qml
ui/components/contact/Contact.qml
ui/components/contact/ShortContactDescription.qml
ui/components/contact/Avatar.qml
diff --git a/tests/ui/components/chat/Chat.qml b/tests/ui/components/chat/Chat.qml
new file mode 100644
index 000000000..67608af02
--- /dev/null
+++ b/tests/ui/components/chat/Chat.qml
@@ -0,0 +1,51 @@
+import QtQuick 2.7
+import QtQuick.Controls 2.0
+import QtQuick.Layouts 1.3
+
+import 'qrc:/ui/components/scrollBar'
+
+ListView {
+ ScrollBar.vertical: ForceScrollBar { }
+ boundsBehavior: Flickable.StopAtBounds
+ clip: true
+ highlightRangeMode: ListView.ApplyRange
+ spacing: 10
+
+ model: ListModel {
+ ListElement { $timestamp: 1465389121; $type: 'message'; $message: 'This is it: fefe efzzzzzzzzzz aaaaaaaaa erfeezffeefzfzefzefzezfefez wfef efef e efeffefe fee efefefeefef fefefefefe eff fefefe fefeffww.linphone.org' }
+ ListElement { $type: 'message'; $message: 'Perfect!' }
+ }
+
+ delegate: Rectangle {
+ anchors.left: parent.left
+ anchors.leftMargin: 18
+ anchors.right: parent.right
+ anchors.rightMargin: 18
+
+ // Unable to use `height` property.
+ // The height is given by message height.
+ implicitHeight: layout.height
+ width: parent.width
+
+ RowLayout {
+ id: layout
+
+ // The height is computed with the message height.
+ // Unable to use `height` and `implicitHeight` property.
+ width: parent.width
+
+ Rectangle {
+ Layout.alignment: Qt.AlignTop
+ Layout.preferredHeight: 15
+ Layout.preferredWidth: 42
+ color: 'blue'
+ }
+
+ Loader {
+ Layout.fillWidth: true
+ id: loader
+ source: 'qrc:/ui/components/chat/IncomingMessage.qml'
+ }
+ }
+ }
+}
diff --git a/tests/ui/components/chat/IncomingMessage.qml b/tests/ui/components/chat/IncomingMessage.qml
new file mode 100644
index 000000000..9b529e9f9
--- /dev/null
+++ b/tests/ui/components/chat/IncomingMessage.qml
@@ -0,0 +1,9 @@
+import QtQuick 2.7
+import QtQuick.Layouts 1.3
+
+import 'qrc:/ui/components/contact'
+
+Message {
+ backgroundColor: '#BFBFBF'
+ Layout.fillWidth: true
+}
diff --git a/tests/ui/components/chat/Message.qml b/tests/ui/components/chat/Message.qml
new file mode 100644
index 000000000..40336a23c
--- /dev/null
+++ b/tests/ui/components/chat/Message.qml
@@ -0,0 +1,29 @@
+import QtQuick 2.7
+
+Item {
+ property alias backgroundColor: rectangle.color
+
+ id: container
+ implicitHeight: text.contentHeight + text.padding * 2
+ width: parent.width - text.padding * 2
+
+ Rectangle {
+ id: rectangle
+ height: parent.height
+ radius: 4
+ width: (
+ text.contentWidth < parent.width
+ ? text.contentWidth
+ : parent.width
+ ) + text.padding * 2
+ }
+
+ Text {
+ anchors.left: container.left
+ anchors.right: container.right
+ padding: 8
+ id: text
+ text: $message
+ wrapMode: Text.Wrap
+ }
+}
diff --git a/tests/ui/components/chat/OutgoingMessage.qml b/tests/ui/components/chat/OutgoingMessage.qml
new file mode 100644
index 000000000..f7a90bbd3
--- /dev/null
+++ b/tests/ui/components/chat/OutgoingMessage.qml
@@ -0,0 +1 @@
+import QtQuick 2.7
diff --git a/tests/ui/views/mainWindow/conversation.qml b/tests/ui/views/mainWindow/conversation.qml
index 9e77ab93d..68d8cd89a 100644
--- a/tests/ui/views/mainWindow/conversation.qml
+++ b/tests/ui/views/mainWindow/conversation.qml
@@ -5,6 +5,7 @@ import QtQuick.Layouts 1.3
import 'qrc:/ui/components/contact'
import 'qrc:/ui/components/form'
import 'qrc:/ui/components/scrollBar'
+import 'qrc:/ui/components/chat'
ColumnLayout {
spacing: 0
@@ -112,15 +113,11 @@ ColumnLayout {
border.width: 1
id: messagesArea
- ListView {
+ Chat {
ScrollBar.vertical: ForceScrollBar { }
- anchors.fill: parent
anchors.bottomMargin: messagesArea.border.width
+ anchors.fill: parent
anchors.topMargin: messagesArea.border.width
- boundsBehavior: Flickable.StopAtBounds
- clip: true
- highlightRangeMode: ListView.ApplyRange
- spacing: 1
}
}