static void update_header(void) { GdkPixbuf *image = NULL; const char *type, *info; GtkWidget *widget; gboolean favorite; type = connman_service_get_type(path); if (g_strcmp0(type, "wifi") == 0) { uint8_t strength; strength = connman_service_get_strength(path); cui_theme_get_signal_icone_and_info(strength, &image, &info); } else cui_theme_get_type_icone_and_info(type, &image, &info); set_image(builder, "service_type", image, info); set_label(builder, "service_name", connman_service_get_name(path), "- Hidden -"); if (connman_service_is_connected(path) == TRUE) cui_theme_get_state_icone_and_info( connman_service_get_state(path), &image, &info); else image = NULL; set_image(builder, "service_state", image, info); set_label(builder, "service_error", connman_service_get_error(path), ""); favorite = connman_service_is_favorite(path); set_button_toggle(builder, "service_autoconnect", connman_service_is_autoconnect(path)); widget = set_widget_sensitive(builder, "service_autoconnect", favorite); if (favorite == TRUE) { g_signal_connect(widget, "toggled", G_CALLBACK(autoconnect_button_toggled), NULL); } set_button_toggle(builder, "service_favorite", favorite); widget = set_widget_sensitive(builder, "service_favorite", favorite); if (favorite == TRUE) { g_signal_connect(widget, "toggled", G_CALLBACK(favorite_button_toggled), NULL); } }
static void update_connection_status(connman_service_t *connected_service, jvalue_ref *status) { if(NULL == connected_service || NULL == status) return; int connman_state = 0; connman_state = connman_service_get_state(connected_service->state); if(connman_state == CONNMAN_SERVICE_STATE_ONLINE || connman_state == CONNMAN_SERVICE_STATE_READY) { connman_service_get_ipinfo(connected_service); jobject_put(*status, J_CSTR_TO_JVAL("state"), jstring_create("connected")); if(NULL != connected_service->ipinfo.iface) jobject_put(*status, J_CSTR_TO_JVAL("interfaceName"), jstring_create(connected_service->ipinfo.iface)); if(NULL != connected_service->ipinfo.ipv4.address) jobject_put(*status, J_CSTR_TO_JVAL("ipAddress"), jstring_create(connected_service->ipinfo.ipv4.address)); if(NULL != connected_service->ipinfo.ipv4.netmask) jobject_put(*status, J_CSTR_TO_JVAL("netmask"), jstring_create(connected_service->ipinfo.ipv4.netmask)); if(NULL != connected_service->ipinfo.ipv4.gateway) jobject_put(*status, J_CSTR_TO_JVAL("gateway"), jstring_create(connected_service->ipinfo.ipv4.gateway)); gsize i; char dns_str[16]; for (i = 0; i < g_strv_length(connected_service->ipinfo.dns); i++) { sprintf(dns_str,"dns%d",i+1); jobject_put(*status, jstring_create(dns_str), jstring_create(connected_service->ipinfo.dns[i])); } if(NULL != connected_service->ipinfo.ipv4.method) jobject_put(*status, J_CSTR_TO_JVAL("method"), jstring_create(connected_service->ipinfo.ipv4.method)); if(connman_service_type_wifi(connected_service)) { if(NULL != connected_service->name) jobject_put(*status, J_CSTR_TO_JVAL("ssid"), jstring_create(connected_service->name)); jobject_put(*status, J_CSTR_TO_JVAL("isWakeOnWifiEnabled"), jboolean_create(false)); } const char *s = (connman_state == CONNMAN_SERVICE_STATE_ONLINE)?"yes":"no"; jobject_put(*status, J_CSTR_TO_JVAL("onInternet"), jstring_create(s)); } else jobject_put(*status, J_CSTR_TO_JVAL("state"), jstring_create("disconnected")); }
static void service_set_state(GtkService *service) { GtkServicePrivate *priv = service->priv; const struct connman_ipv4 *ipv4; enum connman_state state; GdkPixbuf *image = NULL; const char *ip = NULL; const char *info; if (connman_service_is_connected(service->path) == FALSE) { gtk_widget_set_tooltip_text((GtkWidget *)priv->name, ""); return; } ipv4 = connman_service_get_ipv4(service->path); if (ipv4 == NULL) { const struct connman_ipv6 *ipv6; ipv6 = connman_service_get_ipv6(service->path); if (ipv6 != NULL) ip = ipv6->address; } else ip = ipv4->address; if (ip == NULL) ip = ""; gtk_widget_set_tooltip_text((GtkWidget *)priv->name, ip); state = connman_service_get_state(service->path); cui_theme_get_state_icone_and_info(state, &image, &info); if (image == NULL) return; gtk_widget_set_visible((GtkWidget *)priv->state, TRUE); gtk_widget_set_tooltip_text((GtkWidget *)priv->state, info); gtk_image_set_from_pixbuf(priv->state, image); }
static void update_session_state(struct connman_session *session) { enum connman_service_state service_state; enum connman_session_state state = CONNMAN_SESSION_STATE_DISCONNECTED; if (session->service) { service_state = connman_service_get_state(session->service); state = service_to_session_state(service_state); session->info->state = state; } session->info->state = state; DBG("session %p state %s", session, state2string(state)); update_firewall(session); del_nat_rules(session); update_routing_table(session); add_nat_rules(session); if (policy && policy->update_session_state) policy->update_session_state(session, state); session_notify(session); }
static void session_activate(struct connman_session *session) { GHashTableIter iter; gpointer key, value; if (!service_hash) return; if (policy && policy->get_service_for_session) { struct connman_service *service; struct connman_service_info *info; GSList *service_list = NULL; enum connman_service_state state = CONNMAN_SESSION_STATE_DISCONNECTED; g_hash_table_iter_init(&iter, service_hash); while (g_hash_table_iter_next(&iter, &key, &value)) { struct connman_service_info *info = value; state = connman_service_get_state(info->service); if (is_session_connected(session, state)) service_list = g_slist_prepend(service_list, info->service); } service_list = g_slist_reverse(service_list); service = policy->get_service_for_session(session, service_list); if (service) { info = g_hash_table_lookup(service_hash, service); DBG("session %p add service %p", session, info->service); info->sessions = g_slist_prepend(info->sessions, session); session->service = info->service; update_session_state(session); } g_slist_free(service_list); return; } g_hash_table_iter_init(&iter, service_hash); while (g_hash_table_iter_next(&iter, &key, &value)) { struct connman_service_info *info = value; enum connman_service_state state; state = connman_service_get_state(info->service); if (is_session_connected(session, state) && session_match_service(session, info->service)) { DBG("session %p add service %p", session, info->service); info->sessions = g_slist_prepend(info->sessions, session); session->service = info->service; update_session_state(session); return; } } session_notify(session); }