static void status_presets_set_default (TpConnectionPresenceType state, const gchar *status) { if (default_preset) { status_preset_free (default_preset); } default_preset = status_preset_new (state, status); }
static void status_presets_set_default (McPresence state, const gchar *status) { if (default_preset) { status_preset_free (default_preset); } default_preset = status_preset_new (state, status); }
void empathy_status_presets_set_last (TpConnectionPresenceType state, const gchar *status) { GList *l; StatusPreset *preset; gint num; /* Check if duplicate */ for (l = presets; l; l = l->next) { preset = l->data; if (state == preset->state && !tp_strdiff (status, preset->status)) { return; } } preset = status_preset_new (state, status); presets = g_list_prepend (presets, preset); num = 0; for (l = presets; l; l = l->next) { preset = l->data; if (state != preset->state) { continue; } num++; if (num > STATUS_PRESETS_MAX_EACH) { status_preset_free (preset); presets = g_list_delete_link (presets, l); break; } } status_presets_file_save (); }
static void status_presets_file_parse (const gchar *filename) { xmlParserCtxtPtr ctxt; xmlDocPtr doc; xmlNodePtr presets_node; xmlNodePtr node; DEBUG ("Attempting to parse file:'%s'...", filename); ctxt = xmlNewParserCtxt (); /* Parse and validate the file. */ doc = xmlCtxtReadFile (ctxt, filename, NULL, 0); if (!doc) { g_warning ("Failed to parse file:'%s'", filename); xmlFreeParserCtxt (ctxt); return; } if (!tpaw_xml_validate_from_resource (doc, STATUS_PRESETS_DTD_RESOURCENAME)) { g_warning ("Failed to validate file:'%s'", filename); xmlFreeDoc (doc); xmlFreeParserCtxt (ctxt); return; } /* The root node, presets. */ presets_node = xmlDocGetRootElement (doc); node = presets_node->children; while (node) { if (strcmp ((gchar *) node->name, "status") == 0 || strcmp ((gchar *) node->name, "default") == 0) { TpConnectionPresenceType state; gchar *status; gchar *state_str; StatusPreset *preset; gboolean is_default = FALSE; if (strcmp ((gchar *) node->name, "default") == 0) { is_default = TRUE; } status = (gchar *) xmlNodeGetContent (node); state_str = (gchar *) xmlGetProp (node, (const xmlChar *) "presence"); if (state_str) { state = empathy_presence_from_str (state_str); if (empathy_status_presets_is_valid (state)) { if (is_default) { DEBUG ("Default status preset state is:" " '%s', status:'%s'", state_str, status); status_presets_set_default (state, status); } else { preset = status_preset_new (state, status); presets = g_list_append (presets, preset); } } } xmlFree (status); xmlFree (state_str); } node = node->next; } /* Use the default if not set */ if (!default_preset) { status_presets_set_default (TP_CONNECTION_PRESENCE_TYPE_OFFLINE, NULL); } DEBUG ("Parsed %d status presets", g_list_length (presets)); xmlFreeDoc (doc); xmlFreeParserCtxt (ctxt); }