qt/LedOK/wProgramManager/wplanitem.cpp
2022-08-25 18:37:24 +08:00

116 lines
3.9 KiB
C++

#include "wplanitem.h"
#include "ui_wplanitem.h"
wPlanItem::wPlanItem(QListWidgetItem *item, QWidget *parent) :
QWidget(parent),
ui(new Ui::wPlanItem),
m_item(item)
{
setAttribute(Qt::WA_DeleteOnClose);
ui->setupUi(this);
initBegin();
ui->sMon ->setChecked(true);
ui->sTues->setChecked(true);
ui->sWed ->setChecked(true);
ui->sThur->setChecked(true);
ui->sFri ->setChecked(true);
ui->sSat ->setChecked(true);
ui->sSun ->setChecked(true);
initEnd();
}
wPlanItem::wPlanItem(const QJsonObject &oRoot, QListWidgetItem *item, QWidget *parent) :
QWidget(parent),
ui(new Ui::wPlanItem),
m_item(item)
{
setAttribute(Qt::WA_DeleteOnClose);
ui->setupUi(this);
initBegin();
setPlan(oRoot);
initEnd();
}
void wPlanItem::initBegin()
{
ui->sMon ->setCheckable(true);
ui->sTues->setCheckable(true);
ui->sWed ->setCheckable(true);
ui->sThur->setCheckable(true);
ui->sFri ->setCheckable(true);
ui->sSat ->setCheckable(true);
ui->sSun ->setCheckable(true);
ui->sMon ->setProperty("ssName", "weeklySelector");
ui->sTues->setProperty("ssName", "weeklySelector");
ui->sWed ->setProperty("ssName", "weeklySelector");
ui->sThur->setProperty("ssName", "weeklySelector");
ui->sFri ->setProperty("ssName", "weeklySelector");
ui->sSat ->setProperty("ssName", "weeklySelector");
ui->sSun ->setProperty("ssName", "weeklySelector");
}
void wPlanItem::initEnd()
{
connect(ui->tStart, SIGNAL(timeChanged(const QTime&)), this, SLOT(onItemChanged()));
connect(ui->tEnd, SIGNAL(timeChanged(const QTime&)), this, SLOT(onItemChanged()));
connect(ui->sMon, SIGNAL(toggled(bool)), this, SLOT(onItemChanged()));
connect(ui->sTues, SIGNAL(toggled(bool)), this, SLOT(onItemChanged()));
connect(ui->sWed, SIGNAL(toggled(bool)), this, SLOT(onItemChanged()));
connect(ui->sThur, SIGNAL(toggled(bool)), this, SLOT(onItemChanged()));
connect(ui->sFri, SIGNAL(toggled(bool)), this, SLOT(onItemChanged()));
connect(ui->sSat, SIGNAL(toggled(bool)), this, SLOT(onItemChanged()));
connect(ui->sSun, SIGNAL(toggled(bool)), this, SLOT(onItemChanged()));
connect(ui->bnDel, SIGNAL(clicked(bool)), this, SLOT(onDelete(bool)));
}
wPlanItem::~wPlanItem()
{
delete ui;
}
void wPlanItem::onItemChanged()
{
emit sigItemChanged(m_item);
}
void wPlanItem::onDelete(bool)
{
emit sigDelete(m_item);
}
void wPlanItem::setNum(int n)
{
ui->wNum->setText(QString("%1").arg(n));
}
void wPlanItem::setPlan(const QJsonObject &oRoot)
{
QJsonArray oWeekly = oRoot["weekly"].toArray();
ui->tStart->setTime(QTime::fromString(oRoot["start"].toString(), "hh:mm"));
ui->tEnd->setTime(QTime::fromString(oRoot["end"].toString(), "hh:mm"));
ui->sMon ->setChecked(oWeekly.contains(QJsonValue(1)));
ui->sTues->setChecked(oWeekly.contains(QJsonValue(2)));
ui->sWed ->setChecked(oWeekly.contains(QJsonValue(3)));
ui->sThur->setChecked(oWeekly.contains(QJsonValue(4)));
ui->sFri ->setChecked(oWeekly.contains(QJsonValue(5)));
ui->sSat ->setChecked(oWeekly.contains(QJsonValue(6)));
ui->sSun ->setChecked(oWeekly.contains(QJsonValue(7)));
}
QJsonObject wPlanItem::planJson() const
{
QJsonObject oRoot;
QJsonArray oWeekly;
if(ui->sMon ->isChecked()) oWeekly.append(QJsonValue(1));
if(ui->sTues->isChecked()) oWeekly.append(QJsonValue(2));
if(ui->sWed ->isChecked()) oWeekly.append(QJsonValue(3));
if(ui->sThur->isChecked()) oWeekly.append(QJsonValue(4));
if(ui->sFri ->isChecked()) oWeekly.append(QJsonValue(5));
if(ui->sSat ->isChecked()) oWeekly.append(QJsonValue(6));
if(ui->sSun ->isChecked()) oWeekly.append(QJsonValue(7));
oRoot["start"] = ui->tStart->time().toString("hh:mm");
oRoot["end"] = ui->tEnd->time().toString("hh:mm");
oRoot["weekly"] = oWeekly;
return oRoot;
}