123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #include "scopecalendarbtn.h"
- #include "calendarex.h"
- #include <QDebug>
- ScopeCalendarBtn::ScopeCalendarBtn(QWidget *parent)
- : QPushButton(parent)
- , m_dtFrom(QDate::currentDate())
- , m_dtTo(QDate::currentDate())
- , m_dtMin(QDate(1,1,1))
- , m_dtMax(QDate(9999,12,31))
- , m_strFormat("%1 - %2")
- {
- connect(this, &QPushButton::clicked, this, &ScopeCalendarBtn::OnPopBtnClicked);
- SetScope(m_dtFrom, m_dtTo);
- }
- void ScopeCalendarBtn::SetMinimumDate(const QDate &date)
- {
- m_dtMin = date;
- m_dtMax = qMax(m_dtMin, m_dtMax);
- m_dtFrom = qMax(m_dtMin, m_dtFrom);
- m_dtTo = qMax(m_dtMin, m_dtTo);
- }
- void ScopeCalendarBtn::SetMiaxmumDate(const QDate &date)
- {
- m_dtMax = date;
- m_dtMin = qMin(m_dtMax, m_dtMin);
- m_dtFrom = qMin(m_dtMax, m_dtFrom);
- m_dtTo = qMin(m_dtMax, m_dtTo);
- }
- void ScopeCalendarBtn::SetScope(const QDate &from, const QDate &to)
- {
- m_dtFrom = qBound(m_dtMin, from, m_dtMax);
- m_dtTo = qBound(m_dtMin, to, m_dtMax);
- QString text = QString(m_strFormat).arg(m_dtFrom.toString("yyyy-MM-dd"), m_dtTo.toString("yyyy-MM-dd"));
- setText(text);
- }
- void ScopeCalendarBtn::OnPopBtnClicked()
- {
- ScopedCalendar *pC = new ScopedCalendar(m_dtFrom, m_dtTo);
- pC->show();
- pC->positionCalendarPopup(this);
- if(m_dtMin.isValid()) pC->SetMinimumDate(m_dtMin);
- if(m_dtMax.isValid()) pC->SetMaximumDate(m_dtMax);
- connect(pC, &ScopedCalendar::sig_ScopeSelected, this, &ScopeCalendarBtn::OnScopeSelected);
- }
- void ScopeCalendarBtn::OnScopeSelected(const QDate &from, const QDate &to)
- {
- SetScope(from, to);
- emit sig_ScopeSelected(from, to);
- }
- void ScopeCalendarBtn::paintEvent(QPaintEvent *event)
- {
- // PainterEx painter(this);
- // painter.SetBrushOnly(Qt::gray);
- // painter.drawRect(rect());
- QPushButton::paintEvent(event);
- }
|