1 #ifndef _OPTW_IDENTITY_H_
2 #define _OPTW_IDENTITY_H_
3 //=============================================================================
4 //
5 //   File : OptionsWidget_identity.h
6 //   Creation date : Tue Nov 14 2000 23:06:12 CEST by Szymon Stefanek
7 //
8 //   This file is part of the KVIrc IRC client distribution
9 //   Copyright (C) 2000-2010 Szymon Stefanek (pragma at kvirc dot net)
10 //   Copyright (C) 2008 Elvio Basello (hellvis69 at netsons dot org)
11 //
12 //   This program is FREE software. You can redistribute it and/or
13 //   modify it under the terms of the GNU General Public License
14 //   as published by the Free Software Foundation; either version 2
15 //   of the License, or (at your option) any later version.
16 //
17 //   This program is distributed in the HOPE that it will be USEFUL,
18 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
19 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 //   See the GNU General Public License for more details.
21 //
22 //   You should have received a copy of the GNU General Public License
23 //   along with this program. If not, write to the Free Software Foundation,
24 //   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
25 //
26 //=============================================================================
27 
28 #include "KviOptionsWidget.h"
29 #include "kvi_settings.h"
30 #include "KviSelectors.h"
31 #include "KviPixmap.h"
32 
33 #include <QDialog>
34 
35 class QCheckBox;
36 class QLineEdit;
37 class QPushButton;
38 class QComboBox;
39 class KviHttpRequest;
40 class QTreeWidget;
41 class KviIdentityProfile;
42 
43 class NickAlternativesDialog : public QDialog
44 {
45 	friend class KviIdentityGeneralOptionsWidget;
46 	Q_OBJECT
47 protected:
48 	NickAlternativesDialog(QWidget * par, const QString & n1, const QString & n2, const QString & n3);
49 	~NickAlternativesDialog();
50 
51 protected:
52 	QLineEdit * m_pNickEdit1;
53 	QLineEdit * m_pNickEdit2;
54 	QLineEdit * m_pNickEdit3;
55 
56 protected:
57 	void fill(QString & n1, QString & n2, QString & n3);
58 };
59 
60 class AvatarSelectionDialog : public QDialog
61 {
62 	friend class OptionsWidget_identityAvatar;
63 	Q_OBJECT
64 public:
65 	AvatarSelectionDialog(QWidget * par, const QString & szInitialPath);
66 	~AvatarSelectionDialog();
67 
68 protected:
69 	QLineEdit * m_pLineEdit;
70 	QString m_szAvatarName;
71 
72 protected:
73 	void closeEvent(QCloseEvent * e) override;
avatarName()74 	const QString & avatarName() { return m_szAvatarName; };
75 protected slots:
76 	void okClicked();
77 	void cancelClicked();
78 	void chooseFileClicked();
79 };
80 
81 class AvatarDownloadDialog : public QDialog
82 {
83 	friend class OptionsWidget_identityAvatar;
84 	Q_OBJECT
85 public:
86 	AvatarDownloadDialog(QWidget * par, const QString & szUrl);
87 	~AvatarDownloadDialog();
88 
89 protected:
90 	KviHttpRequest * m_pRequest;
91 	QLabel * m_pOutput;
92 	QString m_szErrorMessage;
93 	QString m_szLocalFileName;
94 	QString m_szUrl;
95 
96 protected:
97 	void closeEvent(QCloseEvent * e) override;
localFileName()98 	const QString & localFileName() { return m_szLocalFileName; };
errorMessage()99 	const QString & errorMessage() { return m_szErrorMessage; };
100 protected slots:
101 	void startDownload();
102 	void cancelClicked();
103 	void downloadTerminated(bool bSuccess);
104 	void downloadMessage(const QString & szMsg);
105 };
106 
107 class IdentityProfileEditor : public QDialog
108 {
109 	friend class OptionsWidget_identityProfile;
110 	Q_OBJECT
111 public:
112 	IdentityProfileEditor(QWidget * pParent);
113 	~IdentityProfileEditor();
114 
115 protected:
116 	QLineEdit * m_pNameEdit;
117 	QLineEdit * m_pNetworkEdit;
118 	QLineEdit * m_pNickEdit;
119 	QLineEdit * m_pAltNickEdit;
120 	QLineEdit * m_pUserNameEdit;
121 	QLineEdit * m_pRealNameEdit;
122 	QPushButton * m_pBtnOk;
123 
124 public:
125 	bool editProfile(KviIdentityProfile * pProfile);
126 protected slots:
127 	void toggleButton();
128 };
129 
130 #define KVI_OPTIONS_WIDGET_ICON_OptionsWidget_identity KviIconManager::Ident
131 #define KVI_OPTIONS_WIDGET_NAME_OptionsWidget_identity __tr2qs_no_lookup("Identity")
132 #define KVI_OPTIONS_WIDGET_PRIORITY_OptionsWidget_identity 99998
133 #define KVI_OPTIONS_WIDGET_CONTAINER_OptionsWidget_identity true
134 
135 class OptionsWidget_identity : public KviOptionsWidget
136 {
137 	Q_OBJECT
138 public:
139 	OptionsWidget_identity(QWidget * parent);
140 	~OptionsWidget_identity();
141 };
142 
143 #define KVI_OPTIONS_WIDGET_ICON_KviIdentityGeneralOptionsWidget KviIconManager::Ident
144 #define KVI_OPTIONS_WIDGET_NAME_KviIdentityGeneralOptionsWidget __tr2qs_no_lookup("General")
145 #define KVI_OPTIONS_WIDGET_PRIORITY_KviIdentityGeneralOptionsWidget 90000
146 #define KVI_OPTIONS_WIDGET_PARENT_KviIdentityGeneralOptionsWidget OptionsWidget_identity
147 
148 class KviIdentityGeneralOptionsWidget : public KviOptionsWidget
149 {
150 	Q_OBJECT
151 public:
152 	KviIdentityGeneralOptionsWidget(QWidget * pParent);
153 	~KviIdentityGeneralOptionsWidget();
154 
155 protected:
156 	QString m_szAltNicknames[3];
157 
158 	QComboBox * m_pAgeCombo;
159 	QComboBox * m_pGenderCombo;
160 protected slots:
161 	void setNickAlternatives();
162 
163 protected:
164 	void commit() override;
165 };
166 
167 #define KVI_OPTIONS_WIDGET_ICON_OptionsWidget_identityAvatar KviIconManager::Avatar
168 #define KVI_OPTIONS_WIDGET_NAME_OptionsWidget_identityAvatar __tr2qs_no_lookup("Avatar")
169 #define KVI_OPTIONS_WIDGET_PRIORITY_OptionsWidget_identityAvatar 80000
170 #define KVI_OPTIONS_WIDGET_PARENT_OptionsWidget_identityAvatar OptionsWidget_identity
171 
172 class OptionsWidget_identityAvatar : public KviOptionsWidget
173 {
174 	Q_OBJECT
175 public:
176 	OptionsWidget_identityAvatar(QWidget * pParent);
177 	~OptionsWidget_identityAvatar();
178 
179 protected:
180 	QCheckBox * m_pUseAvatarCheck;
181 	QLineEdit * m_pAvatarNameEdit;
182 	QPushButton * m_pChooseAvatarButton;
183 	KviPixmap * m_pLocalAvatar;
184 	KviPixmapPreview * m_pAvatarPreview;
185 protected slots:
186 	void chooseAvatar();
187 
188 protected:
189 	void commit() override;
190 };
191 
192 #define KVI_OPTIONS_WIDGET_ICON_OptionsWidget_identityAdvanced KviIconManager::Gui
193 #define KVI_OPTIONS_WIDGET_NAME_OptionsWidget_identityAdvanced __tr2qs_no_lookup("Advanced")
194 #define KVI_OPTIONS_WIDGET_PRIORITY_OptionsWidget_identityAdvanced 70000
195 #define KVI_OPTIONS_WIDGET_PARENT_OptionsWidget_identityAdvanced OptionsWidget_identity
196 
197 class OptionsWidget_identityAdvanced : public KviOptionsWidget
198 {
199 	Q_OBJECT
200 public:
201 	OptionsWidget_identityAdvanced(QWidget * pParent);
202 	~OptionsWidget_identityAdvanced();
203 
204 protected:
205 	bool m_bI;
206 	bool m_bW;
207 	bool m_bS;
208 	KviCString m_sModeStr;
209 	KviBoolSelector * m_pISelector;
210 	KviBoolSelector * m_pWSelector;
211 	KviBoolSelector * m_pSSelector;
212 
213 protected:
214 	virtual void commit();
215 };
216 
217 #define KVI_OPTIONS_WIDGET_ICON_OptionsWidget_identityProfile KviIconManager::UserWindow
218 #define KVI_OPTIONS_WIDGET_NAME_OptionsWidget_identityProfile __tr2qs_no_lookup("Profiles")
219 #define KVI_OPTIONS_WIDGET_PRIORITY_OptionsWidget_identityProfile 60000
220 #define KVI_OPTIONS_WIDGET_PARENT_OptionsWidget_identityProfile OptionsWidget_identity
221 
222 class OptionsWidget_identityProfile : public KviOptionsWidget
223 {
224 	Q_OBJECT
225 public:
226 	OptionsWidget_identityProfile(QWidget * pParent);
227 	~OptionsWidget_identityProfile();
228 
229 protected:
230 	QTreeWidget * m_pTreeWidget;
231 	QCheckBox * m_pProfilesCheck;
232 	QPushButton * m_pBtnAddProfile;
233 	QPushButton * m_pBtnEditProfile;
234 	QPushButton * m_pBtnDelProfile;
235 	IdentityProfileEditor * m_pEditor;
236 	int m_iCurrentEditedProfile;
237 
238 public:
239 	virtual void commit();
240 protected slots:
241 	void toggleControls();
242 	void addProfileEntry();
243 	void editProfileEntry();
244 	void delProfileEntry();
245 	void editProfileOkPressed();
246 };
247 
248 #endif //_OPTW_IDENTITY_H_
249