1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

Add groupchat notification support

This commit is contained in:
Flynn 2014-06-27 16:10:02 -07:00
parent 20235b1c93
commit ed741b6364
5 changed files with 37 additions and 4 deletions

View File

@ -16,6 +16,9 @@ Group::Group(int GroupId, QString Name)
peerInfoTimer.setInterval(500);
peerInfoTimer.setSingleShot(false);
//peerInfoTimer.start();
//in groupchats, we only notify on messages containing your name
hasNewMessages = 0;
}
Group::~Group()

View File

@ -32,6 +32,7 @@ public:
GroupChatForm* chatForm;
bool hasPeerInfo;
QTimer peerInfoTimer;
int hasNewMessages;
};
#endif // GROUP_H

View File

@ -18,6 +18,7 @@ GroupWidget::GroupWidget(int GroupId, QString Name)
textLayout.setMargin(0);
avatar.setPixmap(QPixmap("img/contact list icons/group_2x.png"));
statusPic.setPixmap(QPixmap("img/status/dot_away.png"));
name.setText(Name);
QFont small;
small.setPixelSize(10);
@ -41,6 +42,9 @@ GroupWidget::GroupWidget(int GroupId, QString Name)
layout.addSpacing(5);
layout.addLayout(&textLayout);
layout.addStretch();
layout.addSpacing(5);
layout.addWidget(&statusPic);
layout.addSpacing(5);
isActiveWidget = 0;
}
@ -71,11 +75,20 @@ void GroupWidget::contextMenuEvent(QContextMenuEvent * event)
void GroupWidget::mousePressEvent(QMouseEvent *event)
{
if ((event->buttons() & Qt::LeftButton) == Qt::LeftButton)
{
if (isActiveWidget)
{
QPalette pal;
pal.setColor(QPalette::Background, QColor(250,250,250,255));
this->setPalette(pal);
}
else
{
QPalette pal;
pal.setColor(QPalette::Background, QColor(85,85,85,255));
this->setPalette(pal);
}
}
}
void GroupWidget::enterEvent(QEvent*)

View File

@ -25,7 +25,7 @@ signals:
public:
int groupId;
QLabel avatar, name, nusers;
QLabel avatar, name, nusers, statusPic;
QHBoxLayout layout;
QVBoxLayout textLayout;
void setAsInactiveChatroom();

View File

@ -423,6 +423,16 @@ void Widget::onGroupMessageReceived(int groupnumber, int friendgroupnumber, cons
return;
g->chatForm->addGroupMessage(message, friendgroupnumber);
if (isGroupWidgetActive != 1 || (g->groupId != activeGroupWidget->groupId))
{
if (message.contains(Settings::getInstance().getUsername(), Qt::CaseInsensitive))
{
playMessageNotification();
g->hasNewMessages = 1;
g->widget->statusPic.setPixmap(QPixmap("img/status/dot_groupchat_notification.png"));
}
}
}
void Widget::onGroupNamelistChanged(int groupnumber, int peernumber, uint8_t Change)
@ -459,6 +469,12 @@ void Widget::onGroupWidgetClicked(GroupWidget* widget)
widget->setAsActiveChatroom();
isFriendWidgetActive = 0;
isGroupWidgetActive = 1;
if (g->hasNewMessages != 0)
{
g->hasNewMessages = 0;
g->widget->statusPic.setPixmap(QPixmap("img/status/dot_groupchat.png"));
}
}
void Widget::removeGroup(int groupId)