diff options
author | Mitch Curtis <mitch.curtis@nokia.com> | 2012-08-30 14:02:39 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-09-03 02:40:54 +0200 |
commit | ec57b20b65a3c5fa6fa0b225f4b52cfebf053194 (patch) | |
tree | fadab8431b26bd234bef5109c0a332db11dd2ea9 /examples/widgets/widgets/calendarwidget | |
parent | 8c1cb66712a339b09988d8ef2b15ce39678178a6 (diff) |
Properly reflect format changes in calendarwidget example.
This patch ensures that May 1st and the first Friday of each month also
have their formats updated when the corresponding checkboxes are
unchecked instead of just checked.
Task-number: QTBUG-26936
Change-Id: Ib5f77daf8d9000eeb18663b2e07e4842a70d22b6
Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
Diffstat (limited to 'examples/widgets/widgets/calendarwidget')
-rw-r--r-- | examples/widgets/widgets/calendarwidget/window.cpp | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/examples/widgets/widgets/calendarwidget/window.cpp b/examples/widgets/widgets/calendarwidget/window.cpp index 8ba044bf11..b0afb1e61d 100644 --- a/examples/widgets/widgets/calendarwidget/window.cpp +++ b/examples/widgets/widgets/calendarwidget/window.cpp @@ -169,22 +169,34 @@ void Window::reformatHeaders() //! [8] void Window::reformatCalendarPage() { + QTextCharFormat mayFirstFormat; + const QDate mayFirst(calendar->yearShown(), 5, 1); + + QTextCharFormat firstFridayFormat; + QDate firstFriday(calendar->yearShown(), calendar->monthShown(), 1); + while (firstFriday.dayOfWeek() != Qt::Friday) + firstFriday = firstFriday.addDays(1); + if (firstFridayCheckBox->isChecked()) { - QDate firstFriday(calendar->yearShown(), calendar->monthShown(), 1); - while (firstFriday.dayOfWeek() != Qt::Friday) - firstFriday = firstFriday.addDays(1); - QTextCharFormat firstFridayFormat; firstFridayFormat.setForeground(Qt::blue); - calendar->setDateTextFormat(firstFriday, firstFridayFormat); + } else { // Revert to regular colour for this day of the week. + Qt::DayOfWeek dayOfWeek(static_cast<Qt::DayOfWeek>(firstFriday.dayOfWeek())); + firstFridayFormat.setForeground(calendar->weekdayTextFormat(dayOfWeek).foreground()); } - //May First in Red takes precedence + calendar->setDateTextFormat(firstFriday, firstFridayFormat); + + // When it is checked, "May First in Red" always takes precedence over "First Friday in Blue". if (mayFirstCheckBox->isChecked()) { - const QDate mayFirst(calendar->yearShown(), 5, 1); - QTextCharFormat mayFirstFormat; mayFirstFormat.setForeground(Qt::red); - calendar->setDateTextFormat(mayFirst, mayFirstFormat); + } else if (!firstFridayCheckBox->isChecked() || firstFriday != mayFirst) { + // We can now be certain we won't be resetting "May First in Red" when we restore + // may 1st's regular colour for this day of the week. + Qt::DayOfWeek dayOfWeek(static_cast<Qt::DayOfWeek>(mayFirst.dayOfWeek())); + calendar->setDateTextFormat(mayFirst, calendar->weekdayTextFormat(dayOfWeek)); } + + calendar->setDateTextFormat(mayFirst, mayFirstFormat); } //! [8] @@ -418,8 +430,12 @@ void Window::createTextFormatsGroupBox() //! [17] //! [18] connect(weekdayColorCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(weekdayFormatChanged())); + connect(weekdayColorCombo, SIGNAL(currentIndexChanged(int)), + this, SLOT(reformatCalendarPage())); connect(weekendColorCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(weekendFormatChanged())); + connect(weekendColorCombo, SIGNAL(currentIndexChanged(int)), + this, SLOT(reformatCalendarPage())); connect(headerTextFormatCombo, SIGNAL(currentIndexChanged(QString)), this, SLOT(reformatHeaders())); connect(firstFridayCheckBox, SIGNAL(toggled(bool)), |