68ee327b558a4eb77f378711d5592be21ce39a4d
[gpssportsniffer] / satellitedialog.h
1  /****************************************************************************
2  **
3  ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4  ** All rights reserved.
5  ** Contact: Nokia Corporation (qt-info@nokia.com)
6  **
7  ** This file is part of the examples of the Qt Mobility Components.
8  **
9  ** $QT_BEGIN_LICENSE:BSD$
10  ** You may use this file under the terms of the BSD license as follows:
11  **
12  ** "Redistribution and use in source and binary forms, with or without
13  ** modification, are permitted provided that the following conditions are
14  ** met:
15  **   * Redistributions of source code must retain the above copyright
16  **     notice, this list of conditions and the following disclaimer.
17  **   * Redistributions in binary form must reproduce the above copyright
18  **     notice, this list of conditions and the following disclaimer in
19  **     the documentation and/or other materials provided with the
20  **     distribution.
21  **   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
22  **     the names of its contributors may be used to endorse or promote
23  **     products derived from this software without specific prior written
24  **     permission.
25  **
26  ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27  ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28  ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29  ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30  ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31  ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32  ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33  ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34  ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35  ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36  ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
37  ** $QT_END_LICENSE$
38  **
39  ****************************************************************************/
40
41  #ifndef QGEOSATELLITEDIALOG_H
42  #define QGEOSATELLITEDIALOG_H
43
44  #include <QObject>
45  #include <QDialog>
46
47  #include <qmobilityglobal.h>
48
49  QTM_BEGIN_NAMESPACE
50  class QGeoPositionInfoSource;
51  class QGeoPositionInfo;
52  class QGeoSatelliteInfoSource;
53  class QGeoSatelliteInfo;
54  QTM_END_NAMESPACE
55
56  class SatelliteWidget;
57
58  class QPushButton;
59  class QTimer;
60
61  QTM_USE_NAMESPACE
62
63  class SatelliteDialog : public QDialog
64  {
65      Q_OBJECT
66
67  public:
68      enum ExitBehaviour {
69          ExitOnFixOrCancel,
70          ExitOnCancel
71      };
72
73      enum Ordering {
74          OrderBySignalStrength,
75          OrderByPrnNumber
76      };
77
78      enum StrengthScaling {
79          ScaleToMaxAvailable,
80          ScaleToMaxPossible
81      };
82
83      SatelliteDialog(QWidget *parent = 0,
84                      int noSatelliteTimeoutSeconds = 30,
85                      ExitBehaviour exitBehaviour = ExitOnFixOrCancel,
86                      Ordering ordering = OrderBySignalStrength,
87                      StrengthScaling scaling = ScaleToMaxPossible);
88
89      void connectSources(QGeoPositionInfoSource *posSource, QGeoSatelliteInfoSource *satSource);
90
91      ExitBehaviour exitBehaviour() const;
92      void setExitBehaviour(ExitBehaviour exitBehaviour);
93
94      Ordering ordering() const;
95      void setOrdering(Ordering ordering);
96
97      StrengthScaling strengthScaling() const;
98      void setStrengthScaling(StrengthScaling scaling);
99
100  private slots:
101      void positionUpdated(const QGeoPositionInfo &pos);
102
103      void satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &list);
104      void satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &list);
105
106      void switchButtonClicked();
107      void noSatelliteTimeout();
108  /*#if defined(Q_OS_SYMBIAN)
109      // workaround for QTBUG-4771
110      void restoreWindowTitle();
111  #endif*/
112
113  private:
114      int m_noSatelliteTimeoutSeconds;
115      ExitBehaviour m_exitBehaviour;
116      Ordering m_ordering;
117      StrengthScaling m_scaling;
118
119      QTimer *noSatelliteTimer;
120
121      SatelliteWidget *satelliteWidget;
122      QPushButton *switchButton;
123      QPushButton *cancelButton;
124  /*#if defined(Q_OS_SYMBIAN)
125      // workaround for QTBUG-4771
126      QString oldTitle;
127  #endif*/
128  };
129
130  #endif // #ifndef QGEOSATELLITEDIALOG_H