2 * Evolution memos - Data model for ETable
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation.
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
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program; if not, see <http://www.gnu.org/licenses/>.
18 * Rodrigo Moya <rodrigo@ximian.com>
19 * Nathan Owens <pianocomp81@yahoo.com>
21 * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
25 #include "evolution-config.h"
28 #include <glib/gi18n.h>
29 #include "e-cal-model-memos.h"
30 #include "e-cell-date-edit-text.h"
35 /* Forward Declarations */
36 static void e_cal_model_memos_table_model_init
37 (ETableModelInterface
*iface
);
39 static ETableModelInterface
*table_model_parent_interface
;
41 G_DEFINE_TYPE_WITH_CODE (
45 G_IMPLEMENT_INTERFACE (
47 e_cal_model_memos_table_model_init
))
50 cal_model_memos_store_values_from_model (ECalModel
*model
,
51 ETableModel
*source_model
,
55 g_return_if_fail (E_IS_CAL_MODEL_MEMOS (model
));
56 g_return_if_fail (E_IS_TABLE_MODEL (source_model
));
57 g_return_if_fail (values
!= NULL
);
59 /* nothing is stored from UI currently */
63 cal_model_memos_fill_component_from_values (ECalModel
*model
,
64 ECalModelComponent
*comp_data
,
69 g_return_if_fail (E_IS_CAL_MODEL_MEMOS (model
));
70 g_return_if_fail (comp_data
!= NULL
);
71 g_return_if_fail (values
!= NULL
);
73 start
= icalcomponent_get_dtstart (comp_data
->icalcomp
);
74 if (icaltime_compare_date_only (start
, icaltime_null_time ()) == 0) {
75 start
= icaltime_today ();
76 icalcomponent_set_dtstart (comp_data
->icalcomp
, start
);
81 cal_model_memos_column_count (ETableModel
*etm
)
83 return E_CAL_MODEL_MEMOS_FIELD_LAST
;
87 cal_model_memos_value_at (ETableModel
*etm
,
91 ECalModelComponent
*comp_data
;
92 ECalModelMemos
*model
= (ECalModelMemos
*) etm
;
94 g_return_val_if_fail (E_IS_CAL_MODEL_MEMOS (model
), NULL
);
96 g_return_val_if_fail (col
>= 0 && col
< E_CAL_MODEL_MEMOS_FIELD_LAST
, NULL
);
97 g_return_val_if_fail (row
>= 0 && row
< e_table_model_row_count (etm
), NULL
);
99 if (col
< E_CAL_MODEL_FIELD_LAST
)
100 return table_model_parent_interface
->value_at (etm
, col
, row
);
102 comp_data
= e_cal_model_get_component_at (E_CAL_MODEL (model
), row
);
104 return (gpointer
) "";
106 return (gpointer
) "";
110 cal_model_memos_set_value_at (ETableModel
*etm
,
115 ECalModelComponent
*comp_data
;
116 ECalModelMemos
*model
= (ECalModelMemos
*) etm
;
118 g_return_if_fail (E_IS_CAL_MODEL_MEMOS (model
));
119 g_return_if_fail (col
>= 0 && col
< E_CAL_MODEL_MEMOS_FIELD_LAST
);
120 g_return_if_fail (row
>= 0 && row
< e_table_model_row_count (etm
));
122 if (col
< E_CAL_MODEL_FIELD_LAST
) {
123 table_model_parent_interface
->set_value_at (etm
, col
, row
, value
);
127 comp_data
= e_cal_model_get_component_at (E_CAL_MODEL (model
), row
);
129 g_warning ("couldn't get component data: row == %d", row
);
133 e_cal_model_modify_component (E_CAL_MODEL (model
), comp_data
, E_CAL_OBJ_MOD_ALL
);
137 cal_model_memos_is_cell_editable (ETableModel
*etm
,
141 ECalModelMemos
*model
= (ECalModelMemos
*) etm
;
142 gboolean retval
= FALSE
;
144 g_return_val_if_fail (E_IS_CAL_MODEL_MEMOS (model
), FALSE
);
145 g_return_val_if_fail (col
>= 0 && col
< E_CAL_MODEL_MEMOS_FIELD_LAST
, FALSE
);
146 g_return_val_if_fail (row
>= -1 || (row
>= 0 && row
< e_table_model_row_count (etm
)), FALSE
);
148 if (!e_cal_model_test_row_editable (E_CAL_MODEL (etm
), row
))
151 if (col
< E_CAL_MODEL_FIELD_LAST
)
152 retval
= table_model_parent_interface
->is_cell_editable (etm
, col
, row
);
158 cal_model_memos_duplicate_value (ETableModel
*etm
,
162 g_return_val_if_fail (col
>= 0 && col
< E_CAL_MODEL_MEMOS_FIELD_LAST
, NULL
);
164 if (col
< E_CAL_MODEL_FIELD_LAST
)
165 return table_model_parent_interface
->duplicate_value (etm
, col
, value
);
171 cal_model_memos_free_value (ETableModel
*etm
,
175 g_return_if_fail (col
>= 0 && col
< E_CAL_MODEL_MEMOS_FIELD_LAST
);
177 if (col
< E_CAL_MODEL_FIELD_LAST
) {
178 table_model_parent_interface
->free_value (etm
, col
, value
);
184 cal_model_memos_initialize_value (ETableModel
*etm
,
187 g_return_val_if_fail (col
>= 0 && col
< E_CAL_MODEL_MEMOS_FIELD_LAST
, NULL
);
189 if (col
< E_CAL_MODEL_FIELD_LAST
)
190 return table_model_parent_interface
->initialize_value (etm
, col
);
196 cal_model_memos_value_is_empty (ETableModel
*etm
,
200 g_return_val_if_fail (col
>= 0 && col
< E_CAL_MODEL_MEMOS_FIELD_LAST
, TRUE
);
202 if (col
< E_CAL_MODEL_FIELD_LAST
)
203 return table_model_parent_interface
->value_is_empty (etm
, col
, value
);
209 cal_model_memos_value_to_string (ETableModel
*etm
,
213 g_return_val_if_fail (col
>= 0 && col
< E_CAL_MODEL_MEMOS_FIELD_LAST
, g_strdup (""));
215 if (col
< E_CAL_MODEL_FIELD_LAST
)
216 return table_model_parent_interface
->value_to_string (etm
, col
, value
);
218 return g_strdup ("");
222 e_cal_model_memos_class_init (ECalModelMemosClass
*class)
224 ECalModelClass
*model_class
;
226 model_class
= E_CAL_MODEL_CLASS (class);
227 model_class
->store_values_from_model
= cal_model_memos_store_values_from_model
;
228 model_class
->fill_component_from_values
= cal_model_memos_fill_component_from_values
;
232 e_cal_model_memos_table_model_init (ETableModelInterface
*iface
)
234 table_model_parent_interface
=
235 g_type_interface_peek_parent (iface
);
237 iface
->column_count
= cal_model_memos_column_count
;
239 iface
->value_at
= cal_model_memos_value_at
;
240 iface
->set_value_at
= cal_model_memos_set_value_at
;
241 iface
->is_cell_editable
= cal_model_memos_is_cell_editable
;
243 iface
->duplicate_value
= cal_model_memos_duplicate_value
;
244 iface
->free_value
= cal_model_memos_free_value
;
245 iface
->initialize_value
= cal_model_memos_initialize_value
;
246 iface
->value_is_empty
= cal_model_memos_value_is_empty
;
247 iface
->value_to_string
= cal_model_memos_value_to_string
;
251 e_cal_model_memos_init (ECalModelMemos
*model
)
253 e_cal_model_set_component_kind (
254 E_CAL_MODEL (model
), ICAL_VJOURNAL_COMPONENT
);
258 e_cal_model_memos_new (ECalDataModel
*data_model
,
259 ESourceRegistry
*registry
,
262 g_return_val_if_fail (E_IS_CAL_DATA_MODEL (data_model
), NULL
);
263 g_return_val_if_fail (E_IS_SOURCE_REGISTRY (registry
), NULL
);
264 g_return_val_if_fail (E_IS_SHELL (shell
), NULL
);
266 return g_object_new (
267 E_TYPE_CAL_MODEL_MEMOS
,
268 "data-model", data_model
,
269 "registry", registry
,