1 /*
2  * Nautilus-Actions
3  * A Nautilus extension which offers configurable context menu actions.
4  *
5  * Copyright (C) 2005 The GNOME Foundation
6  * Copyright (C) 2006-2008 Frederic Ruaudel and others (see AUTHORS)
7  * Copyright (C) 2009-2014 Pierre Wieser and others (see AUTHORS)
8  *
9  * Nautilus-Actions is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License as
11  * published by the Free Software Foundation; either version 2 of
12  * the License, or (at your option) any later version.
13  *
14  * Nautilus-Actions is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with Nautilus-Actions; see the file COPYING. If not, see
21  * <http://www.gnu.org/licenses/>.
22  *
23  * Authors:
24  *   Frederic Ruaudel <grumz@grumz.net>
25  *   Rodrigo Moya <rodrigo@gnome-db.org>
26  *   Pierre Wieser <pwieser@trychlos.org>
27  *   ... and many others (see AUTHORS)
28  */
29 
30 #ifndef __NAUTILUS_ACTIONS_API_NA_TIMEOUT_H__
31 #define __NAUTILUS_ACTIONS_API_NA_TIMEOUT_H__
32 
33 /**
34  * SECTION: timeout
35  * @title: NATimeout
36  * @short_description: The NATimeout Structure
37  * @include: nautilus-actions/na-timeout.h
38  *
39  * The NATimeout structure is a convenience structure to manage timeout
40  * functions.
41  *
42  * Since: 3.1
43  */
44 
45 #include <glib-object.h>
46 
47 G_BEGIN_DECLS
48 
49 /**
50  * NATimeoutFunc:
51  * @user_data: data to be passed to the callback function.
52  *
53  * Prototype of the callback function.
54  *
55  * Since: 3.1
56  */
57 typedef void ( *NATimeoutFunc )( void *user_data );
58 
59 /**
60  * NATimeout:
61  * @timeout:   (i) timeout configurable parameter (ms)
62  * @handler:   (i) handler function
63  * @user_data: (i) user data
64  *
65  * This structure let the user (i.e. the code which uses it) manage functions
66  * which should only be called after some time of inactivity, which is typically
67  * the case of 'item-change' handlers.
68  *
69  * The structure is supposed to be initialized at construction time with
70  * @timeout in milliseconds, @handler and @user_data input parameters.
71  * The private data should be set to %NULL.
72  *
73  * Such a structure must be allocated for each managed event.
74  *
75  * When an event is detected, the na_timeout_event() function must be called
76  * with this structure. The function makes sure that the @handler callback
77  * will be triggered as soon as no event will be recorded after @timeout
78  * milliseconds of inactivity.
79  *
80  * Since: 3.1
81  */
82 typedef struct {
83 	/*< public >*/
84 	guint         timeout;
85 	NATimeoutFunc handler;
86 	gpointer      user_data;
87 	/*< private >*/
88 	GTimeVal      last_time;
89 	guint         source_id;
90 }
91 	NATimeout;
92 
93 void na_timeout_event( NATimeout *timeout );
94 
95 G_END_DECLS
96 
97 #endif /* __NAUTILUS_ACTIONS_API_NA_TIMEOUT_H__ */
98