1 /*
2  * %kadu copyright begin%
3  * Copyright 2013 Bartosz Brachaczek (b.brachaczek@gmail.com)
4  * Copyright 2011, 2013, 2014 Rafał Przemysław Malinowski (rafal.przemyslaw.malinowski@gmail.com)
5  * %kadu copyright end%
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License as
9  * published by the Free Software Foundation; either version 2 of
10  * the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  */
20 
21 #pragma once
22 
23 #include "configuration/configuration-aware-object.h"
24 #include "network/proxy/network-proxy.h"
25 #include "storage/simple-manager.h"
26 #include "exports.h"
27 
28 #include <QtCore/QList>
29 #include <QtCore/QObject>
30 #include <QtCore/QPointer>
31 #include <QtCore/QString>
32 #include <injeqt/injeqt.h>
33 
34 class ConfigurationManager;
35 class Configuration;
36 class NetworkProxyStorage;
37 class NetworkProxy;
38 
39 class KADUAPI NetworkProxyManager : public SimpleManager<NetworkProxy>, ConfigurationAwareObject
40 {
41 	Q_OBJECT
42 
43 public:
44 	Q_INVOKABLE explicit NetworkProxyManager(QObject *parent = nullptr);
45 	virtual ~NetworkProxyManager();
46 
storageNodeName()47 	virtual QString storageNodeName() { return QStringLiteral("Proxys"); }
storageNodeItemName()48 	virtual QString storageNodeItemName() { return QStringLiteral("Proxy"); }
49 
50 	void setDefaultProxy(const NetworkProxy &proxy);
51 	const NetworkProxy &defaultProxy();
52 
53 	NetworkProxy byConfiguration(const QString &address, int port,
54 	                             const QString &user, const QString &password, NotFoundAction action);
55 
56 signals:
57 	void networkProxyAboutToBeAdded(NetworkProxy networkProxy);
58 	void networkProxyAdded(NetworkProxy networkProxy);
59 	void networkProxyAboutToBeRemoved(NetworkProxy networkProxy);
60 	void networkProxyRemoved(NetworkProxy networkProxy);
61 
62 	void networkProxyUpdated(NetworkProxy networkProxy);
63 
64 protected:
65 	virtual void load();
66 	virtual void store();
67 	virtual NetworkProxy loadStubFromStorage(const std::shared_ptr<StoragePoint> &storagePoint);
68 
69 	virtual void itemAboutToBeAdded(NetworkProxy item);
70 	virtual void itemAdded(NetworkProxy item);
71 	virtual void itemAboutToBeRemoved(NetworkProxy item);
72 	virtual void itemRemoved(NetworkProxy item);
73 
74 	virtual void configurationUpdated();
75 
76 private:
77 	QPointer<ConfigurationManager> m_configurationManager;
78 	QPointer<Configuration> m_configuration;
79 	QPointer<NetworkProxyStorage> m_networkProxyStorage;
80 
81 	NetworkProxy DefaultProxy;
82 
83 private slots:
84 	INJEQT_SET void setConfigurationManager(ConfigurationManager *configurationManager);
85 	INJEQT_SET void setConfiguration(Configuration *configuration);
86 	INJEQT_SET void setNetworkProxyStorage(NetworkProxyStorage *networkProxyStorage);
87 	INJEQT_INIT void init();
88 	INJEQT_DONE void done();
89 
90 	void networkProxyDataUpdated();
91 
92 };
93