1 /* 2 * Copyright (C) 2015 Red Hat, Inc. (www.redhat.com) 3 * 4 * This program is free software: you can redistribute it and/or modify it 5 * under the terms of the GNU General Public License as published by 6 * the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, but 9 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 10 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 11 * for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 * 16 */ 17 18 #ifndef E_COMP_EDITOR_H 19 #define E_COMP_EDITOR_H 20 21 #include <gtk/gtk.h> 22 #include <libecal/libecal.h> 23 24 #include <e-util/e-util.h> 25 #include <shell/e-shell.h> 26 27 #include <calendar/gui/e-comp-editor-page.h> 28 #include <calendar/gui/e-comp-editor-property-part.h> 29 30 /* Standard GObject macros */ 31 32 #define E_TYPE_COMP_EDITOR \ 33 (e_comp_editor_get_type ()) 34 #define E_COMP_EDITOR(obj) \ 35 (G_TYPE_CHECK_INSTANCE_CAST \ 36 ((obj), E_TYPE_COMP_EDITOR, ECompEditor)) 37 #define E_COMP_EDITOR_CLASS(cls) \ 38 (G_TYPE_CHECK_CLASS_CAST \ 39 ((cls), E_TYPE_COMP_EDITOR, ECompEditorClass)) 40 #define E_IS_COMP_EDITOR(obj) \ 41 (G_TYPE_CHECK_INSTANCE_TYPE \ 42 ((obj), E_TYPE_COMP_EDITOR)) 43 #define E_IS_COMP_EDITOR_CLASS(cls) \ 44 (G_TYPE_CHECK_CLASS_TYPE \ 45 ((cls), E_TYPE_COMP_EDITOR)) 46 #define E_COMP_EDITOR_GET_CLASS(obj) \ 47 (G_TYPE_INSTANCE_GET_CLASS \ 48 ((obj), E_TYPE_COMP_EDITOR, ECompEditorClass)) 49 50 G_BEGIN_DECLS 51 52 typedef enum { 53 E_COMP_EDITOR_FLAG_IS_NEW = 1 << 0, 54 E_COMP_EDITOR_FLAG_IS_ALL_DAY_EVENT = 1 << 1, 55 E_COMP_EDITOR_FLAG_WITH_ATTENDEES = 1 << 2, 56 E_COMP_EDITOR_FLAG_ORGANIZER_IS_USER = 1 << 3, 57 E_COMP_EDITOR_FLAG_DELEGATE = 1 << 4 58 } ECompEditorFlags; 59 60 typedef struct _ECompEditor ECompEditor; 61 typedef struct _ECompEditorClass ECompEditorClass; 62 typedef struct _ECompEditorPrivate ECompEditorPrivate; 63 64 struct _ECompEditor { 65 GtkWindow parent; 66 67 ECompEditorPrivate *priv; 68 }; 69 70 struct _ECompEditorClass { 71 GtkWindowClass parent_class; 72 73 const gchar *help_section; 74 const gchar *title_format_with_attendees; /* should contain only one '%s', for the component summary */ 75 const gchar *title_format_without_attendees; /* should contain only one '%s', for the component summary */ 76 const gchar *icon_name; /* to be set as window icon */ 77 78 /* Virtual functions */ 79 void (* sensitize_widgets) (ECompEditor *comp_editor, 80 gboolean force_insensitive); 81 void (* fill_widgets) (ECompEditor *comp_editor, 82 ICalComponent *component); 83 gboolean (* fill_component) (ECompEditor *comp_editor, 84 ICalComponent *component); 85 86 /* Signals */ 87 void (* times_changed) (ECompEditor *comp_editor); 88 void (* object_created) (ECompEditor *comp_editor); 89 void (* editor_closed) (ECompEditor *comp_editor, 90 gboolean saved); 91 }; 92 93 GType e_comp_editor_get_type (void) G_GNUC_CONST; 94 void e_comp_editor_sensitize_widgets (ECompEditor *comp_editor); 95 void e_comp_editor_fill_widgets (ECompEditor *comp_editor, 96 ICalComponent *component); 97 gboolean e_comp_editor_fill_component (ECompEditor *comp_editor, 98 ICalComponent *component); 99 void e_comp_editor_set_validation_error 100 (ECompEditor *comp_editor, 101 ECompEditorPage *error_page, 102 GtkWidget *error_widget, 103 const gchar *error_message); 104 EShell * e_comp_editor_get_shell (ECompEditor *comp_editor); 105 GSettings * e_comp_editor_get_settings (ECompEditor *comp_editor); 106 ESource * e_comp_editor_get_origin_source (ECompEditor *comp_editor); 107 ICalComponent * e_comp_editor_get_component (ECompEditor *comp_editor); 108 guint32 e_comp_editor_get_flags (ECompEditor *comp_editor); 109 void e_comp_editor_set_flags (ECompEditor *comp_editor, 110 guint32 flags); 111 EFocusTracker * e_comp_editor_get_focus_tracker (ECompEditor *comp_editor); 112 GtkUIManager * e_comp_editor_get_ui_manager (ECompEditor *comp_editor); 113 GtkAction * e_comp_editor_get_action (ECompEditor *comp_editor, 114 const gchar *action_name); 115 GtkActionGroup *e_comp_editor_get_action_group (ECompEditor *comp_editor, 116 const gchar *group_name); 117 GtkWidget * e_comp_editor_get_managed_widget 118 (ECompEditor *comp_editor, 119 const gchar *widget_path); 120 const gchar * e_comp_editor_get_alarm_email_address 121 (ECompEditor *comp_editor); 122 void e_comp_editor_set_alarm_email_address 123 (ECompEditor *comp_editor, 124 const gchar *alarm_email_address); 125 const gchar * e_comp_editor_get_cal_email_address 126 (ECompEditor *comp_editor); 127 void e_comp_editor_set_cal_email_address 128 (ECompEditor *comp_editor, 129 const gchar *cal_email_address); 130 gboolean e_comp_editor_get_changed (ECompEditor *comp_editor); 131 void e_comp_editor_set_changed (ECompEditor *comp_editor, 132 gboolean changed); 133 void e_comp_editor_ensure_changed (ECompEditor *comp_editor); 134 gboolean e_comp_editor_get_updating (ECompEditor *comp_editor); 135 void e_comp_editor_set_updating (ECompEditor *comp_editor, 136 gboolean updating); 137 ECalClient * e_comp_editor_get_source_client (ECompEditor *comp_editor); 138 void e_comp_editor_set_source_client (ECompEditor *comp_editor, 139 ECalClient *client); 140 ECalClient * e_comp_editor_get_target_client (ECompEditor *comp_editor); 141 void e_comp_editor_set_target_client (ECompEditor *comp_editor, 142 ECalClient *client); 143 const gchar * e_comp_editor_get_title_suffix (ECompEditor *comp_editor); 144 void e_comp_editor_set_title_suffix (ECompEditor *comp_editor, 145 const gchar *title_suffix); 146 void e_comp_editor_set_time_parts (ECompEditor *comp_editor, 147 ECompEditorPropertyPart *dtstart_part, 148 ECompEditorPropertyPart *dtend_part); 149 void e_comp_editor_get_time_parts (ECompEditor *comp_editor, 150 ECompEditorPropertyPart **out_dtstart_part, 151 ECompEditorPropertyPart **out_dtend_part); 152 void e_comp_editor_add_page (ECompEditor *comp_editor, 153 const gchar *label, 154 ECompEditorPage *page); 155 ECompEditorPage * 156 e_comp_editor_get_page (ECompEditor *comp_editor, 157 GType page_type); 158 GSList * e_comp_editor_get_pages (ECompEditor *comp_editor); 159 void e_comp_editor_select_page (ECompEditor *comp_editor, 160 ECompEditorPage *page); 161 EAlert * e_comp_editor_add_information (ECompEditor *comp_editor, 162 const gchar *primary_text, 163 const gchar *secondary_text); 164 EAlert * e_comp_editor_add_warning (ECompEditor *comp_editor, 165 const gchar *primary_text, 166 const gchar *secondary_text); 167 EAlert * e_comp_editor_add_error (ECompEditor *comp_editor, 168 const gchar *primary_text, 169 const gchar *secondary_text); 170 void e_comp_editor_ensure_start_before_end 171 (ECompEditor *comp_editor, 172 ECompEditorPropertyPart *start_datetime, 173 ECompEditorPropertyPart *end_datetime, 174 gboolean change_end_datetime); 175 ECompEditor * e_comp_editor_open_for_component 176 (GtkWindow *parent, 177 EShell *shell, 178 ESource *origin_source, 179 const ICalComponent *component, 180 guint32 flags /* bit-or of ECompEditorFlags */); 181 ECompEditor * e_comp_editor_find_existing_for (ESource *origin_source, 182 const ICalComponent *component); 183 ICalTimezone * e_comp_editor_lookup_timezone (ECompEditor *comp_editor, 184 const gchar *tzid); 185 ICalTimezone * e_comp_editor_lookup_timezone_cb(const gchar *tzid, 186 gpointer user_data, /* ECompEditor * */ 187 GCancellable *cancellable, 188 GError **error); 189 190 G_END_DECLS 191 192 #endif /* E_COMP_EDITOR_H */ 193