Merge lp:~ubuntu-sdk-team/ubuntu-ui-toolkit/newJsonApiCheck into lp:ubuntu-ui-toolkit/staging

Proposed by Christian Dywan on 2014-09-24
Status: Merged
Approved by: Tim Peeters on 2015-05-20
Approved revision: 1299
Merged at revision: 1511
Proposed branch: lp:~ubuntu-sdk-team/ubuntu-ui-toolkit/newJsonApiCheck
Merge into: lp:ubuntu-ui-toolkit/staging
Diff against target: 4745 lines (+2521/-2131)
9 files modified
.bzrignore (+1/-0)
components.api (+1380/-1890)
debian/control (+1/-0)
debian/ubuntu-ui-toolkit-autopilot.install (+1/-0)
tests/apicheck/apicheck.cpp (+1106/-0)
tests/apicheck/apicheck.pro (+12/-0)
tests/qmlapicheck.py (+0/-218)
tests/qmlapicheck.sh (+18/-19)
tests/tests.pro (+2/-4)
To merge this branch: bzr merge lp:~ubuntu-sdk-team/ubuntu-ui-toolkit/newJsonApiCheck
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve on 2015-05-20
Tim Peeters 2014-09-24 Approve on 2015-05-11
Review via email: mp+235830@code.launchpad.net

Commit Message

Implement new API tool based on qmlplugindump producing JSON

To post a comment you must log in.
Tim Peeters (tpeeters) wrote :

+AbstractButton 1.0 AbstractButton 0.1 ActionItem

ok, nice, it has the different versions and its parent.

We can consider to remove reduntant information and make the formatting a bit more clear, for example like this:

AbstractButton 1.0 0.1: ActionItem

Tim Peeters (tpeeters) wrote :

^note that the inherited component may need a version too. It is not the case right now, but with zsombi's upcoming versioning tree split (and new subtheming), Page 1.0 will inherit PageTreeNode 1.0 and Page 1.3 inherits PageTreeNode 1.3. So we'd need (for example, I don't remember the details of the versions in this case):

Page 0.1 1.0 1.1 1.2: PageTreeNode 1.2

and

Page 1.3: PageTreeNode 1.3

Also note that I have a preference for listing the version numbers in increasing order. But I don't have arguments for that.

Tim Peeters (tpeeters) wrote :

All of the types of the properties of a component have versions too. So we could mess up there if we change those.

Luckily we recently agreed that in a certain version of the UITK, we use only components of the same version. That is not the case yet until zsombi's changes fort he versioning land.

Tim Peeters (tpeeters) wrote :

Palette QtObject
    property PaletteValues normal
    property PaletteValues selected
Palette 1.3 Palette 0.1 QtObject
    property PaletteValues normal
    property PaletteValues selected

What is this? Why is Palette listed twice?

We may need to include namespaces. What if we have Ubuntu.Components.Palette and Ubuntu.Components.Themes.Palette?

Actually that is already happening here:

Header 1.0 Header 0.1 AppHeader
    property string _for_autopilot
    property var actions
    property bool animate
    property Object config
    property Item contents
    property color dividerColor
    property Flickable flickable
    function var show()
    function var hide()
    readonly property bool moving
    property var pageStack
    property color panelColor
    property var tabsModel
    property string title
    property bool useDeprecatedToolbar
Header 1.0 Header 0.1 Item
    property string text

Where the second Header is ListItems.Header. And the first one is actually marked as internal and deprecated with qdoc strings. I guess however that the api-checker does not take those into account and having the deprecated Header is an issue that is not relevant for this MR.

review: Needs Fixing
Tim Peeters (tpeeters) wrote :

> 1295. By Christian Dywan 2 hours ago
> Add apicheck to debian/ubuntu-ui-toolkit-autopilot.install
>
> It shouldn't be in the plugin so this is the second best place.

I'd say we don't install it at all. We build it and use it at build-time, but I don't see why we need to install it.

Tim Peeters (tpeeters) wrote :

Instead of listing namespaces in components.api, we could generate separate API files:
- ubuntu.components.api
- ubuntu.components.listitems.api
- ubuntu.components.themes.api

etc.

That way it will also (when checking the diff) immediately become clear whether we should pay extra attention to the API change (ubuntu.components.api is way more important than ubuntu.components.themes.ambience or even ubuntu.components.internal if we ever decide to have that).

To take it one step further, we could have a separate API file for each version of the components.

Christian Dywan (kalikiana) wrote :
Download full text (5.3 KiB)

> +AbstractButton 1.0 AbstractButton 0.1 ActionItem
> ok, nice, it has the different versions and its parent.
> We can consider to remove reduntant information
> and make the formatting a bit more clear, for example like this:
> AbstractButton 1.0 0.1: ActionItem

The reason unlike staging I made left types separate is that they can differ, for instance with UbuntuShape, the old code however didn't cope with this given that its C++ handling was very improvised:

UbuntuShape 1.2 UbuntuShape 1.0 UbuntuShape 0.1 Shape 1.0 Shape 0.1 Item

> ^note that the inherited component may need a version too.
> It is not the case right now, but with zsombi's upcoming
> tree split (and new subtheming), Page 1.0 will inherit PageTreeNode 1.0
> and Page 1.3 inherits PageTreeNode 1.3. So we'd need
> (for example, I don't remember the details of the versions in this case):
> Page 0.1 1.0 1.1 1.2: PageTreeNode 1.2
> and
> Page 1.3: PageTreeNode 1.3

That's a very good point. I'll look into it.

> Also note that I have a preference for listing the version numbers
> in increasing order. But I don't have arguments for that.

I actually have reasons for the current order:
1. Sometimes you want to see which components were introduced in eg. 1.3 or double-check that a new component is indeed in the new version - having it at the very left makes that a bit easier
2. UbuntuShape used to be called Shape. If it started with Shape 0.1 it'd have to be sorted by S and be very surprising if you look for it under U.

Point #2 as well as the previous point of different names for the same class could potentially be resolved by listing them separately - but that would require duplicating their respective API and might be confusing.

> All of the types of the properties of a component have versions too.
> So we could mess up there if we change those.
> Luckily we recently agreed that in a certain version of the UITK,
> we use only components of the same version. That is not the case
> yet until zsombi's changes fort he versioning land.

True. It may be worth scanning for this even given our plans so that we can catch accidental mixing. I'd suggest this to be a follow-up.

> Palette QtObject
> property PaletteValues normal
> property PaletteValues selected
> Palette 1.3 Palette 0.1 QtObject
> property PaletteValues normal
> property PaletteValues selected
> What is this? Why is Palette listed twice?
> We may need to include namespaces. What if we have
> Ubuntu.Components.Palette and Ubuntu.Components.Themes.Palette?

> Actually that is already happening here:
> Header 1.0 Header 0.1 AppHeader
> property string _for_autopilot
> property var actions
> property bool animate
> […]
> Header 1.0 Header 0.1 Item
> property string text
>
> Where the second Header is ListItems.Header. And the first one is
> actually marked as internal and deprecated with qdoc strings.
> I guess however that the api-checker does not take those
> into account and having the deprecated Header is an issue
> that is not relevant for this MR.

You hit the nail on the head. The old Header is public and the new code is only taking type information into account.
I suppose it would ...

Read more...

Christian Dywan (kalikiana) wrote :

> Palette QtObject
> property PaletteValues normal
> property PaletteValues selected
> Palette 1.3 Palette 0.1 QtObject
> property PaletteValues normal
> property PaletteValues selected
> What is this? Why is Palette listed twice?
> We may need to include namespaces. What if we have
> Ubuntu.Components.Palette and Ubuntu.Components.Themes.Palette?

I don't know to be quite honest. The version-less Palette is a C++ type from what I can infer, no idea where it's registered.

Tim Peeters (tpeeters) wrote :

2228 + qtquick1-5-dev,
2229 + qtquick1-5-private-dev,

Why do we need qtquick1? That's old stuff.

Tim Peeters (tpeeters) wrote :

2243 === added file 'tests/apicheck/apicheck.cpp'
2244 --- tests/apicheck/apicheck.cpp 1970-01-01 00:00:00 +0000
2245 +++ tests/apicheck/apicheck.cpp 2015-04-29 13:03:45 +0000
2246 @@ -0,0 +1,1085 @@
2247 +/*
2248 + * Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
2249 + * Copyright (C) 2015 Christian Dywan

How much of this is an existing tool from Digia? Just wondering if it is only their tool then maybe we should package it separately and not include the source here?

Tim Peeters (tpeeters) wrote :

2300 +void collectReachableMetaObjects(const QMetaObject *meta, QSet<const QMetaObject *> *metas, bool extended = false)

It would be good to document what the function does and what its parameters are. Also for the other functions.

Tim Peeters (tpeeters) wrote :

> > +AbstractButton 1.0 AbstractButton 0.1 ActionItem
> > ok, nice, it has the different versions and its parent.
> > We can consider to remove reduntant information
> > and make the formatting a bit more clear, for example like this:
> > AbstractButton 1.0 0.1: ActionItem
>
> The reason unlike staging I made left types separate is that they can differ,
> for instance with UbuntuShape, the old code however didn't cope with this
> given that its C++ handling was very improvised:
>
> UbuntuShape 1.2 UbuntuShape 1.0 UbuntuShape 0.1 Shape 1.0 Shape 0.1 Item

We could consider them as separate things, so
UbuntuShape 1.2 1.0 0.1: Item
and
Shape 1.0 0.1: Item

Tim Peeters (tpeeters) wrote :

> > Also note that I have a preference for listing the version numbers
> > in increasing order. But I don't have arguments for that.
>
> I actually have reasons for the current order:
> 1. Sometimes you want to see which components were introduced in eg. 1.3 or
> double-check that a new component is indeed in the new version - having it at
> the very left makes that a bit easier
> 2. UbuntuShape used to be called Shape. If it started with Shape 0.1 it'd have
> to be sorted by S and be very surprising if you look for it under U.
>
> Point #2 as well as the previous point of different names for the same class
> could potentially be resolved by listing them separately - but that would
> require duplicating their respective API and might be confusing.

Okay, that makes sense.

> > All of the types of the properties of a component have versions too.
> > So we could mess up there if we change those.
> > Luckily we recently agreed that in a certain version of the UITK,
> > we use only components of the same version. That is not the case
> > yet until zsombi's changes fort he versioning land.
>
> True. It may be worth scanning for this even given our plans so that we can
> catch accidental mixing. I'd suggest this to be a follow-up.

Okay. Let's keep it in mind as a future addition.

Tim Peeters (tpeeters) wrote :

> > > 1295. By Christian Dywan 2 hours ago
> > > Add apicheck to debian/ubuntu-ui-toolkit-autopilot.install
> > >
> > > It shouldn't be in the plugin so this is the second best place.
>
> > I'd say we don't install it at all. We build it
> > and use it at build-time, but I don't see why we need to install it.
>
> We want other packages serialize and validate their API. Also Shop and
> development tools need to validate application code against frameworks
> available in targets.

Ok. It has nothing to do with autopilot though. Perhaps it should go in a separate package? Let's check with zoltan/mirv? Or we keep it here and give it its own package in the future after it developed a bit further.

> The next tool I'm looking into is a QML code validator that doesn't require
> targets (images, chroots, installed components) to be available, which would
> be highly impractical, but instead relies on apicheck output.

Tim Peeters (tpeeters) wrote :

> > Instead of listing namespaces in components.api, we could generate
> > separate API files:
> > - ubuntu.components.api
> > - ubuntu.components.listitems.api
> > - ubuntu.components.themes.api
> > etc.
> >
> > That way it will also (when checking the diff) immediately become clear
> > whether we should pay extra attention to the API change
> > (ubuntu.components.api is way more important than
> > ubuntu.components.themes.ambience or even
> > ubuntu.components.internal if we ever decide to have that).
> >
> > To take it one step further, we could have a separate API file
> > for each version of the components.
>
> If you take a look at the commit history you'll see that I had a per-namespace
> split at one point in this branch. One of the reasons I later decided to undo
> it is that it become tedious to read and move lots of files compared to
> skipping one components.api.
>
> Also validity of API is right now black and white, components that we don't
> guarantee stability for won't be included, if we did include them they would
> practically speaking get special treatment anyway as they effectively can
> block merge requests.
>
> I'd like to discuss this, however. I have rough thoughts on hiding the manual
> handling of components.api(.new) and we could consider a non-stupid
> alternative to diff to be able to quantify guarantees.

I think we need to at least list the namespaces, even if it is all in one components.api file. So we can make sections and list namespaces first:

Ubuntu.Components
=================
Page 1.2 1.0 0.1: PageTreeNode

Ubuntu.Components.Popups
========================

etc

or, per component list its name including the import?

Ubuntu.Components.Page 1.2 1.0 0.1: Ubuntu.Components.PageTreeNode

Tim Peeters (tpeeters) wrote :

Still open besides my replies to your comments:
- Why is Palette listed twice?
- Formatting (e.g. Page 1.1 1.0 0.1: PageTreeNode)
- Version of inherited component
- Versions of properties (follow-up)
- How to deal with namespaces
- Packaging (currently apicheck is part of the UITK-AP package)
- Documentation in apicheck.cpp

Christian Dywan (kalikiana) wrote :

> 2248 + * Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
> 2249 + * Copyright (C) 2015 Christian Dywan
>
> How much of this is an existing tool from Digia? Just wondering if it is
> only their tool then maybe we should package it separately and not
> include the source here?

As you can see I modified the source ;-) The code is based on qmlplugindump. Zsombi asked if it made sense to factor out the "changes" but at this point apicheck is almost a complete rewrite. I might actually check making a clean break with the remaining bits if that makes it clearer. That'll delay this branch yet again, though.

Christian Dywan (kalikiana) wrote :

> - Why is Palette listed twice?
The Palette is a C++ type that I can't get QML type information for. That's true for all attached properties (cf. ULLayoutsAttached). I'm at a loss as to where Palette is exported in the code, maybe we can accept it as a limitation for now and if we hit anything similar in the future it'll be more obvious.

> - Formatting (e.g. Page 1.1 1.0 0.1: PageTreeNode)
Changed. In the case of UbuntuShape it now is
Ubuntu.Components.UbuntuShape 1.2 1.0 0.1 Shape 1.0 0.1: Item

> - Version of inherited component
> - Versions of properties (follow-up)

I'd like to leave both of these for follow-up.

> - How to deal with namespaces
Prefixed class names with namespace; there's certain objects I cannot get a QML type for and ergo no namespace - classes can "leak" into other namespaces so I can't guess in this case either. Same underlying issue as with the Palette.

> - Packaging (currently apicheck is part of the UITK-AP package)
> - Documentation in apicheck.cpp
I added a some explanations to the usage output.

> 2228 + qtquick1-5-dev,
> 2229 + qtquick1-5-private-dev,
>
> Why do we need qtquick1? That's old stuff.

Good catch, I removed it.

Tim Peeters (tpeeters) wrote :

> > - Why is Palette listed twice?
> The Palette is a C++ type that I can't get QML type information for. That's
> true for all attached properties (cf. ULLayoutsAttached). I'm at a loss as to
> where Palette is exported in the code, maybe we can accept it as a limitation
> for now and if we hit anything similar in the future it'll be more obvious.

We have a Palette.qml in Ubuntu.Components.Themes AND in Ubuntu.Components.Themes.Ambience (and more copies for each additional theme). Maybe it is because of that?

> > - Formatting (e.g. Page 1.1 1.0 0.1: PageTreeNode)
> Changed. In the case of UbuntuShape it now is
> Ubuntu.Components.UbuntuShape 1.2 1.0 0.1 Shape 1.0 0.1: Item
>
> > - Version of inherited component
> > - Versions of properties (follow-up)
>
> I'd like to leave both of these for follow-up.

I think the version of inherited component is quite important. We don't have to solve everything in this MR because then it will never land, but let's report the bug when we land this MR, and see if we can put it on the backlog.

> > - How to deal with namespaces
> Prefixed class names with namespace; there's certain objects I cannot get a
> QML type for and ergo no namespace - classes can "leak" into other namespaces
> so I can't guess in this case either. Same underlying issue as with the
> Palette.

Ok. Those issues were present in the previous version of the API checker as well, so it is ok to leave it unsolved here.

> > - Packaging (currently apicheck is part of the UITK-AP package)

Do we want to keep it in the autopilot package?

> > - Documentation in apicheck.cpp
> I added a some explanations to the usage output.
>
> > 2228 + qtquick1-5-dev,
> > 2229 + qtquick1-5-private-dev,
> >
> > Why do we need qtquick1? That's old stuff.
>
> Good catch, I removed it.

OK.

Tim Peeters (tpeeters) wrote :

Looks good to land to me.

review: Approve
1299. By Christian Dywan on 2015-05-20

Merge lp:~ubuntu-sdk-team/ubuntu-ui-toolkit/staging

review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.bzrignore'
2--- .bzrignore 2015-04-15 10:01:28 +0000
3+++ .bzrignore 2015-05-20 11:32:53 +0000
4@@ -19,6 +19,7 @@
5 po/*.mo
6 examples/ubuntu-ui-toolkit-gallery/po/*.mo
7 tests/unit/tst_i18n/locale/en/LC_MESSAGES/*.mo
8+tests/apicheck/apicheck
9 tests/launcher/launcher
10 build_paths.inc
11 tests/unit/tst_i18n/localizedApp/share/locale/en/LC_MESSAGES/localizedApp.mo
12
13=== modified file 'components.api'
14--- components.api 2015-05-18 14:36:46 +0000
15+++ components.api 2015-05-20 11:32:53 +0000
16@@ -1,1904 +1,1394 @@
17-Button 0.1 1.0
18-AbstractButton
19- property color color
20- property Gradient gradient
21- property font font
22- property string iconPosition
23-UbuntuColors 0.1 1.0
24-QtObject
25- readonly property color orange
26- readonly property color lightAubergine
27- readonly property color midAubergine
28- readonly property color darkAubergine
29- readonly property color warmGrey
30- readonly property color coolGrey
31- property Gradient orangeGradient
32- property Gradient greyGradient
33-Button 1.1
34-AbstractButton
35- property color strokeColor
36- property color color
37- property Gradient gradient
38- property font font
39- property string iconPosition
40-Haptics 0.1 1.0
41-Object
42- readonly property bool enabled
43- property HapticsEffect effect
44- function play(customEffect)
45-UbuntuColors 1.1
46-QtObject
47- readonly property color orange
48- readonly property color lightAubergine
49- readonly property color midAubergine
50- readonly property color darkAubergine
51- readonly property color warmGrey
52- readonly property color coolGrey
53- property Gradient orangeGradient
54- property Gradient greyGradient
55- readonly property color lightGrey
56- readonly property color darkGrey
57- readonly property color red
58- readonly property color green
59- readonly property color blue
60- readonly property color purple
61-AbstractButton 0.1 1.0
62-ActionItem
63- signal clicked()
64- signal pressAndHold()
65- property bool pressed
66- property bool hovered
67- property bool __acceptEvents
68- property internal __mouseArea
69-ActionItem 0.1 1.0
70-StyledItem
71- property Action action
72- property string text
73- property url iconSource
74+Ubuntu.Components.AbstractButton 1.0 0.1: ActionItem
75+ property bool hovered
76+ signal clicked()
77+ signal pressAndHold()
78+ property bool pressed
79+Ubuntu.Components.AbstractButton 1.3: ActionItem
80+ property bool hovered
81+ signal clicked()
82+ signal pressAndHold()
83+ property bool pressed
84+Ubuntu.Components.Action 1.0 0.1: QtObject
85+ property string description
86+ property bool enabled
87 property string iconName
88+ property url iconSource
89+ property Component itemHint
90+ property string keywords
91 signal triggered(var value)
92- function trigger(value)
93-ActionList 0.1 1.0
94-QtObject
95- default property list<Action> children
96- property list<Action> actions
97-ActivityIndicator 0.1 1.0
98-AnimatedItem
99- property bool running
100-Captions 1.2
101-ColumnLayout
102- property int captionStyle
103- property Label title
104- property Label subtitle
105-CheckBox 0.1 1.0
106-AbstractButton
107- property bool checked
108-ComboButton 1.1
109-Toolkit.Button
110- property bool expanded
111- property real collapsedHeight
112- property real expandedHeight
113- readonly property real comboListHeight
114- default property list<Item> comboList
115- property color dropdownColor
116-CrossFadeImage 0.1 1.0
117-Item
118- property url source
119- property int fillMode
120- property int fadeDuration
121- property size sourceSize
122- readonly property bool running
123- readonly property int status
124-CrossFadeImage 1.1
125-Item
126- property url source
127- property int fillMode
128- property int fadeDuration
129- property size sourceSize
130- property string fadeStyle
131- readonly property bool running
132- readonly property int status
133-Header 0.1 1.0
134-AppHeader
135- property string _for_autopilot
136-Icon 0.1 1.0
137-Item
138+ function trigger(var value)
139+ function trigger()
140 property string name
141- property color color
142- property color keyColor
143-Icon 1.1
144-Icon10
145- property url source
146-Label 0.1 1.0
147-Text
148- property string fontSize
149-MainView 0.1 1.0
150-MainViewBase
151- property bool automaticOrientation
152- property bool useDeprecatedToolbar
153- default property internal contentsItem
154-MainView 1.2
155-MainViewBase
156- property internal automaticOrientation
157- default property internal contentsItem
158-Object 0.1 1.0
159-QtObject
160- default property internal children
161- property list<QtObject> __defaultPropertyFix
162-OptionSelector 0.1 1.0
163-ListItem.Empty
164- property var model
165- property bool expanded
166- property bool multiSelection
167- property bool colourImage
168- property Component delegate
169- property real containerHeight
170- property int selectedIndex
171- property bool currentlyExpanded
172- readonly property real itemHeight
173- signal delegateClicked(int index)
174- signal expansionCompleted()
175-OptionSelectorDelegate 0.1 1.0
176-ListItem.Empty
177- property string subText
178- property url icon
179- property bool constrainImage
180- property bool colourImage
181- property color assetColour
182- readonly property ListView listView
183- readonly property string fragColourShader
184-OrientationHelper 0.1 1.0
185-Item
186- property bool automaticOrientation
187- property bool transitionEnabled
188- readonly property bool rotating
189- property int __orientationAngle
190- property int orientationAngle
191- property bool anchorToKeyboard
192-Page 0.1 1.0
193-PageTreeNode
194- property string title
195- property Item tools
196- property Item __customHeaderContents
197- property Flickable flickable
198- property list<Action> actions
199-Page 1.1
200-Page10
201- readonly property PageHeadConfiguration head
202-PageHeadConfiguration 1.1
203-Object
204- property list<Action> actions
205- property Action backAction
206- property Item contents
207- property string preset
208- readonly property PageHeadSections sections
209- property color foregroundColor
210-PageHeadSections 1.1
211-QtObject
212- property bool enabled
213- property var model
214- property int selectedIndex
215-PageHeadState 1.1
216-State
217- property PageHeadConfiguration head
218- property list<Action> actions
219- property Action backAction
220- property Item contents
221-PageStack 0.1 1.0
222-PageTreeNode
223- property bool __showHeader
224- property int depth
225- property Item currentPage
226- function push(page, properties)
227- function pop()
228- function clear()
229- default property list<Object> data
230-Panel 0.1 1.0
231-Item
232- default property list<Object> contents
233- property int align
234- property bool opened
235- function open()
236- function close()
237- property int hideTimeout
238- property bool locked
239- property real hintSize
240- property real triggerSize
241- readonly property real position
242- property bool animate
243- readonly property bool animating
244- property bool __closeOnContentsClicks
245- property bool __openOnHover
246- property bool pressed
247-ProgressBar 0.1 1.0
248-AnimatedItem
249- property bool indeterminate
250- property real minimumValue
251- property real maximumValue
252- property real value
253-ProgressBar 1.1
254-ProgressBar10
255- property bool showProgressPercentage
256-PullToRefresh 1.1
257-StyledItem
258- readonly property bool releaseToRefresh
259- readonly property real offset
260- property Component content
261- property Flickable target
262- property bool refreshing
263- signal refresh()
264-Scrollbar 0.1 1.0
265-StyledItem
266- property Flickable flickableItem
267- property int align
268- property bool __interactive
269- property internal __private
270-Slider 0.1 1.0
271-StyledItem
272- property real minimumValue
273- property real maximumValue
274- property real value
275- property bool live
276- property bool pressed
277- signal touched(bool onThumb)
278- function formatValue(v)
279- property internal __internals
280-Switch 0.1 1.0
281-CheckBox
282-Tab 0.1 1.0
283-PageTreeNode
284- property string title
285- property url iconSource
286- property Item page
287- readonly property int index
288- property internal __protected
289-TabBar 0.1 1.0
290-StyledItem
291- property Item tabsItem
292- property var model
293- readonly property bool pressed
294- property bool selectionMode
295- property int selectedIndex
296- property bool alwaysSelectionMode
297- property bool animate
298-Tabs 0.1 1.0
299-PageTreeNode
300- property int selectedTabIndex
301- readonly property Tab selectedTab
302- readonly property Item currentPage
303- property TabBar tabBar
304- default property list<Item> tabChildren
305- readonly property int count
306- signal modelChanged()
307- property var __model
308-TextArea 0.1 1.0
309-Ubuntu.StyledItem
310- property bool highlighted
311- property string placeholderText
312- readonly property string displayText
313- property bool selectByMouse
314- property bool autoExpand
315- property bool autoSize
316- property int maximumLineCount
317- property real contentWidth
318- property real contentHeight
319- property var popover
320- property bool activeFocusOnPress
321- property url baseUrl
322- property bool canPaste
323- property bool canRedo
324- property bool canUndo
325- property color color
326- property Component cursorDelegate
327- property int cursorPosition
328- property rectangle cursorRectangle
329- property bool cursorVisible
330- property enumeration effectiveHorizontalAlignment
331- property font font
332- property enumeration horizontalAlignment
333- property bool inputMethodComposing
334- property enumeration inputMethodHints
335- property int length
336- property int lineCount
337- property enumeration mouseSelectionMode
338- property enumeration persistentSelection
339- property bool readOnly
340- property enumeration renderType
341- property string selectedText
342- property color selectedTextColor
343- property color selectionColor
344- property int selectionEnd
345- property int selectionStart
346- property string text
347- property enumeration textFormat
348- property enumeration verticalAlignment
349- property enumeration wrapMode
350- signal linkActivated(string link)
351- function copy()
352- function cut()
353- function deselect()
354- function insert(position, text)
355- function positionAt(x, y)
356- function isRightToLeft(start, end)
357- function moveCursorSelection(position, mode)
358- function paste(data)
359- function positionToRectangle(position)
360- function redo()
361- function select(start, end)
362- function selectAll()
363- function selectWord()
364- function getFormattedText(start, end)
365- function getText(start, end)
366- function remove(start, end)
367- function undo()
368-TextField 0.1 1.0
369-ActionItem
370- property bool highlighted
371- property string placeholderText
372- property bool hasClearButton
373- property Component customSoftwareInputPanel
374- property var popover
375- property list<Object> primaryItem
376- property list<Object> secondaryItem
377- property bool errorHighlight
378- property bool acceptableInput
379- property bool activeFocusOnPress
380- property bool autoScroll
381- property bool canPaste
382- property bool canRedo
383- property bool canUndo
384- property color color
385- property real contentHeight
386- property real contentWidth
387- property Component cursorDelegate
388- property int cursorPosition
389- property rectangle cursorRectangle
390- property bool cursorVisible
391- property string displayText
392- property enumeration echoMode
393- property font font
394- property string inputMask
395- property bool inputMethodComposing
396- property enumeration inputMethodHints
397- property int length
398- property int maximumLength
399- property enumeration mouseSelectionMode
400- property bool persistentSelection
401- property bool readOnly
402- property enumeration renderType
403- property bool selectByMouse
404- readonly property string selectedText
405- property int selectionStart
406- property int selectionEnd
407- property string text
408- property Validator validator
409- property enumeration horizontalAlignment
410- property enumeration effectiveHorizontalAlignment
411- property enumeration verticalAlignment
412- property string passwordCharacter
413- property color selectionColor
414- property color selectedTextColor
415- signal accepted()
416- function copy()
417- function cut()
418- function paste(data)
419- function deselect()
420- function insert(position, text)
421- function positionAt(x, position)
422- function positionToRectangle(pos)
423- function select(start, end)
424- function selectAll()
425- function selectWord()
426- function isRightToLeft(start, end)
427- function moveCursorSelection(position, mode)
428- function redo()
429- function undo()
430- function remove(start, end)
431- function getText(start, end)
432-ToolbarButton 0.1 1.0
433-ActionItem
434-ToolbarItems 0.1 1.0
435-Item
436- default property list<Object> contents
437- property Item back
438- property Item pageStack
439- property bool opened
440- property bool locked
441-UbuntuListView 0.1 1.0
442-ListView
443- property int expandedIndex
444-UbuntuListView 1.1
445-UbuntuListView
446- property PullToRefresh pullToRefresh
447-UbuntuNumberAnimation 0.1 1.0
448-NumberAnimation
449-AbstractButton 1.3
450-ActionItem
451- signal clicked()
452- signal pressAndHold()
453- property bool pressed
454- property bool hovered
455- property bool __acceptEvents
456- property internal __mouseArea
457-ActionBar 1.3
458-StyledItem
459- property list<Action> actions
460+ property Type parameterType
461+ property string text
462+ property bool visible
463+Ubuntu.Components.Action.Type: Enum
464+ Bool
465+ Integer
466+ None
467+ Object
468+ Real
469+ String
470+Ubuntu.Components.ActionBar 1.3: StyledItem
471+ readonly property Action actions
472 property int numberOfSlots
473-ActionItem 1.3
474-StyledItem
475- property Action action
476- property string text
477- property url iconSource
478- property string iconName
479- signal triggered(var value)
480- function trigger(value)
481-ActionList 1.3
482-QtObject
483- default property list<Action> children
484- property list<Action> actions
485-ActivityIndicator 1.3
486-AnimatedItem
487- property bool running
488-Button 1.3
489-AbstractButton
490- property color strokeColor
491- property color color
492- property Gradient gradient
493- property font font
494- property string iconPosition
495-Captions 1.3
496-ColumnLayout
497- property int captionStyle
498- property Label title
499- property Label subtitle
500-CheckBox 1.3
501-AbstractButton
502- property bool checked
503-ComboButton 1.3
504-Button
505- property bool expanded
506- property real collapsedHeight
507- property real expandedHeight
508- readonly property real comboListHeight
509- default property list<Item> comboList
510- property color dropdownColor
511-CrossFadeImage 1.3
512-Item
513- property url source
514- property int fillMode
515- property int fadeDuration
516- property size sourceSize
517- property string fadeStyle
518- readonly property bool running
519- readonly property int status
520-Header 1.3
521-AppHeader
522- property string _for_autopilot
523-Label 1.3
524-Text
525- property string fontSize
526-MainView 1.3
527-MainViewBase
528- property internal automaticOrientation
529- default property internal contentsItem
530-OptionSelector 1.3
531-ListItem.Empty
532- property var model
533- property bool expanded
534- property bool multiSelection
535- property bool colourImage
536- property Component delegate
537- property real containerHeight
538- property int selectedIndex
539- property bool currentlyExpanded
540- readonly property real itemHeight
541- signal delegateClicked(int index)
542- signal expansionCompleted()
543-OptionSelectorDelegate 1.3
544-ListItem.Empty
545- property string subText
546- property url icon
547- property bool constrainImage
548- property bool colourImage
549- property color assetColour
550- readonly property ListView listView
551- readonly property string fragColourShader
552-OrientationHelper 1.3
553-Item
554- property bool automaticOrientation
555- property bool transitionEnabled
556- readonly property bool rotating
557- property int __orientationAngle
558- property int orientationAngle
559- property bool anchorToKeyboard
560-Page 1.3
561-PageTreeNode
562- property string title
563- property Flickable flickable
564- readonly property PageHeadConfiguration head
565-PageHeadConfiguration 1.3
566-Object
567- property list<Action> actions
568- property Action backAction
569- property Item contents
570- property string preset
571- readonly property PageHeadSections sections
572- property color foregroundColor
573- property bool locked
574- property bool visible
575-PageHeadSections 1.3
576-QtObject
577+Ubuntu.Components.ActionContext 1.0 0.1: QtObject
578+ default readonly property QtObject actions
579+ property bool active
580+ function addAction(QtObject action)
581+ function removeAction(QtObject action)
582+Ubuntu.Components.ActionItem 1.0 0.1: StyledItem
583+ property Action action
584+ property string iconName
585+ property url iconSource
586+ signal triggered(var value)
587+ function var trigger(var value)
588+ property string text
589+Ubuntu.Components.ActionItem 1.3: StyledItem
590+ property Action action
591+ property string iconName
592+ property url iconSource
593+ signal triggered(var value)
594+ function var trigger(var value)
595+ property string text
596+Ubuntu.Components.ActionList 1.0 0.1: QtObject
597+ readonly property Action actions
598+ default readonly property Action children
599+Ubuntu.Components.ActionList 1.3: QtObject
600+ readonly property Action actions
601+ default readonly property Action children
602+Ubuntu.Components.ActionManager 1.0 0.1: QtObject
603+ default readonly property QtObject actions
604+ readonly property ActionContext globalContext
605+ readonly property QtObject localContexts
606+ signal quit()
607+ function addAction(QtObject action)
608+ function removeAction(QtObject action)
609+ function addLocalContext(QtObject context)
610+ function removeLocalContext(QtObject context)
611+Ubuntu.Components.Popups.ActionSelectionPopover 1.0 0.1: Popover
612+ property var actions
613+ property Component delegate
614+ property Item target
615+Ubuntu.Components.Popups.ActionSelectionPopover 1.3: Popover
616+ property var actions
617+ property Component delegate
618+ property Item target
619+Ubuntu.Components.ActivityIndicator 1.0 0.1: AnimatedItem
620+ property bool onScreen
621+ property bool running
622+Ubuntu.Components.ActivityIndicator 1.3: AnimatedItem
623+ property bool onScreen
624+ property bool running
625+Ubuntu.Components.Alarm 1.0 0.1: QtObject
626+ property QDateTime date
627+ property DaysOfWeek daysOfWeek
628 property bool enabled
629- property var model
630- property int selectedIndex
631-PageHeadState 1.3
632-State
633- property PageHeadConfiguration head
634- property list<Action> actions
635- property Action backAction
636- property Item contents
637-PageStack 1.3
638-PageTreeNode
639- property bool __showHeader
640- property int depth
641- property Item currentPage
642- function push(page, properties)
643- function pop()
644+ readonly property int error
645+ property string message
646+ function save()
647+ function cancel()
648+ function reset()
649+ property url sound
650+ readonly property Status status
651+Ubuntu.Components.Alarm.AlarmType: Enum
652+ OneTime
653+ Repeating
654+Ubuntu.Components.Alarm.DayOfWeek: Enum
655+ AutoDetect
656+ Daily
657+ Friday
658+ Monday
659+ Saturday
660+ Sunday
661+ Thursday
662+ Tuesday
663+ Wednesday
664+Ubuntu.Components.Alarm.DaysOfWeek: Flag
665+ AutoDetect
666+ Daily
667+ Friday
668+ Monday
669+ Saturday
670+ Sunday
671+ Thursday
672+ Tuesday
673+ Wednesday
674+Ubuntu.Components.Alarm.Error: Enum
675+ AdaptationError
676+ EarlyDate
677+ InvalidDate
678+ InvalidEvent
679+ NoDaysOfWeek
680+ NoError
681+ OneTimeOnMoreDays
682+ OperationPending
683+Ubuntu.Components.Alarm.Operation: Enum
684+ Canceling
685+ NoOperation
686+ Reseting
687+ Saving
688+Ubuntu.Components.Alarm.Status: Enum
689+ Fail
690+ InProgress
691+ Ready
692+Ubuntu.Components.AlarmModel 1.0 0.1: QAbstractListModel
693+ readonly property int count
694+ function refresh()
695+ function UCAlarm* get(int index)
696+Ubuntu.Components.Argument 1.0 0.1: QtObject
697+ property string help
698+ function var at(int i)
699+ property string name
700+ property bool required
701+ property QStringList valueNames
702+Ubuntu.Components.Arguments 1.0 0.1: QtObject
703+ default readonly property Argument arguments
704+ property Argument defaultArgument
705+ readonly property bool error
706+ readonly property string errorMessage
707+ function printUsage()
708+ function quitWithError(string errorMessage)
709+ function quitWithError()
710+ readonly property QQmlPropertyMap values
711+Ubuntu.Components.ListItems.Base 1.0 0.1: Empty
712+ default readonly property QtObject children
713+ property string fallbackIconName
714+ property url fallbackIconSource
715+ property var icon
716+ property bool iconFrame
717+ property bool progression
718+Ubuntu.Components.ListItems.Base 1.3: Empty
719+ default readonly property QtObject children
720+ property string fallbackIconName
721+ property url fallbackIconSource
722+ property var icon
723+ property bool iconFrame
724+ property bool progression
725+Ubuntu.Components.Button 1.0 0.1: AbstractButton
726+ property color color
727+ property QFont font
728+ property Gradient gradient
729+ property string iconPosition
730+Ubuntu.Components.Button 1.1: AbstractButton
731+ property color color
732+ property QFont font
733+ property Gradient gradient
734+ property string iconPosition
735+ property color strokeColor
736+Ubuntu.Components.Button 1.3: AbstractButton
737+ property color color
738+ property QFont font
739+ property Gradient gradient
740+ property string iconPosition
741+ property color strokeColor
742+Ubuntu.Components.ListItems.Caption 1.0 0.1: Item
743+ property string text
744+Ubuntu.Components.ListItems.Caption 1.3: Item
745+ property string text
746+Ubuntu.Components.Captions 1.2: ColumnLayout
747+ property int captionStyle
748+ readonly property Label subtitle
749+ readonly property Label title
750+Ubuntu.Components.Captions 1.3: ColumnLayout
751+ property int captionStyle
752+ readonly property Label subtitle
753+ readonly property Label title
754+Ubuntu.Components.CheckBox 1.0 0.1: AbstractButton
755+ property bool checked
756+Ubuntu.Components.CheckBox 1.3: AbstractButton
757+ property bool checked
758+Ubuntu.Components.Clipboard 1.0 0.1: QtObject singleton
759+ readonly property MimeData data
760+ function push(var data)
761 function clear()
762- default property list<Object> data
763-Panel 1.3
764-Item
765- default property list<Object> contents
766- property int align
767- property bool opened
768- function open()
769- function close()
770- property int hideTimeout
771- property bool locked
772- property real hintSize
773- property real triggerSize
774- readonly property real position
775- property bool animate
776- readonly property bool animating
777- property bool __closeOnContentsClicks
778- property bool __openOnHover
779- property bool pressed
780-ProgressBar 1.3
781-AnimatedItem
782- property bool indeterminate
783- property real minimumValue
784- property real maximumValue
785- property real value
786- property bool showProgressPercentage
787-PullToRefresh 1.3
788-StyledItem
789- readonly property bool releaseToRefresh
790- readonly property real offset
791- property Component content
792- property Flickable target
793- property bool refreshing
794- signal refresh()
795-Scrollbar 1.3
796-Toolkit.StyledItem
797- property Flickable flickableItem
798- property int align
799- property bool __interactive
800- property internal __private
801-Slider 1.3
802-Toolkit.StyledItem
803- property real minimumValue
804- property real maximumValue
805- property real value
806- property bool live
807- property bool pressed
808- signal touched(bool onThumb)
809- function formatValue(v)
810- property internal __internals
811-Switch 1.3
812-CheckBox
813-Tab 1.3
814-PageTreeNode
815- property string title
816- property url iconSource
817- property Item page
818- readonly property int index
819- property internal __protected
820-TabBar 1.3
821-Toolkit.StyledItem
822- property Item tabsItem
823- property var model
824- readonly property bool pressed
825- property bool selectionMode
826- property int selectedIndex
827- property bool alwaysSelectionMode
828- property bool animate
829-Tabs 1.3
830-PageTreeNode
831- property int selectedTabIndex
832- readonly property Tab selectedTab
833- readonly property Item currentPage
834- property TabBar tabBar
835- default property list<Item> tabChildren
836- readonly property int count
837- signal modelChanged()
838- property var __model
839-TextArea 1.3
840-Ubuntu.StyledItem
841- property bool highlighted
842- property string placeholderText
843- readonly property string displayText
844- property bool selectByMouse
845- property bool autoExpand
846- property bool autoSize
847- property int maximumLineCount
848- property real contentWidth
849- property real contentHeight
850- property var popover
851- property bool activeFocusOnPress
852- property url baseUrl
853- property bool canPaste
854- property bool canRedo
855- property bool canUndo
856- property color color
857- property Component cursorDelegate
858- property int cursorPosition
859- property rectangle cursorRectangle
860- property bool cursorVisible
861- property enumeration effectiveHorizontalAlignment
862- property font font
863- property enumeration horizontalAlignment
864- property bool inputMethodComposing
865- property enumeration inputMethodHints
866- property int length
867- property int lineCount
868- property enumeration mouseSelectionMode
869- property enumeration persistentSelection
870- property bool readOnly
871- property enumeration renderType
872- property string selectedText
873- property color selectedTextColor
874- property color selectionColor
875- property int selectionEnd
876- property int selectionStart
877- property string text
878- property enumeration textFormat
879- property enumeration verticalAlignment
880- property enumeration wrapMode
881- signal linkActivated(string link)
882- function copy()
883- function cut()
884- function deselect()
885- function insert(position, text)
886- function positionAt(x, y)
887- function isRightToLeft(start, end)
888- function moveCursorSelection(position, mode)
889- function paste(data)
890- function positionToRectangle(position)
891- function redo()
892- function select(start, end)
893- function selectAll()
894- function selectWord()
895- function getFormattedText(start, end)
896- function getText(start, end)
897- function remove(start, end)
898- function undo()
899-TextField 1.3
900-ActionItem
901- property bool highlighted
902- property string placeholderText
903- property bool hasClearButton
904- property Component customSoftwareInputPanel
905- property var popover
906- property list<Object> primaryItem
907- property list<Object> secondaryItem
908- property bool errorHighlight
909- property bool acceptableInput
910- property bool activeFocusOnPress
911- property bool autoScroll
912- property bool canPaste
913- property bool canRedo
914- property bool canUndo
915- property color color
916- property real contentHeight
917- property real contentWidth
918- property Component cursorDelegate
919- property int cursorPosition
920- property rectangle cursorRectangle
921- property bool cursorVisible
922- property string displayText
923- property enumeration echoMode
924- property font font
925- property string inputMask
926- property bool inputMethodComposing
927- property enumeration inputMethodHints
928- property int length
929- property int maximumLength
930- property enumeration mouseSelectionMode
931- property bool persistentSelection
932- property bool readOnly
933- property enumeration renderType
934- property bool selectByMouse
935- readonly property string selectedText
936- property int selectionStart
937- property int selectionEnd
938- property string text
939- property Validator validator
940- property enumeration horizontalAlignment
941- property enumeration effectiveHorizontalAlignment
942- property enumeration verticalAlignment
943- property string passwordCharacter
944- property color selectionColor
945- property color selectedTextColor
946- signal accepted()
947- function copy()
948- function cut()
949- function paste(data)
950- function deselect()
951- function insert(position, text)
952- function positionAt(x, position)
953- function positionToRectangle(pos)
954- function select(start, end)
955- function selectAll()
956- function selectWord()
957- function isRightToLeft(start, end)
958- function moveCursorSelection(position, mode)
959- function redo()
960- function undo()
961- function remove(start, end)
962- function getText(start, end)
963-ToolbarButton 1.3
964-ActionItem
965-ToolbarItems 1.3
966-Item
967- default property list<Object> contents
968- property Item back
969- property Item pageStack
970- property bool opened
971- property bool locked
972-UbuntuListView 1.3
973-UbuntuListView
974- property PullToRefresh pullToRefresh
975-UbuntuNumberAnimation 1.3
976-NumberAnimation
977-Base 0.1 1.0
978-Empty
979- property variant icon
980- property url fallbackIconSource
981- property string fallbackIconName
982- property bool progression
983- property bool iconFrame
984- property real __iconWidth
985- property real __iconHeight
986- property real __leftIconMargin
987- property real __rightIconMargin
988- property bool __iconIsItem
989- default property internal children
990-Caption 0.1 1.0
991-Item
992- property string text
993-Divider 0.1 1.0
994-Image
995-Empty 0.1 1.0
996-AbstractButton
997- property bool selected
998- property bool highlightWhenPressed
999- property bool removable
1000- property bool confirmRemoval
1001- readonly property string swipingState
1002- readonly property bool waitingConfirmationForRemoval
1003- signal itemRemoved
1004- property int __height
1005- property bool showDivider
1006- default property internal children
1007- property internal __contents
1008- property list<Item> backgroundIndicator
1009- property ThinDivider divider
1010- property real __contentsMargins
1011- function cancelItemRemoval()
1012-Expandable 0.1 1.0
1013-Empty
1014- property bool expanded
1015- property real collapsedHeight
1016- property real expandedHeight
1017- property bool collapseOnClick
1018- default property QtObject children
1019-ExpandablesColumn 0.1 1.0
1020-Flickable
1021- readonly property Item expandedItem
1022- function expandItem(item)
1023- function collapse()
1024- default property QtObject children
1025-Header 0.1 1.0
1026-Item
1027- property string text
1028- property internal __foregroundColor
1029-ItemSelector 0.1 1.0
1030-ListItem.Empty
1031- property var model
1032- property bool expanded
1033- property bool multiSelection
1034- property bool colourImage
1035- property Component delegate
1036- property real containerHeight
1037- property int selectedIndex
1038- property bool currentlyExpanded
1039- readonly property real itemHeight
1040- signal delegateClicked(int index)
1041- signal expansionCompleted()
1042-MultiValue 0.1 1.0
1043-Base
1044- property variant values
1045-SingleControl 0.1 1.0
1046-Empty
1047- property Item control
1048- function __updateControl()
1049-SingleValue 0.1 1.0
1050-Base
1051- property string value
1052-Standard 0.1 1.0
1053-Empty
1054- property variant icon
1055- property url fallbackIconSource
1056- property string fallbackIconName
1057- property bool progression
1058- property real __iconWidth
1059- property real __iconHeight
1060- property real __leftIconMargin
1061- property real __rightIconMargin
1062- property Item control
1063- property bool iconFrame
1064- property bool __controlAreaPressed
1065- property bool __iconIsItem
1066- property internal __foregroundColor
1067-Subtitled 0.1 1.0
1068-Base
1069- property string subText
1070-ThinDivider 0.1 1.0
1071-Rectangle
1072- property bool __lightBackground
1073-ValueSelector 0.1 1.0
1074-Empty
1075- property variant icon
1076- property url fallbackIconSource
1077- property string fallbackIconName
1078- property real __iconWidth
1079- property real __iconHeight
1080- property real __leftIconMargin
1081- property real __rightIconMargin
1082- property bool iconFrame
1083- property variant values
1084- property int selectedIndex
1085- property bool expanded
1086-Base 1.3
1087-Empty
1088- property variant icon
1089- property url fallbackIconSource
1090- property string fallbackIconName
1091- property bool progression
1092- property bool iconFrame
1093- property real __iconWidth
1094- property real __iconHeight
1095- property real __leftIconMargin
1096- property real __rightIconMargin
1097- property bool __iconIsItem
1098- default property internal children
1099-Caption 1.3
1100-Item
1101- property string text
1102-Divider 1.3
1103-Image
1104-Empty 1.3
1105-AbstractButton
1106- property bool selected
1107- property bool highlightWhenPressed
1108- property bool removable
1109- property bool confirmRemoval
1110- readonly property string swipingState
1111- readonly property bool waitingConfirmationForRemoval
1112- signal itemRemoved
1113- property int __height
1114- property bool showDivider
1115- default property internal children
1116- property internal __contents
1117- property list<Item> backgroundIndicator
1118- property ThinDivider divider
1119- property real __contentsMargins
1120- function cancelItemRemoval()
1121-Expandable 1.3
1122-Empty
1123- property bool expanded
1124- property real collapsedHeight
1125- property real expandedHeight
1126- property bool collapseOnClick
1127- default property QtObject children
1128-ExpandablesColumn 1.3
1129-Flickable
1130- readonly property Item expandedItem
1131- function expandItem(item)
1132- function collapse()
1133- default property QtObject children
1134-Header 1.3
1135-Item
1136- property string text
1137- property internal __foregroundColor
1138-ItemSelector 1.3
1139-ListItem.Empty
1140- property var model
1141- property bool expanded
1142- property bool multiSelection
1143- property bool colourImage
1144- property Component delegate
1145- property real containerHeight
1146- property int selectedIndex
1147- property bool currentlyExpanded
1148- readonly property real itemHeight
1149- signal delegateClicked(int index)
1150- signal expansionCompleted()
1151-MultiValue 1.3
1152-Base
1153- property variant values
1154-SingleControl 1.3
1155-Empty
1156- property Item control
1157- function __updateControl()
1158-SingleValue 1.3
1159-Base
1160- property string value
1161-Standard 1.3
1162-Empty
1163- property variant icon
1164- property url fallbackIconSource
1165- property string fallbackIconName
1166- property bool progression
1167- property real __iconWidth
1168- property real __iconHeight
1169- property real __leftIconMargin
1170- property real __rightIconMargin
1171- property Item control
1172- property bool iconFrame
1173- property bool __controlAreaPressed
1174- property bool __iconIsItem
1175- property internal __foregroundColor
1176-Subtitled 1.3
1177-Base
1178- property string subText
1179-ThinDivider 1.3
1180-Rectangle
1181- property bool __lightBackground
1182-ValueSelector 1.3
1183-Empty
1184- property variant icon
1185- property url fallbackIconSource
1186- property string fallbackIconName
1187- property real __iconWidth
1188- property real __iconHeight
1189- property real __leftIconMargin
1190- property real __rightIconMargin
1191- property bool iconFrame
1192- property variant values
1193- property int selectedIndex
1194- property bool expanded
1195-DatePicker 0.1 1.0
1196-StyledItem
1197- property string mode
1198- property date date
1199- property date minimum
1200- property date maximum
1201- readonly property int year
1202- readonly property int month
1203- readonly property int day
1204- readonly property int week
1205- readonly property int hours
1206- readonly property int minutes
1207- readonly property int seconds
1208- property var locale
1209- readonly property bool moving
1210-Dialer 0.1 1.0
1211-StyledItem
1212- property real minimumValue
1213- property real maximumValue
1214- property real size
1215- property real handSpace
1216- readonly property Item centerItem
1217- property list<var> centerContent
1218- readonly property list<DialerHands> hands
1219- signal handUpdated(var hand)
1220-DialerHand 0.1 1.0
1221-StyledItem
1222- property real value
1223- property DialerHandGroup hand
1224- readonly property Dialer dialer
1225- default property list<QtObject> overlay
1226- readonly property int index
1227- property internal __grabber
1228-Picker 0.1 1.0
1229-StyledItem
1230- property bool circular
1231- property var model
1232- property Component delegate
1233- property int selectedIndex
1234- property bool live
1235- readonly property bool moving
1236- function positionViewAtIndex(index)
1237- property int __clickedIndex
1238-PickerDelegate 0.1 1.0
1239-AbstractButton
1240- readonly property Picker picker
1241-PickerPanel 0.1 1.0
1242-Object
1243- function openDatePicker(caller, property, mode)
1244-DatePicker 1.3
1245-StyledItem
1246- property string mode
1247- property date date
1248- property date minimum
1249- property date maximum
1250- readonly property int year
1251- readonly property int month
1252- readonly property int day
1253- readonly property int week
1254- readonly property int hours
1255- readonly property int minutes
1256- readonly property int seconds
1257- property var locale
1258- readonly property bool moving
1259-Dialer 1.3
1260-StyledItem
1261- property real minimumValue
1262- property real maximumValue
1263- property real size
1264- property real handSpace
1265- readonly property Item centerItem
1266- property list<var> centerContent
1267- readonly property list<DialerHands> hands
1268- signal handUpdated(var hand)
1269-DialerHand 1.3
1270-StyledItem
1271- property real value
1272- property DialerHandGroup hand
1273- readonly property Dialer dialer
1274- default property list<QtObject> overlay
1275- readonly property int index
1276- property internal __grabber
1277-Picker 1.3
1278-StyledItem
1279- property bool circular
1280- property var model
1281- property Component delegate
1282- property int selectedIndex
1283- property bool live
1284- readonly property bool moving
1285- function positionViewAtIndex(index)
1286- property int __clickedIndex
1287-PickerDelegate 1.3
1288-AbstractButton
1289- readonly property Picker picker
1290-PickerPanel 1.3
1291-Object
1292- function openDatePicker(caller, property, mode)
1293-ActionSelectionPopover 0.1 1.0
1294-Popover
1295- property Item target
1296- property var actions
1297- property Component delegate
1298-ComposerSheet 0.1 1.0
1299-SheetBase
1300- signal cancelClicked
1301- signal confirmClicked
1302-DefaultSheet 0.1 1.0
1303-SheetBase
1304- property bool doneButton
1305- signal closeClicked
1306- signal doneClicked
1307-Dialog 0.1 1.0
1308-PopupBase
1309- default property list<Object> contents
1310- property string title
1311- property string text
1312- property Item caller
1313- property Item pointerTarget
1314- property real edgeMargins
1315- property real callerMargin
1316- property bool modal
1317-Popover 0.1 1.0
1318-PopupBase
1319- default property list<Object> container
1320- property real contentWidth
1321- property real contentHeight
1322- property Item caller
1323- property Item pointerTarget
1324- property real edgeMargins
1325- property real callerMargin
1326- property bool autoClose
1327- property Component foregroundStyle
1328- function show()
1329- function hide()
1330- function __makeInvisible()
1331-PopupBase 0.1 1.0
1332-OrientationHelper
1333- property Item dismissArea
1334- property bool grabDismissAreaEvents
1335- property PropertyAnimation fadingAnimation
1336- function show()
1337- function hide()
1338- function __closeIfHidden()
1339- function __closePopup()
1340- property Item __foreground
1341- property bool __closeOnDismissAreaPress
1342- property internal __dimBackground
1343- property internal __eventGrabber
1344-SheetBase 0.1 1.0
1345-PopupBase
1346- default property list<Object> container
1347- property real contentsWidth
1348- property real contentsHeight
1349- property string title
1350- property bool modal
1351- property internal __leftButton
1352- property internal __rightButton
1353-ActionSelectionPopover 1.3
1354-Popover
1355- property Item target
1356- property var actions
1357- property Component delegate
1358-ComposerSheet 1.3
1359-SheetBase
1360- signal cancelClicked
1361- signal confirmClicked
1362-DefaultSheet 1.3
1363-SheetBase
1364- property bool doneButton
1365- signal closeClicked
1366- signal doneClicked
1367-Dialog 1.3
1368-PopupBase
1369- default property list<Object> contents
1370- property string title
1371- property string text
1372- property Item caller
1373- property Item pointerTarget
1374- property real edgeMargins
1375- property real callerMargin
1376- property bool modal
1377-Popover 1.3
1378-PopupBase
1379- default property list<Object> container
1380- property real contentWidth
1381- property real contentHeight
1382- property Item caller
1383- property Item pointerTarget
1384- property real edgeMargins
1385- property real callerMargin
1386- property bool autoClose
1387- property Component foregroundStyle
1388- function show()
1389- function hide()
1390- function __makeInvisible()
1391-PopupBase 1.3
1392-OrientationHelper
1393- property Item dismissArea
1394- property bool grabDismissAreaEvents
1395- property PropertyAnimation fadingAnimation
1396- function show()
1397- function hide()
1398- function __closeIfHidden()
1399- function __closePopup()
1400- property Item __foreground
1401- property bool __closeOnDismissAreaPress
1402- property internal __dimBackground
1403- property internal __eventGrabber
1404-SheetBase 1.3
1405-PopupBase
1406- default property list<Object> container
1407- property real contentsWidth
1408- property real contentsHeight
1409- property string title
1410- property bool modal
1411- property internal __leftButton
1412- property internal __rightButton
1413-ComboButtonStyle 1.1
1414-Item
1415- property real dropDownWidth
1416- property real dropDownSeparatorWidth
1417- property real comboListMargin
1418+ function QQuickMimeData* newData()
1419+Ubuntu.Components.ColorUtils 0.1 1.0
1420+Ubuntu.Components.ComboButton 1.1: Button
1421+ property double collapsedHeight
1422+ default readonly property QtObject comboList
1423+ readonly property double comboListHeight
1424+ property color dropdownColor
1425+ property bool expanded
1426+ property double expandedHeight
1427+Ubuntu.Components.ComboButton 1.3: Button
1428+ property double collapsedHeight
1429+ default readonly property QtObject comboList
1430+ readonly property double comboListHeight
1431+ property color dropdownColor
1432+ property bool expanded
1433+ property double expandedHeight
1434+Ubuntu.Components.Styles.ComboButtonStyle 1.1: Item
1435 property Item comboListHolder
1436+ property double comboListMargin
1437 property Item comboListPanel
1438 property color defaultColor
1439+ property color defaultDropdownColor
1440+ property QFont defaultFont
1441 property Gradient defaultGradient
1442- property color defaultDropdownColor
1443- property font defaultFont
1444-PageHeadStyle 1.1
1445-Item
1446- property real contentHeight
1447+ property double dropDownSeparatorWidth
1448+ property double dropDownWidth
1449+Ubuntu.Components.Popups.ComposerSheet 1.0 0.1: SheetBase
1450+ signal cancelClicked()
1451+ signal confirmClicked()
1452+Ubuntu.Components.Popups.ComposerSheet 1.3: SheetBase
1453+ signal cancelClicked()
1454+ signal confirmClicked()
1455+Ubuntu.Layouts.ConditionalLayout 1.0 0.1: QtObject
1456+ default property Component layout
1457+ property string name
1458+ property QQmlBinding when
1459+Ubuntu.PerformanceMetrics.CpuUsage 1.0 0.1: Item
1460+ readonly property UPMGraphModel graphModel
1461+ property int period
1462+ property int samplingInterval
1463+Ubuntu.Components.CrossFadeImage 1.0 0.1: Item
1464+ property int fadeDuration
1465+ property int fillMode
1466+ readonly property bool running
1467+ property url source
1468+ property QSizeF sourceSize
1469+ readonly property int status
1470+Ubuntu.Components.CrossFadeImage 1.1: Item
1471+ property int fadeDuration
1472+ property string fadeStyle
1473+ property int fillMode
1474+ readonly property bool running
1475+ property url source
1476+ property QSizeF sourceSize
1477+ readonly property int status
1478+Ubuntu.Components.CrossFadeImage 1.3: Item
1479+ property int fadeDuration
1480+ property string fadeStyle
1481+ property int fillMode
1482+ readonly property bool running
1483+ property url source
1484+ property QSizeF sourceSize
1485+ readonly property int status
1486+Ubuntu.Components.DateUtils 0.1 1.0
1487+Ubuntu.Components.Popups.DefaultSheet 1.0 0.1: SheetBase
1488+ property bool doneButton
1489+ signal closeClicked()
1490+ signal doneClicked()
1491+Ubuntu.Components.Popups.DefaultSheet 1.3: SheetBase
1492+ property bool doneButton
1493+ signal closeClicked()
1494+ signal doneClicked()
1495+Ubuntu.Components.Popups.Dialog 1.0 0.1: PopupBase
1496+ property Item caller
1497+ property double callerMargin
1498+ default readonly property QtObject contents
1499+ property double edgeMargins
1500+ property bool modal
1501+ property Item pointerTarget
1502+ property string text
1503+ property string title
1504+Ubuntu.Components.Popups.Dialog 1.3: PopupBase
1505+ property Item caller
1506+ property double callerMargin
1507+ default readonly property QtObject contents
1508+ property double edgeMargins
1509+ property bool modal
1510+ property Item pointerTarget
1511+ property string text
1512+ property string title
1513+Ubuntu.Components.ListItems.Divider 1.0 0.1: QQuickImageBase
1514+ property FillMode fillMode
1515+ property HAlignment horizontalAlignment
1516+ property bool mipmap
1517+ readonly property double paintedHeight
1518+ readonly property double paintedWidth
1519+ property VAlignment verticalAlignment
1520+Ubuntu.Components.ListItems.Divider 1.3: QQuickImageBase
1521+ property FillMode fillMode
1522+ property HAlignment horizontalAlignment
1523+ property bool mipmap
1524+ readonly property double paintedHeight
1525+ readonly property double paintedWidth
1526+ property VAlignment verticalAlignment
1527+Ubuntu.Components.ListItems.Empty 1.0 0.1: AbstractButton
1528+ readonly property Item backgroundIndicator
1529+ default readonly property QtObject children
1530+ property bool confirmRemoval
1531+ readonly property ThinDivider divider
1532+ property bool highlightWhenPressed
1533+ signal itemRemoved()
1534+ function var cancelItemRemoval()
1535+ property bool removable
1536+ property bool selected
1537+ property bool showDivider
1538+ readonly property string swipingState
1539+ readonly property bool waitingConfirmationForRemoval
1540+Ubuntu.Components.ListItems.Empty 1.3: AbstractButton
1541+ readonly property Item backgroundIndicator
1542+ default readonly property QtObject children
1543+ property bool confirmRemoval
1544+ readonly property ThinDivider divider
1545+ property bool highlightWhenPressed
1546+ signal itemRemoved()
1547+ function var cancelItemRemoval()
1548+ property bool removable
1549+ property bool selected
1550+ property bool showDivider
1551+ readonly property string swipingState
1552+ readonly property bool waitingConfirmationForRemoval
1553+Ubuntu.Components.ListItems.Expandable 1.0 0.1: Empty
1554+ default readonly property QtObject children
1555+ property bool collapseOnClick
1556+ property double collapsedHeight
1557+ property bool expanded
1558+ property double expandedHeight
1559+Ubuntu.Components.ListItems.Expandable 1.3: Empty
1560+ default readonly property QtObject children
1561+ property bool collapseOnClick
1562+ property double collapsedHeight
1563+ property bool expanded
1564+ property double expandedHeight
1565+Ubuntu.Components.ListItems.ExpandablesColumn 1.0 0.1: Flickable
1566+ default readonly property QtObject children
1567+ readonly property var expandedItem
1568+ function var expandItem(var item)
1569+ function var collapse()
1570+Ubuntu.Components.ListItems.ExpandablesColumn 1.3: Flickable
1571+ default readonly property QtObject children
1572+ readonly property var expandedItem
1573+ function var expandItem(var item)
1574+ function var collapse()
1575+Ubuntu.Components.FilterBehavior 1.1: QtObject
1576+ property QRegExp pattern
1577+ property string property
1578+Ubuntu.Components.Haptics 1.0 0.1: Object singleton
1579+ readonly property HapticsEffect effect
1580+ readonly property bool enabled
1581+ function var play(var customEffect)
1582+Ubuntu.Components.ListItems.Header 1.0 0.1: Item
1583+ property string text
1584+Ubuntu.Components.Header 1.0 0.1: AppHeader
1585+ property string _for_autopilot
1586+ property var actions
1587+ property bool animate
1588+ property PageHeadConfiguration config
1589+ property Item contents
1590+ property color dividerColor
1591+ property Flickable flickable
1592+ function var show()
1593+ function var hide()
1594+ readonly property bool moving
1595+ property var pageStack
1596+ property color panelColor
1597+ property var tabsModel
1598+ property string title
1599+ property bool useDeprecatedToolbar
1600+Ubuntu.Components.ListItems.Header 1.3: Item
1601+ property string text
1602+Ubuntu.Components.Header 1.3: AppHeader
1603+ property string _for_autopilot
1604+ property var actions
1605+ property bool animate
1606+ property QtObject config
1607+ property Item contents
1608+ property color dividerColor
1609+ property Flickable flickable
1610+ function var show()
1611+ function var hide()
1612+ readonly property bool moving
1613+ property var pageStack
1614+ property color panelColor
1615+ property var tabsModel
1616+ property string title
1617+ property bool useDeprecatedToolbar
1618+Ubuntu.Components.Icon 1.0 0.1: Item
1619+ property color color
1620+ property color keyColor
1621+ property string name
1622+Ubuntu.Components.Icon 1.1: Icon
1623+ property url source
1624+Ubuntu.Components.InverseMouse 1.0 0.1: Mouse
1625+Ubuntu.Components.InverseMouseArea 1.0 0.1: MouseArea
1626+ function bool contains(QPointF point)
1627+ property Item sensingArea
1628+ property bool topmostItem
1629+Ubuntu.Layouts.ItemLayout 1.0 0.1: Item
1630+ property string item
1631+Ubuntu.Components.ListItems.ItemSelector 1.0 0.1: Empty
1632+ property bool colourImage
1633+ property double containerHeight
1634+ property bool currentlyExpanded
1635+ property Component delegate
1636+ property bool expanded
1637+ readonly property double itemHeight
1638+ signal delegateClicked(int index)
1639+ signal expansionCompleted()
1640+ property var model
1641+ property bool multiSelection
1642+ property int selectedIndex
1643+Ubuntu.Components.ListItems.ItemSelector 1.3: Empty
1644+ property bool colourImage
1645+ property double containerHeight
1646+ property bool currentlyExpanded
1647+ property Component delegate
1648+ property bool expanded
1649+ readonly property double itemHeight
1650+ signal delegateClicked(int index)
1651+ signal expansionCompleted()
1652+ property var model
1653+ property bool multiSelection
1654+ property int selectedIndex
1655+Ubuntu.Components.Label 1.0 0.1: Text
1656+ property string fontSize
1657+Ubuntu.Components.Label 1.3: Text
1658+ property string fontSize
1659+Ubuntu.Layouts.Layouts 1.0 0.1: Item
1660+ readonly property Item children
1661+ readonly property string currentLayout
1662+ default readonly property QtObject data
1663+ readonly property ConditionalLayout layouts
1664+Ubuntu.Components.ListItem 1.2: StyledItem
1665+ property Action action
1666+ property color color
1667+ readonly property Item contentItem
1668+ readonly property bool contentMoving
1669+ readonly property UCListItemDivider divider
1670+ property bool dragMode
1671+ readonly property bool dragging
1672+ property color highlightColor
1673+ readonly property bool highlighted
1674+ property ListItemActions leadingActions
1675+ readonly property Item listItemChildren
1676+ default readonly property QtObject listItemData
1677+ signal clicked()
1678+ signal pressAndHold()
1679+ signal contentMovementStarted()
1680+ signal contentMovementEnded()
1681+ property bool selectMode
1682+ property bool selected
1683+ property ListItemActions trailingActions
1684+Ubuntu.Components.ListItemActions 1.2: QtObject
1685+ readonly property Action actions
1686+ default readonly property QtObject data
1687+ property Component delegate
1688+Ubuntu.Components.ListItemDrag 1.2: QtObject
1689+ property bool accept
1690+ readonly property int from
1691+ property int maximumIndex
1692+ property int minimumIndex
1693+ readonly property Status status
1694+ readonly property int to
1695+Ubuntu.Components.ListItemDrag.Status: Enum
1696+ Dropped
1697+ Moving
1698+ Started
1699+Ubuntu.Components.Styles.ListItemStyle 1.3 1.2: Item
1700+ readonly property bool animatePanels
1701+ property Item dragPanel
1702+ property PropertyAnimation dropAnimation
1703+ readonly property int listItemIndex
1704+ function swipeEvent(SwipeEvent event)
1705+ function rebound()
1706+ property Animation snapAnimation
1707+Ubuntu.Components.MainView 1.0 0.1: MainViewBase
1708+ property bool automaticOrientation
1709+ default readonly property QtObject contentsItem
1710+ property bool useDeprecatedToolbar
1711+Ubuntu.Components.MainView 1.2: MainViewBase
1712+ property bool automaticOrientation
1713+ default readonly property QtObject contentsItem
1714+Ubuntu.Components.MainView 1.3: MainViewBase
1715+ property bool automaticOrientation
1716+ default readonly property QtObject contentsItem
1717+Ubuntu.Components.MathUtils 0.1 1.0
1718+Ubuntu.Components.MimeData 1.0 0.1: QtObject
1719+ property color color
1720+ property var data
1721+ readonly property QStringList formats
1722+ property string html
1723+ property string text
1724+ property QList<QUrl> urls
1725+Ubuntu.Components.Mouse 1.0 0.1: QtObject
1726+ readonly property Qt.MouseButtons acceptedButtons
1727+ property int clickAndHoldThreshold
1728+ property bool enabled
1729+ readonly property Item forwardTo
1730+ readonly property bool hoverEnabled
1731+ signal pressed(QQuickMouseEvent mouse, Item host)
1732+ signal released(QQuickMouseEvent mouse, Item host)
1733+ signal clicked(QQuickMouseEvent mouse, Item host)
1734+ signal pressAndHold(QQuickMouseEvent mouse, Item host)
1735+ signal doubleClicked(QQuickMouseEvent mouse, Item host)
1736+ signal entered(QQuickMouseEvent event, Item host)
1737+ signal exited(QQuickMouseEvent event, Item host)
1738+ property Priority priority
1739+Ubuntu.Components.Mouse.Priority: Enum
1740+ AfterItem
1741+ BeforeItem
1742+Ubuntu.Components.ListItems.MultiValue 1.0 0.1: Base
1743+ property var values
1744+Ubuntu.Components.ListItems.MultiValue 1.3: Base
1745+ property var values
1746+Ubuntu.Components.Object 1.0 0.1: QtObject
1747+ default readonly property QtObject children
1748+Ubuntu.Components.OptionSelector 1.0 0.1: Empty
1749+ property bool colourImage
1750+ property double containerHeight
1751+ property bool currentlyExpanded
1752+ property Component delegate
1753+ property bool expanded
1754+ readonly property double itemHeight
1755+ signal delegateClicked(int index)
1756+ signal expansionCompleted()
1757+ property var model
1758+ property bool multiSelection
1759+ property int selectedIndex
1760+Ubuntu.Components.OptionSelector 1.3: Empty
1761+ property bool colourImage
1762+ property double containerHeight
1763+ property bool currentlyExpanded
1764+ property Component delegate
1765+ property bool expanded
1766+ readonly property double itemHeight
1767+ signal delegateClicked(int index)
1768+ signal expansionCompleted()
1769+ property var model
1770+ property bool multiSelection
1771+ property int selectedIndex
1772+Ubuntu.Components.OptionSelectorDelegate 1.0 0.1: Empty
1773+ property color assetColour
1774+ property bool colourImage
1775+ property bool constrainImage
1776+ readonly property string fragColourShader
1777+ property url icon
1778+ readonly property ListView listView
1779+ property string subText
1780+Ubuntu.Components.OptionSelectorDelegate 1.3: Empty
1781+ property color assetColour
1782+ property bool colourImage
1783+ property bool constrainImage
1784+ readonly property string fragColourShader
1785+ property url icon
1786+ readonly property ListView listView
1787+ property string subText
1788+Ubuntu.Components.OrientationHelper 1.0 0.1: Item
1789+ property bool anchorToKeyboard
1790+ property bool automaticOrientation
1791+ property int orientationAngle
1792+ readonly property bool rotating
1793+ property bool transitionEnabled
1794+Ubuntu.Components.OrientationHelper 1.3: Item
1795+ property bool anchorToKeyboard
1796+ property bool automaticOrientation
1797+ property int orientationAngle
1798+ readonly property bool rotating
1799+ property bool transitionEnabled
1800+Ubuntu.Components.Page 1.0 0.1: PageTreeNode
1801+ readonly property QtObject actions
1802+ property Flickable flickable
1803+ property string title
1804+ property Item tools
1805+Ubuntu.Components.Page 1.1: Page
1806+ readonly property PageHeadConfiguration head
1807+Ubuntu.Components.Page 1.3: PageTreeNode
1808+ property Flickable flickable
1809+ readonly property PageHeadConfiguration head
1810+ property string title
1811+Ubuntu.Components.PageHeadConfiguration 1.1: Object
1812+ readonly property Action actions
1813+ property Action backAction
1814+ property Item contents
1815+ property color foregroundColor
1816+ property string preset
1817+ readonly property PageHeadSections sections
1818+Ubuntu.Components.PageHeadConfiguration 1.3: Object
1819+ readonly property Action actions
1820+ property Action backAction
1821+ property Item contents
1822+ property color foregroundColor
1823+ property bool locked
1824+ property string preset
1825+ readonly property PageHeadSections sections
1826+ property bool visible
1827+Ubuntu.Components.PageHeadSections 1.1: QtObject
1828+ property bool enabled
1829+ property var model
1830+ property int selectedIndex
1831+Ubuntu.Components.PageHeadSections 1.3: QtObject
1832+ property bool enabled
1833+ property var model
1834+ property int selectedIndex
1835+Ubuntu.Components.PageHeadState 1.1: State
1836+ readonly property Action actions
1837+ property Action backAction
1838+ property Item contents
1839+ property PageHeadConfiguration head
1840+Ubuntu.Components.PageHeadState 1.3: State
1841+ readonly property Action actions
1842+ property Action backAction
1843+ property Item contents
1844+ property PageHeadConfiguration head
1845+Ubuntu.Components.Styles.PageHeadStyle 1.1: Item
1846+ property double contentHeight
1847+ property string fontSize
1848+ property int fontWeight
1849+ property int maximumNumberOfActions
1850+ property url separatorBottomSource
1851 property url separatorSource
1852- property url separatorBottomSource
1853- property string fontSize
1854- property int fontWeight
1855 property color textColor
1856- property real textLeftMargin
1857- property int maximumNumberOfActions
1858-PullToRefreshStyle 1.1
1859-Item
1860+ property double textLeftMargin
1861+Ubuntu.Components.PageStack 1.0 0.1: PageTreeNode
1862+ property Item currentPage
1863+ default readonly property QtObject data
1864+ property int depth
1865+ function var push(var page, var properties)
1866+ function var pop()
1867+ function var clear()
1868+Ubuntu.Components.PageStack 1.3: PageTreeNode
1869+ property Item currentPage
1870+ default readonly property QtObject data
1871+ property int depth
1872+ function var push(var page, var properties)
1873+ function var pop()
1874+ function var clear()
1875+Palette: QtObject
1876+ property PaletteValues normal
1877+ property PaletteValues selected
1878+Ubuntu.Components.Themes.Palette 0.1: QtObject
1879+ property PaletteValues normal
1880+ property PaletteValues selected
1881+Ubuntu.Components.Themes.Palette 1.3: QtObject
1882+ property PaletteValues normal
1883+ property PaletteValues selected
1884+Ubuntu.Components.Themes.PaletteValues 0.1: QtObject
1885+ property color background
1886+ property color backgroundText
1887+ property color base
1888+ property color baseText
1889+ property color field
1890+ property color fieldText
1891+ property color foreground
1892+ property color foregroundText
1893+ property color overlay
1894+ property color overlayText
1895+ property color selection
1896+Ubuntu.Components.Themes.PaletteValues 1.3: QtObject
1897+ property color background
1898+ property color backgroundText
1899+ property color base
1900+ property color baseText
1901+ property color field
1902+ property color fieldText
1903+ property color foreground
1904+ property color foregroundText
1905+ property color overlay
1906+ property color overlayText
1907+ property color selection
1908+Ubuntu.Components.Panel 1.0 0.1: Item
1909+ property int align
1910+ property bool animate
1911+ readonly property bool animating
1912+ default readonly property QtObject contents
1913+ property int hideTimeout
1914+ property double hintSize
1915+ property bool locked
1916+ function var open()
1917+ function var close()
1918+ property bool opened
1919+ readonly property double position
1920+ readonly property bool pressed
1921+ property double triggerSize
1922+Ubuntu.Components.Panel 1.3: Item
1923+ property int align
1924+ property bool animate
1925+ readonly property bool animating
1926+ default readonly property QtObject contents
1927+ property int hideTimeout
1928+ property double hintSize
1929+ property bool locked
1930+ function var open()
1931+ function var close()
1932+ property bool opened
1933+ readonly property double position
1934+ readonly property bool pressed
1935+ property double triggerSize
1936+Ubuntu.PerformanceMetrics.PerformanceOverlay 1.0 0.1: Item
1937+ property bool active
1938+Ubuntu.Components.Popups.Popover 1.0 0.1: PopupBase
1939+ property bool autoClose
1940+ property Item caller
1941+ property double callerMargin
1942+ default readonly property QtObject container
1943+ property double contentHeight
1944+ property double contentWidth
1945+ property double edgeMargins
1946+ property Component foregroundStyle
1947+ function var show()
1948+ function var hide()
1949+ property Item pointerTarget
1950+Ubuntu.Components.Popups.Popover 1.3: PopupBase
1951+ property bool autoClose
1952+ property Item caller
1953+ property double callerMargin
1954+ default readonly property QtObject container
1955+ property double contentHeight
1956+ property double contentWidth
1957+ property double edgeMargins
1958+ property Component foregroundStyle
1959+ function var show()
1960+ function var hide()
1961+ property Item pointerTarget
1962+Ubuntu.Components.Popups.PopupBase 1.0 0.1: OrientationHelper
1963+ property Item dismissArea
1964+ property PropertyAnimation fadingAnimation
1965+ property bool grabDismissAreaEvents
1966+ function var show()
1967+ function var hide()
1968+Ubuntu.Components.Popups.PopupBase 1.3: OrientationHelper
1969+ property Item dismissArea
1970+ property PropertyAnimation fadingAnimation
1971+ property bool grabDismissAreaEvents
1972+ function var show()
1973+ function var hide()
1974+Ubuntu.Components.Popups.PopupUtils 0.1 1.0
1975+Ubuntu.Components.ProgressBar 1.0 0.1: AnimatedItem
1976+ property bool indeterminate
1977+ property double maximumValue
1978+ property double minimumValue
1979+ property bool onScreen
1980+ property double value
1981+Ubuntu.Components.ProgressBar 1.1: ProgressBar
1982+ property bool showProgressPercentage
1983+Ubuntu.Components.ProgressBar 1.3: AnimatedItem
1984+ property bool indeterminate
1985+ property double maximumValue
1986+ property double minimumValue
1987+ property bool onScreen
1988+ property bool showProgressPercentage
1989+ property double value
1990+Ubuntu.Components.PullToRefresh 1.1: StyledItem
1991+ property Component content
1992+ signal refresh()
1993+ readonly property double offset
1994+ property bool refreshing
1995+ readonly property bool releaseToRefresh
1996+ property Flickable target
1997+Ubuntu.Components.PullToRefresh 1.3: StyledItem
1998+ property Component content
1999+ signal refresh()
2000+ readonly property double offset
2001+ property bool refreshing
2002+ readonly property bool releaseToRefresh
2003+ property Flickable target
2004+Ubuntu.Components.Styles.PullToRefreshStyle 1.1: Item
2005+ property double activationThreshold
2006 property Component defaultContent
2007- property real activationThreshold
2008 property bool releaseToRefresh
2009-Palette 0.1
2010-QtObject
2011- property PaletteValues normal
2012- property PaletteValues selected
2013-PaletteValues 0.1
2014-QtObject
2015- property color background
2016- property color backgroundText
2017- property color base
2018- property color baseText
2019- property color foreground
2020- property color foregroundText
2021- property color overlay
2022- property color overlayText
2023- property color field
2024- property color fieldText
2025- property color selection
2026-Palette 1.3
2027-QtObject
2028- property PaletteValues normal
2029- property PaletteValues selected
2030-PaletteValues 1.3
2031-QtObject
2032- property color background
2033- property color backgroundText
2034- property color base
2035- property color baseText
2036- property color foreground
2037- property color foregroundText
2038- property color overlay
2039- property color overlayText
2040- property color field
2041- property color fieldText
2042- property color selection
2043-PerformanceOverlay 0.1 1.0
2044-Item
2045- property bool active
2046-UbuntuTestCase 0.1 1.0
2047-TestCase
2048- function findChild(obj,objectName)
2049- function findInvisibleChild(obj,objectName)
2050- function findChildWithProperty(item, property, value)
2051- function centerOf(item)
2052- function mouseMoveSlowly(item,x,y,dx,dy,steps,stepdelay)
2053- function flick(item, x, y, dx, dy, pressTimeout, steps, button, modifiers, delay)
2054- function mouseLongPress(item, x, y, button, modifiers, delay)
2055- function tryCompareFunction(func, expectedResult, timeout)
2056- function typeString(string)
2057- function warningFormat(line, column, message)
2058- function waitForHeaderAnimation(mainView)
2059-plugins.qmltypes
2060- name: "FilterBehavior"
2061- prototype: "QObject"
2062- exports: ["FilterBehavior 1.1"]
2063- Property { name: "property"; type: "string" }
2064- Property { name: "pattern"; type: "QRegExp" }
2065- name: "InverseMouseAreaType"
2066- prototype: "QQuickMouseArea"
2067- exports: ["InverseMouseArea 0.1", "InverseMouseArea 1.0"]
2068- Property { name: "sensingArea"; type: "QQuickItem"; isPointer: true }
2069- Property { name: "topmostItem"; type: "bool" }
2070- Method {
2071- name: "contains"
2072- Parameter { name: "point"; type: "QPointF" }
2073- name: "QAbstractProxyModel"
2074- prototype: "QAbstractItemModel"
2075- Property { name: "sourceModel"; type: "QAbstractItemModel"; isPointer: true }
2076- name: "QDeclarativeFeedbackActuator"
2077- prototype: "QObject"
2078- exports: ["QtFeedback/Actuator 5.0"]
2079- name: "Capability"
2080- name: "State"
2081- Property { name: "actuatorId"; type: "int"; isReadonly: true }
2082- Property { name: "name"; type: "string"; isReadonly: true }
2083- Property { name: "state"; type: "State"; isReadonly: true }
2084- Property { name: "valid"; type: "bool"; isReadonly: true }
2085- Property { name: "enabled"; type: "bool" }
2086- Method {
2087- name: "isCapabilitySupported"
2088- Parameter { name: "capability"; type: "Capability" }
2089- name: "QDeclarativeFeedbackEffect"
2090- prototype: "QObject"
2091- exports: ["QtFeedback/Feedback 5.0", "QtFeedback/FeedbackEffect 5.0"]
2092- name: "Duration"
2093- name: "State"
2094- name: "ErrorType"
2095- Property { name: "running"; type: "bool" }
2096- Property { name: "paused"; type: "bool" }
2097- Property { name: "duration"; type: "int" }
2098- Property { name: "state"; type: "State" }
2099- Property { name: "error"; type: "ErrorType"; isReadonly: true }
2100- Method { name: "updateState" }
2101- Method { name: "start" }
2102- Method { name: "stop" }
2103- Method { name: "pause" }
2104- name: "QDeclarativeFileEffect"
2105- prototype: "QDeclarativeFeedbackEffect"
2106- exports: ["QtFeedback/FileEffect 5.0"]
2107- Property { name: "loaded"; type: "bool" }
2108- Property { name: "source"; type: "QUrl" }
2109- Property { name: "supportedMimeTypes"; type: "QStringList"; isReadonly: true }
2110- Method { name: "load" }
2111- Method { name: "unload" }
2112- name: "QDeclarativeHapticsEffect"
2113- prototype: "QDeclarativeFeedbackEffect"
2114- exports: ["QtFeedback/HapticsEffect 5.0"]
2115- Property {
2116- name: "availableActuators"
2117- Property { name: "intensity"; type: "double" }
2118- Property { name: "attackTime"; type: "int" }
2119- Property { name: "attackIntensity"; type: "double" }
2120- Property { name: "fadeTime"; type: "int" }
2121- Property { name: "fadeIntensity"; type: "double" }
2122- Property { name: "period"; type: "int" }
2123- Property { name: "actuator"; type: "QDeclarativeFeedbackActuator"; isPointer: true }
2124- name: "QDeclarativeThemeEffect"
2125- prototype: "QObject"
2126- exports: ["QtFeedback/EffectPlayer 5.0", "QtFeedback/ThemeEffect 5.0"]
2127- name: "Effect"
2128- Property { name: "supported"; type: "bool"; isReadonly: true }
2129- Property { name: "effect"; type: "Effect" }
2130- Method { name: "play" }
2131- Method {
2132- name: "play"
2133- Parameter { name: "effect"; type: "Effect" }
2134- name: "QSortFilterProxyModel"
2135- prototype: "QAbstractProxyModel"
2136- Property { name: "filterRegExp"; type: "QRegExp" }
2137- Property { name: "filterKeyColumn"; type: "int" }
2138- Property { name: "dynamicSortFilter"; type: "bool" }
2139- Property { name: "filterCaseSensitivity"; type: "Qt::CaseSensitivity" }
2140- Property { name: "sortCaseSensitivity"; type: "Qt::CaseSensitivity" }
2141- Property { name: "isSortLocaleAware"; type: "bool" }
2142- Property { name: "sortRole"; type: "int" }
2143- Property { name: "filterRole"; type: "int" }
2144- Method {
2145- name: "setFilterRegExp"
2146- Parameter { name: "pattern"; type: "string" }
2147- Method {
2148- name: "setFilterWildcard"
2149- Parameter { name: "pattern"; type: "string" }
2150- Method {
2151- name: "setFilterFixedString"
2152- Parameter { name: "pattern"; type: "string" }
2153- Method { name: "clear" }
2154- Method { name: "invalidate" }
2155- name: "QSortFilterProxyModelQML"
2156- prototype: "QSortFilterProxyModel"
2157- exports: ["SortFilterModel 1.1"]
2158- Property { name: "model"; type: "QAbstractItemModel"; isPointer: true }
2159- Property { name: "count"; type: "int"; isReadonly: true }
2160- Property { name: "sort"; type: "SortBehavior"; isReadonly: true; isPointer: true }
2161- Property { name: "filter"; type: "FilterBehavior"; isReadonly: true; isPointer: true }
2162- Method {
2163- name: "get"
2164- Parameter { name: "row"; type: "int" }
2165- Method { name: "count"; type: "int" }
2166- name: "SortBehavior"
2167- prototype: "QObject"
2168- exports: ["SortBehavior 1.1"]
2169- Property { name: "property"; type: "string" }
2170- Property { name: "order"; type: "Qt::SortOrder" }
2171- name: "UCAction"
2172- prototype: "QObject"
2173- exports: ["Action 0.1", "Action 1.0"]
2174- name: "Type"
2175- Property { name: "name"; type: "string" }
2176- Property { name: "text"; type: "string" }
2177- Property { name: "iconName"; type: "string" }
2178- Property { name: "description"; type: "string" }
2179- Property { name: "keywords"; type: "string" }
2180- Property { name: "enabled"; type: "bool" }
2181- Property { name: "parameterType"; type: "Type" }
2182- Property { name: "iconSource"; type: "QUrl" }
2183- Property { name: "visible"; type: "bool" }
2184- Property { name: "itemHint"; type: "QQmlComponent"; isPointer: true }
2185- Signal {
2186- name: "triggered"
2187- Parameter { name: "value"; type: "QVariant" }
2188- Method {
2189- name: "trigger"
2190- Parameter { name: "value"; type: "QVariant" }
2191- Method { name: "trigger" }
2192- name: "UCActionContext"
2193- prototype: "QObject"
2194- exports: ["ActionContext 0.1", "ActionContext 1.0"]
2195- Property { name: "actions"; type: "QObject"; isList: true; isReadonly: true }
2196- Property { name: "active"; type: "bool" }
2197- Signal {
2198- name: "activeChanged"
2199- Parameter { type: "bool" }
2200- Method {
2201- name: "addAction"
2202- Parameter { name: "action"; type: "QObject"; isPointer: true }
2203- Method {
2204- name: "removeAction"
2205- Parameter { name: "action"; type: "QObject"; isPointer: true }
2206- name: "UCActionManager"
2207- prototype: "QObject"
2208- exports: ["ActionManager 0.1", "ActionManager 1.0"]
2209- Property { name: "actions"; type: "QObject"; isList: true; isReadonly: true }
2210- Property { name: "localContexts"; type: "QObject"; isList: true; isReadonly: true }
2211- Property { name: "globalContext"; type: "UCActionContext"; isReadonly: true; isPointer: true }
2212- Signal { name: "quit" }
2213- Method {
2214- name: "addAction"
2215- Parameter { name: "action"; type: "QObject"; isPointer: true }
2216- Method {
2217- name: "removeAction"
2218- Parameter { name: "action"; type: "QObject"; isPointer: true }
2219- Method {
2220- name: "addLocalContext"
2221- Parameter { name: "context"; type: "QObject"; isPointer: true }
2222- Method {
2223- name: "removeLocalContext"
2224- Parameter { name: "context"; type: "QObject"; isPointer: true }
2225- name: "UCAlarm"
2226- prototype: "QObject"
2227- exports: ["Alarm 0.1", "Alarm 1.0"]
2228- name: "Status"
2229- name: "Operation"
2230- name: "Error"
2231- name: "AlarmType"
2232- name: "DayOfWeek"
2233- name: "DaysOfWeek"
2234- Property { name: "enabled"; type: "bool" }
2235- Property { name: "message"; type: "string" }
2236- Property { name: "date"; type: "QDateTime" }
2237- Property { name: "type"; type: "AlarmType" }
2238- Property { name: "daysOfWeek"; type: "DaysOfWeek" }
2239- Property { name: "sound"; type: "QUrl" }
2240- Property { name: "error"; type: "int"; isReadonly: true }
2241- Property { name: "status"; type: "Status"; isReadonly: true }
2242- Signal {
2243- name: "statusChanged"
2244- Parameter { name: "operation"; type: "Operation" }
2245- Method { name: "save" }
2246- Method { name: "cancel" }
2247- Method { name: "reset" }
2248- name: "UCAlarmModel"
2249- prototype: "QAbstractListModel"
2250- exports: ["AlarmModel 0.1", "AlarmModel 1.0"]
2251- Property { name: "count"; type: "int"; isReadonly: true }
2252- Method { name: "refresh"; revision: 1 }
2253- Method {
2254- name: "get"
2255- Parameter { name: "index"; type: "int" }
2256- name: "UCArgument"
2257- prototype: "QObject"
2258- exports: ["Argument 0.1", "Argument 1.0"]
2259- Property { name: "name"; type: "string" }
2260- Property { name: "help"; type: "string" }
2261- Property { name: "required"; type: "bool" }
2262- Property { name: "valueNames"; type: "QStringList" }
2263- Method {
2264- name: "at"
2265- Parameter { name: "i"; type: "int" }
2266- name: "UCArguments"
2267- prototype: "QObject"
2268- exports: ["Arguments 0.1", "Arguments 1.0"]
2269- Property { name: "defaultArgument"; type: "UCArgument"; isPointer: true }
2270- Property { name: "arguments"; type: "UCArgument"; isList: true; isReadonly: true }
2271- Property { name: "values"; type: "QQmlPropertyMap"; isReadonly: true; isPointer: true }
2272- Property { name: "error"; type: "bool"; isReadonly: true }
2273- Property { name: "errorMessage"; type: "string"; isReadonly: true }
2274- Method { name: "printUsage" }
2275- Method {
2276- name: "quitWithError"
2277- Parameter { name: "errorMessage"; type: "string" }
2278- Method { name: "quitWithError" }
2279- name: "UCDragEvent"
2280- prototype: "QObject"
2281- exports: ["ListItemDrag 1.2"]
2282- name: "Status"
2283- Property { name: "status"; type: "Status"; isReadonly: true }
2284- Property { name: "from"; type: "int"; isReadonly: true }
2285- Property { name: "to"; type: "int"; isReadonly: true }
2286- Property { name: "minimumIndex"; type: "int" }
2287- Property { name: "maximumIndex"; type: "int" }
2288- Property { name: "accept"; type: "bool" }
2289- name: "UCInverseMouse"
2290- prototype: "UCMouse"
2291- exports: ["InverseMouse 0.1", "InverseMouse 1.0"]
2292- name: "UCListItem"
2293- prototype: "UCStyledItemBase"
2294- exports: ["ListItem 1.2"]
2295- Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true }
2296- Property { name: "divider"; type: "UCListItemDivider"; isReadonly: true; isPointer: true }
2297- Property { name: "leadingActions"; type: "UCListItemActions"; isPointer: true }
2298- Property { name: "trailingActions"; type: "UCListItemActions"; isPointer: true }
2299- Property { name: "highlighted"; type: "bool"; isReadonly: true }
2300- Property { name: "contentMoving"; type: "bool"; isReadonly: true }
2301- Property { name: "color"; type: "QColor" }
2302- Property { name: "highlightColor"; type: "QColor" }
2303- Property { name: "dragging"; type: "bool"; isReadonly: true }
2304- Property { name: "dragMode"; type: "bool" }
2305- Property { name: "selected"; type: "bool" }
2306- Property { name: "selectMode"; type: "bool" }
2307- Property { name: "action"; type: "UCAction"; isPointer: true }
2308- Property { name: "listItemData"; type: "QObject"; isList: true; isReadonly: true }
2309- Property { name: "listItemChildren"; type: "QQuickItem"; isList: true; isReadonly: true }
2310- Signal { name: "clicked" }
2311- Signal { name: "pressAndHold" }
2312- Signal { name: "contentMovementStarted" }
2313- Signal { name: "contentMovementEnded" }
2314- name: "UCListItemActions"
2315- prototype: "QObject"
2316- exports: ["ListItemActions 1.2"]
2317- Property { name: "delegate"; type: "QQmlComponent"; isPointer: true }
2318- Property { name: "actions"; type: "UCAction"; isList: true; isReadonly: true }
2319- Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
2320- name: "UCListItemDivider"
2321- prototype: "QQuickItem"
2322- Property { name: "colorFrom"; type: "QColor" }
2323- Property { name: "colorTo"; type: "QColor" }
2324- name: "UCListItemStyle"
2325- prototype: "QQuickItem"
2326- exports: [
2327- Property { name: "snapAnimation"; type: "QQuickAbstractAnimation"; isPointer: true }
2328- Property { name: "dropAnimation"; type: "QQuickPropertyAnimation"; isPointer: true }
2329- Property { name: "animatePanels"; type: "bool"; isReadonly: true }
2330- Property { name: "dragPanel"; type: "QQuickItem"; isPointer: true }
2331- Property { name: "listItemIndex"; revision: 1; type: "int"; isReadonly: true }
2332- Signal { name: "listItemIndexChanged"; revision: 1 }
2333- Method {
2334- name: "swipeEvent"
2335- Parameter { name: "event"; type: "UCSwipeEvent"; isPointer: true }
2336- Method { name: "rebound" }
2337- name: "UCMouse"
2338- prototype: "QObject"
2339- exports: ["Mouse 0.1", "Mouse 1.0"]
2340- name: "Priority"
2341- Property { name: "enabled"; type: "bool" }
2342- Property { name: "acceptedButtons"; type: "Qt::MouseButtons"; isReadonly: true }
2343- Property { name: "hoverEnabled"; type: "bool"; isReadonly: true }
2344- Property { name: "clickAndHoldThreshold"; type: "int" }
2345- Property { name: "forwardTo"; type: "QQuickItem"; isList: true; isReadonly: true }
2346- Property { name: "priority"; type: "Priority" }
2347- Signal {
2348- name: "pressed"
2349- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
2350- Parameter { name: "host"; type: "QQuickItem"; isPointer: true }
2351- Signal {
2352- name: "released"
2353- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
2354- Parameter { name: "host"; type: "QQuickItem"; isPointer: true }
2355- Signal {
2356- name: "clicked"
2357- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
2358- Parameter { name: "host"; type: "QQuickItem"; isPointer: true }
2359- Signal {
2360- name: "pressAndHold"
2361- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
2362- Parameter { name: "host"; type: "QQuickItem"; isPointer: true }
2363- Signal {
2364- name: "doubleClicked"
2365- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
2366- Parameter { name: "host"; type: "QQuickItem"; isPointer: true }
2367- Signal {
2368- name: "positionChanged"
2369- Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true }
2370- Parameter { name: "host"; type: "QQuickItem"; isPointer: true }
2371- Signal {
2372- name: "entered"
2373- Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true }
2374- Parameter { name: "host"; type: "QQuickItem"; isPointer: true }
2375- Signal {
2376- name: "exited"
2377- Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true }
2378- Parameter { name: "host"; type: "QQuickItem"; isPointer: true }
2379- name: "UCNamespace"
2380- prototype: "QObject"
2381- exports: ["Ubuntu 1.2"]
2382- name: "CaptionsStyle"
2383- name: "UCNamespaceV13"
2384- prototype: "UCNamespace"
2385- exports: ["Ubuntu 1.3"]
2386- Property { name: "toolkitVersion"; type: "ushort"; isReadonly: true }
2387- Property { name: "toolkitVersionMajor"; type: "ushort"; isReadonly: true }
2388- Property { name: "toolkitVersionMinor"; type: "ushort"; isReadonly: true }
2389- Method {
2390- name: "version"
2391- Parameter { name: "major"; type: "uchar" }
2392- Parameter { name: "minor"; type: "uchar" }
2393- name: "UCQQuickImageExtension"
2394- prototype: "QQuickImageBase"
2395- exports: ["QQuickImageBase 0.1", "QQuickImageBase 1.0"]
2396- Property { name: "source"; type: "QUrl" }
2397- Signal { name: "extendedSourceChanged" }
2398- Signal { name: "extendedSourceChanged" }
2399- name: "UCServiceProperties"
2400- prototype: "QObject"
2401- exports: ["ServiceProperties 1.1"]
2402- name: "ServiceType"
2403- name: "Status"
2404- Property { name: "type"; revision: 1; type: "ServiceType" }
2405- Property { name: "service"; revision: 1; type: "string" }
2406- Property { name: "path"; revision: 1; type: "string" }
2407- Property { name: "serviceInterface"; revision: 1; type: "string" }
2408- Property { name: "adaptorInterface"; revision: 1; type: "string" }
2409- Property { name: "error"; revision: 1; type: "string"; isReadonly: true }
2410- Property { name: "status"; revision: 1; type: "Status"; isReadonly: true }
2411- name: "UCStateSaver"
2412- prototype: "QObject"
2413- exports: ["StateSaver 0.1", "StateSaver 1.0"]
2414- name: "UCStateSaverAttached"
2415- prototype: "QObject"
2416- Property { name: "enabled"; type: "bool" }
2417- Property { name: "properties"; type: "string" }
2418- name: "UCStyledItemBase"
2419- prototype: "QQuickItem"
2420- exports: [
2421- Property { name: "activeFocusOnPress"; revision: 1; type: "bool" }
2422- Property { name: "style"; type: "QQmlComponent"; isPointer: true }
2423- Property { name: "__styleInstance"; type: "QQuickItem"; isReadonly: true; isPointer: true }
2424- Property { name: "theme"; revision: 2; type: "UCTheme"; isPointer: true }
2425- Signal { name: "styleInstanceChanged" }
2426- Signal { name: "activeFocusOnPressChanged"; revision: 1 }
2427- Signal { name: "themeChanged"; revision: 2 }
2428- Method {
2429- name: "requestFocus"
2430- Parameter { name: "reason"; type: "Qt::FocusReason" }
2431- Method { name: "requestFocus"; revision: 1; type: "bool" }
2432- name: "UCSwipeEvent"
2433- prototype: "QObject"
2434- exports: ["SwipeEvent 1.2"]
2435- name: "Status"
2436- Property { name: "to"; type: "QPointF"; isReadonly: true }
2437- Property { name: "from"; type: "QPointF"; isReadonly: true }
2438- Property { name: "content"; type: "QPointF" }
2439- Property { name: "status"; type: "Status"; isReadonly: true }
2440- name: "UCTheme"
2441- prototype: "QObject"
2442- exports: ["ThemeSettings 1.3"]
2443- Property { name: "parentTheme"; type: "UCTheme"; isReadonly: true; isPointer: true }
2444- Property { name: "name"; type: "string" }
2445- Property { name: "palette"; type: "QObject"; isPointer: true }
2446- Property { name: "version"; type: "ushort" }
2447- Method {
2448- name: "createStyleComponent"
2449- Parameter { name: "styleName"; type: "string" }
2450- Parameter { name: "parent"; type: "QObject"; isPointer: true }
2451- name: "UCUbuntuAnimation"
2452- prototype: "QObject"
2453- exports: ["UbuntuAnimation 0.1", "UbuntuAnimation 1.0"]
2454- Property { name: "SnapDuration"; type: "int"; isReadonly: true }
2455- Property { name: "FastDuration"; type: "int"; isReadonly: true }
2456- Property { name: "BriskDuration"; type: "int"; isReadonly: true }
2457- Property { name: "SlowDuration"; type: "int"; isReadonly: true }
2458- Property { name: "SleepyDuration"; type: "int"; isReadonly: true }
2459- Property { name: "StandardEasing"; type: "QEasingCurve"; isReadonly: true }
2460- Property { name: "StandardEasingReverse"; type: "QEasingCurve"; isReadonly: true }
2461- name: "UCUbuntuShape"
2462- prototype: "QQuickItem"
2463- exports: [
2464- name: "Aspect"
2465- name: "BackgroundMode"
2466- name: "HAlignment"
2467- name: "VAlignment"
2468- name: "FillMode"
2469- name: "WrapMode"
2470- Property { name: "radius"; type: "string" }
2471- Property { name: "aspect"; revision: 1; type: "Aspect" }
2472- Property { name: "source"; revision: 1; type: "QVariant" }
2473- Property { name: "sourceOpacity"; revision: 1; type: "double" }
2474- Property { name: "sourceFillMode"; revision: 1; type: "FillMode" }
2475- Property { name: "sourceHorizontalWrapMode"; revision: 1; type: "WrapMode" }
2476- Property { name: "sourceVerticalWrapMode"; revision: 1; type: "WrapMode" }
2477- Property { name: "sourceHorizontalAlignment"; revision: 1; type: "HAlignment" }
2478- Property { name: "sourceVerticalAlignment"; revision: 1; type: "VAlignment" }
2479- Property { name: "sourceTranslation"; revision: 1; type: "QVector2D" }
2480- Property { name: "sourceScale"; revision: 1; type: "QVector2D" }
2481- Property { name: "backgroundColor"; revision: 1; type: "QColor" }
2482- Property { name: "secondaryBackgroundColor"; revision: 1; type: "QColor" }
2483- Property { name: "backgroundMode"; revision: 1; type: "BackgroundMode" }
2484- Property { name: "borderSource"; type: "string" }
2485- Property { name: "color"; type: "QColor" }
2486- Property { name: "gradientColor"; type: "QColor" }
2487- Property { name: "image"; type: "QVariant" }
2488- Property { name: "stretched"; type: "bool" }
2489- Property { name: "horizontalAlignment"; type: "HAlignment" }
2490- Property { name: "verticalAlignment"; type: "VAlignment" }
2491- Signal { name: "aspectChanged"; revision: 1 }
2492- Signal { name: "sourceChanged"; revision: 1 }
2493- Signal { name: "sourceOpacityChanged"; revision: 1 }
2494- Signal { name: "sourceFillModeChanged"; revision: 1 }
2495- Signal { name: "sourceHorizontalWrapModeChanged"; revision: 1 }
2496- Signal { name: "sourceVerticalWrapModeChanged"; revision: 1 }
2497- Signal { name: "sourceHorizontalAlignmentChanged"; revision: 1 }
2498- Signal { name: "sourceVerticalAlignmentChanged"; revision: 1 }
2499- Signal { name: "sourceTranslationChanged"; revision: 1 }
2500- Signal { name: "sourceScaleChanged"; revision: 1 }
2501- Signal { name: "backgroundColorChanged"; revision: 1 }
2502- Signal { name: "secondaryBackgroundColorChanged"; revision: 1 }
2503- Signal { name: "backgroundModeChanged"; revision: 1 }
2504- name: "UCUbuntuShapeOverlay"
2505- prototype: "UCUbuntuShape"
2506- exports: ["UbuntuShapeOverlay 1.2"]
2507- Property { name: "overlayRect"; type: "QRectF" }
2508- Property { name: "overlayColor"; type: "QColor" }
2509- name: "UCUnits"
2510- prototype: "QObject"
2511- exports: ["UCUnits 0.1", "UCUnits 1.0"]
2512- Property { name: "gridUnit"; type: "float" }
2513- Method {
2514- name: "dp"
2515- Parameter { name: "value"; type: "float" }
2516- Method {
2517- name: "gu"
2518- Parameter { name: "value"; type: "float" }
2519- name: "UCUriHandler"
2520- prototype: "QObject"
2521- exports: ["UriHandler 0.1", "UriHandler 1.0"]
2522- Signal {
2523- name: "opened"
2524- Parameter { name: "uris"; type: "QStringList" }
2525- name: "UCViewItemsAttached"
2526- prototype: "QObject"
2527- exports: ["ViewItems 1.2"]
2528- Property { name: "selectMode"; type: "bool" }
2529- Property { name: "selectedIndices"; type: "QList<int>" }
2530- Property { name: "dragMode"; type: "bool" }
2531- Signal {
2532- name: "dragUpdated"
2533- Parameter { name: "event"; type: "UCDragEvent"; isPointer: true }
2534- name: "UbuntuI18n"
2535- prototype: "QObject"
2536- exports: ["i18n 0.1", "i18n 1.0"]
2537- Property { name: "domain"; type: "string" }
2538- Property { name: "language"; type: "string" }
2539- Method {
2540- name: "bindtextdomain"
2541- Parameter { name: "domain_name"; type: "string" }
2542- Parameter { name: "dir_name"; type: "string" }
2543- Method {
2544- name: "tr"
2545- Parameter { name: "text"; type: "string" }
2546- Method {
2547- name: "tr"
2548- Parameter { name: "singular"; type: "string" }
2549- Parameter { name: "plural"; type: "string" }
2550- Parameter { name: "n"; type: "int" }
2551- Method {
2552- name: "dtr"
2553- Parameter { name: "domain"; type: "string" }
2554- Parameter { name: "text"; type: "string" }
2555- Method {
2556- name: "dtr"
2557- Parameter { name: "domain"; type: "string" }
2558- Parameter { name: "singular"; type: "string" }
2559- Parameter { name: "plural"; type: "string" }
2560- Parameter { name: "n"; type: "int" }
2561- Method {
2562- name: "ctr"
2563- Parameter { name: "context"; type: "string" }
2564- Parameter { name: "text"; type: "string" }
2565- Method {
2566- name: "dctr"
2567- Parameter { name: "domain"; type: "string" }
2568- Parameter { name: "context"; type: "string" }
2569- Parameter { name: "text"; type: "string" }
2570- Method {
2571- name: "tag"
2572- Parameter { name: "text"; type: "string" }
2573- Method {
2574- name: "tag"
2575- Parameter { name: "context"; type: "string" }
2576- Parameter { name: "text"; type: "string" }
2577- prototype: "QObject"
2578- name: "Haptics"
2579- exports: ["Haptics -1.-1"]
2580- Property { name: "enabled"; type: "bool"; isReadonly: true }
2581- Property { name: "effect"; type: "QDeclarativeHapticsEffect"; isReadonly: true; isPointer: true }
2582- Method {
2583- name: "play"
2584- Parameter { name: "customEffect"; type: "QVariant" }
2585- Property { name: "__defaultPropertyFix"; type: "QObject"; isList: true; isReadonly: true }
2586- Property { name: "children"; type: "QObject"; isList: true; isReadonly: true }
2587- prototype: "QObject"
2588- name: "Object"
2589- exports: ["Object -1.-1"]
2590- Property { name: "__defaultPropertyFix"; type: "QObject"; isList: true; isReadonly: true }
2591- Property { name: "children"; type: "QObject"; isList: true; isReadonly: true }
2592- name: "ULConditionalLayout"
2593- prototype: "QObject"
2594- exports: ["ConditionalLayout 0.1", "ConditionalLayout 1.0"]
2595- Property { name: "name"; type: "string" }
2596- Property { name: "when"; type: "QQmlBinding"; isPointer: true }
2597- Property { name: "layout"; type: "QQmlComponent"; isPointer: true }
2598- name: "ULItemLayout"
2599- prototype: "QQuickItem"
2600- exports: ["ItemLayout 0.1", "ItemLayout 1.0"]
2601- Property { name: "item"; type: "string" }
2602- name: "ULLayouts"
2603- prototype: "QQuickItem"
2604- exports: ["Layouts 0.1", "Layouts 1.0"]
2605- Property { name: "currentLayout"; type: "string"; isReadonly: true }
2606- Property { name: "layouts"; type: "ULConditionalLayout"; isList: true; isReadonly: true }
2607- Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
2608- Property { name: "children"; type: "QQuickItem"; isList: true; isReadonly: true }
2609- name: "ULLayoutsAttached"
2610- prototype: "QObject"
2611- Property { name: "item"; type: "string" }
2612- name: "UPMCpuUsage"
2613- prototype: "QQuickItem"
2614- exports: ["CpuUsage 0.1", "CpuUsage 1.0"]
2615- Property { name: "graphModel"; type: "UPMGraphModel"; isReadonly: true; isPointer: true }
2616- Property { name: "period"; type: "int" }
2617- Property { name: "samplingInterval"; type: "int" }
2618- name: "UPMGraphModel"
2619- prototype: "QObject"
2620- Property { name: "image"; type: "QImage"; isReadonly: true }
2621- Property { name: "shift"; type: "int"; isReadonly: true }
2622- Property { name: "samples"; type: "int" }
2623- Property { name: "currentValue"; type: "int"; isReadonly: true }
2624- name: "UPMRenderingTimes"
2625- prototype: "QQuickItem"
2626- exports: ["RenderingTimes 0.1", "RenderingTimes 1.0"]
2627- Property { name: "period"; type: "int" }
2628- Property { name: "samples"; type: "int" }
2629- Property { name: "graphModel"; type: "UPMGraphModel"; isReadonly: true; isPointer: true }
2630- Property { name: "timerType"; type: "RenderTimer::TimerType" }
2631- Signal {
2632- name: "frameRendered"
2633- Parameter { name: "renderTime"; type: "qlonglong" }
2634- name: "UPMTextureFromImage"
2635- prototype: "QQuickItem"
2636- exports: ["TextureFromImage 0.1", "TextureFromImage 1.0"]
2637- Property { name: "image"; type: "QImage" }
2638- name: "UCTestExtras"
2639- prototype: "QObject"
2640- exports: ["TestExtras 1.0"]
2641- Property { name: "touchPresent"; type: "bool"; isReadonly: true }
2642- Method { name: "openGLflavor"; type: "string" }
2643- Method { name: "cpuArchitecture"; type: "string" }
2644- Method { name: "touchDevicePresent"; type: "bool" }
2645- Method { name: "registerTouchDevice" }
2646- Method {
2647- name: "touchPress"
2648- Parameter { name: "touchId"; type: "int" }
2649- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
2650- Parameter { name: "point"; type: "QPoint" }
2651- Method {
2652- name: "touchRelease"
2653- Parameter { name: "touchId"; type: "int" }
2654- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
2655- Parameter { name: "point"; type: "QPoint" }
2656- Method {
2657- name: "touchClick"
2658- Parameter { name: "touchId"; type: "int" }
2659- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
2660- Parameter { name: "point"; type: "QPoint" }
2661- Method {
2662- name: "touchLongPress"
2663- Parameter { name: "touchId"; type: "int" }
2664- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
2665- Parameter { name: "point"; type: "QPoint" }
2666- Method {
2667- name: "touchDoubleClick"
2668- Parameter { name: "touchId"; type: "int" }
2669- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
2670- Parameter { name: "point"; type: "QPoint" }
2671- Method {
2672- name: "touchMove"
2673- Parameter { name: "touchId"; type: "int" }
2674- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
2675- Parameter { name: "point"; type: "QPoint" }
2676- Method {
2677- name: "touchDrag"
2678- Parameter { name: "touchId"; type: "int" }
2679- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
2680- Parameter { name: "from"; type: "QPoint" }
2681- Parameter { name: "delta"; type: "QPoint" }
2682- Parameter { name: "steps"; type: "int" }
2683- Method {
2684- name: "touchDrag"
2685- Parameter { name: "touchId"; type: "int" }
2686- Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
2687- Parameter { name: "from"; type: "QPoint" }
2688- Parameter { name: "delta"; type: "QPoint" }
2689+Ubuntu.PerformanceMetrics.RenderingTimes 1.0 0.1: Item
2690+ readonly property UPMGraphModel graphModel
2691+ signal frameRendered(qlonglong renderTime)
2692+ property int period
2693+ property int samples
2694+ property RenderTimer.TimerType timerType
2695+Ubuntu.Components.Scrollbar 1.0 0.1: StyledItem
2696+ property int align
2697+ property Flickable flickableItem
2698+Ubuntu.Components.Scrollbar 1.3: StyledItem
2699+ property int align
2700+ property Flickable flickableItem
2701+Ubuntu.Components.ScrollbarUtils 0.1 1.0
2702+Ubuntu.Components.ServiceProperties 1.1: QtObject
2703+ property string adaptorInterface
2704+ readonly property string error
2705+ property string path
2706+ property string service
2707+ property string serviceInterface
2708+ readonly property Status status
2709+Ubuntu.Components.ServiceProperties.ServiceType: Enum
2710+ Session
2711+ System
2712+ Undefined
2713+Ubuntu.Components.ServiceProperties.Status: Enum
2714+ Active
2715+ ConnectionError
2716+ Inactive
2717+ Synchronizing
2718+Ubuntu.Components.Popups.SheetBase 1.0 0.1: PopupBase
2719+ default readonly property QtObject container
2720+ property double contentsHeight
2721+ property double contentsWidth
2722+ property bool modal
2723+ property string title
2724+Ubuntu.Components.Popups.SheetBase 1.3: PopupBase
2725+ default readonly property QtObject container
2726+ property double contentsHeight
2727+ property double contentsWidth
2728+ property bool modal
2729+ property string title
2730+Ubuntu.Components.ListItems.SingleControl 1.0 0.1: Empty
2731+ property Item control
2732+Ubuntu.Components.ListItems.SingleControl 1.3: Empty
2733+ property Item control
2734+Ubuntu.Components.ListItems.SingleValue 1.0 0.1: Base
2735+ property string value
2736+Ubuntu.Components.ListItems.SingleValue 1.3: Base
2737+ property string value
2738+Ubuntu.Components.Slider 1.0 0.1: StyledItem
2739+ property bool live
2740+ property double maximumValue
2741+ signal touched(bool onThumb)
2742+ function var formatValue(var v)
2743+ property double minimumValue
2744+ readonly property bool pressed
2745+ property double value
2746+Ubuntu.Components.Slider 1.3: StyledItem
2747+ property bool live
2748+ property double maximumValue
2749+ signal touched(bool onThumb)
2750+ function var formatValue(var v)
2751+ property double minimumValue
2752+ readonly property bool pressed
2753+ property double value
2754+Ubuntu.Components.SliderUtils 0.1 1.0
2755+Ubuntu.Components.SortBehavior 1.1: QtObject
2756+ property Qt.SortOrder order
2757+ property string property
2758+Ubuntu.Components.SortFilterModel 1.1: QSortFilterProxyModel
2759+ readonly property int count
2760+ readonly property FilterBehavior filter
2761+ function QVariantMap get(int row)
2762+ function int count()
2763+ property QAbstractItemModel model
2764+ readonly property SortBehavior sort
2765+Ubuntu.Components.ListItems.Standard 1.0 0.1: Empty
2766+ property Item control
2767+ property string fallbackIconName
2768+ property url fallbackIconSource
2769+ property var icon
2770+ property bool iconFrame
2771+ property bool progression
2772+Ubuntu.Components.ListItems.Standard 1.3: Empty
2773+ property Item control
2774+ property string fallbackIconName
2775+ property url fallbackIconSource
2776+ property var icon
2777+ property bool iconFrame
2778+ property bool progression
2779+Ubuntu.Components.StateSaver 1.0 0.1: QtObject
2780+Ubuntu.Components.StyledItem 1.3 1.1 1.0 0.1: Item
2781+ property bool activeFocusOnPress
2782+ function bool requestFocus(Qt.FocusReason reason)
2783+ function bool requestFocus()
2784+ property Component style
2785+ property ThemeSettings theme
2786+Ubuntu.Components.ListItems.Subtitled 1.0 0.1: Base
2787+ property string subText
2788+Ubuntu.Components.ListItems.Subtitled 1.3: Base
2789+ property string subText
2790+Ubuntu.Components.SwipeEvent 1.2: QtObject
2791+ property QPointF content
2792+ readonly property QPointF from
2793+ readonly property Status status
2794+ readonly property QPointF to
2795+Ubuntu.Components.SwipeEvent.Status: Enum
2796+ Finished
2797+ Started
2798+ Updated
2799+Ubuntu.Components.Switch 1.0 0.1: AbstractButton
2800+ property bool checked
2801+Ubuntu.Components.Switch 1.3: AbstractButton
2802+ property bool checked
2803+Ubuntu.Components.Tab 1.0 0.1: PageTreeNode
2804+ property url iconSource
2805+ readonly property int index
2806+ property Item page
2807+ property string title
2808+Ubuntu.Components.Tab 1.3: PageTreeNode
2809+ property url iconSource
2810+ readonly property int index
2811+ property Item page
2812+ property string title
2813+Ubuntu.Components.TabBar 1.0 0.1: StyledItem
2814+ property bool alwaysSelectionMode
2815+ property bool animate
2816+ property var model
2817+ readonly property bool pressed
2818+ property int selectedIndex
2819+ property bool selectionMode
2820+ property Item tabsItem
2821+Ubuntu.Components.TabBar 1.3: StyledItem
2822+ property bool alwaysSelectionMode
2823+ property bool animate
2824+ property var model
2825+ readonly property bool pressed
2826+ property int selectedIndex
2827+ property bool selectionMode
2828+ property Item tabsItem
2829+Ubuntu.Components.Tabs 1.0 0.1: PageTreeNode
2830+ readonly property int count
2831+ readonly property Item currentPage
2832+ readonly property Tab selectedTab
2833+ property int selectedTabIndex
2834+ property TabBar tabBar
2835+ default readonly property QtObject tabChildren
2836+Ubuntu.Components.Tabs 1.3: PageTreeNode
2837+ readonly property int count
2838+ readonly property Item currentPage
2839+ readonly property Tab selectedTab
2840+ property int selectedTabIndex
2841+ property TabBar tabBar
2842+ default readonly property QtObject tabChildren
2843+Ubuntu.Test.TestExtras 1.0: QtObject singleton
2844+ function string openGLflavor()
2845+ function string cpuArchitecture()
2846+ function bool touchDevicePresent()
2847+ function registerTouchDevice()
2848+ function touchPress(int touchId, Item item, Qt.point point)
2849+ function touchRelease(int touchId, Item item, Qt.point point)
2850+ function touchClick(int touchId, Item item, Qt.point point)
2851+ function touchLongPress(int touchId, Item item, Qt.point point)
2852+ function touchDoubleClick(int touchId, Item item, Qt.point point)
2853+ function touchMove(int touchId, Item item, Qt.point point)
2854+ function touchDrag(int touchId, Item item, Qt.point from, Qt.point delta, int steps)
2855+ function touchDrag(int touchId, Item item, Qt.point from, Qt.point delta)
2856+ readonly property bool touchPresent
2857+Ubuntu.Components.TextArea 1.0 0.1: StyledItem
2858+ property bool activeFocusOnPress
2859+ property bool autoExpand
2860+ property bool autoSize
2861+ property url baseUrl
2862+ readonly property bool canPaste
2863+ readonly property bool canRedo
2864+ readonly property bool canUndo
2865+ property color color
2866+ property double contentHeight
2867+ property double contentWidth
2868+ property Component cursorDelegate
2869+ property int cursorPosition
2870+ readonly property QRectF cursorRectangle
2871+ property bool cursorVisible
2872+ readonly property string displayText
2873+ readonly property int effectiveHorizontalAlignment
2874+ property QFont font
2875+ property bool highlighted
2876+ property int horizontalAlignment
2877+ readonly property bool inputMethodComposing
2878+ property int inputMethodHints
2879+ readonly property int length
2880+ readonly property int lineCount
2881+ property int maximumLineCount
2882+ signal linkActivated(string link)
2883+ function var copy()
2884+ function var cut()
2885+ function var deselect()
2886+ function var insert(var position, var text)
2887+ function var positionAt(var x, var y)
2888+ function var isRightToLeft(var start, var end)
2889+ function var moveCursorSelection(var position, var mode)
2890+ function var paste(var data)
2891+ function var positionToRectangle(var position)
2892+ function var redo()
2893+ function var select(var start, var end)
2894+ function var selectAll()
2895+ function var selectWord()
2896+ function var getFormattedText(var start, var end)
2897+ function var getText(var start, var end)
2898+ function var remove(var start, var end)
2899+ function var undo()
2900+ property int mouseSelectionMode
2901+ property bool persistentSelection
2902+ property string placeholderText
2903+ property var popover
2904+ property bool readOnly
2905+ property int renderType
2906+ property bool selectByMouse
2907+ readonly property string selectedText
2908+ property color selectedTextColor
2909+ property color selectionColor
2910+ readonly property int selectionEnd
2911+ readonly property int selectionStart
2912+ property string text
2913+ property int textFormat
2914+ property int verticalAlignment
2915+ property int wrapMode
2916+Ubuntu.Components.TextArea 1.3: StyledItem
2917+ property bool activeFocusOnPress
2918+ property bool autoExpand
2919+ property bool autoSize
2920+ property url baseUrl
2921+ readonly property bool canPaste
2922+ readonly property bool canRedo
2923+ readonly property bool canUndo
2924+ property color color
2925+ property double contentHeight
2926+ property double contentWidth
2927+ property Component cursorDelegate
2928+ property int cursorPosition
2929+ readonly property QRectF cursorRectangle
2930+ property bool cursorVisible
2931+ readonly property string displayText
2932+ readonly property int effectiveHorizontalAlignment
2933+ property QFont font
2934+ property bool highlighted
2935+ property int horizontalAlignment
2936+ readonly property bool inputMethodComposing
2937+ property int inputMethodHints
2938+ readonly property int length
2939+ readonly property int lineCount
2940+ property int maximumLineCount
2941+ signal linkActivated(string link)
2942+ function var copy()
2943+ function var cut()
2944+ function var deselect()
2945+ function var insert(var position, var text)
2946+ function var positionAt(var x, var y)
2947+ function var isRightToLeft(var start, var end)
2948+ function var moveCursorSelection(var position, var mode)
2949+ function var paste(var data)
2950+ function var positionToRectangle(var position)
2951+ function var redo()
2952+ function var select(var start, var end)
2953+ function var selectAll()
2954+ function var selectWord()
2955+ function var getFormattedText(var start, var end)
2956+ function var getText(var start, var end)
2957+ function var remove(var start, var end)
2958+ function var undo()
2959+ property int mouseSelectionMode
2960+ property bool persistentSelection
2961+ property string placeholderText
2962+ property var popover
2963+ property bool readOnly
2964+ property int renderType
2965+ property bool selectByMouse
2966+ readonly property string selectedText
2967+ property color selectedTextColor
2968+ property color selectionColor
2969+ readonly property int selectionEnd
2970+ readonly property int selectionStart
2971+ property string text
2972+ property int textFormat
2973+ property int verticalAlignment
2974+ property int wrapMode
2975+Ubuntu.Components.TextField 1.0 0.1: ActionItem
2976+ readonly property bool acceptableInput
2977+ property bool activeFocusOnPress
2978+ property bool autoScroll
2979+ readonly property bool canPaste
2980+ readonly property bool canRedo
2981+ readonly property bool canUndo
2982+ property color color
2983+ readonly property double contentHeight
2984+ readonly property double contentWidth
2985+ property Component cursorDelegate
2986+ property int cursorPosition
2987+ readonly property QRectF cursorRectangle
2988+ property bool cursorVisible
2989+ property Component customSoftwareInputPanel
2990+ readonly property string displayText
2991+ property int echoMode
2992+ readonly property int effectiveHorizontalAlignment
2993+ property bool errorHighlight
2994+ property QFont font
2995+ property bool hasClearButton
2996+ property bool highlighted
2997+ property int horizontalAlignment
2998+ property string inputMask
2999+ readonly property bool inputMethodComposing
3000+ property int inputMethodHints
3001+ readonly property int length
3002+ property int maximumLength
3003+ signal accepted()
3004+ function var copy()
3005+ function var cut()
3006+ function var paste(var data)
3007+ function var deselect()
3008+ function var insert(var position, var text)
3009+ function var positionAt(var x, var position)
3010+ function var positionToRectangle(var pos)
3011+ function var select(var start, var end)
3012+ function var selectAll()
3013+ function var selectWord()
3014+ function var isRightToLeft(var start, var end)
3015+ function var moveCursorSelection(var position, var mode)
3016+ function var redo()
3017+ function var undo()
3018+ function var remove(var start, var end)
3019+ function var getText(var start, var end)
3020+ property int mouseSelectionMode
3021+ property string passwordCharacter
3022+ property bool persistentSelection
3023+ property string placeholderText
3024+ property var popover
3025+ readonly property QtObject primaryItem
3026+ property bool readOnly
3027+ property int renderType
3028+ readonly property QtObject secondaryItem
3029+ property bool selectByMouse
3030+ readonly property string selectedText
3031+ property color selectedTextColor
3032+ property color selectionColor
3033+ readonly property int selectionEnd
3034+ readonly property int selectionStart
3035+ property string text
3036+ property QValidator validator
3037+ property int verticalAlignment
3038+Ubuntu.Components.TextField 1.3: ActionItem
3039+ readonly property bool acceptableInput
3040+ property bool activeFocusOnPress
3041+ property bool autoScroll
3042+ readonly property bool canPaste
3043+ readonly property bool canRedo
3044+ readonly property bool canUndo
3045+ property color color
3046+ readonly property double contentHeight
3047+ readonly property double contentWidth
3048+ property Component cursorDelegate
3049+ property int cursorPosition
3050+ readonly property QRectF cursorRectangle
3051+ property bool cursorVisible
3052+ property Component customSoftwareInputPanel
3053+ readonly property string displayText
3054+ property int echoMode
3055+ readonly property int effectiveHorizontalAlignment
3056+ property bool errorHighlight
3057+ property QFont font
3058+ property bool hasClearButton
3059+ property bool highlighted
3060+ property int horizontalAlignment
3061+ property string inputMask
3062+ readonly property bool inputMethodComposing
3063+ property int inputMethodHints
3064+ readonly property int length
3065+ property int maximumLength
3066+ signal accepted()
3067+ function var copy()
3068+ function var cut()
3069+ function var paste(var data)
3070+ function var deselect()
3071+ function var insert(var position, var text)
3072+ function var positionAt(var x, var position)
3073+ function var positionToRectangle(var pos)
3074+ function var select(var start, var end)
3075+ function var selectAll()
3076+ function var selectWord()
3077+ function var isRightToLeft(var start, var end)
3078+ function var moveCursorSelection(var position, var mode)
3079+ function var redo()
3080+ function var undo()
3081+ function var remove(var start, var end)
3082+ function var getText(var start, var end)
3083+ property int mouseSelectionMode
3084+ property string passwordCharacter
3085+ property bool persistentSelection
3086+ property string placeholderText
3087+ property var popover
3088+ readonly property QtObject primaryItem
3089+ property bool readOnly
3090+ property int renderType
3091+ readonly property QtObject secondaryItem
3092+ property bool selectByMouse
3093+ readonly property string selectedText
3094+ property color selectedTextColor
3095+ property color selectionColor
3096+ readonly property int selectionEnd
3097+ readonly property int selectionStart
3098+ property string text
3099+ property QValidator validator
3100+ property int verticalAlignment
3101+Ubuntu.PerformanceMetrics.TextureFromImage 1.0 0.1: Item
3102+ property QImage image
3103+Ubuntu.Components.ThemeSettings 1.3: QtObject
3104+ function QQmlComponent* createStyleComponent(string styleName, QtObject parent)
3105+ property string name
3106+ property QtObject palette
3107+ readonly property ThemeSettings parentTheme
3108+ property ushort version
3109+Ubuntu.Components.ListItems.ThinDivider 1.0 0.1: Rectangle
3110+Ubuntu.Components.ListItems.ThinDivider 1.3: Rectangle
3111+Ubuntu.Components.ToolbarButton 1.0 0.1: StyledItem
3112+ property Action action
3113+ property string iconName
3114+ property url iconSource
3115+ signal triggered(var value)
3116+ function var trigger(var value)
3117+ property string text
3118+Ubuntu.Components.ToolbarButton 1.3: StyledItem
3119+ property Action action
3120+ property string iconName
3121+ property url iconSource
3122+ signal triggered(var value)
3123+ function var trigger(var value)
3124+ property string text
3125+Ubuntu.Components.ToolbarItems 1.0 0.1: Item
3126+ property Item back
3127+ default readonly property QtObject contents
3128+ property bool locked
3129+ property bool opened
3130+ property Item pageStack
3131+Ubuntu.Components.ToolbarItems 1.3: Item
3132+ property Item back
3133+ default readonly property QtObject contents
3134+ property bool locked
3135+ property bool opened
3136+ property Item pageStack
3137+UCListItemDivider: Item
3138+ property color colorFrom
3139+ property color colorTo
3140+UCStateSaverAttached: QtObject
3141+ property bool enabled
3142+ property string properties
3143+Ubuntu.Components.UCUnits 1.0 0.1: QtObject
3144+ property float gridUnit
3145+ function float dp(float value)
3146+ function float gu(float value)
3147+ULLayoutsAttached: QtObject
3148+ property string item
3149+UPMGraphModel: QtObject
3150+ readonly property int currentValue
3151+ readonly property QImage image
3152+ property int samples
3153+ readonly property int shift
3154+Ubuntu.Components.Ubuntu 1.2: QtObject singleton
3155+Ubuntu.Components.Ubuntu 1.3: Ubuntu singleton
3156+ function ushort version(uchar major, uchar minor)
3157+ readonly property ushort toolkitVersion
3158+ readonly property ushort toolkitVersionMajor
3159+ readonly property ushort toolkitVersionMinor
3160+Ubuntu.Components.Ubuntu.CaptionsStyle: Enum
3161+ SummaryCaptionStyle
3162+ TitleCaptionStyle
3163+Ubuntu.Components.UbuntuAnimation 1.0 0.1: QtObject singleton
3164+ readonly property int BriskDuration
3165+ readonly property int FastDuration
3166+ readonly property int SleepyDuration
3167+ readonly property int SlowDuration
3168+ readonly property int SnapDuration
3169+ readonly property QEasingCurve StandardEasing
3170+ readonly property QEasingCurve StandardEasingReverse
3171+Ubuntu.Components.UbuntuColors 1.0 0.1: QtObject singleton
3172+ readonly property color coolGrey
3173+ readonly property color darkAubergine
3174+ property Gradient greyGradient
3175+ readonly property color lightAubergine
3176+ readonly property color midAubergine
3177+ readonly property color orange
3178+ property Gradient orangeGradient
3179+ readonly property color warmGrey
3180+Ubuntu.Components.UbuntuColors 1.1: QtObject singleton
3181+ readonly property color blue
3182+ readonly property color coolGrey
3183+ readonly property color darkAubergine
3184+ readonly property color darkGrey
3185+ readonly property color green
3186+ property Gradient greyGradient
3187+ readonly property color lightAubergine
3188+ readonly property color lightGrey
3189+ readonly property color midAubergine
3190+ readonly property color orange
3191+ property Gradient orangeGradient
3192+ readonly property color purple
3193+ readonly property color red
3194+ readonly property color warmGrey
3195+Ubuntu.Components.UbuntuListView 1.0 0.1: ListView
3196+ property int expandedIndex
3197+Ubuntu.Components.UbuntuListView 1.1: UbuntuListView
3198+ readonly property PullToRefresh pullToRefresh
3199+Ubuntu.Components.UbuntuListView 1.3: UbuntuListView
3200+ readonly property PullToRefresh pullToRefresh
3201+Ubuntu.Components.UbuntuNumberAnimation 1.0 0.1: PropertyAnimation
3202+ property double from
3203+ property double to
3204+Ubuntu.Components.UbuntuNumberAnimation 1.3: PropertyAnimation
3205+ property double from
3206+ property double to
3207+Ubuntu.Components.UbuntuShape 1.2 1.0 0.1 Shape 1.0 0.1: Item
3208+ property Aspect aspect
3209+ property color backgroundColor
3210+ property BackgroundMode backgroundMode
3211+ property string borderSource
3212+ property color color
3213+ property color gradientColor
3214+ property HAlignment horizontalAlignment
3215+ property var image
3216+ property string radius
3217+ property color secondaryBackgroundColor
3218+ property var source
3219+ property FillMode sourceFillMode
3220+ property HAlignment sourceHorizontalAlignment
3221+ property WrapMode sourceHorizontalWrapMode
3222+ property double sourceOpacity
3223+ property vector2d sourceScale
3224+ property vector2d sourceTranslation
3225+ property VAlignment sourceVerticalAlignment
3226+ property WrapMode sourceVerticalWrapMode
3227+ property bool stretched
3228+ property VAlignment verticalAlignment
3229+Ubuntu.Components.UbuntuShape.Aspect: Enum
3230+ Flat
3231+ Inset
3232+Ubuntu.Components.UbuntuShape.BackgroundMode: Enum
3233+ SolidColor
3234+ VerticalGradient
3235+Ubuntu.Components.UbuntuShape.FillMode: Enum
3236+ Pad
3237+ PreserveAspectCrop
3238+ PreserveAspectFit
3239+ Stretch
3240+Ubuntu.Components.UbuntuShape.HAlignment: Enum
3241+ AlignHCenter
3242+ AlignLeft
3243+ AlignRight
3244+Ubuntu.Components.UbuntuShape.VAlignment: Enum
3245+ AlignBottom
3246+ AlignTop
3247+ AlignVCenter
3248+Ubuntu.Components.UbuntuShape.WrapMode: Enum
3249+ Repeat
3250+ Transparent
3251+Ubuntu.Components.UbuntuShapeOverlay 1.2: UbuntuShape
3252+ property color overlayColor
3253+ property QRectF overlayRect
3254+Ubuntu.Test.UbuntuTestCase 1.0 0.1: TestCase
3255+ function var findChild(var obj, var objectName)
3256+ function var findInvisibleChild(var obj, var objectName)
3257+ function var findChildWithProperty(var item, var property, var value)
3258+ function var centerOf(var item)
3259+ function var mouseMoveSlowly(var item, var x, var y, var dx, var dy, var steps, var stepdelay)
3260+ function var flick(var item, var x, var y, var dx, var dy, var pressTimeout, var steps, var button, var modifiers, var delay)
3261+ function var mouseLongPress(var item, var x, var y, var button, var modifiers, var delay)
3262+ function var tryCompareFunction(var func, var expectedResult, var timeout)
3263+ function var typeString(var string)
3264+ function var warningFormat(var line, var column, var message)
3265+ function var waitForHeaderAnimation(var mainView)
3266+Ubuntu.Components.UriHandler 1.0 0.1: QtObject singleton
3267+ signal opened(QStringList uris)
3268+Ubuntu.Components.ListItems.ValueSelector 1.0 0.1: Empty
3269+ property bool expanded
3270+ property string fallbackIconName
3271+ property url fallbackIconSource
3272+ property var icon
3273+ property bool iconFrame
3274+ property int selectedIndex
3275+ property var values
3276+Ubuntu.Components.ListItems.ValueSelector 1.3: Empty
3277+ property bool expanded
3278+ property string fallbackIconName
3279+ property url fallbackIconSource
3280+ property var icon
3281+ property bool iconFrame
3282+ property int selectedIndex
3283+ property var values
3284+Ubuntu.Components.ViewItems 1.2: QtObject
3285+ property bool dragMode
3286+ signal dragUpdated(ListItemDrag event)
3287+ property bool selectMode
3288+ property QList<int> selectedIndices
3289+Ubuntu.Components.i18n 1.0 0.1: QtObject
3290+ property string domain
3291+ property string language
3292+ function bindtextdomain(string domain_name, string dir_name)
3293+ function string tr(string text)
3294+ function string tr(string singular, string plural, int n)
3295+ function string dtr(string domain, string text)
3296+ function string dtr(string domain, string singular, string plural, int n)
3297+ function string ctr(string context, string text)
3298+ function string dctr(string domain, string context, string text)
3299+ function string tag(string text)
3300+ function string tag(string context, string text)
3301
3302=== modified file 'debian/control'
3303--- debian/control 2015-04-14 21:02:06 +0000
3304+++ debian/control 2015-05-20 11:32:53 +0000
3305@@ -20,6 +20,7 @@
3306 qml-module-qtquick-layouts,
3307 qtdeclarative5-qtfeedback-plugin,
3308 qtdeclarative5-unity-action-plugin (>= 1.1.0),
3309+ qtdeclarative5-private-dev,
3310 qml-module-qtquick-localstorage | qtdeclarative5-localstorage-plugin,
3311 qml-module-qt-labs-settings | qtdeclarative5-settings-plugin,
3312 qml-module-qtqml-models2,
3313
3314=== modified file 'debian/ubuntu-ui-toolkit-autopilot.install'
3315--- debian/ubuntu-ui-toolkit-autopilot.install 2015-04-14 21:02:06 +0000
3316+++ debian/ubuntu-ui-toolkit-autopilot.install 2015-05-20 11:32:53 +0000
3317@@ -1,2 +1,3 @@
3318 usr/lib/python3
3319+usr/lib/*/ubuntu-ui-toolkit/apicheck
3320 usr/lib/*/ubuntu-ui-toolkit/launcher
3321
3322=== added directory 'tests/apicheck'
3323=== added file 'tests/apicheck/apicheck.cpp'
3324--- tests/apicheck/apicheck.cpp 1970-01-01 00:00:00 +0000
3325+++ tests/apicheck/apicheck.cpp 2015-05-20 11:32:53 +0000
3326@@ -0,0 +1,1106 @@
3327+/*
3328+ * Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
3329+ * Copyright (C) 2015 Christian Dywan
3330+ *
3331+ * This program is free software; you can redistribute it and/or modify
3332+ * it under the terms of the GNU Lesser General Public License as published by
3333+ * the Free Software Foundation; version 3.
3334+ *
3335+ * This program is distributed in the hope that it will be useful,
3336+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3337+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3338+ * GNU Lesser General Public License for more details.
3339+ *
3340+ * You should have received a copy of the GNU Lesser General Public License
3341+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
3342+ */
3343+
3344+#include <QtQml/qqmlengine.h>
3345+#include <QtQml/private/qqmlmetatype_p.h>
3346+#include <QtQml/private/qqmlopenmetaobject_p.h>
3347+#include <QtQuick/private/qquickevents_p_p.h>
3348+#include <QtQuick/private/qquickpincharea_p.h>
3349+
3350+#include <QtGui/QGuiApplication>
3351+#include <QtCore/QLibraryInfo>
3352+#include <QtCore/QDir>
3353+#include <QtCore/QFileInfo>
3354+#include <QtCore/QSet>
3355+#include <QtCore/QStringList>
3356+#include <QtCore/QTimer>
3357+#include <QtCore/QMetaObject>
3358+#include <QtCore/QMetaProperty>
3359+#include <QtCore/private/qobject_p.h>
3360+#include <QtCore/private/qmetaobject_p.h>
3361+#include <QtQml/private/qqmldirparser_p.h>
3362+#include <QJSEngine>
3363+#include <QJsonDocument>
3364+#include <QJsonObject>
3365+#include <QJsonArray>
3366+#include <QLoggingCategory>
3367+
3368+#include <iostream>
3369+#include <algorithm>
3370+
3371+#ifdef Q_OS_UNIX
3372+#include <signal.h>
3373+#endif
3374+
3375+bool verbose = false;
3376+
3377+QString currentProperty;
3378+QString inObjectInstantiation;
3379+
3380+void collectReachableMetaObjects(const QMetaObject *meta, QSet<const QMetaObject *> *metas, bool extended = false)
3381+{
3382+ if (! meta || metas->contains(meta))
3383+ return;
3384+
3385+ // dynamic meta objects can break things badly
3386+ // but extended types are usually fine
3387+ const QMetaObjectPrivate *mop = reinterpret_cast<const QMetaObjectPrivate *>(meta->d.data);
3388+ if (extended || !(mop->flags & DynamicMetaObject))
3389+ metas->insert(meta);
3390+
3391+ collectReachableMetaObjects(meta->superClass(), metas);
3392+}
3393+
3394+void collectReachableMetaObjects(QObject *object, QSet<const QMetaObject *> *metas)
3395+{
3396+ if (! object)
3397+ return;
3398+
3399+ const QMetaObject *meta = object->metaObject();
3400+ collectReachableMetaObjects(meta, metas);
3401+
3402+ for (int index = 0; index < meta->propertyCount(); ++index) {
3403+ QMetaProperty prop = meta->property(index);
3404+ if (QQmlMetaType::isQObject(prop.userType())) {
3405+ currentProperty = QString("%1::%2").arg(meta->className(), prop.name());
3406+
3407+ // if the property was not initialized during construction,
3408+ // accessing a member of oo is going to cause a segmentation fault
3409+ QObject *oo = QQmlMetaType::toQObject(prop.read(object));
3410+ if (oo && !metas->contains(oo->metaObject()))
3411+ collectReachableMetaObjects(oo, metas);
3412+ currentProperty.clear();
3413+ }
3414+ }
3415+}
3416+
3417+void collectReachableMetaObjects(const QQmlType *ty, QSet<const QMetaObject *> *metas)
3418+{
3419+ collectReachableMetaObjects(ty->metaObject(), metas, ty->isExtendedType());
3420+ if (ty->attachedPropertiesType())
3421+ collectReachableMetaObjects(ty->attachedPropertiesType(), metas);
3422+}
3423+
3424+/* We want to add the MetaObject for 'Qt' to the list, this is a
3425+ simple way to access it.
3426+*/
3427+class FriendlyQObject: public QObject
3428+{
3429+public:
3430+ static const QMetaObject *qtMeta() { return &staticQtMetaObject; }
3431+};
3432+
3433+/* When we dump a QMetaObject, we want to list all the types it is exported as.
3434+ To do this, we need to find the QQmlTypes associated with this
3435+ QMetaObject.
3436+*/
3437+static QHash<QByteArray, QSet<const QQmlType *> > qmlTypesByCppName;
3438+
3439+// No different versioning possible for a composite type.
3440+static QMap<QString, const QQmlType * > qmlTypesByCompositeName;
3441+
3442+static QHash<QByteArray, QByteArray> cppToId;
3443+
3444+/* Takes a C++ type name, such as Qt::LayoutDirection or QString and
3445+ maps it to how it should appear in the description file.
3446+
3447+ These names need to be unique globally, so we don't change the C++ symbol's
3448+ name much. It is mostly used to for explicit translations such as
3449+ QString->string and translations for extended QML objects.
3450+*/
3451+QByteArray convertToId(const QString &cppName)
3452+{
3453+ QString qmlType(cppName);
3454+ if (qmlType.contains("::")) {
3455+ QStringList parts(qmlType.split("::"));
3456+ return qPrintable(convertToId(parts[0]) + "." + convertToId(parts[1]));
3457+ }
3458+
3459+ QList<const QQmlType*>types(qmlTypesByCppName[qPrintable(cppName)].toList());
3460+ std::sort(types.begin(), types.end());
3461+ // Strip internal _QMLTYPE_xy suffix
3462+ qmlType = qmlType.split("_")[0];
3463+ if (!types.isEmpty())
3464+ qmlType = QString(types[0]->qmlTypeName()).split("/")[1].toUtf8();
3465+ else
3466+ qmlType = cppToId.value(qPrintable(qmlType), qPrintable(cppName));
3467+ // Strip internal _QMLTYPE_xy suffix
3468+ qmlType = qmlType.split("_")[0];
3469+ return qPrintable(qmlType.replace("QTestRootObject", "QtObject"));
3470+}
3471+
3472+QByteArray convertToId(const QMetaObject *mo)
3473+{
3474+ QByteArray className(mo->className());
3475+ if (!className.isEmpty())
3476+ return convertToId(className);
3477+
3478+ // likely a metaobject generated for an extended qml object
3479+ if (mo->superClass()) {
3480+ className = convertToId(mo->superClass());
3481+ className.append("_extended");
3482+ return className;
3483+ }
3484+
3485+ static QHash<const QMetaObject *, QByteArray> generatedNames;
3486+ className = generatedNames.value(mo);
3487+ if (!className.isEmpty())
3488+ return className;
3489+
3490+ std::cerr << "Found a QMetaObject without a className, generating a random name" << std::endl;
3491+ className = QByteArray("error-unknown-name-");
3492+ className.append(QByteArray::number(generatedNames.size()));
3493+ generatedNames.insert(mo, className);
3494+ return className;
3495+}
3496+
3497+// Collect all metaobjects for types registered with qmlRegisterType() without parameters
3498+void collectReachableMetaObjectsWithoutQmlName( QSet<const QMetaObject *>& metas ) {
3499+ Q_FOREACH (const QQmlType *ty, QQmlMetaType::qmlAllTypes()) {
3500+ if ( ! metas.contains(ty->metaObject()) ) {
3501+ if (!ty->isComposite()) {
3502+ collectReachableMetaObjects(ty, &metas);
3503+ } else {
3504+ qmlTypesByCompositeName[ty->elementName()] = ty;
3505+ }
3506+ }
3507+ }
3508+}
3509+
3510+QSet<const QMetaObject *> collectReachableMetaObjects(QQmlEngine *engine,
3511+ QSet<const QMetaObject *> &noncreatables,
3512+ QSet<const QMetaObject *> &singletons,
3513+ const QList<QQmlType *> &skip = QList<QQmlType *>())
3514+{
3515+ QSet<const QMetaObject *> metas;
3516+ metas.insert(FriendlyQObject::qtMeta());
3517+
3518+ QHash<QByteArray, QSet<QByteArray> > extensions;
3519+ Q_FOREACH (const QQmlType *ty, QQmlMetaType::qmlTypes()) {
3520+ if (!ty->isCreatable())
3521+ noncreatables.insert(ty->metaObject());
3522+ if (ty->isSingleton())
3523+ singletons.insert(ty->metaObject());
3524+ if (!ty->isComposite()) {
3525+ qmlTypesByCppName[ty->metaObject()->className()].insert(ty);
3526+ if (ty->isExtendedType())
3527+ extensions[ty->typeName()].insert(ty->metaObject()->className());
3528+ collectReachableMetaObjects(ty, &metas);
3529+ } else {
3530+ qmlTypesByCompositeName[ty->elementName()] = ty;
3531+ }
3532+ }
3533+
3534+ // Adjust exports of the base object if there are extensions.
3535+ // For each export of a base object there can be a single extension object overriding it.
3536+ // Example: QDeclarativeGraphicsWidget overrides the QtQuick/QGraphicsWidget export
3537+ // of QGraphicsWidget.
3538+ Q_FOREACH (const QByteArray &baseCpp, extensions.keys()) {
3539+ QSet<const QQmlType *> baseExports = qmlTypesByCppName.value(baseCpp);
3540+
3541+ const QSet<QByteArray> extensionCppNames = extensions.value(baseCpp);
3542+ Q_FOREACH (const QByteArray &extensionCppName, extensionCppNames) {
3543+ const QSet<const QQmlType *> extensionExports = qmlTypesByCppName.value(extensionCppName);
3544+
3545+ // remove extension exports from base imports
3546+ // unfortunately the QQmlType pointers don't match, so can't use QSet::subtract
3547+ QSet<const QQmlType *> newBaseExports;
3548+ Q_FOREACH (const QQmlType *baseExport, baseExports) {
3549+ bool match = false;
3550+ Q_FOREACH (const QQmlType *extensionExport, extensionExports) {
3551+ if (baseExport->qmlTypeName() == extensionExport->qmlTypeName()
3552+ && baseExport->majorVersion() == extensionExport->majorVersion()
3553+ && baseExport->minorVersion() == extensionExport->minorVersion()) {
3554+ match = true;
3555+ break;
3556+ }
3557+ }
3558+ if (!match)
3559+ newBaseExports.insert(baseExport);
3560+ }
3561+ baseExports = newBaseExports;
3562+ }
3563+ qmlTypesByCppName[baseCpp] = baseExports;
3564+ }
3565+
3566+ // find even more QMetaObjects by instantiating QML types and running
3567+ // over the instances
3568+ Q_FOREACH (QQmlType *ty, QQmlMetaType::qmlTypes()) {
3569+ if (skip.contains(ty))
3570+ continue;
3571+ if (ty->isExtendedType())
3572+ continue;
3573+ if (!ty->isCreatable())
3574+ continue;
3575+ if (ty->typeName() == "QQmlComponent")
3576+ continue;
3577+
3578+ QString tyName = ty->qmlTypeName();
3579+ tyName = tyName.mid(tyName.lastIndexOf(QLatin1Char('/')) + 1);
3580+ if (tyName.isEmpty())
3581+ continue;
3582+
3583+ inObjectInstantiation = tyName;
3584+ QObject *object = 0;
3585+
3586+ if (ty->isSingleton()) {
3587+ QQmlType::SingletonInstanceInfo *siinfo = ty->singletonInstanceInfo();
3588+ if (!siinfo) {
3589+ std::cerr << "Internal error, " << qPrintable(tyName)
3590+ << "(" << qPrintable( QString::fromUtf8(ty->typeName()) ) << ")"
3591+ << " is singleton, but has no singletonInstanceInfo" << std::endl;
3592+ continue;
3593+ }
3594+ if (siinfo->qobjectCallback) {
3595+ siinfo->init(engine);
3596+ collectReachableMetaObjects(object, &metas);
3597+ object = siinfo->qobjectApi(engine);
3598+ } else {
3599+ inObjectInstantiation.clear();
3600+ continue; // we don't handle QJSValue singleton types.
3601+ }
3602+ } else {
3603+ object = ty->create();
3604+ }
3605+
3606+ inObjectInstantiation.clear();
3607+
3608+ if (object) {
3609+ collectReachableMetaObjects(object, &metas);
3610+ object->deleteLater();
3611+ } else {
3612+ std::cerr << "Could not create" << qPrintable(tyName) << std::endl;
3613+ }
3614+ }
3615+
3616+ collectReachableMetaObjectsWithoutQmlName(metas);
3617+
3618+ return metas;
3619+}
3620+
3621+class KnownAttributes {
3622+ QHash<QByteArray, int> m_properties;
3623+ QHash<QByteArray, QHash<int, int> > m_methods;
3624+public:
3625+ bool knownMethod(const QByteArray &name, int nArgs, int revision)
3626+ {
3627+ if (m_methods.contains(name)) {
3628+ QHash<int, int> overloads = m_methods.value(name);
3629+ if (overloads.contains(nArgs) && overloads.value(nArgs) <= revision)
3630+ return true;
3631+ }
3632+ m_methods[name][nArgs] = revision;
3633+ return false;
3634+ }
3635+
3636+ bool knownProperty(const QByteArray &name, int revision)
3637+ {
3638+ if (m_properties.contains(name) && m_properties.value(name) <= revision)
3639+ return true;
3640+ m_properties[name] = revision;
3641+ return false;
3642+ }
3643+};
3644+
3645+class Dumper
3646+{
3647+ QJsonObject* json;
3648+ QString relocatableModuleUri;
3649+ QString importVersion;
3650+
3651+public:
3652+ Dumper(QJsonObject* json): json(json) {}
3653+
3654+ void setRelocatableModuleUri(const QString &uri)
3655+ {
3656+ relocatableModuleUri = uri;
3657+ }
3658+
3659+ void setImportVersion(const QString &version)
3660+ {
3661+ importVersion = version;
3662+ }
3663+
3664+ const QString getExportString(QString qmlTyName, int majorVersion, int minorVersion)
3665+ {
3666+ if (qmlTyName.startsWith(relocatableModuleUri + QLatin1Char('/'))) {
3667+ qmlTyName.remove(0, relocatableModuleUri.size() + 1);
3668+ }
3669+ if (qmlTyName.startsWith("./")) {
3670+ qmlTyName.remove(0, 2);
3671+ }
3672+ if (qmlTyName.startsWith("/")) {
3673+ qmlTyName.remove(0, 1);
3674+ }
3675+ // Work-around for version -1, -1
3676+ if (majorVersion == -1)
3677+ return QString("%1 %2").arg(qmlTyName).arg(importVersion);
3678+ return QString("%1 %2.%3").arg(qmlTyName).arg(majorVersion).arg(minorVersion);
3679+ }
3680+
3681+ void writeMetaContent(QJsonObject* object, const QMetaObject *meta, KnownAttributes *knownAttributes = 0)
3682+ {
3683+ QSet<QString> implicitSignals;
3684+ for (int index = meta->propertyOffset(); index < meta->propertyCount(); ++index) {
3685+ const QMetaProperty &property = meta->property(index);
3686+ dump(object, property, knownAttributes);
3687+ if (knownAttributes)
3688+ knownAttributes->knownMethod(QByteArray(property.name()).append("Changed"),
3689+ 0, property.revision());
3690+ implicitSignals.insert(QString("%1Changed").arg(QString::fromUtf8(property.name())));
3691+ }
3692+
3693+ QJsonArray methods;
3694+ if (meta == &QObject::staticMetaObject) {
3695+ // for QObject, hide deleteLater() and onDestroyed
3696+ for (int index = meta->methodOffset(); index < meta->methodCount(); ++index) {
3697+ QMetaMethod method = meta->method(index);
3698+ QByteArray signature = method.methodSignature();
3699+ if (signature == QByteArrayLiteral("destroyed(QObject*)")
3700+ || signature == QByteArrayLiteral("destroyed()")
3701+ || signature == QByteArrayLiteral("deleteLater()"))
3702+ continue;
3703+ dump(&methods, method, implicitSignals, knownAttributes);
3704+ }
3705+
3706+ // and add toString(), destroy() and destroy(int)
3707+ if (!knownAttributes || !knownAttributes->knownMethod(QByteArray("toString"), 0, 0)) {
3708+ QJsonObject method;
3709+ method["type"] = "function";
3710+ method["name"] = "toString";
3711+ methods.append(method);
3712+ }
3713+ if (!knownAttributes || !knownAttributes->knownMethod(QByteArray("destroy"), 0, 0)) {
3714+ QJsonObject method;
3715+ method["type"] = "function";
3716+ method["name"] = "destroy";
3717+ methods.append(method);
3718+ }
3719+ if (!knownAttributes || !knownAttributes->knownMethod(QByteArray("destroy"), 1, 0)) {
3720+ QJsonObject method;
3721+ method["type"] = "function";
3722+ method["name"] = "destroy";
3723+ QJsonArray parameters;
3724+ QJsonObject parameter;
3725+ parameter["type"] = "int";
3726+ parameter["name"] = "delay";
3727+ method.insert("parameters", parameters);
3728+ methods.append(method);
3729+ }
3730+ } else {
3731+ for (int index = meta->methodOffset(); index < meta->methodCount(); ++index) {
3732+ // Omit "Changed" methods of properties
3733+ QByteArray methName(meta->method(index).name());
3734+ if (!methName.isEmpty() && methName.endsWith("Changed"))
3735+ continue;
3736+ dump(&methods, meta->method(index), implicitSignals, knownAttributes);
3737+ }
3738+ }
3739+ if (!methods.empty())
3740+ object->insert("methods", methods);
3741+ }
3742+
3743+ void dumpQMLComponent(QObject* qtobject, const QString& qmlTyName, const QString& version, const QString& filename, bool isSingleton, const QStringList& internalTypes)
3744+ {
3745+ const QMetaObject *mainMeta = qtobject->metaObject();
3746+ QJsonObject object;
3747+ QStringList exportStrings(QStringList() << QString("%1 %2").arg(qmlTyName).arg(version));
3748+ // Merge objects to get all exported versions of the same type
3749+ QString id(filename);
3750+ if (json->contains(id)) {
3751+ object = json->value(id).toObject();
3752+ QJsonArray exports(object["exports"].toArray());
3753+ Q_FOREACH(QJsonValue expor, exports) {
3754+ exportStrings.append(QString("%1").arg(expor.toString()));
3755+ }
3756+ }
3757+ exportStrings.removeDuplicates();
3758+ exportStrings.sort();
3759+ object.insert("exports", QJsonArray::fromStringList(exportStrings));
3760+ object.insert("prototype", mainMeta->superClass()->className());
3761+ object.insert("isComposite", true);
3762+ if (isSingleton) {
3763+ object.insert("isCreatable", false);
3764+ object.insert("isSingleton", true);
3765+ }
3766+
3767+ for (int index = mainMeta->classInfoCount() - 1 ; index >= 0 ; --index) {
3768+ QMetaClassInfo classInfo = mainMeta->classInfo(index);
3769+ if (QLatin1String(classInfo.name()) == QLatin1String("DefaultProperty")) {
3770+ object.insert("defaultProperty", classInfo.value());
3771+ break;
3772+ }
3773+ }
3774+
3775+ KnownAttributes knownAttributes;
3776+ // Strip internal _QMLTYPE_xy suffix
3777+ QString prototype(QString(mainMeta->superClass()->className()).split("_")[0]);
3778+ // Merge internal base class
3779+ if (internalTypes.contains(prototype))
3780+ writeMetaContent(&object, mainMeta->superClass(), &knownAttributes);
3781+ writeMetaContent(&object, mainMeta, &knownAttributes);
3782+
3783+ object["namespace"] = relocatableModuleUri;
3784+ json->insert(id, object);
3785+ }
3786+
3787+ void dump(const QMetaObject *meta, bool isUncreatable, bool isSingleton)
3788+ {
3789+ QStringList exportStrings;
3790+ QSet<const QQmlType *> qmlTypes = qmlTypesByCppName.value(meta->className());
3791+ if (!qmlTypes.isEmpty()) {
3792+ bool foreignNamespace = false;
3793+ QHash<QString, const QQmlType *> exports;
3794+
3795+ Q_FOREACH (const QQmlType *qmlTy, qmlTypes) {
3796+ const QString exportString = getExportString(qmlTy->qmlTypeName(), qmlTy->majorVersion(), qmlTy->minorVersion());
3797+ if (exportString.contains("/"))
3798+ foreignNamespace = true;
3799+ exports.insert( exportString, qmlTy);
3800+ }
3801+
3802+ // Ignore classes from different namespaces
3803+ if (foreignNamespace)
3804+ return;
3805+
3806+ // ensure exports are sorted and don't change order when the plugin is dumped again
3807+ exportStrings = exports.keys();
3808+ std::sort(exportStrings.begin(), exportStrings.end());
3809+ }
3810+
3811+ QJsonObject object;
3812+
3813+ for (int index = meta->classInfoCount() - 1 ; index >= 0 ; --index) {
3814+ QMetaClassInfo classInfo = meta->classInfo(index);
3815+ if (QLatin1String(classInfo.name()) == QLatin1String("DefaultProperty")) {
3816+ object.insert("defaultProperty", classInfo.value());
3817+ break;
3818+ }
3819+ }
3820+
3821+ if (meta->superClass())
3822+ object.insert("prototype", meta->superClass()->className());
3823+
3824+ if (!qmlTypes.isEmpty()) {
3825+ object.insert("exports", QJsonArray::fromStringList(exportStrings));
3826+ object["namespace"] = qmlTypes.toList()[0]->qmlTypeName().split("/")[0];
3827+
3828+ if (isUncreatable)
3829+ object.insert("isCreatable", false);
3830+ if (isSingleton)
3831+ object.insert("isSingleton", true);
3832+
3833+ if (const QMetaObject *attachedType = (*qmlTypes.begin())->attachedPropertiesType()) {
3834+ // Can happen when a type is registered that returns itself as attachedPropertiesType()
3835+ // because there is no creatable type to attach to.
3836+ if (attachedType != meta) {
3837+ object.insert("attachedType", attachedType->className());
3838+ }
3839+ }
3840+ }
3841+
3842+ for (int index = meta->enumeratorOffset(); index < meta->enumeratorCount(); ++index)
3843+ dump(meta->enumerator(index));
3844+
3845+ writeMetaContent(&object, meta);
3846+
3847+ QString id(meta->className());
3848+ // FIXME: Work-around to omit Qt types unintentionally included
3849+ if (convertToId(meta).startsWith("Q")) {
3850+ return;
3851+ }
3852+
3853+ json->insert(id, object);
3854+ }
3855+
3856+private:
3857+ /* Removes pointer and list annotations from a type name, returning
3858+ what was removed in isList and isPointer
3859+ */
3860+ static void removePointerAndList(QByteArray *typeName, bool *isList, bool *isPointer)
3861+ {
3862+ static QByteArray declListPrefix = "QQmlListProperty<";
3863+
3864+ if (typeName->endsWith('*')) {
3865+ *isPointer = true;
3866+ typeName->truncate(typeName->length() - 1);
3867+ removePointerAndList(typeName, isList, isPointer);
3868+ } else if (typeName->startsWith(declListPrefix)) {
3869+ *isList = true;
3870+ typeName->truncate(typeName->length() - 1); // get rid of the suffix '>'
3871+ *typeName = typeName->mid(declListPrefix.size());
3872+ removePointerAndList(typeName, isList, isPointer);
3873+ }
3874+ }
3875+
3876+ void writeTypeProperties(QJsonObject* object, QByteArray typeName, bool isWritable)
3877+ {
3878+ bool isList = false, isPointer = false;
3879+ removePointerAndList(&typeName, &isList, &isPointer);
3880+
3881+ object->insert("type", QString(typeName));
3882+
3883+ if (isList)
3884+ object->insert("isList", true);
3885+ if (!isWritable)
3886+ object->insert("isReadonly", true);
3887+ if (isPointer)
3888+ object->insert("isPointer", true);
3889+ }
3890+
3891+ void dump(QJsonObject* object, const QMetaProperty &prop, KnownAttributes *knownAttributes = 0)
3892+ {
3893+ int revision = prop.revision();
3894+ QByteArray propName = prop.name();
3895+ if (knownAttributes && knownAttributes->knownProperty(propName, revision))
3896+ return;
3897+ // Two leading underscores: internal API
3898+ if (QString(propName).startsWith("__"))
3899+ return;
3900+
3901+ QJsonObject property;
3902+ if (revision)
3903+ property["revision"] = QString::number(revision);
3904+ writeTypeProperties(&property, prop.typeName(), prop.isWritable());
3905+ object->insert(prop.name(), property);
3906+ }
3907+
3908+ void dump(QJsonArray* array, const QMetaMethod &meth, const QSet<QString> &implicitSignals,
3909+ KnownAttributes *knownAttributes = 0)
3910+ {
3911+ if (meth.methodType() == QMetaMethod::Signal) {
3912+ if (meth.access() != QMetaMethod::Public)
3913+ return; // nothing to do.
3914+ } else if (meth.access() != QMetaMethod::Public) {
3915+ return; // nothing to do.
3916+ }
3917+
3918+ QByteArray name = meth.name();
3919+ // Two leading underscores: internal API
3920+ if (name.startsWith("__"))
3921+ return;
3922+ const QString typeName = meth.typeName();
3923+
3924+ if (implicitSignals.contains(name)
3925+ && !meth.revision()
3926+ && meth.methodType() == QMetaMethod::Signal
3927+ && meth.parameterNames().isEmpty()
3928+ && typeName == QLatin1String("void")) {
3929+ // don't mention implicit signals
3930+ return;
3931+ }
3932+
3933+ int revision = meth.revision();
3934+ if (knownAttributes && knownAttributes->knownMethod(name, meth.parameterNames().size(), revision))
3935+ return;
3936+
3937+ QJsonObject method;
3938+ if (meth.methodType() == QMetaMethod::Signal)
3939+ method["type"] = "signal";
3940+ else
3941+ method["type"] = "function";
3942+
3943+ if (revision)
3944+ method["revision"] = QString::number(revision);
3945+
3946+ if (typeName != QLatin1String("void"))
3947+ method["returns"] = typeName;
3948+
3949+ QJsonArray parameters;
3950+ for (int i = 0; i < meth.parameterTypes().size(); ++i) {
3951+ QByteArray argName = meth.parameterNames().at(i);
3952+ QJsonObject parameter;
3953+ parameter["name"] = QString(argName);
3954+ writeTypeProperties(&parameter, meth.parameterTypes().at(i), true);
3955+ parameters.append(parameter);
3956+ }
3957+ if (!parameters.empty())
3958+ method.insert("parameters", parameters);
3959+ method.insert("name", QString(name));
3960+ array->append(method);
3961+ }
3962+
3963+ void dump(const QMetaEnum &e)
3964+ {
3965+ // FIXME: Work-around to omit Qt types unintentionally included
3966+ if (QString(e.scope()).startsWith("Q"))
3967+ return;
3968+
3969+ QJsonObject object;
3970+ object["prototype"] = e.isFlag() ? "Flag" : "Enum";
3971+ object["namespace"] = relocatableModuleUri;
3972+
3973+ QList<QPair<QString, QString> > namesValues;
3974+ for (int index = 0; index < e.keyCount(); ++index) {
3975+ object[e.key(index)] = QString::number(e.value(index));
3976+ }
3977+ json->insert(QString("%1::%2").arg(e.scope()).arg(e.name()), object);
3978+ }
3979+};
3980+
3981+enum ExitCode {
3982+ EXIT_INVALIDARGUMENTS = 1,
3983+ EXIT_SEGV = 2,
3984+ EXIT_IMPORTERROR = 3
3985+};
3986+
3987+#ifdef Q_OS_UNIX
3988+void sigSegvHandler(int) {
3989+ fprintf(stderr, "Error: SEGV\n");
3990+ if (!currentProperty.isEmpty())
3991+ fprintf(stderr, "While processing the property '%s', which probably has uninitialized data.\n", currentProperty.toLatin1().constData());
3992+ if (!inObjectInstantiation.isEmpty())
3993+ fprintf(stderr, "While instantiating the object '%s'.\n", inObjectInstantiation.toLatin1().constData());
3994+ exit(EXIT_SEGV);
3995+}
3996+#endif
3997+
3998+void printUsage(const QString &appName)
3999+{
4000+ std::cerr << qPrintable(QString(
4001+ "Usage: %1 [-v[v]] [-qml] [-json] IMPORT_URI [...IMPORT_URI]\n"
4002+ "\n"
4003+ "Generate an API description file of one or multiple components.\n"
4004+ "Example: %1 Ubuntu.Components\n"
4005+ " %1 --json Ubuntu.DownloadManager\n"
4006+ "\n"
4007+ "The following rules apply for inclusion of public API:\n"
4008+ " - Types not declared as internal in qmldir\n"
4009+ " - C++ types exported from a plugin\n"
4010+ " - Properties and functions not prefixed with __ (two underscores)\n"
4011+ " - Members of internal base classes become part of public components\n"
4012+ "").arg(
4013+ appName)) << std::endl;
4014+}
4015+
4016+inline std::wostream &operator<<(std::wostream &str, const QString &s)
4017+{
4018+ str << s.toStdWString();
4019+ return str;
4020+}
4021+
4022+void printDebugMessage(QtMsgType, const QMessageLogContext &, const QString &msg)
4023+{
4024+ std::wcerr << msg << std::endl;
4025+ // In case of QtFatalMsg the calling code will abort() when appropriate.
4026+}
4027+
4028+static QObject *s_testRootObject = 0;
4029+static QObject *testRootObject(QQmlEngine *engine, QJSEngine *jsEngine)
4030+{
4031+ Q_UNUSED(jsEngine);
4032+ if (!s_testRootObject) {
4033+ s_testRootObject = new QObject(engine);
4034+ }
4035+ return s_testRootObject;
4036+}
4037+
4038+int main(int argc, char *argv[])
4039+{
4040+ // The default message handler might not print to console on some systems. Enforce this.
4041+ qInstallMessageHandler(printDebugMessage);
4042+#ifdef Q_OS_UNIX
4043+ // qmldump may crash, but we don't want any crash handlers to pop up
4044+ // therefore we intercept the segfault and just exit() ourselves
4045+ struct sigaction sigAction;
4046+
4047+ sigemptyset(&sigAction.sa_mask);
4048+ sigAction.sa_handler = &sigSegvHandler;
4049+ sigAction.sa_flags = 0;
4050+
4051+ sigaction(SIGSEGV, &sigAction, 0);
4052+#endif
4053+
4054+ // don't require a window manager even though we're a QGuiApplication
4055+ qputenv("QT_QPA_PLATFORM", QByteArrayLiteral("minimal"));
4056+
4057+ QGuiApplication app(argc, argv);
4058+ QStringList args = app.arguments();
4059+ args.removeFirst();
4060+ const QString appName = QFileInfo(app.applicationFilePath()).baseName();
4061+ if (args.size() < 1) {
4062+ printUsage(appName);
4063+ return EXIT_INVALIDARGUMENTS;
4064+ }
4065+
4066+ QLoggingCategory::setFilterRules(QStringLiteral("*=false"));
4067+ QStringList modules;
4068+ bool relocatable = true;
4069+ bool output_json = false, output_qml = false;
4070+ Q_FOREACH (const QString &arg, args) {
4071+ if (!arg.startsWith(QLatin1Char('-'))) {
4072+ modules << arg;
4073+ continue;
4074+ }
4075+
4076+ if (arg == QLatin1String("--json") || arg == QLatin1String("-json")) {
4077+ output_json = true;
4078+ } else if (arg == QLatin1String("--qml") || arg == QLatin1String("-qml")) {
4079+ output_qml = true;
4080+ } else if (arg == QLatin1String("-v")) {
4081+ verbose = true;
4082+ } else if (arg == QLatin1String("-vv")) {
4083+ verbose = true;
4084+ QLoggingCategory::setFilterRules("*");
4085+ } else {
4086+ std::cerr << "Invalid argument: " << qPrintable(arg) << std::endl;
4087+ return EXIT_INVALIDARGUMENTS;
4088+ }
4089+ }
4090+ if (modules.isEmpty()) {
4091+ std::cerr << "No import URI(s) provided" << std::endl;
4092+ printUsage(appName);
4093+ return EXIT_INVALIDARGUMENTS;
4094+ }
4095+
4096+ // By default output JSON
4097+ if (!output_json and !output_qml)
4098+ output_qml = true;
4099+
4100+ // Allow import of Qt.Test
4101+ qmlRegisterSingletonType<QObject>("Qt.test.qtestroot", 1, 0, "QTestRootObject", testRootObject);
4102+
4103+ QQmlEngine engine;
4104+ QObject::connect(&engine, SIGNAL(quit()), QCoreApplication::instance(), SLOT(quit()));
4105+
4106+ // load the QtQuick 2 plugin
4107+ {
4108+ QByteArray code("import QtQuick 2.0\nQtObject {}");
4109+ QQmlComponent c(&engine);
4110+ c.setData(code, QString("loadqtquick2.qml"));
4111+ c.create();
4112+ if (!c.errors().isEmpty()) {
4113+ std::cerr << "Failed to load QtQuick2 built-in" << std::endl;
4114+ Q_FOREACH (const QQmlError &error, c.errors())
4115+ std::cerr << qPrintable( error.toString() ) << std::endl;
4116+ return EXIT_IMPORTERROR;
4117+ }
4118+ }
4119+
4120+ // find all QMetaObjects reachable from the builtin module
4121+ QSet<const QMetaObject *> uncreatableMetas;
4122+ QSet<const QMetaObject *> singletonMetas;
4123+ QSet<const QMetaObject *> defaultReachable = collectReachableMetaObjects(&engine, uncreatableMetas, singletonMetas);
4124+ QList<QQmlType *> defaultTypes = QQmlMetaType::qmlTypes();
4125+
4126+ // add some otherwise unreachable QMetaObjects
4127+ defaultReachable.insert(&QQuickMouseEvent::staticMetaObject);
4128+ // QQuickKeyEvent, QQuickPinchEvent, QQuickDropEvent are not exported
4129+ QSet<QByteArray> defaultReachableNames;
4130+
4131+ // this will hold the meta objects we want to dump information of
4132+ QSet<const QMetaObject *> metas;
4133+
4134+ // setup static rewrites of type names
4135+ cppToId.insert("QString", "string");
4136+ cppToId.insert("QUrl", "url");
4137+ cppToId.insert("QVariant", "var");
4138+ cppToId.insert("QVector2D", "vector2d");
4139+ cppToId.insert("QVector3D", "vector3d");
4140+ cppToId.insert("QVector4D", "vector4d");
4141+ cppToId.insert("QPoint", "Qt.point");
4142+ cppToId.insert("QColor", "color");
4143+ cppToId.insert("QQmlEasingValueType::Type", "Type");
4144+
4145+ // find a valid QtQuick import
4146+ QByteArray importCode;
4147+ QQmlType *qtObjectType = QQmlMetaType::qmlType(&QObject::staticMetaObject);
4148+ if (!qtObjectType) {
4149+ std::cerr << "Could not find QtObject type" << std::endl;
4150+ importCode = QByteArray("import QtQuick 2.0\n");
4151+ } else {
4152+ QString module = qtObjectType->qmlTypeName();
4153+ module = module.mid(0, module.lastIndexOf(QLatin1Char('/')));
4154+ importCode = QString("import %1 %2.%3\n").arg(module,
4155+ QString::number(qtObjectType->majorVersion()),
4156+ QString::number(qtObjectType->minorVersion())).toUtf8();
4157+ }
4158+
4159+ QStringList internalTypes;
4160+ // create an object that will be the API description
4161+ QJsonObject json;
4162+
4163+ Q_FOREACH (const QString& pluginImportUri, modules) {
4164+ // FIXME: Bacon2D.1.0 → Bacon2D 1.0
4165+ QString pluginImportVersion;
4166+
4167+ QStringList pathList((QString(getenv("QML2_IMPORT_PATH"))
4168+ + ":" + QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath))
4169+ .split(':', QString::SkipEmptyParts));
4170+
4171+ QFile qmlDirFile;
4172+ QString pluginModulePath;
4173+ Q_FOREACH(const QString& path, pathList) {
4174+ pluginModulePath = path + "/" + QString(pluginImportUri).replace(".", "/");
4175+ qmlDirFile.setFileName(pluginModulePath + "/qmldir");
4176+ if (qmlDirFile.exists() && qmlDirFile.open(QIODevice::ReadOnly)) {
4177+ engine.addImportPath(pluginModulePath);
4178+ break;
4179+ }
4180+ }
4181+ if (verbose)
4182+ std::cout << "Reading " << qPrintable(qmlDirFile.fileName()) << std::endl;
4183+ if (!qmlDirFile.isOpen()) {
4184+ std::cerr << "Failed to read " << qPrintable(qmlDirFile.fileName()) << std::endl;
4185+ return EXIT_IMPORTERROR;
4186+ }
4187+
4188+ QQmlDirParser p;
4189+ p.parse(qmlDirFile.readAll());
4190+ if (p.hasError()) {
4191+ std::cerr << "Failed to read " << qPrintable(qmlDirFile.fileName()) << std::endl;
4192+ Q_FOREACH (const QQmlError &error, p.errors(qmlDirFile.fileName()))
4193+ std::cerr << qPrintable( error.toString() ) << std::endl;
4194+ return EXIT_IMPORTERROR;
4195+ }
4196+
4197+ // find all QMetaObjects reachable when the specified module is imported
4198+ QStringList importVersions;
4199+ if (pluginImportVersion.isEmpty()) {
4200+ // Collect all the available versioned imports
4201+ int highestMajor = 0, highestMinor = 1;
4202+ Q_FOREACH(QQmlDirParser::Component c, p.components()) {
4203+ // pluginImportVersion can be empty, pick latest
4204+ if (c.majorVersion > highestMajor) {
4205+ highestMajor = c.majorVersion;
4206+ highestMinor = c.minorVersion;
4207+ } else if (c.majorVersion == highestMajor && c.minorVersion > highestMinor) {
4208+ highestMinor = c.minorVersion;
4209+ }
4210+
4211+ // Work-around for version -1, -1
4212+ if (c.majorVersion == -1)
4213+ continue;
4214+ importVersions << QString("%1.%2").arg(c.majorVersion).arg(c.minorVersion);
4215+ }
4216+ pluginImportVersion = QString("%1.%2").arg(highestMajor).arg(highestMinor);
4217+ }
4218+ importVersions << pluginImportVersion;
4219+ importVersions.removeDuplicates();
4220+
4221+ // Create a component with all QML types to add them to the type system
4222+ QByteArray code = importCode;
4223+ Q_FOREACH(const QString& version, importVersions) {
4224+ QString pluginAlias(QString("%1.%2").arg(pluginImportUri).arg(version).replace(".", "_"));
4225+ code += QString("import %1 %2 as %3\n").arg(pluginImportUri).arg(version).arg(pluginAlias);
4226+ }
4227+ code += "Item {\n";
4228+
4229+ QStringList exportedTypes;
4230+ Q_FOREACH(QQmlDirParser::Component c, p.components()) {
4231+ // Map filename-based PageHeadConfiguration11 to PageHeadConfiguration
4232+ QString filename(QFileInfo(c.fileName).baseName());
4233+ cppToId.insert(qPrintable(filename), qPrintable(c.typeName));
4234+
4235+ if (c.internal) {
4236+ internalTypes.append(c.typeName);
4237+ continue;
4238+ }
4239+ exportedTypes.append(QFileInfo(c.fileName).fileName());
4240+ QString version(QString("%1.%2").arg(c.majorVersion).arg(c.minorVersion));
4241+ }
4242+
4243+ code += "}";
4244+ if (verbose)
4245+ std::cerr << "Importing QML components:" << std::endl << qPrintable(code) << std::endl;
4246+
4247+ QQmlComponent c(&engine);
4248+ c.setData(code, QUrl::fromLocalFile(qmlDirFile.fileName()));
4249+ std::cerr << "Creating QML component for " << qPrintable(pluginImportUri) << std::endl;
4250+ c.create();
4251+ if (!c.errors().isEmpty()) {
4252+ Q_FOREACH (const QQmlError &error, c.errors()) {
4253+ // Despite the error we get all type information we need from singletons
4254+ if (error.description().contains(QRegExp("(Composite Singleton Type .+|Element) is not creatable")))
4255+ continue;
4256+ std::cerr << "Failed to load " << qPrintable(pluginImportUri) << std::endl;
4257+ std::cerr << qPrintable(code) << std::endl;
4258+ std::cerr << qPrintable( error.toString() ) << std::endl;
4259+ return EXIT_IMPORTERROR;
4260+ }
4261+ }
4262+
4263+ QSet<const QMetaObject *> candidates = collectReachableMetaObjects(&engine, uncreatableMetas, singletonMetas, defaultTypes);
4264+ candidates.subtract(defaultReachable);
4265+
4266+ // Also eliminate meta objects with the same classname.
4267+ // This is required because extended objects seem not to share
4268+ // a single meta object instance.
4269+ Q_FOREACH (const QMetaObject *mo, defaultReachable)
4270+ defaultReachableNames.insert(QByteArray(mo->className()));
4271+ Q_FOREACH (const QMetaObject *mo, candidates) {
4272+ if (!defaultReachableNames.contains(mo->className()))
4273+ metas.insert(mo);
4274+ }
4275+
4276+ QMap<QString, QString> scripts;
4277+ Q_FOREACH(QQmlDirParser::Script s, p.scripts()) {
4278+ QFile sf(pluginModulePath + "/" + s.fileName);
4279+ if (!sf.open(QIODevice::ReadOnly)) {
4280+ std::cerr << "Failed to read " << qPrintable(sf.fileName()) << std::endl;
4281+ return EXIT_IMPORTERROR;
4282+ }
4283+ scripts.insertMulti(s.nameSpace, QString("%1 %2.%3").arg(s.nameSpace).arg(s.majorVersion).arg(s.minorVersion));
4284+ }
4285+
4286+ Q_FOREACH(QString nameSpace, scripts.uniqueKeys()) {
4287+ QJsonObject script;
4288+ script["type"] = "script";
4289+ QJsonArray exports(QJsonArray::fromStringList(scripts.values(nameSpace)));
4290+ script["exports"] = exports;
4291+ script["namespace"] = pluginImportUri;
4292+ json[nameSpace] = script;
4293+ }
4294+
4295+ // put the metaobjects into a map so they are always dumped in the same order
4296+ QMap<QString, const QMetaObject *> nameToMeta;
4297+ Q_FOREACH (const QMetaObject *meta, metas)
4298+ nameToMeta.insertMulti(convertToId(meta), meta);
4299+
4300+ Dumper dumper(&json);
4301+ if (relocatable)
4302+ dumper.setRelocatableModuleUri(pluginImportUri);
4303+ dumper.setImportVersion(pluginImportVersion);
4304+ Q_FOREACH (const QMetaObject *meta, nameToMeta) {
4305+ dumper.dump(meta, uncreatableMetas.contains(meta), singletonMetas.contains(meta));
4306+ }
4307+ Q_FOREACH(QQmlDirParser::Component c, p.components()) {
4308+ if (c.internal)
4309+ continue;
4310+ QString version(QString("%1.%2").arg(c.majorVersion).arg(c.minorVersion));
4311+ if (c.majorVersion == -1)
4312+ version = pluginImportVersion;
4313+ QQmlComponent e(&engine, pluginModulePath + "/" + c.fileName);
4314+ QObject* qtobject(e.create());
4315+ if (!qtobject) {
4316+ std::cerr << "Failed to instantiate " << qPrintable(c.typeName) << " from " << qPrintable(e.url().toString()) << std::endl;
4317+ Q_FOREACH (const QQmlError &error, e.errors())
4318+ std::cerr << qPrintable(error.toString()) << std::endl;
4319+ exit(1);
4320+ }
4321+ dumper.dumpQMLComponent(qtobject, c.typeName, version, e.url().toString(), c.singleton, internalTypes);
4322+ }
4323+ }
4324+
4325+ if (output_json) {
4326+ // write JSON representation of the API
4327+ QJsonDocument jsonDoc(json);
4328+ std::cout << qPrintable(jsonDoc.toJson());
4329+ }
4330+
4331+ if (output_qml) {
4332+ // write QML representation of the API
4333+ QStringList keys(json.keys());
4334+
4335+ // Sort by exports
4336+ QMap<QString, QString>byExports;
4337+ Q_FOREACH(const QString& key, keys) {
4338+ QJsonValue value(json[key]);
4339+ if (value.isObject()) {
4340+ QJsonObject object(value.toObject());
4341+ QStringList exports;
4342+ Q_FOREACH (const QJsonValue& expor, object["exports"].toArray())
4343+ exports.append(expor.toString());
4344+ // Reverse exports: latest to oldest
4345+ for(int k = 0; k < (exports.size() / 2); k++)
4346+ exports.swap(k, exports.size() - (1 + k));
4347+ QStringList sortedExports;
4348+ if (!exports.isEmpty()) {
4349+ QString currentTypeName;
4350+ Q_FOREACH(QJsonValue expor, exports) {
4351+ QStringList nextType(expor.toString().split(" "));
4352+ if (nextType[0] != currentTypeName) {
4353+ currentTypeName = nextType[0];
4354+ sortedExports.append(currentTypeName);
4355+ }
4356+ sortedExports.append(nextType[1]);
4357+ }
4358+ } else
4359+ sortedExports.append(convertToId(key));
4360+ // Exports may not be unique across namespaces ie. Header
4361+ byExports.insertMulti(sortedExports.join(" "), key);
4362+ }
4363+ }
4364+
4365+ QMap<QString, QString>::const_iterator i = byExports.constBegin();
4366+ while (i != byExports.constEnd()) {
4367+ QString exports(i.key());
4368+ QString key(i.value());
4369+ QJsonValue value(json[key]);
4370+ if (value.isObject()) {
4371+ QJsonObject object(value.toObject());
4372+ QString signature(exports);
4373+ if (object.contains("namespace"))
4374+ signature = object.take("namespace").toString() + "." + signature;
4375+ if (object.contains("prototype"))
4376+ signature += ": " + convertToId(object["prototype"].toString());
4377+ if (object.contains("isSingleton"))
4378+ signature += " singleton";
4379+ signature += "\n";
4380+ Q_FOREACH(const QString& fieldName, object.keys()) {
4381+ if (fieldName == "exports" || fieldName == "prototype" || fieldName == "type")
4382+ continue;
4383+ if (fieldName == "methods") {
4384+ QJsonArray values(object[fieldName].toArray());
4385+ Q_FOREACH(const QJsonValue& value, values) {
4386+ QJsonObject valu(value.toObject());
4387+ signature += " ";
4388+ signature += valu["type"].toString() + " ";
4389+ if (valu.contains("returns"))
4390+ signature += convertToId(valu["returns"].toString()) + " ";
4391+ QStringList args;
4392+ if (valu.contains("parameters")) {
4393+ Q_FOREACH(const QJsonValue& parameterValue, valu["parameters"].toArray()) {
4394+ QJsonObject parameter(parameterValue.toObject());
4395+ args.append(convertToId(parameter["type"].toString()) + " " + parameter["name"].toString());
4396+ }
4397+ }
4398+ signature += valu["name"].toString() + "(" + args.join(", ") + ")\n";
4399+ }
4400+ continue;
4401+ }
4402+ QJsonObject field(object[fieldName].toObject());
4403+ if (!field.contains("type") && object["prototype"] != "Enum" && object["prototype"] != "Flag")
4404+ continue;
4405+ signature += " ";
4406+ if (object["prototype"] != "Enum" && object["prototype"] != "Flag") {
4407+ if (object["defaultProperty"] == fieldName)
4408+ signature += "default ";
4409+ if (field.contains("isReadonly"))
4410+ signature += "readonly ";
4411+ signature += "property ";
4412+ }
4413+ if (field.contains("type"))
4414+ signature += QString(convertToId(field["type"].toString())) + " ";
4415+ signature += fieldName;
4416+ signature += "\n";
4417+ }
4418+ std::cout << qPrintable(signature);
4419+ }
4420+ i++;
4421+ }
4422+ }
4423+
4424+ // workaround to avoid crashes on exit
4425+ QTimer timer;
4426+ timer.setSingleShot(true);
4427+ timer.setInterval(0);
4428+ QObject::connect(&timer, SIGNAL(timeout()), &app, SLOT(quit()));
4429+ timer.start();
4430+
4431+ return app.exec();
4432+}
4433
4434=== added file 'tests/apicheck/apicheck.pro'
4435--- tests/apicheck/apicheck.pro 1970-01-01 00:00:00 +0000
4436+++ tests/apicheck/apicheck.pro 2015-05-20 11:32:53 +0000
4437@@ -0,0 +1,12 @@
4438+TEMPLATE = app
4439+QT += qml quick qml-private
4440+# For setSharedOpenGLContext
4441+QT += core-private gui-private testlib quick-private
4442+CONFIG += no_keywords
4443+SOURCES += apicheck.cpp
4444+installPath = $$[QT_INSTALL_LIBS]/ubuntu-ui-toolkit
4445+apicheck.path = $$installPath
4446+apicheck.files = apicheck
4447+INSTALLS += apicheck
4448+
4449+check.commands += ../qmlapicheck.sh || exit 1;
4450
4451=== removed file 'tests/qmlapicheck.py'
4452--- tests/qmlapicheck.py 2014-10-10 09:37:48 +0000
4453+++ tests/qmlapicheck.py 1970-01-01 00:00:00 +0000
4454@@ -1,218 +0,0 @@
4455-#!/usr/bin/env python3
4456-# -*- coding: utf-8 -*-
4457-#
4458-# Copyright 2013 Canonical Ltd.
4459-#
4460-# This program is free software; you can redistribute it and/or modify
4461-# it under the terms of the GNU Lesser General Public License as published by
4462-# the Free Software Foundation; version 3.
4463-#
4464-# This program is distributed in the hope that it will be useful,
4465-# but WITHOUT ANY WARRANTY; without even the implied warranty of
4466-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4467-# GNU Lesser General Public License for more details.
4468-#
4469-# You should have received a copy of the GNU Lesser General Public License
4470-# along with this program. If not, see <http://www.gnu.org/licenses/>.
4471-#
4472-# Author: Christian Dywan <christian.dywan@canonical.com>
4473-
4474-import sys
4475-import fileinput
4476-import os
4477-
4478-if len(sys.argv) < 2 or '-h' in sys.argv or '--help' in sys.argv:
4479- basename = os.path.basename(sys.argv[0])
4480- sys.exit(
4481- 'Usage:\n env BUILTINS=foo,bar %s FILENAME [FILENAME2..N]\n\n'
4482- ' Generate a QML API file\n'
4483- 'Example:\n'
4484- ' env BUILTINS=QQuick,QQml,U1db:: '
4485- '%s modules/Ubuntu/Components/qmldir plugins.qmltypes'
4486- ' > components.api.new\n'
4487- '\n'
4488- ' It is recommended to pass qmldir files over a list of qml files\n'
4489- ' because then internal components are discarded and errors in that\n'
4490- ' list can be found.\n'
4491- ' For testing one can pass qml files also directly or serve them\n'
4492- ' via standard input.\n'
4493- ' The variable BUILTINS is a comma-separated list of prefixes for\n'
4494- ' API that appears in qmltypes files but not part of the same\n'
4495- ' package.\n'
4496- '\n'
4497- 'Use the following command to see changes in the API:\n'
4498- ' diff -Fqml -u components.api{,.new}\n' % (basename, basename))
4499-
4500-builtins = os.getenv('BUILTINS', '').split(',')
4501-inputfiles = []
4502-classes = {}
4503-for line in fileinput.input():
4504- if fileinput.filename()[-6:] == 'qmldir':
4505- if line == '\n' or line[:1] == '#':
4506- # Comments
4507- continue
4508- if line[:8] == 'internal':
4509- # Internal components are not part of public API
4510- continue
4511- pieces = line.strip().split(' ')
4512- # [singleton] Foo 1.0 Foo.qml
4513- if pieces[0] == 'singleton':
4514- pieces.pop(0)
4515- if pieces[0].islower():
4516- # Unknown keyword
4517- continue
4518- classname, version, filename = pieces
4519- if filename[-3:] == 'qml':
4520- # Filenames are relative to the qmldir
4521- folder = os.path.dirname(fileinput.filename())
4522- fullpath = folder + '/' + filename
4523- if fullpath not in inputfiles:
4524- inputfiles.append(fullpath)
4525- classes[fullpath] = [classname, version]
4526- else:
4527- versions = classes[fullpath]
4528- if classname not in versions:
4529- versions.append(classname)
4530- versions.append(version)
4531- else:
4532- inputfiles.append(fileinput.filename())
4533- fileinput.nextfile()
4534-
4535-
4536-# Sort filenames to maintain a consistent order
4537-# Get un/versioned files in the same order
4538-def skipversion(filename):
4539- for v in ['10', '11']:
4540- filename = filename.replace(v + '/', '')
4541- if filename[-8:] == 'qmltypes':
4542- filename = os.path.basename(filename)
4543- return filename
4544-inputfiles.sort(key=skipversion)
4545-
4546-hook = fileinput.hook_encoded('utf-8')
4547-for line in fileinput.input(inputfiles, openhook=hook):
4548- # New file
4549- if fileinput.isfirstline():
4550- in_block = 0
4551- in_comment = in_builtin_type = False
4552- block_meta = {}
4553- annotated_properties = {}
4554- if fileinput.filename()[-3:] == 'qml':
4555- filetype = 'qml'
4556- keywords = ['signal', 'property', 'function']
4557- elif fileinput.filename()[-8:] == 'qmltypes':
4558- filetype = 'qmltypes'
4559- keywords = ['Signal',
4560- 'Property',
4561- 'Method',
4562- 'prototype',
4563- 'exports']
4564- else:
4565- sys.exit('Unknown filetype %s' % fileinput.filename())
4566- if fileinput.filename() in classes:
4567- classname = ' '.join(classes[fileinput.filename()])
4568- else:
4569- classname = os.path.basename(fileinput.filename())
4570- print(classname)
4571-
4572- line = line.split('//')[0]
4573- # alias properties only define their type through qdoc comments
4574- if '\\qmlproperty' in line:
4575- words = line.strip().split(' ')
4576- name = words[2]
4577- # Strip namespace
4578- if '::' in name:
4579- name = name.split('::')[1]
4580- type = words[1]
4581- annotated_properties[name] = type
4582- elif '\\internal' in line:
4583- # internal without type always relates to the next declared property
4584- annotated_properties['internal'] = 'internal'
4585-
4586- if '/*' in line and '*/' not in line:
4587- in_comment = True
4588- continue
4589- if '*/' in line:
4590- in_comment = False
4591- line = line.split('*/')[1]
4592- if in_comment:
4593- continue
4594-
4595- if '{' in line and '}' in line:
4596- if filetype == 'qmltypes' and not in_builtin_type:
4597- print(' ' + line.strip())
4598- continue
4599-
4600- # End of function/ signal/ Item block
4601- if '}' in line and '{' not in line:
4602- in_block -= 1
4603- block_meta = {}
4604- if in_block == 1 and in_builtin_type:
4605- in_builtin_type = False
4606- continue
4607-
4608- # Only root "Item {" is inspected for QML, otherwise all children
4609- if in_block == 1 or filetype == 'qmltypes':
4610- # Left hand side specifies a keyword, a type and a variable name
4611- declaration = line.split(':', 1)[0]
4612- words = declaration.strip().split(' ')
4613- # Skip types with prefixes considered builtin
4614- if filetype == 'qmltypes' and words[0] == 'name':
4615- found_builtin_type = False
4616- for builtin in builtins:
4617- if '"' + builtin in line:
4618- found_builtin_type = True
4619- break
4620- if found_builtin_type:
4621- in_builtin_type = True
4622- continue
4623- if 'prototype' in block_meta:
4624- print(' ' + block_meta['prototype'].strip())
4625- print(' ' + line.strip())
4626- continue
4627-
4628- block_meta[words[0]] = line
4629- # Omit prototype if it comes before the name since we may skip it
4630- if 'name' not in block_meta and words[0] == 'prototype':
4631- continue
4632-
4633- # Don't consider the qml variable name as a keyword
4634- if filetype == 'qml':
4635- words.pop()
4636-
4637- if filetype == 'qmltypes' and in_block > 1:
4638- keywords.append('name')
4639- keywords.append('Parameter')
4640- for word in words:
4641- if word in keywords:
4642- if filetype == 'qml':
4643- separator = '{' if 'function' in declaration else ':'
4644- signature = declaration.split(separator, 1)[0].strip()
4645- if 'alias' in line:
4646- no_mods = signature
4647- for mod in ['readonly', 'default']:
4648- no_mods = no_mods.replace(mod, '')
4649- name = no_mods.strip().split(' ')[2]
4650- if 'internal' in annotated_properties:
4651- if name not in annotated_properties:
4652- annotated_properties[name] = 'internal'
4653- del annotated_properties['internal']
4654- if name not in annotated_properties:
4655- sys.exit(
4656- ' %s\nError: Missing \\qmlproperty for %s'
4657- % (signature, name))
4658- real_type = annotated_properties[name]
4659- signature = signature.replace('alias', real_type)
4660- elif filetype == 'qmltypes':
4661- signature = line.strip()
4662- if not in_builtin_type:
4663- print(' %s' % (signature))
4664- break
4665-
4666- # Start of function/ signal/ Item block
4667- if '{' in line and '}' not in line:
4668- in_block += 1
4669- block_meta = {}
4670- # The parent type can affect API
4671- if in_block == 1 and filetype == 'qml':
4672- print(line.split('{')[0].strip())
4673
4674=== modified file 'tests/qmlapicheck.sh'
4675--- tests/qmlapicheck.sh 2015-01-20 09:56:46 +0000
4676+++ tests/qmlapicheck.sh 2015-05-20 11:32:53 +0000
4677@@ -18,35 +18,34 @@
4678
4679 . `dirname $0`/../build_paths.inc
4680
4681+if [ ! -e $BUILD_DIR/modules/Ubuntu/Layouts/libUbuntuLayouts.so ]; then
4682+ echo You need to build UITK before you can dump QML API!
4683+ exit 1
4684+fi
4685+
4686 QML="modules/Ubuntu/*/qmldir modules/Ubuntu/Components/*/qmldir"
4687-CPP="Ubuntu.Components Ubuntu.Layouts Ubuntu.PerformanceMetrics Ubuntu.Test"
4688+CPP="Ubuntu.Components Ubuntu.Components.ListItems Ubuntu.Components.Popups Ubuntu.Components.Styles Ubuntu.Components.Themes Ubuntu.Layouts Ubuntu.PerformanceMetrics Ubuntu.Test"
4689
4690+ERRORS=0
4691 echo Dumping QML API of C++ components
4692-echo '' > $BUILD_DIR/plugins.qmltypes
4693-ERRORS=0
4694-for i in $CPP; do
4695+test -s $BUILD_DIR/components.api.new && rm $BUILD_DIR/components.api.new
4696 # Silence spam on stderr due to fonts
4697 # https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1256999
4698 # https://bugreports.qt-project.org/browse/QTBUG-36243
4699- env UBUNTU_UI_TOOLKIT_THEMES_PATH=$BUILD_DIR/modules ALARM_BACKEND=memory \
4700- qmlplugindump -noinstantiate $i 0.1 $BUILD_DIR/modules 1>> $BUILD_DIR/plugins.qmltypes
4701- test $? != 0 && ERRORS=1
4702-done
4703-test $ERRORS = 1 && echo Error: qmlplugindump failed && exit 1
4704-
4705-echo Running QML API check for $QML
4706-# Palette and UbuntuColors gets included in Qt > 5.2 qmlplugindump even though it's qml
4707-BUILTINS=QQuick,QQml,U1db::,Palette,UbuntuColors python3 tests/qmlapicheck.py $QML $BUILD_DIR/plugins.qmltypes > $BUILD_DIR/components.api.new
4708-test $? != 0 && echo Error: qmlapicheck.py failed && exit 1
4709-
4710-echo Verifying the diff between existing and generated API
4711-diff -Fqml -u components.api $BUILD_DIR/components.api.new
4712-test $? != 0 && ERRORS=1
4713+ env ALARM_BACKEND=memory QML2_IMPORT_PATH=$BUILD_DIR/modules \
4714+ $BUILD_DIR/tests/apicheck/apicheck \
4715+ --qml $CPP 1>> $BUILD_DIR/components.api.new &&
4716+ echo Verifying the diff between existing and generated API
4717+ test $? != 0 && echo Error: apicheck failed && ERRORS=1
4718+if [ "x$ERRORS" != "x1" ]; then
4719+ diff -F '[.0-9]' -u $SRC_DIR/components.api $BUILD_DIR/components.api.new
4720+ test $? != 0 && echo Error: Differences in API. Did you forget to update components.api? && ERRORS=1
4721+fi
4722
4723 if [ "x$ERRORS" != "x1" ]; then
4724 echo API is all fine.
4725 exit 0
4726 else
4727- echo API test failed with errors. Did you forget to update components.api?
4728+ echo API test failed with errors.
4729 exit 1
4730 fi
4731
4732=== modified file 'tests/tests.pro'
4733--- tests/tests.pro 2015-04-14 23:11:26 +0000
4734+++ tests/tests.pro 2015-05-20 11:32:53 +0000
4735@@ -6,8 +6,6 @@
4736
4737 SUBDIRS += launcher
4738
4739+SUBDIRS += apicheck
4740+
4741 INSTALLS += autopilot_module
4742-
4743-check.commands += cd ..;
4744-check.commands += tests/qmlapicheck.sh || exit 1;
4745-check.commands += cd tests

Subscribers

People subscribed via source and target branches