aboutsummaryrefslogtreecommitdiff
path: root/qml/ChatlistPage.qml
diff options
context:
space:
mode:
Diffstat (limited to 'qml/ChatlistPage.qml')
-rw-r--r--qml/ChatlistPage.qml218
1 files changed, 108 insertions, 110 deletions
diff --git a/qml/ChatlistPage.qml b/qml/ChatlistPage.qml
index 59d178d..2ee7e83 100644
--- a/qml/ChatlistPage.qml
+++ b/qml/ChatlistPage.qml
@@ -1,160 +1,135 @@
+import DeltaChat 1.0
+import QtQml.Models 2.1
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
-import QtQml.Models 2.1
import org.kde.kirigami 2.13 as Kirigami
-import DeltaChat 1.0
-
Kirigami.ScrollablePage {
- title: qsTr("Chats")
id: chatlistPage
required property DcContext context
required property DcAccountsEventEmitter eventEmitter
-
property bool archivedOnly: false
- Connections {
- target: chatlistPage.eventEmitter
-
- function onMessagesChanged() {
- // Reload chatlist
- updateChatlist();
- }
- function onMessagesNoticed() {
- // Reload chatlist
- updateChatlist();
- }
- function onChatModified() {
- // Reload chatlist
- updateChatlist();
- }
- }
-
- Component.onCompleted: {
- updateChatlist()
- }
-
- header: Kirigami.SearchField {
- id: searchField
-
- onTextChanged: chatlistPage.updateChatlist()
- }
-
- mainAction: Kirigami.Action {
- text: "New chat"
- iconName: "list-add"
- onTriggered: {
- let newChatPageComponent = Qt.createComponent("qrc:/qml/NewChatPage.qml")
- if (newChatPageComponent.status == Component.Ready) {
- let newChatPage = newChatPageComponent.createObject(pageStack, {context: chatlistPage.context})
- pageStack.layers.push(newChatPage)
- } else if (newChatPageComponent.status == Component.Error) {
- console.log("Error loading new chat page: " + newChatPageComponent.errorString())
- }
- }
- }
-
- contextualActions: [
- Kirigami.Action {
- text: "Settings"
- iconName: "configure"
- onTriggered: {
- let settingsPageComponent = Qt.createComponent("qrc:/qml/SettingsPage.qml")
- if (settingsPageComponent.status == Component.Ready) {
- let settingsPage = settingsPageComponent.createObject(pageStack, {context: chatlistPage.context})
- pageStack.layers.push(settingsPage)
- } else {
- console.log("Can't open Settings page")
- }
- }
- }
- ]
-
- ListModel {
- id: chatlistModel
- }
-
function chatClicked(chatId) {
if (chatId > 9) {
// chatId > DC_CHAT_ID_LAST_SPECIAL
- loadChat(chatId)
-
+ loadChat(chatId);
} else if (chatId == 6) {
- chatlistPage.archivedOnly = true
- chatlist.currentIndex = -1
+ chatlistPage.archivedOnly = true;
+ chatlist.currentIndex = -1;
updateChatlist();
}
}
function loadChat(chatId) {
- chatlistPage.context.marknoticedChat(chatId)
-
- console.log("Selected chat " + chatId)
-
- console.log("Depth is " + pageStack.depth)
- let chatPageComponent = Qt.createComponent("qrc:/qml/ChatPage.qml")
+ chatlistPage.context.marknoticedChat(chatId);
+ console.log("Selected chat " + chatId);
+ console.log("Depth is " + pageStack.depth);
+ let chatPageComponent = Qt.createComponent("qrc:/qml/ChatPage.qml");
if (chatPageComponent.status == Component.Ready) {
- let myPage = chatPageComponent.createObject(pageStack, {chatId: chatId, context: chatlistPage.context, eventEmitter: chatlistPage.eventEmitter})
+ let myPage = chatPageComponent.createObject(pageStack, {
+ "chatId": chatId,
+ "context": chatlistPage.context,
+ "eventEmitter": chatlistPage.eventEmitter
+ });
if (pageStack.depth == 1) {
- pageStack.push(myPage)
+ pageStack.push(myPage);
} else if (pageStack.depth == 2) {
- pageStack.currentIndex = 1
- pageStack.replace(myPage)
+ pageStack.currentIndex = 1;
+ pageStack.replace(myPage);
}
} else if (chatPageComponent.status == Component.Error) {
- console.log("Error loading chat page: " + chatPageComponent.errorString())
+ console.log("Error loading chat page: " + chatPageComponent.errorString());
}
}
function updateChatlist() {
- let chatlist = chatlistPage.context.getChatlist(chatlistPage.archivedOnly ? 1 : 0,
- searchField.text)
-
// Merge new chatlist with existing one.
// To preserve selected item, we do not simply clear and fill
// the model from scratch.
+ let chatlist = chatlistPage.context.getChatlist(chatlistPage.archivedOnly ? 1 : 0, searchField.text);
for (let i = 0; i < chatlist.getChatCount(); i++) {
- const summary = chatlist.getSummary(i)
- const chatId = chatlist.getChatId(i)
- const chat = chatlistPage.context.getChat(chatId)
- const profileImage = chat.getProfileImage()
-
+ const summary = chatlist.getSummary(i);
+ const chatId = chatlist.getChatId(i);
+ const chat = chatlistPage.context.getChat(chatId);
+ const profileImage = chat.getProfileImage();
const item = {
- chatId: chatId,
- msgId: chatlist.getMsgId(i),
- username: (summary.text1 != "" ? summary.text1 + ": " : "") + summary.text2,
- avatarSource: profileImage ? "file:" + profileImage : "",
- chatName: chat.name,
- freshMsgCnt: chatlistPage.context.getFreshMsgCnt(chatId),
- isContactRequest: chat.isContactRequest,
- visibility: chat.visibility
- }
-
+ "chatId": chatId,
+ "msgId": chatlist.getMsgId(i),
+ "username": (summary.text1 != "" ? summary.text1 + ": " : "") + summary.text2,
+ "avatarSource": profileImage ? "file:" + profileImage : "",
+ "chatName": chat.name,
+ "freshMsgCnt": chatlistPage.context.getFreshMsgCnt(chatId),
+ "isContactRequest": chat.isContactRequest,
+ "visibility": chat.visibility
+ };
let j;
for (j = i; j < chatlistModel.count; j++) {
if (chatlistModel.get(j).chatId == chatId) {
// This chat was already in the chatlist,
// move it to the new place and update.
- chatlistModel.move(j, i, 1)
- chatlistModel.set(i, item)
- break
+ chatlistModel.move(j, i, 1);
+ chatlistModel.set(i, item);
+ break;
}
}
-
// This chat is new, insert it.
- if (j == chatlistModel.count) {
- chatlistModel.insert(i, item)
+ if (j == chatlistModel.count)
+ chatlistModel.insert(i, item);
+
+ }
+ // Remove any chats that are not present in the new chatlist.
+ if (chatlistModel.count > chatlist.getChatCount())
+ chatlistModel.remove(chatlist.getChatCount(), chatlistModel.count - chatlist.getChatCount());
+
+ }
+
+ title: qsTr("Chats")
+ Component.onCompleted: {
+ updateChatlist();
+ }
+ contextualActions: [
+ Kirigami.Action {
+ text: "Settings"
+ iconName: "configure"
+ onTriggered: {
+ let settingsPageComponent = Qt.createComponent("qrc:/qml/SettingsPage.qml");
+ if (settingsPageComponent.status == Component.Ready) {
+ let settingsPage = settingsPageComponent.createObject(pageStack, {
+ "context": chatlistPage.context
+ });
+ pageStack.layers.push(settingsPage);
+ } else {
+ console.log("Can't open Settings page");
+ }
}
}
+ ]
- // Remove any chats that are not present in the new chatlist.
- if (chatlistModel.count > chatlist.getChatCount()) {
- chatlistModel.remove(chatlist.getChatCount(),
- chatlistModel.count - chatlist.getChatCount())
+ Connections {
+ function onMessagesChanged() {
+ // Reload chatlist
+ updateChatlist();
+ }
+
+ function onMessagesNoticed() {
+ // Reload chatlist
+ updateChatlist();
+ }
+
+ function onChatModified() {
+ // Reload chatlist
+ updateChatlist();
}
+
+ target: chatlistPage.eventEmitter
+ }
+
+ ListModel {
+ id: chatlistModel
}
ListView {
@@ -172,9 +147,32 @@ Kirigami.ScrollablePage {
freshMsgCnt: model.freshMsgCnt
isContactRequest: model.isContactRequest
isPinned: model.visibility == 2
-
width: chatlist.width
onClicked: chatClicked(model.chatId)
}
+
}
+
+ header: Kirigami.SearchField {
+ id: searchField
+
+ onTextChanged: chatlistPage.updateChatlist()
+ }
+
+ mainAction: Kirigami.Action {
+ text: "New chat"
+ iconName: "list-add"
+ onTriggered: {
+ let newChatPageComponent = Qt.createComponent("qrc:/qml/NewChatPage.qml");
+ if (newChatPageComponent.status == Component.Ready) {
+ let newChatPage = newChatPageComponent.createObject(pageStack, {
+ "context": chatlistPage.context
+ });
+ pageStack.layers.push(newChatPage);
+ } else if (newChatPageComponent.status == Component.Error) {
+ console.log("Error loading new chat page: " + newChatPageComponent.errorString());
+ }
+ }
+ }
+
}