diff options
author | JP Rosevear <jpr@ximian.com> | 2003-05-02 20:37:17 +0800 |
---|---|---|
committer | JP Rosevear <jpr@src.gnome.org> | 2003-05-02 20:37:17 +0800 |
commit | cde584d3484348fd434d22b853292e93b4134a2c (patch) | |
tree | 9dd21dc201436f4e65d24b31797d598a560ca09b /calendar/gui/e-meeting-model.c | |
parent | ce850eda80ba927be45a5c559a38a8b18cbc53aa (diff) | |
download | gsoc2013-evolution-cde584d3484348fd434d22b853292e93b4134a2c.tar.gz gsoc2013-evolution-cde584d3484348fd434d22b853292e93b4134a2c.tar.zst gsoc2013-evolution-cde584d3484348fd434d22b853292e93b4134a2c.zip |
unref the model again (task_editor_edit_comp): don't allow editing if the
2003-05-01 JP Rosevear <jpr@ximian.com>
* gui/dialogs/task-editor.c (task_editor_finalize): unref the
model again
(task_editor_edit_comp): don't allow editing if the assignee has
delegated
* gui/dialogs/meeting-page.c (popup_delete_cb): set the new
non-delegator to be editable
* gui/dialogs/event-editor.c (event_editor_edit_comp): don't allow
editing if the attendee has delegated
(event_editor_finalize): unref the model again
* gui/e-meeting-model.c: remove e-table-without related functions
(finalize): don't create without table
(e_meeting_model_etable_from_model): build the table with this as
model
(e_meeting_model_etable_model_to_view_row): directly use the
model_to_view call
(e_meeting_model_etable_view_to_model_row): as above
(attendee_changed_cb): make sure pre change is alwasy called
* gui/e-meeting-model.h: use DECLS, remove protos for long dead
functions, don't include config.h
svn path=/trunk/; revision=21045
Diffstat (limited to 'calendar/gui/e-meeting-model.c')
-rw-r--r-- | calendar/gui/e-meeting-model.c | 90 |
1 files changed, 15 insertions, 75 deletions
diff --git a/calendar/gui/e-meeting-model.c b/calendar/gui/e-meeting-model.c index ce6142fc7a..dddc1f2f25 100644 --- a/calendar/gui/e-meeting-model.c +++ b/calendar/gui/e-meeting-model.c @@ -56,9 +56,7 @@ struct _EMeetingModelPrivate { GPtrArray *attendees; - GList *edit_rows; - ETableWithout *without; GList *tables; CalClient *client; @@ -576,41 +574,6 @@ 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, E_MEETING_MODEL_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) { @@ -649,20 +612,6 @@ init (EMeetingModel *im) 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, "delegator"); - - /* FIXME We basically sink a ref otherwise the without table - * will own a ref to us and we will never get finalized */ - g_object_unref (im); - priv->tables = NULL; priv->client = NULL; @@ -881,7 +830,7 @@ e_meeting_model_add_attendee (EMeetingModel *im, EMeetingAttendee *ia) g_object_ref (ia); g_ptr_array_add (priv->attendees, ia); - + g_signal_connect (ia, "changed", G_CALLBACK (attendee_changed_cb), im); e_table_model_row_inserted (E_TABLE_MODEL (im), row_count (E_TABLE_MODEL (im)) - 1); @@ -930,13 +879,13 @@ e_meeting_model_remove_attendee (EMeetingModel *im, EMeetingAttendee *ia) gint i, row = -1; priv = im->priv; - + for (i = 0; i < priv->attendees->len; i++) { if (ia == g_ptr_array_index (priv->attendees, i)) { row = i; break; } - } + } if (row != -1) { e_table_model_pre_change (E_TABLE_MODEL (im)); @@ -964,8 +913,8 @@ e_meeting_model_remove_all_attendees (EMeetingModel *im) EMeetingAttendee *ia = g_ptr_array_index (priv->attendees, i); g_object_unref (ia); } - g_ptr_array_set_size (priv->attendees, 0); + e_table_model_rows_deleted (E_TABLE_MODEL (im), 0, len); } @@ -1020,7 +969,7 @@ e_meeting_model_count_actual_attendees (EMeetingModel *im) priv = im->priv; - return e_table_model_row_count (E_TABLE_MODEL (priv->without)); + return e_table_model_row_count (E_TABLE_MODEL (im)); } const GPtrArray * @@ -1543,7 +1492,7 @@ e_meeting_model_etable_from_model (EMeetingModel *im, const gchar *spec_file, co priv = im->priv; - ets = build_etable (E_TABLE_MODEL (priv->without), spec_file, state_file); + ets = build_etable (E_TABLE_MODEL (im), spec_file, state_file); priv->tables = g_list_prepend (priv->tables, ets); @@ -1578,36 +1527,26 @@ int e_meeting_model_etable_model_to_view_row (ETable *et, EMeetingModel *im, int model_row) { EMeetingModelPrivate *priv; - int row; g_return_val_if_fail (im != NULL, -1); g_return_val_if_fail (E_IS_MEETING_MODEL (im), -1); priv = im->priv; - row = e_table_model_to_view_row (et, model_row); - if (row == -1) - return -1; - - return e_table_subset_model_to_view_row (E_TABLE_SUBSET (priv->without), row); + return e_table_model_to_view_row (et, model_row); } int e_meeting_model_etable_view_to_model_row (ETable *et, EMeetingModel *im, int view_row) { EMeetingModelPrivate *priv; - int row; g_return_val_if_fail (im != NULL, -1); g_return_val_if_fail (E_IS_MEETING_MODEL (im), -1); priv = im->priv; - row = e_table_view_to_model_row (et, view_row); - if (row == -1) - return -1; - - return e_table_subset_view_to_model_row (E_TABLE_SUBSET (priv->without), row); + return e_table_view_to_model_row (et, view_row); } @@ -1804,6 +1743,10 @@ attendee_changed_cb (EMeetingAttendee *ia, gpointer data) priv = im->priv; + /* FIXME: Ideally I think you are supposed to call pre_change() before + the data structures are changed. */ + e_table_model_pre_change (E_TABLE_MODEL (im)); + for (i = 0; i < priv->attendees->len; i++) { if (ia == g_ptr_array_index (priv->attendees, i)) { row = i; @@ -1812,12 +1755,9 @@ attendee_changed_cb (EMeetingAttendee *ia, gpointer data) } if (row == -1) - return; - - /* FIXME: Ideally I think you are supposed to call pre_change() before - the data structures are changed. */ - e_table_model_pre_change (E_TABLE_MODEL (im)); - e_table_model_row_changed (E_TABLE_MODEL (im), row); + e_table_model_no_change (E_TABLE_MODEL (im)); + else + e_table_model_row_changed (E_TABLE_MODEL (im), row); } static void |