Commit Graph

294 Commits

Author SHA1 Message Date
BogDan Vatra
4fc1a10075 Android: Extract RippleDrawable
Task-number: QTBUG-42488
Change-Id: I41fb37adae4664f4a071d794dc4a31a3ee3334aa
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
2014-11-13 20:04:23 +01:00
BogDan Vatra
f3b93a7724 Android: Introduce getAccessibleField
This method simplifies a lot the code.

Change-Id: I7fe775d671ae89e112f313c21f61923133785785
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
2014-11-13 20:02:42 +01:00
J-P Nurmi
132650e4e0 Android: extract BitmapDrawable attributes
Task-number: QTBUG-42488
Change-Id: Idd70e6300f78d96b044928885e71957daad1f5af
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-11-10 13:44:25 +01:00
J-P Nurmi
d9715108c1 Android 5.0: extract new Switch style attributes
Switch_showText specifies whether the on/off text is shown in the
thumb and Switch_splitTrack specifies whether the track is clipped
underneath the thumb.

Change-Id: I03fc6b799fe714e7b6e604328901c8c5a418ca6e
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-11-10 12:19:12 +01:00
BogDan Vatra
21e5d77e85 Android: Fix more exceptions in ExtractStyle.java on Android L
Task-number: QTBUG-40120
Change-Id: I949f19ced4eefcf7a40e64ad63e316765c6f2f48
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
2014-11-03 23:25:06 +01:00
Christian Strømme
d099e27cfc Android: Fix input method hints.
1. Add comment about the magic TYPE_NUMBER_VARIATION_PASSWORD value.
2. ImhHiddenText, ImhNoPredictiveText and ImhSensitiveData should all
   disable suggestions.
3. Only ImhSensitiveData sets TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
4. Don't OR date and time to get DateTime...

Task-number: QTBUG-38080
Change-Id: If456563983130e9af409ffa8cb717ddf259f1d6b
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-11-03 18:25:33 +01:00
Christian Strømme
7a3a3a5694 Android: Add runOnUiThread() function
Enables QRunnables to be run on the UI thread. For now this function
is only intended for internal consumption.

Change-Id: I5e2abb06104219a9dd55b3308113056e4da5fa07
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-11-03 18:24:56 +01:00
Shawn Rutledge
0b49ce2f8e Android: QtActivitiyDelegate: extras can be null
Change-Id: I3b31cc499067540e6ad7b6d05df75d9ba0e1e615
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-10-29 21:10:59 +01:00
BogDan Vatra
f81e76da1e Allow QtCreator to pass additional args and env vars to the application.
We need them to allow developers to easily pass args and env. vars like
QSG_RENDER_TIMINGS, QSG_VISUALIZE to theirs apps.
The env vars and params must be base64 encoded!

Change-Id: I1d781873ffdc6efd40b30543a9fd2514bbdede43
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-10-23 08:53:58 +02:00
BogDan Vatra
c5b0308dc5 Android: Update Ministro's requirements.
Task-number: QTBUG-41968
Change-Id: Ia0c204dd87b9de3cbb7bb388099c435b855ad4d5
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-10-19 11:38:33 +02:00
Paul Olav Tvete
7755b4af41 Android: null pointer check
Task-number: QTBUG-41680
Change-Id: I740fb2a6df5613a8ee724b59dab08674a3337236
Reviewed-by: Kai Uwe Broulik <kde@privat.broulik.de>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-10-10 10:04:34 +02:00
Christian Strømme
8d8000b5fe Android: Don't call requestLayout() when changing the geometry.
requestLayout() is already called when setLayoutParams() is called, so
calling it again is extremely wasteful.

Change-Id: Iddfb488830a6b7277a653a84ffacabf966baf0b5
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-10-09 22:57:19 +02:00
Eskil Abrahamsen Blomfeldt
538248d930 Android: Don't include Apache code under LGPLv2 license
The code which extracts style assets for the Android style
is licensed under the Apache license, which is not compatible
with LGPLv2.1. It is, however, compatible with LGPLv3. This
means that the Android platform plugin cannot be LGPLv2.1
as long as this code is included.

To minimize licensing confusion, we default to only providing
LGPLv3 for Android. If you want to build a LGPLv2.1-compatible
library, you can add -no-android-style-assets to the
configuration. This will in turn enable the LGPLv2.1 in
the configure output, and it will disable the extraction
code in the platform plugin.

Running the Android style with an LGPLv2.1-compatible platform
plugin will work, but it will look horrible.

[ChangeLog][Android] Default open-source license for
Qt for Android is now LGPLv3. For compatibility with the LGPLv2.1
license, add "-no-android-style-assets" to your configuration.

Change-Id: I6c7b52140f38138520871fa7c69debbb4ee90e6c
Task-number: QTBUG-41365
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-10-02 05:59:17 +02:00
BogDan Vatra
3b577dfe79 Use PopupMenu when possible.
On API-11+ we are going to use PopupMenu instead of ContextMenu to show
context menus. A PopupMenu displays a Menu in a modal popup window
anchored to a View. The popup will appear below the anchor view if there
is room, or above it if there is not.

Task-number: QTBUG-39736
Change-Id: Ie412ab0935b868348ce5c8bb0bf53571ffefd582
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-10-01 20:10:58 +02:00
Christian Strømme
10a0f93c86 Android: Add function to change the stacking order in the layout.
This change enables us to reorder the stacking order used by the
layout. This is necessary if we want to influence the drawing order.

Lowering or raising views are done separately for native views and
Qt surface views, that is, the two different view "types" are moved
relative to other views of the same type and Native views are always
placed on top.

Change-Id: I01cbb88f8efee08877b5972cf330fd25266a2aa9
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-09-26 23:45:13 +02:00
Christian Strømme
8b0d9a16db Android: Improve the foreign-window implementation
Adds:
- Improved geometry calculations (e.g, inside a parent)
- Change visibility
- proper stacking order. Native views now reserve the top of the stack
  to ensure that they stay visible.
- React to application state changes.

Change-Id: I35de0396937fff37ffcd272c9a7d8e9873a91dfb
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-09-26 23:44:42 +02:00
BogDan Vatra
1168ed8f6e Handle InsetDrawable.
Remove an unused function.

Change-Id: I79fda0fb56b0621e062a0ccb5bd68291d9ccdf50
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
2014-09-24 13:52:55 +02:00
Frederik Gladhorn
c5a3e5edd9 Merge remote-tracking branch 'origin/5.3' into 5.4
The isAlwaysAskOption was removed in 3862171315
so manually removed code in
src/plugins/bearer/connman/qconnmanengine.cpp

Conflicts:
	src/corelib/global/qglobal.h
	src/corelib/tools/qcollator_macx.cpp
	src/corelib/tools/qstring.cpp
	src/gui/kernel/qwindow.cpp
	src/gui/kernel/qwindow_p.h
	src/gui/text/qtextengine.cpp
	src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig_p.h
	src/plugins/platforms/android/qandroidinputcontext.cpp
	src/plugins/platforms/xcb/qglxintegration.cpp
	src/plugins/platforms/xcb/qglxintegration.h
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/testlib/qtestcase.cpp
	src/testlib/qtestlog.cpp
	src/widgets/dialogs/qfiledialog.cpp
	src/widgets/kernel/qwindowcontainer.cpp
	tests/auto/corelib/tools/qcollator/tst_qcollator.cpp
	tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
	tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
	tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp

Change-Id: Ic5d4187f682257a17509f6cd28d2836c6cfe2fc8
2014-09-23 11:23:36 +02:00
Samuel Nevala
105fa5b5d9 Respect android:windowSoftInputMode in manifest.
Read and store softInputMode set at AndroidManifest.xml on QtActivityDelegate.
When showSoftwareKeyboard is requested setSoftInputMode for main window if
softInputMode is not defined fall back to old behavior.

Change-Id: I71cb27d4bdb4ae4e3c2a0706560173703a2f5a50
Task-number: QTBUG-34401
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-09-04 14:04:44 +02:00
Paul Olav Tvete
d450eb5e6d Android: Guard against invalid surfaceID
Do not try to resize or destroy invalid surfaces.

This caused update problems with all GL apps after suspend,
since we would forget the dummy view that we always keep
around so we get proper transitions on shutdown.

Also make sure that we don't mess this up even if we try to destroy a
non-existing surface. This would have fixed the bug by itself, but
then we would still be stuck with the annoying warning message.

Task-number: QTBUG-41093
Change-Id: I83299e93eb9ac5357b98ca47014789b56c91b35a
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-09-02 22:00:02 +02:00
Paul Olav Tvete
b9a7cedb6e Android: Avoid deadlock in Qt.inputMethod.visible
A blocking isSoftwareKeyboardVisible() is a deadlock
waiting to happen: when the android input method performs
blocking metacalls from the android thread to the GUI
thread all the time, we cannot block the GUI thread
waiting for the android thread.

Task-number: QTBUG-40750
Change-Id: I2490897b0f65e0d92214907e239b10b372d949dd
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-09-02 14:13:14 +02:00
Giuseppe D'Angelo
75b62f3a17 Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4 2014-08-19 00:42:00 +02:00
Eskil Abrahamsen Blomfeldt
3e0a6c1b36 Android: Also support android style for debug deployment
Both bundling and debug deployment can use the local cache for
the Android style assets, since Ministro is not necessarily
available in these cases.

Change-Id: I33367aceec1829f27377fcb6793ca95ecf5cc434
Task-number: QTBUG-40676
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-08-16 23:27:40 +02:00
BogDan Vatra
ef4a999a9f Forward menu button events to Qt if there is no visible menubar.
Task-number: QTBUG-32334
Change-Id: If1b4517f233b04d4c6c165cbfe62c8cf7b624c60
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-16 13:41:01 +02:00
Frederik Gladhorn
ca524e5b70 Merge remote-tracking branch 'origin/5.3' into 5.4
Manually included changes from
3a347a4e70
in src/opengl/qgl.cpp.

Conflicts:
	src/opengl/qgl_qpa.cpp
	src/plugins/platforms/android/androidjnimain.cpp

Change-Id: Ic26b58ee587d4884c9d0fba45c5a94b5a45ee929
2014-08-12 13:05:02 +02:00
BogDan Vatra
8b7a2d582c Android: Say hello to gradle!
Add build.gradle script, move Android template files to another folder.
These files are specific to every project, and they should be copied to
then project android folder.

Switching from Ant to Gradle brings lots of advantages:
 - it is way faster when rebuilding (25-50% faster than ant).
 - it enables first class Android Studio integration.
 - adding Android Extras libs (e.g. Google Play services, OBB, etc.) to
   your project is now painless.

[ChangeLog][Android] Added Gradle support to build the APK.

Change-Id: I9c8cb355118c9ac1997270c8b80916eca43fce4d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-07 12:27:51 +02:00
J-P Nurmi
c8321a9c10 Android: extract window style attributes
Task-number: QTBUG-39215
Change-Id: I29120f5dcc97051705bc6ebacfa5843d8953810b
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-08-06 22:19:10 +02:00
J-P Nurmi
c793839681 Android: add support for Android.R.attr.state_accelerated
This lets the Qt Quick Controls Android Style choose the appropriate
window background that is meant to be used with HW acceleration.

Change-Id: I65d6f9319d77364637460e7c4ebb7ea3f4d53f12
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-08-06 22:18:53 +02:00
BogDan Vatra
a2ad0ba630 Android: Fix debugging.
When re-install a package without uninstalling it first, a few files
are leftover from the previous installation which makes the debugging to
fail.

Change-Id: I603491668bcec2a6f8054951ea2dea806fcc4c88
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-06 22:07:52 +02:00
Christian Strømme
4946ed0496 Android: Fix QAndroidPlatformServices::openUrl().
Return true only if an activity was found for the intent.

Task-number: QTBUG-34716
Change-Id: I764caf1e8afa3b17b2d71f52873c17e5d834a956
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-06 17:16:30 +02:00
Gabriel de Dietrich
a258ac8feb Android: Extract assets for 'listSeparatorTextViewStyle'
These are used in Qt Quick Control's TableViewStyle.headerDelegate.

Change-Id: I2d87896b9987b86e30123b34872f9322d304a190
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-08-05 17:38:25 +02:00
BogDan Vatra
c0c80f14af Android: Fix exceptions in ExtractStyle.java on Android L
Android L adds support for 64 bit (arm and x86) and they did lots of
changes that are incompatible with old implementation.

Task-number: QTBUG-40120
Change-Id: I69b78a9eed896d2ddabc1bf2a55886faeae47974
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
2014-08-01 22:12:41 +02:00
BogDan Vatra
734c126826 Android: Really suspend apps that are put in the background
The main event loop will be paused when an application is suspended,
this is also the normal behavior of any Android application. When an
application is suspended on Android all its Gl surfaces are destroyed
and can't be used to render anymore. So, we need to pause the main
event loop in order to pause all the timers which might trigger
drawings. The event loop is resumed immediately after the application
is foreground. AndroidManifest.xml contains more info about how to
disable this behavior and what might happen if you do it.

[ChangeLog][Android][Important Behavior Changes] The main event loop is
now stopped when the app is suspended

Task-number: QTBUG-36274
Change-Id: I4c0ba5df9d95f348bca67ea5c76865d6d20775e4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-07-31 19:20:28 +02:00
BogDan Vatra
a64da3fbd2 Cache the parsed drawables.
Change-Id: I4a386c644505ac84a5ddd15a898c3e9c58e682b3
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
2014-07-30 16:32:22 +02:00
J-P Nurmi
c38af4e6bb Android: extract ListView divider & selection
Change-Id: I2a4f72d94c4868f9db4b8066bbdadbe222d0da62
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-07-30 16:24:50 +02:00
J-P Nurmi
40705cb4c1 Android: fix Switch & CalendarView text appearances
This reverts the extractTextAppearanceInformations() changes done in
f7ac2b4 and introduces another method extractTextAppearance() for
extracting a specific TextAppearance.

The problem was that extractTextAppearanceInformations() was overriding
the TextAppearance attributes with TextView attributes. This resulted
in wrong text colors for Switch & CalendarView:

- Switch_switchTextAppearance
- CalendarView_dateTextAppearance
- CalendarView_weekDayTextAppearance

Change-Id: Ib300b6eb14649319b2f07012803a4d031a717b50
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-07-24 16:26:45 +02:00
Frederik Gladhorn
7c495cfea9 Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
	src/gui/text/qfontengine_qpf2.cpp

Change-Id: Ib04f92c41d0edd55d3aef8fb1708d917fba0f2a8
2014-07-14 10:35:51 +02:00
Eskil Abrahamsen Blomfeldt
0cbebb21cc Android: Prefer "Droid Serif" as default serif font
I've also updated the qfont test so it passes on Android now. Note that
there are no suitable cursive/fantasy fonts on Android, so the regular
default "Roboto" (or "Droid Sans" on older devices) will be picked here
instead.

[ChangeLog][Android] Fixed font selection to prefer "Droid Serif" when
Serif style hint is set on QFont.

Change-Id: I294eebcc4d79410e435bdddce552acc6044753b2
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-07-10 16:23:50 +02:00
Frederik Gladhorn
a09a8d509a Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
	mkspecs/qnx-x86-qcc/qplatformdefs.h
	src/corelib/global/qglobal.h
	src/network/socket/qnativesocketengine_winrt.cpp
	src/plugins/platforms/android/androidjniaccessibility.cpp
	src/plugins/platforms/windows/qwindowswindow.cpp

Manually adjusted:
	mkspecs/qnx-armle-v7-qcc/qplatformdefs.h
	to include 9ce697f2d5

Thanks goes to Sergio for the qnx mkspecs adjustments.

Change-Id: I53b1fd6bc5bc884e5ee2c2b84975f58171a1cb8e
2014-07-01 16:25:19 +02:00
Christian Strømme
50cf698b76 Android: Fix hover-event handling.
The accessibility delegate needs to intercept the hover events before
the view gets them, but since the dispatchHoverEvent() method was added
in API level 14 and we build with API level < 14, we can't call the
super class implementation (e.g., when the event isn't handled by
the accessibility delegate). In the previous implementation we where
trying to solve this by using the reflection API, but that does not
provide a solution to call the super class implementation
(Note: It's possible with JDK 7 or newer), so the code would call
itself recursively and we would eventually get a stack overflow
exception.

This change uses the OnHoverListener class to intercept the hover
events, this way we avoid "overriding" the dispatchHoverEvent() method
in QtSurface and therefore avoid the problem it causes.

Task-number: QTBUG-38905
Change-Id: I8b3cbad718d8524042397bb877e39e3005bfb4ce
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-06-30 16:58:57 +02:00
J-P Nurmi
61c3ab9967 Android: extract actionOverflowButtonStyle (button menu icon)
Task-number: QTBUG-39215
Change-Id: I6fdb5ab4a7469017505376421d17cf4367baf76f
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-06-25 12:37:07 +02:00
Jan Arve Saether
a14aff64a1 Accessibility: Add actions for value interfaces
To support increment / decrement of sliders, dials and spin boxes.
(anything with an {in,de}crementAction or a valueInterface.

Other platforms will follow the same pattern in follow-up patches.

Task-number: QTBUG-38832
Change-Id: Ie570acc39b3d9494a8bb9f624b61a398b1d8de89
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-06-20 17:20:13 +02:00
J-P Nurmi
7bd33c36db Android: extract style attributes for tabs
Task-number: QTBUG-39215
Change-Id: I727a12fa9696e22d3f31393a0fe2f9392afbfe45
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-06-20 17:18:19 +02:00
J-P Nurmi
de1afe41e3 Android: fix typo in QtActivityDelegate.java
Change-Id: I6704627ed0bf7cb70a09c1637084ed2c8e5031cf
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-06-09 21:19:17 +02:00
J-P Nurmi
d9a7ad80f7 Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev 2014-06-07 00:40:44 +02:00
J-P Nurmi
0f8d35ff73 Android: extract calendarViewStyle
Task-number: QTBUG-39215
Change-Id: Ic11b088cbfa62eb01f4326d557e4434afad9fa10
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2014-06-06 15:56:48 +02:00
J-P Nurmi
0fcce50af0 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	mkspecs/features/qt.prf
	src/plugins/platforms/xcb/qxcbwindow.h
	src/tools/qdoc/qdocindexfiles.cpp
	src/widgets/kernel/qwidget_qpa.cpp

Change-Id: I214f57b03bc2ff86cf3b7dfe2966168af93a5a67
2014-06-05 22:26:44 +02:00
J-P Nurmi
74d46a669b Android: extract complete actionBarStyle
Task-number: QTBUG-39215
Change-Id: I67d89ac28b73bc52cd2ed952cfc8db21437d6e3b
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-06-05 14:56:09 +02:00
J-P Nurmi
f7ac2b446a Android: extract switchStyle
Task-number: QTBUG-39215
Change-Id: I53c435b80ea2603eb942eac3307654dd0fc0ae12
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-06-04 16:13:27 +02:00
J-P Nurmi
46630f866f Android: extract styles for ToolBar & ToolButton
Task-number: QTBUG-39215
Change-Id: I1d424436e50f96385b5581444b260c3e27e7291e
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-06-04 16:13:09 +02:00
Eskil Abrahamsen Blomfeldt
90808ead98 Android: Fix flashing on startup/shutdown
There were several issues on startup of the application which
were caused by the fact that we would get the wrong
available screen geometry on startup, set this as the
initial surface size and then expose native windows with this
size. This would cause first a flicker of white on the early
expose and the window contents to jump around as the window was
resized to the actual available space on screen.

The fix for this is to postpone the first expose until we have
actually got a proper screen size from the main layout. We use
width,height = 0 as an indicator that the available geometry
is not yet known, and we skip posting any expose events before
this is set by the layout.

In addition, since we removed the surface before we shut down
the application, it was by a white rectangle before the
shutdown transition happens, and this white rectangle will
be animated instead of application contents.

To rectify this, we make sure the last surface in the stack
remains in the layout until it is either replaced by a different
surface or until the application has shut down. This way, the
shutdown animation will work on this surface instead.

[ChangeLog][Android] Fixed regression where there would be flickering
on startup and shutdown of the application.

Task-number: QTBUG-38960
Change-Id: Ia1579ca8c522d8beeab066f78070ad49009d0238
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-06-04 09:29:43 +02:00
BogDan Vatra
b8961e799b Android: Introduce SimpleJsonWriter
It speeds up the extraction and it reduces memory consumption.

Change-Id: I188f7efbb826343e5bd75f63ace36522f0d7a24d
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
2014-06-03 09:56:00 +02:00
J-P Nurmi
df1ba3594b Android: add support for extracting AnimationDrawable
Required for implementing indeterminate ProgressBar

Task-number: QTBUG-39215
Change-Id: I128eaf2879dd493da86541767a870ea786a5ddf9
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-06-03 09:18:11 +02:00
J-P Nurmi
d318e14715 Android: extract View_scrollbarDefaultDelayBeforeFade
Task-number: QTBUG-39215
Change-Id: I8cc6e16a7155710ad322dc884ccbb194ca7d5b67
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-05-27 13:04:16 +02:00
J-P Nurmi
26deadef47 Android: extract scrollViewStyle
Task-number: QTBUG-39215
Change-Id: I8d4155aa4db5d807d1846c5741c01693af24f846
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-05-26 18:25:48 +02:00
J-P Nurmi
fedd1ba84d Android: ensure unique IDs when extracting style data for layers
Indeterminate progress drawables can consist of multiple layers that
don't necessarily have an ID. Ensure that the extracted file names
contains unique IDs to avoid extracted layers overwriting each other.

Task-number: QTBUG-35081
Change-Id: I3dc48bf363510ded9b955aa51fa479c607541169
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-05-26 14:12:15 +02:00
J-P Nurmi
8097d67293 Android: extract SeekBar_thumbOffset
Task-number: QTBUG-39215
Change-Id: I2a7b878b1a86280c92a445826f196de3245fd4e2
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-05-26 14:12:15 +02:00
J-P Nurmi
c7f99f3e86 Android: extract progressBarStyle(Small|Large)
The indeterminate drawable is used for QtQuick Controls BusyIndicator

Task-number: QTBUG-35081
Change-Id: Iecdc6e80444b5134ec1fa61916c7ac1612cd275f
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-05-26 14:12:15 +02:00
J-P Nurmi
3c04a2fbff Android: add support for extracting RotateDrawable
The rotation attributes are required for implementing BusyIndicator.

Task-number: QTBUG-39215
Change-Id: Ief51bf921f61b3b030f26d377b4bfd13913af6c1
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-05-26 14:12:15 +02:00
BogDan Vatra
09ed9e3eae Android: Extract data for native style on startup
When Ministro is not in use, we need to extract style
information on startup in order for the native Android style
to work.

The code to extract data from the device is contributed from
the Ministro project.

[ChangeLog][Android] Enable using native style also when
Ministro deployment mechanism is not in use.

Task-number: QTBUG-36019
Change-Id: I2afef5219b4e8fbb2f3e387cbc5e570da1f41011
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-05-22 18:20:02 +02:00
Paul Olav Tvete
a968042f54 Restore fullscreen mode after keyboard is dismissed
Showing the onscreen keyboard will also show the navigation
soft buttons. We need to tell Android to re-enable immersive
mode after the keyboard is hidden.

Since we now do this in two places, refactor the logic.

Task-number: QTBUG-36916
Change-Id: Ic69c28f41f5e8cf324d81f9bada3cb148dfb5306
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-05-14 20:10:03 +02:00
Frederik Gladhorn
06e27c2a52 Accessibility Android: Fix crash for invalid interfaces
When asked for an accessibility interface with invalid ID we still
return an AccessibilityNodeInfo. But instead of setting that interfaces'
ID to the invalid ID, rather return one with no ID set so it will simply
fall back to the view.

Task-number: QTBUG-38829
Change-Id: If66f5b1b42ba46949d94a547050c7a2cfc7ee9b7
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-05-13 22:10:21 +02:00
Christian Strømme
c9241a1a7b Android: Don't accept the volume-key events.
On Android the volume keys are by default connected to the global volume
control and by accepting them we remove this feature. Meaning each
application would need to re-implement this functionality.
Ideally we should only accept the volume keys if they where accepted by
the user to avoid overriding default behavior, but we currently don't
have the infrastructure to do that.

To revert back to the old behavior the env. variable
QT_ANDROID_VOLUME_KEYS can be set.

Task-number: QTBUG-36570

Change-Id: Ib053a40383f2de452f385b19f7795c2fc23fc4fe
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-04-03 00:28:22 +02:00
Paul Olav Tvete
3c6c14c0bf Android: implement batch editing for input methods
Task-number: QTBUG-37584
Change-Id: I59f063b2e4b6427a66f7b561cfae7193ceafa43c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-03-28 18:04:22 +01:00
BogDan Vatra
bc2e7054ef Android: Change Ministro's source to 5.3
Task-number: QTBUG-37879
Change-Id: If9a3f38a5dc267862a166ac4c8e6940739eab911
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-03-27 17:51:21 +01:00
Eskil Abrahamsen Blomfeldt
d1ed2dee51 Android: REG: Fix launching intents
When the launch mode is singleInstance, then intents will not be
launched as activities inside the same task, but as separate
tasks, and onActivityResult() is always called immediately
without any data. This is documented in various stack overflows
and google group messages if you search for it on the Internet,
and the singleInstance launch mode is documented as "not recommended
for normal use". This broke e.g. automatic downloads of Ministro. The
singleTop launch mode seems more like what we're after, and fixes
both the original issue as well as the current problem with intents.

Change-Id: Iab24a654a4433f979064509b1ef721db9ef352af
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-03-27 15:17:33 +01:00
BogDan Vatra
f1f07eae2d Android: Fix software keyboard show/hide state
Task-number: QTBUG-34831

Change-Id: Ic38334d011ceef2dc75e4fb3fcea48f62aeea757
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-03-26 07:22:35 +01:00
BogDan Vatra
6cf7c3212f Set default activity launchMode to singleInstance
This attriute is needed otherwise if the user puts the application in
background and uses the appication icon to bring it back in front,
andriod will create a new activity.

Task-number: QTBUG-37186
Change-Id: Icdc87239c1a07a3e555296692a4866eb6351348e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-03-25 06:00:57 +01:00
Eskil Abrahamsen Blomfeldt
523d1c54e4 REG: Fix compilation with old AndroidManifest.xml
For apps created with Qt 5.2.1, the AndroidManifest.xml will
contain a reference to android.app.splash_screen, which was
removed from the application template when the splash screen
functionality was fixed by 4d08d80be6.

To make sure existing apps still compile, we put back a dummy
splash.xml so that the reference in existing manifests still
work. If this splash screen was actually used for something,
it will no longer show up, so we also need to document that people
should update their AndroidManifest.xml to the new system, but
we can't inform people via mysterious compilation failures :)

Task-number: QTBUG-37493
Change-Id: I6289f9b5e2c315fa6db502cbde27bd18e15f1f8d
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-03-21 18:49:06 +01:00
BogDan Vatra
80151389d6 Android: Try to hide the sw keyboard on finishComposingText.
finishComposingText is called when the composing text is finished also
when the sw keyboard is hidden.

Task-number: QTBUG-37631
Change-Id: I4f4e90e60ac3f89784755b591f578e07fdbfdd2a
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-03-20 19:01:53 +01:00
Paul Olav Tvete
68a9229a97 Android input method improvements
Use the new inputmethod query API. and get rid of the hack where
we would move the cursor back and forwards to make sure that the
Android software keyboard noticed that the cursor had moved.

The android plugin now uses absolute positions instead of
position within the paragraph for all cursor handling (provided
that the control supports the new API).

Task-number: QTBUG-37511
Change-Id: I03463dbbcb4acbfa41e2eab06889d021d50da01f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-03-18 09:59:20 +01:00
Samuel Gaist
0300f56133 Make android non-prefix shadow build usable
Until now android developer build was not usable due to missing files.
These files are only available after a make install.
This patch aims to add that copy phase when building.

Task-number: QTBUG-36901
Change-Id: If0a7e982899b8c18495c7cb6508184fa153b239d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-03-14 15:26:37 +01:00
BogDan Vatra
1f695a31e2 Pass the APPLICATION_PARAMETERS variable if defined.
Change-Id: I2a3c049db43bbd0a2c373dae9e9ac1395c099b74
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-03-06 06:08:58 +01:00
BogDan Vatra
5ab630f8be Android: Display HTML text correctly on Android native dialog.
Task-number: QTBUG-35687

Change-Id: I3a298b7f4c5f9608537b1afdb994d76ef3abb706
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-03-06 06:08:37 +01:00
Eskil Abrahamsen Blomfeldt
bd2ef8028d Android: Add commercial license to BSD-licensed files
These files should also be usable under the commercial license
terms as an alternative to the BSD license.

Change-Id: If211bb63789722f655843831073ed05ee69811ea
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-04 15:59:05 +01:00
Eskil Abrahamsen Blomfeldt
a2f79b0d0f Android: Make default permissions less confusing
Add comments to explain the magic placeholders for default
permissions and features, and move the INTERNET and
WRITE_EXTERNAL_STORAGE permissions from the manifest so that
we use the same mechanism for all default permissions.

Change-Id: Ia62dd4314c1c10eb201b5203772ffe88b1ce7a04
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-02-26 12:58:00 +01:00
BogDan Vatra
26a5727f75 Make full use of QT_ANDROID_RASTER_IMAGE_DEPTH env variable.
If raster only apps set QT_ANDROID_RASTER_IMAGE_DEPTH to 16 (RGB16), we
should create also RGB16 native surface.

Change-Id: I82692ff34b0e604e627d1d86a437272e3700daf8
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-02-22 14:35:33 +01:00
BogDan Vatra
4d08d80be6 Rework the splash screen for Android.
Allow the developers to define a splash screen which will be visible
until the first window is created.

[ChangeLog][Android] Allow the developers to define a splash
screen which will be visible until the first window is created.

Task-number: QTBUG-30652

Change-Id: I5da80be417ffffb03e66009f45745d4b387d2912
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-02-21 15:50:52 +01:00
Eskil Abrahamsen Blomfeldt
8d721b3c56 Android: Add enablers for listening to activity results
When you launch an activity through an intent,
data can be provided back from the activity when it has finished
using onActivityResult() in the activity which launched it.

This is okay for applications, since they can easily create their
own activities, but does not work for libraries that need to
use intents. There is no listener API for activity results which
allow external classes to eavesdrop.

In order to support launching intents from third-party or add-on
libraries, we provide a low-level way to hook into the activity
result event. The corresponding public API will be added to
QtAndroidExtras.

Change-Id: I89417f485e2c0e69028dcccc7c155788346a7417
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-02-15 22:25:36 +01:00
Christian Strømme
539196689e Android: Add Foreign Window support
Change-Id: Ie41edd3f17214805673311a375191cd93d2378f6
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-02-14 00:34:25 +01:00
BogDan Vatra
6fe4deca3f Only Android API < 11 needs o set the surface type.
Change-Id: I290d7273624ce4853a137c00263fa9a169ea0cf9
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
BogDan Vatra
fc43748893 Remove unused variable.
Change-Id: I30c6bea769df436f41275df60552b9616e8d5547
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-31 12:07:59 +01:00
Frederik Gladhorn
9033977d39 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/corelib/global/qglobal.h
	src/corelib/tools/qstring.cpp
	src/gui/image/image.pri
	src/gui/image/qimage.cpp
	src/plugins/platforms/cocoa/qcocoawindow.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/eglfs/qeglfshooks_stub.cpp
	tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp

Change-Id: I3b9ba029c8f2263b011f204fdf68c3231c6d4ce5
2014-01-20 18:18:59 +01:00
BogDan Vatra
8a9bd001c9 Support multiple native surfaces on Android.
Support for multiple native surfaces is needed by applications that need
to mix raster windows with GL windows.
Rework the raster and opengl implementation, get rid of eglfs and
fbconvenience dependencies.
Create a single android platform plugin.

[ChangeLog][Android] Rework the raster and opengl implementation.
[ChangeLog][Android] Create a single android platform plugin.

Task-number: QTBUG-34650

Change-Id: I9b1ab51554823329dda8cfbf8fef27c38f917c7b
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-01-17 10:23:08 +01:00
Thorsten Zachmann
055591750a Fix Use android theme when defined
It is possible to define the theme to use for android in the AndroidManifest.xml.
If it is defined in the activity qt itself should not overwrite it. The change uses
the defined style in case it is given in the AndroidManifest.xml.
This seems to fix also QTBUG-35151.

Task-number: QTBUG-35050
Change-Id: I8b55c02ca1ecd7baa5f2f9460d154095aacf015f
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-01-11 22:13:19 +01:00
Christian Strømme
2b3f293d89 Android: Refactor the InputType mapping code.
- Fix issue where input flags and classes where wrongly mixed.
- Adds DATETIME class (support for Qt::ImhDate/Qt::ImhTime).
- Adds TYPE_NUMBER_VARIATION_PASSWORD for API level > 10.

Task-number: QTBUG-35198
Change-Id: I794159ca7c19d38b0b97521448cef0f5112ee8ba
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-01-07 23:27:01 +01:00
Paul Olav Tvete
c6b285a79d Android: let fullscreen use entire screen
API level 19 (Android 4.4) introduces "immersive" mode which lets
the app use the entire screen.

Change-Id: I12f6aebaf1303cdc5b6bfb51944e895351fa2406
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-03 10:57:58 +01:00
Eskil Abrahamsen Blomfeldt
58326e8585 Android: Overwrite plugin cache when APK is updated
To allow updating APKs with new versions of Qt, we need
to delete the old cache when the APK is updated. This patch
does two things:

1. Move the plugins (and imports/qml) into a directory called
qt-reserved-files/ to better separate the cache from the rest
of the application. The first time the files are put here,
we will delete the old cache in <datadir>/plugins,
<datadir>/imports and <datadir>/qml if they exist to avoid
leaving old files around forever.

2. Add versioning to the cache and flush it every time the
APK is reinstalled. Potentially, the libraries in the APK
can change for every reinstall, so this is the safest
approach.

Task-number: QTBUG-35129
[ChangeLog][Android][QTBUG-35129] Update deployed plugins
and imports when APK is updated on the device.

Change-Id: Ie38b639db2cfba8a521acc875c4afd5e07df3efd
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-01-03 08:58:59 +01:00
BogDan Vatra
f9a47a6aa5 Android: Don't show ActionBar at startup.
Task-number: QTBUG-35151

Change-Id: Ie62e50032aaa647a86c4f03b1a3363e5ef6a1bbb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-01-02 20:21:41 +01:00
Frederik Gladhorn
733ace5a7a Merge remote-tracking branch 'origin/release' into stable
Conflicts:
	configure
	mkspecs/macx-ios-clang/features/default_post.prf
	tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp

Change-Id: Iaba97eed2272bccf54289640b8197d40e22f7bf5
2013-12-05 17:42:33 +01:00
Eskil Abrahamsen Blomfeldt
03ae80359f Report hardware acceleration in default manifest
Qt applications require the "hardwareAccelerated" flag set on
some devices or Android versions. The symptoms that this was missing
was problems when handling orientation changes. When the target
SDK version is >= 14, it is true by default, but for lower versions
it is not. There is no reason to set this to false for a Qt
application, since we don't use any of the unsupported 2D drawing
operations in the documentation, so lets just set it to true for
all applications.

Task-number: QTBUG-35293
Change-Id: Ie131a52a2a3fc5a520d0c5dd5d64f79269e9b6b5
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-12-04 10:17:31 +01:00
BogDan Vatra
b8ccacbb03 Default to 5.2 source repository for Qt 5.2.x
We can't use latest anymore because the qreal change
is not back compatible and all the apps that used latest
will stop to run when Ministro will upgrade the libs.

Change-Id: I5286e72eccf86b4dead773a637aa28e29d120605
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-12-03 11:40:35 +01:00
Eskil Abrahamsen Blomfeldt
939a001c3a Android: Remove invalid error message
All usage of context menus prints out an error message because
onContextMenuClosed() is called more than once. We just return
silently instead if the method is called after the menu has
already been closed.

Change-Id: Ifa27ed42d188fdf670f09c4b1450b9fec0d5941f
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-11-26 10:58:18 +01:00
Eskil Abrahamsen Blomfeldt
20981e2953 REG: Fix changing input method parameters on Android
After b7440536c7, we no longer
restart the input method when the keyboard is shown, even if
the parameters for the input method has changed. The effect
was that if you had opened a keyboard with, say, digits only, then
all keyboards would be digits only forever, regardless of the
settings on text input.

This patch tries to be conservative, so it only adds back the
restartInput() logic when any of parameters have actually
been changed. Tested the code the original patch was made to
fix and it still works as before.

Task-number: QTBUG-34827
Change-Id: Icaee6026d5c3e95b605bb76485acf4fd651f81bd
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-11-14 21:15:35 +01:00
BogDan Vatra
ef6544ee27 Android native message dialog
Change-Id: Ief8c3ce3b8683c6960f046245844c1835a327d51
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2013-11-09 10:41:25 +01:00
Eskil Abrahamsen Blomfeldt
42670c7c45 Android: Allow modules to specify permissions/features
Some modules, such as Qt Multimedia, needs special permissions
to avoid getting exceptions at run-time. We should apply these
by default to the AndroidManifest.xml so that an application
using e.g. the camera will work out of the box.

Task-number: QTBUG-33953
Change-Id: Ibc1f086d249197b63e7ed1075ae7d54bdd1212f2
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2013-11-07 16:37:37 +01:00
Paul Olav Tvete
aa9ca5749f Android: allow installing apps to SD card by default
Task-number: QTBUG-34423

Change-Id: I3b2c8a12b113a35f8b8454191d8ba8832d9fd995
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-11-07 08:31:57 +01:00
BogDan Vatra
bc302359ca Android: Fix registerClipboardManager semaphore initialization
Task-number: QTBUG-34582

Change-Id: Idc6c821f768f90adf13af2070affe2ccf89a1450
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-11-06 17:47:25 +01:00
BogDan Vatra
2dd6c23395 Android: Catch any startActivity exceptions
Task-number: QTBUG-34600

Change-Id: I7147f0e6b7788df9e706e70758300d4d786032fc
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-11-06 17:47:25 +01:00
BogDan Vatra
417cf3fc53 Android: Fix menu on API-11+
On API-11+ if there is no hardware menu button show the action bar.
Fix menu when using the opengl android plugin.

Task-number: QTBUG-32002

Change-Id: I45bd49107621e4cab85eb6411897229e20bb8281
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-11-06 16:09:30 +01:00
BogDan Vatra
efb04c8d7d Android: prevent main activity to be recreated.
Add more config changes needed for API 13+
API 13+ is mandatory to build any Qt for Android application.

Change-Id: I595f7174dd2fc8a0865772f9780ce606e1f1fcf1
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-11-06 11:31:39 +01:00
Frederik Gladhorn
2c11a492fb Add better version checks for accessibility
We would spam the debug output on devices with api < 16 with some
warnings that the super class a11y delegate could not be found and
others.
Instead check the runtime version before trying to load the JNI code and
only load the delegate if api is new enough.

Change-Id: I52286cb99924b034b9b58c53566f15030939b0c9
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-11-05 19:08:08 +01:00
BogDan Vatra
b7440536c7 Android: Handle virtual keyboard visibility changes.
emitInputPanelVisibleChanged when virtual keyboard visibility is changed.

Task-number: QTBUG-34347

Change-Id: Iab7374db42ff8ce6f33dcc793b23f84d3c8692d5
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-11-01 09:38:12 +01:00
BogDan Vatra
e7db02e79e Remove android specific qmake variables.
Change-Id: Iba2b929ba70588ffcbcc9395501753521cfe5154
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-10-31 22:01:40 +01:00
BogDan Vatra
472e448d6a Fix the show/hide logic.
Make sure the back key event is not sent to applicaton as long as the keyboard
is still visible.

Task-number: QTBUG-30803

Change-Id: I8063981a96ddb8e065c1281b1bdc0fb4a2895bc2
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-10-29 15:30:39 +01:00
BogDan Vatra
d536713e96 Allow the user to specify a theme list.
Cleanup the theme handling.
Set default theme, needed by native dialogs.
Needs Ministro v9.6+.

Change-Id: Ia131edd8712b7737d3118d714c7772adb8f27acd
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-10-29 15:30:28 +01:00
BogDan Vatra
27f2b97155 Cleanup java files.
Remove unused imports

Change-Id: I9752ff3593cf97153133381736ef3c8c62898bd7
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-10-25 12:29:43 +02:00
BogDan Vatra
0096264800 Fix deploy mechanism.
The order of "android:value" and "android:name" attributes can be changed when
saving the XML document. Use placeholders instead.

Change-Id: I9a97bb0df2d2d16c8a9443a21ce7d3290e0ab466
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2013-10-23 13:23:12 +02:00
BogDan Vatra
744a201853 Move untranslatable stings to AndroidManifest.xml
strings.xml file is used to store strings that can/should be internationalized.

Change-Id: I2fc305b6917752e9f502bd4beb172205ba4f9fba
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-10-23 13:22:57 +02:00
Eskil Abrahamsen Blomfeldt
4be5d58203 Android: Make it possible to pass arguments via intent extras
Needed for autotest script, so that we can pass command line
arguments to Qt Test.

This can now be done by:

% adb shell am start \
            -e applicationArguments "argument1 argument2" \
            <INTENT>

Change-Id: I772209f66da055c6a0b01b709f36e33fdb5c2ed6
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-10-16 08:39:52 +02:00
Paul Olav Tvete
85fc94db1b Android: Fix backspace bug with 4.3 stock keyboard
The Android 4.3 keyboard will cause setComposingRegion() to be called when
backspacing over an existing word. If we don't implement that, the editor
will be out of sync with the input method.

Task-number: QTBUG-32955
Change-Id: I6c4ff786269a4e74c70a093c5f03c4c5a5727dd5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-10-09 15:38:24 +02:00
Eskil Abrahamsen Blomfeldt
96a11284f2 Android: Fix black screen when changing orientation
When targeting API level 13 or higher, you need to explicitly
subscribe to configuration changes for screen size, otherwise
surfaceChanged() will not be called when you change the
orientation of the screen.

Task-number: QTBUG-33140
Change-Id: I48fd1d298c408802d1743736f62128cd0eec8983
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-10-09 13:52:58 +02:00
Paul Olav Tvete
b3535f3926 Android: Don't throw away slow-moving mouse/touch events
When doing slow, precise movements, some devices will report
differences of less than 1 pixel. This would mark the points
as stationary, meaning that Qt would discard them without reporting.

On the three devices I have tested, stationary points are reported with
a 0.0 difference. If any devices are reporting noisy values, it is
still safer to test for equality, since it is much better to report
too many move events than to not report any.

Task-number: QTBUG-33729
Change-Id: If20f2758f5a5ec0917184345b558f55a3d383807
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-10-03 16:20:54 +02:00
Paul Olav Tvete
17f16c80e5 Android: update copied enum values in Java code
The InputMethodHint enum values were changed between Qt 4.8 and 5.1, and
the hardcoded copies were not updated. Thanks to Lasconic for finding
the solution to this problem.

Task-number: QTBUG-32072
Task-number: QTBUG-32710
Change-Id: I3eb1192911a9c48d7720e85b91bee1af693a669d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-10-02 07:40:41 +02:00
Eskil Abrahamsen Blomfeldt
39e04b0222 Remove logic which changes install rules inside Qt dir
A common problem is that examples and other apps are unusable on
Android when they are inside the Qt directory. There doesn't
really seem to be any good reason for having a special case in
place, since this will only affect applications which are not built
with the host toolchain, and we aren't building any command line
apps for the target devices. So the only thing this will affect are
the examples and we want those to be installed into the correct
path.

Change-Id: Ibae365e06eb77944f11e596c16c3c5baf798848c
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-09-26 08:40:38 +02:00
Yoann Lopes
1ac094321c Android: fixed arguments passed to the Qt application.
Removed extra empty parameter.

Change-Id: Iad5becf05801118d0f6d2ec2cc1ec255eaa9e872
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-09-24 12:56:48 +02:00
Paul Olav Tvete
74d2249e37 Android: handle inverted orientations
Add logic to detect InvertedPortrait and InvertedLandscape orientations
and implement QPlatformScreen::nativeOrientation() for Android.

Task-number: QTBUG-32144

Change-Id: I294506714ea0faa9eacd7a15e1cfc45342659964
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-09-20 12:02:58 +02:00
Eskil Abrahamsen Blomfeldt
580d816bb8 Android: Add tokens for androiddeployqt in template files
Make it possible for the androiddeployqt tool to replace certain
parts of the template with data from the .pro file.

Task-number: QTBUG-32856
Change-Id: Iaedd2076bc1ea5dac0b94624c0ba3a755d2a08f3
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
2013-09-19 14:50:42 +02:00
BogDan Vatra
d6d119ac6e Fix Android Style plugin.
Task-number: QTBUG-29565

Change-Id: Iedb861962e3638bcbdf9d9a72a47bebc63b425b9
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-09-10 11:52:16 +02:00
Yoann Lopes
e94c221655 Android: added ApplicationState capability.
The application state is tied to the QtActivity lifecycle.
Mapping of states between Android and Qt is as follows:
 onResume --> ApplicationActive
 onPause  --> ApplicationInactive
 onStop   --> ApplicationSuspended

Change-Id: Iefef08d6c7a7fde28fba1f4886882458cda6a0c0
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2013-08-28 17:00:15 +02:00
Frederik Gladhorn
3abecf2ee9 Accessibility for Android
This enables both modes for TalkBack,
explore-by-touch and the normal swiping mode.

It is partially inspired by the BarGraphView example
of the Google/Android Eyes-Free project.

Note that for any accessibility to work you'll need
a device with api level 16 at least.
Using reflection we should be able to dynamically pick up
the classes if we have the high enough api level.

Change-Id: I11b93bead451483782a1711434d45c8f9a35996f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-08-22 18:45:24 +02:00
Eskil Abrahamsen Blomfeldt
c8b0c428d2 Android: Add default values for min and target SDKs
The minimum SDK version supported should be set to 9, since this
is required by Qt. We also set the target SDK version to 14, since
this will remove certain compatibility features, like the overflow
button in the action bar.

Task-number: QTBUG-30860
Change-Id: Iddd0eba2e802d03c5fe6e9b5da626808bbbad71d
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-08-21 11:45:08 +02:00
Frederik Gladhorn
e727855476 Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev 2013-08-16 16:02:19 +02:00
Frederik Gladhorn
9b093871a6 Fix xlint unchecked warning (java)
This patch fixes the warning uncoverd by the -Xlint:unchecked option
by parametrising the generics with wildcards.

src/org/qtproject/qt5/android/QtActivityDelegate.java:315:
warning: [unchecked] unchecked call to getMethod(String,Class<?>...) as a member of the raw type Class
                    Method m = initClass.getMethod("setActivity", Activity.class, Object.class);

Change-Id: I665e9dfd6d64c92a491d68c838ad02bde275d604
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-08-16 09:22:44 +02:00
Frederik Gladhorn
32e6778bda Stop unconditional synth of mouse events on Android
Before this patch we always send mouse events for each
touch event that happens.
This is redundant (we already synthesize in
QGuiApplicatioin) and breaks some touch handling
in QtQuick2.

Change-Id: I4bc1686a7a46039901315619a0acdf2888ad6775
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-07-29 17:58:30 +02:00
Paul Olav Tvete
591584d9a9 Android: Get SSL root certificates from TrustManager
On Android, when not using Ministro, we cannot read certificates
from the file system, so we have to get them through Java APIs instead.

Change-Id: I415329fcb45836735c1112dbe832214b3c73dc9a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-07-29 15:38:51 +02:00
Paul Olav Tvete
07a727f8b8 Android: handle keyboard connect/disconnect
Even though the documentation says that "This should never normally
 happen", we do get a "navigation" change when an external keyboard
is connected or disconnected.

Thanks to BogDan for finding the solution.

Task-number: QTBUG-31806
Change-Id: Id92639800e617821976f842f93e09517529e14ef
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-06-21 09:26:35 +02:00
Eskil Abrahamsen Blomfeldt
2e6e295f61 Never show EGLFS mouse cursor in Qt for Android platform plugin
The hack to use the environment variable for turning off the
mouse cursor is broken when running against Ministro, because
Ministro does not pass the environment on.

A better solution is to make it possible to turn the cursor
in the EGLFS plugin off in the hooks instead.

Task-number: QTBUG-30553
Change-Id: Id09b48c350d2c95de9bb174f7480cf0cd2bf8145
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
2013-05-20 12:06:48 +02:00
Eskil Abrahamsen Blomfeldt
f963d70c30 Android: Change default Ministro download location
Set up for downloading from the qt-project.org servers instead
of KDE servers.

Change-Id: I6f9e69f91ea956165300d75109e1683d0b1aa5f0
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2013-05-07 22:43:14 +02:00
Eskil Abrahamsen Blomfeldt
522c7ba1ac Enable bundling Qt in Android package in build system
For bundling Qt, we need two things:

1. We need to build a regular .jar file out of the Java files,
so that they can be built into the app package. Dexing the
classes first (i.e. compiling the JVM bytecode to Dalvik
bytecode) is required for loading the .jar file at run-time,
but cannot be used for building it into the app, so we need
two different paths.

2. We need to specify which extra files have to be bundled for
each module (this is primarily for plugins and imports). This
is because there is no static dependency on these files, so
it cannot be detected during deployment.

Task-number: QTBUG-30751
Change-Id: I733603ee5d1c64bd7c5b9357eb5d993b9d0298f7
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-05-01 11:24:15 +02:00
Eskil Abrahamsen Blomfeldt
94bed3ad14 Make it possible to bundle Qt libraries in Android apk
Add the enablers so that Qt Creator (or another
deployment tool) can add a specification in the app's
meta data of which libraries are bundled and the
Java code required to extract plugins and imports into
the required directory structure inside the app's
data directory.

This is intended to be an alternative to using Ministro
for deployment, and the mechanism of extracting
libraries on first startup is a work-around for the
requirement in Qt of having this directory structure.
For Qt 5.2, the approach should be changed to load
plugins directly from the app's lib directory and
the other files in imports will be bundled as qrcs
in the native plugins.

Task-number: QTBUG-30751
Change-Id: Ibdb3a672548b4802f9bf3ecd05fc194426ac30e7
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-05-01 11:24:03 +02:00
Paul Olav Tvete
8d1b8b97ac Don't block back button after keyboard is hidden
The back button would be non-responsive for 5 seconds after
hiding the software keyboard. This is a minimal change that
does not look into why we need to have a 5 second delay in
the first place.

Task-number: QTBUG-30752

Change-Id: Ied514b77650cea7accc37a03efef2ce861090f65
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-04-30 17:21:21 +02:00
Eskil Abrahamsen Blomfeldt
72e9cad560 Remove dead code
Just some code that was commented out and only adds to the
confusion.

Change-Id: Icfdf81de9731eeb2c473a2f6e2723742601a2037
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-04-15 13:19:01 +02:00
hjk
06d4c0b2e8 Android: Implement debugging without relying on shell run-as
This uses explicit handshakes between the application and the
gdbserver start and the host side by using the gdbserver socket
and two files ("ping" file in the application dir, "pong" file
in /data/local/tmp/qt)

The sequence is as follows:

 host: adb forward debugsocket :5039

 host: adb shell rm pong file
 host: adb shell am start
 host: loop until ping file appears

     app start up: launch gdbserver --multi +debug-socket
     app start up: loop until debug socket appear

         gdbserver: normal start up including opening debug-socket,
                    not yet attached to any process

     app start up: touch ping file
     app start up: loop until pong file appears

 host: start gdb
 host: gdb: set up binary, breakpoints, path etc
 host: gdb: target extended-remote :5039

         gdbserver: accepts connection from gdb

 host: gdb: attach <application-pid>

         gdbserver: attaches to the application
                    and stops it

     app start up: stopped now (it is still waiting for
                   the pong anyway)

 host: gdb: continue

         gdbserver: resumes application

     app start up: resumed (still waiting for the pong)

 host: write pong file

     app start up: java code continues now, the process
                   is already fully under control
                   of gdbserver. Breakpoints are set etc,
                   we are before main.
     app start up: native code launches

Change-Id: Iaa28b8664dbebc39022d1be7ff5533c52ce39715
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-04-05 16:26:31 +02:00
BogDan Vatra
f5ba2b8a91 Update java part for Ministro 9.x
Add default source and repository.

Change-Id: Idfa7936e8a2879fad9944702c2aa5c6d4638185a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-04-05 16:26:21 +02:00
Paul Olav Tvete
12f7596cf6 Android: use Fusion style by default
The Android style is not fully implemented yet, so prefer the
Fusion style by default.

Task-number: QTBUG-29565

Change-Id: Ida413e6b34a41b618b8e2206688922195ffcc519
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-04-05 16:26:13 +02:00
Paul Olav Tvete
439a6fec84 Android: set logicalDpi based on DisplayMetrics.scaledDensity
The mathematically correct way would be to set logicalDPi to
160*scaledDensity, but then a 12 pt font would be gigantic. On
iOS, we use a factor of 72 to be compatible with the native APIs,
but that means that a 12 pt font is very small.

A factor of 100 means that desktop apps look reasonable by default.

Task-number: QTBUG-29674

Change-Id: I607f110150fb95685a6980b92f6f92f2b489f959
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-04-05 16:26:07 +02:00
BogDan Vatra
b02b6172a2 Also version.xml needs to be installed
This file is used by QtCreator to decide if the java files
need to be updated.

Change-Id: Ib4875c32a071dd768f89950582c81ccdd420feca
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-04-03 10:15:40 +02:00
Paul Olav Tvete
e85524096d Use qtproject instead of necessitas for default package name
Task-number: QTCREATORBUG-8779
Change-Id: Idf62e5efa4b8bc4b90d99b3883ae127a0cc7e92c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-03-22 19:52:26 +01:00
Eskil Abrahamsen Blomfeldt
9c6f27ce48 Fix installation of Android java files
The installation of the java files does not depend on Qt,
so it can be built before the rest of Qt, which means we need
to remove the default dependency in qmake, otherwise we can
get an error message:

Project ERROR: Unknown module(s) in QT: gui core

Change-Id: Ibb968acf6ec06c91ccfd5002e08c93c96a209934
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2013-03-22 16:34:07 +01:00
Eskil Abrahamsen Blomfeldt
53b32a0b3f Android: Fix use_local_libs when running from launcher
Use persistent data to specify the alternative location
of Qt libraries instead of command line arguments, so that the
application can be run from the launcher and not just from
Qt Creator.

Task-number: QTCREATORBUG-8643
Change-Id: I72df2905f3f35a3b924edd47d3a5387e674c97ac
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2013-03-21 15:26:58 +01:00
Paul Olav Tvete
79d4f5b628 Android: install java-related files
The jar files are deployed on the device. The files in the java directory
are used by creator when making a new project.

Change-Id: Ie59f40edaa9c10044a1ca9949808ee22e6622ea1
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-03-12 18:13:37 +01:00
Paul Olav Tvete
5e907919d7 Android: Allow more than three touch points
Now that we do not support Android versions below API level 9, we
can use the modern multi-touch functions.

Change-Id: I5887b4c35f9e02089a334526cebecf0cf767bd6c
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2013-03-12 09:16:42 +01:00
Paul Olav Tvete
97fcf3bc98 Introducing the Qt Android port
Based on the Necessitas project by Bogdan Vatra.
Contributors to the Qt5 project:

BogDan Vatra <bogdan@kde.org>
Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
hjk <hjk121@nokiamail.com>
Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Paul Olav Tvete <paul.tvete@digia.com>
Robin Burchell <robin+qt@viroteck.net>
Samuel Rødal <samuel.rodal@digia.com>
Yoann Lopes <yoann.lopes@digia.com>

The full history of the Qt5 port can be found in refs/old-heads/android,
SHA-1 249ca9ca2c7d876b91b31df9434dde47f9065d0d

Change-Id: Iff1a7b2dbb707c986f2639e65e39ed8f22430120
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-03-05 08:31:23 +01:00