Files
UvosSmartHomeInterface/src/items/messageitem.cpp

89 lines
1.8 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("");
}