File indexing completed on 2024-05-12 16:27:34
0001 /* 0002 SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 #include "roomcounterinfowidget.h" 0007 #include <KLocalizedString> 0008 RoomCounterInfoWidget::RoomCounterInfoWidget(QWidget *parent) 0009 : KMessageWidget(parent) 0010 { 0011 setVisible(false); 0012 setCloseButtonVisible(false); 0013 setMessageType(Information); 0014 #if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) 0015 setPosition(KMessageWidget::Header); 0016 #endif 0017 connect(this, &KMessageWidget::linkActivated, this, &RoomCounterInfoWidget::slotLinkActivated); 0018 } 0019 0020 RoomCounterInfoWidget::~RoomCounterInfoWidget() = default; 0021 0022 ChannelCounterInfo RoomCounterInfoWidget::channelCounterInfo() const 0023 { 0024 return mChannelCounterInfo; 0025 } 0026 0027 void RoomCounterInfoWidget::setChannelCounterInfo(const ChannelCounterInfo &channelCounterInfo) 0028 { 0029 if (mChannelCounterInfo != channelCounterInfo) { 0030 mChannelCounterInfo = channelCounterInfo; 0031 updateInfo(); 0032 } 0033 } 0034 0035 void RoomCounterInfoWidget::updateInfo() 0036 { 0037 if (mChannelCounterInfo.isValid() && mChannelCounterInfo.unreadMessages() > 0) { 0038 setText(i18np("%4 %1 new message since %2. %3", 0039 "%4 %1 new messages since %2. %3", 0040 mChannelCounterInfo.unreadMessages(), 0041 mChannelCounterInfo.unreadFrom().toString(), 0042 QStringLiteral(" <a href=\"markAsRead\">%1</a>").arg(i18n("(Mark As Read)")), 0043 QStringLiteral("<a href=\"gotofirstunreadmessage\">%1</a>").arg(i18n("(Jump to first Unread)")))); 0044 setVisible(true); // FIXME: AnimateShow create some pb. Need to investigate it 0045 } else { 0046 setVisible(false); 0047 } 0048 } 0049 0050 void RoomCounterInfoWidget::slotLinkActivated(const QString &contents) 0051 { 0052 if (contents == QLatin1String("markAsRead")) { 0053 Q_EMIT markAsRead(); 0054 } else if (contents == QLatin1String("gotofirstunreadmessage")) { 0055 Q_EMIT jumpToUnreadMessage(mChannelCounterInfo.unreadMessages()); 0056 setVisible(false); 0057 } 0058 } 0059 0060 #include "moc_roomcounterinfowidget.cpp"