Changeset 1790
- Timestamp:
- 04/17/07 15:40:06
- Files:
-
- trunk/ChangeLog (modified) (1 diff)
- trunk/configure.ac (modified) (2 diffs)
- trunk/libtinymail-maemo/tny-maemo-conic-device.c (added)
- trunk/libtinymail-maemo/tny-maemo-conic-device.h (added)
- trunk/libtinymail-maemo/tny-maemo-device.c (modified) (7 diffs)
- trunk/libtinymail-maemo/tny-maemo-device.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ChangeLog
r1786 r1790 1 2007-04-17 Dirk-Jan C. Binnema <dirk-jan.binnema@nokia.com> 2 3 * Add the TnyMaemoConicDevice, which exposes libconic-specific 4 functionality. When built for scratchbox, it tries to work in 'dummy 5 mode', to make it still somewhat functional, even though connectivity 6 does not work in scratchbox. The conic-specifics are only lightly 7 tested. and need work, esp. for doing something in sbox 8 9 * TnyMaemoDevice goes back to the dummy it was before, so this should 10 make pre-libconic compiles (770) also possible; not tested though. 11 1 12 2007-04-13 Philip Van Hoof <pvanhoof@gnome.org> 2 13 trunk/configure.ac
r1783 r1790 325 325 326 326 327 AC_DEFUN([ARMEL_TARGET], 328 [if sb-conf cu | grep -i 'armel' >/dev/null 2>&1; then 329 armel_target=yes]) 330 327 331 dnl ### libtinymail-maemo, a platform library implementation for the maemo platform ## 328 332 if test x$PLATFORMDIR = xlibtinymail-maemo; then 329 PKG_CHECK_MODULES(LIBTINYMAIL_MAEMO, glib-2.0 >= 2.8 gobject-2.0 gconf-2.0 gtk+-2.0 hildon-libs libosso conic) 333 PKG_CHECK_MODULES(LIBTINYMAIL_MAEMO, glib-2.0 >= 2.8 gobject-2.0 gconf-2.0 gtk+-2.0 hildon-libs libosso) 334 PKG_CHECK_MODULES(LIBTINYMAIL_MAEMO_CONIC,conic,conic=yes,conic=no) 335 if test "$conic"=="yes"; then 336 MAEMO_DEVICE='tny-maemo-conic-device.$(OBJEXT)' 337 fi 338 dnl HACK: unless we are building for arm, make the device a 'dummy' assuming it is always online 339 dnl this is because scratcbhox-Conic does not support ethernet, and will therefore never consider 340 dnl itself 'online' 341 if test -z "`sb-conf show -c | grep arm`"; then 342 AC_DEFINE_UNQUOTED(MAEMO_CONIC_DUMMY,1,["Whether to hack the TnyMaemoConicDevice to somewhat work in sbox"]) 343 fi 344 345 AC_SUBST([MAEMO_DEVICE]) 330 346 else 331 347 LIBTINYMAIL_MAEMO_CFLAGS= … … 334 350 AC_SUBST(LIBTINYMAIL_MAEMO_CFLAGS) 335 351 AC_SUBST(LIBTINYMAIL_MAEMO_LIBS) 352 AC_SUBST(LIBTINYMAIL_MAEMO_CONIC_CFLAGS) 353 AC_SUBST(LIBTINYMAIL_MAEMO_CONIC_LIBS) 354 355 356 357 358 336 359 337 360 dnl ### libtinymail-gpe, a platform library implementation for the GPE platform ## trunk/libtinymail-maemo/tny-maemo-device.c
r1779 r1790 19 19 20 20 #include <config.h> 21 #include <glib.h> 22 #include <glib-object.h> 21 22 #include <glib/gi18n-lib.h> 23 23 24 #include <tny-maemo-device.h> 24 #include <coniciap.h>25 #include <conicconnection.h>26 #include <conicconnectionevent.h>27 28 25 29 26 static GObjectClass *parent_class = NULL; 30 27 28 31 29 typedef struct { 32 ConIcConnection *cnx; 33 gboolean is_online; 34 const gchar *iap; 30 gboolean fset, forced; 35 31 } TnyMaemoDevicePriv; 36 32 … … 39 35 40 36 37 static void tny_maemo_device_on_online (TnyDevice *self); 38 static void tny_maemo_device_on_offline (TnyDevice *self); 39 static gboolean tny_maemo_device_is_online (TnyDevice *self); 40 41 41 42 static void 42 tny_maemo_device_reset (TnyDevice *device) 43 { 44 /* intentionally left blank */ 45 } 46 47 48 static void 49 on_connection_event (ConIcConnection *cnx, ConIcConnectionEvent *event, gpointer user_data) 50 { 51 TnyMaemoDevice *device; 52 TnyMaemoDevicePriv *priv; 53 gboolean is_online; 54 55 g_return_if_fail (CON_IC_IS_CONNECTION(cnx)); 56 g_return_if_fail (user_data); 57 58 device = TNY_MAEMO_DEVICE(user_data); 59 priv = TNY_MAEMO_DEVICE_GET_PRIVATE (device); 60 61 switch (con_ic_connection_event_get_error(event)) { 62 case CON_IC_CONNECTION_ERROR_NONE: 63 break; 64 case CON_IC_CONNECTION_ERROR_INVALID_IAP: 65 g_warning ("conic: IAP is invalid"); 66 break; 67 case CON_IC_CONNECTION_ERROR_CONNECTION_FAILED: 68 g_warning ("conic: connection failed"); 69 break; 70 case CON_IC_CONNECTION_ERROR_USER_CANCELED: 71 g_warning ("conic: user cancelled"); 72 break; 73 default: 74 g_return_if_reached (); 75 } 76 77 switch (con_ic_connection_event_get_status(event)) { 78 case CON_IC_STATUS_CONNECTED: 79 is_online = TRUE; 80 break; 81 case CON_IC_STATUS_DISCONNECTED: 82 is_online = FALSE; 83 break; 84 case CON_IC_STATUS_DISCONNECTING: 85 is_online = FALSE; 86 break; 87 default: 88 g_return_if_reached (); /* should not happen */ 89 } 90 91 if (is_online != priv->is_online) { /* was there a change? */ 92 priv->is_online = is_online; 93 g_signal_emit (device, tny_device_signals [TNY_DEVICE_CONNECTION_CHANGED], 94 0, is_online); 95 } 96 } 97 43 tny_maemo_device_reset (TnyDevice *self) 44 { 45 TnyMaemoDevicePriv *priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 46 47 priv->fset = FALSE; 48 priv->forced = FALSE; 49 50 } 98 51 99 52 static void 100 53 tny_maemo_device_force_online (TnyDevice *self) 101 54 { 102 TnyMaemoDevicePriv *priv; 55 TnyMaemoDevicePriv *priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 56 57 priv->fset = TRUE; 58 priv->forced = TRUE; 59 60 tny_maemo_device_on_online (self); 61 62 return; 63 } 64 65 66 static void 67 tny_maemo_device_force_offline (TnyDevice *self) 68 { 69 TnyMaemoDevicePriv *priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 70 71 priv->fset = TRUE; 72 priv->forced = FALSE; 73 74 75 tny_maemo_device_on_offline (self); 103 76 104 g_return_if_fail (TNY_IS_DEVICE(self)); 105 priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 106 107 if (!con_ic_connection_connect (priv->cnx, CON_IC_CONNECT_FLAG_NONE)) 108 g_warning ("could not send connect dbus message"); 109 } 110 111 112 static void 113 tny_maemo_device_force_offline (TnyDevice *self) 114 { 115 TnyMaemoDevicePriv *priv; 116 117 g_return_if_fail (TNY_IS_DEVICE(self)); 118 priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 119 120 return; 121 122 if (!con_ic_connection_disconnect (priv->cnx)) 123 g_warning ("could not send disconnect dbus message"); 124 } 125 77 return; 78 } 79 80 static void 81 tny_maemo_device_on_online (TnyDevice *self) 82 { 83 g_signal_emit (self, tny_device_signals [TNY_DEVICE_CONNECTION_CHANGED], 0, TRUE); 84 85 return; 86 } 87 88 static void 89 tny_maemo_device_on_offline (TnyDevice *self) 90 { 91 g_signal_emit (self, tny_device_signals [TNY_DEVICE_CONNECTION_CHANGED], 0, FALSE); 92 93 return; 94 } 126 95 127 96 static gboolean 128 97 tny_maemo_device_is_online (TnyDevice *self) 129 98 { 130 g_return_val_if_fail (TNY_IS_DEVICE(self), FALSE); 131 132 return TRUE; 133 return TNY_MAEMO_DEVICE_GET_PRIVATE (self)->is_online; 134 } 135 99 TnyMaemoDevicePriv *priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 100 gboolean retval = TRUE; 101 return retval; 102 } 136 103 137 104 static void … … 140 107 TnyMaemoDevice *self = (TnyMaemoDevice *)instance; 141 108 TnyMaemoDevicePriv *priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 142 143 priv->is_online = FALSE;109 110 return; 144 111 } 145 112 … … 154 121 tny_maemo_device_new (void) 155 122 { 156 TnyMaemoDevice *self; 157 TnyMaemoDevicePriv *priv; 158 159 self = g_object_new (TNY_TYPE_MAEMO_DEVICE, NULL); 160 priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 161 162 priv->cnx = con_ic_connection_new (); 163 if (!priv->cnx) { 164 g_warning ("con_ic_connection_new failed"); 165 g_object_unref (self); 166 return NULL; 167 } 168 g_signal_connect (priv->cnx, "connection-event", 169 G_CALLBACK(on_connection_event), self); 170 171 /* 172 * this will get us in connected state only if there is already a connection. 173 * thus, this will setup our state correctly when we receive the signals 174 */ 175 if (!con_ic_connection_connect (priv->cnx, CON_IC_CONNECT_FLAG_AUTOMATICALLY_TRIGGERED)) 176 g_warning ("could not send connect dbus message"); 123 TnyMaemoDevice *self = g_object_new (TNY_TYPE_MAEMO_DEVICE, NULL); 177 124 178 125 return TNY_DEVICE (self); 179 126 } 180 127 181 static void 182 tny_maemo_device_finalize (GObject *obj) 183 { 184 TnyMaemoDevicePriv *priv; 185 priv = TNY_MAEMO_DEVICE_GET_PRIVATE (obj); 186 if (CON_IC_IS_CONNECTION(priv->cnx)) { 187 // if (!con_ic_connection_disconnect (priv->cnx)) 188 // g_warning ("failed to send disconnect dbus message"); 189 g_object_unref (priv->cnx); 190 priv->cnx = NULL; 191 } 192 (*parent_class->finalize) (obj); 128 129 static void 130 tny_maemo_device_finalize (GObject *object) 131 { 132 (*parent_class->finalize) (object); 133 134 return; 193 135 } 194 136 … … 199 141 TnyDeviceIface *klass = (TnyDeviceIface *)g; 200 142 201 klass->is_online_func = tny_maemo_device_is_online;202 klass->reset_func = tny_maemo_device_reset;143 klass->is_online_func = tny_maemo_device_is_online; 144 klass->reset_func = tny_maemo_device_reset; 203 145 klass->force_offline_func = tny_maemo_device_force_offline; 204 klass->force_online_func = tny_maemo_device_force_online; 146 klass->force_online_func = tny_maemo_device_force_online; 147 148 return; 205 149 } 206 150 … … 218 162 219 163 g_type_class_add_private (object_class, sizeof (TnyMaemoDevicePriv)); 164 165 return; 220 166 } 221 167 … … 255 201 256 202 } 203 257 204 return type; 258 205 } trunk/libtinymail-maemo/tny-maemo-device.h
r900 r1790 35 35 #define TNY_MAEMO_DEVICE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), TNY_TYPE_MAEMO_DEVICE, TnyMaemoDeviceClass)) 36 36 37 /* This is an abstract type */38 39 37 typedef struct _TnyMaemoDevice TnyMaemoDevice; 40 38 typedef struct _TnyMaemoDeviceClass TnyMaemoDeviceClass;
