1 #ifndef PSICHATDLG_H
2 #define PSICHATDLG_H
3 
4 #include "minicmd.h"
5 #include "mcmdsimplesite.h"
6 #include "mcmdmanager.h"
7 #include "chatdlg.h"
8 #include "mcmdcompletion.h"
9 #include "applicationinfo.h"
10 
11 #include "ui_chatdlg.h"
12 #include "typeaheadfind.h"
13 #include "widgets/actionlineedit.h"
14 #include "actionlist.h"
15 
16 class IconAction;
17 class PsiContact;
18 
19 class PsiChatDlg : public ChatDlg
20 {
21 	Q_OBJECT
22 public:
23 	PsiChatDlg(const Jid& jid, PsiAccount* account, TabManager* tabManager);
24 	~PsiChatDlg();
25 
26 protected:
27 	// reimplemented
28 	void contextMenuEvent(QContextMenuEvent *);
29 	void doSend();
30 	bool eventFilter(QObject *obj, QEvent *event);
31 
32 private:
33 	void setContactToolTip(QString text);
34 
35 private slots:
36 	void toggleSmallChat();
37 	void doClearButton();
38 	void doMiniCmd();
39 	void addContact();
40 	void buildMenu();
41 	void updateCounter();
42 	void updateIdentityVisibility();
43 	void updateCountVisibility();
44 	void updateContactAdding(PsiContact* c = 0);
45 	void updateContactAdding(const Jid &j);
46 	void contactChanged();
47 	QString makeContactName(const QString &name, const Jid &jid) const;
48 	void updateToolbuttons();
49 	void doSwitchJidMode();
50 	void copyUserJid();
51 	void actActiveContacts();
52 	void actPgpToggled(bool);
53 
54 	// reimplemented
55 	void chatEditCreated();
56 
57 private:
58 	void initToolBar();
59 	void initToolButtons();
60 
61 	// reimplemented
62 	void initUi();
63 	void capsChanged();
64 	bool isEncryptionEnabled() const;
65 	void updateJidWidget(const QList<UserListItem*> &ul, int status, bool fromPresence);
66 	void contactUpdated(UserListItem* u, int status, const QString& statusString);
67 	void updateAvatar();
68 	void optionsUpdate();
69 	void updatePGP();
70 	void checkPGPAutostart();
71 	void setPGPEnabled(bool enabled);
72 	void activated();
73 	void setLooks();
74 	void setShortcuts();
75 	void appendSysMsg(const QString &);
76 	ChatView* chatView() const;
77 	ChatEdit* chatEdit() const;
78 	void updateAutojidIcon();
79 	void setJidComboItem(int pos, const QString &text, const Jid &jid, const QString &icon_str);
80 
81 private:
82 	Ui::ChatDlg ui_;
83 
84 	QMenu* pm_settings_;
85 
86 	ActionList* actions_;
87 	QAction *act_mini_cmd_;
88 	TypeAheadFindBar *typeahead_;
89 
90 	ActionLineEdit *le_autojid;
91 	IconAction *act_autojid;
92 	IconAction *act_active_contacts;
93 
94 	MCmdManager mCmdManager_;
95 	MCmdSimpleSite mCmdSite_;
96 
97 	MCmdTabCompletion tabCompletion;
98 
99 	bool autoPGP_;
100 	bool smallChat_;
101 	class ChatDlgMCmdProvider;
102 
103 	static PsiIcon *throbber_icon;
104 };
105 
106 #endif
107