summaryrefslogtreecommitdiff
path: root/noncore/net/opieirc/ircmessage.cpp
Side-by-side diff
Diffstat (limited to 'noncore/net/opieirc/ircmessage.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opieirc/ircmessage.cpp35
1 files changed, 32 insertions, 3 deletions
diff --git a/noncore/net/opieirc/ircmessage.cpp b/noncore/net/opieirc/ircmessage.cpp
index d823ad1..d0b2652 100644
--- a/noncore/net/opieirc/ircmessage.cpp
+++ b/noncore/net/opieirc/ircmessage.cpp
@@ -1,4 +1,7 @@
#include <qtextstream.h>
+#include <qstring.h>
+#include <qstringlist.h>
+
#include "ircmessage.h"
/*
@@ -64,8 +67,8 @@ IRCMessage::IRCMessage(QString line) {
m_ctcp = FALSE;
}
- /*
- -- Uncomment to debug --
+ /*
+ //-- Uncomment to debug --
printf("Parsed : '%s'\n", line.ascii());
printf("Prefix : '%s'\n", m_prefix.ascii());
@@ -76,7 +79,8 @@ IRCMessage::IRCMessage(QString line) {
}
printf("CTCP Command : '%s'\n", m_ctcpCommand.latin1());
printf("CTCP Destination : '%s'\n", m_ctcpDestination.latin1());
- printf("CTCP param count is : '%i'\n", m_parameters.count());
+ printf("CTCP param count is : '%i'\n", m_parameters.count());
+
*/
}
@@ -84,6 +88,31 @@ QString IRCMessage::param(int param) {
return m_parameters[param];
}
+QStringList IRCMessage::params(const QString &paramstring) const {
+ QStringList params, retvalue;
+ params = QStringList::split(',', paramstring);
+ QStringList::Iterator end = params.end();
+
+ for (QStringList::Iterator it = params.begin(); it != end; ++it) {
+ int pos = (*it).find(':');
+ if(pos < 0) {
+ if((*it).toInt() < m_parameters.count())
+ retvalue << m_parameters[(*it).toInt()];
+ }
+
+ else {
+ int start, end;
+ start = (*it).left(pos).toInt();
+ end = (*it).mid(pos+1).toInt();
+ for (int i=start;i<=end && i < m_parameters.count() ;++i) {
+ retvalue << m_parameters[i];
+ }
+ }
+ }
+
+ return retvalue;
+}
+
QString IRCMessage::prefix() {
return m_prefix;
}