status-desktop/ui/app/mainui/activitycenter/panels/ActivityCenterPopupTopBarPa...

118 lines
4.7 KiB
QML
Raw Normal View History

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import utils 1.0
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Components 0.1
import StatusQ.Controls 0.1
import StatusQ.Popups 0.1
2023-02-23 11:09:05 +00:00
import "../stores"
Item {
id: root
property bool hasAdmin: false
property bool hasMentions: false
property bool hasReplies: false
property bool hasContactRequests: false
property bool hasIdentityVerification: false
property bool hasMembership: false
property bool hideReadNotifications: false
property int unreadNotificationsCount: 0
2023-02-23 11:09:05 +00:00
property int activeGroup: ActivityCenterStore.ActivityCenterGroup.All
property alias errorText: errorText.text
signal groupTriggered(int group)
signal markAllReadClicked()
signal showHideReadNotifications(bool hideReadNotifications)
height: 64
RowLayout {
id: row
anchors.fill: parent
anchors.leftMargin: Theme.padding
anchors.rightMargin: Theme.padding
spacing: Theme.padding
StatusRollArea {
Layout.fillWidth: true
content: RowLayout {
spacing: 0
Repeater {
// NOTE: some entries are hidden until implimentation
2023-02-23 11:09:05 +00:00
model: [ { text: qsTr("All"), group: ActivityCenterStore.ActivityCenterGroup.All, visible: true, enabled: true },
{ text: qsTr("Admin"), group: ActivityCenterStore.ActivityCenterGroup.Admin, visible: root.hasAdmin, enabled: root.hasAdmin },
{ text: qsTr("Mentions"), group: ActivityCenterStore.ActivityCenterGroup.Mentions, visible: true, enabled: root.hasMentions },
{ text: qsTr("Replies"), group: ActivityCenterStore.ActivityCenterGroup.Replies, visible: true, enabled: root.hasReplies },
{ text: qsTr("Contact requests"), group: ActivityCenterStore.ActivityCenterGroup.ContactRequests, visible: true, enabled: root.hasContactRequests },
// Hidden since 2.29 since it's not mature enough
{ text: qsTr("Identity verification"), group: ActivityCenterStore.ActivityCenterGroup.IdentityVerification, visible: false, enabled: root.hasIdentityVerification },
2023-02-23 11:09:05 +00:00
{ text: qsTr("Transactions"), group: ActivityCenterStore.ActivityCenterGroup.Transactions, visible: false, enabled: true },
{ text: qsTr("Membership"), group: ActivityCenterStore.ActivityCenterGroup.Membership, visible: true, enabled: root.hasMembership },
{ text: qsTr("System"), group: ActivityCenterStore.ActivityCenterGroup.System, visible: false, enabled: true } ]
StatusFlatButton {
objectName: "activityCenterGroupButton"
enabled: modelData.enabled
visible: modelData.visible
text: modelData.text
size: StatusBaseButton.Size.Small
highlighted: modelData.group === root.activeGroup
onClicked: root.groupTriggered(modelData.group)
2023-02-23 11:09:05 +00:00
onEnabledChanged: if (!enabled && highlighted) root.groupTriggered(ActivityCenterStore.ActivityCenterGroup.All)
Layout.preferredWidth: visible ? implicitWidth : 0
}
}
}
}
StatusBetaTag {
tooltipText: qsTr("Under construction.<br>More notification types to be coming soon.")
}
StatusFlatRoundButton {
id: markAllReadBtn
objectName: "markAllReadButton"
enabled: root.unreadNotificationsCount > 0
icon.name: "double-checkmark"
onClicked: root.markAllReadClicked()
StatusToolTip {
visible: markAllReadBtn.hovered
text: qsTr("Mark all as Read")
}
}
StatusFlatRoundButton {
id: hideReadNotificationsBtn
objectName: "hideReadNotificationsButton"
icon.name: root.hideReadNotifications ? "hide" : "show"
onClicked: root.showHideReadNotifications(!root.hideReadNotifications)
StatusToolTip {
visible: hideReadNotificationsBtn.hovered
offset: width / 4
text: root.hideReadNotifications ? qsTr("Show read notifications") : qsTr("Hide read notifications")
}
}
}
StatusBaseText {
id: errorText
visible: !!text
anchors.top: parent.top
anchors.topMargin: Theme.smallPadding
color: Theme.palette.dangerColor1
}
}