All pastes #523332 Raw Edit

Something

public cpp v1 · immutable
#523332 ·published 2007-05-30 19:23 UTC
rendered paste body
void Bouchot::updateTribune(){    #ifdef Q_OS_WIN32    QString homepath = getenv("USERPROFILE");#else    QString homepath = getenv("HOME");#endif    QString totozPath ;    totozPath = homepath ;    totozPath.append(DIRTOTOZ);        QFile file(backendFileName);    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))        return;        QString errorXmlString ;    int errorXmlLine;    int errorXmlCol;    QDomDocument domDocument ;        QXmlSimpleReader reader ;          // The following has been stolen from kk but does not work        reader.setFeature("http://xml.org/sax/features/namespaces", true);    reader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);    // Pour les tribunes comme dlfp    //reader.setFeature("http://trolltech.com/xml/features/report-start-end-entity", true);            // On parse le backend        QXmlInputSource input = QXmlInputSource(&file) ;        if ( !domDocument.setContent(&input, &reader, &errorXmlString, &errorXmlLine,                                 &errorXmlCol))    {        emit messageToMainWindow("Parsing error", tr("Parse error at line %1, column %2:\n%3")                                  .arg(errorXmlString)                                  .arg(errorXmlLine)                                  .arg(errorXmlCol));        file.close();        return ;       }        //reader.parse(input) ;                // The following was my first test with xml    /*    if (!domDocument.setContent(&file, true, &errorXmlString, &errorXmlLine,                                 &errorXmlCol))    {        emit messageToMainWindow("Parsing error", tr("Parse error at line %1, column %2:\n%3")                                  .arg(errorXmlString)                                  .arg(errorXmlLine)                                  .arg(errorXmlCol));        file.close();        return ;     }    */    QDomElement root = domDocument.documentElement();        QDomNode child1 = domDocument.firstChild();    if ( child1.isProcessingInstruction())    {        QDomProcessingInstruction xml = child1.toProcessingInstruction();        QRegExp regexp("encoding = '((?:\\w|\\-)+)'");                if ( regexp.indexIn(xml.data()) > -1 )        {            qDebug(tr("Encodage detected %1").arg(regexp.cap(1).toLower()).toAscii().data());            this->encodage = regexp.cap(1).toLower() ;        }                                }        if (root.tagName() != "board")    {        emit messageToMainWindow("Parsing error", "The file is not a board file.");                file.close();        return ;    }        QDomElement postBouchot = root.firstChildElement("post");        QString norloge_post = "" ;    int id_post = -1 ;    QString message_post = "" ;    QString login_post = "" ;    QString ua_post = "" ;    QString ligne = "" ;    bool updateTextBox = false ;    QRegExp rxNorloge = QRegExp("(([01]?[0-9])|(2[0-3])):[0-5][0-9](:[0-5][0-9])?" );    QRegExp rxTotoz = QRegExp("\\[:((?:\\w|\\d|-|_| |/)*)\\]");    QMap < int, messageBouchot * > mapTempo ;    QString totozName ;        while (!postBouchot.isNull())    {        id_post = postBouchot.attribute("id").toInt();                        if ( mapPosts.contains(id_post) )        {                        break ;        }                norloge_post = postBouchot.attribute("time");        ua_post = postBouchot.firstChildElement("info").text();        message_post = postBouchot.firstChildElement("message").text();        login_post = postBouchot.firstChildElement("login").text();                                mapPosts[id_post] = new messageBouchot(norloge_post, ua_post, login_post, message_post);        mapTempo[id_post] = new messageBouchot(norloge_post, ua_post, login_post, message_post);                //ligne=tr("<span style=\"color: rgb(255,121,121);\"><acronym title=\"%4\">%1</acronym></span> <span style=\"color: rgb(121,121,255);\">%2</span> %3")        //        .arg(login_post).arg(norloge_post).arg(message_post).arg(login_post);                updateTextBox = true ;                                                    norloge_post = "" ;        id_post = -1 ;        message_post = "" ;        login_post = "" ;        ua_post = "" ;        postBouchot = postBouchot.nextSiblingElement("post");            }        QMap<int, messageBouchot * >::const_iterator it = mapTempo.constBegin();        if ( mapTempo.count() == 0)    {        // c'est vide    }    else    {                while (it != mapTempo.constEnd())        {                                                                        norloge_post = convertNorloge(it.value()->getNorloge()).right(8) ;            message_post = (it.value()->getMessage()) ;                                                            if ( message_post.contains(login) and login != "")                emit ontappelle(norloge_post, message_post);            //needed to know if the message answer to one of mines            bool answerToMine = false ;                        // the following is for misc. formatting in a message            QStringList splittedMessage = message_post.split(" ");                        for (QStringList::const_iterator it42 = splittedMessage.constBegin(); it42 != splittedMessage.constEnd(); ++it42 )            {                                if (rxNorloge.indexIn(*it42) != -1 )                {                    // check if the message answers to one of mine                                        QMap<int, messageBouchot * >::const_iterator it43 = mapPosts.constBegin();                    while ( it43 != mapPosts.constEnd() )                    {                                                QString h = convertNorloge(it43.value()->getNorloge()).right(8) ;                        if ( h.startsWith(*it42) )// The clock cited exists in the history                        {                                                        //The corresponding message was one of mines                            if (it43.value()->getLogin() == login )                            {                                                                answerToMine = true ;                                break ;                                                            }                        }                                                ++it43 ;                       }                                            // this is for the clock formatting in a message                                message_post.replace(*it42, tr("<span id=\"norlogemessage\"><a href=\"#%1\">%1</a></span>").arg(*it42));                                        }                //this is for the totoz in a message                        else if (rxTotoz.indexIn(*it42) != -1)                {                    totozName = it42->mid(2,it42->size()-3) ;                    QString totozFile = tr("%1%2.gif").arg(totozPath).arg(totozName);                                            //display the totoz only if I am able to do it                    if (QImageReader(totozFile).canRead())                        message_post.replace(*it42, tr("<img src=\"%1\" alt=\"%2\">")                               .arg(totozFile).arg(totozName));                }                            }                                    //format the login            //if it is empty or Anonyme< replace with the UA            if ( ( it.value()->getLogin() == "" ) or (it.value()->getLogin() == "Anonyme") )            {                if ( answerToMine )                    login_post = tr("<span id=\"uaAnswer\">%1</span>").arg(it.value()->getUa());                else                    login_post = tr("<span id=\"ua\">%1</span>").arg(it.value()->getUa());            }            else // it has a Login            {                //if it is me                if ( it.value()->getLogin() == login )                {                    login_post = tr("<span id=\"mylogin\">%1</span>").arg(it.value()->getLogin()) ;                }                else // It is not me                {                    if ( answerToMine )                        login_post = tr("<span id=\"loginAnswer\">%1</span>").arg(it.value()->getLogin()) ;                    else                            login_post = tr("<span id=\"login\">%1</span>").arg(it.value()->getLogin()) ;                                    }            }            //Format the message in the QTextBrowser            ligne=tr("<a name=\"%1\" id=\"%1\"></a><span id=\"norloge\">%1</span> %2 %3")                .arg(norloge_post).arg(login_post).arg(message_post);            //ligne=tr("<div id=\"norloge\">%1</div> <span style=\"color: rgb(255,121,121);\">%2</span> %3")            //    .arg(norloge_post).arg(login_post).arg(message_post);            PiniText->append(ligne);            delete it.value() ;            ++it ;        }    }    file.close() ;        if (updateTextBox)    {        bool updateScroll = false;        QScrollBar *myscroll = PiniText->verticalScrollBar();        int maxvalue = myscroll->maximum();                if (myscroll->value() == maxvalue)            updateScroll = true ;                if ( updateScroll)        {            maxvalue = myscroll->maximum();            myscroll->setValue(maxvalue);        }    }        }