Diffstat (limited to 'noncore/net/opieirc/ircoutput.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/opieirc/ircoutput.cpp | 45 |
1 files changed, 40 insertions, 5 deletions
diff --git a/noncore/net/opieirc/ircoutput.cpp b/noncore/net/opieirc/ircoutput.cpp index 4822fc4..d2c730f 100644 --- a/noncore/net/opieirc/ircoutput.cpp +++ b/noncore/net/opieirc/ircoutput.cpp @@ -1,9 +1,19 @@ +#include <qtopia/stringutil.h> + #include "ircoutput.h" + +IRCOutputEscapeSecuences IRCOutput::m_escapeSecuences[] = { + { '', "<b>", "</b>"}, + { '', "<u>", "</u>"}, + { 0, 0, 0}, +}; + IRCOutput::IRCOutput(IRCOutputType type, QString message) { m_type = type; - m_message = message; + /* Filter color, bold and underline escape sequences, since they aren't implemented yet */ + m_message = message.replace(QRegExp("[1-9]*,*[1-9]*"), ""); } IRCOutputType IRCOutput::type() { return m_type; @@ -12,16 +22,40 @@ IRCOutputType IRCOutput::type() { QString IRCOutput::message() { return m_message; } +void IRCOutput::setType(IRCOutputType type) { + m_type = type; +} + +void IRCOutput::setMessage(const QString &message) { + m_message = message; +} + QString IRCOutput::htmlMessage() { return toHTML(m_message); } -QString IRCOutput::toHTML(QString message) { - QString htmlMessage =message.replace(QRegExp("&"), "&"); - htmlMessage = htmlMessage.replace(QRegExp(">"), ">"); - htmlMessage = htmlMessage.replace(QRegExp("<"), "<"); +QString IRCOutput::toHTML(const QString &message) { + QString htmlMessage = Qtopia::escapeString(message); + + for(int i=0; m_escapeSecuences[i].escape != 0;++i) { + int pos = 0; + bool isOpen = false; + while( (pos = htmlMessage.find(m_escapeSecuences[i].escape, pos)) != -1) { + htmlMessage.remove(pos, 1); + if(isOpen) + htmlMessage.insert(pos, m_escapeSecuences[i].close); + else + htmlMessage.insert(pos, m_escapeSecuences[i].open); + + isOpen = !isOpen; + } + if(isOpen) + htmlMessage.append(m_escapeSecuences[i].close); + } + + htmlMessage = htmlMessage.replace(QRegExp("\n"), "<br>"); return htmlMessage; } void IRCOutput::addParam(void *data) { @@ -30,4 +64,5 @@ void IRCOutput::addParam(void *data) { void *IRCOutput::getParam(int index) { return m_parameters.at(index); } + |