#ifndef _CHANNELSJOIN_H_ #define _CHANNELSJOIN_H_ //============================================================================= // // File : ChannelsJoinDialog.h // Creation date : Thu Nov 06 2001 12:30:25 CEST by Juan Alvarez // // This file is part of the KVIrc IRC client distribution // Copyright (C) 2001-2010 Szymon Stefanek (pragma at kvirc dot net) // // 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. // // 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. // // You should have received a copy of the GNU General Public License // along with this program. If not, write to the Free Software Foundation, // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // //============================================================================= /** * \file ChannelsJoinDialog.h * \author Juan Alvarez * \brief Channels join window */ #include "KviWindow.h" #include #include #include class KviConsoleWindow; class QCheckBox; class QGroupBox; class QLineEdit; class QPushButton; class QString; /** * \class ChannelsJoinDialogTreeWidget * \brief Channels join window tree widget */ class ChannelsJoinDialogTreeWidget : public QTreeWidget { Q_OBJECT public: ChannelsJoinDialogTreeWidget(QWidget * par) : QTreeWidget(par){}; ~ChannelsJoinDialogTreeWidget() { if(m_pJoinPopup) delete m_pJoinPopup; }; protected: QMenu * m_pJoinPopup = nullptr; /** * \brief Called when the user clicks on the list * \param e mouse event descriptor * \return void */ void mousePressEvent(QMouseEvent * e) override; void mouseDoubleClickEvent(QMouseEvent * e) override; }; /** * \class ChannelsJoinDialog * \brief Channels join window class */ class ChannelsJoinDialog : public QDialog { Q_OBJECT friend class ChannelsJoinDialogTreeWidget; public: /** * \brief Constructs the channels join window * \param name The name of the window * \return ChannelsJoinDialog */ ChannelsJoinDialog(const char * name); /** * \brief Destroys the channels join window */ ~ChannelsJoinDialog(); protected: enum ItemTypes { HeaderItem, RecentChannelItem, RegisteredChannelItem }; QLineEdit * m_pChannelEdit = nullptr; ChannelsJoinDialogTreeWidget * m_pTreeWidget = nullptr; QGroupBox * m_pGroupBox = nullptr; QLineEdit * m_pPass = nullptr; QCheckBox * m_pShowAtStartupCheck = nullptr; QCheckBox * m_pCloseAfterJoinCheck = nullptr; QPushButton * m_pJoinButton = nullptr; QPushButton * m_pRegButton = nullptr; QPushButton * m_pClearButton = nullptr; KviConsoleWindow * m_pConsole = nullptr; public: void closeEvent(QCloseEvent * e) override; /** * \brief Fills in the servers' list * \return void */ void fillListView(); /** * \brief Enables join and register button if channel is found * \return void */ void enableJoin(); /** * \brief Sets the console and fills in the servers' list * \param pConsole The source console * \return void */ void setConsole(KviConsoleWindow * pConsole); /** * \brief Called when the user choose an item from the list * \return void */ void itemSelected(); protected slots: /** * \brief Called when the text changes * \return void */ void editTextChanged(const QString &); /** * \brief Called when the return is pressed * * It joins the selected channel * \return void */ void editReturnPressed(); /** * \brief Called when the cancel button is pressed * * It destroys the window object * \return void */ void cancelClicked(); /** * \brief Called when the join button is pressed * * It joins the selected channel * \return void */ void joinClicked(); /** * \brief Called when the delete button is pressed * * It deletes the selected channel * \return void */ void deleteClicked(); /** * \brief Called when the register button is pressed * * It registers the selected channel in the database * \return void */ void regClicked(); /** * \brief Called when the clear button is pressed * * It clears the list of recent channels * \return void */ void clearClicked(); //void whoClicked(); //void namesClicked(); }; #endif //_CHANNELSJOINSWINDOW_H_