All pastes #1194726 Raw Edit

Untitled

public text v1 · immutable
#1194726 ·published 2008-09-05 11:10 UTC
rendered paste body
Index: 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;