Ignore:
Timestamp:
May 5, 2011, 5:36:53 AM (14 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/tools/assistant/lib/qhelpprojectdata.cpp

    r651 r846  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation (qt-info@nokia.com)
     
    4242#include "qhelpprojectdata_p.h"
    4343
     44#include <QtCore/QCoreApplication>
    4445#include <QtCore/QDir>
    4546#include <QtCore/QFileInfo>
     
    4748#include <QtCore/QMap>
    4849#include <QtCore/QRegExp>
     50#include <QtCore/QUrl>
    4951#include <QtCore/QVariant>
    5052#include <QtXml/QXmlStreamReader>
     
    7779    void raiseUnknownTokenError();
    7880    void addMatchingFiles(const QString &pattern);
     81    bool hasValidSyntax(const QString &nameSpace, const QString &vFolder) const;
    7982
    8083    QMap<QString, QStringList> dirEntriesCache;
     
    8386void QHelpProjectDataPrivate::raiseUnknownTokenError()
    8487{
    85     raiseError(QObject::tr("Unknown token."));
     88    raiseError(QCoreApplication::translate("QHelpProject", "Unknown token."));
    8689}
    8790
     
    9699                readProject();
    97100            else
    98                 raiseError(QObject::tr("Unknown token. Expected \"QtHelpProject\"!"));
     101                raiseError(QCoreApplication::translate("QHelpProject",
     102                               "Unknown token. Expected \"QtHelpProject\"!"));
    99103        }
    100104    }
    101105
    102106    if (hasError()) {
    103         raiseError(QObject::tr("Error in line %1: %2").arg(lineNumber())
     107        raiseError(QCoreApplication::translate("QHelpProject",
     108                       "Error in line %1: %2").arg(lineNumber())
    104109            .arg(errorString()));
    105110    }
     
    113118            if (name() == QLatin1String("virtualFolder")) {
    114119                virtualFolder = readElementText();
    115                 if (virtualFolder.contains(QLatin1String("/")))
    116                     raiseError(QObject::tr("A virtual folder must not contain a \'/\' character!"));
     120                if (!hasValidSyntax(QLatin1String("test"), virtualFolder))
     121                    raiseError(QCoreApplication::translate("QHelpProject",
     122                                   "Virtual folder has invalid syntax."));
    117123            } else if (name() == QLatin1String("namespace")) {
    118124                namespaceName = readElementText();
    119                 if (namespaceName.contains(QLatin1String("/")))
    120                     raiseError(QObject::tr("A namespace must not contain a \'/\' character!"));
     125                if (!hasValidSyntax(namespaceName, QLatin1String("test")))
     126                    raiseError(QCoreApplication::translate("QHelpProject",
     127                                   "Namespace has invalid syntax."));
    121128            } else if (name() == QLatin1String("customFilter")) {
    122129                readCustomFilter();
     
    126133                QString n = attributes().value(QLatin1String("name")).toString();
    127134                if (!metaData.contains(n))
    128                     metaData[n] = attributes().value(QLatin1String("value")).toString();
     135                    metaData[n]
     136                        = attributes().value(QLatin1String("value")).toString();
    129137                else
    130                     metaData.insert(n, attributes().value(QLatin1String("value")).toString());
     138                    metaData.insert(n, attributes().
     139                                    value(QLatin1String("value")).toString());
    131140            } else {
    132141                raiseUnknownTokenError();
     
    134143        } else if (isEndElement() && name() == QLatin1String("QtHelpProject")) {
    135144            if (namespaceName.isEmpty())
    136                 raiseError(QObject::tr("Missing namespace in QtHelpProject."));
     145                raiseError(QCoreApplication::translate("QHelpProject",
     146                              "Missing namespace in QtHelpProject."));
    137147            else if (virtualFolder.isEmpty())
    138                 raiseError(QObject::tr("Missing virtual folder in QtHelpProject"));
     148                raiseError(QCoreApplication::translate("QHelpProject",
     149                               "Missing virtual folder in QtHelpProject"));
    139150            break;
    140151        }
     
    224235                    || (attributes().value(QLatin1String("name")).toString().isEmpty()
    225236                    && attributes().value(QLatin1String("id")).toString().isEmpty()))
    226                     raiseError(QObject::tr("Missing attribute in keyword at line %1.")
    227                         .arg(lineNumber()));
    228                 filterSectionList.last().addIndex(
    229                     QHelpDataIndexItem(attributes().value(QLatin1String("name")).toString(),
    230                         attributes().value(QLatin1String("id")).toString(),
    231                         attributes().value(QLatin1String("ref")).toString()));
     237                    raiseError(QCoreApplication::translate("QHelpProject",
     238                                   "Missing attribute in keyword at line %1.")
     239                               .arg(lineNumber()));
     240                filterSectionList.last()
     241                    .addIndex(QHelpDataIndexItem(attributes().
     242                                  value(QLatin1String("name")).toString(),
     243                              attributes().value(QLatin1String("id")).toString(),
     244                              attributes().value(QLatin1String("ref")).toString()));
    232245            } else {
    233246                raiseUnknownTokenError();
     
    306319}
    307320
     321bool QHelpProjectDataPrivate::hasValidSyntax(const QString &nameSpace,
     322                                             const QString &vFolder) const
     323{
     324    const QLatin1Char slash('/');
     325    if (nameSpace.contains(slash) || vFolder.contains(slash))
     326        return false;
     327    QUrl url;
     328    const QLatin1String scheme("qthelp");
     329    url.setScheme(scheme);
     330    const QString canonicalNamespace = nameSpace.toLower();
     331    url.setHost(canonicalNamespace);
     332    url.setPath(vFolder);
     333
     334    const QString expectedUrl(scheme + QLatin1String("://")
     335        + canonicalNamespace + slash + vFolder);
     336    return url.isValid() && url.toString() == expectedUrl;
     337}
     338
    308339/*!
    309340    \internal
     
    347378    QFile file(fileName);
    348379    if (!file.open(QIODevice::ReadOnly)) {
    349         d->errorMsg = QObject::tr("The input file %1 could not be opened!")
    350             .arg(fileName);
     380        d->errorMsg = QCoreApplication::translate("QHelpProject",
     381                          "The input file %1 could not be opened!").arg(fileName);
    351382        return false;
    352383    }
Note: See TracChangeset for help on using the changeset viewer.