diff --git a/libs/xassets/xstring.cpp b/libs/xassets/xstring.cpp index bdfd304..b7f1e66 100644 --- a/libs/xassets/xstring.cpp +++ b/libs/xassets/xstring.cpp @@ -6,6 +6,8 @@ XString::XString() : XAsset() , mString("") + , mRemoveString("") + , mContentLength(-1) { SetName("String"); } @@ -13,6 +15,8 @@ XString::XString() XString::XString(const QString aString) : XAsset() , mString(aString) + , mRemoveString("") + , mContentLength(-1) { } @@ -27,6 +31,16 @@ QString XString::GetString() const return mString; } +void XString::SetRemoveString(const QString aRemoveString) +{ + mRemoveString = aRemoveString; +} + +void XString::SetContentLength(int aContentLength) +{ + mContentLength = aContentLength; +} + void XString::SetString(const QString& aString) { mString = aString; @@ -68,23 +82,28 @@ void XString::Clear() } void XString::ParseData(QDataStream *aStream) -{ - ParseData(aStream, ""); -} - -void XString::ParseData(QDataStream *aStream, QString aRemoveStr) { if (GetPtr() == -1) { - mString = ParseCustom(aStream); - if (!aRemoveStr.isEmpty()) + if (mContentLength == -1) { - mString = mString.replace(aRemoveStr, ""); + mString = ParseCustom(aStream); } + else if (mContentLength != 0) + { + QByteArray rawString(mContentLength, Qt::Uninitialized); + aStream->readRawData(rawString.data(), mContentLength); + mString = QString::fromUtf8(rawString); + } + + if (!mRemoveString.isEmpty()) + { + mString = mString.replace(mRemoveString, ""); + } + if (IsDebug()) { qDebug() << QString("[%1] mString = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mString); } } } -