/* 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. */ /* Copyright (C) 2006-2008 Eike Hein */ #ifndef VIEWCONTAINER_H #define VIEWCONTAINER_H #include "konversationmainwindow.h" #include "common.h" #include "server.h" #include #include class TQSplitter; class KTabWidget; class TDEActionCollection; class KonversationMainWindow; class ViewTree; class ChatWindow; class Server; class Images; class UrlCatcher; class DccTransferPanel; class NicksOnline; class QueueTuner; namespace Konversation { class InsertCharDialog; class ServerGroupSettings; } class ViewContainer : public TQObject { Q_OBJECT public: explicit ViewContainer(KonversationMainWindow* window); ~ViewContainer(); TQSplitter* getWidget() { return m_viewTreeSplitter; } KonversationMainWindow* getWindow() { return m_window; } TDEActionCollection* actionCollection() { return m_window->actionCollection(); } TQGuardedPtr getFrontView() { return m_frontView; } Server* getFrontServer() { return m_frontServer; } void prepareShutdown(); TQString currentViewTitle(); TQString currentViewURL(bool passNetwork); void appendToFrontmost(const TQString& type,const TQString& message,ChatWindow* serverView, bool parseURL = true); void showQueueTuner(bool); int getViewIndex(TQWidget* widget); public slots: void updateAppearance(); void saveSplitterSizes(); void setViewTreeShown(bool show); void syncTabBarToTree(); void updateViews(const Konversation::ServerGroupSettings* serverGroup = 0); void updateViewIcons(); void setViewNotification(ChatWindow* widget, const Konversation::TabNotifyType& type); void unsetViewNotification(ChatWindow* view); void toggleViewNotifications(); void toggleAutoJoin(); void switchView(TQWidget* newView); void showView(ChatWindow* view); void goToView(int page); void showNextView(); void showPreviousView(); void moveViewLeft(); void moveViewRight(); void closeView(TQWidget* view); void closeView(ChatWindow* view); void closeViewMiddleClick(TQWidget* view); void closeCurrentView(); void cleanupAfterClose(ChatWindow* view); void changeViewCharset(int index); void updateViewEncoding(ChatWindow* view); void showViewContextMenu(TQWidget* tab, const TQPoint& pos); void clearView(); void clearAllViews(); void findText(); void findNextText(); void findPrevText(); void insertCharacter(); void insertChar(const TQChar& chr); void insertIRCColor(); void clearViewLines(); void insertRememberLine(); void cancelRememberLine(); void insertMarkerLine(); void insertRememberLines(Server* server); void openLogFile(); void openLogFile(const TQString& caption, const TQString& file); void addKonsolePanel(); void addUrlCatcher(); void closeUrlCatcher(); void toggleDccPanel(); void addDccPanel(); void closeDccPanel(); void deleteDccPanel(); DccTransferPanel* getDccPanel(); void addDccChat(const TQString& myNick,const TQString& nick,const TQStringList& arguments,bool listen); StatusPanel* addStatusView(Server* server); RawLog* addRawLog(Server* server); void disconnectFrontServer(); void reconnectFrontServer(); void showJoinChannelDialog(); void connectionStateChanged(Server* server, Konversation::ConnectionState state); void channelJoined(Channel* channel); Channel* addChannel(Server* server, const TQString& name); void rejoinChannel(); void openChannelSettings(); void toggleChannelNicklists(); Query* addQuery(Server* server,const NickInfoPtr & name, bool weinitiated=true); void updateQueryChrome(ChatWindow* view, const TQString& name); void closeQueries(); ChannelListPanel* addChannelListPanel(Server* server); void openChannelList(const TQString& filter = TQString(), bool getList = false); void openNicksOnlinePanel(); void closeNicksOnlinePanel(); void showNextActiveView(); signals: void viewChanged(ChatWindow* view); void removeView(ChatWindow* view); void setWindowCaption(const TQString& caption); void updateChannelAppearance(); void contextMenuClosed(); void resetStatusBar(); void setStatusBarTempText(const TQString& text); void clearStatusBarTempText(); void setStatusBarInfoLabel(const TQString& text); void clearStatusBarInfoLabel(); void setStatusBarLagLabelShown(bool shown); void updateStatusBarLagLabel(Server* server, int msec); void resetStatusBarLagLabel(); void setStatusBarLagLabelTooLongLag(Server* server, int msec); void updateStatusBarSSLLabel(Server* server); void removeStatusBarSSLLabel(); void autoJoinToggled(const Konversation::ServerGroupSettings*); void frontServerChanging(Server *); private: void setupTabWidget(); void setupViewTree(); void removeViewTree(); void updateTabWidgetAppearance(); void addView(ChatWindow* view, const TQString& label, bool weinitiated=true); void updateViewActions(int index); void updateSwitchViewAction(); void updateFrontView(); void setFrontServer(Server *); void initializeSplitterSizes(); bool m_saveSplitterSizesLock; KonversationMainWindow* m_window; TQSplitter* m_viewTreeSplitter; KTabWidget* m_tabWidget; ViewTree* m_viewTree; TQVBox *m_vbox; QueueTuner *m_queueTuner; Images* images; TQGuardedPtr m_frontServer; TQGuardedPtr m_contextServer; TQGuardedPtr m_frontView; TQGuardedPtr m_searchView; UrlCatcher* m_urlCatcherPanel; NicksOnline* m_nicksOnlinePanel; DccTransferPanel* m_dccPanel; bool m_dccPanelOpen; Konversation::InsertCharDialog* m_insertCharDialog; int m_popupViewIndex; int m_queryViewCount; TQValueList m_activeViewOrderList; }; #endif