示例#1
0
      static void ConnectionHandler(ConIcConnection *connection,
                                    ConIcConnectionEvent *event,
                                    gpointer data)
      {
        Network  *manager=static_cast<Network*>(data);

        assert(manager!=NULL);

        ConIcConnectionStatus status=con_ic_connection_event_get_status(event);
        ConIcConnectionError error=con_ic_connection_event_get_error(event);

        switch (status) {
        case CON_IC_STATUS_NETWORK_UP:
          std::cout << "Connecting..."<<  std::endl;
          manager->SetNetworkState(Network::NetworkStateConnecting);
          break;
        case CON_IC_STATUS_CONNECTED:
          std::cout << "Connected!" << std::endl;
          manager->SetNetworkState(Network::NetworkStateConnected);
          break;
        case CON_IC_STATUS_DISCONNECTING:
          std::cout << "Disconnecting..." <<std::endl;
          manager->SetNetworkState(Network::NetworkStateDisconnecting);
          break;
        case CON_IC_STATUS_DISCONNECTED:
          std::cout << "Disconnected (" << error << ")!" << std::endl;
          manager->SetNetworkState(Network::NetworkStateDisconnected);
          break;
        }
      }
/*
 * This signal will be received from icd when the connection status changes.
 * Unfortunately, it is not really accurate (when switching from GPRS to
 * wireless for example).
 *
 */
static void connection_change(ConIcConnection *connection, ConIcConnectionEvent *event, gpointer user_data) {
    Q_UNUSED(connection);
    RZLWidget *w = (RZLWidget*)user_data;
 
    ConIcConnectionStatus status = con_ic_connection_event_get_status(event);
    switch(status) {
        case CON_IC_STATUS_CONNECTED:
            w->setConnection(QString(con_ic_event_get_bearer_type(CON_IC_EVENT(event))));
            break;
        case CON_IC_STATUS_DISCONNECTING:
            w->setConnection("offline");
            break;
        case CON_IC_STATUS_DISCONNECTED:
            w->setConnection("offline");
            break;
        default:
            qDebug("Unknown connection status received");
    }
}