Merge 4fd3e23d2c18caf7823177a6dba1179d354cee7b into 8fcc52b304f35a5c7df95efbe2abdd0574048a15

This commit is contained in:
defnax 2025-01-30 19:15:56 +00:00 committed by GitHub
commit 0b8472639c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 176 additions and 75 deletions

View File

@ -912,10 +912,21 @@ 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;
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 +951,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) ;

View File

@ -254,17 +254,10 @@
<property name="topMargin">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="lobbyname_label">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<item row="4" column="1">
<widget class="QLabel" name="lobbysec_lineEdit">
<property name="text">
<string>Chat room Name:</string>
<string>TextLabel</string>
</property>
</widget>
</item>
@ -288,17 +281,29 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lobbyid_label">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
<item row="3" column="1">
<widget class="QLabel" name="lobbytype_lineEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Chat room Id:</string>
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="lobbypeers_lineEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
@ -315,8 +320,8 @@
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lobbytopic_label">
<item row="3" column="0">
<widget class="QLabel" name="lobbytype_label">
<property name="font">
<font>
<pointsize>12</pointsize>
@ -325,7 +330,35 @@
</font>
</property>
<property name="text">
<string>Topic:</string>
<string>Type:</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lobbyname_label">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Chat room Name:</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lobbyid_label">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Chat room Id:</string>
</property>
</widget>
</item>
@ -345,8 +378,8 @@
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lobbytype_label">
<item row="5" column="0">
<widget class="QLabel" name="lobbypeers_label">
<property name="font">
<font>
<pointsize>12</pointsize>
@ -355,20 +388,7 @@
</font>
</property>
<property name="text">
<string>Type:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="lobbytype_lineEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>TextLabel</string>
<string>Peers:</string>
</property>
</widget>
</item>
@ -386,15 +406,33 @@
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="lobbysec_lineEdit">
<property name="text">
<string>TextLabel</string>
<item row="6" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="title">
<string>Room infos</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTextBrowser" name="lobbydesc_textBrowser">
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="lobbypeers_label">
<item row="2" column="0">
<widget class="QLabel" name="lobbytopic_label">
<property name="font">
<font>
<pointsize>12</pointsize>
@ -403,35 +441,12 @@
</font>
</property>
<property name="text">
<string>Peers:</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="lobbypeers_lineEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>TextLabel</string>
<string>Topic:</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QLabel" name="info_Label_Lobby">
<property name="text">
<string notr="true">TextLabel</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<spacer name="lobbyInfoVSpacer">
<property name="orientation">
@ -445,6 +460,16 @@
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QLabel" name="info_Label_Lobby">
<property name="text">
<string notr="true">TextLabel</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>

View File

@ -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)

View File

@ -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 ;

View File

@ -149,6 +149,22 @@
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Room info</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTextEdit" name="lobbyDescription_TE">
<property name="placeholderText">
<string>Add additional room rules, links &amp; infos</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="roomVSpacer">
<property name="orientation">

View File

@ -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"
@ -998,6 +999,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<RsPeerId> privateChatIds;
ChatUserNotify::getPeersWithWaitingChat(privateChatIds);
const HierarchicalProfileInformation *hn = getProfileInfo(entry);
uint32_t status = RS_STATUS_OFFLINE;
const HierarchicalNodeInformation *bestNodeInformation = NULL;
@ -1025,11 +1032,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;i<hn->child_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)));
}
}
}
@ -1047,10 +1069,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<RsPeerId> 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;i<mLocations.size();++i){
if (std::find(privateChatIds.begin(), privateChatIds.end(), RsPeerId(hn->node_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));

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB