Ticket #7826: buttontree_columns.patch

File buttontree_columns.patch, 2.9 KB (added by Ronald Frazier <ron@…>, 2 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