rendered paste bodyIndex: mythtv/libs/libmythui/mythuibuttonlist.cpp
===================================================================
--- mythtv/libs/libmythui/mythuibuttonlist.cpp (revision 18231)
+++ mythtv/libs/libmythui/mythuibuttonlist.cpp (working copy)
@@ -63,8 +63,9 @@
m_clearing = false;
m_itemHorizSpacing = 0;
m_itemVertSpacing = 0;
+ m_balanceSpacing = false;
m_itemHeight = 0;
- m_itemWidth = 0;
+ m_itemWidth = 0;
m_itemsVisible = 0;
m_columns = 0;
m_rows = 0;
@@ -440,7 +441,8 @@
SetPositionArrowStates();
- emit itemSelected(m_selItem);
+ if (pos != m_selPosition)
+ emit itemSelected(m_selItem);
}
void MythUIButtonList::MoveDown(MovementUnit unit)
@@ -512,7 +514,8 @@
SetPositionArrowStates();
- emit itemSelected(m_selItem);
+ if (pos != m_selPosition)
+ emit itemSelected(m_selItem);
}
bool MythUIButtonList::MoveToNamedPosition(const QString &position_name)
@@ -722,9 +725,6 @@
m_itemWidth = itemArea.width();
}
// End Hack
-
-
- SetPositionArrowStates();
}
bool MythUIButtonList::keyPressEvent(QKeyEvent *e)
@@ -782,10 +782,7 @@
{
MythUIButtonListItem *item = GetItemCurrent();
if (item)
- {
- emit itemSelected(item);
emit itemClicked(item);
- }
}
else
handled = false;
@@ -834,7 +831,7 @@
{
emit itemClicked(GetItemCurrent());
}
- else
+ else if (pos != m_selectedPosition)
{
SetItemCurrent(pos);
emit itemSelected(GetItemCurrent());
@@ -849,10 +846,41 @@
QPoint MythUIButtonList::GetButtonPosition(int column, int row) const
{
+ int horizontalSpacing = 0;
+ int verticalSpacing = 0;
+ if (m_balanceSpacing && m_itemCount < m_itemsVisible)
+ {
+ if ((m_layout == LayoutHorizontal) || (m_layout == LayoutGrid))
+ {
+ int wholerows = (m_itemCount / m_columns) < row;
+ if ((m_itemCount / m_columns) < row)
+ {
+ int items = m_itemCount - (wholerows * m_columns);
+ horizontalSpacing =
+ (m_contentsRect.width() -
+ (items * (m_itemHorizSpacing + ItemWidth()))) / items;
+ }
+ }
+
+ if (m_layout == LayoutVertical || (m_layout == LayoutGrid))
+ {
+ verticalSpacing =
+ (m_contentsRect.height() -
+ (m_rows * (m_itemVertSpacing + m_itemHeight))) / m_rows;
+ }
+
+ VERBOSE(VB_IMPORTANT, QString("Balance %1 %2").arg(horizontalSpacing).arg(verticalSpacing));
+ }
+
+ if (horizontalSpacing <= 0)
+ horizontalSpacing = m_itemHorizSpacing;
+ if (verticalSpacing <= 0)
+ verticalSpacing = m_itemVertSpacing;
+
int x = m_contentsRect.x() +
- ((column - 1) * (ItemWidth() + m_itemHorizSpacing));
+ ((column - 1) * (ItemWidth() + horizontalSpacing));
int y = m_contentsRect.y() +
- ((row - 1) * (m_itemHeight + m_itemVertSpacing));
+ ((row - 1) * (m_itemHeight + verticalSpacing));
return QPoint(x,y);
}
@@ -920,6 +948,8 @@
m_showArrow = parseBool(element);
else if (element.tagName() == "spacing")
{
+ //m_balanceSpacing = parseBool(element.attribute("distribute", "false"));
+ m_balanceSpacing = true;
m_itemHorizSpacing = NormX(getFirstText(element).toInt());
m_itemVertSpacing = NormY(getFirstText(element).toInt());
}
@@ -951,6 +981,7 @@
m_itemWidth = lb->m_itemWidth;
m_itemHorizSpacing = lb->m_itemHorizSpacing;
m_itemVertSpacing = lb->m_itemVertSpacing;
+ m_balanceSpacing = lb->m_balanceSpacing;
m_itemsVisible = lb->m_itemsVisible;
m_active = lb->m_active;
@@ -1172,9 +1203,9 @@
}
else
{
- if (active_on)
- button->DisplayState("inactive");
- else
+ if (active_on)
+ button->DisplayState("inactive");
+ else
button->DisplayState("active");
}
}
@@ -1233,7 +1264,7 @@
QMap<QString, QString>::iterator string_it = m_strings.begin();
while (string_it != m_strings.end()) {
text = dynamic_cast<MythUIText *>
- (buttonstate->GetChild(string_it.key()));
+ (buttonstate->GetChild(string_it.key()));
if (text)
text->SetText(string_it.value());
++string_it;
@@ -1243,7 +1274,7 @@
QMap<QString, MythImage*>::iterator image_it = m_images.begin();
while (image_it != m_images.end()) {
image = dynamic_cast<MythUIImage *>
- (buttonstate->GetChild(image_it.key()));
+ (buttonstate->GetChild(image_it.key()));
if (image)
image->SetImage(image_it.value());
++image_it;
Index: mythtv/libs/libmythui/mythuibuttonlist.h
===================================================================
--- mythtv/libs/libmythui/mythuibuttonlist.h (revision 18231)
+++ mythtv/libs/libmythui/mythuibuttonlist.h (working copy)
@@ -175,6 +175,7 @@
int m_itemHeight;
int m_itemHorizSpacing;
int m_itemVertSpacing;
+ bool m_balanceSpacing;
uint m_itemsVisible;
int m_rows;
int m_columns;