Implemented entry into power saving state when application is in background,
[situare] / src / application.h
1 /*
2    Situare - A location system for Facebook
3    Copyright (C) 2010  Ixonos Plc. Authors:
4
5       Henri Lampela - henri.lampela@ixonos.com
6
7    Situare is free software; you can redistribute it and/or
8    modify it under the terms of the GNU General Public License
9    version 2 as published by the Free Software Foundation.
10
11    Situare is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with Situare; if not, write to the Free Software
18    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
19    USA.
20 */
21
22 #ifndef APPLICATION_H
23 #define APPLICATION_H
24
25 #include <QApplication>
26
27 /**
28 * @brief Application class is a subclass of QApplication
29 *
30 * This class handles X11 events
31 */
32 class Application : public QApplication
33 {
34     Q_OBJECT
35 public:
36
37     /**
38     * @brief Constructor
39     *
40     * @param argc number of arguments
41     * @param argv arguments
42     */
43     Application(int &argc, char **argv);
44
45     /**
46     * @brief Registers window
47     *
48     * @param wId window id
49     */
50     void registerWindow(WId wId);
51
52     /**
53     * @brief Unregisters window
54     *
55     * @param wId window id
56     */
57     void unregisterWindow(WId wId);
58
59 private:
60
61     /**
62     * @brief Return active window
63     *
64     * @param display display
65     * @param rootWindow rootwindow
66     * @return WId window id
67     */
68     WId activeDesktopWindow(Display *display, WId rootWindow);
69
70     /**
71     * @brief Event filter for window
72     *
73     * @param event window event
74     * @return bool Return true if you want to stop the event from being processed.
75     *         Return false for normal event dispatching
76     */
77     bool x11EventFilter(XEvent *event);
78
79 signals:
80
81     /**
82     * @brief Signals when window state is changed
83     *
84     * @param topmost true for topmost either false
85     */
86     void topmostChanged(bool topmost);
87
88 private:
89
90     bool m_topmost; ///< Flag for topmost
91
92     QList<WId> m_windows; ///< List of window ids
93 };
94
95 #endif // APPLICATION_H