Changeset 2225

Show
Ignore:
Timestamp:
06/19/07 17:15:30
Author:
pvanhoof
Message:

connection_status_changed signal

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r2224 r2225  
     12007-06-19  Philip Van Hoof  <pvanhoof@gnome.org> 
     2 
     3        * The connection_status_changed signal got extended a little bit 
     4 
     5        * This was a major API change 
     6 
    172007-06-19  Jose Dapena Paz  <jdapena@igalia.com> 
    28 
  • trunk/libtinymail-camel/tny-camel-account-priv.h

    r2221 r2225  
    7575        RefreshStatusInfo *csyncop; 
    7676        GList *chooks; 
     77        TnyConnectionStatus status; 
    7778}; 
    7879 
  • trunk/libtinymail-camel/tny-camel-account.c

    r2221 r2225  
    498498 
    499499 
    500 static gboolean  
    501 tny_camel_account_is_connected (TnyAccount *self) 
    502 { 
    503         return TNY_CAMEL_ACCOUNT_GET_CLASS (self)->is_connected_func (self); 
    504 } 
    505  
    506 static gboolean  
    507 tny_camel_account_is_connected_default (TnyAccount *self) 
    508 { 
    509         TnyCamelAccountPriv *priv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (self); 
    510         return priv->connected
     500static TnyConnectionStatus  
     501tny_camel_account_get_connection_status (TnyAccount *self) 
     502{ 
     503        return TNY_CAMEL_ACCOUNT_GET_CLASS (self)->get_connection_status_func (self); 
     504} 
     505 
     506static TnyConnectionStatus  
     507tny_camel_account_get_connection_status_default (TnyAccount *self) 
     508{ 
     509        TnyCamelAccountPriv *priv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (self); 
     510        return priv->status
    511511} 
    512512 
     
    11801180        klass->set_id_func = tny_camel_account_set_id; 
    11811181        klass->get_id_func = tny_camel_account_get_id; 
    1182         klass->is_connected_func = tny_camel_account_is_connected
     1182        klass->get_connection_status_func = tny_camel_account_get_connection_status
    11831183        klass->set_url_string_func = tny_camel_account_set_url_string; 
    11841184        klass->get_url_string_func = tny_camel_account_get_url_string; 
     
    12181218        class->set_id_func = tny_camel_account_set_id_default; 
    12191219        class->get_id_func = tny_camel_account_get_id_default; 
    1220         class->is_connected_func = tny_camel_account_is_connected_default; 
     1220        class->get_connection_status_func = tny_camel_account_get_connection_status_default; 
    12211221        class->set_url_string_func = tny_camel_account_set_url_string_default; 
    12221222        class->get_url_string_func = tny_camel_account_get_url_string_default; 
  • trunk/libtinymail-camel/tny-camel-account.h

    r2193 r2225  
    5050 
    5151        /* Virtual methods */ 
    52         gboolean (*is_connected_func)(TnyAccount *self); 
     52        TnyConnectionStatus (*get_connection_status_func)(TnyAccount *self); 
    5353        void (*set_id_func) (TnyAccount *self, const gchar *id); 
    5454        void (*set_name_func) (TnyAccount *self, const gchar *name); 
  • trunk/libtinymail-camel/tny-camel-mime-part.c

    r2214 r2225  
    2222#include <glib/gi18n-lib.h> 
    2323 
     24#include <string.h> 
    2425#ifndef _GNU_SOURCE 
    2526#define _GNU_SOURCE 
    2627#endif /* GNU_SOURCE*/ 
    27  
    2828#include <string.h> 
     29 
    2930#include <tny-mime-part.h> 
    3031#include <tny-camel-mime-part.h> 
  • trunk/libtinymail-camel/tny-camel-store-account.c

    r2222 r2225  
    8686connection_status_idle (gpointer data) 
    8787{ 
    88         g_signal_emit (data, tny_account_signals [TNY_ACCOUNT_CONNECTION_STATUS_CHANGED], 0); 
     88        TnyAccount *self = (TnyAccount *) data; 
     89        TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (self); 
     90 
     91        g_signal_emit (G_OBJECT (self),  
     92                tny_account_signals [TNY_ACCOUNT_CONNECTION_STATUS_CHANGED],  
     93                0, apriv->status); 
    8994 
    9095        return FALSE; 
     
    115120disconnection (CamelService *service, gpointer data, TnyAccount *self) 
    116121{ 
     122        TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (self); 
     123 
     124        if (!service->reconnecting) 
     125                apriv->status = TNY_CONNECTION_STATUS_DISCONNECTED; 
     126 
    117127#ifdef DEBUG 
    118128        g_print ("TNY_DEBUG: %s disconnected %s\n",  
     
    126136connection (CamelService *service, gpointer data, TnyAccount *self) 
    127137{ 
     138        TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (self); 
     139        gboolean suc = (gboolean) data; 
     140 
     141        if (!service->reconnecting) 
     142        { 
     143                if (suc) 
     144                        apriv->status = TNY_CONNECTION_STATUS_CONNECTED; 
     145                else 
     146                        apriv->status = TNY_CONNECTION_STATUS_CONNECTED_BROKEN; 
     147        } 
     148 
     149        if (service->reconnecting && !suc) 
     150                apriv->status = TNY_CONNECTION_STATUS_CONNECTED_BROKEN; 
     151 
     152        if (CAMEL_IS_DISCO_STORE (service)) 
     153        { 
     154 
     155                if (camel_disco_store_status ((CamelDiscoStore *) service) == CAMEL_DISCO_STORE_ONLINE) 
     156                { 
    128157#ifdef DEBUG 
    129         if (CAMEL_IS_DISCO_STORE (service)) 
    130         { 
    131                 gboolean suc = (gboolean) data; 
    132  
    133                 if (camel_disco_store_status ((CamelDiscoStore *) service) == CAMEL_DISCO_STORE_ONLINE) 
    134                 { 
    135158                        g_print ("TNY_DEBUG: %s %s %s\n",  
    136159                                tny_account_get_name (self),  
    137160                                suc?"connected":"failed connecting", 
    138161                                service->reconnecting?"reconnecting":""); 
     162#endif 
     163 
     164                        if (suc) 
     165                                apriv->status = TNY_CONNECTION_STATUS_CONNECTED; 
     166                        else 
     167                                apriv->status = TNY_CONNECTION_STATUS_CONNECTED_BROKEN; 
     168 
    139169                } else { 
     170 
     171#ifdef DEBUG 
    140172                        g_print ("TNY_DEBUG: %s %s\n",  
    141173                                tny_account_get_name (self), 
    142174                                suc?"ready for offline operation": 
    143175                                        "not ready for offline operation"); 
     176#endif 
     177 
     178                        if (suc) 
     179                                apriv->status = TNY_CONNECTION_STATUS_DISCONNECTED; 
     180                        else 
     181                                apriv->status = TNY_CONNECTION_STATUS_DISCONNECTED_BROKEN; 
     182 
    144183                } 
    145184        } 
    146 #endif 
    147185} 
    148186 
     
    150188reconnection (CamelService *service, gpointer data, TnyAccount *self) 
    151189{ 
     190        TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (self); 
     191        gboolean suc = (gboolean) data; 
     192 
     193        if (suc) 
     194                apriv->status = TNY_CONNECTION_STATUS_CONNECTED; 
     195        else 
     196                apriv->status = TNY_CONNECTION_STATUS_CONNECTED_BROKEN; 
     197 
    152198#ifdef DEBUG 
    153         gboolean suc = (gboolean) data; 
    154199 
    155200        g_print ("TNY_DEBUG: %s reconnecting %s\n",  
     
    162207reconnecting (CamelService *service, gpointer data, TnyAccount *self) 
    163208{ 
     209        TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (self); 
     210 
     211        apriv->status = TNY_CONNECTION_STATUS_RECONNECTING; 
     212 
    164213#ifdef DEBUG 
    165214        g_print ("TNY_DEBUG: %s reconnecting\n",  
  • trunk/libtinymail/tny-account.c

    r2193 r2225  
    179179 
    180180/** 
    181  * tny_account_is_connected
     181 * tny_account_get_connection_status
    182182 * @self: a #TnyAccount object 
    183183 * 
    184184 * Get the connection status of @self 
    185185 * 
    186  * Return value: whether or not the account is connected 
    187  **/ 
    188 gboolean  
    189 tny_account_is_connected (TnyAccount *self) 
    190 { 
    191         gboolean retval; 
    192  
    193 #ifdef DBC /* require */ 
    194         g_assert (TNY_IS_ACCOUNT (self)); 
    195         g_assert (TNY_ACCOUNT_GET_IFACE (self)->is_connected_func != NULL); 
    196 #endif 
    197  
    198         retval = TNY_ACCOUNT_GET_IFACE (self)->is_connected_func (self); 
     186 * Return value: the status of the connection 
     187 **/ 
     188TnyConnectionStatus  
     189tny_account_get_connection_status (TnyAccount *self) 
     190{ 
     191        TnyConnectionStatus retval; 
     192 
     193#ifdef DBC /* require */ 
     194        g_assert (TNY_IS_ACCOUNT (self)); 
     195        g_assert (TNY_ACCOUNT_GET_IFACE (self)->get_connection_status_func != NULL); 
     196#endif 
     197 
     198        retval = TNY_ACCOUNT_GET_IFACE (self)->get_connection_status_func (self); 
    199199 
    200200#ifdef DBC /* ensure */ 
     
    888888 * TnyAccount::connection-status-changed 
    889889 * @self: the object on which the signal is emitted 
     890 * @status: the #TnyConnectionStatus 
    890891 * @user_data: user data set when the signal handler was connected. 
    891892 * 
    892  * Emitted when the connection status of an account changes. You can get the 
    893  * connection status with the tny_account_is_connected API in the handler. 
     893 * Emitted when the connection status of an account changes. 
    894894 **/ 
    895895                tny_account_signals[TNY_ACCOUNT_CONNECTION_STATUS_CHANGED] = 
     
    899899                        G_STRUCT_OFFSET (TnyAccountIface, connection_status_changed), 
    900900                        NULL, NULL, 
    901                         g_cclosure_marshal_VOID__VOID,  
     901                        g_cclosure_marshal_VOID__INT,  
    902902                        G_TYPE_NONE, 0); 
    903903 
  • trunk/libtinymail/tny-account.h

    r2196 r2225  
    4040typedef struct _TnyAccountIface TnyAccountIface; 
    4141typedef enum _TnyAccountSignal TnyAccountSignal; 
     42typedef enum _TnyConnectionStatus TnyConnectionStatus; 
    4243#endif 
     44 
     45enum _TnyConnectionStatus 
     46{ 
     47        TNY_CONNECTION_STATUS_DISCONNECTED, 
     48        TNY_CONNECTION_STATUS_DISCONNECTED_BROKEN, 
     49        TNY_CONNECTION_STATUS_CONNECTED_BROKEN, 
     50        TNY_CONNECTION_STATUS_CONNECTED, 
     51        TNY_CONNECTION_STATUS_RECONNECTING 
     52}; 
    4353 
    4454enum _TnyAccountType 
     
    6272 
    6373        /* Methods */ 
    64         gboolean (*is_connected_func)(TnyAccount *self); 
     74        TnyConnectionStatus (*get_connection_status_func)(TnyAccount *self); 
    6575        void (*set_id_func) (TnyAccount *self, const gchar *id); 
    6676        void (*set_name_func) (TnyAccount *self, const gchar *name); 
     
    90100 
    91101        /* Signals*/ 
    92         void (*connection_status_changed) (TnyAccount *self); 
     102        void (*connection_status_changed) (TnyAccount *self, TnyConnectionStatus status); 
    93103}; 
    94104 
     
    96106GType tny_account_type_get_type (void); 
    97107 
    98 gboolean tny_account_is_connected (TnyAccount *self); 
     108TnyConnectionStatus tny_account_get_connection_status (TnyAccount *self); 
    99109void tny_account_set_id (TnyAccount *self, const gchar *id); 
    100110void tny_account_set_name (TnyAccount *self, const gchar *name); 
  • trunk/libtinymail/tny-combined-account.c

    r1947 r2225  
    7474} 
    7575 
    76 static gboolean 
    77 tny_combined_account_is_connected (TnyAccount *self) 
     76static TnyConnectionStatus 
     77tny_combined_account_get_connection_status (TnyAccount *self) 
    7878{ 
    7979        TnyCombinedAccountPriv *priv = TNY_COMBINED_ACCOUNT_GET_PRIVATE (self); 
     
    8181        g_warning ("Don't use tny_account_is_connected on TnyCombinedAccount"); 
    8282 
    83         return tny_account_is_connected (TNY_ACCOUNT (priv->store_account)); 
     83        return tny_account_get_connection_status (TNY_ACCOUNT (priv->store_account)); 
    8484} 
    8585 
     
    450450tny_account_init (TnyAccountIface *klass) 
    451451{ 
    452         klass->is_connected_func = tny_combined_account_is_connected
     452        klass->get_connection_status_func = tny_combined_account_get_connection_status
    453453        klass->set_id_func = tny_combined_account_set_id; 
    454454        klass->set_name_func = tny_combined_account_set_name; 
  • trunk/libtinymail/tny-shared.h

    r2026 r2225  
    121121typedef struct _TnyCombinedAccount TnyCombinedAccount; 
    122122typedef struct _TnyCombinedAccountClass TnyCombinedAccountClass; 
     123typedef enum _TnyConnectionStatus TnyConnectionStatus; 
    123124 
    124125G_END_DECLS