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
diff --git a/qml.qrc b/qml.qrc
index 3cc7099..b60c092 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 315e3ed..48b3e1e 100644
--- a/src/mainview/MainView.qml
+++ b/src/mainview/MainView.qml
@@ -304,7 +304,7 @@
}
function onAccountStatusChanged() {
- accountComboBox.updateAccountListModel()
+ accountComboBox.resetAccountListModel()
}
}
diff --git a/src/mainview/components/AccountComboBox.qml b/src/mainview/components/AccountComboBox.qml
index 6037d43..0fd3fa8 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 @@
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 @@
}
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 2e3120d..813cb8e 100644
--- a/src/mainview/components/AccountComboBoxPopup.qml
+++ b/src/mainview/components/AccountComboBoxPopup.qml
@@ -57,7 +57,6 @@
model: accountListModel
implicitHeight: contentHeight
delegate: ItemDelegate {
-
Image {
id: userImage
@@ -66,7 +65,7 @@
anchors.verticalCenter: parent.verticalCenter
width: 30
- height: parent.height
+ height: 30
fillMode: Image.PreserveAspectFit
mipmap: true
@@ -81,6 +80,22 @@
}
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 0000000..9eb4458
--- /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 6f3600b..e8034fd 100644
--- a/src/mainview/components/ConversationSmartListUserImage.qml
+++ b/src/mainview/components/ConversationSmartListUserImage.qml
@@ -31,33 +31,14 @@
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 {