summaryrefslogtreecommitdiffstats
path: root/knetworkmanager-0.8/src/knetworkmanager-connection.h
blob: a3707008b3848a80835a2673bfbc7eec49a75911 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/***************************************************************************
 *
 * knetworkmanager-connection.h - A NetworkManager frontend for KDE
 *
 * Copyright (C) 2005, 2006 Novell, Inc.
 *
 * Author: Helmut Schaa <hschaa@suse.de>, <helmut.schaa@gmx.de>
 *
 * 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.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 **************************************************************************/

#ifndef KNETWORKMANAGER_CONNECTION_H
#define KNETWORKMANAGER_CONNECTION_H

#include <tqmap.h>
#include <tqobject.h>

#include "knetworkmanager-connection_setting.h"
#include "dbus/connection.h"
#include "dbus/connectionnode.h"

class AccessPoint;
class TQT_DBusObjectPath;

namespace ConnectionSettings
{

	class WirelessSecurity;
	class Connection;
	class ConnectionSetting;
	class ConnectionPrivate;
	class Info;
	class Wired;
	class Wireless;
	class WirelessSecurity;
	class IPv4;

	typedef TQMap<TQString, SettingsMap> ConnectionMap;

	// a connection wraps multiple settings
	class Connection : public TQObject, DBus::ConnectionNode
	{
		Q_OBJECT
  
		public:
			Connection();
			virtual ~Connection();

			virtual TQString getID() const = 0;
			virtual void setID(const TQString& id) = 0;

			// get a specific setting
			ConnectionSetting* getSetting(const TQString&) const;

			// get all settings of this connection
			TQValueList<ConnectionSetting*> getSettings() const;

			// attach a new setting
			virtual void appendSetting(ConnectionSetting* setting);

			// ugly stuff introduced by NM
			void setSpecificObject(const TQString&);
			TQString getSpecificObject() const;

			// sometimes its usefull to have the object_path
			TQT_DBusObjectPath getObjectPath() const;

			// is the connection valid?
			virtual bool isValid() const;

			// the connections type (only for KNM use)
			virtual TQString getType();

			// duplicate
			virtual Connection* duplicate() = 0;

			// update the settings from another connection
			void updateSettings(Connection*);

			// true if the NM requested new secrets for this connection
			bool awaitingSecrets();

		public slots:

			// gets called from NM when it needs the secrets
			void slotSecretsNeeded(const TQString& setting_name, const TQStringList& hints, bool request_new);

			// gets called when the GUI provided new secrets
			void slotSecretsProvided(ConnectionSetting* setting);

			// signal a failure in getting new secrets
			void slotSecretsError();

			// gets called when a settings validity changes
			void slotSettingValidityChanged();

			// gets called when the connection is about to be removed
			void slotAboutToBeRemoved();

			// gets called when the connections settings changed
			void slotUpdated();

		protected:
			// implementations for ConnectionNode
			TQT_DBusObjectBase* createInterface(const TQString& interfaceName);
			TQString objectPath() const;

		signals:

			// signal when we need new secrets
			void SecretsNeeded(Connection* connection, ConnectionSetting* setting, const TQStringList& hints, bool request_new);

			// signal gets emitted when connections validity changes
			void validityChanged();

		private:
			ConnectionPrivate* d;
	};
}
#endif /* KNETWORKMANAGER_CONNECTION_H */