| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- #include "timepopupwidget.h"
- #include "ui_timepopupwidget.h"
- #include <QListWidgetItem>
- #include <QFile>
- #include <qobjectdefs.h>
- #include "UIStyleManager.h"
- #include "spdlog/spdlog.h"
- TimePopupWidget::TimePopupWidget(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::TimePopupWidget)
- {
- ui->setupUi(this);
- ui->widget_Hour->Init(TimePartWidget::HOUR);
- ui->widget_Minute->Init(TimePartWidget::MINUTE);
- ui->widget_Second->Init(TimePartWidget::SECOND);
- connect(ui->widget_Hour, &TimePartWidget::sigItemClicked, this, &TimePopupWidget::do_listItemClicked);
- connect(ui->widget_Minute, &TimePartWidget::sigItemClicked, this, &TimePopupWidget::do_listItemClicked);
- connect(ui->widget_Second, &TimePartWidget::sigItemClicked, this, &TimePopupWidget::do_listItemClicked);
- connect(ui->pBtn_Ok, &QPushButton::clicked, this, &TimePopupWidget::do_pBtn_Ok_Clicked);
- connect(ui->pBtn_Cancel, &QPushButton::clicked, this, &TimePopupWidget::do_pBtn_Cancel_Clicked);
- Reset();
- }
- TimePopupWidget::~TimePopupWidget()
- {
- delete ui;
- }
- /* 初始化 */
- void TimePopupWidget::Init(const QVector<int> &types)
- {
- Reset();
- /* 先隐藏全部的时间条 */
- ui->widget_Hour->hide();
- ui->widget_Minute->hide();
- ui->widget_Second->hide();
- /* 初始化时间条 */
- for(const auto& type : types)
- {
- TimePartWidget::emSection emType = static_cast<TimePartWidget::emSection>(type);
- if (emType >= TimePartWidget::emSection::MAX_SECTION) {
- continue;
- }
- if(type == TimePartWidget::HOUR)
- {
- ui->widget_Hour->show();
- }
- else if(type == TimePartWidget::MINUTE)
- {
- ui->widget_Minute->show();
- }
- else if(type == TimePartWidget::SECOND)
- {
- ui->widget_Second->show();
- }
- }
- setQSS();
- }
- /* 重置为默认值 */
- void TimePopupWidget::Reset()
- {
- QDateTime dt = QDateTime::currentDateTime();
- dt.setTime(QTime(0, 0, 0));
- ui->widget_Hour->SetTime(dt);
- ui->widget_Minute->SetTime(dt);
- ui->widget_Second->SetTime(dt);
- }
- /* 设置时间 */
- void TimePopupWidget::setTime(const QDateTime& time)
- {
- m_currentDateTime = time;
- ui->widget_Hour->SetTime(time);
- ui->widget_Minute->SetTime(time);
- ui->widget_Second->SetTime(time);
- }
- /* 设置QSS */
- void TimePopupWidget::setQSS()
- {
- QString qssPath;
- if(UIStyle.getUIStyle() == EUIStyle::UI_Light)
- {
- qssPath = QString(":/Res/light/timepopupwidget.qss");
- }
- else if(UIStyle.getUIStyle() == EUIStyle::UI_Dark)
- {
- qssPath = QString(":/Res/dark/timepopupwidget.qss");
- }
- QFile file(qssPath);
- if(file.open(QFile::ReadOnly))
- {
- QString styleSheet = QLatin1String(file.readAll());
- setStyleSheet(styleSheet);
- file.close();
- }
- else
- {
- SPDLOG_ERROR("open qss file failed: {}", qssPath.toStdString());
- }
- }
- /**
- * @brief 时间列表选中事件
- * @param item
- */
- void TimePopupWidget::do_listItemClicked(QListWidgetItem *item)
- {
- if (nullptr == item) return;
- TimePartWidget* pWdg = reinterpret_cast<TimePartWidget*>(QObject::sender());
- if (nullptr == pWdg) return;
- QString data(item->text());
- if (data.isEmpty()) return; // 过滤空白项
- // QDateTime oldDt(ui->dateTimeEdit->dateTime());
- QDateTime oldDt = m_currentDateTime;
- QTime t(m_currentDateTime.time());
- switch (pWdg->GetType()) {
- case TimePartWidget::HOUR:
- {
- t.setHMS(data.toInt(), t.minute(), t.second());
- break;
- }
- case TimePartWidget::MINUTE:
- {
- t.setHMS(t.hour(), data.toInt(), t.second());
- break;
- }
- case TimePartWidget::SECOND:
- {
- t.setHMS(t.hour(), t.minute(), data.toInt());
- break;
- }
- default:
- break;
- }
- if (oldDt.time() != t) {
- // m_bTimeFlag = true;
- // ui->dateTimeEdit->setTime(t);
- m_currentDateTime.setTime(t);
- emit signal_timeChanged(m_currentDateTime.time());
- }
- }
- /* 点击了确定按钮 */
- void TimePopupWidget::do_pBtn_Ok_Clicked()
- {
- emit signal_timeChanged(m_currentDateTime.time());
- emit signal_closePopup(true);
- }
- /* 点击了取消按钮 */
- void TimePopupWidget::do_pBtn_Cancel_Clicked()
- {
- // m_currentDateTime = m_formerDateTime;
- // emit signal_timeChanged(m_currentDateTime.time());
- emit signal_closePopup(false);
- }
|