summaryrefslogtreecommitdiffstats
path: root/konversation/src/outputfilter.h
blob: faabec1edcf22b110796485013c9a608101dcbcc (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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
/*
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.
*/

/*
  Copyright (C) 2002 Dario Abatianni <eisfuchs@tigress.com>
  Copyright (C) 2005 Ismail Donmez <ismail@kde.org>
  Copyright (C) 2005 Peter Simonsson <psn@linux.se>
  Copyright (C) 2005 John Tapsell <johnflux@gmail.com>
  Copyright (C) 2005-2008 Eike Hein <hein@kde.org>
*/

#ifndef OUTPUTFILTER_H
#define OUTPUTFILTER_H

#include "identity.h"
#include "common.h"

#include <tqobject.h>
#include <tqstring.h>
#include <kurl.h>
#include <tdeio/global.h>


class Server;
class ChatWindow;

namespace Konversation
{
    enum MessageType
    {
        Message,
        Action,
        Command,
        Program,
        PrivateMessage
    };

    struct OutputFilterResult
    {
        TQString output;
        TQStringList outputList;
        TQString toServer;
        TQStringList toServerList;
        TQString typeString;
        MessageType type;
    };

    class OutputFilter : public TQObject
    {
        Q_OBJECT
  

        public:
            explicit OutputFilter(Server* server);
            ~OutputFilter();

            TQStringList splitForEncoding(const TQString& inputLine, uint max);
            OutputFilterResult parse(const TQString& myNick,const TQString& line,const TQString& name);

            // dcc send
            OutputFilterResult sendRequest(const TQString &recipient,const TQString &fileName,const TQString &address,const TQString &port,unsigned long size);
            OutputFilterResult passiveSendRequest(const TQString& recipient,const TQString &fileName,const TQString &address,unsigned long size,const TQString &token);
            OutputFilterResult acceptResumeRequest(const TQString &recipient,const TQString &fileName,const TQString &port,int startAt);

            // dcc recv
            OutputFilterResult resumeRequest(const TQString &sender,const TQString &fileName,const TQString &port,TDEIO::filesize_t startAt);
            OutputFilterResult acceptPassiveSendRequest(const TQString& recipient,const TQString &fileName,const TQString &address,const TQString &port,unsigned long size,const TQString &token);

            bool replaceAliases(TQString& line);

        signals:
            void openDccSend(const TQString &recipient, KURL kurl);
            void requestDccSend();                // Choose Recipient and File from requester
                                                  // Choose File from requester
            void requestDccSend(const TQString& recipient);
            void openDccChat(const TQString& nick);
            void addDccPanel();
            void closeDccPanel();
            void openRawLog(bool show);
            void closeRawLog();
            void openKonsolePanel();
            void openChannelList(const TQString& parameter, bool getList);
            void sendToAllChannels(const TQString& text);
            void launchScript(const TQString& target, const TQString& parameter);
            void banUsers(const TQStringList& userList,const TQString& channel,const TQString& option);
            void unbanUsers(const TQString& mask,const TQString& channel);
            void multiServerCommand(const TQString& command, const TQString& parameter);
            void reconnectServer();
            void disconnectServer();

            void connectTo(Konversation::ConnectionFlag flag,
                           const TQString& hostName,
                           const TQString& port = "",
                           const TQString& password = "",
                           const TQString& nick = "",
                           const TQString& channel = "",
                           bool useSSL = false
            );

            void showView(ChatWindow* view);
            void encodingChanged ();


        public slots:
            void setCommandChar();
            OutputFilterResult execBan(const TQString& mask,const TQString& channels);
            OutputFilterResult execUnban(const TQString& mask,const TQString& channels);

        protected:
            OutputFilterResult parseMsg(const TQString& myNick,const TQString& parameter, bool focusQueryWindow);
            OutputFilterResult parseSMsg(const TQString& parameter);
            OutputFilterResult parseMe(const TQString &parameter, const TQString &destination);
            OutputFilterResult parseDescribe(const TQString& parameter);
            OutputFilterResult parseNotice(const TQString& parameter);
            OutputFilterResult parseJoin(TQString& parameter);
            OutputFilterResult parsePart(const TQString& parameter);
            OutputFilterResult parseQuit(const TQString& parameter);
            OutputFilterResult parseClose(TQString parameter);
            OutputFilterResult parseKick(const TQString& parameter);
            OutputFilterResult parseKickBan(const TQString& parameter);
            OutputFilterResult parseBan(const TQString& parameter, bool kick = false);
            OutputFilterResult parseUnban(const TQString& parameter);
            OutputFilterResult parseNames(const TQString& parameter);
            OutputFilterResult parseList(const TQString& parameter);
            OutputFilterResult parseOp(const TQString& parameter);
            OutputFilterResult parseDeop(const TQString& ownNick, const TQString& parameter);
            OutputFilterResult parseHop(const TQString& parameter);
            OutputFilterResult parseDehop(const TQString& ownNick, const TQString& parameter);
            OutputFilterResult parseVoice(const TQString& parameter);
            OutputFilterResult parseUnvoice(const TQString& ownNick, const TQString& parameter);
            OutputFilterResult parseTopic(const TQString& parameter);
            void parseAway(TQString& parameter);
            void parseBack();
            OutputFilterResult parseCtcp(const TQString& parameter);
            OutputFilterResult parsePing(const TQString& parameter);
            OutputFilterResult parseVersion(const TQString& parameter);
            void parseServer(const TQString& parameter);
            void parseReconnect();
            OutputFilterResult parseConnect(const TQString& parameter);
            OutputFilterResult parseInvite(const TQString& parameter);
            OutputFilterResult parseExec(const TQString& parameter);
            OutputFilterResult parseNotify(const TQString& parameter);
            OutputFilterResult parseOper(const TQString& myNick,const TQString& parameter);
            OutputFilterResult parseDcc(const TQString& parameter);
            OutputFilterResult parseRaw(const TQString& parameter);
            OutputFilterResult parseIgnore(const TQString& parameter);
            OutputFilterResult parseUnignore(const TQString& parameter);
            OutputFilterResult parseQuote(const TQString& parameter);
            OutputFilterResult parseSay(const TQString& parameter);
            void parseKonsole();
            OutputFilterResult parseAme(const TQString& parameter);
            OutputFilterResult parseAmsg(const TQString& parameter);
            OutputFilterResult parseOmsg(const TQString& parameter);
            OutputFilterResult parseOnotice(const TQString& parameter);
            OutputFilterResult parseCharset(const TQString& charset);
            void parseCycle();
            OutputFilterResult parseSetKey(const TQString& parameter);
            OutputFilterResult parseDelKey(const TQString& parameter);
            OutputFilterResult parseShowKey(const TQString& parameter);
            OutputFilterResult parseDNS(const TQString& parameter);
            OutputFilterResult parseKill(const TQString& parameter);
            OutputFilterResult parseShowTuner(const TQString &p);

            OutputFilterResult changeMode(const TQString& parameter,char mode,char giveTake);
            bool isAChannel(const TQString& check);
            OutputFilterResult usage(const TQString& check);
            OutputFilterResult info(const TQString& check);
            OutputFilterResult error(const TQString& check);

            TQString addNickToEmptyNickList(const TQString& nick, const TQString& parameter);

        private:
            TQString destination;
            TQString commandChar;

            Server* m_server;
    };
}
#endif