23 #include "importantmessageswidget.h" 26 #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())
78 strTimestamp = dateTime.toString(
"[hh:mm:ss]") +
" ";
81 QString formattedMessage =
"<p>" + strTimestamp + message +
"</p>";
83 QLabel* pNewLabel =
new QLabel(
this);
84 pNewLabel->setText(formattedMessage);
85 pNewLabel->setTextInteractionFlags(pNewLabel->textInteractionFlags()
86 | Qt::TextSelectableByMouse);
87 pNewLabel->setCursor(Qt::IBeamCursor);
88 pNewLabel->setWordWrap(
true);
91 d->messageLayout->addWidget(pNewLabel);
97 dropOldWidgetsIfBeyondLimit();
102 addMessage(message, QDateTime::fromTime_t(timestamp));
107 while (!d->labelWidgets.isEmpty())
113 void ImportantMessagesWidget::dropOldWidgetsIfBeyondLimit()
115 while (d->labelWidgets.size() > d->maxMessages)
118 int timeDifference = oldestLabel.timeCreated.secsTo(QDateTime::currentDateTime());
135 if (num >= d->labelWidgets.size())
141 for (; num > 0; --num)
150 if (!d->labelWidgets.isEmpty())
152 delete d->labelWidgets.takeFirst().pLabel;
154 if (d->labelWidgets.isEmpty())
164 return d->maxMessages;
167 void ImportantMessagesWidget::setMaxMessages(
unsigned num)
169 d->maxMessages = num;