123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- /*
- * Controller.h
- * nirc
- *
- * Created by Niklas Bölter on 03.02.10.
- * Copyright 2010 Frubar Corporation.
- *
- *
- * 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.
- *
- *
- *
- */
- #ifndef NIRC_PARSER_H
- #define NIRC_PARSER_H
- #include <QDir>
- #include <QObject>
- #include <QString>
- #include <QStringList>
- #include <QHash>
- #include <QTextDocument>
- #include <QMetaObject>
- #include <QSound>
- #include <QDateTime>
- #include "MainWindow.h"
- #include "Connection.h"
- #include "Numerics.h"
- #include "UserLists.h"
- struct TabRef
- {
- int cid;
- QString identifier;
- QString name;
- };
- struct Prefix
- {
- bool isServer;
- QString nickname; // When isServer is true, this is the prefix and the rest is null
- QString username;
- QString hostname;
- };
- Q_DECLARE_METATYPE(Prefix);
- class Controller : public QObject
- {
- Q_OBJECT
- public:
- Controller(MainWindow *mw);
- void setup();
-
- signals:
- void gotJoin(int cid, QStringList params, Prefix prefix);
- void gotPart(int cid, QStringList params, Prefix prefix);
- void gotQuit(int cid, QStringList params, Prefix prefix);
- void gotKick(int cid, QStringList params, Prefix prefix);
- void gotPrivmsg(int cid, QStringList params, Prefix prefix);
- void gotPing(int cid, QStringList params, Prefix prefix);
- void gotNick(int cid, QStringList params, Prefix prefix);
- void gotNotice(int cid, QStringList params, Prefix prefix);
- void gotMode(int cid, QStringList params, Prefix prefix);
- void got001(int cid, QStringList params, Prefix prefix);
- void got002(int cid, QStringList params, Prefix prefix);
- void got003(int cid, QStringList params, Prefix prefix);
- void got004(int cid, QStringList params, Prefix prefix);
- void got005(int cid, QStringList params, Prefix prefix);
- void got332(int cid, QStringList params, Prefix prefix);
- void got353(int cid, QStringList params, Prefix prefix);
- void got366(int cid, QStringList params, Prefix prefix);
-
- private:
- // We control all connections and the main window
- MainWindow *mw;
- QList<Connection *> connections;
- // Settings
- QSettings settings;
- QList<ConnectionSettings> connectionsettings;
- // Content of Tabs, Channel User Lists
- QHash<QString, QTextCursor *> tabs;
- UserLists *userlists;
- QHash<QString, QString> titlebars;
- // List of Connections, each having a channel name hash which points to a hash of nickname -> NamesEntry
- // My own nicks
- QHash<int, QString> mynicks;
- // Helper Stuff for Parsing
- QList<bool> registered;
- QSet<QString> namreply; // This tells us that a NAMREPLY is currently active for that channel, removed when we receive an ENDOFNAMES
- bool isServer(QString prefix);
- void parseISupportPrefix(int cid, QString prefix);
- void parseISupportChanmodes(int cid, QString prefix);
- void parseChannelModes(int cid, QStringList params);
- void parseUserModes(int cid, QStringList params);
- QList<QHash<QChar, QChar> > support_prefix; // ISUPPORT PREFIX argument
- QList<QHash<QChar, QChar> > support_prefix_reverse;
- QList<QList<QChar> > support_prefix_order;
- QList<QStringList> support_chanmodes; // ISUPPORT CHANMODES argument
- QList<QSet<QString> > channels;
- // User Input Parsing stuff
- void parseInputCommand(QString line);
- // Tab Stuff
- TabRef tab; // Stores the currently viewed tab - probably move to MainWindow :?
- void addTab(QString key, quint16 maximumBlockCount);
- void renameTab(int cid, QString oldName, QString newName);
- void delTab(QString key);
- QTextCursor* getTab(int cid); // getTab() returns 0 when there is no matching tab(!)
- QTextCursor* getTab(int cid, QString name); // getTab() returns 0 when there is no matching tab(!)
- QTextCursor* getTab(QString identifier); // getTab() returns 0 when there is no matching tab(!)
- void updateChannelList();
- void updateTitleBar();
- // Content Stuff
- void addLine(QTextCursor *cursor, QString line);
- void replaceHTML(QString & line);
-
- // Connection Stuff
- void openConnections();
- void sendLine(int cid, QString line);
-
- private slots:
- void parse(int cid, QString line);
- void readInput(QString line);
- void connected(int cid);
- void disconnected(int cid);
- void socketmessage(int cid, QString message);
- void tabChanged(QString identifier);
- void dataReady(int cid);
- /* move these out later */
- void handleJoin(int cid, QStringList params, Prefix prefix);
- void handlePart(int cid, QStringList params, Prefix prefix);
- void handleQuit(int cid, QStringList params, Prefix prefix);
- void handleKick(int cid, QStringList params, Prefix prefix);
- void handlePrivmsg(int cid, QStringList params, Prefix prefix);
- void handlePing(int cid, QStringList params, Prefix prefix);
- void handleNick(int cid, QStringList params, Prefix prefix);
- void handleNotice(int cid, QStringList params, Prefix prefix);
- void handleMode(int cid, QStringList params, Prefix prefix);
- void handle001(int cid, QStringList params, Prefix prefix);
- void handle002(int cid, QStringList params, Prefix prefix);
- void handle003(int cid, QStringList params, Prefix prefix);
- void handle004(int cid, QStringList params, Prefix prefix);
- void handle005(int cid, QStringList params, Prefix prefix);
- void handle332(int cid, QStringList params, Prefix prefix);
- void handle353(int cid, QStringList params, Prefix prefix);
- void handle366(int cid, QStringList params, Prefix prefix);
- };
- #endif
|