#ifndef _KVI_CONSOLE_H_ #define _KVI_CONSOLE_H_ //============================================================================= // // File : kvi_console.h // Creation date : Sun Jun 25 2000 15:00:20 by Szymon Stefanek // // This file is part of the KVirc irc client distribution // Copyright (C) 1999-2000 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 opinion) 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. // //============================================================================= #include "kvi_settings.h" #include "kvi_ircconnection.h" #include "kvi_window.h" #include "kvi_ircsocket.h" #include "kvi_string.h" #include "kvi_irccontext.h" #include "kvi_pointerlist.h" #include #include class TQToolBar; class TQToolButton; class KviAvatar; class KviDns; class KviIrcUserDataBase; class KviIrcUserEntry; class KviIrcServer; class KviIrcNetwork; class KviProxy; #ifndef COMPILE_ON_WINDOWS class KviChannel; class KviQuery; #else // windoze wants it to compile TQPtrList and TQPtrList #include "kvi_channel.h" #include "kvi_query.h" #endif class KviUserListView; class KviNotifyListManager; class KviRegisteredUser; class KviWindowToolPageButton; //================================================================================================= // // The console window // //================================================================================================= #define KVI_CONSOLE_FLAG_FIRSTINAPP 1 #define KVI_CONSOLE_FLAG_FIRSTINFRAME 2 class KVIRC_API KviConsole : public KviWindow { friend class KviFrame; friend class KviIrcSocket; friend class KviChannel; friend class KviQuery; friend class KviIrcContext; Q_OBJECT protected: KviConsole(KviFrame * lpFrm,int iFlags); public: ~KviConsole(); protected: int m_iFlags; // FIXME: make this a KviWindow property ? // UI KviUserListView * m_pNotifyListView; KviWindowToolPageButton * m_pNotifyViewButton; TQComboBox * m_pAddressEdit; TQString m_szStatusString; // nick (flags) on server | not connected protected: // UI virtual TQPixmap * myIconPtr(); virtual void fillCaptionBuffers(); virtual void resizeEvent(TQResizeEvent *e); virtual void closeEvent(TQCloseEvent *e); virtual void getBaseLogFileName(TQString &buffer); virtual void getTaskBarTipText(TQString &buffer); virtual void fillContextPopup(KviTalPopupMenu * p); virtual TQSize sizeHint() const; virtual void applyOptions(); virtual void triggerCreationEvents(); void fillStatusString(); //void socketError(int iError); //void socketStateChange(); //void registerLinkMonitor(KviIrcSocketMonitor * m); //void unregisterLinkMonitor(KviIrcSocketMonitor * m); virtual void loadProperties(KviConfig * cfg); virtual void saveProperties(KviConfig * cfg); void destroyConnection(); // internal helper for applyHighlighting int triggerOnHighlight(KviWindow *wnd,int type,const TQString &nick,const TQString &user,const TQString &host,const TQString &szMsg,const TQString &trigger); void showNotifyList(bool bShow); public: // UI KviUserListView * notifyListView(){ return m_pNotifyListView; }; int selectedCount(); // // State // KviIrcContext::State state(){ return context()->state(); }; KVI_DEPRECATED KviIrcContext * ircContext(){ return context(); }; unsigned int ircContextId() KVI_DEPRECATED; // // Sock state // KviIrcSocket * socket() KVI_DEPRECATED; // these should disappear! bool isConnected(){ return context()->isConnected(); }; bool isIpV6Connection(); bool isNotConnected(); bool connectionInProgress(); // // This connection info // TQString currentNetworkName(); KviAvatar * currentAvatar(); // // IRC Context wide helpers (connection related) // void getUserTipText(const TQString &nick,KviIrcUserEntry *e,TQString &buffer); enum OutputPrivmsgFlags { NoWindowFlashing = 1, // has meaning only if NoHighlighting is NOT given, otherwise it is implied NoNotifier = 2, // has meaning only if NoHighlighitng is NOT given, otherwise it is implied NoHighlighting = 4, NoNotifications = 7 // this is 1|2|4 implies NoWindowFlashing and NoNotifier }; void outputPrivmsg(KviWindow *wnd,int type,const TQString &nick, const TQString &user,const TQString &host,const TQString &msg,int iFlags = 0,const TQString &prefix = TQString(),const TQString &suffix = TQString()); // this applies highlighting to the specified message // and triggers the OnHighlight event. // it returns KVI_OUT_HIGHLIGHT if highlighting was applied // and -1 if OnHighlight called halt // otherwise it returns int applyHighlighting(KviWindow *wnd,int type,const TQString &nick,const TQString &user,const TQString &host,const TQString &szMsg); // Avatar helpers (conneciton related) void resetAvatarForMatchingUsers(KviRegisteredUser * u); // this should be protected at least void avatarChangedUpdateWindows(const TQString &nick,const TQString &textLine); void avatarChanged(KviAvatar * avatar,const TQString &nick,const TQString &user,const TQString &host,const TQString &textLine); KviAvatar * setAvatar(const TQString &nick,const TQString &user,const TQString &host,const TQString &szLocalPath,const TQString &szName); void checkDefaultAvatar(KviIrcUserEntry *e,const TQString &nick,const TQString &user,const TQString &host); void setAvatarFromOptions(); // This returns the default avatar for the current KVIrc user // if he has choosen a valid avatar in the options dialog // otherwise returns 0. // The avatar is allocated with new and must be deleted // when no longer needed. KviAvatar * defaultAvatarFromOptions(); void terminateConnectionRequest(bool bForce = false,const char * quitMsg = 0); // Status string (usermode + nick) (connection related too) const TQString & statusString(){ return m_szStatusString; }; // forwarders from KviIrcConnection KVI_DEPRECATED KviPointerList * channelList(){ return connection() ? connection()->channelList() : 0; }; KVI_DEPRECATED KviPointerList * queryList(){ return connection() ? connection()->queryList() : 0; }; KVI_DEPRECATED unsigned int channelCount(){ return (connection() ? connection()->channelList()->count() : 0); }; KVI_DEPRECATED unsigned int queryCount(){ return (connection() ? connection()->queryList()->count() : 0); }; // Window management //KVI_DEPRECATED KviChannel * findChannel(const char * name){ return connection() ? connection()->findChannel(name) : 0; }; //KVI_DEPRECATED KviQuery * findQuery(const char * nick){ return connection() ? connection()->findQuery(nick) : 0; }; KviWindow * activeWindow(); // User db, connection related void completeChannel(const TQString &word,KviPointerList * matches); void completeServer(const TQString &word,KviPointerList * matches); void connectionAttached(); void connectionDetached(); public slots: void updateUri(); void executeInternalCommand(int index); void recentUrlsChanged(); protected slots: void ircUriChanged(const TQString & ); void toggleNotifyView(); void textViewRightClicked(); }; #endif //_KVI_CONSOLE_H_