|
@@ -10,9 +10,11 @@
|
|
|
#include "warning.h"
|
|
|
#include "tipwidget.h"
|
|
|
#include "LHQLogAPI.h"
|
|
|
+#include "savetotemplate.h"
|
|
|
|
|
|
|
|
|
-ManagerPlan::ManagerPlan(QDialog *parent) :
|
|
|
+ManagerPlan::ManagerPlan(Enum_Mode mode, QDialog *parent) :
|
|
|
+ m_mode(mode),
|
|
|
QDialog(parent),
|
|
|
ui(new Ui::ManagerPlan)
|
|
|
{
|
|
@@ -89,6 +91,7 @@ ManagerPlan::ManagerPlan(QDialog *parent) :
|
|
|
connect(ui->pBtn_deletePlan, &QPushButton::clicked, this, &ManagerPlan::do_deletePlanItem);
|
|
|
connect(ui->pBtn_ok, &QPushButton::clicked, this, &ManagerPlan::do_pBtn_ok);
|
|
|
connect(ui->pCard, &PlanCard::signal_clickedItem, this, &ManagerPlan::do_tableView_clicked);
|
|
|
+ connect(ui->pBtn_saveTotemplate, &QPushButton::clicked, this, &ManagerPlan::do_saveTemplate);
|
|
|
|
|
|
/* 设置皮肤样式 */
|
|
|
do_setUIStyle();
|
|
@@ -105,6 +108,9 @@ ManagerPlan::ManagerPlan(QDialog *parent) :
|
|
|
|
|
|
/* 默认显示周计划 */
|
|
|
ui->tabWidget->setCurrentIndex(0);
|
|
|
+
|
|
|
+ /* 设置显示模式 */
|
|
|
+ setMode(mode);
|
|
|
}
|
|
|
|
|
|
ManagerPlan::~ManagerPlan()
|
|
@@ -112,21 +118,6 @@ ManagerPlan::~ManagerPlan()
|
|
|
delete ui;
|
|
|
}
|
|
|
|
|
|
-/* 设置显示模式,需要在执行exec()之前调用 */
|
|
|
-void ManagerPlan::setMode(Enum_Mode mode)
|
|
|
-{
|
|
|
- if(mode == Enum_Mode::Mode_Modify)
|
|
|
- {
|
|
|
- ui->widget_addPlan->setVisible(false); /* 隐藏添加计划区域 */
|
|
|
- ui->label_title->setText("编辑"); /* 修改标题 */
|
|
|
- ui->widget_background->resize(this->width(), 600); /* 修改窗口大小 */
|
|
|
- }else {
|
|
|
- ui->label_title->setText("新增"); /* 修改标题 */
|
|
|
- ui->widget_background->resize(this->width(), 740); /* 修改窗口大小 */
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
/* 设置频率信息 */
|
|
|
void ManagerPlan::setFrequencyID(ChannelInfo& info)
|
|
|
{
|
|
@@ -145,12 +136,15 @@ void ManagerPlan::setFrequencyID(ChannelInfo& info)
|
|
|
}
|
|
|
/* 设置当前频率的计划列表 */
|
|
|
ui->pCard->setChannelInfo(info);
|
|
|
- /* 设置当前频率的计划列表 */
|
|
|
- auto list = findPlanList(info.ChannelID);
|
|
|
- /* 设置计划列表 */
|
|
|
- ui->pCard->setPlanList(list);
|
|
|
+ if((m_mode == Enum_Mode::Mode_Add) || (m_mode == Enum_Mode::Mode_Modify))
|
|
|
+ {
|
|
|
+ /* 设置当前频率的计划列表 */
|
|
|
+ auto list = findPlanList(info.ChannelID);
|
|
|
+ /* 设置计划列表 */
|
|
|
+ ui->pCard->setPlanList(list);
|
|
|
+ }
|
|
|
|
|
|
- if(list.isEmpty())
|
|
|
+ if(ui->pCard->isPlanEmpty())
|
|
|
{
|
|
|
/* 没有计划,隐藏按钮 */
|
|
|
setButtonVisible(false);
|
|
@@ -161,12 +155,53 @@ void ManagerPlan::setFrequencyID(ChannelInfo& info)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+/* 设置计划列表,给修改模版使用 */
|
|
|
+void ManagerPlan::setPlanList(QList<OnePlanItemInfo>& listPlan)
|
|
|
+{
|
|
|
+ /* 设置当前频率的计划列表 */
|
|
|
+ ui->pCard->setPlanList(listPlan);
|
|
|
+ /* 转换为PlanInfo */
|
|
|
+ QList<PlanInfo> list;
|
|
|
+ ui->pCard->getPlanList(list);
|
|
|
+ /* 设置计划列表 */
|
|
|
+ m_mapPlanInfo.insert(m_channelInfo.ChannelID, list);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
/* 修改UI样式 */
|
|
|
void ManagerPlan::do_setUIStyle()
|
|
|
{
|
|
|
this->setStyleSheet(EPUIStyle.StrQSS_ManagerPlan);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+/* 设置显示模式,需要在执行exec()之前调用 */
|
|
|
+void ManagerPlan::setMode(Enum_Mode mode)
|
|
|
+{
|
|
|
+ if(mode == Enum_Mode::Mode_Add)
|
|
|
+ {
|
|
|
+ ui->label_title->setText("新增"); /* 修改标题 */
|
|
|
+ ui->widget_background->resize(this->width(), 740); /* 修改窗口大小 */
|
|
|
+ }
|
|
|
+ else if(mode == Enum_Mode::Mode_Modify)
|
|
|
+ {
|
|
|
+ ui->widget_addPlan->setVisible(false); /* 隐藏添加计划区域 */
|
|
|
+ ui->label_title->setText("编辑"); /* 修改标题 */
|
|
|
+ ui->widget_background->resize(this->width(), 600); /* 修改窗口大小 */
|
|
|
+ }
|
|
|
+ else if(mode == Enum_Mode::Mode_ModifyTemplate)
|
|
|
+ {
|
|
|
+ ui->widget_addPlan->setVisible(false); /* 隐藏添加计划区域 */
|
|
|
+ ui->label_title->setText("修改模板"); /* 修改标题 */
|
|
|
+ ui->widget_background->resize(this->width(), 600); /* 修改窗口大小 */
|
|
|
+ ui->pBtn_saveTotemplate->setVisible(false); /* 隐藏保存模版按钮 */
|
|
|
+ }
|
|
|
+ m_mode = mode;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
/* 设置时间和日期选择Tab */
|
|
|
void ManagerPlan::setTabWidget()
|
|
|
{
|
|
@@ -235,11 +270,15 @@ QList<PlanInfo>& ManagerPlan::findPlanList(const int chnID)
|
|
|
if(list == m_mapPlanInfo.end())
|
|
|
{
|
|
|
QList<PlanInfo> listPlan;
|
|
|
- /* 将PData的计划拷贝过来 */
|
|
|
- auto pCard = PData.findPlanCard(chnID);
|
|
|
- if(pCard != nullptr)
|
|
|
+ /* 如果是修改模版,则不从全局获取数据,插入一个空的即可 */
|
|
|
+ if(m_mode != Enum_Mode::Mode_ModifyTemplate)
|
|
|
{
|
|
|
- pCard->getPlanList(listPlan);
|
|
|
+ /* 将PData的计划拷贝过来 */
|
|
|
+ auto pCard = PData.findPlanCard(chnID);
|
|
|
+ if(pCard != nullptr)
|
|
|
+ {
|
|
|
+ pCard->getPlanList(listPlan);
|
|
|
+ }
|
|
|
}
|
|
|
m_mapPlanInfo.insert(chnID, listPlan);
|
|
|
}
|
|
@@ -294,7 +333,7 @@ bool ManagerPlan::checkOnAndOffTime(const PlanInfo& info)
|
|
|
else if(info.onWeekDay == info.offWeekDay)
|
|
|
{
|
|
|
/* 开机和关机在同一天 */
|
|
|
- if(info.onTime.time() >= info.offTime.time())
|
|
|
+ if(info.onDateTime.time() >= info.offDateTime.time())
|
|
|
{
|
|
|
/* 开机时间大于等于关机时间,冲突 */
|
|
|
return true;
|
|
@@ -310,15 +349,15 @@ bool ManagerPlan::checkOnAndOffTime(const PlanInfo& info)
|
|
|
{
|
|
|
/* 特殊日判断 */
|
|
|
/* 开机和关机在不同天 */
|
|
|
- if(info.onTime.date() > info.offTime.date())
|
|
|
+ if(info.onDateTime.date() > info.offDateTime.date())
|
|
|
{
|
|
|
/* 开机时间大于关机时间,冲突 */
|
|
|
return true;
|
|
|
}
|
|
|
- else if(info.onTime.date() == info.offTime.date())
|
|
|
+ else if(info.onDateTime.date() == info.offDateTime.date())
|
|
|
{
|
|
|
/* 开机和关机在同一天 */
|
|
|
- if(info.onTime.time() >= info.offTime.time())
|
|
|
+ if(info.onDateTime.time() >= info.offDateTime.time())
|
|
|
{
|
|
|
/* 开机时间大于等于关机时间,冲突 */
|
|
|
return true;
|
|
@@ -405,8 +444,8 @@ bool ManagerPlan::checkPlanTimeConflict(const int chnID, const PlanInfo& info)
|
|
|
for(const auto& it : list)
|
|
|
{
|
|
|
/* info结束时间小于开始时间,或者info开始时间大于结束时间,就不冲突 */
|
|
|
- bool isLess = timeIsGerater(it.onWeekDay, it.onTime, info.offWeekDay, info.offTime);
|
|
|
- bool isGreater = timeIsGerater(info.onWeekDay, info.onTime, it.offWeekDay, it.offTime);
|
|
|
+ bool isLess = timeIsGerater(it.onWeekDay, it.onDateTime, info.offWeekDay, info.offDateTime);
|
|
|
+ bool isGreater = timeIsGerater(info.onWeekDay, info.onDateTime, it.offWeekDay, it.offDateTime);
|
|
|
if(isLess || isGreater)
|
|
|
{
|
|
|
/* 时间不冲突 */
|
|
@@ -423,7 +462,7 @@ bool ManagerPlan::checkPlanTimeConflict(const int chnID, const PlanInfo& info)
|
|
|
/* 判断计划时间和列表中的时间是否冲突,添加排除的计划,用于比较修改的计划 */
|
|
|
bool ManagerPlan::checkPlanTimeConflict(const int chnID, const PlanInfo& newInfo, const PlanInfo& exInfo)
|
|
|
{
|
|
|
- /* 这里采用拷贝的方式获取,后续不需要再把排出的项放回去 */
|
|
|
+ /* 这里采用拷贝的方式获取,后续不需要再把排除的项放回去 */
|
|
|
QList<PlanInfo> list = findPlanList(chnID);
|
|
|
/* 先去掉需要排除的项 */
|
|
|
list.removeOne(exInfo);
|
|
@@ -434,8 +473,8 @@ bool ManagerPlan::checkPlanTimeConflict(const int chnID, const PlanInfo& newInfo
|
|
|
for(const auto& it : list)
|
|
|
{
|
|
|
/* info结束时间小于开始时间,或者info开始时间大于结束时间,就不冲突 */
|
|
|
- bool isLess = timeIsGerater(it.onWeekDay, it.onTime, newInfo.offWeekDay, newInfo.offTime);
|
|
|
- bool isGreater = timeIsGerater(newInfo.onWeekDay, newInfo.onTime, it.offWeekDay, it.offTime);
|
|
|
+ bool isLess = timeIsGerater(it.onWeekDay, it.onDateTime, newInfo.offWeekDay, newInfo.offDateTime);
|
|
|
+ bool isGreater = timeIsGerater(newInfo.onWeekDay, newInfo.onDateTime, it.offWeekDay, it.offDateTime);
|
|
|
if(isLess || isGreater)
|
|
|
{
|
|
|
/* 时间不冲突 */
|
|
@@ -497,19 +536,19 @@ void ManagerPlan::do_addPlanItem()
|
|
|
{
|
|
|
/* 正常日 */
|
|
|
one.onWeekDay = static_cast<enum_WeekDay>(ui->cBox_selectWeekStart->itemData(ui->cBox_selectWeekStart->currentIndex()).toInt());
|
|
|
- one.onTime.setTime(ui->timeEdit_weekStart->getTime());
|
|
|
+ one.onDateTime.setTime(ui->timeEdit_weekStart->getTime());
|
|
|
|
|
|
one.offWeekDay = static_cast<enum_WeekDay>(ui->cBox_selectWeekEnd->itemData(ui->cBox_selectWeekEnd->currentIndex()).toInt());
|
|
|
- one.offTime.setTime(ui->timeEdit_weekEnd->getTime());
|
|
|
+ one.offDateTime.setTime(ui->timeEdit_weekEnd->getTime());
|
|
|
}else {
|
|
|
/* 特殊日 */
|
|
|
one.onWeekDay = enum_WeekDay::WeekDay_Special;
|
|
|
- one.onTime.setDate(ui->dateEdit_specialStart->date());
|
|
|
- one.onTime.setTime(ui->timeEdit_specialStart->getTime());
|
|
|
+ one.onDateTime.setDate(ui->dateEdit_specialStart->date());
|
|
|
+ one.onDateTime.setTime(ui->timeEdit_specialStart->getTime());
|
|
|
|
|
|
one.offWeekDay = enum_WeekDay::WeekDay_Special;
|
|
|
- one.offTime.setDate(ui->dateEdit_specialEnd->date());
|
|
|
- one.offTime.setTime(ui->timeEdit_specialEnd->getTime());
|
|
|
+ one.offDateTime.setDate(ui->dateEdit_specialEnd->date());
|
|
|
+ one.offDateTime.setTime(ui->timeEdit_specialEnd->getTime());
|
|
|
}
|
|
|
|
|
|
|
|
@@ -558,17 +597,17 @@ void ManagerPlan::do_modifyPlanItem()
|
|
|
{
|
|
|
/* 正常日 */
|
|
|
one.onWeekDay = static_cast<enum_WeekDay>(ui->cBox_selectWeekStart->itemData(ui->cBox_selectWeekStart->currentIndex()).toInt());
|
|
|
- one.onTime.setTime(ui->timeEdit_weekStart->getTime());
|
|
|
+ one.onDateTime.setTime(ui->timeEdit_weekStart->getTime());
|
|
|
one.offWeekDay = static_cast<enum_WeekDay>(ui->cBox_selectWeekEnd->itemData(ui->cBox_selectWeekEnd->currentIndex()).toInt());
|
|
|
- one.offTime.setTime(ui->timeEdit_weekEnd->getTime());
|
|
|
+ one.offDateTime.setTime(ui->timeEdit_weekEnd->getTime());
|
|
|
}else {
|
|
|
/* 特殊日 */
|
|
|
one.onWeekDay = enum_WeekDay::WeekDay_Special;
|
|
|
- one.onTime.setDate(ui->dateEdit_specialStart->date());
|
|
|
- one.onTime.setTime(ui->timeEdit_specialStart->getTime());
|
|
|
+ one.onDateTime.setDate(ui->dateEdit_specialStart->date());
|
|
|
+ one.onDateTime.setTime(ui->timeEdit_specialStart->getTime());
|
|
|
one.offWeekDay = enum_WeekDay::WeekDay_Special;
|
|
|
- one.offTime.setDate(ui->dateEdit_specialEnd->date());
|
|
|
- one.offTime.setTime(ui->timeEdit_specialEnd->getTime());
|
|
|
+ one.offDateTime.setDate(ui->dateEdit_specialEnd->date());
|
|
|
+ one.offDateTime.setTime(ui->timeEdit_specialEnd->getTime());
|
|
|
}
|
|
|
/* 先判断设置的时间是否和当前选中的行的时间相同 */
|
|
|
auto nowPlan = ui->pCard->getSelectedPlan();
|
|
@@ -626,6 +665,21 @@ void ManagerPlan::do_deletePlanItem()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/* 点击了保存模版按钮 */
|
|
|
+void ManagerPlan::do_saveTemplate()
|
|
|
+{
|
|
|
+ /* 判断卡片有没有计划 */
|
|
|
+ if(ui->pCard->isPlanEmpty())
|
|
|
+ {
|
|
|
+ /* 没有计划 */
|
|
|
+ TipWidget::display(TipWidget::OPERATOR_WARN, "该频率没有计划!", this);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ emit signal_saveTemplate(ui->pCard->getChannelInfo());
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
/* 点击了OK按钮 */
|
|
|
void ManagerPlan::do_pBtn_ok()
|
|
|
{
|
|
@@ -641,16 +695,16 @@ void ManagerPlan::do_tableView_clicked(PlanInfo& info)
|
|
|
{
|
|
|
/* 正常日 */
|
|
|
ui->cBox_selectWeekStart->setCurrentIndex(static_cast<int>(info.onWeekDay) - 1);
|
|
|
- ui->timeEdit_weekStart->setTime(info.onTime.time());
|
|
|
+ ui->timeEdit_weekStart->setTime(info.onDateTime.time());
|
|
|
ui->cBox_selectWeekEnd->setCurrentIndex(static_cast<int>(info.offWeekDay) - 1);
|
|
|
- ui->timeEdit_weekEnd->setTime(info.offTime.time());
|
|
|
+ ui->timeEdit_weekEnd->setTime(info.offDateTime.time());
|
|
|
}else
|
|
|
{
|
|
|
/* 特殊日 */
|
|
|
- ui->dateEdit_specialStart->setDate(info.onTime.date());
|
|
|
- ui->timeEdit_specialStart->setTime(info.onTime.time());
|
|
|
- ui->dateEdit_specialEnd->setDate(info.offTime.date());
|
|
|
- ui->timeEdit_specialEnd->setTime(info.offTime.time());
|
|
|
+ ui->dateEdit_specialStart->setDate(info.onDateTime.date());
|
|
|
+ ui->timeEdit_specialStart->setTime(info.onDateTime.time());
|
|
|
+ ui->dateEdit_specialEnd->setDate(info.offDateTime.date());
|
|
|
+ ui->timeEdit_specialEnd->setTime(info.offDateTime.time());
|
|
|
}
|
|
|
}
|
|
|
|