6 #include "importantmessageswidget.h" 9 #include "ui_importantmessageswidget.h" 11 #include <QVBoxLayout> 13 DClass<ImportantMessagesWidget> :
public Ui::ImportantMessagesWidget
19 MessageLabel(QLabel* pLabel)
21 this->pLabel = pLabel;
22 this->timeCreated = QDateTime::currentDateTime();
26 QDateTime timeCreated;
29 static const unsigned DEFAULT_MAX_MESSAGES = 0;
30 static const int MAX_MSG_KEEP_TIME_SEC = 10;
32 QList<MessageLabel> labelWidgets;
47 ImportantMessagesWidget::~ImportantMessagesWidget()
53 addMessage(message, QDateTime());
58 QString strTimestamp =
"";
59 if (dateTime.isValid())
61 strTimestamp = dateTime.toString(
"[hh:mm:ss]") +
" ";
64 QString formattedMessage =
"<p>" + strTimestamp + message +
"</p>";
67 font.setPointSize(qMax(1, font.pointSize() - 1));
69 QLabel* pNewLabel =
new QLabel(
this);
70 pNewLabel->setFont(font);
71 pNewLabel->setText(formattedMessage);
72 pNewLabel->setTextInteractionFlags(pNewLabel->textInteractionFlags()
73 | Qt::TextSelectableByMouse);
74 pNewLabel->setWordWrap(
true);
77 d->messageLayout->addWidget(pNewLabel);
83 dropOldWidgetsIfBeyondLimit();
88 addMessage(message, QDateTime::fromTime_t(timestamp));
93 while (!d->labelWidgets.isEmpty())
99 void ImportantMessagesWidget::dropOldWidgetsIfBeyondLimit()
101 while (d->labelWidgets.size() > d->maxMessages)
104 int timeDifference = oldestLabel.timeCreated.secsTo(QDateTime::currentDateTime());
121 if (num >= d->labelWidgets.size())
127 for (; num > 0; --num)
136 if (!d->labelWidgets.isEmpty())
138 delete d->labelWidgets.takeFirst().pLabel;
140 if (d->labelWidgets.isEmpty())
150 return d->maxMessages;
153 void ImportantMessagesWidget::setMaxMessages(
unsigned num)
155 d->maxMessages = num;