-
Ming Rui Zhang authored
If the account is initially disabled, the presense indicator will still show the green color since the initial value is missed. Change-Id: Ic580e485d4a73867789ef3774045a6939acbae4a
Ming Rui Zhang authoredIf the account is initially disabled, the presense indicator will still show the green color since the initial value is missed. Change-Id: Ic580e485d4a73867789ef3774045a6939acbae4a
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
AccountComboBox.qml 7.16 KiB
/*
* Copyright (C) 2020 by Savoir-faire Linux
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
* Author: Andreas Traczyk <andreas.traczyk@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 QtQuick.Layouts 1.14
import QtGraphicalEffects 1.14
import net.jami.Models 1.0
import net.jami.Adapters 1.0
import net.jami.Constants 1.0
import "../../commoncomponents"
Label {
id: root
signal settingBtnClicked
property alias popup: comboBoxPopup
// TODO: remove these refresh hacks use QAbstractItemModels correctly
Connections {
target: AccountAdapter
function onAccountStatusChanged(accountId) {
AccountListModel.reset()
}
}
Connections {
target: LRCInstance
function onAccountListChanged() {
root.update()
AccountListModel.reset()
}
}
function togglePopup() {
if (root.popup.opened) {
root.popup.close()
} else {
root.popup.open()
}
}
background: Rectangle {
id: background
implicitWidth: root.width
implicitHeight: root.height
color: root.popup.opened ?
Qt.lighter(JamiTheme.hoverColor, 1.0) :
mouseArea.containsMouse ?
Qt.lighter(JamiTheme.hoverColor, 1.05) :
JamiTheme.backgroundColor
Behavior on color {
ColorAnimation { duration: JamiTheme.shortFadeDuration }
}
// TODO: this can be removed when frameless window is implemented
Rectangle {
height: 1
anchors {
top: parent.top
left: parent.left
right: parent.right
}
color: JamiTheme.tabbarBorderColor
}
}
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
onClicked: togglePopup()
}
AccountComboBoxPopup {
id: comboBoxPopup
Shortcut {
sequence: "Ctrl+J"
context: Qt.ApplicationShortcut
onActivated: togglePopup()
}
}
Connections {
target: AccountListModel
function onModelReset() {
avatar.imageId = LRCInstance.currentAccountId
avatar.presenceStatus = AccountListModel.data(AccountListModel.index(0, 0),
AccountList.Status)
userAliasText.text = AccountListModel.data(AccountListModel.index(0,0),
AccountList.Alias)
usernameText.text = AccountListModel.data(AccountListModel.index(0,0),
AccountList.Username)
}
}
RowLayout {
anchors.fill: parent
anchors.leftMargin: 15
anchors.rightMargin: 15
spacing: 10
Avatar {
id: avatar
Layout.preferredWidth: JamiTheme.accountListAvatarSize
Layout.preferredHeight: JamiTheme.accountListAvatarSize
Layout.alignment: Qt.AlignVCenter
imageId: LRCInstance.currentAccountId
mode: Avatar.Mode.Account
presenceStatus: AccountListModel.data(
AccountListModel.index(0, 0), AccountList.Status)
}
ColumnLayout {
Layout.fillWidth: true
Layout.fillHeight: true
spacing: 2
Text {
id: userAliasText
Layout.fillWidth: true
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
text: AccountListModel.data(AccountListModel.index(0,0),
AccountList.Alias)
font.pointSize: JamiTheme.textFontSize
color: JamiTheme.textColor
elide: Text.ElideRight
}
Text {
id: usernameText
Layout.fillWidth: true
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
visible: text.length && text != userAliasText.text
text: AccountListModel.data(AccountListModel.index(0,0),
AccountList.Username)
font.pointSize: JamiTheme.textFontSize
color: JamiTheme.faddedLastInteractionFontColor
elide: Text.ElideRight
}
}
Row {
id: controlRow
spacing: 10
Layout.preferredWidth: childrenRect.width
Layout.preferredHeight: parent.height
ResponsiveImage {
id: arrowDropDown
anchors.verticalCenter: parent.verticalCenter
width: 24
height: 24
color: JamiTheme.textColor
source: !root.popup.opened ?
"qrc:/images/icons/expand_more-24px.svg" :
"qrc:/images/icons/expand_less-24px.svg"
}
PushButton {
id: shareButton
width: visible ? preferredSize : 0
height: visible ? preferredSize : 0
anchors.verticalCenter: parent.verticalCenter
visible: LRCInstance.currentAccountType === Profile.Type.JAMI
toolTipText: JamiStrings.displayQRCode
source: "qrc:/images/icons/share-24px.svg"
normalColor: JamiTheme.backgroundColor
imageColor: JamiTheme.textColor
onClicked: {
if (visible)
qrDialog.open()
}
}
PushButton {
id: settingsButton
anchors.verticalCenter: parent.verticalCenter
source: !mainView.inSettingsView ?
"qrc:/images/icons/settings-24px.svg" :
"qrc:/images/icons/round-close-24px.svg"
normalColor: JamiTheme.backgroundColor
imageColor: JamiTheme.textColor
toolTipText: !mainView.inSettingsView ?
JamiStrings.openSettings :
JamiStrings.closeSettings
onClicked: {
settingBtnClicked()
background.state = "normal"
}
}
}
}
Shortcut {
sequence: "Ctrl+,"
context: Qt.ApplicationShortcut
onActivated: settingBtnClicked()
}
}