Ticket #7826: buttontree_columns.patch

File buttontree_columns.patch, 2.9 KB (added by Ronald Frazier <ron@…>, 16 years ago)

allow customizing buttontree columns

  • libs/libmythui/mythuibuttontree.h

     
    6262    uint m_visibleLists;
    6363    uint m_currentDepth;
    6464    uint m_oldDepth;
     65    QString m_columnWidths;
    6566    QList<MythUIButtonList*> m_buttonlists;
     67    QList<MythUIButtonList*> m_listColumns;
    6668    MythUIButtonList *m_listTemplate;
    6769    MythUIButtonList *m_activeList;
    6870    uint m_activeListID;
  • libs/libmythui/mythuibuttontree.cpp

     
    1010
    1111// Mythui Headers
    1212#include "mythmainwindow.h"
     13#include "mythuihelper.h"
    1314
    1415MythUIButtonTree::MythUIButtonTree(MythUIType *parent, const QString &name)
    1516                 : MythUIType(parent, name)
     
    5657
    5758    m_listTemplate->SetVisible(false);
    5859
    59     int width = (m_Area.width() - (m_listSpacing * (m_numLists-1))) / m_numLists;
     60
     61    if(m_listColumns.size() == 0)
     62    {
     63        int i = 1;
     64        while ( i <= (int)m_numLists )
     65        {
     66            QString columnname = QString("listcolumn_%1").arg(i);
     67            MythUIButtonList *column = dynamic_cast<MythUIButtonList *>(GetChild(columnname));
     68            if (column) column->SetVisible(false);
     69            m_listColumns.append(column);
     70            i++;
     71        };
     72    };
     73
     74
     75
     76    QStringList widthlist = m_columnWidths.split(',', QString::SkipEmptyParts);
     77    int defaultwidth = (m_Area.width() - (m_listSpacing * (m_numLists-1))) / m_numLists;
    6078    int height = m_Area.height();
    6179
     80    float scalex, scaley;
     81    GetMythUI()->GetScreenSettings(scalex, scaley);
     82
     83    int x = 0;
    6284    int i = 0;
    6385    while ( i < (int)m_numLists )
    6486    {
     87        int width = (widthlist.size() == (int)m_numLists) ? (int)widthlist[i].toInt()*scalex : defaultwidth;
     88        MythUIButtonList *column = m_listColumns[i];
     89        if (!column) column = m_listTemplate;
     90
     91
    6592        QString listname = QString("buttontree list %1").arg(i);
    6693        MythUIButtonList *list = new MythUIButtonList(this, listname);
    67         list->CopyFrom(m_listTemplate);
     94        list->CopyFrom(column);
    6895        list->SetVisible(false);
    6996        list->SetActive(false);
    7097        list->SetCanTakeFocus(false);
    71         int x = i * (width + m_listSpacing);
    7298        MythRect listArea = MythRect(x,0,width,height);
    7399        list->SetArea(listArea);
    74100        m_buttonlists.append(list);
     101        x += width + m_listSpacing;
    75102        i++;
    76103    }
    77104
     
    565592    {
    566593        m_numLists = getFirstText(element).toInt();
    567594    }
     595    else if (element.tagName() == "columnwidths")
     596    {
     597        m_columnWidths = getFirstText(element);
     598    }
    568599    else
    569600        return MythUIType::ParseElement(element);
    570601