You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
245 lines
6.1 KiB
245 lines
6.1 KiB
/*
|
|
kopetechatwindow.h - Chat Window
|
|
|
|
Copyright (c) 2002 by Olivier Goffart <ogoffart @ kde.org>
|
|
Copyright (c) 2004 by Martijn Klingens <klingens@kde.org>
|
|
|
|
Kopete (c) 2002-2004 by the Kopete developers <kopete-devel@kde.org>
|
|
|
|
*************************************************************************
|
|
* *
|
|
* 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. *
|
|
* *
|
|
*************************************************************************
|
|
*/
|
|
|
|
#ifndef KOPETECHATWINDOW_H
|
|
#define KOPETECHATWINDOW_H
|
|
|
|
#include <tdeparts/mainwindow.h>
|
|
#include <tqmovie.h>
|
|
#include "kopetecontact.h"
|
|
#include "tdeversion.h"
|
|
|
|
class TDEAction;
|
|
class TDEToggleAction;
|
|
class TDEActionMenu;
|
|
class KTempFile;
|
|
class TQPixmap;
|
|
class TQTabWidget;
|
|
class KSqueezedTextLabel;
|
|
class KPushButton;
|
|
class TQVBox;
|
|
class TQVBoxLayout;
|
|
class TQFrame;
|
|
class KTabWidget;
|
|
class TQLabel;
|
|
class KopeteEmoticonAction;
|
|
class KopeteView;
|
|
class TDESelectAction;
|
|
class ChatView;
|
|
|
|
namespace Kopete
|
|
{
|
|
class Message;
|
|
class ChatSession;
|
|
class Contact;
|
|
class Protocol;
|
|
typedef TQPtrList<Contact> ContactPtrList;
|
|
}
|
|
|
|
class KopeteChatWindow : public KParts::MainWindow
|
|
{
|
|
Q_OBJECT
|
|
|
|
|
|
enum {NEW_WINDOW, GROUP_BY_ACCOUNT, GROUP_ALL, GROUP_BY_GROUP, GROUP_BY_METACONTACT};
|
|
|
|
public:
|
|
/**
|
|
* Find the appropriate window for a ChatView of the given protocol to
|
|
* dock into. If no such window exists, create one.
|
|
* @param protocol The protocol we are creating a view for
|
|
* @return A KopeteChatWindow suitable for docking a ChatView into. Guaranteed
|
|
* to be a valid pointer.
|
|
*/
|
|
static KopeteChatWindow *window( Kopete::ChatSession *manager );
|
|
~KopeteChatWindow();
|
|
|
|
/**
|
|
* Attach an unattached chatview to this window
|
|
* @param chat The chat view to attach
|
|
*/
|
|
void attachChatView( ChatView *chat );
|
|
|
|
/**
|
|
* Detach a chat view from this window
|
|
* @param chat The chat view to detach
|
|
*/
|
|
void detachChatView( ChatView *chat );
|
|
|
|
/**
|
|
* Returns the number of chat views attached to this window
|
|
*/
|
|
int chatViewCount() { return chatViewList.count(); }
|
|
|
|
/**
|
|
* Returns the chatview in the currently active tab, or the only chat view
|
|
* if chatViewCount() == 1
|
|
*/
|
|
ChatView *activeView();
|
|
|
|
void updateMembersActions();
|
|
void setStatus( const TQString & );
|
|
|
|
/**
|
|
* Reimplemented from TDEMainWindow - asks each ChatView in the window if it is ok to close the window
|
|
* @return true if no ChatView objects to closing.
|
|
*/
|
|
virtual bool queryClose();
|
|
virtual bool queryExit();
|
|
|
|
KTempFile *backgroundFile;
|
|
TQPtrList<ChatView> chatViewList;
|
|
|
|
private:
|
|
// All KopeteChatWindows are created by the window function
|
|
KopeteChatWindow( TQWidget *parent = 0, const char* name = "KopeteChatWindow" );
|
|
|
|
/**
|
|
* The window list has changed:
|
|
* For each chat window, update it's Move Tab to Window action
|
|
*/
|
|
static void windowListChanged();
|
|
|
|
void initActions(void);
|
|
void saveOptions(void);
|
|
void readOptions(void);
|
|
void checkDetachEnable();
|
|
void createTabBar();
|
|
void deleteTabBar();
|
|
void addTab( ChatView* );
|
|
void setPrimaryChatView( ChatView* );
|
|
const TQString fileContents( const TQString &file ) const;
|
|
|
|
ChatView *m_activeView;
|
|
ChatView *m_popupView;
|
|
bool m_alwaysShowTabs;
|
|
bool m_showFormatToolbar;
|
|
bool adjustingFormatToolbar;
|
|
bool updateBg;
|
|
KTabWidget *m_tabBar;
|
|
KPushButton *m_button_send;
|
|
KSqueezedTextLabel *m_status_text;
|
|
TQVBoxLayout *mainLayout;
|
|
TQFrame *mainArea;
|
|
TQLabel *anim;
|
|
TQMovie animIcon;
|
|
TQPixmap normalIcon;
|
|
|
|
TDEAction *chatSend;
|
|
TDEAction *historyUp;
|
|
TDEAction *historyDown;
|
|
TDEAction *nickComplete;
|
|
|
|
TDEToggleAction *mStatusbarAction;
|
|
|
|
TDEAction *tabLeft;
|
|
TDEAction *tabRight;
|
|
TDEAction *tabDetach;
|
|
TDEAction* tabClose;
|
|
|
|
TDEToggleAction* membersLeft;
|
|
TDEToggleAction* membersRight;
|
|
TDEToggleAction* toggleMembers;
|
|
TDEToggleAction* toggleAutoSpellCheck;
|
|
|
|
KopeteEmoticonAction *actionSmileyMenu;
|
|
TDEActionMenu *actionActionMenu;
|
|
TDEActionMenu *actionContactMenu;
|
|
TDEActionMenu *actionDetachMenu;
|
|
TDEActionMenu *actionTabPlacementMenu;
|
|
TQString statusMsg;
|
|
|
|
signals:
|
|
void closing( KopeteChatWindow* );
|
|
|
|
public slots:
|
|
void slotSmileyActivated( const TQString & );
|
|
void setActiveView( TQWidget *active );
|
|
void updateBackground( const TQPixmap &pm );
|
|
|
|
private slots:
|
|
// void slotPrepareSmileyMenu();
|
|
void slotPrepareContactMenu();
|
|
void slotPrepareDetachMenu();
|
|
void slotPreparePlacementMenu();
|
|
void slotUpdateSendEnabled();
|
|
|
|
void slotCut();
|
|
void slotCopy();
|
|
void slotPaste();
|
|
|
|
void slotSetBgColor();
|
|
void slotSetFgColor();
|
|
void slotSetFont();
|
|
|
|
void slotHistoryUp();
|
|
void slotHistoryDown();
|
|
void slotPageUp();
|
|
void slotPageDown();
|
|
|
|
void slotSendMessage();
|
|
void slotChatSave();
|
|
void slotChatPrint();
|
|
|
|
void slotPreviousTab();
|
|
void slotNextTab();
|
|
void slotDetachChat( int newWindowIndex = -1 );
|
|
void slotPlaceTabs( int tabPlacement );
|
|
|
|
void slotViewMenuBar();
|
|
void slotToggleStatusBar();
|
|
void slotToggleFormatToolbar( bool );
|
|
|
|
void slotConfKeys();
|
|
void slotConfToolbar();
|
|
|
|
void slotViewMembersLeft();
|
|
void slotViewMembersRight();
|
|
void slotToggleViewMembers();
|
|
void slotEnableUpdateBg() { updateBg = true; }
|
|
|
|
void toggleAutoSpellChecking();
|
|
void slotRTFEnabled( ChatView*, bool );
|
|
void slotAutoSpellCheckEnabled( ChatView*, bool );
|
|
|
|
void slotSetCaption( bool );
|
|
void slotUpdateCaptionIcons( ChatView * );
|
|
void slotChatClosed();
|
|
void slotTabContextMenu( TQWidget*, const TQPoint & );
|
|
void slotStopAnimation( ChatView* );
|
|
void slotNickComplete();
|
|
void slotCloseChat( TQWidget* );
|
|
|
|
//slots for tabs from the chatview widget
|
|
void updateChatState( ChatView* cv, int state );
|
|
void updateChatTooltip( ChatView* cv );
|
|
void updateChatLabel();
|
|
|
|
private:
|
|
void updateSpellCheckAction();
|
|
|
|
protected:
|
|
virtual void closeEvent( TQCloseEvent *e );
|
|
virtual void windowActivationChange( bool );
|
|
};
|
|
|
|
#endif
|
|
|
|
// vim: set noet ts=4 sts=4 sw=4:
|
|
|