Files
k7/TransientMessageWidget.h
2022-11-19 15:56:56 +01:00

70 lines
1.4 KiB
C++

/*
* File: TransientMessageWidget.h
* Author: Saleem Edah-Tally - nmset@yandex.com
* License : LGPL v2.1
* Copyright Saleem Edah-Tally - © 2019
*
* Created on 16 octobre 2019, 18:25
*/
#ifndef TRANSIENTMESSAGEWIDGET_H
#define TRANSIENTMESSAGEWIDGET_H
#include <Wt/WText.h>
#include <Wt/WTimer.h>
#include <list>
using namespace Wt;
using namespace std;
/**
* A transient stacked message zone.
* By default, 8 messages can be stacked in a list shown
* in the tool tip; each message is shown for 10 seconds.
*/
class TransientMessageWidget : public WText
{
public:
TransientMessageWidget();
TransientMessageWidget(const WString& text);
TransientMessageWidget(const WString& text, TextFormat textFormat);
virtual ~TransientMessageWidget();
void SetInterval(std::chrono::milliseconds interval)
{
m_timer.setInterval(interval);
}
std::chrono::milliseconds Interval()
{
return m_timer.interval();
}
void SetStackSize(uint sz)
{
m_stackSize = sz;
}
uint GetStackSize()
{
return m_stackSize;
}
/**
* Main function to show and pile up messages.
* @param text
* @param stack
*/
void SetText(const WString& text, bool stack = true);
private:
uint m_stackSize;
std::chrono::milliseconds m_interval;
WTimer m_timer;
list<WString> m_stack;
void Init();
void OnTimer();
};
#endif /* TRANSIENTMESSAGEWIDGET_H */