Merge lp:~thomas-moenicke/phablet-extras/maliit-plugins-content-orientation into lp:phablet-extras/maliit-plugins
- maliit-plugins-content-orientation
- Merge into maliit-plugins
Status: | Merged |
---|---|
Approved by: | Thomas Moenicke |
Approved revision: | 2138 |
Merged at revision: | 2136 |
Proposed branch: | lp:~thomas-moenicke/phablet-extras/maliit-plugins-content-orientation |
Merge into: | lp:phablet-extras/maliit-plugins |
Diff against target: |
458 lines (+154/-71) 8 files modified
maliit-keyboard/lib/logic/dynamiclayout.cpp (+57/-35) maliit-keyboard/lib/logic/dynamiclayout.h (+1/-0) maliit-keyboard/lib/logic/dynamiclayout_p.h (+37/-1) maliit-keyboard/lib/logic/keyareaconverter.cpp (+1/-1) maliit-keyboard/plugin/inputmethod.cpp (+46/-27) maliit-keyboard/plugin/inputmethod.h (+3/-0) maliit-keyboard/qml/Keyboard.qml (+2/-0) maliit-keyboard/qml/RotationHelper.qml (+7/-7) |
To merge this branch: | bzr merge lp:~thomas-moenicke/phablet-extras/maliit-plugins-content-orientation |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Thomas Moenicke (community) | Approve | ||
Günter Schwann (community) | Approve | ||
PS Jenkins bot | continuous-integration | Approve | |
Bill Filler (community) | Needs Fixing | ||
Review via email: mp+176737@code.launchpad.net |
Commit message
switched to content-orientation changes for orientation handling. For testing
Description of the change
switched to content-orientation changes for orientation handling.
For testing
PS Jenkins bot (ps-jenkins) wrote : | # |
- 2135. By Thomas Moenicke
-
translating maliit angle to Qt::ScreenOrien
tation
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2135
http://
Executed test runs:
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 2136. By Thomas Moenicke
-
forwaring contentOrientation to the rotationHelper QML Item
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2136
http://
Executed test runs:
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Thomas Moenicke (thomas-moenicke) wrote : | # |
it requires the patch from Florian. I have tested with a test app and phone-app, where it rotates. In the shell, apps -> search lens it does not rotate, because it does not support rotation.
Bill Filler (bfiller) wrote : | # |
Doesn't work for me. The keyboard never rotates. I'm using the latest maliit-framework that is now in archive:
maliit-framework 0.99.0+
libmaliit-plugins0 0.99.0+
Using this deb. And using Florian's patch + the changes you proposed to it Thomas. I made an MR for that and installed the deb from here:
https:/
The behavior I see is keyboard never rotate.
Bill Filler (bfiller) wrote : | # |
tested with browser and notes and keyboard doesn't rotate when the apps rotate
Thomas Moenicke (thomas-moenicke) wrote : | # |
The app guys probably need to use or adapt to the API. If they use the component from Florian, a MainWindow() without doing any magic, it should work.
I have tested it with the phone-app and a test app where it works. I have noticed it does not work for the browser, so we need to ping Olivier about this.
Thomas Moenicke (thomas-moenicke) wrote : | # |
I fixed it for the Webbrowser. Unfort. I get an error from LP when doing a MR:
https:/
What happens here is the following: the property contentOrientation is a property of QWindow and can be set as shown in this QML example:
Window {
contentOrient
}
The browser app has such a component instantiated. Not all apps do, that's where Florian's patch comes in: it exposes the window to QML space so people can set the property even if they don't have a Window {}. The OrientationHelper does that automatically.
If a Window {} is present, it should be set there to make it work.
Thomas Moenicke (thomas-moenicke) wrote : | # |
Thomas Moenicke (thomas-moenicke) wrote : | # |
https:/
https:/
https:/
Bill Filler (bfiller) wrote : | # |
Couple of remaining issues:
1) remove all the temp ifdefs from the code
2) A bigger issue is that with all the MR's from above installed I'm seeing the keyboard not repainted/layout properly after rotating back and forth. The buttons are the wrong size and don't fit correctly on the screen. Please ensure to do a complete relayout/resize after getting the rotation event.
- 2137. By Thomas Moenicke
-
merge against master branch
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2137
http://
Executed test runs:
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 2138. By Thomas Moenicke
-
- fixed issue when rotating: sometimes the layout seemed to be calculated in a wrong way. This happened because osk
got the signal contentOrientationChanged( ), but parts of the calculating code used the API of the primary screen do determine the current orientation.
This was not in sync with contentOrientation and lead to calculating keysizes/margins for portrait mode instead of landscape mode.
- caching values of calculations
- removed TEMP_DISABLED code
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2138
http://
Executed test runs:
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:2138
http://
Executed test runs:
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Günter Schwann (schwann) wrote : | # |
Seems to work fine
Günter Schwann (schwann) wrote : | # |
code looks good as well
Thomas Moenicke (thomas-moenicke) wrote : | # |
succ. tested on 20130731 with this package and webbrowser package from the MR mentioned above
Notes-App does rotate as expected, Webbrowser does rotate as expected, shell does not rotate as expected
Preview Diff
1 | === modified file 'maliit-keyboard/lib/logic/dynamiclayout.cpp' |
2 | --- maliit-keyboard/lib/logic/dynamiclayout.cpp 2013-06-17 10:53:15 +0000 |
3 | +++ maliit-keyboard/lib/logic/dynamiclayout.cpp 2013-07-30 16:18:26 +0000 |
4 | @@ -36,30 +36,37 @@ |
5 | QVector<int> DynamicLayout::calculateMargins(LayoutHelper::Orientation orientation, |
6 | Keyboard& kb) |
7 | { |
8 | - const qreal keyboardWidth = uiConst->windowGeometryRect(qGuiApp->primaryScreen()->orientation()).size().width(); |
9 | - |
10 | - QVector<int> margins; |
11 | - |
12 | - int spaceTakenByKeys = 0; |
13 | - int numberOfKeysInRow = 0; |
14 | - for (int index = 0; index < kb.keys.count(); ++index) { |
15 | - const KeyDescription &desc(kb.key_descriptions.at(index)); |
16 | - int width = uiConst->keyWidth(orientation, desc.width); |
17 | - spaceTakenByKeys += width; |
18 | - numberOfKeysInRow++; |
19 | - |
20 | - bool at_row_end((index + 1 == kb.keys.count()) |
21 | - || (index + 1 < kb.keys.count() |
22 | - && kb.key_descriptions.at(index + 1).row > desc.row)); |
23 | - |
24 | - if (at_row_end) { |
25 | - int marginThisRow = ( (keyboardWidth - spaceTakenByKeys) / (numberOfKeysInRow-1) ) / 2; |
26 | - margins.append(marginThisRow); |
27 | - spaceTakenByKeys = 0; |
28 | + if (d->marginsCachedOrientation != orientation) |
29 | + d->invalidateMarginsCache(); |
30 | + |
31 | + if (!d->marginsCacheValid) { |
32 | + const qreal keyboardWidth = windowWidth(orientation); |
33 | + |
34 | + QVector<int> margins; |
35 | + int spaceTakenByKeys = 0; |
36 | + int numberOfKeysInRow = 0; |
37 | + for (int index = 0; index < kb.keys.count(); ++index) { |
38 | + const KeyDescription &desc(kb.key_descriptions.at(index)); |
39 | + int width = uiConst->keyWidth(orientation, desc.width); |
40 | + spaceTakenByKeys += width; |
41 | + numberOfKeysInRow++; |
42 | + |
43 | + bool at_row_end((index + 1 == kb.keys.count()) |
44 | + || (index + 1 < kb.keys.count() |
45 | + && kb.key_descriptions.at(index + 1).row > desc.row)); |
46 | + |
47 | + if (at_row_end) { |
48 | + int marginThisRow = ( (keyboardWidth - spaceTakenByKeys) / (numberOfKeysInRow-1) ) / 2; |
49 | + d->marginsCached.append(marginThisRow); |
50 | + spaceTakenByKeys = 0; |
51 | + } |
52 | } |
53 | + |
54 | + d->marginsCachedOrientation = orientation; |
55 | + d->marginsCacheValid = true; |
56 | } |
57 | |
58 | - return margins; |
59 | + return d->marginsCached; |
60 | } |
61 | |
62 | void DynamicLayout::calculateNumberOfRows(Keyboard& kb) |
63 | @@ -90,27 +97,39 @@ |
64 | d->initDynamicLayout(); |
65 | } |
66 | |
67 | +int DynamicLayout::windowWidth(LayoutHelper::Orientation orientation) |
68 | +{ |
69 | + return d->storage(orientation)->windowGeometryRect.width(); |
70 | +} |
71 | + |
72 | QRect DynamicLayout::windowGeometryRect(Qt::ScreenOrientation orientation) |
73 | { |
74 | - LayoutHelper::Orientation maliitOrientation = LayoutHelper::Landscape; |
75 | - |
76 | - if (orientation == Qt::PortraitOrientation || orientation == Qt::InvertedPortraitOrientation) |
77 | + if (orientation != d->cachedOrientation) |
78 | + d->invalidateWindowGeometryCache(); |
79 | + |
80 | + if ( !d->windowGeometryCacheValid ) { |
81 | + LayoutHelper::Orientation maliitOrientation = LayoutHelper::Landscape; |
82 | + |
83 | + if (orientation == Qt::PortraitOrientation || orientation == Qt::InvertedPortraitOrientation) |
84 | maliitOrientation = LayoutHelper::Portrait; |
85 | |
86 | - if (orientation == Qt::InvertedLandscapeOrientation || orientation == Qt::InvertedPortraitOrientation) { |
87 | - if (!d->wordRibbonEnabled) { |
88 | - return d->storage(maliitOrientation)->windowGeometryRectInverted |
89 | + if (orientation == Qt::InvertedLandscapeOrientation || orientation == Qt::InvertedPortraitOrientation) { |
90 | + if (!d->wordRibbonEnabled) { |
91 | + return d->writeCache( orientation, d->storage(maliitOrientation)->windowGeometryRectInverted |
92 | .adjusted (0, wordRibbonHeight(maliitOrientation), 0, 0) |
93 | - .translated(0,-wordRibbonHeight(maliitOrientation)); |
94 | - } else { |
95 | - return d->storage(maliitOrientation)->windowGeometryRectInverted; |
96 | + .translated(0,-wordRibbonHeight(maliitOrientation)) ); |
97 | + } else { |
98 | + return d->writeCache( orientation, d->storage(maliitOrientation)->windowGeometryRectInverted ); |
99 | + } |
100 | } |
101 | + |
102 | + if (!d->wordRibbonEnabled) |
103 | + return d->writeCache( orientation, d->storage(maliitOrientation)->windowGeometryRect.adjusted(0, d->storage(maliitOrientation)->wordRibbonHeight, 0, 0) ); |
104 | + |
105 | + return d->writeCache( orientation, d->storage(maliitOrientation)->windowGeometryRect ); |
106 | } |
107 | |
108 | - if (!d->wordRibbonEnabled) |
109 | - return d->storage(maliitOrientation)->windowGeometryRect.adjusted(0, d->storage(maliitOrientation)->wordRibbonHeight, 0, 0); |
110 | - |
111 | - return d->storage(maliitOrientation)->windowGeometryRect; |
112 | + return d->windowGeometryRectCached; |
113 | } |
114 | |
115 | qreal DynamicLayout::keyWidth(LayoutHelper::Orientation orientation, KeyDescription::Width requestedSize) |
116 | @@ -285,7 +304,10 @@ |
117 | |
118 | void DynamicLayout::onWordEngineSettingsChanged(bool wordEngineEnabled) |
119 | { |
120 | - d->wordRibbonEnabled = wordEngineEnabled; |
121 | + if (d->wordRibbonEnabled != wordEngineEnabled) { |
122 | + d->wordRibbonEnabled = wordEngineEnabled; |
123 | + d->invalidateWindowGeometryCache(); |
124 | + } |
125 | } |
126 | |
127 | }} // namespaces |
128 | |
129 | === modified file 'maliit-keyboard/lib/logic/dynamiclayout.h' |
130 | --- maliit-keyboard/lib/logic/dynamiclayout.h 2013-06-17 10:53:15 +0000 |
131 | +++ maliit-keyboard/lib/logic/dynamiclayout.h 2013-07-30 16:18:26 +0000 |
132 | @@ -51,6 +51,7 @@ |
133 | void initDynamicLayout(); |
134 | |
135 | int keypadHeight(LayoutHelper::Orientation orientation); |
136 | + int windowWidth(LayoutHelper::Orientation orientation); |
137 | QRect windowGeometryRect(Qt::ScreenOrientation orientation); |
138 | qreal keyboardScreenWidthRatio(LayoutHelper::Orientation orientation); |
139 | |
140 | |
141 | === modified file 'maliit-keyboard/lib/logic/dynamiclayout_p.h' |
142 | --- maliit-keyboard/lib/logic/dynamiclayout_p.h 2013-07-04 10:57:47 +0000 |
143 | +++ maliit-keyboard/lib/logic/dynamiclayout_p.h 2013-07-30 16:18:26 +0000 |
144 | @@ -1,5 +1,7 @@ |
145 | |
146 | -//#include "dynamiclayout.h" |
147 | +#include <QtCore> |
148 | + |
149 | +#include "layouthelper.h" |
150 | |
151 | namespace MaliitKeyboard { |
152 | namespace Logic { |
153 | @@ -97,6 +99,15 @@ |
154 | bool initialized; |
155 | bool wordRibbonEnabled; |
156 | |
157 | + // short term-caching in memory |
158 | + Qt::ScreenOrientation cachedOrientation; |
159 | + bool windowGeometryCacheValid; |
160 | + QRect windowGeometryRectCached; |
161 | + |
162 | + LayoutHelper::Orientation marginsCachedOrientation; |
163 | + bool marginsCacheValid; |
164 | + QVector<int> marginsCached; |
165 | + |
166 | DynamicLayoutStorage* portraitStorage; |
167 | DynamicLayoutStorage* landscapeStorage; |
168 | DynamicLayoutStorage* genericStorage; |
169 | @@ -105,6 +116,15 @@ |
170 | q(_q), |
171 | initialized(false), |
172 | wordRibbonEnabled(false), |
173 | + |
174 | + cachedOrientation(Qt::PortraitOrientation), |
175 | + windowGeometryCacheValid(false), |
176 | + windowGeometryRectCached(QRect(0,0,0,0)), |
177 | + |
178 | + marginsCachedOrientation(LayoutHelper::Portrait), |
179 | + marginsCacheValid(false), |
180 | + marginsCached(0), |
181 | + |
182 | portraitStorage(new DynamicLayoutStorage), |
183 | landscapeStorage(new DynamicLayoutStorage), |
184 | genericStorage(new DynamicLayoutStorage) |
185 | @@ -279,6 +299,22 @@ |
186 | qDebug() << "portrait inverted " << rInvertedPortrait << portraitStorage->windowGeometryRectInverted; |
187 | } |
188 | } |
189 | + |
190 | + const QRect& writeCache( Qt::ScreenOrientation orientation, const QRect& cachedRect ) { |
191 | + windowGeometryCacheValid = true; |
192 | + cachedOrientation = orientation; |
193 | + windowGeometryRectCached = cachedRect; |
194 | + return windowGeometryRectCached; |
195 | + } |
196 | + |
197 | + void invalidateWindowGeometryCache() { |
198 | + windowGeometryCacheValid = false; |
199 | + } |
200 | + |
201 | + void invalidateMarginsCache() { |
202 | + marginsCacheValid = false; |
203 | + marginsCached.clear(); |
204 | + } |
205 | }; |
206 | |
207 | } |
208 | |
209 | === modified file 'maliit-keyboard/lib/logic/keyareaconverter.cpp' |
210 | --- maliit-keyboard/lib/logic/keyareaconverter.cpp 2013-07-19 11:31:55 +0000 |
211 | +++ maliit-keyboard/lib/logic/keyareaconverter.cpp 2013-07-30 16:18:26 +0000 |
212 | @@ -86,7 +86,7 @@ |
213 | |
214 | static const QMargins bg_margins( uiConst->keyAreaBorders() ); |
215 | |
216 | - const qreal max_width( uiConst->windowGeometryRect(qGuiApp->primaryScreen()->orientation()).width() ); |
217 | + const qreal max_width( uiConst->windowWidth(orientation) ); |
218 | const qreal key_height(uiConst->keyHeight(orientation)); |
219 | const qreal keypadHeight = uiConst->keypadHeight(orientation); |
220 | |
221 | |
222 | === modified file 'maliit-keyboard/plugin/inputmethod.cpp' |
223 | --- maliit-keyboard/plugin/inputmethod.cpp 2013-07-29 14:12:09 +0000 |
224 | +++ maliit-keyboard/plugin/inputmethod.cpp 2013-07-30 16:18:26 +0000 |
225 | @@ -172,7 +172,7 @@ |
226 | |
227 | explicit InputMethodPrivate(InputMethod * const q, |
228 | MAbstractInputMethodHost *host); |
229 | - void setLayoutOrientation(Logic::LayoutHelper::Orientation orientation); |
230 | + void setLayoutOrientation(Qt::ScreenOrientation qtOrientation); |
231 | void updateKeyboardOrientation(); |
232 | void updateWordRibbon(); |
233 | |
234 | @@ -190,6 +190,7 @@ |
235 | , extended_surface(qSharedPointerDynamicCast<Surface>(surface_factory->create(g_extended_surface_options, surface))) |
236 | , magnifier_surface(qSharedPointerDynamicCast<Surface>(surface_factory->create(g_extended_surface_options, surface))) |
237 | #endif |
238 | + , qmlRootItem(0) |
239 | , editor(EditorOptions(), new Model::Text, new Logic::WordEngine, new Logic::LanguageFeatures) |
240 | , feedback() |
241 | , style(new Style) |
242 | @@ -263,7 +264,8 @@ |
243 | engine->addImportPath(MALIIT_KEYBOARD_DATA_DIR); |
244 | setContextProperties(engine->rootContext()); |
245 | |
246 | - view->setSource(QUrl::fromLocalFile(g_maliit_keyboard_qml)); |
247 | + QObject::connect(view, SIGNAL(statusChanged(QQuickView::Status)), |
248 | + q, SLOT(onQQuickViewStatusChanged(QQuickView::Status))); |
249 | |
250 | #ifdef EXTENDED_SURFACE_TEMP_DISABLED |
251 | QQmlEngine *const extended_engine(extended_surface->view()->engine()); |
252 | @@ -280,22 +282,6 @@ |
253 | #endif |
254 | view->setProperty("role", 7); |
255 | |
256 | - qmlRootItem = view->rootObject(); |
257 | - |
258 | - QObject::connect( |
259 | - qmlRootItem, |
260 | - SIGNAL(hideAnimationFinishedChanged()), |
261 | - q, |
262 | - SLOT(onHideAnimationFinished())); |
263 | - |
264 | - // workaround: contentOrientationChanged signal not fired by app/sdk |
265 | - // http://qt-project.org/doc/qt-5.0/qtgui/qwindow.html#contentOrientation-prop |
266 | - // this is normally handled by qmallitplatforminputcontextplugin in QtBase plugins |
267 | - QObject::connect(view->screen(), |
268 | - SIGNAL(orientationChanged(Qt::ScreenOrientation)), |
269 | - q, |
270 | - SLOT(deviceOrientationChanged(Qt::ScreenOrientation))); |
271 | - |
272 | // workaround: resizeMode not working in current qpa imlementation |
273 | // http://qt-project.org/doc/qt-5.0/qtquick/qquickview.html#ResizeMode-enum |
274 | view->setResizeMode(QQuickView::SizeRootObjectToView); |
275 | @@ -310,18 +296,20 @@ |
276 | updateKeyboardOrientation(); |
277 | } |
278 | |
279 | -void InputMethodPrivate::setLayoutOrientation(Logic::LayoutHelper::Orientation orientation) |
280 | +void InputMethodPrivate::setLayoutOrientation(Qt::ScreenOrientation screenOrientation) |
281 | { |
282 | + Logic::LayoutHelper::Orientation orientation = uiConst->screenToMaliitOrientation(screenOrientation); |
283 | + |
284 | layout.updater.setOrientation(orientation); |
285 | extended_layout.updater.setOrientation(orientation); |
286 | |
287 | - windowGeometryRect = uiConst->windowGeometryRect(view->screen()->orientation()); |
288 | + windowGeometryRect = uiConst->windowGeometryRect( screenOrientation ); |
289 | |
290 | keyboardVisibleRect = windowGeometryRect.adjusted(0,uiConst->invisibleTouchAreaHeight(orientation),0,0); |
291 | |
292 | // qpa does not rotate the coordinate system |
293 | windowGeometryRect = qGuiApp->primaryScreen()->mapBetween( |
294 | - view->screen()->orientation(), |
295 | + screenOrientation, |
296 | qGuiApp->primaryScreen()->primaryOrientation(), |
297 | windowGeometryRect); |
298 | |
299 | @@ -336,6 +324,8 @@ |
300 | host->setInputMethodArea(rect, view); |
301 | } |
302 | |
303 | + qmlRootItem->setProperty("contentOrientation", screenOrientation); |
304 | + |
305 | #ifdef HAVE_UBUNTU_PLATFORM_API |
306 | if (qmlRootItem->property("shown").toBool()) { |
307 | ubuntu_ui_report_osk_invisible(); |
308 | @@ -366,7 +356,7 @@ |
309 | |
310 | void InputMethodPrivate::updateKeyboardOrientation() |
311 | { |
312 | - setLayoutOrientation(uiConst->screenToMaliitOrientation(QGuiApplication::primaryScreen()->orientation())); |
313 | + setLayoutOrientation(QGuiApplication::primaryScreen()->orientation()); |
314 | } |
315 | |
316 | void InputMethodPrivate::connectToNotifier() |
317 | @@ -396,6 +386,8 @@ |
318 | { |
319 | Q_D(InputMethod); |
320 | |
321 | + d->view->setSource(QUrl::fromLocalFile(g_maliit_keyboard_qml)); |
322 | + |
323 | // FIXME: Reconnect feedback instance. |
324 | Setup::connectAll(&d->layout.event_handler, &d->layout.updater, &d->editor); |
325 | Setup::connectAll(&d->extended_layout.event_handler, &d->extended_layout.updater, &d->editor); |
326 | @@ -585,12 +577,22 @@ |
327 | |
328 | void InputMethod::handleAppOrientationChanged(int angle) |
329 | { |
330 | - Q_UNUSED(angle); |
331 | - |
332 | -#ifdef DISABLED_AS_CONTENT_ORIENTATION_NOT_WORKING |
333 | Q_D(InputMethod); |
334 | - d->updateKeyboardOrientation(); |
335 | -#endif |
336 | + |
337 | + Qt::ScreenOrientation orientation = Qt::PortraitOrientation; |
338 | + switch (angle) { |
339 | + case 0: |
340 | + orientation = Qt::LandscapeOrientation; break; |
341 | + case 90: |
342 | + orientation = Qt::InvertedPortraitOrientation; break; |
343 | + case 180: |
344 | + orientation = Qt::InvertedLandscapeOrientation; break; |
345 | + case 270: |
346 | + default: |
347 | + orientation = Qt::PortraitOrientation; break; |
348 | + } |
349 | + |
350 | + d->setLayoutOrientation(orientation); |
351 | } |
352 | |
353 | bool InputMethod::imExtensionEvent(MImExtensionEvent *event) |
354 | @@ -738,7 +740,9 @@ |
355 | d->layout.helper.setScreenSize(size); |
356 | d->extended_layout.helper.setScreenSize(d->layout.helper.screenSize()); |
357 | |
358 | +#ifdef TEMP_DISABLED |
359 | d->updateKeyboardOrientation(); |
360 | +#endif |
361 | } |
362 | |
363 | void InputMethod::onStyleSettingChanged() |
364 | @@ -927,5 +931,20 @@ |
365 | return d->predictionEnabled; |
366 | } |
367 | |
368 | +void InputMethod::onQQuickViewStatusChanged(QQuickView::Status status) |
369 | +{ |
370 | + Q_D(InputMethod); |
371 | + |
372 | + switch (status) { |
373 | + case QQuickView::Ready: |
374 | + { |
375 | + d->qmlRootItem = qobject_cast<QQuickItem*> (d->view->rootObject()); |
376 | + QObject::connect(d->qmlRootItem, SIGNAL(hideAnimationFinishedChanged()), this, SLOT(onHideAnimationFinished())); |
377 | + } |
378 | + break; |
379 | + default: |
380 | + break; |
381 | + } |
382 | +} |
383 | |
384 | } // namespace MaliitKeyboard |
385 | |
386 | === modified file 'maliit-keyboard/plugin/inputmethod.h' |
387 | --- maliit-keyboard/plugin/inputmethod.h 2013-07-29 11:52:26 +0000 |
388 | +++ maliit-keyboard/plugin/inputmethod.h 2013-07-30 16:18:26 +0000 |
389 | @@ -35,7 +35,9 @@ |
390 | #include <maliit/plugins/abstractinputmethod.h> |
391 | #include <maliit/plugins/abstractinputmethodhost.h> |
392 | #include <maliit/plugins/keyoverride.h> |
393 | + |
394 | #include <QtGui> |
395 | +#include <QtQuick/QQuickView> |
396 | |
397 | namespace MaliitKeyboard { |
398 | |
399 | @@ -75,6 +77,7 @@ |
400 | Q_SLOT void deviceOrientationChanged(Qt::ScreenOrientation orientation); |
401 | |
402 | Q_SLOT void updateWordEngine(); |
403 | + Q_SLOT void onQQuickViewStatusChanged(QQuickView::Status status); |
404 | |
405 | Q_PROPERTY(bool predictionEnabled READ predictionEnabled NOTIFY predictionEnabledChanged) |
406 | |
407 | |
408 | === modified file 'maliit-keyboard/qml/Keyboard.qml' |
409 | --- maliit-keyboard/qml/Keyboard.qml 2013-07-16 16:22:34 +0000 |
410 | +++ maliit-keyboard/qml/Keyboard.qml 2013-07-30 16:18:26 +0000 |
411 | @@ -40,6 +40,8 @@ |
412 | |
413 | visible: layout.visible |
414 | |
415 | + property int contentOrientation: Qt.PrimaryOrientation |
416 | + |
417 | property bool shown: false; |
418 | property bool wordribbon_visible: true; |
419 | |
420 | |
421 | === modified file 'maliit-keyboard/qml/RotationHelper.qml' |
422 | --- maliit-keyboard/qml/RotationHelper.qml 2013-05-16 17:32:04 +0000 |
423 | +++ maliit-keyboard/qml/RotationHelper.qml 2013-07-30 16:18:26 +0000 |
424 | @@ -18,11 +18,11 @@ |
425 | import QtQuick.Window 2.0 |
426 | |
427 | Item { |
428 | - id: orientationHelper |
429 | - |
430 | - property string __rotationString: Screen.angleBetween(Screen.primaryOrientation, Screen.orientation).toString(); |
431 | - |
432 | - rotation: Screen.angleBetween(Screen.primaryOrientation, Screen.orientation); |
433 | + id: rotationHelper |
434 | + |
435 | + property string __rotationString: Screen.angleBetween(Screen.primaryOrientation, contentOrientation).toString(); |
436 | + |
437 | + rotation: Screen.angleBetween(Screen.primaryOrientation, contentOrientation); |
438 | |
439 | anchors.fill: parent |
440 | |
441 | @@ -33,7 +33,7 @@ |
442 | State { |
443 | name: "270" |
444 | PropertyChanges { |
445 | - target: orientationHelper |
446 | + target: rotationHelper |
447 | anchors { |
448 | leftMargin: (parent.width - parent.height) / 2 |
449 | rightMargin: anchors.leftMargin |
450 | @@ -45,7 +45,7 @@ |
451 | State { |
452 | name: "90" |
453 | PropertyChanges { |
454 | - target: orientationHelper |
455 | + target: rotationHelper |
456 | anchors { |
457 | leftMargin: (parent.width - parent.height) / 2 |
458 | rightMargin: anchors.leftMargin |
PASSED: Continuous integration, rev:2134 jenkins. qa.ubuntu. com/job/ phablet- extras- maliit- plugins- ci/89/ jenkins. qa.ubuntu. com/job/ phablet- extras- maliit- plugins- saucy-armhf- ci/41 jenkins. qa.ubuntu. com/job/ phablet- extras- maliit- plugins- saucy-armhf- ci/41/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ phablet- extras- maliit- plugins- saucy-i386- ci/41
http://
Executed test runs:
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins: 8080/job/ phablet- extras- maliit- plugins- ci/89/rebuild
http://