[keyboard] Add a manual layout switch button to the keyboard
[qtopia.git] / devices / ficgta01 / src / plugins / phonevendors / ficgta01 / vendor_ficgta01_p.h
1 /****************************************************************************
2 **
3 ** Copyright (C) 2000-2008 TROLLTECH ASA. All rights reserved.
4 **
5 ** This file is part of the Opensource Edition of the Qtopia Toolkit.
6 **
7 ** This software is licensed under the terms of the GNU General Public
8 ** License (GPL) version 2.
9 **
10 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
11 **
12 ** Contact info@trolltech.com if any conditions of this licensing are
13 ** not clear to you.
14 **
15 **
16 **
17 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
18 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19 **
20 ****************************************************************************/
21
22 #ifndef VENDOR_FICGTA01_P_H
23 #define VENDOR_FICGTA01_P_H
24
25 #include <qmodemservice.h>
26 #include <qmodemcall.h>
27 #include <qmodemcallprovider.h>
28 #include <qmodemsimtoolkit.h>
29 #include <qmodemphonebook.h>
30 #include <qmodempinmanager.h>
31 #include <qmodempreferrednetworkoperators.h>
32 #include <qbandselection.h>
33 #include <qvibrateaccessory.h>
34 #include <qcellbroadcast.h>
35
36 #include <qmodemsiminfo.h>
37
38 #include <qmodemcallvolume.h>
39
40 #include <alsa/asoundlib.h>
41
42
43 class Ficgta01VibrateAccessory;
44
45 class Ficgta01CallProvider : public QModemCallProvider
46 {
47     Q_OBJECT
48 public:
49     Ficgta01CallProvider( QModemService *service );
50     ~Ficgta01CallProvider();
51
52 protected:
53     QModemCallProvider::AtdBehavior atdBehavior() const;
54     void abortDial( uint modemIdentifier, QPhoneCall::Scope scope );
55     QString dialServiceCommand(const QDialOptions&) const;
56     QString dialVoiceCommand(const QDialOptions&) const;
57     QString acceptCallCommand( bool otherActiveCalls ) const;
58
59     // reimplementation
60     void resetModem();
61
62
63 private slots:
64     void cpiNotification( const QString& msg );
65     void cnapNotification( const QString& msg );
66 };
67
68 class Ficgta01PhoneBook : public QModemPhoneBook
69 {
70     Q_OBJECT
71 public:
72     Ficgta01PhoneBook( QModemService *service );
73     ~Ficgta01PhoneBook();
74
75     void sendPhoneBooksReady();
76
77 protected:
78     bool hasModemPhoneBookCache() const;
79     bool hasEmptyPhoneBookIndex() const;
80
81 protected Q_SLOTS:
82     void slotQueryFailed(const QString&);
83
84 protected:
85     bool m_phoneBookWasReady;
86 };
87
88 class Ficgta01PinManager : public QModemPinManager
89 {
90     Q_OBJECT
91 public:
92     Ficgta01PinManager( QModemService *service );
93     ~Ficgta01PinManager();
94
95 protected:
96     bool emptyPinIsReady() const;
97
98 };
99
100 class Ficgta01BandSelection : public QBandSelection
101 {
102     Q_OBJECT
103 public:
104     Ficgta01BandSelection( QModemService *service );
105     ~Ficgta01BandSelection();
106
107 public slots:
108     void requestBand();
109     void requestBands();
110     void setBand( QBandSelection::BandMode mode, const QString& value );
111
112 private slots:
113     void bandQuery( bool ok, const QAtResult& result );
114     void bandList( bool ok, const QAtResult& result );
115     void bandSet( bool ok, const QAtResult& result );
116
117 private:
118     QModemService *service;
119 };
120
121 class Ficgta01ModemService : public QModemService
122 {
123     Q_OBJECT
124 public:
125     Ficgta01ModemService
126         ( const QString& service, QSerialIODeviceMultiplexer *mux,
127           QObject *parent = 0 );
128     ~Ficgta01ModemService();
129
130     void initialize();
131     static void echoCancellation( QAtChat* );
132
133 private slots:
134     void csq( const QString& msg );
135     void csqTimeOut();
136     void firstCsqQuery();
137
138     void ctzv( const QString& msg );
139     void configureDone( bool ok );
140     void reset();
141     void suspend();
142     void wake();
143     void sendSuspendDone();
144
145     void modemDied();
146
147 private slots:
148     void cstatNotification( const QString& msg );
149
150 private:
151     Ficgta01VibrateAccessory* m_vibratorService;
152     Ficgta01PhoneBook* m_phoneBook;
153
154     bool m_phoneBookIsReady;
155     bool m_smsIsReady;
156     QTimer *csqTimer;
157 };
158
159 class  Ficgta01VibrateAccessory : public QVibrateAccessoryProvider
160 {
161     Q_OBJECT
162 public:
163      Ficgta01VibrateAccessory( QModemService *service );
164     ~ Ficgta01VibrateAccessory();
165
166 public slots:
167     void setVibrateNow( const bool value );
168     void setVibrateOnRing( const bool value );
169 };
170
171 class Ficgta01CallVolume : public QModemCallVolume
172 {
173       Q_OBJECT
174 public:
175     
176 explicit Ficgta01CallVolume( Ficgta01ModemService *service);
177 ~Ficgta01CallVolume();
178
179 public slots:
180     void setSpeakerVolume( int volume );
181     void setMicrophoneVolume( int volume );
182     void setSpeakerVolumeRange(int,int);
183     void setMicVolumeRange(int,int);
184
185 protected slots:
186     void volumeLevelRangeQueryDone(bool ok, const QAtResult & result );
187     void volumeLevelQueryDone(bool ok, const QAtResult & result );
188
189 protected:
190     bool hasDelayedInit() const;
191     
192 private:
193     int virtual2real(int volume);
194     int real2virtual(int volumeLevel);
195     Ficgta01ModemService *service;
196     int minVolumeLevel, maxVolumeLevel;
197     int currentVolumeLevel;
198 };
199
200 class Ficgta01PreferredNetworkOperators : public QModemPreferredNetworkOperators
201 {
202     Q_OBJECT
203 public:
204     explicit Ficgta01PreferredNetworkOperators( QModemService *service );
205     ~Ficgta01PreferredNetworkOperators();
206 };
207
208 class DummyCellBroadcast : public QCellBroadcast
209 {
210     Q_OBJECT
211 public:
212     DummyCellBroadcast(QModemService* service);
213
214 public Q_SLOTS:
215     void setChannels(const QList<int>& list);
216 };
217
218 class Ficgta01ModemHiddenFeatures
219 {
220 public:
221     Ficgta01ModemHiddenFeatures( QAtChat* );
222     ~Ficgta01ModemHiddenFeatures();
223
224     void sendHiddenFeatureCommand( int );
225     void enableAEC( int, bool );
226     void enableNoiseReduction( int );
227     void enableNoiseReductionAEC();
228     void disableNoiseReductionAEC();
229
230 private:
231     QAtChat * m_atChat;
232     const QString atPrefix;
233 };
234
235
236 #endif