From fd7182f7a036ded5fe77823ddf53c3e01b78b3bd Mon Sep 17 00:00:00 2001 From: defnax Date: Fri, 23 Aug 2024 11:56:29 +0200 Subject: [PATCH 1/4] Fixed to show when there is a chat from a friend as overlay icon Fixed to show when there is a chat from a friend as overlay icon, when popup chat is disabled --- .../src/gui/common/FriendListModel.cpp | 51 +++++++++++++++++-- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/retroshare-gui/src/gui/common/FriendListModel.cpp b/retroshare-gui/src/gui/common/FriendListModel.cpp index 35cefa7ac..eee8e5597 100644 --- a/retroshare-gui/src/gui/common/FriendListModel.cpp +++ b/retroshare-gui/src/gui/common/FriendListModel.cpp @@ -34,6 +34,7 @@ #include "gui/common/FriendListModel.h" #include "gui/gxs/GxsIdDetails.h" #include "gui/gxs/GxsIdTreeWidgetItem.h" +#include "gui/chat/ChatUserNotify.h" #include "retroshare/rsexpr.h" #include "retroshare/rsmsgs.h" @@ -996,6 +997,12 @@ QVariant RsFriendListModel::decorationRole(const EntryIndex& entry,int col) cons { QPixmap sslAvatar; bool foundAvatar = false; + bool hasPrivateChat = false; + + // get peers with waiting incoming chats + std::vector privateChatIds; + ChatUserNotify::getPeersWithWaitingChat(privateChatIds); + const HierarchicalProfileInformation *hn = getProfileInfo(entry); uint32_t status = RS_STATUS_OFFLINE; const HierarchicalNodeInformation *bestNodeInformation = NULL; @@ -1023,11 +1030,26 @@ QVariant RsFriendListModel::decorationRole(const EntryIndex& entry,int col) cons if (!foundAvatar || sslAvatar.isNull()) { sslAvatar = FilesDefs::getPixmapFromQtResourcePath(AVATAR_DEFAULT_IMAGE); } + + if (mDisplayStatusIcon) { + for(uint32_t i=0;ichild_node_indices.size();++i) { + if (std::find(privateChatIds.begin(), privateChatIds.end(), RsPeerId(mLocations[hn->child_node_indices[i]].node_info.id.toStdString())) != privateChatIds.end()) { + // private chat is available + hasPrivateChat = true; + break; + } + } + } if (mDisplayStatusIcon) { if (bestNodeInformation) { - QPixmap sslOverlayIcon = FilesDefs::getPixmapFromQtResourcePath(StatusDefs::imageStatus(status)); - return QVariant(QIcon(createAvatar(sslAvatar, sslOverlayIcon))); + if (hasPrivateChat) { + QPixmap sslOverlayIcon = FilesDefs::getPixmapFromQtResourcePath(":/images/orange-bubble-64.png"); + return QVariant(QIcon(createAvatar(sslAvatar, sslOverlayIcon))); + } else { + QPixmap sslOverlayIcon = FilesDefs::getPixmapFromQtResourcePath(StatusDefs::imageStatus(status)); + return QVariant(QIcon(createAvatar(sslAvatar, sslOverlayIcon))); + } } } @@ -1045,10 +1067,31 @@ QVariant RsFriendListModel::decorationRole(const EntryIndex& entry,int col) cons return QVariant(); QPixmap sslAvatar; + bool hasPrivateChat = false; AvatarDefs::getAvatarFromSslId(RsPeerId(hn->node_info.id.toStdString()), sslAvatar); + + // get peers with waiting incoming chats + std::vector privateChatIds; + ChatUserNotify::getPeersWithWaitingChat(privateChatIds); + if (mDisplayStatusIcon) { - QPixmap sslOverlayIcon = FilesDefs::getPixmapFromQtResourcePath(StatusDefs::imageStatus(statusRole(entry, col).toInt())); - return QVariant(QIcon(createAvatar(sslAvatar, sslOverlayIcon))); + for(uint32_t i=0;inode_info.id.toStdString())) != privateChatIds.end()) { + // private chat is available + hasPrivateChat = true; + break; + } + } + } + + if (mDisplayStatusIcon) { + if (hasPrivateChat) { + QPixmap sslOverlayIcon = FilesDefs::getPixmapFromQtResourcePath(":/images/orange-bubble-64.png"); + return QVariant(QIcon(createAvatar(sslAvatar, sslOverlayIcon))); + } else { + QPixmap sslOverlayIcon = FilesDefs::getPixmapFromQtResourcePath(StatusDefs::imageStatus(statusRole(entry, col).toInt())); + return QVariant(QIcon(createAvatar(sslAvatar, sslOverlayIcon))); + } } return QVariant(QIcon(sslAvatar)); From 0ee7316de04837a695b3da71a7c8701e213f7545 Mon Sep 17 00:00:00 2001 From: defnax Date: Fri, 23 Aug 2024 15:03:27 +0200 Subject: [PATCH 2/4] Fixed dimensions for orange bubble to look better on tray & on overlay --- .../src/gui/images/orange-bubble-64.png | Bin 4822 -> 7982 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/retroshare-gui/src/gui/images/orange-bubble-64.png b/retroshare-gui/src/gui/images/orange-bubble-64.png index 694549936b8a22d41816e26ce4bce0ab7562676f..23f91242a1639ea61ae39c0eea14ecfb0897c33e 100644 GIT binary patch literal 7982 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 literal 4822 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 Date: Thu, 12 Sep 2024 21:38:39 +0200 Subject: [PATCH 3/4] Added additional description field for add rules, links & infos --- retroshare-gui/src/gui/ChatLobbyWidget.cpp | 8 + retroshare-gui/src/gui/ChatLobbyWidget.ui | 161 ++++++++++-------- retroshare-gui/src/gui/chat/ChatWidget.cpp | 5 +- .../src/gui/chat/CreateLobbyDialog.cpp | 4 +- .../src/gui/chat/CreateLobbyDialog.ui | 16 ++ 5 files changed, 124 insertions(+), 70 deletions(-) diff --git a/retroshare-gui/src/gui/ChatLobbyWidget.cpp b/retroshare-gui/src/gui/ChatLobbyWidget.cpp index 9682bc4c5..75fc62bcc 100644 --- a/retroshare-gui/src/gui/ChatLobbyWidget.cpp +++ b/retroshare-gui/src/gui/ChatLobbyWidget.cpp @@ -917,6 +917,13 @@ void ChatLobbyWidget::showBlankPage(ChatLobbyId id, bool subscribed /*= false*/) ui.lobbysec_lineEdit->setText( (( (*it).lobby_flags & RS_CHAT_LOBBY_FLAGS_PGP_SIGNED)?tr("No anonymous IDs"):tr("Anonymous IDs accepted")) ); ui.lobbypeers_lineEdit->setText( QString::number((*it).total_number_of_peers) ); + QString formatDescription = QString::fromUtf8(it->lobby_topic.c_str()); + unsigned int formatFlag = RSHTML_FORMATTEXT_EMBED_LINKS; + + formatDescription = RsHtml().formatText(NULL, formatDescription, formatFlag); + + ui.lobbydesc_textBrowser->setText(formatDescription); + QString text = tr("You're subscribed to this chat room; Double click to show window and chat.") ; if (!subscribed) { @@ -940,6 +947,7 @@ void ChatLobbyWidget::showBlankPage(ChatLobbyId id, bool subscribed /*= false*/) ui.lobbytype_lineEdit->clear(); ui.lobbypeers_lineEdit->clear(); ui.lobbysec_lineEdit->clear(); + ui.lobbydesc_textBrowser->clear(); QString text = tr("No chat room selected. \nSelect chat rooms at left to show details.\nDouble click a chat room to enter and chat.") ; ui.info_Label_Lobby->setText(text) ; diff --git a/retroshare-gui/src/gui/ChatLobbyWidget.ui b/retroshare-gui/src/gui/ChatLobbyWidget.ui index 8f8e8f29d..7e5566aa6 100644 --- a/retroshare-gui/src/gui/ChatLobbyWidget.ui +++ b/retroshare-gui/src/gui/ChatLobbyWidget.ui @@ -259,17 +259,10 @@ 6 - - - - - 12 - 75 - true - - + + - Chat room Name: + TextLabel @@ -293,17 +286,29 @@ - - - - - 12 - 75 - true - + + + + + 0 + 0 + - Chat room Id: + TextLabel + + + + + + + + 0 + 0 + + + + TextLabel @@ -320,8 +325,8 @@ - - + + 12 @@ -330,7 +335,35 @@ - Topic: + Type: + + + + + + + + 12 + 75 + true + + + + Chat room Name: + + + + + + + + 12 + 75 + true + + + + Chat room Id: @@ -350,8 +383,8 @@ - - + + 12 @@ -360,20 +393,7 @@ - Type: - - - - - - - - 0 - 0 - - - - TextLabel + Peers: @@ -391,15 +411,33 @@ - - - - TextLabel + + + + + 75 + true + + + Room infos + + + + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + true + + + + - - + + 12 @@ -408,35 +446,12 @@ - Peers: - - - - - - - - 0 - 0 - - - - TextLabel + Topic: - - - - TextLabel - - - true - - - @@ -450,6 +465,16 @@ + + + + TextLabel + + + true + + + diff --git a/retroshare-gui/src/gui/chat/ChatWidget.cpp b/retroshare-gui/src/gui/chat/ChatWidget.cpp index abab8336a..bda749c38 100644 --- a/retroshare-gui/src/gui/chat/ChatWidget.cpp +++ b/retroshare-gui/src/gui/chat/ChatWidget.cpp @@ -998,7 +998,10 @@ void ChatWidget::scrollToAnchor(QString anchor) void ChatWidget::setWelcomeMessage(QString &text) { - ui->textBrowser->setText(text); + unsigned int formatTextFlag = RSHTML_FORMATTEXT_EMBED_LINKS | RSHTML_FORMATTEXT_OPTIMIZE; + QString formattedWelcomeMessage = RsHtml().formatText(ui->textBrowser->document(), text, formatTextFlag); + + ui->textBrowser->setText(formattedWelcomeMessage); } void ChatWidget::addChatMsg(bool incoming, const QString &name, const QDateTime &sendTime, const QDateTime &recvTime, const QString &message, MsgType chatType) diff --git a/retroshare-gui/src/gui/chat/CreateLobbyDialog.cpp b/retroshare-gui/src/gui/chat/CreateLobbyDialog.cpp index a3416b403..450671ba6 100644 --- a/retroshare-gui/src/gui/chat/CreateLobbyDialog.cpp +++ b/retroshare-gui/src/gui/chat/CreateLobbyDialog.cpp @@ -129,6 +129,8 @@ void CreateLobbyDialog::createLobby() // create chat lobby !! std::string lobby_name = ui->lobbyName_LE->text().toUtf8().constData() ; std::string lobby_topic = ui->lobbyTopic_LE->text().toUtf8().constData() ; + std::string lobby_description = ui->lobbyDescription_TE->toPlainText().toUtf8().constData() ; + std::string lobby_topicwithdesc = lobby_topic + "\n" + lobby_description; // set nick name ! RsGxsId gxs_id ; @@ -149,7 +151,7 @@ void CreateLobbyDialog::createLobby() if(ui->pgp_signed_CB->isChecked()) lobby_flags |= RS_CHAT_LOBBY_FLAGS_PGP_SIGNED ; - ChatLobbyId id = rsMsgs->createChatLobby(lobby_name,gxs_id, lobby_topic, shareList, lobby_flags); + ChatLobbyId id = rsMsgs->createChatLobby(lobby_name,gxs_id, lobby_topicwithdesc, shareList, lobby_flags); std::cerr << "gui: Created chat room " << std::hex << id << std::dec << std::endl ; diff --git a/retroshare-gui/src/gui/chat/CreateLobbyDialog.ui b/retroshare-gui/src/gui/chat/CreateLobbyDialog.ui index 15dab649d..caaf33125 100644 --- a/retroshare-gui/src/gui/chat/CreateLobbyDialog.ui +++ b/retroshare-gui/src/gui/chat/CreateLobbyDialog.ui @@ -149,6 +149,22 @@ + + + + Room info + + + + + + Add additional room rules, links & infos + + + + + + From 54fa8313cba93b7d184b3e25477f66c98e356552 Mon Sep 17 00:00:00 2001 From: defnax Date: Fri, 20 Sep 2024 19:56:26 +0200 Subject: [PATCH 4/4] Show on Topic line only first line complete view in Room info --- retroshare-gui/src/gui/ChatLobbyWidget.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/retroshare-gui/src/gui/ChatLobbyWidget.cpp b/retroshare-gui/src/gui/ChatLobbyWidget.cpp index 75fc62bcc..2754e3639 100644 --- a/retroshare-gui/src/gui/ChatLobbyWidget.cpp +++ b/retroshare-gui/src/gui/ChatLobbyWidget.cpp @@ -912,10 +912,14 @@ void ChatLobbyWidget::showBlankPage(ChatLobbyId id, bool subscribed /*= false*/) { ui.lobbyname_lineEdit->setText( RsHtml::plainText(it->lobby_name) ); ui.lobbyid_lineEdit->setText( QString::number((*it).lobby_id,16) ); - ui.lobbytopic_lineEdit->setText( RsHtml::plainText(it->lobby_topic) ); + //ui.lobbytopic_lineEdit->setText( RsHtml::plainText(it->lobby_topic) ); ui.lobbytype_lineEdit->setText( (( (*it).lobby_flags & RS_CHAT_LOBBY_FLAGS_PUBLIC)?tr("Public"):tr("Private")) ); ui.lobbysec_lineEdit->setText( (( (*it).lobby_flags & RS_CHAT_LOBBY_FLAGS_PGP_SIGNED)?tr("No anonymous IDs"):tr("Anonymous IDs accepted")) ); ui.lobbypeers_lineEdit->setText( QString::number((*it).total_number_of_peers) ); + + QString Topic = RsHtml::plainText(it->lobby_topic); + QString shortTopic = Topic.left(130) + "..."; + ui.lobbytopic_lineEdit->setText(shortTopic); QString formatDescription = QString::fromUtf8(it->lobby_topic.c_str()); unsigned int formatFlag = RSHTML_FORMATTEXT_EMBED_LINKS;