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()
70 addMessage(message, QDateTime());
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 addMessage(message, QDateTime::fromTime_t(timestamp));
105 while (!d->labelWidgets.isEmpty())
111 void ImportantMessagesWidget::dropOldWidgetsIfBeyondLimit()
113 while (d->labelWidgets.size() > d->maxMessages)
116 int timeDifference = oldestLabel.timeCreated.secsTo(QDateTime::currentDateTime());
131 if (num >= d->labelWidgets.size())
135 for (; num > 0; --num)
142 if (!d->labelWidgets.isEmpty())
144 delete d->labelWidgets.takeFirst().pLabel;
146 if (d->labelWidgets.isEmpty())
156 return d->maxMessages;
159 void ImportantMessagesWidget::setMaxMessages(
unsigned num)
161 d->maxMessages = num;