|
|
|
@ -24,6 +24,7 @@ Menu { |
|
|
|
|
readonly property int stickerDim: 128 |
|
|
|
|
readonly property int stickerDimPad: 128 + Nheko.paddingSmall |
|
|
|
|
readonly property int stickersPerRow: 3 |
|
|
|
|
readonly property int sidebarAvatarSize: 24 |
|
|
|
|
|
|
|
|
|
function show(showAt, roomid_, callback) { |
|
|
|
|
console.debug("Showing sticker picker"); |
|
|
|
@ -40,28 +41,31 @@ Menu { |
|
|
|
|
modal: true |
|
|
|
|
focus: true |
|
|
|
|
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside |
|
|
|
|
width: stickersPerRow * stickerDimPad + 20 |
|
|
|
|
width: sidebarAvatarSize + Nheko.paddingSmall + stickersPerRow * stickerDimPad + 20 |
|
|
|
|
|
|
|
|
|
Rectangle { |
|
|
|
|
color: Nheko.colors.window |
|
|
|
|
height: columnView.implicitHeight + Nheko.paddingSmall*2 |
|
|
|
|
width: stickersPerRow * stickerDimPad + 20 |
|
|
|
|
width: sidebarAvatarSize + Nheko.paddingSmall + stickersPerRow * stickerDimPad + 20 |
|
|
|
|
|
|
|
|
|
ColumnLayout { |
|
|
|
|
GridLayout { |
|
|
|
|
id: columnView |
|
|
|
|
|
|
|
|
|
spacing: Nheko.paddingSmall |
|
|
|
|
anchors.leftMargin: Nheko.paddingSmall |
|
|
|
|
anchors.rightMargin: Nheko.paddingSmall |
|
|
|
|
anchors.bottom: parent.bottom |
|
|
|
|
anchors.left: parent.left |
|
|
|
|
anchors.right: parent.right |
|
|
|
|
columns: 2 |
|
|
|
|
rows: 2 |
|
|
|
|
|
|
|
|
|
// Search field |
|
|
|
|
TextField { |
|
|
|
|
id: emojiSearch |
|
|
|
|
|
|
|
|
|
Layout.preferredWidth: stickersPerRow * stickerDimPad + 20 - Nheko.paddingSmall |
|
|
|
|
Layout.row: 0 |
|
|
|
|
Layout.column: 1 |
|
|
|
|
palette: Nheko.colors |
|
|
|
|
background: null |
|
|
|
|
placeholderTextColor: Nheko.colors.buttonText |
|
|
|
@ -102,30 +106,13 @@ Menu { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Component { |
|
|
|
|
id: sectionHeading |
|
|
|
|
Rectangle { |
|
|
|
|
width: gridView.width |
|
|
|
|
height: childrenRect.height |
|
|
|
|
color: Nheko.colors.alternateBase |
|
|
|
|
|
|
|
|
|
required property string section |
|
|
|
|
|
|
|
|
|
Text { |
|
|
|
|
anchors.left: parent.left |
|
|
|
|
anchors.right: parent.right |
|
|
|
|
text: parent.section |
|
|
|
|
color: Nheko.colors.text |
|
|
|
|
font.bold: true |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// sticker grid |
|
|
|
|
ListView { |
|
|
|
|
id: gridView |
|
|
|
|
|
|
|
|
|
model: roomid ? TimelineManager.completerFor("stickergrid", roomid) : null |
|
|
|
|
Layout.row: 1 |
|
|
|
|
Layout.column: 1 |
|
|
|
|
Layout.preferredHeight: cellHeight * 3.5 |
|
|
|
|
Layout.preferredWidth: stickersPerRow * stickerDimPad + 20 - Nheko.paddingSmall |
|
|
|
|
property int cellHeight: stickerDimPad |
|
|
|
@ -135,7 +122,21 @@ Menu { |
|
|
|
|
|
|
|
|
|
section.property: "packname" |
|
|
|
|
section.criteria: ViewSection.FullString |
|
|
|
|
section.delegate: sectionHeading |
|
|
|
|
section.delegate: Rectangle { |
|
|
|
|
width: gridView.width |
|
|
|
|
height: childrenRect.height |
|
|
|
|
color: Nheko.colors.alternateBase |
|
|
|
|
|
|
|
|
|
required property string section |
|
|
|
|
|
|
|
|
|
Text { |
|
|
|
|
anchors.left: parent.left |
|
|
|
|
anchors.right: parent.right |
|
|
|
|
text: parent.section |
|
|
|
|
color: Nheko.colors.text |
|
|
|
|
font.bold: true |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
section.labelPositioning: ViewSection.InlineLabels | ViewSection.CurrentLabelAtStart |
|
|
|
|
|
|
|
|
|
spacing: Nheko.paddingSmall |
|
|
|
@ -191,6 +192,29 @@ Menu { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ListView { |
|
|
|
|
Layout.row: 1 |
|
|
|
|
Layout.column: 0 |
|
|
|
|
Layout.preferredWidth: sidebarAvatarSize |
|
|
|
|
Layout.fillHeight: true |
|
|
|
|
Layout.rightMargin: Nheko.paddingSmall |
|
|
|
|
|
|
|
|
|
model: gridView.model ? gridView.model.sections : null |
|
|
|
|
spacing: Nheko.paddingSmall |
|
|
|
|
|
|
|
|
|
delegate: Avatar { |
|
|
|
|
height: sidebarAvatarSize |
|
|
|
|
width: sidebarAvatarSize |
|
|
|
|
url: modelData.url.replace("mxc://", "image://MxcImage/") |
|
|
|
|
displayName: modelData.name |
|
|
|
|
roomid: modelData.name |
|
|
|
|
|
|
|
|
|
hoverEnabled: true |
|
|
|
|
ToolTip.visible: hovered |
|
|
|
|
ToolTip.text: modelData.name |
|
|
|
|
onClicked: gridView.positionViewAtIndex(modelData.firstRowWith, ListView.Beginning) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|