2023-04-09 05:35:35 +00:00
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
2022-12-18 04:52:52 +00:00
|
|
|
import QtQuick
|
2023-05-19 15:03:39 +00:00
|
|
|
import QtQuick.Controls
|
2022-12-18 04:52:52 +00:00
|
|
|
import QtQuick.Layouts
|
2023-05-19 15:03:39 +00:00
|
|
|
import Fk.Pages
|
2022-12-18 04:52:52 +00:00
|
|
|
|
|
|
|
Rectangle {
|
|
|
|
property bool isLobby: false
|
|
|
|
|
|
|
|
function append(chatter) {
|
2023-12-10 10:55:16 +00:00
|
|
|
chatLogBox.append({ logText: chatter })
|
2022-12-18 04:52:52 +00:00
|
|
|
}
|
|
|
|
|
2023-07-02 05:21:13 +00:00
|
|
|
function loadSkills() {
|
2024-02-05 03:07:54 +00:00
|
|
|
for (let i = 1; i <= 23; i++) {
|
2023-07-02 05:21:13 +00:00
|
|
|
skills.append({ name: "fastchat_m", idx: i });
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Timer {
|
|
|
|
id: opTimer
|
|
|
|
interval: 1500
|
|
|
|
}
|
|
|
|
|
2022-12-18 04:52:52 +00:00
|
|
|
ColumnLayout {
|
|
|
|
anchors.fill: parent
|
|
|
|
spacing: 0
|
|
|
|
|
|
|
|
Item {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
Layout.fillHeight: true
|
|
|
|
|
|
|
|
LogEdit {
|
|
|
|
id: chatLogBox
|
|
|
|
anchors.fill: parent
|
|
|
|
anchors.margins: 10
|
2023-05-13 06:16:09 +00:00
|
|
|
//font.pixelSize: 14
|
2022-12-18 04:52:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-19 15:03:39 +00:00
|
|
|
GridView {
|
|
|
|
id: emojiSelector
|
2022-12-18 04:52:52 +00:00
|
|
|
Layout.fillWidth: true
|
2023-05-19 15:03:39 +00:00
|
|
|
Layout.preferredHeight: 120
|
|
|
|
cellHeight: 48
|
|
|
|
cellWidth: 48
|
2023-08-13 08:36:11 +00:00
|
|
|
model: 59
|
2023-05-19 15:03:39 +00:00
|
|
|
visible: false
|
2023-06-16 15:53:44 +00:00
|
|
|
clip: true
|
2023-05-19 15:03:39 +00:00
|
|
|
delegate: ItemDelegate {
|
|
|
|
Image {
|
|
|
|
height: 32; width: 32
|
|
|
|
anchors.centerIn: parent
|
|
|
|
source: "../../image/emoji/" + index
|
|
|
|
}
|
2024-01-24 19:23:29 +00:00
|
|
|
onClicked: chatEdit.insert(chatEdit.cursorPosition,
|
|
|
|
"{emoji" + index + "}");
|
2023-05-19 15:03:39 +00:00
|
|
|
}
|
|
|
|
}
|
2022-12-18 04:52:52 +00:00
|
|
|
|
2023-07-02 05:21:13 +00:00
|
|
|
ListView {
|
|
|
|
id: soundSelector
|
|
|
|
Layout.fillWidth: true
|
|
|
|
Layout.preferredHeight: 180
|
|
|
|
visible: false
|
|
|
|
clip: true
|
|
|
|
ScrollBar.vertical: ScrollBar {}
|
|
|
|
model: ListModel {
|
|
|
|
id: skills
|
|
|
|
}
|
|
|
|
// onVisibleChanged: {skills.clear(); loadSkills();}
|
|
|
|
|
|
|
|
delegate: ItemDelegate {
|
|
|
|
width: soundSelector.width
|
|
|
|
height: 30
|
2024-01-24 19:23:29 +00:00
|
|
|
text: luatr("$" + name + (idx ? idx.toString() : ""))
|
2023-07-02 05:21:13 +00:00
|
|
|
|
|
|
|
onClicked: {
|
|
|
|
opTimer.start();
|
|
|
|
const general = roomScene.getPhoto(Self.id).general;
|
|
|
|
let skill = "fastchat_m";
|
|
|
|
if (general !== "") {
|
2024-01-24 19:23:29 +00:00
|
|
|
const data = lcall("GetGeneralDetail", general);
|
2023-07-02 05:21:13 +00:00
|
|
|
const gender = data.gender;
|
|
|
|
if (gender !== 1) {
|
|
|
|
skill = "fastchat_f";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ClientInstance.notifyServer(
|
|
|
|
"Chat",
|
|
|
|
JSON.stringify({
|
|
|
|
type: isLobby ? 1 : 2,
|
|
|
|
msg: "$" + skill + ":" + idx
|
|
|
|
})
|
|
|
|
);
|
|
|
|
soundSelector.visible = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-19 15:03:39 +00:00
|
|
|
RowLayout {
|
|
|
|
Rectangle {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
Layout.preferredHeight: 28
|
|
|
|
color: "#040403"
|
|
|
|
radius: 3
|
|
|
|
border.width: 1
|
|
|
|
border.color: "#A6967A"
|
|
|
|
|
|
|
|
TextInput {
|
|
|
|
id: chatEdit
|
|
|
|
anchors.fill: parent
|
|
|
|
anchors.margins: 6
|
|
|
|
color: "white"
|
|
|
|
clip: true
|
|
|
|
font.pixelSize: 14
|
2023-10-27 14:19:30 +00:00
|
|
|
maximumLength: 300
|
2023-05-19 15:03:39 +00:00
|
|
|
|
|
|
|
onAccepted: {
|
|
|
|
if (text != "") {
|
|
|
|
ClientInstance.notifyServer(
|
|
|
|
"Chat",
|
|
|
|
JSON.stringify({
|
|
|
|
type: isLobby ? 1 : 2,
|
|
|
|
msg: text
|
|
|
|
})
|
|
|
|
);
|
|
|
|
text = "";
|
|
|
|
}
|
2022-12-18 04:52:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-05-19 15:03:39 +00:00
|
|
|
|
2023-07-02 05:21:13 +00:00
|
|
|
MetroButton {
|
|
|
|
id: soundBtn
|
|
|
|
text: "🗨️"
|
|
|
|
visible: !isLobby
|
|
|
|
enabled: !opTimer.running;
|
|
|
|
onClicked: {
|
|
|
|
emojiSelector.visible = false;
|
|
|
|
soundSelector.visible = !soundSelector.visible;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-19 15:03:39 +00:00
|
|
|
MetroButton {
|
|
|
|
id: emojiBtn
|
|
|
|
text: "😃"
|
2023-07-02 05:21:13 +00:00
|
|
|
onClicked: {
|
|
|
|
soundSelector.visible = false;
|
|
|
|
emojiSelector.visible = !emojiSelector.visible;
|
|
|
|
}
|
2023-05-19 15:03:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
MetroButton {
|
|
|
|
text: "✔️"
|
2023-07-02 05:21:13 +00:00
|
|
|
enabled: !opTimer.running;
|
|
|
|
onClicked: {
|
|
|
|
opTimer.start();
|
|
|
|
chatEdit.accepted();
|
|
|
|
}
|
2023-05-19 15:03:39 +00:00
|
|
|
}
|
2022-12-18 04:52:52 +00:00
|
|
|
}
|
|
|
|
}
|
2023-07-02 05:21:13 +00:00
|
|
|
|
|
|
|
Component.onCompleted: {
|
|
|
|
loadSkills();
|
|
|
|
}
|
2022-12-18 04:52:52 +00:00
|
|
|
}
|