]> www.infradead.org Git - pidgin-chime.git/commitdiff
Add Do Not Disturb state
authorDavid Woodhouse <dwmw@amazon.co.uk>
Fri, 8 Nov 2019 12:48:24 +0000 (12:48 +0000)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Fri, 8 Nov 2019 12:48:24 +0000 (12:48 +0000)
Also fix chime_availability_name() not to crash when it sees a new state
value that isn't in its list.

chime/chime-contact.c
chime/chime-contact.h
prpl/chime.c

index 84faa32703707f7650c0afb7ac0d06b27a3f1e57..c3d137c5a651356d7743e51a824eac9faec0c0cb 100644 (file)
@@ -59,7 +59,8 @@ G_DEFINE_TYPE(ChimeContact, chime_contact, CHIME_TYPE_OBJECT)
        { CHIME_AVAILABILITY_AWAY,      "away",         N_("Away") },\
        { CHIME_AVAILABILITY_BUSY,      "busy",         N_("Busy") },\
        { CHIME_AVAILABILITY_MOBILE,    "mobile",       N_("Mobile") },\
-       { CHIME_AVAILABILITY_PRIVATE,   "private",      N_("Private") },
+       { CHIME_AVAILABILITY_PRIVATE,   "private",      N_("Private") },\
+       { CHIME_AVAILABILITY_DO_NOT_DISTURB, "dnd",     N_("Do Not Disturb") },
 
 CHIME_DEFINE_ENUM_TYPE(ChimeAvailability, chime_availability, CHIME_AVAILABILITY_VALUES)
 
@@ -69,7 +70,10 @@ const gchar *chime_availability_name(ChimeAvailability av)
        gpointer klass = g_type_class_ref(CHIME_TYPE_AVAILABILITY);
        GEnumValue *val = g_enum_get_value(klass, av);
        g_type_class_unref(klass);
-       return val->value_name;
+       if (val)
+               return val->value_name;
+       else
+               return _("Unknown");
 }
 
 static void unsubscribe_contact(gpointer key, gpointer val, gpointer data);
index 730ace91324a6135b21b24fe5a1a386247f719e2..133ac4d2d085fac5ee7f8c60c8edb13eabe882e9 100644 (file)
@@ -37,6 +37,7 @@ typedef enum {
        CHIME_AVAILABILITY_BUSY,
        CHIME_AVAILABILITY_MOBILE,
        CHIME_AVAILABILITY_PRIVATE,
+       CHIME_AVAILABILITY_DO_NOT_DISTURB,
        CHIME_AVAILABILITY_LAST
 } ChimeAvailability;
 
index 5321b78e95f2b073764d42f2e3a8e0ebc880ef0f..ff34df04b845bc071431608ca6841fea52c3dce0 100644 (file)
@@ -292,6 +292,7 @@ static const PurpleStatusPrimitive purple_statuses[] = {
        [CHIME_AVAILABILITY_BUSY] = PURPLE_STATUS_UNAVAILABLE,
        [CHIME_AVAILABILITY_MOBILE] = PURPLE_STATUS_MOBILE,
        [CHIME_AVAILABILITY_PRIVATE] = PURPLE_STATUS_INVISIBLE,
+       [CHIME_AVAILABILITY_DO_NOT_DISTURB] = PURPLE_STATUS_UNAVAILABLE,
 };
 
 static GList *chime_purple_status_types(PurpleAccount *account)
@@ -302,7 +303,7 @@ static GList *chime_purple_status_types(PurpleAccount *account)
 
        gpointer klass = g_type_class_ref(CHIME_TYPE_AVAILABILITY);
 
-       for (av = CHIME_AVAILABILITY_OFFLINE; av <= CHIME_AVAILABILITY_PRIVATE; av++) {
+       for (av = CHIME_AVAILABILITY_OFFLINE; av < CHIME_AVAILABILITY_LAST; av++) {
                GEnumValue *val = g_enum_get_value(klass, av);
 
                type = purple_status_type_new(purple_statuses[av], val->value_name,