diff gui/src/irc/IRCClientInterface.h @ 13679:e272af3f252d

Renamed qirc to irc.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Sun, 25 Sep 2011 21:13:59 +0200
parents gui/src/qirc/IRCClientInterface.h@c0e66d6e3dc8
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gui/src/irc/IRCClientInterface.h	Sun Sep 25 21:13:59 2011 +0200
@@ -0,0 +1,221 @@
+/* OctaveGUI - A graphical user interface for Octave
+ * Copyright (C) 2011 Jacob Dawid (jacob.dawid@googlemail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef IRCCLIENTINTERFACE_H
+#define IRCCLIENTINTERFACE_H
+
+#include <QString>
+#include <QObject>
+#include <QHostAddress>
+#include <QTextDocument>
+#include <QStringListModel>
+
+class IRCClientInterface;
+/**
+  * \class IRCChannelProxyInterface
+  * Interface for a handle to an IRC channel.
+  */
+class IRCChannelProxyInterface : public QObject
+{
+  Q_OBJECT
+public:
+  IRCChannelProxyInterface (IRCClientInterface *, const QString&, QObject *parent = 0) : QObject (parent) { }
+  virtual ~IRCChannelProxyInterface () { }
+
+  /** Returns the conversation model part. */
+  virtual QTextDocument *conversationModel () = 0;
+
+  /** Returns a string list model for the user list. */
+  virtual QStringListModel *userListModel () = 0;
+
+  /** Returns the name of this channel. */
+  virtual QString channelName () = 0;
+
+  /**
+    * Overwrites the current nick list by settings a new nick list.
+    * \arg nickList The new nick list to set.
+    */
+  virtual void setNickList (const QStringList& nickList) = 0;
+
+  /**
+    * Sends a public message onto this channel.
+    * \arg message The message that should be sent.
+    */
+  virtual void sendMessage (const QString& message) = 0;
+
+  /** Requests to join this channel. */
+  virtual void sendJoinRequest () = 0;
+
+  /**
+    * Requests to leave this channel.
+    * \arg reason Reason for leaving the channel.
+    */
+  virtual void leave (const QString& reason) = 0;
+
+public slots:
+  virtual void handleNickChange (const QString& oldNick, const QString& newNick) = 0;
+  virtual void handleJoin (const QString& nick) = 0;
+};
+
+/**
+  * \class IRCClientInterface
+  * IRC Clients need to implement this interface.
+  */
+class IRCClientInterface : public QObject
+{
+  Q_OBJECT
+public:
+  IRCClientInterface (QObject *parent = 0) : QObject (parent) { }
+  virtual ~IRCClientInterface () { }
+
+  /** Returns the current nickname of this client. */
+  virtual const QString& nickname () = 0;
+
+  /** Returns true if connected to the server. */
+  virtual bool isConnected () = 0;
+
+  /**
+    * Returns true if logged in to the server.
+    * Note: There is a small difference between isConnected and isLoggedIn.
+    * isConnected returns true if there is a physical connection to the server.
+    * isLoggedIn only returns true if the server has already accepted you
+    * and you are ready to log into channels.
+    */
+  virtual bool isLoggedIn () = 0;
+
+  /** Returns the current host address. */
+  virtual const QHostAddress& host() = 0;
+
+  /** Returns the current port. */
+  virtual int port() = 0;
+
+  /**
+    * Returns a handle to an IRC channel.
+    * Note: Retrieving a handle does not mean you have joined this channel.
+    * \arg channel The channel to retrieve a handle for.
+    */
+  virtual IRCChannelProxyInterface *ircChannelProxy(const QString& channel) = 0;
+
+  /**
+    * Send an IRC command to the server.
+    * \arg command Command to send.
+    * \arg arguments Arguments to send.
+    */
+  virtual void sendIRCCommand (const QString& command, const QStringList& arguments) = 0;
+
+public slots:
+  /**
+    * Connects to a host.
+    * \arg host The host to connect tp.
+    * \arg port The port on which to connect to the host.
+    * \arg initialNick The initial nick to use when attempting to login.
+    */
+  virtual void connectToHost (const QHostAddress& host, int port, const QString& initialNick) = 0;
+
+  /** Disconnects from the host. */
+  virtual void disconnect () = 0;
+
+  /** Reconnects to the host. */
+  virtual void reconnect () = 0;
+
+  /**
+    * Sends a request to change the nickname.
+    * \arg nickname The new nickname to be requested.
+    */
+  virtual void sendNicknameChangeRequest (const QString& nickname) = 0;
+
+  /**
+    * Sends a private message.
+    * \arg recipient The nickname or channel that message should be sent to.
+    * \arg message The message that should be sent.
+    */
+  virtual void sendPrivateMessage (const QString& recipient, const QString& message) = 0;
+
+signals:
+  /**
+    * Sent upon the arrival of a new message.
+    * \arg channel The channel this message was sent from.
+    * \arg sender The nickname of the sender.
+    * \arg message The message that has been sent.
+    */
+  void newMessage (const QString& channel, const QString& sender, const QString& message);
+  void message (const QString& channel, const QString& sender, const QString& message);
+
+  /**
+    * Sent when the connection to a server has been established.
+    * \arg server The name of the server that the connection has been established to.
+    */
+  void connected (const QString& server);
+
+  /** Sent when the connection to the server has been interrupted. */
+  void disconnected ();
+
+  /**
+    * Sent when an error occurs.
+    * \arg message A descriptive message of the error that occured.
+    */
+  void error (const QString& message);
+
+  /**
+    * Sent when a notification arrives.
+    * \arg sender The source of the notification.
+    * \arg message The notification.
+    */
+  void notification (const QString& sender, const QString& message);
+
+  /**
+    * Sent when a nickname changed.
+    * \arg oldNick The previous nickname.
+    * \arg newNick The new nickname.
+    */
+  void nicknameChanged (const QString& oldNick, const QString& newNick);
+
+  /**
+    * Sent when the nickname of this client changed.
+    * \arg nick The new nickname of this client.
+    */
+  void userNicknameChanged (const QString& nick);
+
+  /**
+    * Sent when a user has joined a channel.
+    * \arg nick Nickname of the user that joined the channel.
+    * \arg channel Channel that this user joined.
+    */
+  void userJoined (const QString& nick, const QString& channel);
+
+  /**
+    * Sent when a user quits.
+    * \arg nick Nickname of the user that quit.
+    * \arg reason Reason of the user to quit.
+    */
+  void userQuit (const QString& nick, const QString& reason);
+
+  /**
+    * Sent when a user logged in.
+    * \arg nick The nickname of the user that logged in.
+    */
+  void loggedIn (const QString& nick);
+
+  /**
+    * Sent when the server provides a userlist for a channel.
+    * \arg channel The channel that userlist applies to.
+    * \arg list The actual userlist.
+    */
+  void userList (const QString& channel, const QStringList& list);
+};
+
+#endif // IRCCLIENTINTERFACE_H