#include <libxml/parser.h>
#include <libxml/tree.h>
-#include <telepathy-glib/util.h>
-
#include "empathy-utils.h"
#include "empathy-status-presets.h"
}
status = (gchar *) xmlNodeGetContent (node);
- state_str = (gchar *) xmlGetProp (node, "presence");
+ state_str = (gchar *) xmlGetProp (node, (const xmlChar *) "presence");
if (state_str) {
state = empathy_presence_from_str (state_str);
-
- 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);
+ 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);
+ }
}
}
presets = NULL;
}
- dir = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, NULL);
+ dir = g_build_filename (g_get_user_config_dir (), PACKAGE_NAME, NULL);
g_mkdir_with_parents (dir, S_IRUSR | S_IWUSR | S_IXUSR);
file_with_path = g_build_filename (dir, STATUS_PRESETS_XML_FILENAME, NULL);
g_free (dir);
count[i] = 0;
}
- dir = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, NULL);
+ dir = g_build_filename (g_get_user_config_dir (), PACKAGE_NAME, NULL);
g_mkdir_with_parents (dir, S_IRUSR | S_IWUSR | S_IXUSR);
file = g_build_filename (dir, STATUS_PRESETS_XML_FILENAME, NULL);
g_free (dir);
- doc = xmlNewDoc ("1.0");
- root = xmlNewNode (NULL, "presets");
+ doc = xmlNewDoc ((const xmlChar *) "1.0");
+ root = xmlNewNode (NULL, (const xmlChar *) "presets");
xmlDocSetRootElement (doc, root);
if (default_preset) {
xmlNodePtr subnode;
xmlChar *state;
- state = (gchar *) empathy_presence_to_str (default_preset->state);
+ state = (xmlChar *) empathy_presence_to_str (default_preset->state);
- subnode = xmlNewTextChild (root, NULL, "default",
- default_preset->status);
- xmlNewProp (subnode, "presence", state);
+ subnode = xmlNewTextChild (root, NULL, (const xmlChar *) "default",
+ (const xmlChar *) default_preset->status);
+ xmlNewProp (subnode, (const xmlChar *) "presence", state);
}
for (l = presets; l; l = l->next) {
xmlChar *state;
sp = l->data;
- state = (gchar *) empathy_presence_to_str (sp->state);
+ state = (xmlChar *) empathy_presence_to_str (sp->state);
count[sp->state]++;
if (count[sp->state] > STATUS_PRESETS_MAX_EACH) {
}
subnode = xmlNewTextChild (root, NULL,
- "status", sp->status);
- xmlNewProp (subnode, "presence", state);
+ (const xmlChar *) "status", (const xmlChar *) sp->status);
+ xmlNewProp (subnode, (const xmlChar *) "presence", state);
}
/* Make sure the XML is indented properly */
status_presets_file_save ();
}
+
+/**
+ * empathy_status_presets_is_valid:
+ * @state: a #TpConnectionPresenceType
+ *
+ * Check if a presence type can be used as a preset.
+ *
+ * Returns: %TRUE if the presence type can be used as a preset.
+ */
+gboolean
+empathy_status_presets_is_valid (TpConnectionPresenceType state)
+{
+ switch (state) {
+ case TP_CONNECTION_PRESENCE_TYPE_UNSET:
+ case TP_CONNECTION_PRESENCE_TYPE_OFFLINE:
+ case TP_CONNECTION_PRESENCE_TYPE_UNKNOWN:
+ case TP_CONNECTION_PRESENCE_TYPE_ERROR:
+ return FALSE;
+
+ case TP_CONNECTION_PRESENCE_TYPE_AVAILABLE:
+ case TP_CONNECTION_PRESENCE_TYPE_AWAY:
+ case TP_CONNECTION_PRESENCE_TYPE_EXTENDED_AWAY:
+ case TP_CONNECTION_PRESENCE_TYPE_HIDDEN:
+ case TP_CONNECTION_PRESENCE_TYPE_BUSY:
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
+}