⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 channelwgt.h

📁 用qt4 编写的局域网聊天工具
💻 H
字号:
/*************************************************************************** *   Copyright (C) 2007 by Anistratov Oleg                                 * *   ower@users.sourceforge.net                                            * *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License version 2        * *   as published by the Free Software Foundation;                         * *                                                                         * *   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 General Public License for more details.                          * *                                                                         * ***************************************************************************/#ifndef CHANNELWGT_H#define CHANNELWGT_H#include <QWidget>#include <QString>#include <QPushButton>#include <QTextEdit>#include <QUdpSocket>#include <QHostInfo>#include <QLineEdit>#include <QHostAddress>#include <QTabWidget>#include <QSplitter>#include <QCheckBox>#include <QList>#include <QTimer>#include <QFile>#include <QComboBox>#include <QGridLayout>#include <QStackedWidget>#include <QTime>#include <QEvent>#include "abstractchatcore.h"#include "userinfo.h"class ChatWgt;class MsgHistory;class UsersList;class UsersListWgt;class StatusEditWgt;class ChatTextWgt;class InputRichTextWgt;class Message;class StatusEditWgt;class UserWgt;class UsersStatisticsWgt;class UsersStatisticsModel;struct Smile;struct QC_DatagramHeader;/**  @author Anistratov Oleg <ower@users.sourceforge.net>*/class ChannelWgt : public QWidget{  Q_OBJECT  private:    QFile*          m_logFile;    quint8          m_status;    quint8          m_oldStatus;    QGridLayout*    mw_grid;    QStackedWidget* mw_chatTextStack;    ChatWgt*        m_parent;    AbstractChatCore::ChannelType m_type; // 0 - common, 1 - private    /// m_destUid is UserID in server mode and IP address in serverless    quint64         m_destUid;    QString         m_name;    MsgHistory*     m_chatMsgs;    UsersList*      m_users;    quint32         m_usersNum;    quint16         m_passwordSize;    quint32         m_messageSize;    bool            m_displayInfoMsgs;    bool            m_soundOnMessageIn;    QTimer*        m_refreshTimer;    // информация об изменении статуса отсылается не моментально, а через определенный промежуток времени    QTimer*        m_statusChangedTimer;    QTimer*        m_initTimer;    ChatTextWgt*          mw_chatText;    ChatTextWgt*          mw_clearChatText; // without system messages    InputRichTextWgt*     mw_inputText;    UsersListWgt*         mw_usersList;    UsersStatisticsModel* m_usersModel;    UsersStatisticsWgt*   mw_usersStatistics;    QStackedWidget*       mw_usersStack;    QPushButton*   m_sendBtn;    QPushButton*   m_refreshUlBtn;    QCheckBox*     m_sysMessagesChbx;    QFile*         m_file;    StatusEditWgt* m_statusWgt;    QString        m_statusDescription;    QList<Smile>*  m_smilesFromSender;    QHostAddress   m_msgsReqAddr;    uint           m_msgsReqNum;    QTime          m_msgsReqSent;    QTime          m_msgsReqReceived;    mutable QByteArray     m_parametrs;    QVector<QSplitter*> m_splitters;    int            m_requestsRest;  private:    QPixmap* drawUsersIcon(const QPixmap*, UserInfo*);  public:    ChannelWgt(QString name_, QWidget* = 0, AbstractChatCore::ChannelType = AbstractChatCore::Common, quint64 = 0);    ~ChannelWgt();    void retranslate();    void processData      (QC_DatagramHeader* Hdr);    void getSmilesFromData(QC_DatagramHeader* Hdr);    void addUser          (QC_DatagramHeader* Hdr);    void hideUser         (QC_DatagramHeader* Hdr);    void addUserInfo      (QC_DatagramHeader* Hdr);    void addUserInfo      (UserWgt*, QC_DatagramHeader* Hdr);    void addMsg           (QC_DatagramHeader* Hdr);    void addAvatar        (QC_DatagramHeader* Hdr);    void addMsg2Chat      (Message* msg);    void sendInfoAnswer   (QC_DatagramHeader* Hdr);    void sendStatusAnswer (quint64, bool = 0, bool = 0);    UserWgt* findUser (quint64) const;    const QString  &  name      () const {return m_name;}    quint64           destUid   () const {return m_destUid;}    quint32           type      () const {return m_type;}    InputRichTextWgt* inputText () const {return mw_inputText;}    void initChannel    ();    void rebuildChatText();    void msgsNumAnswer  (QC_DatagramHeader* );    void emitSomeData(AbstractChatCore::DataType, const QString & = "", quint64 = 0) const;    QByteArray saveState() const;    void restoreState(const QByteArray&);    void logMessage(QC_DatagramHeader* Hdr);  public slots:    void setFocus2InputText  ();    void slot_msgOut         ();    void slot_refreshUL      (); // UL - users list    void slot_deepRefreshUL  ();    void addInfoMsg          (QC_DatagramHeader* Hdr);    void slot_chbxInfChgd    ();    void setSndOnMsgIn       (bool b) {m_soundOnMessageIn = b;}    void slot_infoRequest  (UserWgt*);    void slot_statusRequest() const {emitSomeData(AbstractChatCore::STATUS_REQUEST);}    void slot_connected    () const {emitSomeData(AbstractChatCore::CONNECTED, "Connected");}    void slot_disconnected () const {emitSomeData(AbstractChatCore::DISCONNECTED, "Disconnected");}    void slot_statusChanged   ();    void slot_startStatusChangedTimer();    void slot_finMsgsHistoryReq();    void slot_changeUlRefreshInterval(uint);    void slot_changeUlDeepRefreshInterval(uint);    void slot_controlSplitter(int, int);    void updateUsersView();    void nextStatusRequest();    void redrawIcons();    void setAnimationsRunning(bool b);  protected:    void keyPressEvent(QKeyEvent* ev);    void changeEvent(QEvent *ev)    {      if(ev->type() == QEvent::LanguageChange)        retranslate();      else        QWidget::changeEvent(ev);    }  signals:    void statusAnswer    (const QString &, quint64, AbstractChatCore::ChannelType, bool changed = 0, bool = 0);    void avatarAnswer    (const QString &, quint64, AbstractChatCore::ChannelType);    void infStatusChanged(const QString &, quint64, AbstractChatCore::ChannelType);    void infoAnswer      (const QString &, quint64, AbstractChatCore::ChannelType, uchar);    void sendMsgsHistory (const QString &, quint64, const QByteArray &, AbstractChatCore::ChannelType);    void sendMsgsNum     (const QString &, quint64, quint32, AbstractChatCore::ChannelType);    void sendSomeData    (const QString &, quint64, AbstractChatCore::DataType, const QString &, AbstractChatCore::ChannelType, QByteArray*) const;    void sendMessage     (const QString &, quint64, AbstractChatCore::ChannelType, QTextDocument*);    void wantActivate    ();    void rebuildChat     (short type);    void showStatusDescriptionDlg();    void wantSaveState(const QString &, const QByteArray &);};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -