UiStyle::UiStyle(const QString &settingsKey) : _settingsKey(settingsKey) {
// register FormatList if that hasn't happened yet
- // FIXME I don't think this actually avoids double registration... :/
+ // FIXME I don't think this actually avoids double registration... then again... does it hurt?
if(QVariant::nameToType("UiStyle::FormatList") == QVariant::Invalid) {
qRegisterMetaType<FormatList>("UiStyle::FormatList");
qRegisterMetaTypeStreamOperators<FormatList>("UiStyle::FormatList");
// Since we create those ourselves, we should be pretty safe that nobody does something crappy here.
UiStyle::StyledString UiStyle::styleString(const QString &s_) {
QString s = s_;
+ if(s.length() > 65535) {
+ qWarning() << QString("String too long to be styled: %1").arg(s);
+ return StyledString();
+ }
StyledString result;
- result.formats.append(qMakePair(0, (quint32)None));
+ result.formatList.append(qMakePair((quint16)0, (quint32)None));
quint32 curfmt = (quint32)None;
- int pos = 0; int length = 0;
+ int pos = 0; quint16 length = 0;
for(;;) {
- pos = s.indexOf('%', pos);
+ int pos = s.indexOf('%', pos);
if(pos < 0) break;
if(s[pos+1] == '%') { // escaped %, we just remove one and continue
s.remove(pos, 1);
length = code.length();
}
s.remove(pos, length);
- if(pos == result.formats.last().first)
- result.formats.last().second = curfmt;
+ if(pos == result.formatList.last().first)
+ result.formatList.last().second = curfmt;
else
- result.formats.append(qMakePair(pos, curfmt));
+ result.formatList.append(qMakePair((quint16)pos, curfmt));
}
- result.text = s;
+ result.plainText = s;
return result;
}
QString user = userFromMask(msg.sender());
QString host = hostFromMask(msg.sender());
QString nick = nickFromMask(msg.sender());
- QString txt = mircToInternal(msg.text());
+ QString txt = mircToInternal(msg.contents());
QString bufferName = msg.bufferInfo().bufferName();
StyledMessage result;
break;
case Message::Nick:
s = tr("%Dr<->");
- if(nick == msg.text()) t = tr("%DrYou are now known as %DN%1%DN").arg(txt);
+ if(nick == msg.contents()) t = tr("%DrYou are now known as %DN%1%DN").arg(txt);
else t = tr("%Dr%DN%1%DN is now known as %DN%2%DN").arg(nick, txt);
break;
case Message::Mode:
t = tr("%De[%1]").arg(txt);
}
result.sender = styleString(s);
- result.text = styleString(t);
+ result.contents = styleString(t);
return result;
}
}
QDataStream &operator>>(QDataStream &in, UiStyle::FormatList &formatList) {
- int cnt;
+ quint16 cnt;
in >> cnt;
- for(int i = 0; i < cnt; i++) {
- int pos; quint32 ftype;
+ for(quint16 i = 0; i < cnt; i++) {
+ quint16 pos; quint32 ftype;
in >> pos >> ftype;
- formatList.append(qMakePair(pos, ftype));
+ formatList.append(qMakePair((quint16)pos, ftype));
}
return in;
}