Qt-contributors-summit-2012-Qt-Quick-Components: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
=Qt Quick Components – Qt Contributor Summit 2012= | |||
==Participants== | |||
Leonardo, Nokia – working on qt-components since the beginning focusing on meego/symbian; what would we like to do for Qt5 components wise? We have alot of xp and would like to share it<br /> Jens, Nokia – main developer of the desktop components<br /> Frederik, Nokia – accessibility in <span class="caps">QML</span> and qt-components<br /> Shawn, Nokia<br /> Florian, Tim, Loïc, Gerry, Ubuntu/Canonical – working on components for Ubuntu<br /> Daker, INdT – working on theming for components and plasma components<br /> Arvid, <span class="caps">RIM</span> – solving the components problem in a quite different way; session tomorrow on Cascades<br /> Gabriel, Nokia – Meego components<br /> Thiago Lacerda, INdT<br /> Anselmo, INdT<br /> Luis, INdT | |||
==Notes== | |||
* people seek continuation from qwidgets | |||
* quality and completeness should meet what is in QWidget | |||
* should we try to have common components at all? what can be common? <span class="caps">API</span>s seem to be a common denominator | |||
* we cannot contrain everybody to a single <span class="caps">API</span> that covers everything. we need to let people have additional platform/OS specific components | |||
* should we have components exposed to C++? – <span class="caps">RIM</span> does it – to hide implementation details or for security – for official/recommended Qt5 we would like to only expose <span class="caps">QML</span> <span class="caps">API</span>s – some things are not possible to do without C++ because of some <span class="caps">API</span>s being private | |||
* ‘simple’ components (buttons, tabs, etc.) are easy to have common <span class="caps">API</span>s accross OSes and platforms; more complicated/custom components will be simply platform specific <span class="caps">API</span>s | |||
* need a tool to verify conformance/compliance of various implementations against common <span class="caps">API</span>s | |||
* desktop components solve 2 issues: – looking native – designing desktop oriented components <span class="caps">API</span>s | |||
* how do we do treeviews? lack of model | |||
* the delegate approach to styling is interesting | |||
* INdT’s target: desktop windows, mac, linux (<span class="caps">KDE</span>, <span class="caps">GNOME</span>) | |||
* idea: creating a component set (2 maybe: a touch one and desktop) with a new/unique/not necessarily super polished that would serve as a reference for platform developers and a central point for <span class="caps">API</span> development; need for designers to design something at least basic; INdT could contribute designer time | |||
* styling approaches? – delegate approach: every widget has a fixed <span class="caps">API</span> and logic but then the rendering is done via custom <span class="caps">QML</span> delegates; shortcomings: ? – INdT’s approach: description? – desktop components: description? reusing QStyle? supporting QStyle is painful; writing QStyles properly is difficult | |||
* <span class="caps">RIM</span> does not have a styling problem: they just implement their own thing | |||
* <span class="caps">QML</span> is a style language; no need for <span class="caps">CSS</span>? people think it would be nice to have <span class="caps">CSS</span> support because people know it; it can be a later addition | |||
* what would the development process look like? – qt quick desktop components: more ad hoc based on Qt – qt quick components: – using a tool for <span class="caps">API</span> conformance testing – <span class="caps">API</span> review sessions negotiating between platform stakeholders (symbian, meego) | |||
* minimalistic <span class="caps">API</span> in philosophy (<span class="caps">QML</span> is easy to extend) | |||
* multi selection list views would be useful | |||
==Actions== | |||
Main action for all:<br /> Implement a reference set of touch and desktop components that have their unique styling and serve as a single point of reference and home for common <span class="caps">API</span> development | |||
* Schedule styling discussion [DONE] | |||
* check copyright and licensing of components: <span class="caps">BSD</span>, for meego and desktop components copyright is Nokia [DONE] | |||
* Write summary of styling discussion & approach proposal with examples inspired from INdT’s approach and qt quick desktop components’ approach + reach out to Plasma people; Jens showed a wonderful experiment based on the desktop components that demonstrates the approach beautifully [DONE] | |||
* Try to make <span class="caps">API</span> conformance checking tool public [LEONARDO] | |||
* Create qt-components mailing on Qt project: http://lists.qt.io/mailman/listinfo/qt-components [DONE] | |||
* decide on a place to host the reference set of components; one repository with all the components (touch and desktop) and a smart directory structure [ALL] | |||
* refresh wiki page [[Qt Quick Components|http://wiki.qt.io/Qt_Quick_Components]] and see if and how to merge with [[QtDesktopComponents|http://wiki.qt.io/QtDesktopComponents]] → http://sketchpad.cc/B8MntLJEzp current state (unformatted) [GERRY & <span class="caps">DAKER</span> – IN <span class="caps">PROGRESS</span>] | |||
* Check if some designer time would be available for designing very very basic visuals for reference component set [INdT] | |||
* List common components that would be good to develop; maybe use the cross section of the most popular toolkits [GERRY, <span class="caps">TIM</span>, <span class="caps">FLORIAN</span>, IN <span class="caps">PROGRESS</span> <span class="caps">BELOW</span>] | |||
* Define and document publically <span class="caps">API</span> development process [DONE] | |||
* Create a table showing the correspondence between QWidgets and <span class="caps">QML</span> components – we will not replicate every single QWidget. [?] | |||
==List of common components== | |||
Platforms looked at:<br /> touch: jQuery Mobile, Cascades, Meego components, iOS (<span class="caps">UIK</span>it), Android<br /> desktop: Qt Desktop components, Plasma<br />https://docs.google.com/a/canonical.com/spreadsheet/ccc?key=0Ajl6r4psredKdERGSUl1WGR1WVBhTWlSUXVsbXEtWkE<br /> Please request write permissions if you like. | |||
===desktop and touch=== | |||
Button: jquerym, cascades, qt desktop, Meego, iOS, Plasma, Android<br /> Label: iOS, Meego, Plasma, cascades, jquerym (via html), qt desktop, Android<br /> Toolbar: iOS (UINavigationBar), Meego, jquerym, Plasma, cascades, qt desktop, Android (ActionBar)<br /> TabBar: iOS, Meego, Plasma, cascades (TabbedPane), Android (TabHost), qt desktop, jquerym (navbar)<br /> Checkbox/Switch: Meego, Plasma, Android, Cascades, qt desktop, jquerym (via html), iOS<br /> RadioButton: Meego, iOS (classname?), Plasma, Android, jquerym, qt desktop, cascades (RadioGroup)<br /> TextInput: qt desktop, jquerym, Plasma, Android, Meego, iOS, Cascades (TextField)<br /> Slider: qt desktop, Cascades, jquerym, Meego, Plasma, iOS, Android<br /> ProgressBar: qt desktop, Cascades (ProgressIndicator), Meego, Plasma, iOS, Android<br /> ScrollBar/ScrollArea: qt desktop, Plasma, iOS (ScrollView), Meego (<span class="caps">QML</span> Flickable, no scrollbar), Android<br /> Split buttons: Meego (ButtonRow/ButtonColumn), jquerym, Cascades (SegmentedControl?)<br /> Dialog: Meego, Plasma, Android, iOS (popover/AlertView), qt desktop, jquerym<br /> ComboBox: qt desktop, jquerym (select menu), Cascades (DropDown), Android (NumberPicker)<br /> List/ListItems/ListHeaders/Dividers [various types, requires deeper investigation]<br /> Grid/GridItems<br /> Layouts/Row/Columns<br /> SpinBox: qt desktop, Android<br /> ContextualMenu: qt desktop, Plasma, Android<br /> Systray/Indicators<br /> Date/TimePicker: jquerym, Cascades, Android, iOS | |||
===desktop specific=== | |||
TableView: qt desktop, Android<br /> TextArea: qt desktop, jquerym, Plasma, iOS<br /> Frame: qt desktop, Android<br /> MenuBar: qt desktop, <br /> TreeView: | |||
===touch specific=== | |||
PageStack: Meego, jquerym, Plasma, iOS<br /> Spinner: Cascades (ActivityIndicator), Meego, Android, Plasma (BusyIndicator), iOS | |||
==<span class="caps">API</span> Development Process Ideas== | |||
* process to happen on mailing list | |||
* when making <span class="caps">API</span> proposal/change always include: <span class="caps">API</span> definition and real world example (from a developer standpoint) | |||
* once decided upon an <span class="caps">API</span> proposal/change documentation has to be written right away | |||
* enforcing a timeline around <span class="caps">API</span> discussion: from start of <span class="caps">API</span> definition to decision on it: 1 week | |||
* making sure that at least one representant of each interested platform validates the <span class="caps">API</span> (if possible) | |||
* try to follow Qt naming convention if unsure | |||
* in case of unresolvable conflict of opinions, an appointed maintainer will have the last word | |||
Taken from http://sketchpad.cc/XKp1Bs7LEp |
Revision as of 14:04, 25 February 2015
Qt Quick Components – Qt Contributor Summit 2012
Participants
Leonardo, Nokia – working on qt-components since the beginning focusing on meego/symbian; what would we like to do for Qt5 components wise? We have alot of xp and would like to share it
Jens, Nokia – main developer of the desktop components
Frederik, Nokia – accessibility in QML and qt-components
Shawn, Nokia
Florian, Tim, Loïc, Gerry, Ubuntu/Canonical – working on components for Ubuntu
Daker, INdT – working on theming for components and plasma components
Arvid, RIM – solving the components problem in a quite different way; session tomorrow on Cascades
Gabriel, Nokia – Meego components
Thiago Lacerda, INdT
Anselmo, INdT
Luis, INdT
Notes
- people seek continuation from qwidgets
- quality and completeness should meet what is in QWidget
- should we try to have common components at all? what can be common? APIs seem to be a common denominator
- we cannot contrain everybody to a single API that covers everything. we need to let people have additional platform/OS specific components
- should we have components exposed to C++? – RIM does it – to hide implementation details or for security – for official/recommended Qt5 we would like to only expose QML APIs – some things are not possible to do without C++ because of some APIs being private
- ‘simple’ components (buttons, tabs, etc.) are easy to have common APIs accross OSes and platforms; more complicated/custom components will be simply platform specific APIs
- need a tool to verify conformance/compliance of various implementations against common APIs
- desktop components solve 2 issues: – looking native – designing desktop oriented components APIs
- how do we do treeviews? lack of model
- the delegate approach to styling is interesting
- INdT’s target: desktop windows, mac, linux (KDE, GNOME)
- idea: creating a component set (2 maybe: a touch one and desktop) with a new/unique/not necessarily super polished that would serve as a reference for platform developers and a central point for API development; need for designers to design something at least basic; INdT could contribute designer time
- styling approaches? – delegate approach: every widget has a fixed API and logic but then the rendering is done via custom QML delegates; shortcomings: ? – INdT’s approach: description? – desktop components: description? reusing QStyle? supporting QStyle is painful; writing QStyles properly is difficult
- RIM does not have a styling problem: they just implement their own thing
- QML is a style language; no need for CSS? people think it would be nice to have CSS support because people know it; it can be a later addition
- what would the development process look like? – qt quick desktop components: more ad hoc based on Qt – qt quick components: – using a tool for API conformance testing – API review sessions negotiating between platform stakeholders (symbian, meego)
- minimalistic API in philosophy (QML is easy to extend)
- multi selection list views would be useful
Actions
Main action for all:
Implement a reference set of touch and desktop components that have their unique styling and serve as a single point of reference and home for common API development
- Schedule styling discussion [DONE]
- check copyright and licensing of components: BSD, for meego and desktop components copyright is Nokia [DONE]
- Write summary of styling discussion & approach proposal with examples inspired from INdT’s approach and qt quick desktop components’ approach + reach out to Plasma people; Jens showed a wonderful experiment based on the desktop components that demonstrates the approach beautifully [DONE]
- Try to make API conformance checking tool public [LEONARDO]
- Create qt-components mailing on Qt project: http://lists.qt.io/mailman/listinfo/qt-components [DONE]
- decide on a place to host the reference set of components; one repository with all the components (touch and desktop) and a smart directory structure [ALL]
- refresh wiki page http://wiki.qt.io/Qt_Quick_Components and see if and how to merge with http://wiki.qt.io/QtDesktopComponents → http://sketchpad.cc/B8MntLJEzp current state (unformatted) [GERRY & DAKER – IN PROGRESS]
- Check if some designer time would be available for designing very very basic visuals for reference component set [INdT]
- List common components that would be good to develop; maybe use the cross section of the most popular toolkits [GERRY, TIM, FLORIAN, IN PROGRESS BELOW]
- Define and document publically API development process [DONE]
- Create a table showing the correspondence between QWidgets and QML components – we will not replicate every single QWidget. [?]
List of common components
Platforms looked at:
touch: jQuery Mobile, Cascades, Meego components, iOS (UIKit), Android
desktop: Qt Desktop components, Plasma
https://docs.google.com/a/canonical.com/spreadsheet/ccc?key=0Ajl6r4psredKdERGSUl1WGR1WVBhTWlSUXVsbXEtWkE
Please request write permissions if you like.
desktop and touch
Button: jquerym, cascades, qt desktop, Meego, iOS, Plasma, Android
Label: iOS, Meego, Plasma, cascades, jquerym (via html), qt desktop, Android
Toolbar: iOS (UINavigationBar), Meego, jquerym, Plasma, cascades, qt desktop, Android (ActionBar)
TabBar: iOS, Meego, Plasma, cascades (TabbedPane), Android (TabHost), qt desktop, jquerym (navbar)
Checkbox/Switch: Meego, Plasma, Android, Cascades, qt desktop, jquerym (via html), iOS
RadioButton: Meego, iOS (classname?), Plasma, Android, jquerym, qt desktop, cascades (RadioGroup)
TextInput: qt desktop, jquerym, Plasma, Android, Meego, iOS, Cascades (TextField)
Slider: qt desktop, Cascades, jquerym, Meego, Plasma, iOS, Android
ProgressBar: qt desktop, Cascades (ProgressIndicator), Meego, Plasma, iOS, Android
ScrollBar/ScrollArea: qt desktop, Plasma, iOS (ScrollView), Meego (QML Flickable, no scrollbar), Android
Split buttons: Meego (ButtonRow/ButtonColumn), jquerym, Cascades (SegmentedControl?)
Dialog: Meego, Plasma, Android, iOS (popover/AlertView), qt desktop, jquerym
ComboBox: qt desktop, jquerym (select menu), Cascades (DropDown), Android (NumberPicker)
List/ListItems/ListHeaders/Dividers [various types, requires deeper investigation]
Grid/GridItems
Layouts/Row/Columns
SpinBox: qt desktop, Android
ContextualMenu: qt desktop, Plasma, Android
Systray/Indicators
Date/TimePicker: jquerym, Cascades, Android, iOS
desktop specific
TableView: qt desktop, Android
TextArea: qt desktop, jquerym, Plasma, iOS
Frame: qt desktop, Android
MenuBar: qt desktop,
TreeView:
touch specific
PageStack: Meego, jquerym, Plasma, iOS
Spinner: Cascades (ActivityIndicator), Meego, Android, Plasma (BusyIndicator), iOS
API Development Process Ideas
- process to happen on mailing list
- when making API proposal/change always include: API definition and real world example (from a developer standpoint)
- once decided upon an API proposal/change documentation has to be written right away
- enforcing a timeline around API discussion: from start of API definition to decision on it: 1 week
- making sure that at least one representant of each interested platform validates the API (if possible)
- try to follow Qt naming convention if unsure
- in case of unresolvable conflict of opinions, an appointed maintainer will have the last word
Taken from http://sketchpad.cc/XKp1Bs7LEp