diff options
author | JP Rosevear <jpr@ximian.com> | 2001-10-31 00:09:14 +0800 |
---|---|---|
committer | JP Rosevear <jpr@src.gnome.org> | 2001-10-31 00:09:14 +0800 |
commit | b57629aa8243f9123706c770843e99fefced824c (patch) | |
tree | c26157218acb1f18b79ce8a57c83b9adb6bfcbc6 /calendar/gui/e-meeting-model.c | |
parent | 4ec29933d911ca99f4d762747224c89bffce9c1b (diff) | |
download | gsoc2013-evolution-b57629aa8243f9123706c770843e99fefced824c.tar gsoc2013-evolution-b57629aa8243f9123706c770843e99fefced824c.tar.gz gsoc2013-evolution-b57629aa8243f9123706c770843e99fefced824c.tar.bz2 gsoc2013-evolution-b57629aa8243f9123706c770843e99fefced824c.tar.lz gsoc2013-evolution-b57629aa8243f9123706c770843e99fefced824c.tar.xz gsoc2013-evolution-b57629aa8243f9123706c770843e99fefced824c.tar.zst gsoc2013-evolution-b57629aa8243f9123706c770843e99fefced824c.zip |
count the actual attendees (doesn't include people delegating
2001-10-30 JP Rosevear <jpr@ximian.com>
* gui/e-meeting-model.c (e_meeting_model_count_actual_attendees):
count the actual attendees (doesn't include people delegating
* gui/e-meeting-time-sel.c: use
e_meeting_model_count_actual_attendees (renamed)
* gui/e-meeting-time-sel-item.c: use
e_meeting_model_etable_view_to_model_row calls instead of calling
on the model directly, use e_meeting_model_count_actual_attendees
* gui/e-meeting-model.c
(e_meeting_model_etable_model_to_view_row): get the real mapping
(e_meeting_model_etable_view_to_model_row): ditto
(get_key): e-table-without callback
(duplicate_key): ditto
(free_gotten_key): ditto
(free_duplicated_key): ditto
(init): create without model
(e_meeting_model_etable_from_model): build etable from without
model
* gui/e-meeting-model.h: update protos
* gui/dialogs/meeting-page.c (right_click_cb): convert row from
view to model row
svn path=/trunk/; revision=14462
Diffstat (limited to 'calendar/gui/e-meeting-model.c')
-rw-r--r-- | calendar/gui/e-meeting-model.c | 94 |
1 files changed, 88 insertions, 6 deletions
diff --git a/calendar/gui/e-meeting-model.c b/calendar/gui/e-meeting-model.c index d57da3b78a..e6ecadbf46 100644 --- a/calendar/gui/e-meeting-model.c +++ b/calendar/gui/e-meeting-model.c @@ -33,6 +33,7 @@ #include <libgnome/gnome-i18n.h> #include <libgnome/gnome-util.h> #include <libgnomevfs/gnome-vfs.h> +#include <gal/e-table/e-table-without.h> #include <gal/e-table/e-cell-text.h> #include <gal/e-table/e-cell-popup.h> #include <gal/e-table/e-cell-combo.h> @@ -71,7 +72,8 @@ enum columns { struct _EMeetingModelPrivate { GPtrArray *attendees; - + ETableWithout *without; + CalClient *client; EBook *ebook; @@ -573,6 +575,40 @@ value_to_string (ETableModel *etm, int col, const void *val) return g_strdup (val); } +static void * +get_key (ETableModel *source, int row, gpointer data) +{ + EMeetingModel *im; + EMeetingModelPrivate *priv; + char *str; + + im = E_MEETING_MODEL (source); + priv = im->priv; + + str = value_at (source, ITIP_DELTO_COL, row); + if (str && *str) + return g_strdup ("delegator"); + + return g_strdup ("none"); +} + +static void * +duplicate_key (const void *key, gpointer data) +{ + return g_strdup (key); +} + +static void +free_gotten_key (void *key, gpointer data) +{ + g_free (key); +} + +static void +free_duplicated_key (void *key, gpointer data) +{ + g_free (key); +} static void class_init (EMeetingModelClass *klass) @@ -611,6 +647,16 @@ init (EMeetingModel *im) im->priv = priv; priv->attendees = g_ptr_array_new (); + + priv->without = E_TABLE_WITHOUT (e_table_without_new (E_TABLE_MODEL (im), + g_str_hash, + g_str_equal, + get_key, + duplicate_key, + free_gotten_key, + free_duplicated_key, + NULL)); + e_table_without_hide (priv->without, g_strdup ("delegator")); priv->client = NULL; @@ -892,20 +938,25 @@ EMeetingAttendee * e_meeting_model_find_attendee_at_row (EMeetingModel *im, gint row) { EMeetingModelPrivate *priv; - + + g_return_val_if_fail (im != NULL, NULL); + g_return_val_if_fail (E_IS_MEETING_MODEL (im), NULL); + g_return_val_if_fail (row >= 0, NULL); + priv = im->priv; - + g_return_val_if_fail (row < priv->attendees->len, NULL); + return g_ptr_array_index (priv->attendees, row); } gint -e_meeting_model_count_attendees (EMeetingModel *im) +e_meeting_model_count_actual_attendees (EMeetingModel *im) { EMeetingModelPrivate *priv; priv = im->priv; - return priv->attendees->len; + return e_table_model_row_count (E_TABLE_MODEL (priv->without)); } const GPtrArray * @@ -1330,12 +1381,43 @@ e_meeting_model_refresh_busy_periods (EMeetingModel *im, EMeetingModelRefreshCal ETableScrolled * e_meeting_model_etable_from_model (EMeetingModel *im, const gchar *spec_file, const gchar *state_file) { + EMeetingModelPrivate *priv; + g_return_val_if_fail (im != NULL, NULL); g_return_val_if_fail (E_IS_MEETING_MODEL (im), NULL); - return build_etable (E_TABLE_MODEL (im), spec_file, state_file); + priv = im->priv; + + return build_etable (E_TABLE_MODEL (priv->without), spec_file, state_file); +} + +int +e_meeting_model_etable_model_to_view_row (EMeetingModel *im, int model_row) +{ + EMeetingModelPrivate *priv; + + g_return_val_if_fail (im != NULL, -1); + g_return_val_if_fail (E_IS_MEETING_MODEL (im), -1); + + priv = im->priv; + + return e_table_subset_model_to_view_row (priv->without, model_row); +} + +int +e_meeting_model_etable_view_to_model_row (EMeetingModel *im, int view_row) +{ + EMeetingModelPrivate *priv; + + g_return_val_if_fail (im != NULL, -1); + g_return_val_if_fail (E_IS_MEETING_MODEL (im), -1); + + priv = im->priv; + + return e_table_subset_view_to_model_row (priv->without, view_row); } + static void add_section (GNOME_Evolution_Addressbook_SelectNames corba_select_names, const char *name) { |