The list contains key-value pairs (of `PurpleKeyValuePair` type now, but
`struct siphdrelement` before) so using `g_ascii_strcasecmp` directly
does not work.
/*
* finch
*
* Finch is the legal property of its developers, whose names are too numerous
* to list here. Please refer to the COPYRIGHT file distributed with this
* source distribution.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
#include<internal.h>
#include"finch.h"
#include NCURSES_HEADER
#include<purple.h>
#include"gntbox.h"
#include"gntcolors.h"
#include"gntcombobox.h"
#include"gntentry.h"
#include"gntxfer.h"
#include"gntlabel.h"
#include"gntline.h"
#include"gntlog.h"
#include"gntmenu.h"
#include"gntmenuitem.h"
#include"gntmenuitemcheck.h"
#include"gntmenuutil.h"
#include"gntpounce.h"
#include"gntstyle.h"
#include"gnttree.h"
#include"gntutils.h"
#include"gntwindow.h"
#include"gntblist.h"
#include"gntconv.h"
#include"gntstatus.h"
#include<string.h>
#define PREF_ROOT "/finch/blist"
#define TYPING_TIMEOUT_S 4
#define SHOW_EMPTY_GROUP_TIMEOUT 60
struct_FinchBuddyList{
PurpleBuddyListparent;
GntWidget*window;
GntWidget*tree;
GntWidget*tooltip;
PurpleBlistNode*tnode;/* Who is the tooltip being displayed for? */
GList*tagged;/* A list of tagged blistnodes */
GntWidget*context;
PurpleBlistNode*cnode;
/* XXX: I am KISSing */
GntWidget*status;/* Dropdown with the statuses */
GntWidget*statustext;/* Status message */
inttyping;
GntWidget*menu;
/* These are the menuitems that get regenerated */
GntMenuItem*accounts;
GntMenuItem*plugins;
GntMenuItem*grouping;
/* When a new group is manually added, it is empty, but we still want to show it
* for a while (SHOW_EMPTY_GROUP_TIMEOUT seconds) even if 'show empty groups' is
* not selected.
*/
GList*new_group;
guintnew_group_timeout;
FinchBlistManager*manager;
};
typedefstruct
{
gpointerrow;/* the row in the GntTree */
guintsigned_timer;/* used when 'recently' signed on/off */