Files
Upsilon/escher/src/message_text_view.cpp
Émilie Feral 3c4bd2b578 [escher] In message text view, avoid useless dirty marking
Change-Id: I69b1876b902d09e881b5fc70787e1db7832589b3
2017-04-13 18:59:28 +02:00

34 lines
1.0 KiB
C++

#include <escher/message_text_view.h>
#include <assert.h>
MessageTextView::MessageTextView(KDText::FontSize size, I18n::Message message, float horizontalAlignment, float verticalAlignment,
KDColor textColor, KDColor backgroundColor) :
TextView(size, horizontalAlignment, verticalAlignment, textColor, backgroundColor),
m_message(message)
{
}
const char * MessageTextView::text() const {
return I18n::translate(m_message);
}
void MessageTextView::setText(const char * text) {
assert(false);
}
void MessageTextView::setMessage(I18n::Message message) {
if (message != m_message) {
m_message = message;
markRectAsDirty(bounds());
}
}
KDSize MessageTextView::minimalSizeForOptimalDisplay() const {
KDCoordinate width = 0;
for (int l = 0; l < I18n::numberOfLanguages(); l++) {
KDCoordinate newWidth = KDText::stringSize(I18n::translate(m_message, (I18n::Language)l), m_fontSize).width();
width = width > newWidth ? width : newWidth;
}
return KDSize(width, KDText::stringSize(text(), m_fontSize).height());
}