3
* This program is free software; you can redistribute it and/or
4
* modify it under the terms of the GNU Lesser General Public
5
* License as published by the Free Software Foundation; either
6
* version 2 of the License, or (at your option) version 3.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
* Lesser General Public License for more details.
13
* You should have received a copy of the GNU Lesser General Public
14
* License along with the program; if not, see <http://www.gnu.org/licenses/>
18
* Michel Zucchi <notzed@ximian.com>
19
* Neil Jagdish Patel <neil.patel@canonical.com> (copy-and-paste counts too!)
21
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
27
* THIS IS A MAJOR HACK -- DO NOT EMAIL ME ABOUT HOW MAJOR OF A HACK IT REALLY
28
* IS. I'M ALREADY LOSING SLEEP OVER IT.
30
* IF YOU HAVE ISSUES WITH THIS CODE, FEEL FREE TO ADD _PROPER_ PLUGIN SUPPORT
31
* TO EVOLUTION, OR AT LEAST A DBUS INTERFACE.
34
* this message was brought to you by Holiday Inn coffee and a cold
39
#ifndef _MY_HACKY_E_SHELL_H_
40
#define _MY_HACKY_E_SHELL_H_
42
#include <e-util/e-config.h>
43
#include <mail/em-utils.h>
44
#include <mail/em-event.h>
45
#include <mail/em-folder-tree-model.h>
46
#include <shell/evolution-config-control.h>
47
#include <shell/e-component-view.h>
48
#include <shell/es-event.h>
50
typedef struct _EShell EShell;
51
typedef struct _EShellPrivate EShellPrivate;
52
typedef enum _EShellLineStatus EShellLineStatus;
54
enum _EShellLineStatus {
55
E_SHELL_LINE_STATUS_ONLINE,
56
E_SHELL_LINE_STATUS_GOING_OFFLINE, /* NB: really means changing state in either direction */
57
E_SHELL_LINE_STATUS_OFFLINE,
58
E_SHELL_LINE_STATUS_FORCED_OFFLINE
61
struct _EShellPrivate {
62
/* IID for registering the object on OAF. */
67
/* EUriSchemaRegistry *uri_schema_registry; FIXME */
68
void *component_registry;
70
/* Names for the types of the folders that have maybe crashed. */
72
GList *crash_type_names; /* char * */
74
/* Line status and controllers */
75
EShellLineStatus line_status;
76
int line_status_pending;
77
EShellLineStatus line_status_working;
78
void *line_status_listener;
86
/* If we're quitting and things are still busy, a timeout handler */
89
/* Whether the shell is succesfully initialized. This is needed during
90
the start-up sequence, to avoid CORBA calls to do make wrong things
91
to happen while the shell is initializing. */
92
unsigned int is_initialized : 1;
94
/* Wether the shell is working in "interactive" mode or not.
95
(Currently, it's interactive IIF there is at least one active
97
unsigned int is_interactive : 1;
99
/* Whether quit has been requested, and the shell is now waiting for
100
permissions from all the components to quit. */
101
unsigned int preparing_to_quit : 1;
103
/* Whether we are recovering from a crash in the previous session. */
104
unsigned int crash_recovery : 1;