135 lines
4.3 KiB
C
135 lines
4.3 KiB
C
/*
|
|
* Evolution calendar - Base class for calendar component editor pages
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) version 3.
|
|
*
|
|
* 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
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with the program; if not, see <http://www.gnu.org/licenses/>
|
|
*
|
|
*
|
|
* Authors:
|
|
* Federico Mena-Quintero <federico@ximian.com>
|
|
*
|
|
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
|
|
*
|
|
*/
|
|
|
|
#ifndef COMP_EDITOR_PAGE_H
|
|
#define COMP_EDITOR_PAGE_H
|
|
|
|
#include <time.h>
|
|
#include <gtk/gtk.h>
|
|
#include <libecal/e-cal-component.h>
|
|
#include <libecal/e-cal-client.h>
|
|
|
|
#include <calendar/gui/e-meeting-attendee.h>
|
|
|
|
/* Standard GObject macros */
|
|
#define TYPE_COMP_EDITOR_PAGE \
|
|
(comp_editor_page_get_type ())
|
|
#define COMP_EDITOR_PAGE(obj) \
|
|
(G_TYPE_CHECK_INSTANCE_CAST \
|
|
((obj), TYPE_COMP_EDITOR_PAGE, CompEditorPage))
|
|
#define COMP_EDITOR_PAGE_CLASS(cls) \
|
|
(G_TYPE_CHECK_CLASS_CAST \
|
|
((cls), TYPE_COMP_EDITOR_PAGE, CompEditorPageClass))
|
|
#define IS_COMP_EDITOR_PAGE(obj) \
|
|
(G_TYPE_CHECK_INSTANCE_TYPE \
|
|
((obj), TYPE_COMP_EDITOR_PAGE))
|
|
#define IS_COMP_EDITOR_PAGE_CLASS(cls) \
|
|
(G_TYPE_CHECK_CLASS_TYPE \
|
|
((obj), TYPE_COMP_EDITOR_PAGE))
|
|
#define COMP_EDITOR_PAGE_GET_CLASS(obj) \
|
|
(G_TYPE_INSTANCE_GET_CLASS \
|
|
((obj), TYPE_COMP_EDITOR_PAGE, CompEditorPageClass))
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
/* Use a forward declaration to avoid a circular reference. */
|
|
struct _CompEditor;
|
|
|
|
typedef struct _CompEditorPage CompEditorPage;
|
|
typedef struct _CompEditorPageClass CompEditorPageClass;
|
|
typedef struct _CompEditorPagePrivate CompEditorPagePrivate;
|
|
|
|
typedef struct {
|
|
ECalComponentDateTime *start;
|
|
ECalComponentDateTime *end;
|
|
ECalComponentDateTime *due;
|
|
struct icaltimetype *complete;
|
|
} CompEditorPageDates;
|
|
|
|
struct _CompEditorPage {
|
|
GObject object;
|
|
|
|
/* The GtkAccelGroup for the page. We install this when the page is
|
|
mapped, and uninstall when it is unmapped. libglade would do this
|
|
normally, but we create our pages individually so have to do it
|
|
ourselves. */
|
|
GtkAccelGroup *accel_group;
|
|
|
|
CompEditorPagePrivate *priv;
|
|
};
|
|
|
|
struct _CompEditorPageClass {
|
|
GObjectClass parent_class;
|
|
|
|
/* Signals */
|
|
void (*dates_changed) (CompEditorPage *page,
|
|
const gchar *dates);
|
|
|
|
/* Methods */
|
|
GtkWidget * (*get_widget) (CompEditorPage *page);
|
|
void (*focus_main_widget) (CompEditorPage *page);
|
|
gboolean (*fill_widgets) (CompEditorPage *page,
|
|
ECalComponent *comp);
|
|
gboolean (*fill_component) (CompEditorPage *page,
|
|
ECalComponent *comp);
|
|
gboolean (*fill_timezones) (CompEditorPage *page,
|
|
GHashTable *timezones);
|
|
void (*set_dates) (CompEditorPage *page,
|
|
CompEditorPageDates *dates);
|
|
void (*add_attendee) (CompEditorPage *page,
|
|
EMeetingAttendee *attendee);
|
|
};
|
|
|
|
GType comp_editor_page_get_type (void);
|
|
struct _CompEditor *
|
|
comp_editor_page_get_editor (CompEditorPage *page);
|
|
GtkWidget * comp_editor_page_get_widget (CompEditorPage *page);
|
|
gboolean comp_editor_page_get_updating (CompEditorPage *page);
|
|
void comp_editor_page_set_updating (CompEditorPage *page,
|
|
gboolean updating);
|
|
void comp_editor_page_changed (CompEditorPage *page);
|
|
void comp_editor_page_focus_main_widget
|
|
(CompEditorPage *page);
|
|
gboolean comp_editor_page_fill_widgets (CompEditorPage *page,
|
|
ECalComponent *comp);
|
|
gboolean comp_editor_page_fill_component (CompEditorPage *page,
|
|
ECalComponent *comp);
|
|
gboolean comp_editor_page_fill_timezones (CompEditorPage *page,
|
|
GHashTable *timezones);
|
|
void comp_editor_page_set_dates (CompEditorPage *page,
|
|
CompEditorPageDates *dates);
|
|
void comp_editor_page_add_attendee (CompEditorPage *page,
|
|
EMeetingAttendee *attendee);
|
|
void comp_editor_page_notify_dates_changed
|
|
(CompEditorPage *page,
|
|
CompEditorPageDates *dates);
|
|
void comp_editor_page_display_validation_error
|
|
(CompEditorPage *page,
|
|
const gchar *msg,
|
|
GtkWidget *field);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* COMP_EDITOR_PAGE_H */
|