1/****************************************************************************
2**
3** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: http://www.qt-project.org/
5**
6** This file is part of the QtGui module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** GNU Lesser General Public License Usage
10** This file may be used under the terms of the GNU Lesser General Public
11** License version 2.1 as published by the Free Software Foundation and
12** appearing in the file LICENSE.LGPL included in the packaging of this
13** file. Please review the following information to ensure the GNU Lesser
14** General Public License version 2.1 requirements will be met:
15** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
16**
17** In addition, as a special exception, Nokia gives you certain additional
18** rights. These rights are described in the Nokia Qt LGPL Exception
19** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
20**
21** GNU General Public License Usage
22** Alternatively, this file may be used under the terms of the GNU General
23** Public License version 3.0 as published by the Free Software Foundation
24** and appearing in the file LICENSE.GPL included in the packaging of this
25** file. Please review the following information to ensure the GNU General
26** Public License version 3.0 requirements will be met:
27** http://www.gnu.org/copyleft/gpl.html.
28**
29** Other Usage
30** Alternatively, this file may be used in accordance with the terms and
31** conditions contained in a signed written agreement between you and Nokia.
32**
33**
34**
35**
36**
37**
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#ifndef QDESKTOPWIDGET_H
43#define QDESKTOPWIDGET_H
44
45#include <QtGui/qwidget.h>
46
47QT_BEGIN_HEADER
48
49QT_BEGIN_NAMESPACE
50
51QT_MODULE(Gui)
52
53class QApplication;
54class QDesktopWidgetPrivate;
55
56class Q_GUI_EXPORT QDesktopWidget : public QWidget
57{
58 Q_OBJECT
59 Q_PROPERTY(bool virtualDesktop READ isVirtualDesktop)
60 Q_PROPERTY(int screenCount READ screenCount NOTIFY screenCountChanged)
61 Q_PROPERTY(int primaryScreen READ primaryScreen)
62public:
63 QDesktopWidget();
64 ~QDesktopWidget();
65
66 bool isVirtualDesktop() const;
67
68 int numScreens() const;
69 int screenCount() const;
70 int primaryScreen() const;
71
72 int screenNumber(const QWidget *widget = 0) const;
73 int screenNumber(const QPoint &) const;
74
75 QWidget *screen(int screen = -1);
76
77 const QRect screenGeometry(int screen = -1) const;
78 const QRect screenGeometry(const QWidget *widget) const;
79 const QRect screenGeometry(const QPoint &point) const
80 { return screenGeometry(screenNumber(point)); }
81
82 const QRect availableGeometry(int screen = -1) const;
83 const QRect availableGeometry(const QWidget *widget) const;
84 const QRect availableGeometry(const QPoint &point) const
85 { return availableGeometry(screenNumber(point)); }
86
87Q_SIGNALS:
88 void resized(int);
89 void workAreaResized(int);
90 void screenCountChanged(int);
91
92protected:
93 void resizeEvent(QResizeEvent *e);
94
95private:
96 Q_DISABLE_COPY(QDesktopWidget)
97 Q_DECLARE_PRIVATE(QDesktopWidget)
98
99 friend class QApplication;
100 friend class QApplicationPrivate;
101};
102
103inline int QDesktopWidget::screenCount() const
104{ return numScreens(); }
105
106QT_END_NAMESPACE
107
108QT_END_HEADER
109
110#endif // QDESKTOPWIDGET_H
111