123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488 |
- #include "oneitem.h"
- #include "ui_oneitem.h"
- #include <QFile>
- #include <QCalendarWidget>
- #include "LHQLogAPI.h"
- #include "TransmitterSwitchInfo.h"
- #include "customcombobox.h"
- #include "calendardtedit.h"
- // #include "lhstylemanager.h"
- OneItem::OneItem(QWidget *parent, bool isSpecial) :
- QWidget(parent), m_isSpecial(isSpecial),
- ui(new Ui::OneItem)
- {
- ui->setupUi(this);
- init();
- }
- OneItem::OneItem(bool isSpecial) :
- QWidget(nullptr), m_isSpecial(isSpecial),
- ui(new Ui::OneItem)
- {
- ui->setupUi(this);
- init();
- }
- OneItem::~OneItem()
- {
- // LHStyleManager::Instance()->RemoveWidget(this);
- delete ui;
- }
- /* 初始化 */
- void OneItem::init()
- {
- QString qssPath = EPConfig.getQSSPath() + "/oneitem.qss";
- /* 加载QSS */
- QFile file(qssPath);
- if(file.open(QIODevice::ReadOnly))
- {
- QString stylesheet = file.readAll();
- this->setStyleSheet(stylesheet);
- file.close();
- } else
- {
- LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName()));
- }
- // LHStyleManager::Instance()->AddWidget(this);
- /* 设置背景透明 */
- this->setAttribute(Qt::WA_TranslucentBackground);
- /* 设置无边框 */
- this->setWindowFlags(Qt::FramelessWindowHint);
- /* 设置定时器 */
- m_warnTimer.setTimerType(Qt::PreciseTimer);
- m_warnTimer.setSingleShot(true);
- connect(&m_warnTimer, &QTimer::timeout, this, &OneItem::hideWarn);
- /* 初始化变量 */
- m_uuid = QUuid::createUuid();
- setExecTime(QTime(0,0,0));
- setDate(QDate(1970,1,1));
- /* 根据是否是特殊日移动位置 */
- layoutInit();
- /* 隐藏时间选择按钮 */
- ui->pBtn_execDate->hide();
- ui->pBtn_iconDate->hide();
- /* 设置日期格式 */
- ui->dateEdit->setDisplayFormat("yyyy-MM-dd");
- /* 日期栏禁止滚轮滚动 */
- ui->dateEdit->installEventFilter(this);
- // for(auto& it : ui->dateEdit->children())
- // {
- // if(it->objectName() == "qt_spinbox_lineedit")
- // {
- // it->installEventFilter(this);
- // }
- // }
- /* 设置日期栏禁止输入 */
- ui->dateEdit->setManualDisableEdit(true, true);
- /* 设置下拉框背景 */
- ui->comboBox_devName->setViewShadowEffect();
- ui->comboBox_action->setViewShadowEffect();
- /* 注册事件过滤器 */
- ui->comboBox_devName->installEventFilter(this);
- ui->comboBox_action->installEventFilter(this);
- ui->pBtn_close->installEventFilter(this);
- /* 连接信号和槽 */
- connect(ui->comboBox_devName,QOverload<const QString&>::of(&QComboBox::currentTextChanged),this,&OneItem::do_devChanged);
- connect(ui->comboBox_action,QOverload<const QString&>::of(&QComboBox::currentTextChanged),this,&OneItem::do_actionChanged);
- connect(ui->pBtn_execTime,&QPushButton::clicked,this,&OneItem::do_pBtn_execTime_clicked);
- connect(ui->pBtn_iconTime,&QPushButton::clicked,this,&OneItem::do_pBtn_execTime_clicked);
- connect(ui->pBtn_execDate,&QPushButton::clicked,this,&OneItem::do_pBtn_execDate_clicked);
- connect(ui->pBtn_iconDate,&QPushButton::clicked,this,&OneItem::do_pBtn_execDate_clicked);
- connect(ui->pBtn_close, &QPushButton::clicked, this, &OneItem::do_pBtn_close_clicked);
- connect(ui->dateEdit, &QDateEdit::dateChanged, this, &OneItem::do_dateChanged);
- /* 连接切换样式表的信号和槽 */
- connect(&EPConfig, &ExecPlanGlobalConfig::signal_oneItemQssChanged, this, &OneItem::do_setQSS);
- }
- /* 设置序号 */
- void OneItem::setNum(int num)
- {
- m_num = num;
- ui->label_num->setText(QString::number(num));
- }
- /* 获取序号 */
- int OneItem::getNum()
- {
- return m_num;
- }
- /* 设置日期 */
- void OneItem::setDate(const QDate& date)
- {
- m_date = date;
- ui->pBtn_execDate->setText(date.toString("yyyy-MM-dd"));
- ui->dateEdit->setDate(date);
- }
- /* 获取日期 */
- QDate OneItem::getDate()
- {
- return m_date;
- }
- /* 设置执行时间 */
- void OneItem::setExecTime(const QTime& time)
- {
- m_time = time;
- ui->pBtn_execTime->setText(time.toString("hh:mm:ss"));
- }
- /* 获取执行时间 */
- QTime OneItem::getExecTime()
- {
- return m_time;
- }
- /* 设置设备名称 */
- void OneItem::setDevName(const QString& dev)
- {
- ui->comboBox_devName->setCurrentText(dev);
- }
- /* 获取设备名称 */
- QString OneItem::getDevName()
- {
- return ui->comboBox_devName->currentText();
- }
- /* 添加设备支持的动作 */
- void OneItem::addActions()
- {
- auto acts = DevTypeContainer.getDevType(m_devInfo.PTTypeCode);
- ui->comboBox_action->clear();
- if(acts.PTTypeCode > 0)
- {
- for(auto it = acts.devAction.begin();it != acts.devAction.end();it++)
- {
- ui->comboBox_action->addItem(it.value(), it.key());
- }
- }
- }
- /* 获取动作名称 */
- QString OneItem::getActionName()
- {
- return ui->comboBox_action->currentText();
- }
- /* 获取动作类型 */
- int OneItem::getActionNum()
- {
- return ui->comboBox_action->currentData().toInt();
- }
- /* 设置动作ID */
- void OneItem::setActionNum(int num)
- {
- ui->comboBox_action->setCurrentIndex(ui->comboBox_action->findData(num));
- }
- /* 添加设备 */
- void OneItem::addDevice()
- {
- auto& mapDev = DeviceContainer.getMapDevice();
- ui->comboBox_devName->clear();
- for(const auto& it : mapDev)
- {
- ui->comboBox_devName->addItem(it.devName);
- }
- /* 设置显示第一个设备,并设置可选的动作 */
- ui->comboBox_devName->setCurrentIndex(0);
- addActions();
- }
- /* 获取日期类型 */
- bool OneItem::getDateType()
- {
- return m_isSpecial;
- }
- /* 设置警告 */
- void OneItem::setWarningText(QString str, int ms)
- {
- ui->label_warnning->setText(str);
- ui->label_warnning->show();
- if(ms > 0)
- {
- m_warnTimer.start(ms);
- }
- /* 设置红框 */
- ui->pBtn_execTime->setProperty("Warn",true);
- ui->pBtn_execTime->style()->unpolish(ui->pBtn_execTime);
- ui->pBtn_execTime->style()->polish(ui->pBtn_execTime);
- ui->pBtn_execDate->setProperty("Warn",true);
- ui->pBtn_execDate->style()->unpolish(ui->pBtn_execDate);
- ui->pBtn_execDate->style()->polish(ui->pBtn_execDate);
- ui->dateEdit->setProperty("Warn", true);
- ui->dateEdit->style()->unpolish(ui->dateEdit);
- ui->dateEdit->style()->polish(ui->dateEdit);
- }
- /* 隐藏警告 */
- void OneItem::hideWarn()
- {
- ui->label_warnning->clear();
- /* 取消红框 */
- ui->pBtn_execTime->setProperty("Warn", false);
- ui->pBtn_execTime->style()->unpolish(ui->pBtn_execTime);
- ui->pBtn_execTime->style()->polish(ui->pBtn_execTime);
- ui->pBtn_execDate->setProperty("Warn", false);
- ui->pBtn_execDate->style()->unpolish(ui->pBtn_execDate);
- ui->pBtn_execDate->style()->polish(ui->pBtn_execDate);
- ui->dateEdit->setProperty("Warn", false);
- ui->dateEdit->style()->unpolish(ui->dateEdit);
- ui->dateEdit->style()->polish(ui->dateEdit);
- }
- /* 获取执行时间的位置 */
- QPoint OneItem::getExecTimePos()
- {
- return ui->pBtn_execTime->pos();
- }
- /* 获取执行日期的位置 */
- QPoint OneItem::getExecDatePos()
- {
- return ui->pBtn_execDate->pos();
- }
- /* 获取执行时间按钮的大小 */
- QSize OneItem::getExecTimeSize()
- {
- return ui->pBtn_execTime->size();
- }
- /* 获取执行日期按钮的大小 */
- QSize OneItem::getExecDateSize()
- {
- return ui->pBtn_execDate->size();
- }
- /* 设置样式表,打开的样式表 */
- void OneItem::do_setQSS(const QString& qss)
- {
- this->setStyleSheet(qss);
- }
- /* 设备改变了 */
- void OneItem::do_devChanged(QString devName)
- {
- /* 根据选择的设备,设置该设备的动作 */
- ui->comboBox_action->clear();
- auto it = DeviceContainer.getDevice(devName);
- if(it.PTTypeCode > 0)
- {
- m_devInfo = it;
- for(auto it1 = m_devInfo.DevType.devAction.begin();it1 != m_devInfo.DevType.devAction.end();it1++)
- {
- ui->comboBox_action->addItem(it1.value(), it1.key());
- }
- }else
- {
- LH_WRITE_ERROR(QString("没有这个设备:%1").arg(devName));
- return;
- }
- emit signal_devChanged();
- }
- /* 动作改变了 */
- void OneItem::do_actionChanged(QString action)
- {
- emit signal_actionChanged();
- }
- /* 执行时间被点击了 */
- void OneItem::do_pBtn_execTime_clicked()
- {
- emit signal_execTimeClicked(getExecTime());
- }
- /* 执行日期被点击了 */
- void OneItem::do_pBtn_execDate_clicked()
- {
- emit signal_dateClicked(getDate());
- }
- /* 关闭按钮被点击了 */
- void OneItem::do_pBtn_close_clicked()
- {
- emit signal_OneItemDelete(m_weekDay, m_num);
- }
- /* 修改了执行日期 */
- void OneItem::do_dateChanged(const QDate date)
- {
- // LH_WRITE_LOG_DEBUG(QString("日期改变了:%1").arg(date.toString("yyyy-MM-dd")));
- m_date = date;
- emit signal_dateClicked(m_date);
- }
- /* 根据日期类型布局 */
- void OneItem::layoutInit()
- {
- /* 正常日,日期隐藏 */
- if(!m_isSpecial)
- {
- ui->pBtn_execDate->hide();
- ui->pBtn_iconDate->hide();
- ui->dateEdit->hide();
- /* 序号 */
- ui->label_num->move(18, 0);
- /* 设备名称 */
- ui->comboBox_devName->move(114, 0);
- /* 执行时间 */
- ui->pBtn_execTime->move(390, 0);
- /* 执行时间图标 */
- ui->pBtn_iconTime->move(498, 8);
- /* 动作 */
- ui->comboBox_action->move(538, 0);
- /* 关闭 */
- ui->pBtn_close->move(814, 0);
- }else
- {
- ui->pBtn_execDate->hide();
- ui->pBtn_iconDate->hide();
- ui->dateEdit->show();
- /* 序号 */
- ui->label_num->move(18, 0);
- /* 设备名称 */
- ui->comboBox_devName->move(114, 0);
- /* 执行日期 */
- ui->pBtn_execDate->move(390, 0);
- ui->dateEdit->move(390, 0);
- /* 执行日期图标 */
- ui->pBtn_iconDate->move(498, 8);
- /* 执行时间 */
- ui->pBtn_execTime->move(539, 0);
- /* 执行时间图标 */
- ui->pBtn_iconTime->move(646, 8);
- /* 动作 */
- ui->comboBox_action->move(686, 0);
- /* 关闭 */
- ui->pBtn_close->move(962, 0);
- }
- }
- /* 事件过滤器 */
- bool OneItem::eventFilter(QObject *watched, QEvent *event)
- {
- if(watched == ui->comboBox_action)
- {
- if(event->type() == QEvent::Wheel)
- {
- return true;
- }
- }
- else if(watched == ui->comboBox_devName)
- {
- if(event->type() == QEvent::Wheel)
- {
- return true;
- }
- }
- else if (watched == ui->dateEdit)
- {
- if(event->type() == QEvent::Wheel)
- {
- return true;
- }
- /* 鼠标进入 */
- else if(event->type() == QEvent::Enter)
- {
- ui->dateEdit->setProperty("Hover", true);
- ui->dateEdit->style()->unpolish(ui->dateEdit);
- ui->dateEdit->style()->polish(ui->dateEdit);
- return true;
- }
- /* 鼠标离开 */
- else if(event->type() == QEvent::Leave)
- {
- ui->dateEdit->setProperty("Hover", false);
- ui->dateEdit->style()->unpolish(ui->dateEdit);
- ui->dateEdit->style()->polish(ui->dateEdit);
- return true;
- }
- }
- /* QDateEdit栏中间选择日期的位置 */
- // else if(watched->objectName() == "qt_spinbox_lineedit")
- // {
- // if(event->type() == QEvent::MouseButtonPress)
- // {
- // LH_WRITE_LOG_DEBUG("点击了日期区域");
-
- // return true;
- // }
- // }
- else if(watched == ui->pBtn_execTime)
- {
- if(event->type() == QEvent::Enter)
- {
- ui->pBtn_execTime->setProperty("Hover", true);
- ui->pBtn_execTime->style()->unpolish(ui->pBtn_execTime);
- ui->pBtn_execTime->style()->polish(ui->pBtn_execTime);
- return true;
- }else if(event->type() == QEvent::Leave)
- {
- ui->pBtn_execTime->setProperty("Hover", false);
- ui->pBtn_execTime->style()->unpolish(ui->pBtn_execTime);
- ui->pBtn_execTime->style()->polish(ui->pBtn_execTime);
- return true;
- }
- }
- else if(watched == ui->pBtn_execDate)
- {
- if(event->type() == QEvent::Enter)
- {
- ui->pBtn_execDate->setProperty("Hover", true);
- ui->pBtn_execDate->style()->unpolish(ui->pBtn_execDate);
- ui->pBtn_execDate->style()->polish(ui->pBtn_execDate);
- return true;
- }else if(event->type() == QEvent::Leave)
- {
- ui->pBtn_execDate->setProperty("Hover", false);
- ui->pBtn_execDate->style()->unpolish(ui->pBtn_execDate);
- ui->pBtn_execDate->style()->polish(ui->pBtn_execDate);
- return true;
- }
- }
- else if(watched == ui->pBtn_close)
- {
- if(event->type() == QEvent::Enter)
- {
- ui->pBtn_close->setProperty("Hover", true);
- ui->pBtn_close->style()->unpolish(ui->pBtn_close);
- ui->pBtn_close->style()->polish(ui->pBtn_close);
- return true;
- }else if(event->type() == QEvent::Leave)
- {
- ui->pBtn_close->setProperty("Hover", false);
- ui->pBtn_close->style()->unpolish(ui->pBtn_close);
- ui->pBtn_close->style()->polish(ui->pBtn_close);
- return true;
- }
- }
- return QWidget::eventFilter(watched,event);
- }
|