23 #include "importantmessageswidget.h"
25 #include "ui_importantmessageswidget.h"
28 #include <QVBoxLayout>
30 DClass<ImportantMessagesWidget> :
public Ui::ImportantMessagesWidget
36 MessageLabel(QLabel *pLabel)
38 this->pLabel = pLabel;
39 this->timeCreated = QDateTime::currentDateTime();
43 QDateTime timeCreated;
46 static const unsigned DEFAULT_MAX_MESSAGES = 0;
47 static const int MAX_MSG_KEEP_TIME_SEC = 10;
49 QList<MessageLabel> labelWidgets;
64 ImportantMessagesWidget::~ImportantMessagesWidget()
75 QString strTimestamp =
"";
76 if (dateTime.isValid())
77 strTimestamp = dateTime.toString(
"[hh:mm:ss]") +
" ";
79 QString formattedMessage =
"<p>" + strTimestamp + message +
"</p>";
81 QLabel *pNewLabel =
new QLabel(
this);
82 pNewLabel->setText(formattedMessage);
83 pNewLabel->setTextInteractionFlags(pNewLabel->textInteractionFlags()
84 | Qt::TextSelectableByMouse);
85 pNewLabel->setCursor(Qt::IBeamCursor);
86 pNewLabel->setWordWrap(
true);
89 d->messageLayout->addWidget(pNewLabel);
95 dropOldWidgetsIfBeyondLimit();
100 #if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)
101 addMessage(message, QDateTime::fromSecsSinceEpoch(timestamp));
103 addMessage(message, QDateTime::fromTime_t(timestamp));
109 while (!d->labelWidgets.isEmpty())
115 void ImportantMessagesWidget::dropOldWidgetsIfBeyondLimit()
117 while (d->labelWidgets.size() > d->maxMessages)
120 int timeDifference = oldestLabel.timeCreated.secsTo(QDateTime::currentDateTime());
135 if (num >= d->labelWidgets.size())
139 for (; num > 0; --num)
146 if (!d->labelWidgets.isEmpty())
148 delete d->labelWidgets.takeFirst().pLabel;
150 if (d->labelWidgets.isEmpty())
160 return d->maxMessages;
163 void ImportantMessagesWidget::setMaxMessages(
unsigned num)
165 d->maxMessages = num;