Changeset View
Changeset View
Standalone View
Standalone View
src/contents/ui/StickerPicker.qml
| Show All 15 Lines | |||||
| ColumnLayout { | ColumnLayout { | ||||
| id: stickerPicker | id: stickerPicker | ||||
| property var stickerPackList | property var stickerPackList | ||||
| spacing: 0 | spacing: 0 | ||||
| property var currentIndex: 0 | property var currentIndex: 0 | ||||
| signal sendMessageRequested(var eventJson) | signal sendMessageRequested(var eventJson) | ||||
| property var removeStickerPack | |||||
| property string removeStickerShortCode: '' | |||||
| property var removeStickerHandler: Kazv.AsyncHandler { | |||||
| trigger: () => { | |||||
| return matrixSession.updateStickerPack( | |||||
| stickerPicker.removeStickerPack.removeSticker(stickerPicker.removeStickerShortCode) | |||||
| ); | |||||
| } | |||||
| onResolved: (success, data) => { | |||||
| if (!success) { | |||||
| showPassiveNotification(l10n.get('sticker-remove-failed-prompt', { errorCode: data.errorCode, errorMsg: data.error })); | |||||
| } | |||||
| } | |||||
| } | |||||
| function requestRemoveSticker(pack, shortCode) { | |||||
| stickerPicker.removeStickerPack = pack; | |||||
| stickerPicker.removeStickerShortCode = shortCode; | |||||
| removeStickerConfirmationComp.createObject(Overlay.overlay, { | |||||
| message: l10n.get('sticker-remove-confirmation-message', { shortCode: shortCode }) | |||||
| }).open(); | |||||
| } | |||||
| property var removeStickerConfirmationComp: Component { | |||||
| Kazv.ConfirmationOverlay { | |||||
| objectName: 'removeStickerConfirmation' | |||||
| shouldSelfDestroy: true | |||||
| title: l10n.get('sticker-remove-confirmation-title') | |||||
| message: l10n.get('sticker-remove-confirmation-message') | |||||
| confirmActionText: l10n.get('sticker-remove-confirm-action') | |||||
| cancelActionText: l10n.get('sticker-remove-cancel-action') | |||||
| onAccepted: stickerPicker.removeStickerHandler.call() | |||||
| } | |||||
| } | |||||
| TabBar { | TabBar { | ||||
| id: packListView | id: packListView | ||||
| Layout.fillWidth: true | Layout.fillWidth: true | ||||
| Layout.minimumHeight: Kirigami.Units.gridUnit * 2 | Layout.minimumHeight: Kirigami.Units.gridUnit * 2 | ||||
| Repeater { | Repeater { | ||||
| model: stickerPackList | model: stickerPackList | ||||
| delegate: TabButton { | delegate: TabButton { | ||||
| ▲ Show 20 Lines • Show All 58 Lines • ▼ Show 20 Lines | GridView { | ||||
| Accessible.role: Accessible.Button | Accessible.role: Accessible.Button | ||||
| Accessible.name: sticker.body | Accessible.name: sticker.body | ||||
| Accessible.onPressAction: requestSendMessage() | Accessible.onPressAction: requestSendMessage() | ||||
| onClicked: requestSendMessage() | onClicked: requestSendMessage() | ||||
| function requestSendMessage() { | function requestSendMessage() { | ||||
| stickerPicker.sendMessageRequested(sticker.makeEventJson()); | stickerPicker.sendMessageRequested(sticker.makeEventJson()); | ||||
| } | |||||
| ContextMenu.menu: Menu { | |||||
| objectName: 'stickerContextMenu' | |||||
| Kirigami.Action { | |||||
| objectName: 'removeStickerMenuItem' | |||||
| text: l10n.get('sticker-remove-action') | |||||
| icon.name: 'edit-delete' | |||||
| onTriggered: stickerPicker.requestRemoveSticker(currentPack, sticker.shortCode) | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||