Files
k7/TransientMessageWidget.cpp

73 lines
1.6 KiB
C++
Raw Normal View History

2019-10-25 20:16:43 +02:00
/*
* File: TransientMessageWidget.cpp
2019-10-28 14:12:50 +01:00
* Author: SET - nmset@yandex.com
2019-10-25 20:16:43 +02:00
* License : LGPL v2.1
* Copyright SET - © 2019
*
* Created on 16 octobre 2019, 18:25
*/
#include "TransientMessageWidget.h"
TransientMessageWidget::TransientMessageWidget()
: WText()
{
Init();
}
TransientMessageWidget::TransientMessageWidget(const WString& text)
: WText(text)
{
Init();
}
TransientMessageWidget::TransientMessageWidget(const WString& text, TextFormat textFormat)
: WText(text, textFormat)
{
Init();
}
TransientMessageWidget::~TransientMessageWidget()
{
m_timer.stop();
}
void TransientMessageWidget::Init()
{
m_stackSize = 8;
m_interval = (std::chrono::milliseconds) 10 * 1000;
m_timer.setSingleShot(true);
SetInterval(m_interval);
m_timer.timeout().connect(this, &TransientMessageWidget::OnTimer);
}
void TransientMessageWidget::OnTimer()
{
WText::setText(WString::Empty);
}
void TransientMessageWidget::SetText(const WString& text, bool stack)
{
m_timer.stop();
2020-11-14 14:46:28 +01:00
if (stack)
{
2019-10-25 20:16:43 +02:00
// Remove the oldest message if stack is full
2020-11-14 14:46:28 +01:00
if (m_stack.size() == m_stackSize)
{
2019-10-25 20:16:43 +02:00
m_stack.pop_back();
}
m_stack.push_front(text);
}
WText::setText(text);
// List messages in the tool tip
WString ttt = WString::Empty;
list<WString>::iterator it;
uint idx = m_stack.size();
for (it = m_stack.begin(); it != m_stack.end(); it++)
{
ttt += WString(to_string(idx)) + WString(". ") + *it + WString("\n");
idx--;
}
setToolTip(ttt);
m_timer.start();
}