Changeset 1428
- Timestamp:
- 01/17/07 22:15:30
- Files:
-
- trunk/ChangeLog (modified) (1 diff)
- trunk/bindings/python/Makefile.am (modified) (3 diffs)
- trunk/bindings/python/tinymail-camel.override (modified) (1 diff)
- trunk/bindings/python/tinymail.override (modified) (1 diff)
- trunk/bindings/python/tinymailui-gtk.override (modified) (1 diff)
- trunk/libtinymail-camel/tny-camel-folder-priv.h (modified) (1 diff)
- trunk/libtinymail-camel/tny-camel-folder.c (modified) (7 diffs)
- trunk/libtinymail-camel/tny-camel-folder.h (modified) (1 diff)
- trunk/libtinymail/Makefile.am (modified) (2 diffs)
- trunk/libtinymail/tny-folder-change.c (added)
- trunk/libtinymail/tny-folder-change.h (added)
- trunk/libtinymail/tny-folder-monitor.c (added)
- trunk/libtinymail/tny-folder-monitor.h (added)
- trunk/libtinymail/tny-folder-observer.c (added)
- trunk/libtinymail/tny-folder-observer.h (added)
- trunk/libtinymail/tny-folder.c (modified) (1 diff)
- trunk/libtinymail/tny-folder.h (modified) (3 diffs)
- trunk/libtinymail/tny-shared.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ChangeLog
r1427 r1428 1 2007-01-17 Philip Van Hoof <pvanhoof@gnome.org> 2 3 * Introduction of TnyFolderChange, TnyFolderObserver, TnyFolderMonitor 4 * Updated Python bindings 5 6 * This was a major API change in all 7 1 8 2007-01-17 Sergio Villar Senin <svillar@igalia.com> 2 9 trunk/bindings/python/Makefile.am
r1364 r1428 106 106 $(top_srcdir)/libtinymail/tny-msg-remove-strategy.h \ 107 107 $(top_srcdir)/libtinymail/tny-msg-receive-strategy.h \ 108 $(top_srcdir)/libtinymail/tny-send-queue.h 108 $(top_srcdir)/libtinymail/tny-send-queue.h \ 109 $(top_srcdir)/libtinymail/tny-pair.h \ 110 $(top_srcdir)/libtinymail/tny-lockable.h \ 111 $(top_srcdir)/libtinymail/tny-noop-lockable.h \ 112 $(top_srcdir)/libtinymail/tny-folder-change.h \ 113 $(top_srcdir)/libtinymail/tny-folder-observer.h \ 114 $(top_srcdir)/libtinymail/tny-folder-monitor.h 109 115 110 116 tinymail.defs: $(tinymail_h_files) tinymail.defs.extra $(top_srcdir)/bindings/python/filter.py … … 149 155 $(top_srcdir)/libtinymailui-gtk/tny-gtk-msg-window.h \ 150 156 $(top_srcdir)/libtinymailui-gtk/tny-gtk-text-buffer-stream.h \ 151 $(top_srcdir)/libtinymailui-gtk/tny-gtk-text-mime-part-view.h 157 $(top_srcdir)/libtinymailui-gtk/tny-gtk-text-mime-part-view.h \ 158 $(top_srcdir)/libtinymailui-gtk/tny-gtk-lockable.h 152 159 153 160 tinymailui-gtk.defs: $(tinymailui_gtk_h_files) tinymailui-gtk.defs.extra $(top_srcdir)/bindings/python/filter.py … … 191 198 $(top_srcdir)/libtinymail-camel/tny-camel-store-account.h \ 192 199 $(top_srcdir)/libtinymail-camel/tny-camel-stream.h \ 193 $(top_srcdir)/libtinymail-camel/tny-camel-transport-account.h 200 $(top_srcdir)/libtinymail-camel/tny-camel-transport-account.h \ 201 $(top_srcdir)/libtinymail-camel/tny-camel-mem-stream.h 194 202 195 203 tinymail-camel.defs : $(tinymail_camel_h_files) tinymail-camel.defs.extra $(top_srcdir)/bindings/python/filter.py trunk/bindings/python/tinymail-camel.override
r1364 r1428 47 47 #include <tny-camel-full-msg-receive-strategy.h> 48 48 #include <tny-camel-partial-msg-receive-strategy.h> 49 49 #include <tny-camel-mem-stream.h> 50 50 51 51 #define NO_IMPORT_PYGOBJECT trunk/bindings/python/tinymail.override
r1378 r1428 27 27 #include <tny-msg-receive-strategy.h> 28 28 #include <tny-pair.h> 29 #include <tny-folder-monitor.h> 30 #include <tny-folder-change.h> 31 #include <tny-lockable.h> 32 #include <tny-noop-lockable.h> 33 #include <tny-folder-observer.h> 29 34 30 35 #define NO_IMPORT_PYGOBJECT trunk/bindings/python/tinymailui-gtk.override
r1283 r1428 20 20 #include <tny-gtk-text-buffer-stream.h> 21 21 #include <tny-gtk-text-mime-part-view.h> 22 #include <tny-gtk-lockable.h> 22 23 23 24 %% trunk/libtinymail-camel/tny-camel-folder-priv.h
r1368 r1428 47 47 TnyMsgRemoveStrategy *remove_strat; 48 48 TnyMsgReceiveStrategy *receive_strat; 49 TnyList *observers; 49 50 50 51 #ifdef HEALTHY_CHECK trunk/libtinymail-camel/tny-camel-folder.c
r1427 r1428 35 35 #include <tny-list.h> 36 36 #include <tny-error.h> 37 #include <tny-folder-change.h> 38 #include <tny-folder-observer.h> 39 #include <tny-simple-list.h> 37 40 38 41 #include <camel/camel-folder.h> … … 2125 2128 } 2126 2129 2130 2131 static void 2132 tny_camel_folder_poke_recent_changes (TnyFolder *self) 2133 { 2134 TNY_CAMEL_FOLDER_GET_CLASS (self)->poke_recent_changes_func (self); 2135 return; 2136 } 2137 2138 static gboolean 2139 tny_camel_folder_poke_recent_changes_callback (gpointer data) 2140 { 2141 TnyFolder *self = data; 2142 TnyFolderChange *change = tny_folder_change_new (self); 2143 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 2144 TnyIterator *iter; 2145 2146 /* TNY TODO: Implement getting the latest changes */ 2147 2148 iter = tny_list_create_iterator (priv->observers); 2149 while (!tny_iterator_is_done (iter)) 2150 { 2151 TnyFolderObserver *observer = TNY_FOLDER_OBSERVER (tny_iterator_get_current (iter)); 2152 tny_folder_observer_update (observer, change); 2153 g_object_unref (G_OBJECT (observer)); 2154 } 2155 g_object_unref (G_OBJECT (iter)); 2156 2157 g_object_unref (G_OBJECT (change)); 2158 2159 return FALSE; 2160 } 2161 2162 static void 2163 tny_camel_folder_poke_recent_changes_destroyer (gpointer data) 2164 { 2165 g_object_unref (G_OBJECT (data)); 2166 } 2167 2168 static void 2169 tny_camel_folder_poke_recent_changes_default (TnyFolder *self) 2170 { 2171 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 2172 GObject *info = g_object_ref (G_OBJECT (self)); 2173 2174 if (g_main_depth () > 0) 2175 { 2176 g_idle_add_full (G_PRIORITY_HIGH, 2177 tny_camel_folder_poke_recent_changes_callback, 2178 info, tny_camel_folder_poke_recent_changes_destroyer); 2179 } else 2180 { 2181 tny_camel_folder_poke_recent_changes_callback (info); 2182 tny_camel_folder_poke_recent_changes_destroyer (info); 2183 } 2184 2185 return; 2186 } 2187 2188 static void 2189 tny_camel_folder_add_observer (TnyFolder *self, TnyFolderObserver *observer) 2190 { 2191 TNY_CAMEL_FOLDER_GET_CLASS (self)->add_observer_func (self, observer); 2192 } 2193 2194 static void 2195 tny_camel_folder_add_observer_default (TnyFolder *self, TnyFolderObserver *observer) 2196 { 2197 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 2198 2199 g_assert (TNY_IS_FOLDER_OBSERVER (observer)); 2200 2201 tny_list_prepend (priv->observers, G_OBJECT (observer)); 2202 2203 return; 2204 } 2205 2206 2207 static void 2208 tny_camel_folder_remove_observer (TnyFolder *self, TnyFolderObserver *observer) 2209 { 2210 TNY_CAMEL_FOLDER_GET_CLASS (self)->remove_observer_func (self, observer); 2211 } 2212 2213 static void 2214 tny_camel_folder_remove_observer_default (TnyFolder *self, TnyFolderObserver *observer) 2215 { 2216 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 2217 2218 g_assert (TNY_IS_FOLDER_OBSERVER (observer)); 2219 2220 tny_list_remove (priv->observers, G_OBJECT (observer)); 2221 2222 return; 2223 } 2224 2225 2127 2226 /** 2128 2227 * tny_camel_folder_new_with_folder: … … 2169 2268 2170 2269 g_mutex_lock (priv->folder_lock); 2270 2271 g_object_unref (priv->observers); 2171 2272 2172 2273 if (priv->account && TNY_IS_CAMEL_STORE_ACCOUNT (priv->account)) … … 2248 2349 klass->transfer_msgs_async_func = tny_camel_folder_transfer_msgs_async; 2249 2350 klass->copy_func = tny_camel_folder_copy; 2351 klass->poke_recent_changes_func = tny_camel_folder_poke_recent_changes; 2352 klass->add_observer_func = tny_camel_folder_add_observer; 2353 klass->remove_observer_func = tny_camel_folder_remove_observer; 2250 2354 2251 2355 return; … … 2297 2401 class->transfer_msgs_async_func = tny_camel_folder_transfer_msgs_async_default; 2298 2402 class->copy_func = tny_camel_folder_copy_default; 2403 class->poke_recent_changes_func = tny_camel_folder_poke_recent_changes_default; 2404 class->add_observer_func = tny_camel_folder_add_observer_default; 2405 class->remove_observer_func = tny_camel_folder_remove_observer_default; 2299 2406 2300 2407 class->get_folders_async_func = tny_camel_folder_get_folders_async_default; … … 2316 2423 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 2317 2424 2425 priv->observers = tny_simple_list_new (); 2318 2426 priv->iter = NULL; 2319 2427 priv->iter_parented = FALSE; … … 2328 2436 priv->cached_name = NULL; 2329 2437 priv->cached_folder_type = TNY_FOLDER_TYPE_UNKNOWN; 2330 2331 2438 priv->remove_strat = tny_camel_msg_remove_strategy_new (); 2332 2439 priv->receive_strat = tny_camel_full_msg_receive_strategy_new (); trunk/libtinymail-camel/tny-camel-folder.h
r1359 r1428 77 77 void (*transfer_msgs_async_func) (TnyFolder *self, TnyList *header_list, TnyFolder *folder_dst, gboolean delete_originals, TnyTransferMsgsCallback callback, gpointer user_data); 78 78 TnyFolder* (*copy_func) (TnyFolder *self, TnyFolderStore *into, const gchar *new_name, gboolean del, GError **err); 79 void (*poke_recent_changes_func) (TnyFolder *self); 80 void (*add_observer_func) (TnyFolder *self, TnyFolderObserver *observer); 81 void (*remove_observer_func) (TnyFolder *self, TnyFolderObserver *observer); 79 82 80 83 void (*get_folders_async_func) (TnyFolderStore *self, TnyList *list, TnyGetFoldersCallback callback, TnyFolderStoreQuery *query, gpointer user_data); trunk/libtinymail/Makefile.am
r1398 r1428 12 12 tny-header.h \ 13 13 tny-pair.h \ 14 tny-folder-change.h \ 15 tny-folder-observer.h \ 16 tny-folder-monitor.h \ 14 17 tny-msg.h \ 15 18 tny-device.h \ … … 37 40 tny-header.c \ 38 41 tny-pair.c \ 42 tny-folder-change.c \ 43 tny-folder-observer.c \ 44 tny-folder-monitor.c \ 39 45 tny-mime-part.c \ 40 46 tny-folder.c \ trunk/libtinymail/tny-folder.c
r1416 r1428 26 26 guint tny_folder_signals [TNY_FOLDER_LAST_SIGNAL]; 27 27 28 29 28 /** 29 * tny_folder_add_observer: 30 * @self: a #TnyFolder instance 31 * @observer: a #TnyFolderObserver instance 32 * 33 * Add @observer to the list of interested observers for the 34 * event that could happen caused by a tny_folder_poke_recent_changes or 35 * other urgent changes. 36 * 37 **/ 38 void 39 tny_folder_add_observer (TnyFolder *self, TnyFolderObserver *observer) 40 { 41 #ifdef DEBUG 42 if (!TNY_FOLDER_GET_IFACE (self)->add_observer_func) 43 g_critical ("You must implement tny_folder_add_observer\n"); 44 #endif 45 TNY_FOLDER_GET_IFACE (self)->add_observer_func (self, observer); 46 return; 47 } 48 49 50 /** 51 * tny_folder_remove_observer: 52 * @self: a #TnyFolder instance 53 * @observer: a #TnyFolderObserver instance 54 * 55 * Remove @observer from the list of interested observers for the 56 * event that could happen caused by a tny_folder_poke_recent_changes or 57 * other urgent changes. 58 * 59 **/ 60 void 61 tny_folder_remove_observer (TnyFolder *self, TnyFolderObserver *observer) 62 { 63 #ifdef DEBUG 64 if (!TNY_FOLDER_GET_IFACE (self)->remove_observer_func) 65 g_critical ("You must implement tny_folder_remove_observer\n"); 66 #endif 67 TNY_FOLDER_GET_IFACE (self)->remove_observer_func (self, observer); 68 return; 69 70 } 71 72 /** 73 * tny_folder_poke_recent_changes: 74 * @self: a TnyFolder object 75 * 76 * Poke for recent changes 77 * 78 **/ 79 void 80 tny_folder_poke_recent_changes (TnyFolder *self) 81 { 82 #ifdef DEBUG 83 if (!TNY_FOLDER_GET_IFACE (self)->poke_recent_changes_func) 84 g_critical ("You must implement tny_folder_get_recent_changes\n"); 85 #endif 86 TNY_FOLDER_GET_IFACE (self)->poke_recent_changes_func (self); 87 return; 88 } 30 89 31 90 trunk/libtinymail/tny-folder.h
r1382 r1428 64 64 TNY_FOLDER_TYPE_SENT, 65 65 TNY_FOLDER_TYPE_ROOT, 66 67 /* below:not really TnyFolderTypes,68 * but useful for clients */69 66 TNY_FOLDER_TYPE_NOTES, 70 67 TNY_FOLDER_TYPE_DRAFTS, … … 101 98 void (*transfer_msgs_async_func) (TnyFolder *self, TnyList *header_list, TnyFolder *folder_dst, gboolean delete_originals, TnyTransferMsgsCallback callback, gpointer user_data); 102 99 TnyFolder* (*copy_func) (TnyFolder *self, TnyFolderStore *into, const gchar *new_name, gboolean del, GError **err); 100 void (*poke_recent_changes_func) (TnyFolder *self); 101 void (*add_observer_func) (TnyFolder *self, TnyFolderObserver *observer); 102 void (*remove_observer_func) (TnyFolder *self, TnyFolderObserver *observer); 103 103 104 }; 104 105 … … 129 130 void tny_folder_transfer_msgs_async (TnyFolder *self, TnyList *header_list, TnyFolder *folder_dst, gboolean delete_originals, TnyTransferMsgsCallback callback, gpointer user_data); 130 131 TnyFolder* tny_folder_copy (TnyFolder *self, TnyFolderStore *into, const gchar *new_name, gboolean del, GError **err); 132 void tny_folder_poke_recent_changes (TnyFolder *self); 133 void tny_folder_add_observer (TnyFolder *self, TnyFolderObserver *observer); 134 void tny_folder_remove_observer (TnyFolder *self, TnyFolderObserver *observer); 135 131 136 132 137 G_END_DECLS trunk/libtinymail/tny-shared.h
r1416 r1428 87 87 typedef struct _TnyNoopLockable TnyNoopLockable; 88 88 typedef struct _TnyNoopLockableClass TnyNoopLockableClass; 89 typedef struct _TnyFolderObserver TnyFolderObserver; 90 typedef struct _TnyFolderObserverIface TnyFolderObserverIface; 91 typedef struct _TnyFolderChange TnyFolderChange; 92 typedef struct _TnyFolderChangeClass TnyFolderChangeClass; 93 typedef struct _TnyFolderMonitor TnyFolderMonitor; 94 typedef struct _TnyFolderMonitorClass TnyFolderMonitorClass; 89 95 90 96 G_END_DECLS
