89 lines
1.7 KiB
C++
89 lines
1.7 KiB
C++
#include "messageitem.h"
|
|
|
|
#include <QTimer>
|
|
#include <QSound>
|
|
|
|
BroadCast* MessageItem::broadCast = nullptr;
|
|
|
|
MessageItem::MessageItem(uint32_t itemIdIn, QString name, uint8_t value, QObject *parent):
|
|
Item(itemIdIn, name, value, parent)
|
|
{
|
|
|
|
}
|
|
|
|
MessageItem::MessageItem(const ItemData& itemData, QObject *parent):
|
|
Item(itemData, parent)
|
|
{
|
|
|
|
}
|
|
|
|
MessageItem::~MessageItem()
|
|
{
|
|
closeMessageBox();
|
|
}
|
|
|
|
void MessageItem::setValue(uint8_t value)
|
|
{
|
|
Item::setValue(value);
|
|
if(value && !messageBox_)
|
|
{
|
|
if(broadCast) broadCast->sendMessage(name_, message_);
|
|
if(!alertSoundFileName.isEmpty()) QSound::play(alertSoundFileName);
|
|
messageBox_ = new QMessageBox(QMessageBox::NoIcon, name_, message_);
|
|
messageBox_->setModal(false);
|
|
connect(messageBox_, &QMessageBox::finished, this, &MessageItem::closeMessageBox);
|
|
messageBox_->show();
|
|
}
|
|
else if(!value && messageBox_)
|
|
{
|
|
closeMessageBox();
|
|
}
|
|
}
|
|
|
|
|
|
void MessageItem::closeMessageBox()
|
|
{
|
|
if(messageBox_)
|
|
{
|
|
value_ = 0;
|
|
messageBox_->hide();
|
|
delete messageBox_;
|
|
messageBox_ = nullptr;
|
|
}
|
|
}
|
|
|
|
QString MessageItem::getAlert()
|
|
{
|
|
return alertSoundFileName;
|
|
}
|
|
|
|
void MessageItem::setAlert(const QString &in)
|
|
{
|
|
alertSoundFileName = in;
|
|
}
|
|
|
|
void MessageItem::setMessage(const QString& in)
|
|
{
|
|
message_ = in;
|
|
}
|
|
|
|
QString MessageItem::getMessage()
|
|
{
|
|
return message_;
|
|
}
|
|
|
|
void MessageItem::store(QJsonObject &json)
|
|
{
|
|
json["Type"] = "Message";
|
|
Item::store(json);
|
|
json["Message"] = message_;
|
|
if(!alertSoundFileName.isEmpty()) json["Alert"] = alertSoundFileName;
|
|
}
|
|
|
|
void MessageItem::load(const QJsonObject &json, const bool preserve)
|
|
{
|
|
Item::load(json,preserve);
|
|
message_ = json["Message"].toString("Invalid Message");
|
|
alertSoundFileName = json["Alert"].toString("");
|
|
}
|