aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/pcs/tlacuache.c
blob: 35bb58586213d0307fc7264a709d882f4b81dd01 (plain) (blame)
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
134
135
/* Tlacuache - personal calendar server main module
 *
 * Copyright (C) 2000 Helix Code, Inc.
 *
 * Author: Federico Mena-Quintero <federico@helixcode.com>
 *
 * 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.
 */

#include <config.h>
#include <libgnorba/gnorba.h>
#include <bonobo.h>
#include <libgnomevfs/gnome-vfs.h>
#include "cal-factory.h"
#include "calobj.h"



/* Stuff that the un-converted alarm code needs to build */

int debug_alarms = FALSE;

void calendar_notify (time_t time, CalendarAlarm *which, void *data);

CalendarAlarm alarm_defaults[4] = {
    { ALARM_MAIL, 0, 15, ALARM_MINUTES },
    { ALARM_PROGRAM, 0, 15, ALARM_MINUTES },
    { ALARM_DISPLAY, 0, 15, ALARM_MINUTES },
    { ALARM_AUDIO, 0, 15, ALARM_MINUTES }
};

void
calendar_notify (time_t time, CalendarAlarm *which, void *data)
{
    g_error ("calendar_notify() called!");
}



/* Callback used when the calendar factory is destroyed */
static void
factory_destroy_cb (GtkObject *object, gpointer data)
{
    gtk_main_quit ();
}

/* Creates and registers the calendar factory */
static gboolean
create_cal_factory (void)
{
    CalFactory *factory;
    CORBA_Object object;
    CORBA_Environment ev;
    int result;

    factory = cal_factory_new ();
    if (!factory) {
        g_message ("create_cal_factory(): could not create the calendar factory!");
        return FALSE;
    }

    object = bonobo_object_corba_objref (BONOBO_OBJECT (factory));

    CORBA_exception_init (&ev);
    result = goad_server_register (CORBA_OBJECT_NIL,
                       object,
                       "evolution:calendar-factory",
                       "object",
                       &ev);

    if (ev._major != CORBA_NO_EXCEPTION || result == -1) {
        g_message ("create_cal_factory(): could not register the calendar factory");
        bonobo_object_unref (BONOBO_OBJECT (factory));
        CORBA_exception_free (&ev);
        return FALSE;
    } else if (result == -2) {
        g_message ("create_cal_factory(): a calendar factory is already registered");
        bonobo_object_unref (BONOBO_OBJECT (factory));
        CORBA_exception_free (&ev);
        return FALSE;
    }

    gtk_signal_connect (GTK_OBJECT (factory), "destroy",
                GTK_SIGNAL_FUNC (factory_destroy_cb),
                NULL);

    CORBA_exception_free (&ev);
    return TRUE;
}

int
main (int argc, char **argv)
{
    CORBA_Environment ev;

    bindtextdomain (PACKAGE, GNOMELOCALEDIR);
    textdomain (PACKAGE);

    CORBA_exception_init (&ev);
    gnome_CORBA_init ("tlacuache", VERSION, &argc, argv, GNORBA_INIT_SERVER_FUNC, &ev);
    if (ev._major != CORBA_NO_EXCEPTION) {
        g_message ("main(): could not initialize the ORB");
        CORBA_exception_free (&ev);
        exit (1);
    }
    CORBA_exception_free (&ev);

    if (!bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL)) {
        g_message ("main(): could not initialize Bonobo");
        exit (1);
    }

    if (!gnome_vfs_init ()) {
        g_message ("main(): could not initialize GNOME-VFS");
        exit (1);
    }

    if (!create_cal_factory ())
        exit (1);

    bonobo_main ();
    return 0;
}