1 /*
2  * %kadu copyright begin%
3  * Copyright 2011, 2012 Wojciech Treter (juzefwt@gmail.com)
4  * Copyright 2011 Bartosz Brachaczek (b.brachaczek@gmail.com)
5  * Copyright 2011, 2013, 2014 Rafał Przemysław Malinowski (rafal.przemyslaw.malinowski@gmail.com)
6  * %kadu copyright end%
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License as
10  * published by the Free Software Foundation; either version 2 of
11  * the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <http://www.gnu.org/licenses/>.
20  */
21 
22 #pragma once
23 
24 #include "accounts/account-details.h"
25 #include "open-chat-with/jabber-open-chat-with-runner.h"
26 #include "protocols/protocol.h"
27 
28 #include <QtCore/QObject>
29 #include <QtCore/QPointer>
30 #include <injeqt/injeqt.h>
31 
32 class PluginInjectedFactory;
33 class SystemInfo;
34 
35 class JabberAccountDetails : public AccountDetails
36 {
37 	Q_OBJECT
38 
39 	JabberOpenChatWithRunner *OpenChatRunner;
40 
41 public:
42 	enum EncryptionFlag
43 	{
44 		Encryption_No = 0,
45 		Encryption_Yes = 1,
46 		Encryption_Auto = 2,
47 		Encryption_Legacy = 3
48 	};
49 
50 	enum AllowPlainType
51 	{
52 		NoAllowPlain = 0,
53 		AllowPlain = 1,
54 		AllowPlainOverTLS = 2
55 	};
56 
57 private:
58 	QPointer<PluginInjectedFactory> m_pluginInjectedFactory;
59 	QPointer<SystemInfo> m_systemInfo;
60 
61 	PROPERTY_DEC(QString, Resource)
62 	PROPERTY_DEC(bool, AutoResource)
63 	PROPERTY_DEC(int, Priority)
64 	PROPERTY_DEC(bool, UseCustomHostPort)
65 	PROPERTY_DEC(QString, CustomHost)
66 	PROPERTY_DEC(int, CustomPort)
67 	PROPERTY_DEC(EncryptionFlag, EncryptionMode)
68 	PROPERTY_DEC(AllowPlainType, PlainAuthMode)
69 	PROPERTY_DEC(QByteArray, TlsOverrideCert)
70 	PROPERTY_DEC(QString, TlsOverrideDomain)
71 	PROPERTY_DEC(QString, DataTransferProxy)
72 	PROPERTY_DEC(bool, RequireDataTransferProxy)
73 	PROPERTY_DEC(bool, SendTypingNotification)
74 	PROPERTY_DEC(bool, SendGoneNotification)
75 	PROPERTY_DEC(bool, PublishSystemInfo)
76 
77 private slots:
78 	INJEQT_SET void setPluginInjectedFactory(PluginInjectedFactory *pluginInjectedFactory);
79 	INJEQT_SET void setSystemInfo(SystemInfo *systemInfo);
80 	INJEQT_INIT void init();
81 
82 protected:
83 	virtual void load();
84 	virtual void store();
85 
86 public:
87 	explicit JabberAccountDetails(AccountShared *data, QObject *parent = nullptr);
88 	virtual ~JabberAccountDetails();
89 
90 	PROPERTY_DEF(QString, resource, setResource, Resource)
91 	PROPERTY_DEF(bool, autoResource, setAutoResource, AutoResource)
92 	PROPERTY_DEF(bool, useCustomHostPort, setUseCustomHostPort, UseCustomHostPort)
93 	PROPERTY_DEF(QString, customHost, setCustomHost, CustomHost)
94 	PROPERTY_DEF(int, customPort, setCustomPort, CustomPort)
95 	PROPERTY_DEF(EncryptionFlag, encryptionMode, setEncryptionMode, EncryptionMode)
96 	PROPERTY_DEF(AllowPlainType, plainAuthMode, setPlainAuthMode, PlainAuthMode)
97 	PROPERTY_DEF(QByteArray, tlsOverrideCert, setTlsOverrideCert, TlsOverrideCert)
98 	PROPERTY_DEF(QString, tlsOverrideDomain, setTlsOverrideDomain, TlsOverrideDomain)
99 	PROPERTY_DEF(bool, sendTypingNotification, setSendTypingNotification, SendTypingNotification)
100 	PROPERTY_DEF(bool, sendGoneNotification, setSendGoneNotification, SendGoneNotification)
101 	PROPERTY_DEF(bool, publishSystemInfo, setPublishSystemInfo, PublishSystemInfo)
102 
103 	int priority();
104 	void setPriority(int priority);
105 
106 	QString dataTransferProxy();
107 	void setDataTransferProxy(const QString &dataTransferProxy);
108 
109 	bool requireDataTransferProxy();
110 	void setRequireDataTransferProxy(bool requireDataTransferProxy);
111 
112 signals:
113 	void priorityChanged();
114 	void dataTransferProxyChanged();
115 
116 };
117