Ticket #295: mythtv.diff

File mythtv.diff, 13.7 KB (added by Paul, 14 years ago)

patch to fix uitypes

  • libs/libmyth/uitypes.h

     
    113113
    114114    bool    isShown(){return !hidden;}
    115115    bool    isHidden(){return hidden;}
    116 
     116    bool    isFocused(){return has_focus;}
     117   
    117118  public slots:
    118119
    119120    virtual bool takeFocus();
     
    510511    bool IsPaused() { return !timer.isActive(); }
    511512    void NextImage();
    512513    void PreviousImage();
     514    void GotoFirstImage() { m_currentimage = 1; }
     515     
    513516    virtual void Draw(QPainter *, int, int);
    514517
    515518  public slots:
     
    964967    void    Draw(QPainter *, int drawlayer, int context);
    965968    void    setPosition(QPoint pos){m_displaypos = pos;}
    966969    void    calculateScreenArea();
    967 
     970    bool    getState(){return checked;}
     971     
    968972  public slots:
    969973
    970974    void    push();
     
    10311035    void    calculateScreenArea();
    10321036    void    addItem(int an_int, const QString &a_string);
    10331037    void    setFont(fontProp *font) { m_font = font; }
    1034 
     1038    QString getCurrentString();
     1039    int     getCurrentInt();
     1040   
    10351041  public slots:
    10361042
    10371043    void push(bool up_or_down);
     
    10391045    void activate(){push(true);}
    10401046    void cleanOut(){current_data = NULL; my_data.clear();}
    10411047    void setToItem(int which_item);
    1042 
     1048    void setToItem(const QString &which_item);
     1049     
    10431050  signals:
    10441051
    10451052    void    pushed(int);
  • libs/libmyth/mythdialogs.cpp

     
    16501650        for (; i != all_ui_type_objects->end(); i++)
    16511651        {
    16521652            UIType *type = (*i);
    1653             if (type->canTakeFocus())
     1653            if (type->canTakeFocus() && !type->isHidden())
    16541654            {
    1655                 focus_taking_widgets.append(type);
     1655                if (context == -1 || type->GetContext() == -1 ||
     1656                        context == type->GetContext())
     1657                    focus_taking_widgets.append(type);
    16561658            }
    16571659        }
    16581660        ++another_it;
  • libs/libmyth/uilistbtntype.h

     
    8585
    8686    UIListGenericTree *GetCurrentPosition(void);
    8787
    88     void Draw(QPainter *p, int order, int);
    89     void DrawRegion(QPainter *p, QRect &area, int order, int);
     88    void Draw(QPainter *p, int order, int context);
     89    void DrawRegion(QPainter *p, QRect &area, int order, int context);
    9090
    9191    void Redraw(void);
    9292    void RedrawCurrent(void);
     
    118118    void itemSelected(UIListTreeType *parent, UIListGenericTree *item);
    119119    void itemEntered(UIListTreeType *parent, UIListGenericTree *item);
    120120
     121  public slots:
     122    bool takeFocus();
     123    void looseFocus();
     124     
    121125  private:
    122126    void FillLevelFromTree(UIListGenericTree *item, UIListBtnType *list);
    123127    void ClearLevel(UIListBtnType *list);
     
    170174    void  SetItemRegColor(const QColor& beg, const QColor& end, uint alpha);
    171175    void  SetItemSelColor(const QColor& beg, const QColor& end, uint alpha);
    172176   
    173     void  Draw(QPainter *p, int order, int);
    174     void  Draw(QPainter *p, int order, int, bool active_on);
     177    void  Draw(QPainter *p, int order, int context);
     178    void  Draw(QPainter *p, int order, int context, bool active_on);
    175179    void  SetActive(bool active);
    176180    void  Reset();
    177 
     181    void  calculateScreenArea();
     182     
    178183    void  SetItemCurrent(UIListBtnTypeItem* item);
    179184    void  SetItemCurrent(int pos);
    180185    UIListBtnTypeItem* GetItemCurrent();
     
    204209
    205210    QRect GetArea(void) { return m_rect; }
    206211    uint   GetNumbItemsVisible(){ return m_itemsVisible; }
     212 
     213  public slots:
     214    bool takeFocus();
     215    void looseFocus();
    207216
    208217  private:
    209218    void  Init();
  • libs/libmyth/uilistbtntype.cpp

     
    143143
    144144    m_active = NULL;
    145145    m_inactive = NULL;
    146 
     146    takes_focus = true;
     147 
    147148    SetItemRegColor(Qt::black,QColor(80,80,80),100);
    148149    SetItemSelColor(QColor(82,202,56),QColor(52,152,56),255);
    149150
     
    286287    return currentpos;
    287288}
    288289
    289 void UIListTreeType::Draw(QPainter *p, int order, int blah)
     290void UIListTreeType::Draw(QPainter *p, int order, int context)
    290291{
    291292    if (hidden)
    292293    {
    293294        return;
    294295    }
     296   
     297    if (m_context != -1 && m_context != context)
     298        return;
     299   
     300    if (m_order != order)
     301        return;
     302
    295303    QPtrListIterator<UIListBtnType> it(listLevels);
    296304    UIListBtnType *child;
    297305
     
    323331
    324332        if (child->GetArea().right() + offset > m_totalarea.left())
    325333        {
    326             child->Draw(p, order, blah, list_tree_active);
     334            child->Draw(p, order, context, list_tree_active);
    327335        }
    328336        ++it;
    329337    }
    330338}
    331339
    332 void UIListTreeType::DrawRegion(QPainter *p, QRect &area, int order, int blah)
     340void UIListTreeType::DrawRegion(QPainter *p, QRect &area, int order, int context)
    333341{
     342    if (m_context != -1 && m_context != context)
     343        return;
     344
    334345    QPtrListIterator<UIListBtnType> it(listLevels);
    335346    UIListBtnType *child;
    336347
     
    362373            drawRect == area)
    363374        {
    364375            child->SetDrawOffset(0 - child->GetArea().x());
    365             child->Draw(p, order, blah, list_tree_active);
     376            child->Draw(p, order, context, list_tree_active);
    366377            child->SetDrawOffset(offset);
    367378        }
    368379
     
    804815    return (int) currentlevel->GetNumbItemsVisible();
    805816}
    806817
     818bool UIListTreeType::takeFocus()
     819{
     820    setActive(true);
     821    return UIType::takeFocus();
     822}
     823
     824void UIListTreeType::looseFocus()
     825{
     826    setActive(false);
     827    UIType::looseFocus();
     828}
     829
    807830//////////////////////////////////////////////////////////////////////////////
    808831
    809832UIListBtnType::UIListBtnType(const QString& name, const QRect& area,
     
    818841
    819842    m_active           = false;
    820843    m_visible          = true;
     844    takes_focus        = true;
    821845    m_showUpArrow      = false;
    822846    m_showDnArrow      = false;
    823847
     
    13991423}
    14001424
    14011425
    1402 void UIListBtnType::Draw(QPainter *p, int order, int blah)
     1426void UIListBtnType::Draw(QPainter *p, int order, int context)
    14031427{
    14041428    //
    14051429    //  Just call the other Draw() function. Tried to accomplish the same
    14061430    //  goal with default parameters, but that broke MythGallery (?)
    14071431    //
    14081432
    1409     Draw(p, order, blah, true);
     1433    Draw(p, order, context, true);
    14101434}
    14111435
    14121436
    1413 void UIListBtnType::Draw(QPainter *p, int order, int, bool active_on)
     1437void UIListBtnType::Draw(QPainter *p, int order, int context, bool active_on)
    14141438{
    1415     if (!m_visible)
     1439    if (!m_visible || hidden)
    14161440        return;
    14171441
    14181442    if (!m_initialized)
     
    14211445    if (m_order != order)
    14221446        return;
    14231447
     1448    if (m_context != -1 && m_context != context)
     1449        return;
     1450
    14241451    fontProp* font = m_active ? m_fontActive : m_fontInactive;
    14251452   
    14261453    if (!active_on)
     
    16391666    }
    16401667}
    16411668
     1669void UIListBtnType::calculateScreenArea()
     1670{
     1671    QRect r = m_rect;
     1672    r.moveBy(m_parent->GetAreaRect().left(),
     1673             m_parent->GetAreaRect().top());
     1674    screen_area = r;
     1675}
     1676
     1677bool UIListBtnType::takeFocus()
     1678{
     1679    SetActive(true);
     1680    return UIType::takeFocus();
     1681}
     1682
     1683void UIListBtnType::looseFocus()
     1684{
     1685    SetActive(false);
     1686    UIType::looseFocus();
     1687}
     1688
    16421689//////////////////////////////////////////////////////////////////////////////
    16431690
    16441691UIListBtnTypeItem::UIListBtnTypeItem(UIListBtnType* lbtype, const QString& text,
  • libs/libmyth/xmlparse.cpp

     
    29482948
    29492949void XMLParse::parseListBtnArea(LayerSet *container, QDomElement &element)
    29502950{
     2951    int context = -1;
    29512952    QRect   area = QRect(0,0,0,0);
    29522953    QString fontActive;
    29532954    QString fontInactive;
     
    29872988                area = parseRect(getFirstText(info));
    29882989                normalizeRect(area);
    29892990            }
     2991            else if (info.tagName() == "context")
     2992            {
     2993                context = getFirstText(info).toInt();
     2994            }
    29902995            else if (info.tagName() == "fcnfont")
    29912996            {
    29922997                QString fontName = info.attribute("name", "");
     
    30853090    l->SetSpacing((int)(spacing*hmult));
    30863091    l->SetMargin((int)(margin*wmult));
    30873092    l->SetParent(container);
     3093    l->SetContext(context);
     3094    l->calculateScreenArea();
    30883095
    30893096    container->AddType(l);
    30903097    container->bumpUpLayers(0);
     
    30923099
    30933100void XMLParse::parseListTreeArea(LayerSet *container, QDomElement &element)
    30943101{
     3102    int     context = -1;
    30953103    QRect   area = QRect(0,0,0,0);
    30963104    QRect   listsize = QRect(0,0,0,0);
    30973105    int     leveloffset = 0;
     
    31333141                area = parseRect(getFirstText(info));
    31343142                normalizeRect(area);
    31353143            }
     3144            else if (info.tagName() == "context")
     3145            {
     3146                context = getFirstText(info).toInt();
     3147            }
    31363148            else if (info.tagName() == "listsize")
    31373149            {
    31383150                listsize = parseRect(getFirstText(info));
     
    32423254    l->SetMargin((int)(margin*wmult));
    32433255    l->SetParent(container);
    32443256    l->calculateScreenArea();
    3245 
     3257    l->SetContext(context);
     3258   
    32463259    container->AddType(l);
    32473260    container->bumpUpLayers(0);
    32483261}
  • libs/libmyth/uitypes.cpp

     
    458458
    459459void UIBarType::Draw(QPainter *dr, int drawlayer, int context)
    460460{
     461    if (hidden)
     462        return;
     463 
    461464  if (m_context == context || m_context == -1)
    462465  {
    463466    if (drawlayer == m_order)
     
    610613
    611614void UIGuideType::Draw(QPainter *dr, int drawlayer, int context)
    612615{
     616    if (hidden)
     617        return;
     618
    613619    if ((m_context != context && m_context != -1) || drawlayer != m_order)
    614620        return;
    615621
     
    10081014
    10091015void UIListType::Draw(QPainter *dr, int drawlayer, int context)
    10101016{
     1017  if (hidden)
     1018     return;
     1019
    10111020  if (m_context == context || m_context == -1)
    10121021  {
    10131022    if (drawlayer == m_order)
     
    13381347    int pathStart = m_filename.findRev('/');
    13391348    bool bFound = false;
    13401349   
     1350    // Given a full path?
     1351    file = m_filename;
     1352    bFound = QFile::exists(file);
     1353
    13411354    // look in theme directory first including any sub directory
    1342     file = themeDir + m_filename;
    1343     bFound = QFile::exists(file);
    1344  
     1355    if (!bFound)
     1356    {
     1357        file = themeDir + m_filename;
     1358        bFound = QFile::exists(file);
     1359    }
     1360   
    13451361    if (!bFound && pathStart > 0)
    13461362    {
    13471363        // look in theme directory minus any sub directories
     
    13681384        file = "/tmp/" + m_filename;
    13691385        bFound = QFile::exists(file);
    13701386    }
    1371 
    1372     // Given a full path?
    1373     if (!bFound)
    1374     {
    1375         file = m_filename;
    1376         bFound = QFile::exists(file);
    1377     }
    13781387   
    13791388    if (!bFound)
    13801389    {
     
    18011810
    18021811void UIRepeatedImageType::Draw(QPainter *p, int drawlayer, int context)
    18031812{
     1813    if (hidden)
     1814        return;
     1815
    18041816    if (m_context == context || m_context == -1)
    18051817    {
    18061818        if (drawlayer == m_order)
     
    22922304
    22932305void UIMultiTextType::Draw(QPainter *dr, int drawlayer, int context)
    22942306{
     2307    if (hidden)
     2308        return;
     2309
    22952310    if (m_context == context || m_context == -1)
    22962311    {
    22972312
     
    24752490
    24762491void UIStatusBarType::Draw(QPainter *dr, int drawlayer, int context)
    24772492{
     2493    if (hidden)
     2494        return;
     2495
    24782496    if (m_context == context || m_context == -1)
    24792497    {
    24802498        if (drawlayer == m_order)
     
    26242642
    26252643void UIManagedTreeListType::Draw(QPainter *p, int drawlayer, int context)
    26262644{
     2645    if (hidden)
     2646        return;
     2647
    26272648    //  Do nothing if context is wrong;
    26282649
    26292650    if (m_context != context)
     
    37933814
    37943815void UIPushButtonType::Draw(QPainter *p, int drawlayer, int context)
    37953816{
     3817    if (hidden)
     3818        return;
     3819
    37963820    if (context != m_context)
    37973821    {
    37983822        if (m_context != -1)
     
    38933917
    38943918void UITextButtonType::Draw(QPainter *p, int drawlayer, int context)
    38953919{
     3920    if (hidden)
     3921        return;
     3922
    38963923    if (context != m_context)
    38973924    {
    38983925        if (m_context != -1)
     
    40084035
    40094036void UICheckBoxType::Draw(QPainter *p, int drawlayer, int context)
    40104037{
     4038    if (hidden)
     4039        return;
     4040
    40114041    if (context != m_context)
    40124042    {
    40134043        if (m_context != -1)
     
    40154045            return;
    40164046        }
    40174047    }
     4048   
    40184049    if (drawlayer != m_order)
    40194050    {
     4051        return;
    40204052    }
     4053   
    40214054    if (has_focus)
    40224055    {
    40234056        if (checked)
     
    41144147
    41154148void UISelectorType::Draw(QPainter *p, int drawlayer, int context)
    41164149{
     4150    if (hidden)
     4151        return;
     4152
    41174153    if (context != m_context)
    41184154    {
    41194155        if (m_context != -1)
     
    41874223    }
    41884224}
    41894225
     4226void UISelectorType::setToItem(const QString &which_item)
     4227{
     4228    for (uint i = 0; i < my_data.count(); i++)
     4229    {
     4230        if (my_data.at(i)->getString() == which_item)
     4231        {
     4232            current_data = my_data.at(i);
     4233            refresh();
     4234        }
     4235    }
     4236}
     4237
     4238QString UISelectorType::getCurrentString()
     4239{
     4240    if (current_data)
     4241        return current_data->getString();
     4242    else
     4243        return "";   
     4244}
     4245
     4246int UISelectorType::getCurrentInt()
     4247{
     4248    if (current_data)
     4249        return current_data->getInt();
     4250    else
     4251        return -1;   
     4252}
     4253
     4254
    41904255void UISelectorType::push(bool up_or_down)
    41914256{
    41924257    if (currently_pushed)
     
    43044369
    43054370void UIKeyboardType::Draw(QPainter *dr, int drawlayer, int context)
    43064371{
     4372    if (hidden)
     4373        return;
     4374
    43074375    if (m_context == context || m_context == -1)
    43084376    {
    43094377        if (drawlayer == m_order)