diff --git a/plugins/datetime/datetimewidget.cpp b/plugins/datetime/datetimewidget.cpp index 4854817ff..8c6b93559 100644 --- a/plugins/datetime/datetimewidget.cpp +++ b/plugins/datetime/datetimewidget.cpp @@ -77,63 +77,35 @@ QSize DatetimeWidget::curTimeSize() const if (m_24HourFormat) format = "hh:mm"; else { - if (position == Dock::Top || position == Dock::Bottom) - format = "hh:mm AP"; - else - format = "hh:mm\nAP"; + format = "hh:mm AP"; } QString timeString = QDateTime::currentDateTime().toString(format); QSize timeSize = fm.boundingRect(timeString).size(); - if (timeString.contains("\n")) { - QStringList SL = timeString.split("\n"); - timeSize = QSize(fm.boundingRect(SL.at(0)).width(), fm.boundingRect(SL.at(0)).height() + fm.boundingRect(SL.at(1)).height()); - } else { - QSize dateSize = QFontMetrics(m_dateFont).boundingRect("0000/00/00").size(); - if (timeSize.width() < dateSize.width() && rect().height() >= SHOW_DATE_MIN_HEIGHT) - timeSize.setWidth(dateSize.width()); - } + QSize dateSize = QFontMetrics(m_dateFont).boundingRect("0000/00/00").size(); if (position == Dock::Bottom || position == Dock::Top) { - if (rect().height() >= SHOW_DATE_MIN_HEIGHT) { - QStringList SL = timeString.split("\n"); - int date_dec=m_timeFont.pixelSize()-m_dateFont.pixelSize(); - while (QFontMetrics(m_timeFont).boundingRect(timeString).size().height() + 11 > height()) { - m_timeFont.setPixelSize(m_timeFont.pixelSize() - 1); - m_dateFont.setPixelSize(m_timeFont.pixelSize() - date_dec); - } - } else { - while (QFontMetrics(m_timeFont).boundingRect(timeString).size().height() > height() + 10) { - m_timeFont.setPixelSize(m_timeFont.pixelSize() - 1); - } + while (QFontMetrics(m_timeFont).boundingRect(timeString).size().height() + QFontMetrics(m_dateFont).boundingRect("0000/00/00").size().height() > height()) { + m_timeFont.setPixelSize(m_timeFont.pixelSize() - 1); timeSize.setWidth(QFontMetrics(m_timeFont).boundingRect(timeString).size().width()); + if (m_timeFont.pixelSize() - m_dateFont.pixelSize() == 1){ + m_dateFont.setPixelSize(m_dateFont.pixelSize() - 1); + dateSize.setWidth(QFontMetrics(m_dateFont).boundingRect("0000/00/00").size().width()); + } } - return QSize(timeSize.width(), height()); + return QSize(std::max(timeSize.width(), dateSize.width()) + 2, height()); } else { - if (width() < timeSize.width()) { - if (timeString.contains("\n")) { - QStringList SL = timeString.split("\n"); - while (QFontMetrics(m_timeFont).boundingRect(SL.at(0)).size().width() > width()) { - m_timeFont.setPixelSize(m_timeFont.pixelSize() - 1); - } - } else { - while (QFontMetrics(m_timeFont).boundingRect(timeString).size().width() > width()) { - m_timeFont.setPixelSize(m_timeFont.pixelSize() - 1); - } + while (std::max(QFontMetrics(m_timeFont).boundingRect(timeString).size().width(), QFontMetrics(m_dateFont).boundingRect("0000/00/00").size().width()) > width()) { + m_timeFont.setPixelSize(m_timeFont.pixelSize() - 1); + timeSize.setHeight(QFontMetrics(m_timeFont).boundingRect(timeString).size().height()); + if (m_timeFont.pixelSize() - m_dateFont.pixelSize() == 1){ + m_dateFont.setPixelSize(m_dateFont.pixelSize() - 1); + dateSize.setWidth(QFontMetrics(m_dateFont).boundingRect("0000/00/00").size().height()); } - - int timeHeight = QFontMetrics(m_timeFont).boundingRect(timeString).size().height(); - if (format.contains("\n")) { - QStringList SL = format.split("\n"); - timeHeight = QFontMetrics(m_timeFont).boundingRect(SL.at(0)).size().height() + QFontMetrics(m_timeFont).boundingRect(SL.at(1)).size().height(); - } - - return QSize(width(), std::max(timeHeight, PLUGIN_BACKGROUND_MIN_SIZE)); - - } else { - return QSize(width(), std::max(timeSize.height(), SHOW_DATE_MIN_HEIGHT)); } + + return QSize(std::max(timeSize.width(), dateSize.width()), timeSize.height() + dateSize.height()); } } @@ -142,13 +114,6 @@ QSize DatetimeWidget::sizeHint() const return curTimeSize(); } -void DatetimeWidget::resizeEvent(QResizeEvent *e) -{ - setMaximumSize(curTimeSize() + QSize(1, 1)); - - QWidget::resizeEvent(e); -} - void DatetimeWidget::paintEvent(QPaintEvent *e) { Q_UNUSED(e); @@ -157,38 +122,23 @@ void DatetimeWidget::paintEvent(QPaintEvent *e) QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); - const Dock::Position position = qApp->property(PROP_POSITION).value(); QString format; if (m_24HourFormat) format = "hh:mm"; else { - if (position == Dock::Top || position == Dock::Bottom) - format = "hh:mm AP"; - else - format = "hh:mm\nAP"; + format = "hh:mm AP"; } painter.setFont(m_timeFont); painter.setPen(QPen(palette().brightText(), 1)); - if (rect().height() >= SHOW_DATE_MIN_HEIGHT) { - - QRect timeRect = rect(); - timeRect.setBottom(rect().center().y() + m_timeOffset); - - if (position == Dock::Top || position == Dock::Bottom) { - painter.drawText(timeRect, Qt::AlignBottom | Qt::AlignHCenter, current.toString(format)); - - QRect dateRect = rect(); - dateRect.setTop(timeRect.bottom()); - format = "yyyy/MM/dd"; - painter.setFont(m_dateFont); - painter.drawText(dateRect, Qt::AlignTop | Qt::AlignHCenter, current.toString(format)); - } else { - painter.drawText(rect(), Qt::AlignVCenter | Qt::AlignHCenter, current.toString(format)); - } - } else { - painter.drawText(rect(), Qt::AlignCenter, current.toString(format)); - } + QRect timeRect = rect(); + timeRect.setBottom(rect().center().y() + 2); + painter.drawText(timeRect, Qt::AlignBottom | Qt::AlignHCenter, current.toString(format)); + QRect dateRect = rect(); + dateRect.setTop(timeRect.bottom()); + format = "yyyy/MM/dd"; + painter.setFont(m_dateFont); + painter.drawText(dateRect, Qt::AlignTop | Qt::AlignHCenter, current.toString(format)); } diff --git a/plugins/datetime/datetimewidget.h b/plugins/datetime/datetimewidget.h index be46ee0c1..d601cfb1a 100644 --- a/plugins/datetime/datetimewidget.h +++ b/plugins/datetime/datetimewidget.h @@ -41,7 +41,6 @@ public slots: void set24HourFormat(const bool value); private: - void resizeEvent(QResizeEvent *e); void paintEvent(QPaintEvent *e); QSize curTimeSize() const;