/*
* This file is a part of VyQChat.
*
* Copyright (C) 2002-2004 Pawel Stolowski <yogin@linux.bydg.org>
*
* VyQChat is free software; you can redestribute it and/or modify it
* under terms of GNU General Public License by Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY. See GPL for more details.
*/
#ifndef __APPWIN_H
#define __APPWIN_H
#include <qmainwindow.h>
#include <qregexp.h>
#include <qmemarray.h>
#include "history.h"
#include "global.h"
class ChannelList;
class Settings;
class User;
class UsersList;
class ChatTab;
class ChatLine;
class VyPacket;
class NickCombo;
class VCProtocol;
class QHostAddress;
class TrayIcon;
class QStringList;
class QMenuBar;
class QToolBar;
class QPopupMenu;
class QSocketNotifier;
class QComboBox;
class MainWindow: public QMainWindow
{
Q_OBJECT
private:
QMenuBar *main_menu;
QPopupMenu *view_menu;
QPopupMenu *systraymenu;
QToolBar *main_toolbar;
QComboBox *status_combo;
TrayIcon *tray;
NickCombo *nickcmb;
ChatLine *chatline;
ChatTab *chattab;
UsersList *userslist;
VCProtocol *vc;
QSocketNotifier *socknotify;
static const char * status_lut[];
//
// current options and status
ChannelList *availchannels;
History dnd_list;
History away_list;
History offline_list;
History regexp_list;
History nick_list;
Settings *settings;
QString nick;
QString autoanswer;
QColor special_color;
QColor normal_color;
QColor own_color;
QRegExp regexp;
bool regexp_on;
char status;
char winstate;
char gender;
char remoteactive;
QString tmp;
//
// ids for menu items assigned by Qt
int tbar_id;
int ulist_id;
int nickcmb_id;
bool exit_called; //indicates exiting program from menu/command (but not close button!)
bool parse(QString &str);
void startChat();
bool confirmExit();
protected slots:
void closeEvent(QCloseEvent *e);
void setupSystray();
void reconfigureSystray();
void reconfigureNetwork();
void sendLine();
void simulateEnter();
void systrayClicked();
void on_vc_say(const QString &channel, const QString &from, const QString &text);
void on_vc_me(const QString &channel, const QString &from, const QString &text);
void on_vc_whohere(const QHostAddress &source, const QString &updater);
void on_vc_imhere(const QHostAddress &source, const QString &updater, const QString &responder, char status, char winstate);
void on_vc_imhere(const QHostAddress &source, const QString &updater, const QString &responder, char status, char winstate, char gender, Q_INT16 color);
void on_vc_beep(const QHostAddress &source, const QString &to, const QString &from);
void on_vc_beepack(const QString& to, const QString& from, char gender);
void on_vc_join(const QHostAddress &source, const QString &who, const QString &channel, char status, char gender);
void on_vc_leave(const QString &who, const QString &channel, char gender);
void on_vc_private_join(const QString &from, const QString &to, char gender);
void on_vc_private_leave(const QString &from, const QString &to, char gender);
void on_vc_private_say(const QString &from, const QString &to, const QString &text);
void on_vc_private_me(const QString &from, const QString &to, const QString &text);
void on_vc_message(const QHostAddress &source, const QCString &sig, const QString &from, const QString &to, const QString &text);
void on_vc_massmessage(const QHostAddress &source, const QCString &sig, const QString &from, const QString &to, const QString &text);
void on_vc_messageack(char status, const QString &to, const QString &from, char gender, const QString &answer);
void on_vc_messageack(const QCString &sig, char status, const QString &to, const QString &from, char gender, const QString &answer);
void on_vc_herereq(const QHostAddress &source, const QString &from, const QString &channel);
void on_vc_hereack(const QString &to, const QString &channel, const QString &from, char ra);
void on_vc_inforeq(const QString &to, const QString &from);
void on_vc_inforeqack(const QHostAddress &source, const QString &to, const QString &from, const QString &comp, const QString &name, const QString &ip, const QString &channels, const QString &answer, const QString &computer, const QString &software, bool utf);
void on_vc_nickchange(const QString &from, const QString &to, char gender);
void on_vc_changestatus(const QString &who, char status, char gender, const QString &answer);
void on_vc_currenttopic(const QString &to, const QString &channel, const QString &topic);
void on_vc_newtopic(const QString &channel, const QString &topic);
void on_vc_ping(const QHostAddress &source, const QString &to, const QString &from, const QString &time);
void on_vc_pong(const QString &to, const QString &from, const QString &time);
void on_vc_floodnotify(const QString &to, const QString &from, const QString &seconds);
public slots:
void openSendMessage(const QString &to);
void openSendMassMessage(const QStringList &nicks);
void sendMessage(const QString &to, const QString &msg);
void sendMassMessage(const QStringList &nicks, const QString &msg);
void requestInfo(const QString &who);
void changeNick(const QString &newnick);
void joinChannel(const QString &channel);
void leaveChannel(const QString &channel);
void beep(const QString &who);
void openPrivate(const QString &who);
void goNORMAL();
void goDND(const QString &txt);
void goAWAY(const QString &txt);
void goOFFLINE(const QString &txt);
void forceRefresh();
void menuDummy();
void openTopicDialog();
void openSettingsDialog();
void openRegexpDialog();
void openDNDdialog();
void openAWAYdialog();
void openOFFLINEdialog();
void newTopic(const QString &channel, const QString &txt);
void changeRegexp(const QString &txt, bool on);
void statusComboActivated(int item);
void usersListUpdate();
void popupAbout();
void openChannelsDialog();
void commandMenuAction(int option);
void openChatLineHistory();
void cancelStatusChange();
void toggleToolbar();
void toggleUsersList();
void toggleNickCombo();
void exit();
public:
//
// IDs for command menu items
enum {
ID_ENTER_ME = ID_COMMAND_MENU,
ID_ENTER_NICK,
ID_ENTER_JOIN,
ID_ENTER_LEAVE,
ID_ENTER_CHAT,
ID_ENTER_TOPIC,
ID_ENTER_INFO,
ID_ENTER_BEEP,
ID_ENTER_MASS,
ID_ENTER_HERE,
ID_ENTER_NORMAL,
ID_ENTER_DND,
ID_ENTER_AWAY,
ID_ENTER_OFFLINE,
ID_ENTER_HELP
};
MainWindow(QWidget *parent, Settings *s);
~MainWindow();
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1