-rw-r--r-- | noncore/net/opieirc/ircoutput.cpp | 45 | ||||
-rw-r--r-- | noncore/net/opieirc/ircoutput.h | 17 |
2 files changed, 54 insertions, 8 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,6 +1,16 @@ +#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]*"), ""); } @@ -15,2 +25,10 @@ QString IRCOutput::message() { +void IRCOutput::setType(IRCOutputType type) { + m_type = type; +} + +void IRCOutput::setMessage(const QString &message) { + m_message = message; +} + QString IRCOutput::htmlMessage() { @@ -19,6 +37,22 @@ QString IRCOutput::htmlMessage() { -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; @@ -33 +67,2 @@ void *IRCOutput::getParam(int index) { } + diff --git a/noncore/net/opieirc/ircoutput.h b/noncore/net/opieirc/ircoutput.h index 9c0b8bb..934dbda 100644 --- a/noncore/net/opieirc/ircoutput.h +++ b/noncore/net/opieirc/ircoutput.h @@ -47,3 +47,10 @@ enum IRCOutputType { OUTPUT_CHANPERSONMODE = 16, /* parameters : channel (IRCCHannel) person (IRCChannelPerson) */ - OUTPUT_TOPIC = 17 /* parameters : channel (IRCChannel) */ + OUTPUT_TOPIC = 17, /* parameters : channel (IRCChannel) */ + OUTPUT_TITLE = 18 /* parameters : channel (IRCChannel) */ +}; + +typedef struct IRCOutputEscapeSecuences { + char escape; + char *open; + char *close; }; @@ -56,3 +63,3 @@ class IRCOutput { public: - IRCOutput(IRCOutputType type, QString message); + IRCOutput(IRCOutputType type = OUTPUT_SERVERMESSAGE, QString message = QString::null); /* Used to add a parameter to this IRCOutput. Parameters are dependent @@ -66,3 +73,6 @@ public: - static QString toHTML(QString message); + void setType(IRCOutputType); + void setMessage(const QString &message); + + static QString toHTML(const QString &message); void *getParam(int index); @@ -72,2 +82,3 @@ protected: QList<void> m_parameters; + static IRCOutputEscapeSecuences m_escapeSecuences[]; }; |