rendered paste bodyIndex: libs/libmythui/mythuibuttonlist.h
===================================================================
--- libs/libmythui/mythuibuttonlist.h (revision 19923)
+++ libs/libmythui/mythuibuttonlist.h (working copy)
@@ -178,11 +178,14 @@
void Const();
virtual void Init();
+ virtual void CalculateButtonPositions();
+
void InsertItem(MythUIButtonListItem *item);
void SetPositionArrowStates(void);
/* methods for subclasses to override */
+ virtual void newCalculateVisibleItems(void);
virtual void CalculateVisibleItems(void);
virtual QPoint GetButtonPosition(int column, int row) const;
@@ -203,6 +206,8 @@
int m_itemWidth;
int m_itemHeight;
+ int m_itemSelectedWidth;
+ int m_itemSelectedHeight;
int m_itemHorizSpacing;
int m_itemVertSpacing;
uint m_itemsVisible;
Index: libs/libmythui/mythuibuttonlist.cpp
===================================================================
--- libs/libmythui/mythuibuttonlist.cpp (revision 19923)
+++ libs/libmythui/mythuibuttonlist.cpp (working copy)
@@ -217,6 +217,7 @@
for (int i = 0; i < button; i++)
m_ButtonList[i]->SetVisible(false);
+
bool seenSelected = false;
MythUIStateType *realButton = NULL;
@@ -245,6 +246,8 @@
buttonItem->SetToRealButton(realButton, selected);
realButton->SetVisible(true);
+
+
if (m_wrapStyle == WrapItems && it == (m_itemList.end()-1) &&
m_itemCount >= (int)m_itemsVisible)
{
@@ -258,6 +261,9 @@
}
button++;
+ VERBOSE(VB_IMPORTANT, QString("m_selPosition %1 button %2").arg(m_selPosition).arg(button));
+
+
}
for (; button < (int)m_itemsVisible; button++)
@@ -744,6 +750,8 @@
m_itemHeight = itemArea.height();
if (m_itemWidth < itemArea.width())
m_itemWidth = itemArea.width();
+ m_itemSelectedHeight = itemArea.height();
+ m_itemSelectedWidth = itemArea.width();
}
// End Hack
@@ -886,6 +894,88 @@
return QPoint(x,y);
}
+void MythUIButtonList::newCalculateVisibleItems(void)
+{
+ int y = 0;
+ int x = 0;
+ m_itemsVisible = 0;
+ m_rows = 0;
+ m_columns = 0;
+
+ if ((m_layout == LayoutHorizontal) || (m_layout == LayoutGrid))
+ {
+ if (x <= m_contentsRect.width() - m_itemSelectedWidth)
+ {
+ y += m_itemSelectedWidth + m_itemHorizSpacing;
+ m_columns++;
+ }
+
+ while (x <= m_contentsRect.width() - m_itemWidth)
+ {
+ x += m_itemWidth + m_itemHorizSpacing;
+ m_columns++;
+ }
+ }
+
+ if ((m_layout == LayoutVertical) || (m_layout == LayoutGrid))
+ {
+
+ if (y <= m_contentsRect.height() - m_itemSelectedHeight)
+ {
+ y += m_itemSelectedHeight + m_itemVertSpacing;
+ m_rows++;
+ }
+
+ while (y <= m_contentsRect.height() - m_itemHeight)
+ {
+ y += m_itemHeight + m_itemVertSpacing;
+ m_rows++;
+ }
+ }
+
+ if (m_rows <= 0)
+ m_rows = 1;
+
+ if (m_columns <= 0)
+ m_columns = 1;
+
+ m_itemsVisible = m_columns * m_rows;
+}
+
+void MythUIButtonList::CalculateButtonPositions(void)
+{
+
+ int col = 1;
+ int row = 1;
+
+ int x = 0;
+ int y = 1;
+ int lastx = m_contentsRect.x();
+ int lasty = m_contentsRect.y();
+
+ for (int i = 0; i < (int)m_itemsVisible; i++)
+ {
+ QString name = QString("buttonlist button %1").arg(i);
+ MythUIStateType *button = new MythUIStateType(this, name);
+ button->CopyFrom(buttontemplate);
+
+ if (col > m_columns)
+ {
+ col = 1;
+ y = lasty + (m_itemHeight + m_itemVertSpacing);
+ row++;
+ lasty = y;
+ }
+
+ button->SetPosition(x,y);
+ x = lastx + (m_itemWidth + m_itemHorizSpacing);
+ col++;
+ lastx = x;
+ // m_ButtonList.push_back(button);
+ }
+
+}
+
void MythUIButtonList::CalculateVisibleItems(void)
{
int y = 0;