Added /roster order name|presence
This commit is contained in:
@@ -277,6 +277,7 @@ static struct cmd_t command_defs[] =
|
|||||||
"/roster show [offline|resource|presence|status|empty]",
|
"/roster show [offline|resource|presence|status|empty]",
|
||||||
"/roster hide [offline|resource|presence|status|empty]",
|
"/roster hide [offline|resource|presence|status|empty]",
|
||||||
"/roster by group|presence|none",
|
"/roster by group|presence|none",
|
||||||
|
"/roster order name|presence"
|
||||||
"/roster size <percent>",
|
"/roster size <percent>",
|
||||||
"/roster add <jid> [<nick>]",
|
"/roster add <jid> [<nick>]",
|
||||||
"/roster remove <jid>",
|
"/roster remove <jid>",
|
||||||
@@ -303,6 +304,8 @@ static struct cmd_t command_defs[] =
|
|||||||
{ "by group", "Group contacts in the roster panel by roster group." },
|
{ "by group", "Group contacts in the roster panel by roster group." },
|
||||||
{ "by presence", "Group contacts in the roster panel by presence." },
|
{ "by presence", "Group contacts in the roster panel by presence." },
|
||||||
{ "by none", "No grouping in the roster panel." },
|
{ "by none", "No grouping in the roster panel." },
|
||||||
|
{ "order name", "Order roster items by name only." },
|
||||||
|
{ "order presence", "Order roster items by presence, and then by name." },
|
||||||
{ "size <precent>", "Percentage of the screen taken up by the roster (1-99)." },
|
{ "size <precent>", "Percentage of the screen taken up by the roster (1-99)." },
|
||||||
{ "add <jid> [<nick>]", "Add a new item to the roster." },
|
{ "add <jid> [<nick>]", "Add a new item to the roster." },
|
||||||
{ "remove <jid>", "Removes an item from the roster." },
|
{ "remove <jid>", "Removes an item from the roster." },
|
||||||
@@ -1771,6 +1774,7 @@ static Autocomplete wins_ac;
|
|||||||
static Autocomplete roster_ac;
|
static Autocomplete roster_ac;
|
||||||
static Autocomplete roster_option_ac;
|
static Autocomplete roster_option_ac;
|
||||||
static Autocomplete roster_by_ac;
|
static Autocomplete roster_by_ac;
|
||||||
|
static Autocomplete roster_order_ac;
|
||||||
static Autocomplete roster_remove_all_ac;
|
static Autocomplete roster_remove_all_ac;
|
||||||
static Autocomplete group_ac;
|
static Autocomplete group_ac;
|
||||||
static Autocomplete bookmark_ac;
|
static Autocomplete bookmark_ac;
|
||||||
@@ -2014,6 +2018,7 @@ cmd_init(void)
|
|||||||
autocomplete_add(roster_ac, "show");
|
autocomplete_add(roster_ac, "show");
|
||||||
autocomplete_add(roster_ac, "hide");
|
autocomplete_add(roster_ac, "hide");
|
||||||
autocomplete_add(roster_ac, "by");
|
autocomplete_add(roster_ac, "by");
|
||||||
|
autocomplete_add(roster_ac, "order");
|
||||||
autocomplete_add(roster_ac, "size");
|
autocomplete_add(roster_ac, "size");
|
||||||
|
|
||||||
roster_option_ac = autocomplete_new();
|
roster_option_ac = autocomplete_new();
|
||||||
@@ -2028,6 +2033,10 @@ cmd_init(void)
|
|||||||
autocomplete_add(roster_by_ac, "presence");
|
autocomplete_add(roster_by_ac, "presence");
|
||||||
autocomplete_add(roster_by_ac, "none");
|
autocomplete_add(roster_by_ac, "none");
|
||||||
|
|
||||||
|
roster_order_ac = autocomplete_new();
|
||||||
|
autocomplete_add(roster_order_ac, "name");
|
||||||
|
autocomplete_add(roster_order_ac, "presence");
|
||||||
|
|
||||||
roster_remove_all_ac = autocomplete_new();
|
roster_remove_all_ac = autocomplete_new();
|
||||||
autocomplete_add(roster_remove_all_ac, "contacts");
|
autocomplete_add(roster_remove_all_ac, "contacts");
|
||||||
|
|
||||||
@@ -2282,6 +2291,7 @@ cmd_uninit(void)
|
|||||||
autocomplete_free(roster_ac);
|
autocomplete_free(roster_ac);
|
||||||
autocomplete_free(roster_option_ac);
|
autocomplete_free(roster_option_ac);
|
||||||
autocomplete_free(roster_by_ac);
|
autocomplete_free(roster_by_ac);
|
||||||
|
autocomplete_free(roster_order_ac);
|
||||||
autocomplete_free(roster_remove_all_ac);
|
autocomplete_free(roster_remove_all_ac);
|
||||||
autocomplete_free(group_ac);
|
autocomplete_free(group_ac);
|
||||||
autocomplete_free(bookmark_ac);
|
autocomplete_free(bookmark_ac);
|
||||||
@@ -2468,6 +2478,7 @@ cmd_reset_autocomplete(ProfWin *window)
|
|||||||
autocomplete_reset(roster_ac);
|
autocomplete_reset(roster_ac);
|
||||||
autocomplete_reset(roster_option_ac);
|
autocomplete_reset(roster_option_ac);
|
||||||
autocomplete_reset(roster_by_ac);
|
autocomplete_reset(roster_by_ac);
|
||||||
|
autocomplete_reset(roster_order_ac);
|
||||||
autocomplete_reset(roster_remove_all_ac);
|
autocomplete_reset(roster_remove_all_ac);
|
||||||
autocomplete_reset(group_ac);
|
autocomplete_reset(group_ac);
|
||||||
autocomplete_reset(titlebar_ac);
|
autocomplete_reset(titlebar_ac);
|
||||||
@@ -2881,6 +2892,10 @@ _roster_autocomplete(ProfWin *window, const char *const input)
|
|||||||
if (result) {
|
if (result) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
result = autocomplete_param_with_ac(input, "/roster order", roster_order_ac, TRUE);
|
||||||
|
if (result) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
result = autocomplete_param_with_ac(input, "/roster", roster_ac, TRUE);
|
result = autocomplete_param_with_ac(input, "/roster", roster_ac, TRUE);
|
||||||
if (result) {
|
if (result) {
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -1872,6 +1872,26 @@ cmd_roster(ProfWin *window, const char *const command, gchar **args)
|
|||||||
cons_bad_cmd_usage(command);
|
cons_bad_cmd_usage(command);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
// roster item order
|
||||||
|
} else if (g_strcmp0(args[0], "order") == 0) {
|
||||||
|
if (g_strcmp0(args[1], "name") == 0) {
|
||||||
|
cons_show("Ordering roster by name");
|
||||||
|
prefs_set_string(PREF_ROSTER_ORDER, "name");
|
||||||
|
if (conn_status == JABBER_CONNECTED) {
|
||||||
|
rosterwin_roster();
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
} else if (g_strcmp0(args[1], "presence") == 0) {
|
||||||
|
cons_show("Ordering roster by presence");
|
||||||
|
prefs_set_string(PREF_ROSTER_ORDER, "presence");
|
||||||
|
if (conn_status == JABBER_CONNECTED) {
|
||||||
|
rosterwin_roster();
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
cons_bad_cmd_usage(command);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
// add contact
|
// add contact
|
||||||
} else if (strcmp(args[0], "add") == 0) {
|
} else if (strcmp(args[0], "add") == 0) {
|
||||||
if (conn_status != JABBER_CONNECTED) {
|
if (conn_status != JABBER_CONNECTED) {
|
||||||
|
|||||||
@@ -601,6 +601,7 @@ _get_group(preference_t pref)
|
|||||||
case PREF_ROSTER_STATUS:
|
case PREF_ROSTER_STATUS:
|
||||||
case PREF_ROSTER_EMPTY:
|
case PREF_ROSTER_EMPTY:
|
||||||
case PREF_ROSTER_BY:
|
case PREF_ROSTER_BY:
|
||||||
|
case PREF_ROSTER_ORDER:
|
||||||
case PREF_RESOURCE_TITLE:
|
case PREF_RESOURCE_TITLE:
|
||||||
case PREF_RESOURCE_MESSAGE:
|
case PREF_RESOURCE_MESSAGE:
|
||||||
case PREF_ENC_WARN:
|
case PREF_ENC_WARN:
|
||||||
@@ -778,6 +779,8 @@ _get_key(preference_t pref)
|
|||||||
return "roster.empty";
|
return "roster.empty";
|
||||||
case PREF_ROSTER_BY:
|
case PREF_ROSTER_BY:
|
||||||
return "roster.by";
|
return "roster.by";
|
||||||
|
case PREF_ROSTER_ORDER:
|
||||||
|
return "roster.order";
|
||||||
case PREF_RESOURCE_TITLE:
|
case PREF_RESOURCE_TITLE:
|
||||||
return "resource.title";
|
return "resource.title";
|
||||||
case PREF_RESOURCE_MESSAGE:
|
case PREF_RESOURCE_MESSAGE:
|
||||||
@@ -861,6 +864,8 @@ _get_default_string(preference_t pref)
|
|||||||
return "all";
|
return "all";
|
||||||
case PREF_ROSTER_BY:
|
case PREF_ROSTER_BY:
|
||||||
return "presence";
|
return "presence";
|
||||||
|
case PREF_ROSTER_ORDER:
|
||||||
|
return "name";
|
||||||
case PREF_TIME_CONSOLE:
|
case PREF_TIME_CONSOLE:
|
||||||
return "%H:%M:%S";
|
return "%H:%M:%S";
|
||||||
case PREF_TIME_CHAT:
|
case PREF_TIME_CHAT:
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ typedef enum {
|
|||||||
PREF_ROSTER_STATUS,
|
PREF_ROSTER_STATUS,
|
||||||
PREF_ROSTER_EMPTY,
|
PREF_ROSTER_EMPTY,
|
||||||
PREF_ROSTER_BY,
|
PREF_ROSTER_BY,
|
||||||
|
PREF_ROSTER_ORDER,
|
||||||
PREF_MUC_PRIVILEGES,
|
PREF_MUC_PRIVILEGES,
|
||||||
PREF_PRESENCE,
|
PREF_PRESENCE,
|
||||||
PREF_WRAP,
|
PREF_WRAP,
|
||||||
|
|||||||
@@ -67,7 +67,8 @@ static gboolean _key_equals(void *key1, void *key2);
|
|||||||
static gboolean _datetimes_equal(GDateTime *dt1, GDateTime *dt2);
|
static gboolean _datetimes_equal(GDateTime *dt1, GDateTime *dt2);
|
||||||
static void _replace_name(const char *const current_name, const char *const new_name, const char *const barejid);
|
static void _replace_name(const char *const current_name, const char *const new_name, const char *const barejid);
|
||||||
static void _add_name_and_barejid(const char *const name, const char *const barejid);
|
static void _add_name_and_barejid(const char *const name, const char *const barejid);
|
||||||
static gint _compare_contacts(PContact a, PContact b);
|
static gint _compare_name(PContact a, PContact b);
|
||||||
|
static gint _compare_presence(PContact a, PContact b);
|
||||||
|
|
||||||
void
|
void
|
||||||
roster_clear(void)
|
roster_clear(void)
|
||||||
@@ -373,7 +374,7 @@ roster_get_contacts_by_presence(const char *const presence)
|
|||||||
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
||||||
PContact contact = (PContact)value;
|
PContact contact = (PContact)value;
|
||||||
if (g_strcmp0(p_contact_presence(contact), presence) == 0) {
|
if (g_strcmp0(p_contact_presence(contact), presence) == 0) {
|
||||||
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_contacts);
|
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -381,6 +382,23 @@ roster_get_contacts_by_presence(const char *const presence)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GSList*
|
||||||
|
roster_get_contacts_ord_presence(void)
|
||||||
|
{
|
||||||
|
GSList *result = NULL;
|
||||||
|
GHashTableIter iter;
|
||||||
|
gpointer key;
|
||||||
|
gpointer value;
|
||||||
|
|
||||||
|
g_hash_table_iter_init(&iter, contacts);
|
||||||
|
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
||||||
|
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_presence);
|
||||||
|
}
|
||||||
|
|
||||||
|
// return all contact structs
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
GSList*
|
GSList*
|
||||||
roster_get_contacts(void)
|
roster_get_contacts(void)
|
||||||
{
|
{
|
||||||
@@ -391,7 +409,7 @@ roster_get_contacts(void)
|
|||||||
|
|
||||||
g_hash_table_iter_init(&iter, contacts);
|
g_hash_table_iter_init(&iter, contacts);
|
||||||
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
||||||
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_contacts);
|
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
// return all contact structs
|
// return all contact structs
|
||||||
@@ -409,7 +427,7 @@ roster_get_contacts_online(void)
|
|||||||
g_hash_table_iter_init(&iter, contacts);
|
g_hash_table_iter_init(&iter, contacts);
|
||||||
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
||||||
if(strcmp(p_contact_presence(value), "offline"))
|
if(strcmp(p_contact_presence(value), "offline"))
|
||||||
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_contacts);
|
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
// return all contact structs
|
// return all contact structs
|
||||||
@@ -446,6 +464,26 @@ roster_fulljid_autocomplete(const char *const search_str)
|
|||||||
return autocomplete_complete(fulljid_ac, search_str, TRUE);
|
return autocomplete_complete(fulljid_ac, search_str, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GSList*
|
||||||
|
roster_get_nogroup_ord_presence(void)
|
||||||
|
{
|
||||||
|
GSList *result = NULL;
|
||||||
|
GHashTableIter iter;
|
||||||
|
gpointer key;
|
||||||
|
gpointer value;
|
||||||
|
|
||||||
|
g_hash_table_iter_init(&iter, contacts);
|
||||||
|
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
||||||
|
GSList *groups = p_contact_groups(value);
|
||||||
|
if (groups == NULL) {
|
||||||
|
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_presence);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// return all contact structs
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
GSList*
|
GSList*
|
||||||
roster_get_nogroup(void)
|
roster_get_nogroup(void)
|
||||||
{
|
{
|
||||||
@@ -458,7 +496,31 @@ roster_get_nogroup(void)
|
|||||||
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
||||||
GSList *groups = p_contact_groups(value);
|
GSList *groups = p_contact_groups(value);
|
||||||
if (groups == NULL) {
|
if (groups == NULL) {
|
||||||
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_contacts);
|
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// return all contact structs
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
GSList*
|
||||||
|
roster_get_group_ord_presence(const char *const group)
|
||||||
|
{
|
||||||
|
GSList *result = NULL;
|
||||||
|
GHashTableIter iter;
|
||||||
|
gpointer key;
|
||||||
|
gpointer value;
|
||||||
|
|
||||||
|
g_hash_table_iter_init(&iter, contacts);
|
||||||
|
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
||||||
|
GSList *groups = p_contact_groups(value);
|
||||||
|
while (groups) {
|
||||||
|
if (strcmp(groups->data, group) == 0) {
|
||||||
|
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_presence);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
groups = g_slist_next(groups);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -479,7 +541,7 @@ roster_get_group(const char *const group)
|
|||||||
GSList *groups = p_contact_groups(value);
|
GSList *groups = p_contact_groups(value);
|
||||||
while (groups) {
|
while (groups) {
|
||||||
if (strcmp(groups->data, group) == 0) {
|
if (strcmp(groups->data, group) == 0) {
|
||||||
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_contacts);
|
result = g_slist_insert_sorted(result, value, (GCompareFunc)_compare_name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
groups = g_slist_next(groups);
|
groups = g_slist_next(groups);
|
||||||
@@ -560,7 +622,7 @@ _add_name_and_barejid(const char *const name, const char *const barejid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
_compare_contacts(PContact a, PContact b)
|
_compare_name(PContact a, PContact b)
|
||||||
{
|
{
|
||||||
const char * utf8_str_a = NULL;
|
const char * utf8_str_a = NULL;
|
||||||
const char * utf8_str_b = NULL;
|
const char * utf8_str_b = NULL;
|
||||||
@@ -580,3 +642,43 @@ _compare_contacts(PContact a, PContact b)
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gint
|
||||||
|
_get_presence_weight(const char *presence)
|
||||||
|
{
|
||||||
|
if (g_strcmp0(presence, "chat") == 0) {
|
||||||
|
return 0;
|
||||||
|
} else if (g_strcmp0(presence, "online") == 0) {
|
||||||
|
return 1;
|
||||||
|
} else if (g_strcmp0(presence, "away") == 0) {
|
||||||
|
return 2;
|
||||||
|
} else if (g_strcmp0(presence, "xa") == 0) {
|
||||||
|
return 3;
|
||||||
|
} else if (g_strcmp0(presence, "dnd") == 0) {
|
||||||
|
return 4;
|
||||||
|
} else { // offline
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static gint
|
||||||
|
_compare_presence(PContact a, PContact b)
|
||||||
|
{
|
||||||
|
const char *presence_a = p_contact_presence(a);
|
||||||
|
const char *presence_b = p_contact_presence(b);
|
||||||
|
|
||||||
|
// if presence different, order by presence
|
||||||
|
if (g_strcmp0(presence_a, presence_b) != 0) {
|
||||||
|
int weight_a = _get_presence_weight(presence_a);
|
||||||
|
int weight_b = _get_presence_weight(presence_b);
|
||||||
|
if (weight_a < weight_b) {
|
||||||
|
return -1;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// otherwise order by name
|
||||||
|
} else {
|
||||||
|
return _compare_name(a, b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -55,16 +55,19 @@ gboolean roster_add(const char *const barejid, const char *const name, GSList *g
|
|||||||
gboolean pending_out);
|
gboolean pending_out);
|
||||||
char* roster_barejid_from_name(const char *const name);
|
char* roster_barejid_from_name(const char *const name);
|
||||||
GSList* roster_get_contacts(void);
|
GSList* roster_get_contacts(void);
|
||||||
|
GSList* roster_get_contacts_ord_presence(void);
|
||||||
GSList* roster_get_contacts_online(void);
|
GSList* roster_get_contacts_online(void);
|
||||||
gboolean roster_has_pending_subscriptions(void);
|
gboolean roster_has_pending_subscriptions(void);
|
||||||
char* roster_contact_autocomplete(const char *const search_str);
|
char* roster_contact_autocomplete(const char *const search_str);
|
||||||
char* roster_fulljid_autocomplete(const char *const search_str);
|
char* roster_fulljid_autocomplete(const char *const search_str);
|
||||||
GSList* roster_get_group(const char *const group);
|
GSList* roster_get_group(const char *const group);
|
||||||
|
GSList* roster_get_group_ord_presence(const char *const group);
|
||||||
GSList* roster_get_groups(void);
|
GSList* roster_get_groups(void);
|
||||||
char* roster_group_autocomplete(const char *const search_str);
|
char* roster_group_autocomplete(const char *const search_str);
|
||||||
char* roster_barejid_autocomplete(const char *const search_str);
|
char* roster_barejid_autocomplete(const char *const search_str);
|
||||||
GSList* roster_get_contacts_by_presence(const char *const presence);
|
GSList* roster_get_contacts_by_presence(const char *const presence);
|
||||||
GSList* roster_get_nogroup(void);
|
GSList* roster_get_nogroup(void);
|
||||||
|
GSList* roster_get_nogroup_ord_presence(void);
|
||||||
char* roster_get_msg_display_name(const char *const barejid, const char *const resource);
|
char* roster_get_msg_display_name(const char *const barejid, const char *const resource);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1226,6 +1226,10 @@ cons_roster_setting(void)
|
|||||||
cons_show("Roster by (/roster) : %s", by);
|
cons_show("Roster by (/roster) : %s", by);
|
||||||
prefs_free_string(by);
|
prefs_free_string(by);
|
||||||
|
|
||||||
|
char *order = prefs_get_string(PREF_ROSTER_ORDER);
|
||||||
|
cons_show("Roster order (/roster) : %s", order);
|
||||||
|
prefs_free_string(order);
|
||||||
|
|
||||||
int size = prefs_get_roster_size();
|
int size = prefs_get_roster_size();
|
||||||
cons_show("Roster size (/roster) : %d", size);
|
cons_show("Roster size (/roster) : %d", size);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -167,7 +167,15 @@ _rosterwin_contacts_by_group(ProfLayoutSplit *layout, char *group)
|
|||||||
g_string_free(title, TRUE);
|
g_string_free(title, TRUE);
|
||||||
wattroff(layout->subwin, theme_attrs(THEME_ROSTER_HEADER));
|
wattroff(layout->subwin, theme_attrs(THEME_ROSTER_HEADER));
|
||||||
|
|
||||||
GSList *contacts = roster_get_group(group);
|
GSList *contacts = NULL;
|
||||||
|
|
||||||
|
char *order = prefs_get_string(PREF_ROSTER_ORDER);
|
||||||
|
if (g_strcmp0(order, "presence") == 0) {
|
||||||
|
contacts = roster_get_group_ord_presence(group);
|
||||||
|
} else {
|
||||||
|
contacts = roster_get_group(group);
|
||||||
|
}
|
||||||
|
|
||||||
if (contacts) {
|
if (contacts) {
|
||||||
GSList *curr_contact = contacts;
|
GSList *curr_contact = contacts;
|
||||||
while (curr_contact) {
|
while (curr_contact) {
|
||||||
@@ -182,7 +190,15 @@ _rosterwin_contacts_by_group(ProfLayoutSplit *layout, char *group)
|
|||||||
static void
|
static void
|
||||||
_rosterwin_contacts_by_no_group(ProfLayoutSplit *layout)
|
_rosterwin_contacts_by_no_group(ProfLayoutSplit *layout)
|
||||||
{
|
{
|
||||||
GSList *contacts = roster_get_nogroup();
|
GSList *contacts = NULL;
|
||||||
|
|
||||||
|
char *order = prefs_get_string(PREF_ROSTER_ORDER);
|
||||||
|
if (g_strcmp0(order, "presence") == 0) {
|
||||||
|
contacts = roster_get_nogroup_ord_presence();
|
||||||
|
} else {
|
||||||
|
contacts = roster_get_nogroup();
|
||||||
|
}
|
||||||
|
|
||||||
if (contacts) {
|
if (contacts) {
|
||||||
wattron(layout->subwin, theme_attrs(THEME_ROSTER_HEADER));
|
wattron(layout->subwin, theme_attrs(THEME_ROSTER_HEADER));
|
||||||
win_printline_nowrap(layout->subwin, " -no group");
|
win_printline_nowrap(layout->subwin, " -no group");
|
||||||
@@ -228,7 +244,15 @@ rosterwin_roster(void)
|
|||||||
g_slist_free_full(groups, free);
|
g_slist_free_full(groups, free);
|
||||||
_rosterwin_contacts_by_no_group(layout);
|
_rosterwin_contacts_by_no_group(layout);
|
||||||
} else {
|
} else {
|
||||||
GSList *contacts = roster_get_contacts();
|
GSList *contacts = NULL;
|
||||||
|
|
||||||
|
char *order = prefs_get_string(PREF_ROSTER_ORDER);
|
||||||
|
if (g_strcmp0(order, "presence") == 0) {
|
||||||
|
contacts = roster_get_contacts_ord_presence();
|
||||||
|
} else {
|
||||||
|
contacts = roster_get_contacts();
|
||||||
|
}
|
||||||
|
|
||||||
if (contacts) {
|
if (contacts) {
|
||||||
werase(layout->subwin);
|
werase(layout->subwin);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user