From f2729765055c02cc70bfd23c982b9e8c242095ec Mon Sep 17 00:00:00 2001 From: Jari Matilainen Date: Fri, 13 Jan 2017 16:45:20 +0000 Subject: [PATCH] Helper function for getting window item type --- src/fe-common/core/window-items.c | 17 +++++++++++++++++ src/fe-common/core/window-items.h | 11 +++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/fe-common/core/window-items.c b/src/fe-common/core/window-items.c index bd6ae5e9..7d864e3e 100644 --- a/src/fe-common/core/window-items.c +++ b/src/fe-common/core/window-items.c @@ -138,6 +138,23 @@ void window_item_set_active(WINDOW_REC *window, WI_ITEM_REC *item) } } +WindowType window_item_get_type(WI_ITEM_REC *item) +{ + g_return_val_if_fail(item != NULL, WITEM_TYPE_OTHER); + + const char *type = module_find_id_str("WINDOW ITEM TYPE", item->type); + if (g_ascii_strcasecmp(type, "CHANNEL") == 0) + return WITEM_TYPE_CHANNEL; + else if (g_ascii_strcasecmp(type, "QUERY") == 0) { + if (g_str_has_prefix("=", item->name)) + return WITEM_TYPE_QUERY | WITEM_TYPE_DCCCHAT; + else + return WITEM_TYPE_QUERY | WITEM_TYPE_PRIVMSG; + } + else + return WITEM_TYPE_OTHER; +} + /* Return TRUE if `item' is the active window item in the window. `item' can be NULL. */ int window_item_is_active(WI_ITEM_REC *item) diff --git a/src/fe-common/core/window-items.h b/src/fe-common/core/window-items.h index f8db3c39..96f3cfe9 100644 --- a/src/fe-common/core/window-items.h +++ b/src/fe-common/core/window-items.h @@ -3,6 +3,14 @@ #include "fe-windows.h" +typedef enum { + WITEM_TYPE_CHANNEL = 1, + WITEM_TYPE_QUERY = 2, + WITEM_TYPE_PRIVMSG = 4, + WITEM_TYPE_DCCCHAT = 8, + WITEM_TYPE_OTHER = 16 +} WindowType; + /* Add/remove/destroy window item from `window' */ void window_item_add(WINDOW_REC *window, WI_ITEM_REC *item, int automatic); void window_item_remove(WI_ITEM_REC *item); @@ -23,6 +31,9 @@ int window_item_is_active(WI_ITEM_REC *item); void window_item_prev(WINDOW_REC *window); void window_item_next(WINDOW_REC *window); +// return WindowType depending on what WI_ITEM_REC is +WindowType window_item_get_type(WI_ITEM_REC *item); + /* Find wanted window item by name. `server' can be NULL. */ WI_ITEM_REC *window_item_find(void *server, const char *name); WI_ITEM_REC *window_item_find_window(WINDOW_REC *window,