51 TargetWrapper::~TargetWrapper() |
49 TargetWrapper::~TargetWrapper() |
52 { |
50 { |
53 delete selector; |
51 delete selector; |
54 } |
52 } |
55 |
53 |
56 void TargetWrapper::setBasicApi(bool basic) |
54 void TargetWrapper::init(XQKeyCapture::CapturingFlags flags) |
57 { |
55 { |
58 basicApi = basic; |
56 captureFlags = flags; |
59 } |
|
60 |
|
61 void TargetWrapper::setCallHandlingApi(bool callHandling) |
|
62 { |
|
63 callHandlingApi = callHandling; |
|
64 } |
|
65 |
|
66 |
|
67 void TargetWrapper::init() |
|
68 { |
|
69 try { |
57 try { |
70 delete selector; |
58 delete selector; |
71 |
59 |
72 QT_TRAP_THROWING(selector = CRemConInterfaceSelector::NewL()); |
60 QT_TRAP_THROWING(selector = CRemConInterfaceSelector::NewL()); |
73 |
61 |
74 if (basicApi) { |
62 if (captureFlags & XQKeyCapture::CaptureBasic) { |
75 QT_TRAP_THROWING(target = CRemConCoreApiTarget::NewL(*selector, *this)); |
63 QT_TRAP_THROWING(target = CRemConCoreApiTarget::NewL(*selector, *this)); |
76 QT_TRAP_THROWING(handler = ResponseHandler::NewL(*target)); |
64 QT_TRAP_THROWING(handler = ResponseHandler::NewL(*target)); |
77 } |
65 } |
78 |
66 |
79 if (callHandlingApi) { |
67 if (captureFlags & XQKeyCapture::CaptureCallHandlingExt) { |
80 QT_TRAP_THROWING(targetEx = CRemConCallHandlingTarget::NewL(*selector, *this)); |
68 QT_TRAP_THROWING(targetEx = CRemConCallHandlingTarget::NewL(*selector, *this)); |
81 QT_TRAP_THROWING(handlerEx = ResponseHandlerEx::NewL(*targetEx)); |
69 QT_TRAP_THROWING(handlerEx = ResponseHandlerEx::NewL(*targetEx)); |
82 } |
70 } |
83 |
71 |
84 QT_TRAP_THROWING(selector->OpenTargetL()); |
72 QT_TRAP_THROWING(selector->OpenTargetL()); |
112 Qt::Key key = mapKey(aOperationId); |
100 Qt::Key key = mapKey(aOperationId); |
113 |
101 |
114 switch (aButtonAct) { |
102 switch (aButtonAct) { |
115 case ERemConCoreApiButtonPress: |
103 case ERemConCoreApiButtonPress: |
116 TX_LOG_ARGS("ERemConCoreApiButtonPress"); |
104 TX_LOG_ARGS("ERemConCoreApiButtonPress"); |
117 sendPressKey(key, Qt::NoModifier); |
105 sendKey(QEvent::KeyPress, key, Qt::NoModifier, aOperationId); |
118 break; |
106 break; |
119 case ERemConCoreApiButtonRelease: |
107 case ERemConCoreApiButtonRelease: |
120 TX_LOG_ARGS("ERemConCoreApiButtonRelease"); |
108 TX_LOG_ARGS("ERemConCoreApiButtonRelease"); |
121 sendReleaseKey(key, Qt::NoModifier); |
109 sendKey(QEvent::KeyRelease, key, Qt::NoModifier, aOperationId); |
122 break; |
110 break; |
123 case ERemConCoreApiButtonClick: |
111 case ERemConCoreApiButtonClick: |
124 TX_LOG_ARGS("ERemConCoreApiButtonClick"); |
112 TX_LOG_ARGS("ERemConCoreApiButtonClick"); |
125 sendPressKey(key, Qt::NoModifier); |
113 sendKey(QEvent::KeyPress, key, Qt::NoModifier, aOperationId); |
126 sendReleaseKey(key, Qt::NoModifier); |
114 sendKey(QEvent::KeyRelease, key, Qt::NoModifier, aOperationId); |
127 break; |
115 break; |
128 default: |
116 default: |
129 break; |
117 return; |
130 } |
118 } |
131 |
119 |
132 |
|
133 handler->CompleteAnyKey(aOperationId); |
120 handler->CompleteAnyKey(aOperationId); |
134 |
|
135 } |
121 } |
136 |
122 |
137 void TargetWrapper::AnswerCall() |
123 void TargetWrapper::AnswerCall() |
138 { |
124 { |
139 sendPressKey(Qt::Key_Call, Qt::NoModifier); |
125 sendKey(QEvent::KeyPress, Qt::Key_Call, Qt::NoModifier); |
140 sendReleaseKey(Qt::Key_Call, Qt::NoModifier); |
126 sendKey(QEvent::KeyRelease, Qt::Key_Call, Qt::NoModifier); |
141 handlerEx->CompleteAnyKey(0); |
127 handlerEx->CompleteAnyKey(0); |
142 } |
128 } |
143 |
129 |
144 void TargetWrapper::EndCall() |
130 void TargetWrapper::EndCall() |
145 { |
131 { |
146 sendPressKey(Qt::Key_Hangup, Qt::NoModifier); |
132 sendKey(QEvent::KeyPress, Qt::Key_Hangup, Qt::NoModifier); |
147 sendReleaseKey(Qt::Key_Hangup, Qt::NoModifier); |
133 sendKey(QEvent::KeyRelease, Qt::Key_Hangup, Qt::NoModifier); |
148 handlerEx->CompleteAnyKey(0); |
134 handlerEx->CompleteAnyKey(0); |
149 } |
135 } |
150 |
136 |
151 void TargetWrapper::AnswerEndCall() |
137 void TargetWrapper::AnswerEndCall() |
152 { |
138 { |
153 sendPressKey(Qt::Key_Hangup, Qt::NoModifier); //TODO: Qt::Key_ToggleCallHangup |
139 sendKey(QEvent::KeyPress, Qt::Key_Hangup, Qt::NoModifier); //TODO: Qt::Key_ToggleCallHangup |
154 sendReleaseKey(Qt::Key_Hangup, Qt::NoModifier); |
140 sendKey(QEvent::KeyRelease, Qt::Key_Hangup, Qt::NoModifier); |
155 handlerEx->CompleteAnyKey(0); |
141 handlerEx->CompleteAnyKey(0); |
156 } |
142 } |
157 |
143 |
158 void TargetWrapper::VoiceDial( const TBool aActivate ) |
144 void TargetWrapper::VoiceDial( const TBool aActivate ) |
159 { |
145 { |
182 void TargetWrapper::SpeedDial( const TInt aIndex ) |
168 void TargetWrapper::SpeedDial( const TInt aIndex ) |
183 { |
169 { |
184 Q_UNUSED(aIndex) |
170 Q_UNUSED(aIndex) |
185 } |
171 } |
186 |
172 |
|
173 void TargetWrapper::sendKey(QEvent::Type eventType, Qt::Key key, Qt::KeyboardModifiers modFlags, |
|
174 TRemConCoreApiOperationId aOperationId) |
|
175 { |
|
176 QWidget *widget = getTargetWidget(); |
|
177 if (widget) { |
|
178 QKeyEvent *event = NULL; |
|
179 if (captureFlags & XQKeyCapture::CaptureEnableRemoteExtEvents){ |
|
180 if (eventType == QEvent::KeyPress){ |
|
181 event = QKeyEvent::createExtendedKeyEvent(XQKeyCapture::remoteEventType_KeyPress(), |
|
182 key, modFlags, 0, aOperationId, 0); |
|
183 } else if (eventType == QEvent::KeyRelease){ |
|
184 event = QKeyEvent::createExtendedKeyEvent(XQKeyCapture::remoteEventType_KeyRelease(), |
|
185 key, modFlags, 0, aOperationId, 0); |
|
186 } |
|
187 } else { |
|
188 event = new QKeyEvent(eventType, key, modFlags); |
|
189 } |
|
190 |
|
191 if (event){ |
|
192 QApplication::sendEvent(widget, event); |
|
193 qDebug("sending key event!"); |
|
194 delete event; |
|
195 } |
|
196 } |
|
197 } |
187 |
198 |
188 QWidget *TargetWrapper::getTargetWidget() |
199 QWidget *TargetWrapper::getTargetWidget() |
189 { |
200 { |
190 QWidget *widget; |
201 QWidget *widget; |
191 widget = QWidget::keyboardGrabber(); |
202 widget = QWidget::keyboardGrabber(); |
204 } |
215 } |
205 |
216 |
206 return widget; |
217 return widget; |
207 } |
218 } |
208 |
219 |
209 void TargetWrapper::sendPressKey(Qt::Key key, Qt::KeyboardModifiers modFlags) |
220 |
210 { |
|
211 QWidget *widget = getTargetWidget(); |
|
212 if (widget) { |
|
213 QKeyEvent event(QKeyEvent::KeyPress, key, modFlags, 0, false, 1); |
|
214 QApplication::sendEvent(widget, &event); |
|
215 } |
|
216 qDebug("sending key event!"); |
|
217 } |
|
218 |
|
219 void TargetWrapper::sendReleaseKey(Qt::Key key, Qt::KeyboardModifiers modFlags) |
|
220 { |
|
221 QWidget *widget = getTargetWidget(); |
|
222 if (widget) { |
|
223 QKeyEvent event(QKeyEvent::KeyRelease, key, modFlags, 0, false, 1); |
|
224 QApplication::sendEvent(widget, &event); |
|
225 } |
|
226 } |
|
227 |
221 |
228 void TargetWrapper::initMapping() |
222 void TargetWrapper::initMapping() |
229 { |
223 { |
230 keyMapping.insert(ERemConCoreApiSelect, Qt::Key_Select); |
224 keyMapping.insert(ERemConCoreApiSelect, Qt::Key_Select); |
231 keyMapping.insert(ERemConCoreApiUp, Qt::Key_Up); |
225 keyMapping.insert(ERemConCoreApiUp, Qt::Key_Up); |