void MythUITextEdit::SetInitialStates() { if (m_initialized) return; m_initialized = true; m_Text = dynamic_cast<MythUIText*>(GetChild("text")); m_cursorImage = dynamic_cast<MythUIImage*>(GetChild("cursor")); m_backgroundState = dynamic_cast<MythUIStateType*>(GetChild("background")); if (!m_Text) VERBOSE(VB_IMPORTANT, LOC_ERR + "Missing text element."); if (!m_cursorImage) VERBOSE(VB_IMPORTANT, LOC_ERR + "Missing cursor element."); if (!m_backgroundState) VERBOSE(VB_IMPORTANT, LOC_WARN + "Missing background element."); if (!m_Text || !m_cursorImage) { m_Text = NULL; m_cursorImage = NULL; m_backgroundState = NULL; return; } if (m_backgroundState && !m_backgroundState->DisplayState("active")) VERBOSE(VB_IMPORTANT, "MythUITextEdit: active state doesn't exist"); QFontMetrics fm(m_Text->GetFontProperties()->face()); int height = fm.height(); if (height > 0) { MythRect imageArea = m_cursorImage->GetArea(); int width = int(((float)height / (float)imageArea.height()) * (float)imageArea.width()); if (width <= 0) width = 1; m_cursorImage->ForceSize(QSize(width,height)); } MythRect textrect = m_Text->GetArea(); if (textrect.isNull()) textrect = MythRect(5,5,m_Area.width()-10,m_Area.height()-10); textrect.setWidth(textrect.width() - m_cursorImage->GetArea().width()); if (textrect.isValid()) m_Text->SetArea(textrect); m_Text->SetCutDown(false); m_cursorImage->SetPosition(textrect.x(),textrect.y()); }
/** * Set the minimum area based on the given size */ void MythUIType::SetMinArea(const MythRect &rect) { // If a minsize is not set, don't use MinArea if (!m_Initiator || !m_MinSize.isValid()) return; QRect bounded(rect); bool vanish = (m_Vanish && rect.isNull()); if (vanish) { bounded.moveLeft(0); bounded.moveTop(0); } else { QPoint center = bounded.center(); if (bounded.isNull()) bounded.setSize(GetMinSize()); else bounded.setSize(bounded.size().expandedTo(GetMinSize())); bounded.moveCenter(center); if (bounded.x() + bounded.width() > m_Area.x() + m_Area.width()) bounded.moveRight(m_Area.x() + m_Area.width()); if (bounded.y() + bounded.height() > m_Area.y() + m_Area.height()) bounded.moveBottom(m_Area.x() + m_Area.height()); if (bounded.x() < m_Area.x()) { bounded.moveLeft(m_Area.x()); if (bounded.width() > m_Area.width()) bounded.setWidth(m_Area.width()); } if (bounded.y() < m_Area.y()) { bounded.moveTop(m_Area.y()); if (bounded.height() > m_Area.height()) bounded.setHeight(m_Area.height()); } } m_MinArea = bounded; m_Vanished = vanish; if (m_Parent) m_Parent->SetMinAreaParent(m_MinArea, m_Area, this); }