Changeset 1836

Show
Ignore:
Timestamp:
04/24/07 20:33:44
Author:
pvanhoof
Message:

Added support for knowning when a message got received

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r1834 r1836  
     12007-04-23  Philip Van Hoof  <pvanhoof@gnome.org> 
     2 
     3        * tny_folder_change_set_received_msg, 
     4        tny_folder_change_get_received_msg and 
     5        TNY_FOLDER_CHANGE_CHANGED_MSG_RECEIVED added 
     6 
     7        * This was a major API change 
     8 
    192007-04-24 Dirk-Jan C. Binnema <dirk-jan.binnema@nokia.com> 
    210 
  • trunk/libtinymail-camel/tny-camel-folder.c

    r1827 r1836  
    12001200{ 
    12011201        GetMsgInfo *info = (GetMsgInfo *) thr_user_data; 
     1202        TnyFolderChange *change; 
     1203 
     1204        if (info->msg)  
     1205        { 
     1206                change = tny_folder_change_new (info->self); 
     1207                tny_folder_change_set_received_msg (change, info->msg); 
     1208                notify_folder_observers_about (info->self, change); 
     1209                g_object_unref (G_OBJECT (change)); 
     1210 
     1211                g_object_unref (G_OBJECT (info->msg)); 
     1212        } 
    12021213 
    12031214        /* thread reference */ 
    12041215        g_object_unref (G_OBJECT (info->self)); 
    1205         if (info->msg) 
    1206                 g_object_unref (G_OBJECT (info->msg)); 
    12071216 
    12081217        if (info->err) 
     
    13521361        TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 
    13531362        TnyMsg *retval = NULL; 
     1363        TnyFolderChange *change; 
    13541364 
    13551365        if (!_tny_session_check_operation (TNY_FOLDER_PRIV_GET_SESSION(priv), err,  
     
    13751385 
    13761386        retval = tny_msg_receive_strategy_perform_get_msg (priv->receive_strat, self, header, err); 
     1387 
     1388        if (retval) 
     1389        { 
     1390                change = tny_folder_change_new (self); 
     1391                tny_folder_change_set_received_msg (change, retval); 
     1392                notify_folder_observers_about (self, change); 
     1393                g_object_unref (G_OBJECT (change)); 
     1394        } 
    13771395 
    13781396        g_static_rec_mutex_unlock (priv->folder_lock); 
  • trunk/libtinymail/tny-folder-change.c

    r1728 r1836  
    3737        gchar *oldname, *newname; 
    3838        TnyFolderChangeChanged changed; 
     39        TnyMsg *msg; 
    3940}; 
    4041 
     
    4243        (G_TYPE_INSTANCE_GET_PRIVATE ((o), TNY_TYPE_FOLDER_CHANGE, TnyFolderChangePriv)) 
    4344 
     45/** 
     46 * tny_folder_change_set_received_msg: 
     47 * @self: a #TnyFolderChange instance 
     48 * @msg: a #TnyMsg instance 
     49 * 
     50 * Set the message that got received 
     51 **/ 
     52void  
     53tny_folder_change_set_received_msg (TnyFolderChange *self, TnyMsg *msg) 
     54{ 
     55        TnyFolderChangePriv *priv = TNY_FOLDER_CHANGE_GET_PRIVATE (self); 
     56 
     57        g_mutex_lock (priv->lock); 
     58        if (priv->msg) 
     59                g_object_unref (priv->msg); 
     60        priv->msg = TNY_MSG (g_object_ref (msg)); 
     61        priv->changed |= TNY_FOLDER_CHANGE_CHANGED_MSG_RECEIVED; 
     62        g_mutex_unlock (priv->lock); 
     63} 
     64 
     65/** 
     66 * tny_folder_change_get_received_msg: 
     67 * @self: a #TnyFolderChange instance 
     68 * 
     69 * Get the message that got received 
     70 * 
     71 * Return value: the message that got received 
     72 **/ 
     73TnyMsg * 
     74tny_folder_change_get_received_msg (TnyFolderChange *self) 
     75{ 
     76        TnyFolderChangePriv *priv = TNY_FOLDER_CHANGE_GET_PRIVATE (self); 
     77        TnyMsg *msg = NULL; 
     78 
     79        g_mutex_lock (priv->lock); 
     80        if (priv->msg) 
     81                msg = TNY_MSG (g_object_ref (priv->msg)); 
     82        g_mutex_unlock (priv->lock); 
     83 
     84        return msg; 
     85} 
    4486 
    4587/** 
     
    4890 * 
    4991 * Get an enum with all the changed things 
     92 * 
     93 * Return value: the changed-flags 
    5094 **/ 
    5195TnyFolderChangeChanged  
     
    276320        priv->added = NULL; 
    277321        priv->removed = NULL; 
    278  
     322        if (priv->msg) 
     323                g_object_unref (priv->msg); 
     324        priv->msg = NULL; 
    279325        g_mutex_unlock (priv->lock); 
    280326} 
     
    389435        g_mutex_lock (priv->lock); 
    390436 
     437        priv->msg = NULL; 
    391438        priv->changed = 0; 
    392439        priv->new_unread_count = 0; 
     
    418465        priv->removed = NULL; 
    419466 
     467        if (priv->msg) 
     468                g_object_unref (priv->msg); 
    420469        if (priv->oldname) 
    421470                g_free (priv->oldname); 
    422471        if (priv->newname) 
    423472                g_free (priv->newname); 
    424  
    425473        if (priv->folder) 
    426474                g_object_unref (G_OBJECT (priv->folder)); 
  • trunk/libtinymail/tny-folder-change.h

    r1651 r1836  
    4747        TNY_FOLDER_CHANGE_CHANGED_ADDED_HEADERS = 1<<3, 
    4848        TNY_FOLDER_CHANGE_CHANGED_REMOVED_HEADERS = 1<<4, 
    49         TNY_FOLDER_CHANGE_CHANGED_FOLDER_RENAME = 1<<5 
     49        TNY_FOLDER_CHANGE_CHANGED_FOLDER_RENAME = 1<<5, 
     50        TNY_FOLDER_CHANGE_CHANGED_MSG_RECEIVED = 1<<6, 
    5051}; 
    5152 
     
    6566const gchar *tny_folder_change_get_rename (TnyFolderChange *self, const gchar **oldname); 
    6667void tny_folder_change_set_rename (TnyFolderChange *self, const gchar *newname); 
     68void tny_folder_change_set_received_msg (TnyFolderChange *self, TnyMsg *msg); 
     69TnyMsg *tny_folder_change_get_received_msg (TnyFolderChange *self); 
    6770void tny_folder_change_set_new_all_count (TnyFolderChange *self, guint new_all_count); 
    6871void tny_folder_change_set_new_unread_count (TnyFolderChange *self, guint new_unread_count); 
  • trunk/po/Makefile.in.in

    r1821 r1836  
    2626prefix = @prefix@ 
    2727exec_prefix = @exec_prefix@ 
     28datarootdir = @datarootdir@ 
    2829datadir = @datadir@ 
    2930libdir = @libdir@ 
     
    4142GMSGFMT = @GMSGFMT@ 
    4243MSGFMT = @MSGFMT@ 
     44MSGFMT_OPTS = @MSGFMT_OPTS@ 
    4345XGETTEXT = @XGETTEXT@ 
    4446MSGMERGE = msgmerge 
     
    7981.po.gmo: 
    8082        file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ 
    81           && rm -f $$file && $(GMSGFMT) -c -o $$file $< 
     83          && rm -f $$file && $(GMSGFMT) $(MSGFMT_OPTS) -o $$file $< 
    8284 
    8385.po.cat: