Ticket #4885: 4885-v3.patch

File 4885-v3.patch, 21.0 KB (added by Tony Arie Kolev <kolevtony@…>, 12 years ago)

Rejects corrected, v3 created, error in compilation #include <QString> not found, changed to #include <qstring.h>, now error in compilation: /usr/lib/qt-3.3/include/qstring.h:856: error: ‘void QString::detach()’ is private

  • themes/ProjectGrayhem-OSD/osd.xml

     
    284284        <position>0,320</position>
    285285      </image>
    286286    <textarea name="settings">
    287       <area>50,335,350,32</area>
     287      <area>50,335,250,32</area>
    288288      <font>settings</font>
    289289    </textarea>
    290290  </container>
     
    307307      <multiline>yes</multiline>
    308308   </textarea>
    309309   <textarea name="option1">
    310       <area>120,269,455,30</area>
     310      <area>120,269,395,30</area>
    311311      <font>notify</font>
    312312      <altfont>grayfont</altfont>
    313313   </textarea>
    314314   <textarea name="option2">
    315       <area>120,299,455,30</area>
     315      <area>120,299,395,30</area>
    316316      <font>notify</font>
    317317      <altfont>grayfont</altfont>
    318318   </textarea>
    319319   <textarea name="option3">
    320       <area>120,329,455,30</area>
     320      <area>120,329,395,30</area>
    321321      <font>notify</font>
    322322      <altfont>grayfont</altfont>
    323323   </textarea>
    324324   <textarea name="option4">
    325       <area>120,359,455,30</area>
     325      <area>120,359,395,30</area>
    326326      <font>notify</font>
    327327      <altfont>grayfont</altfont>
    328328   </textarea>
  • themes/blootube-osd/osd.xml

     
    286286        <position>30,30</position>
    287287      </image>
    288288    <textarea name="settings">
    289       <area>50,50,350,32</area>
     289      <area>50,50,250,32</area>
    290290      <font>settings</font>
    291291    </textarea>
    292292  </container>
     
    309309      <multiline>yes</multiline>
    310310   </textarea>
    311311   <textarea name="option1">
    312       <area>120,269,455,30</area>
     312      <area>120,269,395,30</area>
    313313      <font>notify</font>
    314314      <altfont>grayfont</altfont>
    315315   </textarea>
    316316   <textarea name="option2">
    317       <area>120,299,455,30</area>
     317      <area>120,299,395,30</area>
    318318      <font>notify</font>
    319319      <altfont>grayfont</altfont>
    320320   </textarea>
    321321   <textarea name="option3">
    322       <area>120,329,455,30</area>
     322      <area>120,329,395,30</area>
    323323      <font>notify</font>
    324324      <altfont>grayfont</altfont>
    325325   </textarea>
    326326   <textarea name="option4">
    327       <area>120,359,455,30</area>
     327      <area>120,359,395,30</area>
    328328      <font>notify</font>
    329329      <altfont>grayfont</altfont>
    330330   </textarea>
  • myththemes/Gray-OSD/osd.xml

     
    425425      <multiline>yes</multiline>
    426426   </textarea>
    427427   <textarea name="option1">
    428       <area>100,255,455,30</area>
     428      <area>100,255,395,30</area>
    429429      <font>infofont</font>
    430430      <altfont>infofontgray</altfont>
    431431   </textarea>
    432432   <textarea name="option2">
    433       <area>100,285,455,30</area>
     433      <area>100,285,395,30</area>
    434434      <font>infofont</font>
    435435      <altfont>infofontgray</altfont>
    436436   </textarea>
    437437   <textarea name="option3">
    438       <area>100,315,455,30</area>
     438      <area>100,315,395,30</area>
    439439      <font>infofont</font>
    440440      <altfont>infofontgray</altfont>
    441441   </textarea>
    442442   <textarea name="option4">
    443       <area>100,345,455,30</area>
     443      <area>100,345,395,30</area>
    444444      <font>infofont</font>
    445445      <altfont>infofontgray</altfont>
    446446   </textarea>
    447447   <textarea name="option5">
    448       <area>100,375,455,30</area>
     448      <area>100,375,395,30</area>
    449449      <font>infofont</font>
    450450      <altfont>infofontgray</altfont>
    451451    </textarea>
  • myththemes/Titivillus-OSD/osd.xml

     
    359359
    360360  <container name="settings">
    361361    <textarea name="settings">
    362       <area>50,50,350,32</area>
     362      <area>50,50,250,32</area>
    363363      <font>settings</font>
    364364    </textarea>
    365365  </container>
  • myththemes/isthmus/osd.xml

     
    315315
    316316  <container name="settings">
    317317    <textarea name="settings">
    318       <area>50,50,350,32</area>
     318      <area>50,50,250,32</area>
    319319      <font>settings</font>
    320320    </textarea>
    321321  </container>
     
    339339      <multiline>yes</multiline>
    340340   </textarea>
    341341   <textarea name="option1">
    342       <area>100,255,455,30</area>
     342      <area>100,255,395,30</area>
    343343      <font>infofont</font>
    344344      <altfont>infofontgray</altfont>
    345345   </textarea>
    346346   <textarea name="option2">
    347       <area>100,285,455,30</area>
     347      <area>100,285,395,30</area>
    348348      <font>infofont</font>
    349349      <altfont>infofontgray</altfont>
    350350   </textarea>
    351351   <textarea name="option3">
    352       <area>100,315,455,30</area>
     352      <area>100,315,395,30</area>
    353353      <font>infofont</font>
    354354      <altfont>infofontgray</altfont>
    355355   </textarea>
    356356   <textarea name="option4">
    357       <area>100,345,455,30</area>
     357      <area>100,345,395,30</area>
    358358      <font>infofont</font>
    359359      <altfont>infofontgray</altfont>
    360360   </textarea>
    361361   <textarea name="option5">
    362       <area>100,375,455,30</area>
     362      <area>100,375,395,30</area>
    363363      <font>infofont</font>
    364364      <altfont>infofontgray</altfont>
    365365    </textarea>
  • myththemes/Iulius-OSD/osd.xml

     
    251251
    252252  <container name="settings">
    253253    <textarea name="settings">
    254       <area>64,85,350,32</area>
     254      <area>64,85,264,32</area>
    255255      <font>settings</font>
    256256    </textarea>
    257257  </container>
  • myththemes/Retro-OSD/osd.xml

     
    297297        <position>30,30</position>
    298298      </image>
    299299    <textarea name="settings">
    300       <area>50,50,350,32</area>
     300      <area>50,50,250,32</area>
    301301      <font>settings</font>
    302302    </textarea>
    303303  </container>
     
    321321      <multiline>yes</multiline>
    322322   </textarea>
    323323   <textarea name="option1">
    324       <area>120,239,455,30</area>
     324      <area>120,239,395,30</area>
    325325      <font>notify</font>
    326326      <altfont>grayfont</altfont>
    327327   </textarea>
    328328   <textarea name="option2">
    329       <area>120,269,455,30</area>
     329      <area>120,269,395,30</area>
    330330      <font>notify</font>
    331331      <altfont>grayfont</altfont>
    332332   </textarea>
    333333   <textarea name="option3">
    334       <area>120,299,455,30</area>
     334      <area>120,299,395,30</area>
    335335      <font>notify</font>
    336336      <altfont>grayfont</altfont>
    337337   </textarea>
    338338   <textarea name="option4">
    339       <area>120,329,455,30</area>
     339      <area>120,329,395,30</area>
    340340      <font>notify</font>
    341341      <altfont>grayfont</altfont>
    342342   </textarea>
    343343   <textarea name="option5">
    344       <area>120,359,455,30</area>
     344      <area>120,359,395,30</area>
    345345      <font>notify</font>
    346346      <altfont>grayfont</altfont>
    347347    </textarea>
  • mythtv/themes/defaultosd/osd.xml

     
    239239
    240240  <container name="settings">
    241241    <textarea name="settings">
    242       <area>50,50,350,32</area>
     242      <area>50,50,250,32</area>
    243243      <font>settings</font>
    244244    </textarea>
    245245  </container>
  • mythtv/themes/blueosd/osd.xml

     
    276276
    277277  <container name="settings">
    278278    <textarea name="settings">
    279       <area>50,50,350,32</area>
     279      <area>50,50,250,32</area>
    280280      <font>settings</font>
    281281    </textarea>
    282282  </container>
  • mythtv/libs/libmythtv/osdlistbtntype.cpp

     
    730730      m_group(QString::null), m_state(state),
    731731      m_showArrow(showArrow), m_checkable(checkable),
    732732      m_checkRect(0,0,0,0),   m_arrowRect(0,0,0,0),
    733       m_pixmapRect(0,0,0,0),  m_textRect(0,0,0,0)
     733      m_pixmapRect(0,0,0,0),  m_textRect(0,0,0,0),
     734      m_rtl(new RTL())
    734735{
    735736    if (!m_parent->m_initialized)
    736737        m_parent->Init();
     
    775776{
    776777    if (m_parent)
    777778        m_parent->RemoveItem(this);
     779    if (m_rtl)
     780        delete m_rtl;
    778781}
    779782
    780783void OSDListBtnTypeItem::paint(OSDSurface *surface, TTFFont *font,
     
    828841    QRect tr(m_textRect);
    829842    tr.moveBy(x, y);
    830843    tr.moveBy(0, font->Size() / 4);
    831     font->DrawString(surface, tr.x(), tr.y(), m_text, tr.right(), tr.bottom());
     844
     845    bool isRTL = false;
     846    QString message = m_rtl->ConvertFromRtoL(m_text, isRTL);
     847    if (isRTL)
     848    {
     849        int textlength = 0;
     850        font->CalcWidth(m_text, &textlength);
     851        int xoffset = tr.width() - textlength;
     852        if (xoffset > 0)
     853            tr.translate(xoffset, 0);
     854    }
     855    font->DrawString(surface, tr.x(), tr.y(), message, tr.right(), tr.bottom());
    832856}
  • mythtv/libs/libmythtv/osdtypes.cpp

     
    1717#include "mythcontext.h"
    1818#include "mythdialogs.h"
    1919
    20 #ifdef USING_FRIBIDI
    21     #include "fribidi/fribidi.h"
    22     #include <qtextcodec.h>
    23 #endif // USING_FRIBIDI
    24 
    2520/// Shared OSD image cache
    2621OSDImageCache OSDTypeImage::c_cache;
    2722
     
    706701
    707702    m_linespacing(1.5f),
    708703
    709     m_draw_info_str(""),
    710     m_draw_info_len(0),
    711 
    712     codeci(NULL)
     704    m_draw_info_str(QString::null), m_rtl(new RTL())
    713705{
    714706}
    715707
     
    744736
    745737    m_linespacing(1.5f),
    746738
    747     m_draw_info_str(""),
    748     m_draw_info_len(0),
    749 
    750     codeci(NULL)
     739    m_draw_info_str(QString::null), m_rtl(new RTL())
    751740{
    752741    QMutexLocker locker(&other.m_lock);
    753742
     
    783772
    784773OSDTypeText::~OSDTypeText()
    785774{
     775    if (m_rtl)
     776        delete m_rtl;
    786777}
    787778
    788779void OSDTypeText::SetAltFont(TTFFont *font)
     
    791782    m_altfont = font;
    792783}
    793784
    794 QString OSDTypeText::BasicConvertFromRtoL(const QString &text)
    795 {
    796     QStringList rtl_string_composer;
    797     bool handle_rtl = false;
    798     QChar prev_char;
    799 
    800     // Handling Right-to-Left languages.
    801     // Left-to-Right languages are not affected.
    802     for (int i = (int)text.length() - 1; i >= 0; i--)
    803     {
    804         QChar::Direction text_dir = text[i].direction();
    805         if (text_dir != QChar::DirR &&
    806             text_dir != QChar::DirRLE &&
    807             text_dir != QChar::DirRLO)
    808         {
    809             if (handle_rtl || rtl_string_composer.empty())
    810                 rtl_string_composer.append(QString());
    811 
    812             if (text[i].isSpace() && !prev_char.isNull()
    813                     && prev_char.isDigit() && handle_rtl)
    814                 rtl_string_composer.back().append(text[i]);
    815             else
    816                 rtl_string_composer.back().prepend(text[i]);
    817 
    818             prev_char = text[i];
    819 
    820             handle_rtl = false;
    821         }
    822         else
    823         {
    824             if (!handle_rtl)
    825             {
    826                 rtl_string_composer.append(QString());
    827                 handle_rtl = true;
    828                 prev_char = QChar();
    829             }
    830             rtl_string_composer.back().append(text[i]);
    831         }
    832     }
    833 
    834     QString output = rtl_string_composer.join("");
    835 
    836     return QDeepCopy<QString>(output);
    837 }
    838 
    839 QString OSDTypeText::ConvertFromRtoL(const QString &text) const
    840 {
    841     QString output = BasicConvertFromRtoL(text);
    842 
    843 #ifdef USING_FRIBIDI
    844     QMutexLocker locker(&fribidi_lock);
    845     if (!codeci)
    846         codeci = QTextCodec::codecForName("utf8");
    847 
    848     if (!codeci)
    849         return output;
    850 
    851     QCString temp = codeci->fromUnicode(output);
    852 
    853     FriBidiCharType base;
    854     size_t len;
    855 
    856     bool fribidi_flip_commas = true;
    857     base = (fribidi_flip_commas) ? FRIBIDI_TYPE_ON : FRIBIDI_TYPE_L;
    858 
    859     const char *ip = temp;
    860     FriBidiChar logical[strlen(ip) + 1], visual[strlen(ip) + 1];
    861 
    862     int char_set_num = fribidi_parse_charset("UTF-8");
    863 
    864     len = fribidi_charset_to_unicode(
    865         (FriBidiCharSet) char_set_num, ip, strlen(ip), logical);
    866 
    867     bool log2vis = fribidi_log2vis(
    868         logical, len, &base, visual, NULL, NULL, NULL); // output
    869 
    870     if (log2vis)
    871         len = fribidi_remove_bidi_marks(visual, len, NULL, NULL, NULL);
    872  
    873     output = "";
    874     for (size_t i = 0; i < len ; i++)
    875         output += QChar(visual[i]);
    876 #endif // USING_FRIBIDI
    877 
    878     return output;
    879 }
    880 
    881785void OSDTypeText::SetText(const QString &text)
    882786{
    883787    QMutexLocker locker(&m_lock);
    884     m_message    = ConvertFromRtoL(text);
     788    m_message    = text; m_message.detach();
    885789    m_cursorpos  = m_message.length();
    886790    m_scrollinit = false;
    887791}
     
    889793QString OSDTypeText::GetText(void) const
    890794{
    891795    QMutexLocker locker(&m_lock);
    892     return QDeepCopy<QString>(m_message);
     796    QString tmp = m_message; tmp.detach();
     797    return tmp;
    893798}
    894799
    895800void OSDTypeText::SetDefaultText(const QString &text)
    896801{
    897802    QMutexLocker locker(&m_lock);
    898     m_message     = ConvertFromRtoL(text);
    899     m_default_msg = QDeepCopy<QString>(m_message);
     803    m_message     = text; m_message.detach();
     804    m_default_msg = text; m_default_msg.detach();
    900805    m_scrollinit  = false;
    901806}
    902807
    903808QString OSDTypeText::GetDefaultText(void) const
    904809{
    905810    QMutexLocker locker(&m_lock);
    906     return QDeepCopy<QString>(m_default_msg);
     811    QString tmp = m_default_msg; tmp.detach();
     812    return tmp;
    907813}
    908814
    909815void OSDTypeText::SetMultiLine(bool multi)
     
    11071013    if (m_draw_info_str != text)
    11081014    {
    11091015        m_draw_info_str = QDeepCopy<QString>(text);
     1016        m_draw_info_str.detach();
    11101017        m_draw_info.clear();
    11111018        m_draw_info_len = 0;
    11121019
     
    12191126{
    12201127    QMutexLocker locker(&m_lock);
    12211128
     1129    bool isRTL = false;
     1130    QString msg = m_rtl->ConvertFromRtoL(text, isRTL);
     1131    m_right = isRTL;
     1132
    12221133    if (m_centered || m_right)
    12231134    {
    12241135        int textlength = 0;
     
    12441155    if ((m_usingalt || m_selected) && m_altfont)
    12451156        font = m_altfont;
    12461157
    1247     font->DrawString(surface, rect.left(), rect.top(), text,
     1158    font->DrawString(surface, rect.left(), rect.top(), msg,
    12481159                     rect.right(), rect.bottom(), alphamod, doubl);
    12491160
    12501161    // draw cursor
  • mythtv/libs/libmythtv/libmythtv.pro

     
    269269    HEADERS += osd.h                    osdtypes.h
    270270    HEADERS += osdsurface.h             osdlistbtntype.h
    271271    HEADERS += osdimagecache.h          osdtypeteletext.h
    272     HEADERS += udpnotify.h
     272    HEADERS += rtl.h                    udpnotify.h
    273273    SOURCES += osd.cpp                  osdtypes.cpp
    274274    SOURCES += osdsurface.cpp           osdlistbtntype.cpp
    275275    SOURCES += osdimagecache.cpp        osdtypeteletext.cpp
    276     SOURCES += udpnotify.cpp
     276    SOURCES += rtl.cpp                  udpnotify.cpp
    277277
    278278    # Video output
    279279    HEADERS += videooutbase.h           videoout_null.h
  • mythtv/libs/libmythtv/osdtypes.h

     
    1212#include <qcolor.h>
    1313#include "cc708window.h"
    1414#include "osdimagecache.h"
     15#include "rtl.h"
    1516
    1617using namespace std;
    1718
     
    238239    void SetButton(bool is_button)      { m_button = is_button;     }
    239240    void SetEntryNum(int entrynum)      { m_entrynum = entrynum;    }
    240241
    241     QString ConvertFromRtoL(const QString &text) const;
    242242
    243     static QString BasicConvertFromRtoL(const QString &text);
    244 
    245243  protected:
    246244    ~OSDTypeText();
    247245
     
    292290    mutable uint    m_draw_info_len;
    293291    mutable vector<DrawInfo> m_draw_info;
    294292
    295     mutable QMutex      fribidi_lock;
    296     mutable QTextCodec *codeci;
     293    RTL *m_rtl;
    297294};
    298295   
    299296class OSDTypeImage : public OSDType
  • mythtv/libs/libmythtv/rtl.cpp

     
     1/*
     2 * Right To Left Languages manipulation for OSD
     3 *
     4 * Copyright Ido Roseman, Daniel Kristjansson, Tony Arie Kolev 2006 - 2008
     5 *
     6 * Distributed as part of MythTV under the GPLv2, or at our option a later
     7 * version of the GPL. See COPYING which should accompany this for details.
     8 */
     9
     10#include <QStringList>
     11
     12#include "rtl.h"
     13
     14#ifdef USING_FRIBIDI
     15#   include "fribidi/fribidi.h"
     16#   include <QTextCodec>
     17#endif // USING_FRIBIDI
     18
     19static QString BasicConvertFromRtoL(const QString &text, bool &isRTL)
     20{
     21    QStringList rtl_string_composer;
     22    bool handle_rtl = false;
     23    QChar prev_char;
     24
     25    isRTL = false;
     26
     27    // Handling Right-to-Left languages.
     28    // Left-to-Right languages are not affected.
     29    for (int i = (int)text.length() - 1; i >= 0; i--)
     30    {
     31        QChar::Direction text_dir = text[i].direction();
     32        if (text_dir != QChar::DirR &&
     33            text_dir != QChar::DirRLE &&
     34            text_dir != QChar::DirRLO)
     35        {
     36            if (handle_rtl || rtl_string_composer.empty())
     37                rtl_string_composer.append(QString());
     38
     39            if (text[i].isSpace() && !prev_char.isNull()
     40                    && prev_char.isDigit() && handle_rtl)
     41                rtl_string_composer.back().append(text[i]);
     42            else
     43                rtl_string_composer.back().prepend(text[i]);
     44
     45            prev_char = text[i];
     46
     47            handle_rtl = false;
     48        }
     49        else
     50        {
     51            if (!handle_rtl)
     52            {
     53                rtl_string_composer.append(QString());
     54                handle_rtl = true;
     55                prev_char = QChar();
     56            }
     57            rtl_string_composer.back().append(text[i]);
     58            isRTL = true;
     59        }
     60    }
     61
     62    QString output = rtl_string_composer.join("");
     63    output.detach();
     64    return output;
     65}
     66
     67QString RTL::ConvertFromRtoL(const QString &text, bool &isRTL) const
     68{
     69#ifndef USING_FRIBIDI
     70    return BasicConvertFromRtoL(text, isRTL);
     71#else
     72    isRTL = false;
     73    QString output = text;
     74    QMutexLocker locker(&fribidi_lock);
     75    if (!codeci)
     76        codeci = QTextCodec::codecForName("utf8");
     77
     78    if (!codeci)
     79        return output;
     80
     81    QCString temp = codeci->fromUnicode(output);
     82
     83    FriBidiCharType base;
     84    size_t len;
     85   
     86
     87    bool fribidi_flip_commas = true;
     88    base = (fribidi_flip_commas) ? FRIBIDI_TYPE_ON : FRIBIDI_TYPE_L;
     89
     90    const char *ip = temp;
     91    FriBidiChar logical[strlen(ip) + 1], visual[strlen(ip) + 1];
     92
     93    int char_set_num = fribidi_parse_charset("UTF-8");
     94
     95    len = fribidi_charset_to_unicode(
     96        (FriBidiCharSet) char_set_num, ip, strlen(ip), logical);
     97
     98    FriBidiLevel embedding_level_list[len];
     99    FriBidiStrIndex position_L_to_V_list[len];
     100    FriBidiStrIndex position_V_to_L_list[len];
     101
     102    bool log2vis = fribidi_log2vis(
     103        logical, len, &base, visual, position_L_to_V_list, position_V_to_L_list,
     104        embedding_level_list); // output
     105
     106    if (log2vis)
     107    {
     108        len = fribidi_remove_bidi_marks(visual, len, NULL, NULL, NULL);
     109        for (uint i=0; i < len; i++)
     110        {
     111            if (embedding_level_list[i]%2==1)
     112            {
     113                isRTL = true;
     114                break;
     115            }
     116        }
     117    }
     118
     119    output = "";
     120    for (size_t i = 0; i < len ; i++)
     121        output += QChar(visual[i]);
     122
     123    return output;
     124#endif // !USING_FRIBIDI
     125}
     126
  • mythtv/libs/libmythtv/osdlistbtntype.h

     
    3535#include "osdtypes.h"
    3636#include "ttfont.h"
    3737#include "generictree.h"
     38#include "rtl.h"
    3839
    3940class OSDListBtnType;
    4041class OSDListBtnTypeItem;
     
    311312    QRect           m_arrowRect;
    312313    QRect           m_pixmapRect;
    313314    QRect           m_textRect;
     315    RTL            *m_rtl;
    314316};
    315317
    316318
  • mythtv/libs/libmythtv/rtl.h

     
     1#ifndef RTL_H_
     2#define RTL_H_
     3
     4#include <qstring.h>
     5#include <qmutex.h>
     6
     7class QTextCodec;
     8
     9class RTL
     10{
     11  public:
     12    RTL(void) : codeci(NULL) { }
     13
     14    QString ConvertFromRtoL(const QString &text, bool &isRTL) const;
     15
     16  private:
     17    mutable QMutex      fribidi_lock;
     18    mutable QTextCodec *codeci;
     19};
     20
     21#endif