2
/* Ekiga -- A VoIP and Video-Conferencing application
3
* Copyright (C) 2000-2006 Damien Sandras
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 2 of the License, or
8
* (at your option) any later version.
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
20
* Ekiga is licensed under the GPL license and as a special exception,
21
* you have permission to link or otherwise combine this program with the
22
* programs OPAL, OpenH323 and PWLIB, and distribute the combination,
23
* without applying the requirements of the GNU GPL to the OPAL, OpenH323
24
* and PWLIB programs, as long as you do follow the requirements of the
25
* GNU GPL for all the rest of the software thus combined.
30
* gnomemeeting.h - description
31
* ------------------------------
32
* begin : Sat Dec 23 2000
33
* copyright : (C) 2000-2006 by Damien Sandras
34
* description : This file contains the main class
39
#ifndef _GNOMEMEETING_H_
40
#define _GNOMEMEETING_H_
48
#include "runtime-glib.h"
50
#include "statusicon.h"
52
#include <ptlib/ipsock.h>
56
* COMMON NOTICE: The Application must be initialized with Init after its
59
class GnomeMeeting : public PProcess
61
PCLASSINFO(GnomeMeeting, PProcess);
66
/* DESCRIPTION : Constructor.
67
* BEHAVIOR : Init variables.
73
/* DESCRIPTION : Destructor.
89
* BEHAVIOR : Prepare the endpoint to exit by removing all
90
* associated threads and components.
97
* BEHAVIOR : Detects the available interfaces.
98
* Returns FALSE if none is is detected, TRUE
100
* Updates the preferences window.
103
bool DetectInterfaces ();
107
* BEHAVIOR : Returns a pointer to the GmWindow structure
111
GtkWidget *GetMainWindow ();
115
* BEHAVIOR : Returns a pointer to the preferences window GMObject.
118
GtkWidget *GetPrefsWindow (bool create = true);
122
* BEHAVIOR : Returns a pointer to the assistant window.
125
GtkWidget *GetAssistantWindow (bool create = true);
129
* BEHAVIOR : Returns a pointer to the accounts window.
132
GtkWidget *GetAccountsWindow ();
136
* BEHAVIOR : Returns a pointer to the tray.
139
StatusIcon *GetStatusicon ();
142
/* Needed for PProcess */
147
* BEHAVIOR : Return the ServiceCore.
150
Ekiga::ServiceCore *GetServiceCore ();
153
static GnomeMeeting *Process ();
157
* BEHAVIOR : Builds the GUI of GnomeMeeting. The config, GNOME
158
* and GTK need to have been initialized before.
159
* The GUI is built accordingly to the preferences
167
* BEHAVIOR : Returns the list of detected interfaces.
168
* That doesn't force a redetection. Use DetectInterfaces
172
PStringArray GetInterfaces ();
176
Ekiga::ServiceCore *service_core;
178
PThread *audio_tester;
180
PMutex at_access_mutex;
182
PMutex dev_access_mutex;
183
PMutex iface_access_mutex;
187
/* Detected interfaces */
188
PStringArray interfaces;
191
/* The different components of the GUI */
192
GtkWidget *main_window;
193
GtkWidget *history_window;
194
GtkWidget *assistant_window;
195
GtkWidget *prefs_window;
196
GtkWidget *accounts_window;
197
StatusIcon *statusicon;
201
GObject *dbus_component;
204
static GnomeMeeting *GM;