void MythUIEditBar::AddBar(MythUIShape *shape, MythUIImage *image, const QRect &area) { MythUIType *add = GetNew(shape, image); if (add) { MythUIShape *shape = dynamic_cast<MythUIShape*>(add); MythUIImage *image = dynamic_cast<MythUIImage*>(add); if (shape) shape->SetCropRect(area.left(), area.top(), area.width(), area.height()); if (image) image->SetCropRect(area.left(), area.top(), area.width(), area.height()); add->SetPosition(area.left(), area.top()); } }
void MythUIProgressBar::CalculatePosition(void) { MythUIType *progressType = GetChild("progressimage"); if (!progressType) { LOG(VB_GENERAL, LOG_ERR, "Progress image doesn't exist"); return; } progressType->SetVisible(false); int total = m_total - m_start; int current = m_current - m_start; float percentage = 0.0; if (total <= 0 || current <= 0 || current > total) return; percentage = (float)current / (float)total; progressType->SetVisible(true); QRect fillArea = progressType->GetArea(); int height = fillArea.height(); int width = fillArea.width(); int x = fillArea.x(); int y = fillArea.y(); switch (m_effect) { case EffectReveal : if (m_layout == LayoutHorizontal) { width = (int)((float)fillArea.width() * percentage); } else { height = (int)((float)fillArea.height() * percentage); } break; case EffectSlide : if (m_layout == LayoutHorizontal) { int newwidth = (int)((float)fillArea.width() * percentage); x = width - newwidth; width = newwidth; } else { int newheight = (int)((float)fillArea.height() * percentage); y = height - newheight; height = newheight; } break; case EffectAnimate : // Not implemented yet break; } MythUIImage *progressImage = dynamic_cast<MythUIImage *>(progressType); MythUIShape *progressShape = dynamic_cast<MythUIShape *>(progressType); if (width <= 0) width = 1; if (height <= 0) height = 1; if (progressImage) progressImage->SetCropRect(x, y, width, height); else if (progressShape) progressShape->SetCropRect(x, y, width, height); SetRedraw(); }