summaryrefslogtreecommitdiff
path: root/noncore/net/opieirc/ircoutput.cpp
blob: 26d90cb5f2520e032b4d06d621028a4f5f040f4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <qtopia/stringutil.h>

#include "ircoutput.h"


IRCOutputEscapeSecuences IRCOutput::m_escapeSecuences[] = {
    { '\002', "<b>", "</b>"},
    { '\037', "<u>", "</u>"},
    { 0, 0, 0},
};

IRCOutput::IRCOutput(IRCOutputType type, QString message) {
    m_type = type;
    /* Filter color escape sequences, since they aren't implemented yet */
    m_message = message.replace(QRegExp("\003[1-9]*,*[1-9]*"), "");
}

IRCOutputType IRCOutput::type() {
    return m_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(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) {
    m_parameters.append(data);
}

void *IRCOutput::getParam(int index) {
    return m_parameters.at(index);
}