- // SPDX-License-Identifier: GPL-3.0-or-later
- /*
- * Qt mutizone MQTT thermostat
- *
- * Copyright (C) 2019 Richard Genoud
- *
- */
-
- #include <QLocale>
- #include <QLabel>
- #include <QDateTime>
- #include <QSizePolicy>
- #include <QTime>
-
- #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("<center><b>") + m_name + QString("</b></center>");
-
- /* Temperature */
- text += QString("<center><b>");
- if (((s->getPowerState() == AUTO) && m_heating_on) || (s->getPowerState() == FORCE_ON)) {
- text += QString("<font color='red'>");
- } else {
- text += QString("<font color='black'>");
- }
- if ((m_temperature_value == FORCE_OFF) || !m_available)
- text += QString("-");
- else
- text += QString::number(m_temperature_value);
- text += QString("°C").toHtmlEscaped();
- text += QString("</font>");
-
- 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("</b></center>");
-
- /* hygrometry */
- text += QString("<center><b>");
- if ((m_hygro_value == FORCE_OFF) || !m_available)
- text += QString("-");
- else
- text += QString::number(m_hygro_value);
- text += QString("%h").toHtmlEscaped();
- text += QString("</b></center><br/>");
-
- this->setText(text);
- }
-
- /* vim: set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab: */
|