Skip to content
This repository has been archived by the owner on Jun 29, 2024. It is now read-only.

Commit

Permalink
add reaction box to message in qml
Browse files Browse the repository at this point in the history
  • Loading branch information
wsekta committed Jan 17, 2024
1 parent a967db6 commit fe954eb
Show file tree
Hide file tree
Showing 12 changed files with 118 additions and 9 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ FROM ubuntu:23.10
RUN apt update -y \
&& apt install -y lld-16 ninja-build build-essential libstdc++-13-dev git\
clang-16 clang-tools-16 llvm-16 lcov cmake g++-12 \
libboost-all-dev libgl1-mesa-dev libglx-dev \
libboost-all-dev libgl1-mesa-dev libglx-dev libcurl4-openssl-dev \
qt6-base-dev libqt6sql6-psql libqt6qml6 qt6-declarative-dev qt6-tools-dev qt6-tools-dev-tools qt6-l10n-tools qt6-svg-dev \
qml6-module-qtquick-controls qml6-module-qtqml-workerscript qml6-module-qtquick-templates \
postgresql libcutl-1.10 libpq-dev sqlite3 libsqlite3-dev odb libhiredis-dev
Expand Down
3 changes: 3 additions & 0 deletions apps/client/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,10 @@ set(QML_SOURCES
gui/qml/components/SettingsButton.qml
gui/qml/components/CustomButton.qml
gui/qml/components/Invitation.qml

gui/qml/components/messages/MessageView.qml
gui/qml/components/messages/Message.qml
gui/qml/components/messages/ReactionBox.ui.qml

gui/states/register/RegisterView.qml
gui/states/login/LoginView.qml
Expand Down Expand Up @@ -100,6 +102,7 @@ set(RESOURCES
resources/svg/close.svg
resources/svg/check.svg
resources/svg/cross.svg
resources/svg/happy-face.svg
)

qt_add_executable(${EXECUTABLE_NAME} Main.cpp ${SOURCES})
Expand Down
3 changes: 3 additions & 0 deletions apps/client/core/configProvider/ConfigProvider.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,8 @@ class ConfigProvider

std::string getServerHost() const;
int getServerPort() const;

private:
std::unique_ptr<config::Config> config;
};
}
5 changes: 5 additions & 0 deletions apps/client/gui/controllers/MessagesController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,9 @@ void MessagesController::requestMoreMessages()

emit getMoreMessages();
}

void MessagesController::startChoosingReactions(const QString& messageId)
{
currentMessageIdToChooseReaction = messageId.toStdString();
}
}
2 changes: 2 additions & 0 deletions apps/client/gui/controllers/MessagesController.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class MessagesController : public QObject
QList<QObject*> getMessages();

Q_INVOKABLE void sendMessage(const QString& text);
Q_INVOKABLE void startChoosingReactions(const QString& messageId);

signals:
void newMessageToSend(const QString& messageText);
Expand All @@ -45,6 +46,7 @@ public slots:
const StateFactory& stateFactory;
std::shared_ptr<StateMachine> stateMachine;
std::shared_ptr<storage::MessageStorage> messageStorage;
std::string currentMessageIdToChooseReaction;

inline static const QString name{"messagesController"};
};
Expand Down
4 changes: 3 additions & 1 deletion apps/client/gui/qml/common/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,6 @@ const buttonColor = "#313338"

const settingsButtonColor = "#b5bac1"

const boxColor = "#232428"
const boxColor = "#232428"

const hoverMessageColor = "#2e2f35"
7 changes: 3 additions & 4 deletions apps/client/gui/qml/components/CustomButton.qml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,9 @@ Button {
property string hoverColor: "#d8d9da"
property int size: 45

signal
mouseEnteredArea
signal
mouseExitedArea
signal mouseEnteredArea()

signal mouseExitedArea()

hoverEnabled: true

Expand Down
21 changes: 20 additions & 1 deletion apps/client/gui/qml/components/messages/Message.qml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ Rectangle {

property string baseColor: Settings.backgroundColor
color: baseColor
property string hoverColor: "#2e2f35"
property string hoverColor: Settings.hoverMessageColor

signal addReactionToMessage(messageId: string)

Column {
id: messageColumn
Expand Down Expand Up @@ -85,6 +87,19 @@ Rectangle {
}
}

ReactionBox {
id: reactionBox
anchors {
right: messageColumn.right
rightMargin: 10
verticalCenter: messageColumn.top
}

onAddReaction: {
message.addReactionToMessage(message.messageData.messageId)
}
}

MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
Expand All @@ -93,9 +108,13 @@ Rectangle {

onEntered: {
message.color = message.hoverColor
reactionBox.visible = true
reactionBox.enabled = true
}
onExited: {
message.color = message.baseColor
reactionBox.visible = false
reactionBox.enabled = false
}
}
}
5 changes: 5 additions & 0 deletions apps/client/gui/qml/components/messages/MessageView.qml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ Rectangle {
delegate: Message {
messageData: modelData
width: messagesView.width

onAddReactionToMessage: (messageId) => {
console.log("Add reaction to message " + messageId);
messagesController.startChoosingReactions(messageId);
}
}
onContentYChanged: {
if (messagesScrollView.ScrollBar.vertical.position > 0.01) {
Expand Down
53 changes: 53 additions & 0 deletions apps/client/gui/qml/components/messages/ReactionBox.ui.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import QtQuick 6.4
import QtQuick.Controls 6.4
import "../../common/settings.js" as Settings
import ".."

Rectangle {
z: 1
id: reactionBox
visible: false
width: 60
height: 25
radius: 5
color: Settings.hoverMessageColor
border.color: Settings.boxColor
border.width: 1

signal
addReaction

CustomButton {
id: reactionButton
anchors {
horizontalCenter: parent.horizontalCenter
verticalCenter: parent.verticalCenter
}
size: 25
height: size
icon.color: color
icon.height: size
icon.source: "../../../../resources/svg/happy-face.svg"
icon.width: size
width: size
enabled: true

background: Rectangle {
height: reactionButton.size
opacity: 0.5
radius: 3
visible: false
width: reactionButton.size
}

onMouseEnteredArea: {
background.visible = true;
}
onMouseExitedArea: {
background.visible = false;
}
onClicked: {
reactionBox.addReaction();
}
}
}
19 changes: 19 additions & 0 deletions apps/client/resources/svg/happy-face.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 1 addition & 2 deletions externals/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,4 @@ add_subdirectory(faker-cxx)
add_subdirectory(cpr)
add_subdirectory(fmt)
set(BUILD_CONFIG_CXX_TESTS OFF)
add_subdirectory(config-cxx)
add_subdirectory(aws-sdk-cpp)
add_subdirectory(config-cxx)

0 comments on commit fe954eb

Please sign in to comment.