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"