void DateTimeGroup::updateSize() { Plasma::FormFactor f = formFactor(); if (f != Plasma::Vertical && f != Plasma::Horizontal) { const QFontMetricsF metrics(KGlobalSettings::smallestReadableFont()); setMinimumSize(metrics.size(Qt::TextSingleLine, dtg)); } int aspect = 12; int w, h; w = (int)(contentsRect().height() * aspect); h = (int)(contentsRect().width() / aspect); if (f == Plasma::Horizontal) { setMinimumSize(QSize(w, 0)); } else { setMinimumSize(QSize(0, h)); } setPreferredSize(QSize(w, h)); emit sizeHintChanged(Qt::PreferredSize); if (m_isDefaultFont) { expandFontToMax(m_plainDateTimeGroupFont, dtg); } generatePixmap(); }
void Clock::updateSize() { Plasma::FormFactor f = formFactor(); if (f != Plasma::Vertical && f != Plasma::Horizontal) { const QFontMetricsF metrics(KGlobalSettings::smallestReadableFont()); // calculates based on size of "23:59"! const QString timeString = KGlobal::locale()->formatTime(QTime(23, 59), m_showSeconds); setMinimumSize(metrics.size(Qt::TextSingleLine, timeString)); } // more magic numbers int aspect = 2; if (m_showSeconds) { aspect = 3; } int w, h; if (m_dateStyle || showTimezone()) { const QFont f(KGlobalSettings::smallestReadableFont()); const QFontMetrics metrics(f); // if there's enough vertical space, wrap the words if (contentsRect().height() < f.pointSize() * 6) { QSize s = metrics.size(Qt::TextSingleLine, m_dateString); w = s.width() + metrics.width(" "); h = f.pointSize(); //kDebug(96669) << "uS: singleline" << w; } else { QSize s = metrics.size(Qt::TextWordWrap, m_dateString); w = s.width(); h = f.pointSize(); //kDebug(96669) << "uS: wordwrap" << w; } if (!m_dateTimezoneBesides) { w = qMax(w, (int)(contentsRect().height() * aspect)); h = h+(int)(contentsRect().width() / aspect); } else { w = w+(int)(contentsRect().height() * aspect); h = qMax(h, (int)(contentsRect().width() / aspect)); } } else { w = (int)(contentsRect().height() * aspect); h = (int)(contentsRect().width() / aspect); } if (f == Plasma::Horizontal) { // We have a fixed height, set some sensible width setMinimumSize(QSize(w, 0)); //kDebug() << "DR" << m_dateRect.width() << "CR" << contentsRect().height() * aspect; // kDebug(96669) << contentsRect(); } else { // We have a fixed width, set some sensible height setMinimumSize(QSize(0, h)); } setPreferredSize(QSize(w, h)); emit sizeHintChanged(Qt::PreferredSize); //kDebug(96669) << "minZize: " << minimumSize() << preferredSize(); if (m_isDefaultFont) { const QString fakeTimeString = KGlobal::locale()->formatTime(QTime(23,59,59), m_showSeconds); expandFontToMax(m_plainClockFont, fakeTimeString); } generatePixmap(); update(); }