// SPDX-License-Identifier: GPL-3.0-or-later /* * Qt mutizone MQTT thermostat * * Copyright (C) 2019 Richard Genoud * */ #include #include #include #include #include #include "settings.h" #include "zoneitem.h" ZoneItem::ZoneItem(const QString &zoneName, QWidget *parent, Qt::WindowFlags f) : QLabel(parent, f) { m_name = zoneName; m_heating_on = false; QFont font = this->font(); font.setPointSize(12); this->setFont(font); this->setText(zoneName); m_temperature_value = FORCE_OFF; m_hygro_value = FORCE_OFF; m_target_temperature = FORCE_OFF; m_available = false; m_boost.temperature = 0; m_boost.end_date = QDateTime(); QSizePolicy *szPolicy = new QSizePolicy(QSizePolicy::Minimum, QSizePolicy::MinimumExpanding, QSizePolicy::PushButton); this->setSizePolicy(*szPolicy); } ZoneItem::~ZoneItem() { } void ZoneItem::mousePressEvent(QMouseEvent* event) { Q_UNUSED(event); m_click_chrono.start(); } void ZoneItem::mouseReleaseEvent(QMouseEvent* event) { Q_UNUSED(event); if (m_click_chrono.elapsed() > 1000) { emit long_clicked(); } else { emit clicked(); } } void ZoneItem::refresh(void) { QString text; Settings *s = Settings::getInstance(); switch (s->getPowerState()) { case OFF: m_target_temperature = FORCE_OFF; break; case ON: m_target_temperature = FORCE_ON; break; case AUTO: case MAX_POWER_STATES: break; } if (s->getEndHoliday() > QDateTime::currentDateTime()) { m_target_temperature = FORCE_OFF; } /* Zone name */ text += QString("
") + m_name + QString("
"); /* Temperature */ text += QString("
"); if (((s->getPowerState() == AUTO) && m_heating_on) || (s->getPowerState() == FORCE_ON)) { text += QString(""); } else { text += QString(""); } if ((m_temperature_value == FORCE_OFF) || !m_available) text += QString("-"); else text += QString::number(m_temperature_value); text += QString("°C").toHtmlEscaped(); text += QString(""); text += QString(" / ").toHtmlEscaped(); if (m_target_temperature == FORCE_OFF) { text += QString("-"); } else if (m_target_temperature == FORCE_ON) { text += QString("+"); } else { text += QString::number(m_target_temperature); text += QString("°C").toHtmlEscaped(); } text += QString("
"); /* hygrometry */ text += QString("
"); if ((m_hygro_value == FORCE_OFF) || !m_available) text += QString("-"); else text += QString::number(m_hygro_value); text += QString("%h").toHtmlEscaped(); text += QString("

"); this->setText(text); } /* vim: set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab: */