Changeset 1213
- Timestamp:
- 11/23/06 20:30:29
- Files:
-
- trunk/ChangeLog (modified) (2 diffs)
- trunk/libtinymailui-gtk/tny-gtk-msg-view.c (modified) (7 diffs)
- trunk/libtinymailui-gtk/tny-gtk-msg-view.h (modified) (1 diff)
- trunk/libtinymailui-gtk/tny-gtk-msg-window.c (modified) (6 diffs)
- trunk/libtinymailui-gtk/tny-gtk-msg-window.h (modified) (1 diff)
- trunk/libtinymailui-mozembed/tny-moz-embed-msg-view.c (modified) (2 diffs)
- trunk/libtinymailui-mozembed/tny-moz-embed-msg-view.h (modified) (1 diff)
- trunk/libtinymailui/tny-msg-view.c (modified) (2 diffs)
- trunk/libtinymailui/tny-msg-view.h (modified) (2 diffs)
- trunk/libtinymailui/tny-msg-window.c (modified) (1 diff)
- trunk/libtinymailui/tny-msg-window.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ChangeLog
r1212 r1213 1 2006-11-23 Philip van Hoof <pvanhoof@gnome.org> 2 3 * Major fixes and refactoring for the rfc822 support 4 * Reimplemented TnyGtkMsgWindow 5 * Added a tny_msg_view_create_new_mytype API 6 7 * This was a major API change in libtinymailui & libtinymailui-gtk 8 1 9 2006-11-23 Sergio Villar Senin <svillar@igalia.com> 2 10 * libtinymail-camel/tny-camel-folder.c: added support to rename … … 6 14 * libtinymail-gnome-desktop/tny-gnome-account-store.c: removed a small 7 15 leak 16 17 * This was a major API change in libtinymail 8 18 9 19 2006-11-21 Sergio Villar Senin <svillar@igalia.com> trunk/libtinymailui-gtk/tny-gtk-msg-view.c
r1209 r1213 323 323 324 324 325 static TnyMsgView* 326 tny_gtk_msg_view_create_new_mytype (TnyMsgView *self) 327 { 328 return TNY_GTK_MSG_VIEW_GET_CLASS (self)->create_new_mytype_func (self); 329 } 330 331 static TnyMsgView* 332 tny_gtk_msg_view_create_new_mytype_default (TnyMsgView *self) 333 { 334 return tny_gtk_msg_view_new (); 335 } 336 325 337 static TnyMimePartView* 326 338 tny_gtk_msg_view_create_mime_part_view_for (TnyMsgView *self, TnyMimePart *part) … … 351 363 } else if (priv->display_rfc822 && tny_mime_part_content_type_is (part, "message/rfc822")) 352 364 { 353 retval = TNY_MIME_PART_VIEW (tny_ gtk_msg_view_new ());365 retval = TNY_MIME_PART_VIEW (tny_msg_view_create_new_mytype (self)); 354 366 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (retval), 355 367 GTK_POLICY_NEVER, GTK_POLICY_NEVER); … … 389 401 tny_mime_part_view_proxy_func_set_part (TnyMimePartView *mpview, TnyMimePart *part) 390 402 { 391 if (tny_mime_part_content_type_is (part, "message/rfc822")) 403 404 if (tny_mime_part_content_type_is (part, "message/rfc822") || 405 TNY_IS_GTK_MSG_VIEW (mpview)) 392 406 { 393 407 TnyList *list = tny_simple_list_new (); 394 395 408 if (TNY_IS_MSG (part) && TNY_IS_GTK_MSG_VIEW (mpview)) 396 409 { … … 441 454 !TNY_IS_GTK_TEXT_MIME_PART_VIEW (mpview)) 442 455 { 443 /* An enhanced HTML component? */456 444 457 if (priv->text_body_viewer) 445 458 { … … 492 505 tny_mime_part_view_proxy_func_set_part (mpview, part); 493 506 } 494 } 507 } else if (!tny_mime_part_content_type_is (part, "multipart/mixed")) 508 g_warning (_("I don't have a mime part viewer for %s\n"), 509 tny_mime_part_get_content_type (part)); 495 510 } 496 511 … … 753 768 klass->clear_func = tny_gtk_msg_view_clear; 754 769 klass->create_mime_part_view_for_func = tny_gtk_msg_view_create_mime_part_view_for; 770 klass->create_new_mytype_func = tny_gtk_msg_view_create_new_mytype; 755 771 756 772 return; … … 788 804 class->clear_func = tny_gtk_msg_view_clear_default; 789 805 class->create_mime_part_view_for_func = tny_gtk_msg_view_create_mime_part_view_for_default; 790 806 class->create_new_mytype_func = tny_gtk_msg_view_create_new_mytype_default; 807 791 808 g_type_class_add_private (object_class, sizeof (TnyGtkMsgViewPriv)); 792 809 trunk/libtinymailui-gtk/tny-gtk-msg-view.h
r1192 r1213 60 60 void (*clear_func) (TnyMsgView *self); 61 61 TnyMimePartView* (*create_mime_part_view_for_func) (TnyMsgView *self, TnyMimePart *part); 62 TnyMsgView* (*create_new_mytype_func) (TnyMsgView *self); 63 62 64 }; 63 65 trunk/libtinymailui-gtk/tny-gtk-msg-window.c
r1107 r1213 91 91 } 92 92 93 94 95 96 static void 97 tny_gtk_msg_window_clear (TnyMsgView *self) 98 { 99 return TNY_GTK_MSG_WINDOW_GET_CLASS (self)->clear_func (self); 100 } 101 102 static void 103 tny_gtk_msg_window_clear_default (TnyMsgView *self) 104 { 105 TnyGtkMsgWindowPriv *priv = TNY_GTK_MSG_WINDOW_GET_PRIVATE (self); 106 107 tny_msg_view_clear (priv->msg_view); 108 109 return; 110 } 111 112 static TnyMsgView* 113 tny_gtk_msg_window_create_new_mytype (TnyMsgView *self) 114 { 115 return TNY_GTK_MSG_WINDOW_GET_CLASS (self)->create_new_mytype_func (self); 116 } 117 118 static TnyMsgView* 119 tny_gtk_msg_window_create_new_mytype_default (TnyMsgView *self) 120 { 121 TnyGtkMsgWindowPriv *priv = TNY_GTK_MSG_WINDOW_GET_PRIVATE (self); 122 123 /* This should not be a window, but the decorated one, as it has to be 124 embeddable within a window. So we even decorate this one as usual. */ 125 126 return tny_msg_view_create_new_mytype (priv->msg_view); 127 } 128 129 static TnyMimePartView* 130 tny_gtk_msg_window_create_mime_part_view_for (TnyMsgView *self, TnyMimePart *part) 131 { 132 return TNY_GTK_MSG_WINDOW_GET_CLASS (self)->create_mime_part_view_for_func (self, part); 133 } 134 135 static TnyMimePartView* 136 tny_gtk_msg_window_create_mime_part_view_for_default (TnyMsgView *self, TnyMimePart *part) 137 { 138 TnyGtkMsgWindowPriv *priv = TNY_GTK_MSG_WINDOW_GET_PRIVATE (self); 139 140 return tny_msg_view_create_mime_part_view_for (priv->msg_view, part); 141 } 142 143 144 145 static void 146 tny_gtk_msg_window_mp_clear (TnyMimePartView *self) 147 { 148 tny_msg_view_clear (TNY_MSG_VIEW (self)); 149 150 return; 151 } 152 153 154 static void 155 tny_gtk_msg_window_mp_set_part (TnyMimePartView *self, TnyMimePart *part) 156 { 157 TNY_GTK_MSG_WINDOW_GET_CLASS (self)->set_part_func (self, part); 158 return; 159 } 160 161 162 static void 163 tny_gtk_msg_window_mp_set_part_default (TnyMimePartView *self, TnyMimePart *part) 164 { 165 TnyGtkMsgWindowPriv *priv = TNY_GTK_MSG_WINDOW_GET_PRIVATE (self); 166 167 tny_mime_part_view_set_part (TNY_MIME_PART_VIEW (priv->msg_view), part); 168 169 return; 170 } 171 172 173 static TnyMimePart* 174 tny_gtk_msg_window_mp_get_part (TnyMimePartView *self) 175 { 176 return TNY_GTK_MSG_WINDOW_GET_CLASS (self)->get_part_func (self); 177 } 178 179 180 static TnyMimePart* 181 tny_gtk_msg_window_mp_get_part_default (TnyMimePartView *self) 182 { 183 TnyGtkMsgWindowPriv *priv = TNY_GTK_MSG_WINDOW_GET_PRIVATE (self); 184 185 return tny_mime_part_view_get_part (TNY_MIME_PART_VIEW (priv->msg_view)); 186 } 187 188 93 189 /** 94 190 * tny_gtk_msg_window_new: … … 128 224 tny_gtk_msg_window_finalize (GObject *object) 129 225 { 130 /* Finalization of a GtkWidet removes references */131 132 226 (*parent_class->finalize) (object); 133 227 … … 136 230 137 231 static void 138 tny_ gtk_msg_window_init (gpointer g, gpointer iface_data)139 { 140 return; 141 } 142 143 144 static void 145 tny_ gtk_msg_view_init (gpointer g, gpointer iface_data)232 tny_msg_window_init (gpointer g, gpointer iface_data) 233 { 234 return; 235 } 236 237 238 static void 239 tny_msg_view_init (gpointer g, gpointer iface_data) 146 240 { 147 241 TnyMsgViewIface *klass = (TnyMsgViewIface *)g; … … 150 244 klass->set_msg_func = tny_gtk_msg_window_set_msg; 151 245 klass->set_unavailable_func = tny_gtk_msg_window_set_unavailable; 246 klass->clear_func = tny_gtk_msg_window_clear; 247 248 return; 249 } 250 251 static void 252 tny_mime_part_view_init (gpointer g, gpointer iface_data) 253 { 254 TnyMimePartViewIface *klass = (TnyMimePartViewIface *)g; 255 256 klass->get_part_func = tny_gtk_msg_window_mp_get_part; 257 klass->set_part_func = tny_gtk_msg_window_mp_set_part; 258 klass->clear_func = tny_gtk_msg_window_mp_clear; 152 259 153 260 return; … … 165 272 class->set_msg_func = tny_gtk_msg_window_set_msg_default; 166 273 class->set_unavailable_func = tny_gtk_msg_window_set_unavailable_default; 274 class->clear_func = tny_gtk_msg_window_clear_default; 275 class->create_new_mytype_func = tny_gtk_msg_window_create_new_mytype_default; 276 class->create_mime_part_view_for_func = tny_gtk_msg_window_create_mime_part_view_for_default; 277 278 class->get_part_func = tny_gtk_msg_window_mp_get_part_default; 279 class->set_part_func = tny_gtk_msg_window_mp_set_part_default; 167 280 168 281 object_class->finalize = tny_gtk_msg_window_finalize; … … 194 307 }; 195 308 196 static const GInterfaceInfo tny_ gtk_msg_window_info =309 static const GInterfaceInfo tny_msg_window_info = 197 310 { 198 (GInterfaceInitFunc) tny_ gtk_msg_window_init, /* interface_init */311 (GInterfaceInitFunc) tny_msg_window_init, /* interface_init */ 199 312 NULL, /* interface_finalize */ 200 313 NULL /* interface_data */ 201 314 }; 202 315 203 static const GInterfaceInfo tny_ gtk_msg_view_info =316 static const GInterfaceInfo tny_msg_view_info = 204 317 { 205 (GInterfaceInitFunc) tny_ gtk_msg_view_init, /* interface_init */318 (GInterfaceInitFunc) tny_msg_view_init, /* interface_init */ 206 319 NULL, /* interface_finalize */ 207 320 NULL /* interface_data */ 208 321 }; 209 322 323 static const GInterfaceInfo tny_mime_part_view_info = 324 { 325 (GInterfaceInitFunc) tny_mime_part_view_init, /* interface_init */ 326 NULL, /* interface_finalize */ 327 NULL /* interface_data */ 328 }; 329 210 330 type = g_type_register_static (GTK_TYPE_WINDOW, 211 331 "TnyGtkMsgWindow", 212 332 &info, 0); 213 333 334 g_type_add_interface_static (type, TNY_TYPE_MIME_PART_VIEW, 335 &tny_mime_part_view_info); 336 214 337 g_type_add_interface_static (type, TNY_TYPE_MSG_VIEW, 215 &tny_ gtk_msg_view_info);338 &tny_msg_view_info); 216 339 217 340 g_type_add_interface_static (type, TNY_TYPE_MSG_WINDOW, 218 &tny_ gtk_msg_window_info);341 &tny_msg_window_info); 219 342 220 343 } trunk/libtinymailui-gtk/tny-gtk-msg-window.h
r1097 r1213 59 59 void (*clear_func) (TnyMsgView *self); 60 60 TnyMimePartView* (*create_mime_part_view_for_func) (TnyMsgView *self, TnyMimePart *part); 61 TnyMsgView* (*create_new_mytype_func) (TnyMsgView *self); 62 TnyMimePart* (*get_part_func) (TnyMimePartView *self); 63 void (*set_part_func) (TnyMimePartView *self, TnyMimePart *part); 61 64 }; 62 65 trunk/libtinymailui-mozembed/tny-moz-embed-msg-view.c
r1192 r1213 107 107 108 108 109 110 static TnyMsgView* 111 tny_moz_embed_msg_view_create_new_mytype (TnyMsgView *self) 112 { 113 return TNY_MOZ_EMBED_MSG_VIEW_GET_CLASS (self)->create_new_mytype_func (self); 114 } 115 116 static TnyMsgView* 117 tny_moz_embed_msg_view_create_new_mytype_default (TnyMsgView *self) 118 { 119 return tny_moz_embed_msg_view_new (); 120 } 121 122 109 123 static void 110 124 tny_moz_embed_msg_view_class_init (TnyMozEmbedMsgViewClass *class) … … 116 130 117 131 class->create_mime_part_view_for_func = tny_moz_embed_msg_view_create_mime_part_view_for_default; 132 class->create_new_mytype_func = tny_moz_embed_msg_view_create_new_mytype_default; 118 133 119 134 object_class->finalize = tny_moz_embed_msg_view_finalize; 120 135 121 136 TNY_GTK_MSG_VIEW_CLASS (class)->create_mime_part_view_for_func = tny_moz_embed_msg_view_create_mime_part_view_for; 137 TNY_GTK_MSG_VIEW_CLASS (class)->create_new_mytype_func = tny_moz_embed_msg_view_create_new_mytype; 122 138 123 139 return; trunk/libtinymailui-mozembed/tny-moz-embed-msg-view.h
r1155 r1213 49 49 /* virtual methods */ 50 50 TnyMimePartView* (*create_mime_part_view_for_func) (TnyMsgView *self, TnyMimePart *part); 51 TnyMsgView* (*create_new_mytype_func) (TnyMsgView *self); 51 52 }; 52 53 trunk/libtinymailui/tny-msg-view.c
r1198 r1213 21 21 22 22 #include <tny-msg-view.h> 23 24 /** 25 * tny_msg_view_create_new_mytype: 26 * @self: A #TnyMsgView instance 27 * 28 * Create a new instance of the same type as @self. 29 * 30 * Implementors: This method should create and return a new #TnyMsgView instance 31 * of the same type as @self. This method will be used when a #TnyMsgView needs 32 * to create a new instance of itself to display inlined messages (like what 33 * message/rfc822 mime parts are). For example the #TnyGtkMsgView implementation 34 * will use this method to create for itself a new #TnyMsgView instance that it 35 * can embed. 36 * 37 * Example: 38 * <informalexample><programlisting> 39 * static TnyMsgView* 40 * tny_my_html_msg_view_create_new_mytype (TnyMsgView *self) 41 * { 42 * return tny_my_html_msg_view_new (); 43 * } 44 * </programlisting></informalexample> 45 * 46 * Note that if you want to pass contructor parameters, that you will have to 47 * store them yourself (for example in a static global field in the .c file) and 48 * repeat them in the new instance that will be created by this method. 49 * 50 * Return value: A #TnyMsgView instance 51 **/ 52 TnyMsgView* 53 tny_msg_view_create_new_mytype (TnyMsgView *self) 54 { 55 #ifdef DEBUG 56 if (!TNY_MSG_VIEW_GET_IFACE (self)->create_new_mytype_func) 57 g_critical ("You must implement tny_msg_view_create_new_mytype\n"); 58 #endif 59 60 return TNY_MSG_VIEW_GET_IFACE (self)->create_new_mytype_func (self); 61 } 23 62 24 63 /** … … 235 274 type = g_type_register_static (G_TYPE_INTERFACE, 236 275 "TnyMsgView", &info, 0); 276 277 g_type_interface_add_prerequisite (type, TNY_TYPE_MIME_PART_VIEW); 278 237 279 } 238 280 trunk/libtinymailui/tny-msg-view.h
r998 r1213 47 47 void (*clear_func) (TnyMsgView *self); 48 48 TnyMimePartView* (*create_mime_part_view_for_func) (TnyMsgView *self, TnyMimePart *part); 49 TnyMsgView* (*create_new_mytype_func) (TnyMsgView *self); 49 50 }; 50 51 … … 55 56 void tny_msg_view_set_unavailable (TnyMsgView *self); 56 57 TnyMimePartView* tny_msg_view_create_mime_part_view_for (TnyMsgView *self, TnyMimePart *part); 58 TnyMsgView* tny_msg_view_create_new_mytype (TnyMsgView *self); 57 59 58 60 G_END_DECLS trunk/libtinymailui/tny-msg-window.c
r900 r1213 53 53 NULL /* instance_init */ 54 54 }; 55 55 56 type = g_type_register_static (G_TYPE_INTERFACE, 56 57 "TnyMsgWindow", &info, 0); 57 58 58 g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);59 g_type_interface_add_prerequisite (type, TNY_TYPE_MSG_VIEW); 59 60 } 60 61 trunk/libtinymailui/tny-msg-window.h
r900 r1213 24 24 #include <glib-object.h> 25 25 #include <tny-shared.h> 26 #include <tny-msg-view.h> 26 27 27 28 G_BEGIN_DECLS
