From e5a75ad7e77d22d46d976ed225f1a66c48c3a81e Mon Sep 17 00:00:00 2001 From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Mon, 31 Aug 2020 14:54:11 -0400 Subject: [PATCH] mainview: add account presence cycle to account combo box delegates Make account presence cycle a component, and remove redundant update function Gitlab: #23 Change-Id: I93cb37f2886da2e8e5e41d4c97ce054497e4e399 --- qml.qrc | 1 + src/mainview/MainView.qml | 2 +- src/mainview/components/AccountComboBox.qml | 36 +++------------- .../components/AccountComboBoxPopup.qml | 19 +++++++- .../components/AccountPresenceCycle.qml | 43 +++++++++++++++++++ .../ConversationSmartListUserImage.qml | 23 +--------- 6 files changed, 70 insertions(+), 54 deletions(-) create mode 100644 src/mainview/components/AccountPresenceCycle.qml diff --git a/qml.qrc b/qml.qrc index 3cc709929..b60c0929e 100644 --- a/qml.qrc +++ b/qml.qrc @@ -105,5 +105,6 @@ <file>src/mainview/components/SipInputPanel.qml</file> <file>src/commoncomponents/js/contextmenugenerator.js</file> <file>src/commoncomponents/BaseContextMenu.qml</file> + <file>src/mainview/components/AccountPresenceCycle.qml</file> </qresource> </RCC> diff --git a/src/mainview/MainView.qml b/src/mainview/MainView.qml index 315e3ed7f..48b3e1e07 100644 --- a/src/mainview/MainView.qml +++ b/src/mainview/MainView.qml @@ -304,7 +304,7 @@ Window { } function onAccountStatusChanged() { - accountComboBox.updateAccountListModel() + accountComboBox.resetAccountListModel() } } diff --git a/src/mainview/components/AccountComboBox.qml b/src/mainview/components/AccountComboBox.qml index 6037d436f..0fd3fa863 100644 --- a/src/mainview/components/AccountComboBox.qml +++ b/src/mainview/components/AccountComboBox.qml @@ -1,4 +1,3 @@ - /* * Copyright (C) 2020 by Savoir-faire Linux * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com> @@ -16,6 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */ + import QtQuick 2.14 import QtQuick.Controls 2.14 import QtQuick.Layouts 1.14 @@ -37,13 +37,6 @@ ComboBox { needToBackToWelcomePage() } - // Refresh every item in accountListModel. - function updateAccountListModel() { - accountListModel.dataChanged(accountListModel.index(0, 0), - accountListModel.index( - accountListModel.rowCount() - 1, 0)) - } - // Reset accountListModel. function resetAccountListModel() { accountListModel.reset() @@ -72,41 +65,24 @@ ComboBox { } mipmap: true - Rectangle { - id: presenseRect + AccountPresenceCycle { + id: currentAccountPresenseCycle anchors.right: userImageRoot.right anchors.rightMargin: -2 anchors.bottom: userImageRoot.bottom anchors.bottomMargin: -2 - width: 12 - height: 12 - - // Visible when account is registered, enum REGISTERED == 5. + // Visible when account is registered. visible: { if (currentIndex !== -1) return accountListModel.data( accountListModel.index( - accountComboBox.currentIndex, 0), 261) === 5 + accountComboBox.currentIndex, 0), 261) + === Account.Status.REGISTERED else return visible } - - Rectangle { - id: presenseCycle - - anchors.centerIn: presenseRect - - width: 10 - height: 10 - - radius: 30 - color: JamiTheme.presenceGreen - } - - radius: 30 - color: JamiTheme.backgroundColor } } diff --git a/src/mainview/components/AccountComboBoxPopup.qml b/src/mainview/components/AccountComboBoxPopup.qml index 2e3120d18..813cb8e77 100644 --- a/src/mainview/components/AccountComboBoxPopup.qml +++ b/src/mainview/components/AccountComboBoxPopup.qml @@ -57,7 +57,6 @@ Popup { model: accountListModel implicitHeight: contentHeight delegate: ItemDelegate { - Image { id: userImage @@ -66,7 +65,7 @@ Popup { anchors.verticalCenter: parent.verticalCenter width: 30 - height: parent.height + height: 30 fillMode: Image.PreserveAspectFit mipmap: true @@ -81,6 +80,22 @@ Popup { } return "data:image/png;base64," + data } + + AccountPresenceCycle { + id: accountPresenseCycle + + anchors.right: userImage.right + anchors.rightMargin: -2 + anchors.bottom: userImage.bottom + anchors.bottomMargin: -2 + + // Visible when account is registered. + visible: { + return accountListModel.data( + accountListModel.index(index, 0), 261) + === Account.Status.REGISTERED + } + } } Text { diff --git a/src/mainview/components/AccountPresenceCycle.qml b/src/mainview/components/AccountPresenceCycle.qml new file mode 100644 index 000000000..9eb445849 --- /dev/null +++ b/src/mainview/components/AccountPresenceCycle.qml @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2020 by Savoir-faire Linux + * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +import QtQuick 2.14 +import QtQuick.Controls 2.14 +import net.jami.Models 1.0 + +Rectangle { + id: root + + width: 12 + height: 12 + + Rectangle { + id: presenceCycle + + anchors.centerIn: root + + width: 10 + height: 10 + + radius: 30 + color: JamiTheme.presenceGreen + } + + radius: 30 + color: JamiTheme.backgroundColor +} diff --git a/src/mainview/components/ConversationSmartListUserImage.qml b/src/mainview/components/ConversationSmartListUserImage.qml index 6f3600b23..e8034fd3d 100644 --- a/src/mainview/components/ConversationSmartListUserImage.qml +++ b/src/mainview/components/ConversationSmartListUserImage.qml @@ -31,33 +31,14 @@ Image { source: "data:image/png;base64," + Picture mipmap: true - Rectangle { - id: presenseRect + AccountPresenceCycle { + id: conversationAccountPresenseCycle anchors.right: userImage.right - anchors.rightMargin: -2 anchors.bottom: userImage.bottom anchors.bottomMargin: -2 - width: 14 - height: 14 - visible: Presence - - Rectangle { - id: presenseCycle - - anchors.centerIn: presenseRect - - width: 10 - height: 10 - - radius: 30 - color: JamiTheme.presenceGreen - } - - radius: 30 - color: JamiTheme.backgroundColor } Rectangle { -- GitLab